From 9e4ff3d374e1bcf1505a5aa5316d19f016fd2fc4 Mon Sep 17 00:00:00 2001 From: Cao Sen Miao Date: Mon, 10 May 2021 15:23:45 +0800 Subject: [PATCH 1/5] dac_dma: Support DAC_DMA on esp32s2 --- components/driver/esp32s2/dac.c | 351 +++++++++++++++++- .../driver/esp32s2/include/driver/dac.h | 40 +- .../test_esp32s2.c => test_dac_dma.c} | 247 +++++------- .../hal/esp32s2/include/hal/clk_gate_ll.h | 2 + components/hal/esp32s2/include/hal/spi_ll.h | 5 + components/hal/include/hal/dac_hal.h | 72 +++- components/hal/include/hal/dac_types.h | 11 + docs/en/api-reference/peripherals/dac.rst | 31 +- tools/ci/check_copyright_ignore.txt | 1 - 9 files changed, 566 insertions(+), 194 deletions(-) rename components/driver/test/{dac_dma_test/test_esp32s2.c => test_dac_dma.c} (51%) diff --git a/components/driver/esp32s2/dac.c b/components/driver/esp32s2/dac.c index a6815dfd79..7015ed463c 100644 --- a/components/driver/esp32s2/dac.c +++ b/components/driver/esp32s2/dac.c @@ -13,27 +13,173 @@ #include "freertos/FreeRTOS.h" #include "freertos/semphr.h" #include "freertos/timers.h" +#include "freertos/task.h" +#include "freertos/queue.h" #include "driver/rtc_io.h" #include "driver/dac.h" #include "soc/dac_periph.h" +#include "soc/lldesc.h" +#include "soc/system_reg.h" +#include "soc/periph_defs.h" +#include "soc/cp_dma_reg.h" #include "hal/dac_hal.h" +#include "periph_ctrl.h" +#include "sys/queue.h" static __attribute__((unused)) const char *TAG = "DAC"; extern portMUX_TYPE rtc_spinlock; //TODO: Will be placed in the appropriate position after the rtc module is finished. #define DAC_ENTER_CRITICAL() portENTER_CRITICAL(&rtc_spinlock) #define DAC_EXIT_CRITICAL() portEXIT_CRITICAL(&rtc_spinlock) +portMUX_TYPE dac_isr_handler_list_lock = portMUX_INITIALIZER_UNLOCKED; +#define DAC_ENTER_CRITICAL_ISR() portENTER_CRITICAL_ISR(&dac_isr_handler_list_lock) +#define DAC_EXIT_CRITICAL_ISR() portEXIT_CRITICAL_ISR(&dac_isr_handler_list_lock) -#ifdef CONFIG_PM_ENABLE -static esp_pm_lock_handle_t s_dac_digi_lock = NULL; -#endif //CONFIG_PM_ENABLE +typedef struct { + uint32_t int_msk; + uint8_t *data; + uint32_t data_len; +} dac_dma_event_t; + +typedef struct { + QueueHandle_t que_dac_hdl; /*!< DAC queue handler */ + uint32_t dma_buffer_cnt; /*!< DMA buffer count, number of buffer. */ + uint32_t dma_buffer_length; /*!< DMA buffer length, length of each buffer. */ + lldesc_t **desc; /*!< Pointer to DMA descriptor*/ + bool dac_start_en; /*!< The status of the DAC, 0: stop, 1: start */ + dac_dma_link_type_t dac_dma_link_type; /*!< The type of the link, see `dac_dma_link_type_t` */ + esp_pm_lock_handle_t pm_lock; /*!< Spinlock for DAC */ + intr_handle_t dac_isr_handle; /*!< DAC interrupt handler */ + uint32_t dac_isr; /*!< DAC interrupt mask */ +} dac_digi_context_t; + +dac_digi_context_t *s_dac_digi_ctx = NULL; + +/*--------------------------------------------------------------- + INTERRUPT HANDLER +---------------------------------------------------------------*/ + +typedef struct dac_dma_isr_handler { + uint32_t mask; + intr_handler_t handler; + void* handler_arg; + SLIST_ENTRY(dac_dma_isr_handler) next; +} dac_dma_isr_handler_t; + +static SLIST_HEAD(dac_dma_isr_handler_list_, dac_dma_isr_handler) s_dac_dma_isr_handler_list = + SLIST_HEAD_INITIALIZER(s_dac_dma_isr_handler_list); + +static IRAM_ATTR void dac_dma_isr(void * arg) +{ + uint32_t int_st = dac_hal_digi_read_intr_status(); + int task_awoken = pdFALSE; + dac_dma_event_t dac_evt; + dac_evt.int_msk = int_st; + REG_WRITE(SPI_DMA_INT_CLR_REG(3), int_st); + xQueueSendFromISR(s_dac_digi_ctx->que_dac_hdl, &dac_evt, &task_awoken); + + if (task_awoken == pdTRUE) { + portYIELD_FROM_ISR(); + } +} + +static IRAM_ATTR void dac_dma_isr_default(void* arg) +{ + uint32_t status = dac_hal_digi_read_intr_status(); + dac_dma_isr_handler_t* it; + DAC_ENTER_CRITICAL_ISR(); + SLIST_FOREACH(it, &s_dac_dma_isr_handler_list, next) { + if (it->mask & status) { + DAC_EXIT_CRITICAL_ISR(); + (*it->handler)(it->handler_arg); + DAC_ENTER_CRITICAL_ISR(); + } + } + DAC_EXIT_CRITICAL_ISR(); + dac_hal_digi_clear_intr(status); +} + +static esp_err_t dac_dma_isr_ensure_installed(void) +{ + esp_err_t err = ESP_OK; + DAC_ENTER_CRITICAL_ISR(); + dac_hal_digi_clear_intr(UINT32_MAX); + dac_hal_digi_enable_intr(0); + err = esp_intr_alloc(ETS_SPI3_DMA_INTR_SOURCE, 0, &dac_dma_isr_default, NULL, &s_dac_digi_ctx->dac_isr_handle); + if (err != ESP_OK) { + goto out; + } + +out: + DAC_EXIT_CRITICAL_ISR(); + return err; +} + +esp_err_t dac_dma_isr_register(intr_handler_t handler, void* handler_arg, uint32_t intr_mask) +{ + esp_err_t err = dac_dma_isr_ensure_installed(); + if (err != ESP_OK) { + return err; + } + + dac_dma_isr_handler_t* item = malloc(sizeof(*item)); + if (item == NULL) { + return ESP_ERR_NO_MEM; + } + item->handler = handler; + item->handler_arg = handler_arg; + item->mask = intr_mask; + DAC_ENTER_CRITICAL_ISR(); + SLIST_INSERT_HEAD(&s_dac_dma_isr_handler_list, item, next); + DAC_EXIT_CRITICAL_ISR(); + return ESP_OK; +} + +esp_err_t dac_dma_isr_deregister(intr_handler_t handler, void* handler_arg) +{ + dac_dma_isr_handler_t* it; + dac_dma_isr_handler_t* prev = NULL; + bool found = false; + esp_intr_free(s_dac_digi_ctx->dac_isr_handle); + + DAC_ENTER_CRITICAL_ISR(); + SLIST_FOREACH(it, &s_dac_dma_isr_handler_list, next) { + if (it->handler == handler && it->handler_arg == handler_arg) { + if (it == SLIST_FIRST(&s_dac_dma_isr_handler_list)) { + SLIST_REMOVE_HEAD(&s_dac_dma_isr_handler_list, next); + } else { + SLIST_REMOVE_AFTER(prev, next); + } + found = true; + free(it); + break; + } + prev = it; + } + DAC_EXIT_CRITICAL_ISR(); + return found ? ESP_OK : ESP_ERR_INVALID_STATE; +} + +void dac_dma_linker_stop(void) +{ + dac_hal_dma_disable(); +} + +void dac_dma_linker_deinit(void) +{ + dac_dma_linker_stop(); + dac_hal_digi_clear_intr(UINT32_MAX); + dac_hal_digi_enable_intr(0); +} /*--------------------------------------------------------------- Digital controller setting ---------------------------------------------------------------*/ -esp_err_t dac_digi_init(void) +esp_err_t __attribute__((unused)) dac_digi_init(void) { + s_dac_digi_ctx = calloc(1, sizeof(dac_digi_context_t)); + s_dac_digi_ctx->dac_start_en = false; DAC_ENTER_CRITICAL(); dac_hal_digi_init(); DAC_EXIT_CRITICAL(); @@ -41,14 +187,173 @@ esp_err_t dac_digi_init(void) return ESP_OK; } -esp_err_t dac_digi_deinit(void) +static lldesc_t** dac_dma_desc_buf_create(int desc_cnt, size_t buf_size, const void *data) { + lldesc_t** pdesc = (lldesc_t**)heap_caps_calloc(1, sizeof(lldesc_t*) * desc_cnt, MALLOC_CAP_DMA); + if (pdesc == NULL) { + goto _exit; + } + for (int i = 0; i < desc_cnt; i++) { + pdesc[i] = (lldesc_t*)malloc(sizeof(lldesc_t)); + if (pdesc[i] == NULL) { + goto _exit; + } + memset(pdesc[i], 0, sizeof(lldesc_t)); + } + for (int bux_idx = 0; bux_idx < desc_cnt; bux_idx++) { + pdesc[bux_idx]->owner = 1; + pdesc[bux_idx]->eof = 1; + pdesc[bux_idx]->length = buf_size; + pdesc[bux_idx]->size = buf_size; + pdesc[bux_idx]->buf = (uint8_t *) data; + data += buf_size; + if (s_dac_digi_ctx->dac_dma_link_type == DAC_DMA_LINK_RECURSIVE) { + WRITE_PERI_REG(CP_DMA_OUTLINK_START, 1); + pdesc[bux_idx]->qe.stqe_next = ((bux_idx < (desc_cnt - 1)) ? (pdesc[bux_idx + 1]) : pdesc[0]); + } else { + pdesc[bux_idx]->qe.stqe_next = ((bux_idx < (desc_cnt - 1)) ? (pdesc[bux_idx + 1]) : NULL); + } + + } + return pdesc; +_exit: + for (int i = 0; i < desc_cnt; i++) { + free(pdesc[i]); + } + free(pdesc); + return NULL; +} + +esp_err_t dac_digi_initialize(const dac_digi_config_t *init_cfg) +{ + DAC_CHECK(init_cfg->mode < DAC_CONV_MAX, "DAC mode error", ESP_ERR_INVALID_ARG); + DAC_CHECK(init_cfg->interval > 0 && init_cfg->interval < 4096, "DAC interval error", ESP_ERR_INVALID_ARG); + DAC_CHECK(init_cfg->dig_clk.div_num < 256, "DAC clk div_num error", ESP_ERR_INVALID_ARG); + DAC_CHECK(init_cfg->dig_clk.div_b > 0 && init_cfg->dig_clk.div_b < 64, "DAC clk div_b error", ESP_ERR_INVALID_ARG); + DAC_CHECK(init_cfg->dig_clk.div_a < 64, "DAC clk div_a error", ESP_ERR_INVALID_ARG); + + esp_err_t err = ESP_OK; + if (s_dac_digi_ctx != NULL) { + ESP_LOGE(DAC_TAG, "DAC has been installed"); + err = ESP_FAIL; + goto _exit; + } + + s_dac_digi_ctx = calloc(1, sizeof(dac_digi_context_t)); + s_dac_digi_ctx->dac_start_en = false; + if(s_dac_digi_ctx == NULL){ + err = ESP_ERR_NO_MEM; + goto _exit; + } + #ifdef CONFIG_PM_ENABLE - if (s_dac_digi_lock) { - esp_pm_lock_delete(s_dac_digi_lock); - s_dac_digi_lock = NULL; + if (s_dac_digi_ctx->pm_lock == NULL) { + if (init_cfg->dig_clk.use_apll) { + err = esp_pm_lock_create(ESP_PM_NO_LIGHT_SLEEP, 0, "dac_dma", &s_dac_digi_ctx->pm_lock); + } else { + err = esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_dma", &s_dac_digi_ctx->pm_lock); + } + if (err != ESP_OK) { + s_dac_digi_ctx->pm_lock = NULL; + ESP_LOGE(DAC_TAG, "DAC-DMA pm lock error"); + goto _exit; + } + } +#endif //CONFIG_PM_ENABLE + + if (s_dac_digi_ctx->que_dac_hdl == NULL) { + s_dac_digi_ctx->que_dac_hdl = xQueueCreate(5, sizeof(dac_dma_event_t)); + } else { + xQueueReset(s_dac_digi_ctx->que_dac_hdl); + } + periph_module_enable(PERIPH_SPI3_DMA_MODULE); + periph_module_enable(PERIPH_HSPI_MODULE); + periph_module_enable(PERIPH_SARADC_MODULE); + + dac_hal_digi_controller_config(init_cfg); + s_dac_digi_ctx->dma_buffer_cnt = init_cfg->dac_dma_cnt; + s_dac_digi_ctx->dma_buffer_length = init_cfg->dac_dma_length; + s_dac_digi_ctx->dac_dma_link_type = init_cfg->dac_dma_link_type; + s_dac_digi_ctx->dac_isr = SPI_OUT_EOF_INT_ENA | SPI_OUT_TOTAL_EOF_INT_ENA; + dac_dma_isr_register(dac_dma_isr, NULL, s_dac_digi_ctx->dac_isr); + + return err; +_exit: + dac_digi_deinitialize(); + return err; +} + +esp_err_t dac_digi_write_bytes(const void *buffer) +{ + dac_hal_digi_clear_intr(UINT32_MAX); + dac_hal_digi_enable_intr(SPI_LL_INTR_OUT_TOTAL_EOF | SPI_LL_INTR_OUT_EOF); + dac_dma_event_t dac_evt; + s_dac_digi_ctx->desc = dac_dma_desc_buf_create(s_dac_digi_ctx->dma_buffer_cnt, s_dac_digi_ctx->dma_buffer_length, (uint32_t*)buffer); + + dac_hal_dma_reset(0); + dac_hal_dma_fifo_reset(); + + dac_hal_dma_start(0, s_dac_digi_ctx->desc[0]); + while (s_dac_digi_ctx->dac_isr) { + xQueueReceive(s_dac_digi_ctx->que_dac_hdl, &dac_evt, 2000 / portTICK_RATE_MS); + ESP_LOGV(DAC_TAG, "DAC-DMA intr type 0x%x", dac_evt.int_msk); + if (dac_evt.int_msk & s_dac_digi_ctx->dac_isr) { + s_dac_digi_ctx->dac_isr &= (~dac_evt.int_msk); + } + } + return ESP_OK; +} + +esp_err_t dac_digi_deinitialize(void) +{ + if (!s_dac_digi_ctx) { + return ESP_ERR_INVALID_STATE; + } + + if (s_dac_digi_ctx->dac_start_en == true) { + ESP_LOGE(DAC_TAG, "DAC is still working"); + return ESP_ERR_INVALID_STATE; + } + periph_module_disable(PERIPH_SPI3_DMA_MODULE); + periph_module_disable(PERIPH_HSPI_MODULE); + periph_module_disable(PERIPH_SARADC_MODULE); + + dac_dma_linker_deinit(); + dac_dma_isr_deregister(dac_dma_isr, NULL); + + if (s_dac_digi_ctx->que_dac_hdl) { + vQueueDelete(s_dac_digi_ctx->que_dac_hdl); + s_dac_digi_ctx->que_dac_hdl = NULL; + } + + for (int i = 0; i < s_dac_digi_ctx->dma_buffer_cnt; i++) { + free(s_dac_digi_ctx->desc[i]); + } + + free(s_dac_digi_ctx); + s_dac_digi_ctx = NULL; +#ifdef CONFIG_PM_ENABLE + if (s_dac_digi_ctx->pm_lock) { + esp_pm_lock_delete(s_dac_digi_ctx->pm_lock); + s_dac_digi_ctx->pm_lock = NULL; } #endif + + DAC_ENTER_CRITICAL(); + dac_hal_digi_deinit(); + DAC_EXIT_CRITICAL(); + return ESP_OK; +} + +esp_err_t __attribute__((unused)) dac_digi_deinit(void) +{ +#ifdef CONFIG_PM_ENABLE + if (s_dac_digi_ctx->pm_lock) { + esp_pm_lock_delete(s_dac_digi_ctx->pm_lock); + s_dac_digi_ctx->pm_lock = NULL; + } +#endif + free(s_dac_digi_ctx); DAC_ENTER_CRITICAL(); dac_hal_digi_deinit(); DAC_EXIT_CRITICAL(); @@ -56,7 +361,7 @@ esp_err_t dac_digi_deinit(void) return ESP_OK; } -esp_err_t dac_digi_controller_config(const dac_digi_config_t *cfg) +esp_err_t __attribute__((unused)) dac_digi_controller_config(const dac_digi_config_t *cfg) { ESP_RETURN_ON_FALSE(cfg->mode < DAC_CONV_MAX, ESP_ERR_INVALID_ARG, TAG, "DAC mode error"); ESP_RETURN_ON_FALSE(cfg->interval > 0 && cfg->interval < 4096, ESP_ERR_INVALID_ARG, TAG, "DAC interval error"); @@ -65,15 +370,15 @@ esp_err_t dac_digi_controller_config(const dac_digi_config_t *cfg) ESP_RETURN_ON_FALSE(cfg->dig_clk.div_a < 64, ESP_ERR_INVALID_ARG, TAG, "DAC clk div_a error"); #ifdef CONFIG_PM_ENABLE esp_err_t err; - if (s_dac_digi_lock == NULL) { + if (s_dac_digi_ctx->pm_lock == NULL) { if (cfg->dig_clk.use_apll) { - err = esp_pm_lock_create(ESP_PM_NO_LIGHT_SLEEP, 0, "dac_dma", &s_dac_digi_lock); + err = esp_pm_lock_create(ESP_PM_NO_LIGHT_SLEEP, 0, "dac_dma", &s_dac_digi_ctx->pm_lock); } else { - err = esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_dma", &s_dac_digi_lock); + err = esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_dma", &s_dac_digi_ctx->pm_lock); } if (err != ESP_OK) { - s_dac_digi_lock = NULL; - ESP_LOGE(TAG, "DAC-DMA pm lock error"); + s_dac_digi_ctx->pm_lock = NULL; + ESP_LOGE(DAC_TAG, "DAC-DMA pm lock error"); return err; } } @@ -88,9 +393,14 @@ esp_err_t dac_digi_controller_config(const dac_digi_config_t *cfg) esp_err_t dac_digi_start(void) { + if (s_dac_digi_ctx->dac_start_en == true) { + ESP_LOGE(DAC_TAG, "DAC is already started"); + return ESP_ERR_INVALID_STATE; + } + s_dac_digi_ctx->dac_start_en = true; #ifdef CONFIG_PM_ENABLE - ESP_RETURN_ON_FALSE(s_dac_digi_lock, ESP_FAIL, TAG, "Should start after call `dac_digi_controller_config`"); - esp_pm_lock_acquire(s_dac_digi_lock); + DAC_CHECK((s_dac_digi_ctx->pm_lock), "Should start after call `dac_digi_controller_config`", ESP_FAIL); + esp_pm_lock_acquire(s_dac_digi_ctx->pm_lock); #endif DAC_ENTER_CRITICAL(); dac_hal_digi_start(); @@ -101,9 +411,14 @@ esp_err_t dac_digi_start(void) esp_err_t dac_digi_stop(void) { + if (s_dac_digi_ctx->dac_start_en == false) { + ESP_LOGE(DAC_TAG, "DAC is already stopped"); + return ESP_ERR_INVALID_STATE; + } + s_dac_digi_ctx->dac_start_en = false; #ifdef CONFIG_PM_ENABLE - if (s_dac_digi_lock) { - esp_pm_lock_release(s_dac_digi_lock); + if (s_dac_digi_ctx->pm_lock) { + esp_pm_lock_release(s_dac_digi_ctx->pm_lock); } #endif DAC_ENTER_CRITICAL(); diff --git a/components/driver/esp32s2/include/driver/dac.h b/components/driver/esp32s2/include/driver/dac.h index 39f3e7e068..ef6bb96fa4 100644 --- a/components/driver/esp32s2/include/driver/dac.h +++ b/components/driver/esp32s2/include/driver/dac.h @@ -20,14 +20,48 @@ extern "C" { * @return * - ESP_OK success */ -esp_err_t dac_digi_init(void); +esp_err_t __attribute__((unused)) dac_digi_init(void); + +/** + * @brief Initialize the Digital DAC. + * + * @param init_cfg Pointer to Digital DAC initilization config. Refer to ``dac_digi_config_t``. + * + * @return + * - ESP_ERR_INVALID_ARG If the combination of arguments is invalid. + * - ESP_ERR_NOT_FOUND No free interrupt found with the specified flags + * - ESP_ERR_NO_MEM If out of memory + * - ESP_OK On success + */ +esp_err_t dac_digi_initialize(const dac_digi_config_t *init_cfg); /** * @brief DAC digital controller deinitialization. * @return * - ESP_OK success */ -esp_err_t dac_digi_deinit(void); +esp_err_t __attribute__((unused)) dac_digi_deinit(void); + +/** + * @brief Deinitialize the Digital DAC. + * + * @return + * - ESP_ERR_INVALID_STATE Driver state is invalid. + * - ESP_OK On success + */ +esp_err_t dac_digi_deinitialize(void); + +/** + * @brief Write bytes to Digital DAC through DMA. + * + * @param[in] buffer Buffer to write to DAC. + * + * @return + * - ESP_ERR_INVALID_STATE Driver state is invalid. Usually it means the ADC sampling rate is faster than the task processing rate. + * - ESP_ERR_TIMEOUT Operation timed out + * - ESP_OK On success + */ +esp_err_t dac_digi_write_bytes(const void *buffer); /** * @brief Setting the DAC digital controller. @@ -38,7 +72,7 @@ esp_err_t dac_digi_deinit(void); * - ESP_OK success * - ESP_ERR_INVALID_ARG Parameter error */ -esp_err_t dac_digi_controller_config(const dac_digi_config_t *cfg); +esp_err_t __attribute__((unused)) dac_digi_controller_config(const dac_digi_config_t *cfg); /** * @brief DAC digital controller start output voltage. diff --git a/components/driver/test/dac_dma_test/test_esp32s2.c b/components/driver/test/test_dac_dma.c similarity index 51% rename from components/driver/test/dac_dma_test/test_esp32s2.c rename to components/driver/test/test_dac_dma.c index c54101d183..12722e1679 100644 --- a/components/driver/test/dac_dma_test/test_esp32s2.c +++ b/components/driver/test/test_dac_dma.c @@ -34,6 +34,8 @@ #include "soc/system_reg.h" #include "esp32s2/rom/lldesc.h" #include "test/test_adc_dac_dma.h" +#include "soc/apb_ctrl_reg.h" +#include "math.h" static const char *TAG = "test_adc"; @@ -59,6 +61,87 @@ static void test_pxp_deinit_io(void) #define SAR_SIMPLE_NUM 512 // Set out number of enabled unit. +/*******************************************/ +/** DAC-DMA INIT CODE */ +/*******************************************/ +#define PI 3.14159265 +static uint8_t _buf[512]; +void dac_dma_test_create_buffer(dac_digi_convert_mode_t mode) +{ + if (mode == DAC_CONV_ALTER) { + for(int i=0; i < 256; i++) { + if (i % 2 != 0) { + _buf[i] = i % 256; + } else { + _buf[i] = 255*(sin(i * PI / 255) + 1)/2; + } + + } + for (int i=256;i < 512; i++) { + if (i % 2 != 0) { + _buf[i] = 255 - i % 256; + } else { + _buf[i] = 255*(sin((i-256) * PI / 255 - PI)+1)/2; + } + + } + } else { + for(int i=0; i < 256; i++) { + _buf[i] = i % 256; + } + for (int i=256;i < 512; i++) { + _buf[i] = 255 - i % 256; + } + } +} + +/** + * Testcase: Check the interrupt types of DAC-DMA. + */ +void test_dac_dig_dma_intr_check(dac_digi_convert_mode_t mode) +{ + ESP_LOGI(TAG, " >> %s - dac mode %d<< ", __func__, mode); + + const dac_digi_config_t cfg = { + .mode = mode, + .interval = 100, + .dig_clk.use_apll = false, // APB clk + .dig_clk.div_num = 79, + .dig_clk.div_b = 1, + .dig_clk.div_a = 0, + .dac_dma_cnt = 4, + .dac_dma_length = 128, + .dac_dma_link_type = DAC_DMA_LINK_LINE, + }; + dac_digi_initialize(&cfg); + dac_output_enable(DAC_CHANNEL_1); + dac_output_enable(DAC_CHANNEL_2); + + dac_dma_test_create_buffer(mode); + dac_digi_start(); + dac_digi_write_bytes((uint8_t*)_buf); + // /* Check interrupt type */ + + ESP_LOGI(TAG, "DAC-DMA intr test over"); + dac_digi_stop(); + dac_digi_deinitialize(); +} + +TEST_CASE("DAC-DMA interrupt test", "[dac]") +{ + test_dac_dig_dma_intr_check(DAC_CONV_NORMAL); + test_dac_dig_dma_intr_check(DAC_CONV_ALTER); +} + +/**************************************************** + * The code below is used for legacy implementation + ***************************************************/ +#ifndef DAC_DMA_LEGACY_IMPL +#define DAC_DMA_LEGACY_IMPL 1 +#endif + +#if DAC_DMA_LEGACY_IMPL + typedef struct dma_msg { uint32_t int_msk; uint8_t *data; @@ -79,7 +162,7 @@ static lldesc_t dma2 = {0}; * @param is_loop * - true: The two dma linked lists are connected end to end, with no end mark (eof). * - false: The two dma linked lists are connected end to end, with end mark (eof). - * @param int_mask DMA interrupt types. + * @param is_alter Is alter or not. */ uint32_t dac_dma_linker_init(bool is_alter, bool is_loop) { @@ -146,7 +229,7 @@ static IRAM_ATTR void dac_dma_isr(void * arg) /** * Testcase: Check the interrupt types of DAC-DMA. */ -void test_dac_dig_dma_intr_check(dac_digi_convert_mode_t mode) +void test_dac_dig_dma_intr_check_legacy(dac_digi_convert_mode_t mode) { ESP_LOGI(TAG, " >> %s - dac mode %d<< ", __func__, mode); @@ -194,164 +277,12 @@ void test_dac_dig_dma_intr_check(dac_digi_convert_mode_t mode) TEST_ESP_OK( dac_digi_deinit() ); } -TEST_CASE("DAC-DMA interrupt test", "[dac]") +TEST_CASE("DAC-DMA interrupt test(legacy api)", "[dac]") { - test_dac_dig_dma_intr_check(DAC_CONV_NORMAL); - test_dac_dig_dma_intr_check(DAC_CONV_ALTER); + test_dac_dig_dma_intr_check_legacy(DAC_CONV_NORMAL); + test_dac_dig_dma_intr_check_legacy(DAC_CONV_ALTER); } -/*******************************************/ -/** SPI DMA INIT CODE */ -/*******************************************/ - -#include "sys/queue.h" -static bool adc_dac_dma_isr_flag = false; - -/*--------------------------------------------------------------- - INTERRUPT HANDLER ----------------------------------------------------------------*/ - -typedef struct adc_dac_dma_isr_handler_ { - uint32_t mask; - intr_handler_t handler; - void* handler_arg; - SLIST_ENTRY(adc_dac_dma_isr_handler_) next; -} adc_dac_dma_isr_handler_t; - -static SLIST_HEAD(adc_dac_dma_isr_handler_list_, adc_dac_dma_isr_handler_) s_adc_dac_dma_isr_handler_list = - SLIST_HEAD_INITIALIZER(s_adc_dac_dma_isr_handler_list); -portMUX_TYPE s_isr_handler_list_lock = portMUX_INITIALIZER_UNLOCKED; -static intr_handle_t s_adc_dac_dma_isr_handle; - -static IRAM_ATTR void adc_dac_dma_isr_default(void* arg) -{ - uint32_t status = REG_READ(SPI_DMA_INT_ST_REG(3)); - adc_dac_dma_isr_handler_t* it; - portENTER_CRITICAL_ISR(&s_isr_handler_list_lock); - SLIST_FOREACH(it, &s_adc_dac_dma_isr_handler_list, next) { - if (it->mask & status) { - portEXIT_CRITICAL_ISR(&s_isr_handler_list_lock); - (*it->handler)(it->handler_arg); - portENTER_CRITICAL_ISR(&s_isr_handler_list_lock); - } - } - portEXIT_CRITICAL_ISR(&s_isr_handler_list_lock); - REG_WRITE(SPI_DMA_INT_CLR_REG(3), status); -} - -static esp_err_t adc_dac_dma_isr_ensure_installed(void) -{ - esp_err_t err = ESP_OK; - portENTER_CRITICAL(&s_isr_handler_list_lock); - if (s_adc_dac_dma_isr_handle) { - goto out; - } - REG_WRITE(SPI_DMA_INT_ENA_REG(3), 0); - REG_WRITE(SPI_DMA_INT_CLR_REG(3), UINT32_MAX); - err = esp_intr_alloc(ETS_SPI3_DMA_INTR_SOURCE, 0, &adc_dac_dma_isr_default, NULL, &s_adc_dac_dma_isr_handle); - if (err != ESP_OK) { - goto out; - } - -out: - portEXIT_CRITICAL(&s_isr_handler_list_lock); - return err; -} - -esp_err_t adc_dac_dma_isr_register(intr_handler_t handler, void* handler_arg, uint32_t intr_mask) -{ - esp_err_t err = adc_dac_dma_isr_ensure_installed(); - if (err != ESP_OK) { - return err; - } - - adc_dac_dma_isr_handler_t* item = malloc(sizeof(*item)); - if (item == NULL) { - return ESP_ERR_NO_MEM; - } - item->handler = handler; - item->handler_arg = handler_arg; - item->mask = intr_mask; - portENTER_CRITICAL(&s_isr_handler_list_lock); - SLIST_INSERT_HEAD(&s_adc_dac_dma_isr_handler_list, item, next); - portEXIT_CRITICAL(&s_isr_handler_list_lock); - return ESP_OK; -} - -esp_err_t adc_dac_dma_isr_deregister(intr_handler_t handler, void* handler_arg) -{ - adc_dac_dma_isr_handler_t* it; - adc_dac_dma_isr_handler_t* prev = NULL; - bool found = false; - portENTER_CRITICAL(&s_isr_handler_list_lock); - SLIST_FOREACH(it, &s_adc_dac_dma_isr_handler_list, next) { - if (it->handler == handler && it->handler_arg == handler_arg) { - if (it == SLIST_FIRST(&s_adc_dac_dma_isr_handler_list)) { - SLIST_REMOVE_HEAD(&s_adc_dac_dma_isr_handler_list, next); - } else { - SLIST_REMOVE_AFTER(prev, next); - } - found = true; - free(it); - break; - } - prev = it; - } - portEXIT_CRITICAL(&s_isr_handler_list_lock); - return found ? ESP_OK : ESP_ERR_INVALID_STATE; -} - -void adc_dac_dma_linker_start(spi_dma_link_type_t type, void *dma_addr, uint32_t int_msk) -{ - REG_SET_BIT(DPORT_PERIP_CLK_EN_REG, DPORT_APB_SARADC_CLK_EN_M); - REG_SET_BIT(DPORT_PERIP_CLK_EN_REG, DPORT_SPI3_DMA_CLK_EN_M); - REG_SET_BIT(DPORT_PERIP_CLK_EN_REG, DPORT_SPI3_CLK_EN); - REG_CLR_BIT(DPORT_PERIP_RST_EN_REG, DPORT_SPI3_DMA_RST_M); - REG_CLR_BIT(DPORT_PERIP_RST_EN_REG, DPORT_SPI3_RST_M); - REG_WRITE(SPI_DMA_INT_CLR_REG(3), 0xFFFFFFFF); - REG_WRITE(SPI_DMA_INT_ENA_REG(3), int_msk | REG_READ(SPI_DMA_INT_ENA_REG(3))); - if (type & DMA_ONLY_ADC_INLINK) { - REG_SET_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_STOP); - REG_CLR_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_START); - SET_PERI_REG_BITS(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_ADDR, (uint32_t)dma_addr, 0); - REG_SET_BIT(SPI_DMA_CONF_REG(3), SPI_IN_RST); - REG_CLR_BIT(SPI_DMA_CONF_REG(3), SPI_IN_RST); - REG_CLR_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_STOP); - REG_SET_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_START); - } - if (type & DMA_ONLY_DAC_OUTLINK) { - REG_SET_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_STOP); - REG_CLR_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_START); - SET_PERI_REG_BITS(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_ADDR, (uint32_t)dma_addr, 0); - REG_SET_BIT(SPI_DMA_CONF_REG(3), SPI_OUT_RST); - REG_CLR_BIT(SPI_DMA_CONF_REG(3), SPI_OUT_RST); - REG_CLR_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_STOP); - REG_SET_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_START); - } -} - -void adc_dac_dma_linker_stop(spi_dma_link_type_t type) -{ - if (type & DMA_ONLY_ADC_INLINK) { - REG_SET_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_STOP); - REG_CLR_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_START); - } - if (type & DMA_ONLY_DAC_OUTLINK) { - REG_SET_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_STOP); - REG_CLR_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_START); - } -} - -void adc_dac_dma_linker_deinit(void) -{ - adc_dac_dma_linker_stop(DMA_BOTH_ADC_DAC); - REG_WRITE(SPI_DMA_INT_CLR_REG(3), 0xFFFFFFFF); - REG_WRITE(SPI_DMA_INT_ENA_REG(3), 0); - adc_dac_dma_isr_flag = false; -} - -/*******************************************/ -/** SPI DMA INIT CODE END */ -/*******************************************/ +#endif // DAC_DMA_LEGACY_IMPL #endif // CONFIG_IDF_TARGET_ESP32S2 diff --git a/components/hal/esp32s2/include/hal/clk_gate_ll.h b/components/hal/esp32s2/include/hal/clk_gate_ll.h index cde957997f..45ce590207 100644 --- a/components/hal/esp32s2/include/hal/clk_gate_ll.h +++ b/components/hal/esp32s2/include/hal/clk_gate_ll.h @@ -83,6 +83,8 @@ static inline uint32_t periph_ll_get_clk_en_mask(periph_module_t periph) return DPORT_CRYPTO_DMA_CLK_EN | DPORT_CRYPTO_SHA_CLK_EN; case PERIPH_AES_DMA_MODULE: return DPORT_CRYPTO_DMA_CLK_EN | DPORT_CRYPTO_AES_CLK_EN; + case PERIPH_SARADC_MODULE: + return DPORT_APB_SARADC_CLK_EN_M; default: return 0; } diff --git a/components/hal/esp32s2/include/hal/spi_ll.h b/components/hal/esp32s2/include/hal/spi_ll.h index 65084c8d23..13b862b5fd 100644 --- a/components/hal/esp32s2/include/hal/spi_ll.h +++ b/components/hal/esp32s2/include/hal/spi_ll.h @@ -1290,6 +1290,11 @@ static inline bool spi_ll_tx_get_empty_err(spi_dev_t *hw) return hw->dma_int_raw.outfifo_empty_err; } +static inline uint32_t spi_ll_read_intr_status(spi_dev_t *hw) +{ + return hw->dma_int_st.val; +} + #undef SPI_LL_RST_MASK #undef SPI_LL_UNUSED_INT_MASK diff --git a/components/hal/include/hal/dac_hal.h b/components/hal/include/hal/dac_hal.h index f71c95d279..ec2e8014b0 100644 --- a/components/hal/include/hal/dac_hal.h +++ b/components/hal/include/hal/dac_hal.h @@ -1,16 +1,8 @@ -// Copyright 2019 Espressif Systems (Shanghai) PTE 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. +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /******************************************************************************* * NOTICE @@ -21,6 +13,12 @@ #pragma once #include "hal/dac_ll.h" +#if CONFIG_IDF_TARGET_ESP32S2 +#include "soc/spi_struct.h" +#include "hal/spi_ll.h" +#include "soc/spi_reg.h" +#include "soc/spi_periph.h" +#endif /** * Power on dac module and start output voltage. @@ -76,3 +74,51 @@ void dac_hal_cw_generator_config(dac_cw_config_t *cw); * Enable/disable DAC output data from DMA. */ #define dac_hal_digi_enable_dma(enable) dac_ll_digi_enable_dma(enable) + +#if CONFIG_IDF_TARGET_ESP32S2 +/******************************************************* + * DAC-DMA hal layer functions. + * On ESP32-S2, DAC shares the DMA with SPI3. +*******************************************************/ + +/** + * Read the interrupt status. + */ +#define dac_hal_digi_read_intr_status() spi_ll_read_intr_status(&GPSPI3) + +/** + * Clear the interrupt bit. + * @param mask spi-dma interrupt bit mask. + */ +#define dac_hal_digi_clear_intr(mask) spi_ll_clear_intr(&GPSPI3, mask) + +/** + * Enable interrupt + * @param mask spi-dma interrupt bit mask. + */ +#define dac_hal_digi_enable_intr(mask) spi_ll_enable_intr(&GPSPI3, mask) + +/** + * Disable dac dma + */ +#define dac_hal_dma_disable() spi_dma_ll_tx_disable(&GPSPI3) + +/** + * Reset dac dma + * @param chan the dma channel. + */ +#define dac_hal_dma_reset(chan) spi_dma_ll_tx_reset(&GPSPI3, chan) + +/** + * Start dac dma + * @param chan the dma channel. + * @param desc the pointer to the dma link. + */ +#define dac_hal_dma_start(chan, desc) spi_dma_ll_tx_start(&GPSPI3, chan, desc) + +/** + * Reset the dma fifo + */ +#define dac_hal_dma_fifo_reset() spi_ll_dma_tx_fifo_reset(&GPSPI3) + +#endif //CONFIG_IDF_TARGET_ESP32S2 diff --git a/components/hal/include/hal/dac_types.h b/components/hal/include/hal/dac_types.h index c07c1c8733..587ea9e4ec 100644 --- a/components/hal/include/hal/dac_types.h +++ b/components/hal/include/hal/dac_types.h @@ -51,6 +51,14 @@ typedef enum { DAC_CONV_MAX } dac_digi_convert_mode_t; +/** + * @brief The type of the DAC DMA link. +*/ +typedef enum { + DAC_DMA_LINK_LINE = BIT(0), /*!< The link is Linear. */ + DAC_DMA_LINK_RECURSIVE = BIT(1), /*!< The link is recursive. */ +} dac_dma_link_type_t; + /** * @brief DAC digital controller (DMA mode) configuration parameters. */ @@ -62,6 +70,9 @@ typedef struct { Note: The sampling rate of each channel is also related to the conversion mode (See ``dac_digi_convert_mode_t``) and pattern table settings. */ adc_digi_clk_t dig_clk; /*!` and the :doc:`LED Control module `. Both these modules produce high frequency PDM/PWM output, which can be hardware low-pass filtered in order to generate a lower frequency analog output. @@ -40,6 +40,35 @@ Setting DAC channel 1 ({IDF_TARGET_DAC_CH_1}) voltage to approx 0.78 of VDD_A vo dac_output_voltage(DAC_CHANNEL_1, 200); +.. only:: esp32s2 + +For {IDF_TARGET_NAME}, DAC support to use DMA to send digital data to convert. Here is the example: + +.. code-block:: c + + #include + + const dac_digi_config_t cfg = { + .mode = mode, + .interval = 100, + .dig_clk.use_apll = false, // APB clk + .dig_clk.div_num = 79, // See comments `adc_digi_clk_t` + .dig_clk.div_b = 1, + .dig_clk.div_a = 0, + .dac_dma_cnt = 1, // The dac dma link number for your project + .dac_dma_length = 512, // The dac dam link length for your project. Should fit the buffer you prepared with dac_dma_cnt. + .dac_dma_link_type = DAC_DMA_LINK_RECURSIVE, //The link type. + }; + + dac_digi_initialize(&cfg); + dac_output_enable(DAC_CHANNEL_X); + dac_digi_start(); + dac_digi_write_bytes((uint8_t*)buffer_you_prepared); + dac_digi_stop(); + dac_digi_deinitialize(); + + + API Reference ------------- diff --git a/tools/ci/check_copyright_ignore.txt b/tools/ci/check_copyright_ignore.txt index c337c380f6..fb6cabc244 100644 --- a/tools/ci/check_copyright_ignore.txt +++ b/tools/ci/check_copyright_ignore.txt @@ -733,7 +733,6 @@ components/hal/esp32s3/include/hal/usb_ll.h components/hal/esp32s3/include/hal/usb_serial_jtag_ll.h components/hal/include/hal/aes_hal.h components/hal/include/hal/aes_types.h -components/hal/include/hal/dac_hal.h components/hal/include/hal/dac_types.h components/hal/include/hal/ds_hal.h components/hal/include/hal/esp_flash_err.h From 9777c9d5b193d25412482b497ac1e3b190c173b5 Mon Sep 17 00:00:00 2001 From: Cao Sen Miao Date: Mon, 19 Jul 2021 19:48:15 +0800 Subject: [PATCH 2/5] dac: refactor to new api on esp32s2 --- components/driver/esp32s2/dac.c | 329 +++++++--------- .../driver/esp32s2/include/driver/dac.h | 85 ++-- .../driver/test/dac_dma_test/test_esp32s2.c | 363 ++++++++++++++++++ components/driver/test/test_dac_dma.c | 101 +---- components/hal/esp32s2/dac_hal.c | 63 ++- components/hal/esp32s2/include/hal/dac_hal.h | 80 +++- components/hal/esp32s2/include/hal/spi_ll.h | 5 - components/hal/include/hal/dac_hal.h | 54 --- components/hal/include/hal/dac_types.h | 5 +- docs/en/api-reference/peripherals/dac.rst | 31 +- tools/ci/check_copyright_ignore.txt | 2 +- 11 files changed, 702 insertions(+), 416 deletions(-) create mode 100644 components/driver/test/dac_dma_test/test_esp32s2.c diff --git a/components/driver/esp32s2/dac.c b/components/driver/esp32s2/dac.c index 7015ed463c..19688fa41f 100644 --- a/components/driver/esp32s2/dac.c +++ b/components/driver/esp32s2/dac.c @@ -10,38 +10,36 @@ #include "esp_err.h" #include "esp_check.h" #include "esp_pm.h" +#include "esp_check.h" #include "freertos/FreeRTOS.h" #include "freertos/semphr.h" #include "freertos/timers.h" -#include "freertos/task.h" #include "freertos/queue.h" #include "driver/rtc_io.h" #include "driver/dac.h" #include "soc/dac_periph.h" #include "soc/lldesc.h" -#include "soc/system_reg.h" -#include "soc/periph_defs.h" -#include "soc/cp_dma_reg.h" #include "hal/dac_hal.h" #include "periph_ctrl.h" -#include "sys/queue.h" +#include "driver/spi_common_internal.h" -static __attribute__((unused)) const char *TAG = "DAC"; +static const char *DAC_TAG = "DAC"; + +/* On ESP32-S2, DAC-DMA shares the SPI3-DMA channel */ +#define DAC_USE_SPI3_DMA_CHANNEL SPI3_HOST extern portMUX_TYPE rtc_spinlock; //TODO: Will be placed in the appropriate position after the rtc module is finished. #define DAC_ENTER_CRITICAL() portENTER_CRITICAL(&rtc_spinlock) #define DAC_EXIT_CRITICAL() portEXIT_CRITICAL(&rtc_spinlock) -portMUX_TYPE dac_isr_handler_list_lock = portMUX_INITIALIZER_UNLOCKED; -#define DAC_ENTER_CRITICAL_ISR() portENTER_CRITICAL_ISR(&dac_isr_handler_list_lock) -#define DAC_EXIT_CRITICAL_ISR() portEXIT_CRITICAL_ISR(&dac_isr_handler_list_lock) typedef struct { - uint32_t int_msk; + bool intr_trigger; uint8_t *data; uint32_t data_len; } dac_dma_event_t; typedef struct { + dac_hal_context_t *hal; /*!< HAL pointer of DAC */ QueueHandle_t que_dac_hdl; /*!< DAC queue handler */ uint32_t dma_buffer_cnt; /*!< DMA buffer count, number of buffer. */ uint32_t dma_buffer_length; /*!< DMA buffer length, length of each buffer. */ @@ -49,172 +47,43 @@ typedef struct { bool dac_start_en; /*!< The status of the DAC, 0: stop, 1: start */ dac_dma_link_type_t dac_dma_link_type; /*!< The type of the link, see `dac_dma_link_type_t` */ esp_pm_lock_handle_t pm_lock; /*!< Spinlock for DAC */ + spi_host_device_t spi_host; /*!< spi host */ intr_handle_t dac_isr_handle; /*!< DAC interrupt handler */ - uint32_t dac_isr; /*!< DAC interrupt mask */ } dac_digi_context_t; -dac_digi_context_t *s_dac_digi_ctx = NULL; +static dac_digi_context_t *s_dac_digi_ctx = NULL; /*--------------------------------------------------------------- INTERRUPT HANDLER ---------------------------------------------------------------*/ -typedef struct dac_dma_isr_handler { - uint32_t mask; - intr_handler_t handler; - void* handler_arg; - SLIST_ENTRY(dac_dma_isr_handler) next; -} dac_dma_isr_handler_t; - -static SLIST_HEAD(dac_dma_isr_handler_list_, dac_dma_isr_handler) s_dac_dma_isr_handler_list = - SLIST_HEAD_INITIALIZER(s_dac_dma_isr_handler_list); - -static IRAM_ATTR void dac_dma_isr(void * arg) +static IRAM_ATTR void dac_dma_isr_default(void *arg) { - uint32_t int_st = dac_hal_digi_read_intr_status(); + dac_digi_context_t *p_dac = (dac_digi_context_t *) arg; + bool status = dac_dma_hal_get_intr_status(p_dac->hal); + dac_dma_hal_clr_intr(p_dac->hal); int task_awoken = pdFALSE; dac_dma_event_t dac_evt; - dac_evt.int_msk = int_st; - REG_WRITE(SPI_DMA_INT_CLR_REG(3), int_st); + dac_evt.intr_trigger = status; xQueueSendFromISR(s_dac_digi_ctx->que_dac_hdl, &dac_evt, &task_awoken); - - if (task_awoken == pdTRUE) { - portYIELD_FROM_ISR(); - } -} - -static IRAM_ATTR void dac_dma_isr_default(void* arg) -{ - uint32_t status = dac_hal_digi_read_intr_status(); - dac_dma_isr_handler_t* it; - DAC_ENTER_CRITICAL_ISR(); - SLIST_FOREACH(it, &s_dac_dma_isr_handler_list, next) { - if (it->mask & status) { - DAC_EXIT_CRITICAL_ISR(); - (*it->handler)(it->handler_arg); - DAC_ENTER_CRITICAL_ISR(); - } - } - DAC_EXIT_CRITICAL_ISR(); - dac_hal_digi_clear_intr(status); -} - -static esp_err_t dac_dma_isr_ensure_installed(void) -{ - esp_err_t err = ESP_OK; - DAC_ENTER_CRITICAL_ISR(); - dac_hal_digi_clear_intr(UINT32_MAX); - dac_hal_digi_enable_intr(0); - err = esp_intr_alloc(ETS_SPI3_DMA_INTR_SOURCE, 0, &dac_dma_isr_default, NULL, &s_dac_digi_ctx->dac_isr_handle); - if (err != ESP_OK) { - goto out; - } - -out: - DAC_EXIT_CRITICAL_ISR(); - return err; -} - -esp_err_t dac_dma_isr_register(intr_handler_t handler, void* handler_arg, uint32_t intr_mask) -{ - esp_err_t err = dac_dma_isr_ensure_installed(); - if (err != ESP_OK) { - return err; - } - - dac_dma_isr_handler_t* item = malloc(sizeof(*item)); - if (item == NULL) { - return ESP_ERR_NO_MEM; - } - item->handler = handler; - item->handler_arg = handler_arg; - item->mask = intr_mask; - DAC_ENTER_CRITICAL_ISR(); - SLIST_INSERT_HEAD(&s_dac_dma_isr_handler_list, item, next); - DAC_EXIT_CRITICAL_ISR(); - return ESP_OK; -} - -esp_err_t dac_dma_isr_deregister(intr_handler_t handler, void* handler_arg) -{ - dac_dma_isr_handler_t* it; - dac_dma_isr_handler_t* prev = NULL; - bool found = false; - esp_intr_free(s_dac_digi_ctx->dac_isr_handle); - - DAC_ENTER_CRITICAL_ISR(); - SLIST_FOREACH(it, &s_dac_dma_isr_handler_list, next) { - if (it->handler == handler && it->handler_arg == handler_arg) { - if (it == SLIST_FIRST(&s_dac_dma_isr_handler_list)) { - SLIST_REMOVE_HEAD(&s_dac_dma_isr_handler_list, next); - } else { - SLIST_REMOVE_AFTER(prev, next); - } - found = true; - free(it); - break; - } - prev = it; - } - DAC_EXIT_CRITICAL_ISR(); - return found ? ESP_OK : ESP_ERR_INVALID_STATE; -} - -void dac_dma_linker_stop(void) -{ - dac_hal_dma_disable(); -} - -void dac_dma_linker_deinit(void) -{ - dac_dma_linker_stop(); - dac_hal_digi_clear_intr(UINT32_MAX); - dac_hal_digi_enable_intr(0); } /*--------------------------------------------------------------- Digital controller setting ---------------------------------------------------------------*/ - -esp_err_t __attribute__((unused)) dac_digi_init(void) -{ - s_dac_digi_ctx = calloc(1, sizeof(dac_digi_context_t)); - s_dac_digi_ctx->dac_start_en = false; - DAC_ENTER_CRITICAL(); - dac_hal_digi_init(); - DAC_EXIT_CRITICAL(); - - return ESP_OK; -} - -static lldesc_t** dac_dma_desc_buf_create(int desc_cnt, size_t buf_size, const void *data) +static lldesc_t** dac_dma_desc_buf_create(int desc_cnt, size_t buf_size) { lldesc_t** pdesc = (lldesc_t**)heap_caps_calloc(1, sizeof(lldesc_t*) * desc_cnt, MALLOC_CAP_DMA); if (pdesc == NULL) { goto _exit; } for (int i = 0; i < desc_cnt; i++) { - pdesc[i] = (lldesc_t*)malloc(sizeof(lldesc_t)); + pdesc[i] = (lldesc_t*)heap_caps_malloc(sizeof(lldesc_t), MALLOC_CAP_DMA); if (pdesc[i] == NULL) { goto _exit; } memset(pdesc[i], 0, sizeof(lldesc_t)); } - for (int bux_idx = 0; bux_idx < desc_cnt; bux_idx++) { - pdesc[bux_idx]->owner = 1; - pdesc[bux_idx]->eof = 1; - pdesc[bux_idx]->length = buf_size; - pdesc[bux_idx]->size = buf_size; - pdesc[bux_idx]->buf = (uint8_t *) data; - data += buf_size; - if (s_dac_digi_ctx->dac_dma_link_type == DAC_DMA_LINK_RECURSIVE) { - WRITE_PERI_REG(CP_DMA_OUTLINK_START, 1); - pdesc[bux_idx]->qe.stqe_next = ((bux_idx < (desc_cnt - 1)) ? (pdesc[bux_idx + 1]) : pdesc[0]); - } else { - pdesc[bux_idx]->qe.stqe_next = ((bux_idx < (desc_cnt - 1)) ? (pdesc[bux_idx + 1]) : NULL); - } - - } return pdesc; _exit: for (int i = 0; i < desc_cnt; i++) { @@ -224,15 +93,31 @@ _exit: return NULL; } -esp_err_t dac_digi_initialize(const dac_digi_config_t *init_cfg) +static void dac_dma_write(lldesc_t** pdesc, int desc_cnt, size_t buf_size, const void *buffer) { - DAC_CHECK(init_cfg->mode < DAC_CONV_MAX, "DAC mode error", ESP_ERR_INVALID_ARG); - DAC_CHECK(init_cfg->interval > 0 && init_cfg->interval < 4096, "DAC interval error", ESP_ERR_INVALID_ARG); - DAC_CHECK(init_cfg->dig_clk.div_num < 256, "DAC clk div_num error", ESP_ERR_INVALID_ARG); - DAC_CHECK(init_cfg->dig_clk.div_b > 0 && init_cfg->dig_clk.div_b < 64, "DAC clk div_b error", ESP_ERR_INVALID_ARG); - DAC_CHECK(init_cfg->dig_clk.div_a < 64, "DAC clk div_a error", ESP_ERR_INVALID_ARG); + for (int bux_idx = 0; bux_idx < desc_cnt; bux_idx++) { + pdesc[bux_idx]->owner = 1; + pdesc[bux_idx]->eof = 1; + pdesc[bux_idx]->length = buf_size; + pdesc[bux_idx]->size = buf_size; + pdesc[bux_idx]->buf = (uint8_t *) buffer; + buffer += buf_size; + if (s_dac_digi_ctx->dac_dma_link_type == DAC_DMA_LINK_RECURSIVE) { + pdesc[bux_idx]->qe.stqe_next = ((bux_idx < (desc_cnt - 1)) ? (pdesc[bux_idx + 1]) : pdesc[0]); + } else { + pdesc[bux_idx]->qe.stqe_next = ((bux_idx < (desc_cnt - 1)) ? (pdesc[bux_idx + 1]) : NULL); + } + } +} + +esp_err_t dac_digi_initialize(const dac_digi_init_config_t *init_cfg) +{ + ESP_RETURN_ON_FALSE(init_cfg->mode < DAC_CONV_MAX, ESP_ERR_INVALID_ARG, DAC_TAG, "DAC mode error"); + ESP_RETURN_ON_FALSE((init_cfg->interval > 0) && (init_cfg->interval < 4096), ESP_ERR_INVALID_ARG, DAC_TAG, "DAC interval error"); esp_err_t err = ESP_OK; + uint32_t dma_chan = 0; + uint32_t dac_chan = 0; if (s_dac_digi_ctx != NULL) { ESP_LOGE(DAC_TAG, "DAC has been installed"); err = ESP_FAIL; @@ -248,11 +133,7 @@ esp_err_t dac_digi_initialize(const dac_digi_config_t *init_cfg) #ifdef CONFIG_PM_ENABLE if (s_dac_digi_ctx->pm_lock == NULL) { - if (init_cfg->dig_clk.use_apll) { - err = esp_pm_lock_create(ESP_PM_NO_LIGHT_SLEEP, 0, "dac_dma", &s_dac_digi_ctx->pm_lock); - } else { - err = esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_dma", &s_dac_digi_ctx->pm_lock); - } + err = esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_dma", &s_dac_digi_ctx->pm_lock); if (err != ESP_OK) { s_dac_digi_ctx->pm_lock = NULL; ESP_LOGE(DAC_TAG, "DAC-DMA pm lock error"); @@ -266,16 +147,43 @@ esp_err_t dac_digi_initialize(const dac_digi_config_t *init_cfg) } else { xQueueReset(s_dac_digi_ctx->que_dac_hdl); } - periph_module_enable(PERIPH_SPI3_DMA_MODULE); - periph_module_enable(PERIPH_HSPI_MODULE); + periph_module_enable(PERIPH_SARADC_MODULE); - dac_hal_digi_controller_config(init_cfg); + do { + if ((init_cfg->dac_chan_msk >> dac_chan) & BIT(0)) { + dac_output_enable(dac_chan); + dac_chan++; + } + } while (dac_chan < DAC_CHANNEL_MAX); + + dac_hal_ctrl_config_t ctrl_hal_cfg = { + .mode = init_cfg->mode, + .interval = init_cfg->interval, + }; + + dac_hal_digi_controller_configure(&ctrl_hal_cfg); s_dac_digi_ctx->dma_buffer_cnt = init_cfg->dac_dma_cnt; s_dac_digi_ctx->dma_buffer_length = init_cfg->dac_dma_length; s_dac_digi_ctx->dac_dma_link_type = init_cfg->dac_dma_link_type; - s_dac_digi_ctx->dac_isr = SPI_OUT_EOF_INT_ENA | SPI_OUT_TOTAL_EOF_INT_ENA; - dac_dma_isr_register(dac_dma_isr, NULL, s_dac_digi_ctx->dac_isr); + s_dac_digi_ctx->spi_host = DAC_USE_SPI3_DMA_CHANNEL; + + spicommon_periph_claim(s_dac_digi_ctx->spi_host, "dac"); + err = spicommon_slave_dma_chan_alloc(s_dac_digi_ctx->spi_host, SPI_DMA_CH_AUTO, &dma_chan, &dma_chan); + if (err != ESP_OK) { + goto _exit; + } + + s_dac_digi_ctx->hal = calloc(1, sizeof(dac_hal_context_t)); + s_dac_digi_ctx->hal->dev = (void *)SPI_LL_GET_HW(s_dac_digi_ctx->spi_host); + s_dac_digi_ctx->hal->dma_chan = dma_chan; + + dac_dma_hal_init(s_dac_digi_ctx->hal); + err = esp_intr_alloc(spicommon_irqdma_source_for_host(s_dac_digi_ctx->spi_host), 0, dac_dma_isr_default, s_dac_digi_ctx, &s_dac_digi_ctx->dac_isr_handle); + if(err != ESP_OK){ + goto _exit; + } + s_dac_digi_ctx->desc = dac_dma_desc_buf_create(s_dac_digi_ctx->dma_buffer_cnt, s_dac_digi_ctx->dma_buffer_length); return err; _exit: @@ -283,22 +191,20 @@ _exit: return err; } -esp_err_t dac_digi_write_bytes(const void *buffer) +esp_err_t dac_digi_write_bytes(uint32_t length, const void *buffer, TickType_t ticks_to_wait) { - dac_hal_digi_clear_intr(UINT32_MAX); - dac_hal_digi_enable_intr(SPI_LL_INTR_OUT_TOTAL_EOF | SPI_LL_INTR_OUT_EOF); + ESP_RETURN_ON_FALSE(length <= (s_dac_digi_ctx->dma_buffer_cnt * s_dac_digi_ctx->dma_buffer_length), ESP_ERR_INVALID_ARG, DAC_TAG, "DAC DMA buffer length is larger than DMA buffer."); dac_dma_event_t dac_evt; - s_dac_digi_ctx->desc = dac_dma_desc_buf_create(s_dac_digi_ctx->dma_buffer_cnt, s_dac_digi_ctx->dma_buffer_length, (uint32_t*)buffer); + bool dac_isr_flag = 1; - dac_hal_dma_reset(0); - dac_hal_dma_fifo_reset(); - dac_hal_dma_start(0, s_dac_digi_ctx->desc[0]); - while (s_dac_digi_ctx->dac_isr) { - xQueueReceive(s_dac_digi_ctx->que_dac_hdl, &dac_evt, 2000 / portTICK_RATE_MS); - ESP_LOGV(DAC_TAG, "DAC-DMA intr type 0x%x", dac_evt.int_msk); - if (dac_evt.int_msk & s_dac_digi_ctx->dac_isr) { - s_dac_digi_ctx->dac_isr &= (~dac_evt.int_msk); + dac_dma_write(s_dac_digi_ctx->desc, s_dac_digi_ctx->dma_buffer_cnt, s_dac_digi_ctx->dma_buffer_length, buffer); + + dac_dma_hal_trans_start(s_dac_digi_ctx->hal, s_dac_digi_ctx->desc[0]); + while (dac_isr_flag) { + xQueueReceive(s_dac_digi_ctx->que_dac_hdl, &dac_evt, ticks_to_wait); + if (dac_evt.intr_trigger & dac_isr_flag) { + dac_isr_flag &= (!dac_evt.intr_trigger); } } return ESP_OK; @@ -314,22 +220,24 @@ esp_err_t dac_digi_deinitialize(void) ESP_LOGE(DAC_TAG, "DAC is still working"); return ESP_ERR_INVALID_STATE; } - periph_module_disable(PERIPH_SPI3_DMA_MODULE); - periph_module_disable(PERIPH_HSPI_MODULE); periph_module_disable(PERIPH_SARADC_MODULE); - dac_dma_linker_deinit(); - dac_dma_isr_deregister(dac_dma_isr, NULL); + spicommon_periph_free(s_dac_digi_ctx->spi_host); + spicommon_slave_free_dma(s_dac_digi_ctx->spi_host); + if (s_dac_digi_ctx->que_dac_hdl) { vQueueDelete(s_dac_digi_ctx->que_dac_hdl); s_dac_digi_ctx->que_dac_hdl = NULL; } + dac_dma_hal_deinit(s_dac_digi_ctx->hal); + for (int i = 0; i < s_dac_digi_ctx->dma_buffer_cnt; i++) { free(s_dac_digi_ctx->desc[i]); } + free(s_dac_digi_ctx->hal); free(s_dac_digi_ctx); s_dac_digi_ctx = NULL; #ifdef CONFIG_PM_ENABLE @@ -399,7 +307,7 @@ esp_err_t dac_digi_start(void) } s_dac_digi_ctx->dac_start_en = true; #ifdef CONFIG_PM_ENABLE - DAC_CHECK((s_dac_digi_ctx->pm_lock), "Should start after call `dac_digi_controller_config`", ESP_FAIL); + ESP_RETURN_ON_FALSE((s_dac_digi_ctx->pm_lock), ESP_ERR_INVALID_STATE, DAC_TAG, "Should start after call `dac_digi_controller_config`"); esp_pm_lock_acquire(s_dac_digi_ctx->pm_lock); #endif DAC_ENTER_CRITICAL(); @@ -445,3 +353,62 @@ esp_err_t dac_digi_reset(void) return ESP_OK; } + +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +esp_err_t __attribute__((deprecated)) dac_digi_init(void) +{ + s_dac_digi_ctx = calloc(1, sizeof(dac_digi_context_t)); + s_dac_digi_ctx->dac_start_en = false; + DAC_ENTER_CRITICAL(); + dac_hal_digi_init(); + DAC_EXIT_CRITICAL(); + + return ESP_OK; +} + +esp_err_t __attribute__((deprecated)) dac_digi_deinit(void) +{ +#ifdef CONFIG_PM_ENABLE + if (s_dac_digi_ctx->pm_lock) { + esp_pm_lock_delete(s_dac_digi_ctx->pm_lock); + s_dac_digi_ctx->pm_lock = NULL; + } + +#endif + free(s_dac_digi_ctx); + DAC_ENTER_CRITICAL(); + dac_hal_digi_deinit(); + DAC_EXIT_CRITICAL(); + + return ESP_OK; +} + +esp_err_t __attribute__((deprecated)) dac_digi_controller_config(const dac_digi_config_t *cfg) +{ + ESP_RETURN_ON_FALSE(cfg->mode < DAC_CONV_MAX, ESP_ERR_INVALID_ARG, DAC_TAG, "DAC mode error"); + ESP_RETURN_ON_FALSE(cfg->interval > 0 && cfg->interval < 4096, ESP_ERR_INVALID_ARG, DAC_TAG, "DAC interval error"); + ESP_RETURN_ON_FALSE(cfg->dig_clk.div_num < 256, ESP_ERR_INVALID_ARG, DAC_TAG, "DAC clk div_num error"); + ESP_RETURN_ON_FALSE(cfg->dig_clk.div_b > 0 && cfg->dig_clk.div_b < 64, ESP_ERR_INVALID_ARG, DAC_TAG, "DAC clk div_b error"); + ESP_RETURN_ON_FALSE(cfg->dig_clk.div_a < 64, ESP_ERR_INVALID_ARG, DAC_TAG, "DAC clk div_a error"); +#ifdef CONFIG_PM_ENABLE + esp_err_t err; + if (s_dac_digi_ctx->pm_lock == NULL) { + if (cfg->dig_clk.use_apll) { + err = esp_pm_lock_create(ESP_PM_NO_LIGHT_SLEEP, 0, "dac_dma", &s_dac_digi_ctx->pm_lock); + } else { + err = esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_dma", &s_dac_digi_ctx->pm_lock); + } + if (err != ESP_OK) { + s_dac_digi_ctx->pm_lock = NULL; + ESP_LOGE(DAC_TAG, "DAC-DMA pm lock error"); + return err; + } + } +#endif //CONFIG_PM_ENABLE + + DAC_ENTER_CRITICAL(); + dac_hal_digi_controller_config(cfg); + DAC_EXIT_CRITICAL(); + + return ESP_OK; +} diff --git a/components/driver/esp32s2/include/driver/dac.h b/components/driver/esp32s2/include/driver/dac.h index ef6bb96fa4..695e5c3f9f 100644 --- a/components/driver/esp32s2/include/driver/dac.h +++ b/components/driver/esp32s2/include/driver/dac.h @@ -11,21 +11,30 @@ #ifdef __cplusplus extern "C" { #endif + +/** + * @brief DAC digital controller (DMA mode) configuration parameters. + */ +typedef struct { + dac_digi_convert_mode_t mode; /*!< DAC digital controller (DMA mode) work mode. See ``dac_digi_convert_mode_t``. */ + uint32_t dac_chan_msk; /*!< DAC channel select mask, use BIT(CHAN_X) to mask the channesl */ + uint32_t interval; /*!< The number of interval clock cycles for the DAC digital controller to output voltage. + The unit is the divided clock. Range: 1 ~ 4095. + Expression: `dac_output_freq` = `controller_clk` / interval. Refer to ``adc_digi_clk_t``. + Note: The sampling rate of each channel is also related to the conversion mode (See ``dac_digi_convert_mode_t``) and pattern table settings. */ + uint32_t dac_dma_cnt; /*!< DMA buffer count, number of buffer. */ + uint32_t dac_dma_length; /*!< DMA buffer length, length of each buffer. */ + dac_dma_link_type_t dac_dma_link_type; /*!< The type of the link, see `dac_dma_link_type_t` */ +} dac_digi_init_config_t; + /*--------------------------------------------------------------- Digital controller setting ---------------------------------------------------------------*/ /** - * @brief DAC digital controller initialization. - * @return - * - ESP_OK success - */ -esp_err_t __attribute__((unused)) dac_digi_init(void); - -/** - * @brief Initialize the Digital DAC. + * @brief Initialize the Digital DAC controller. * - * @param init_cfg Pointer to Digital DAC initilization config. Refer to ``dac_digi_config_t``. + * @param init_cfg Pointer to Digital DAC initialization config. Refer to ``dac_digi_config_t``. * * @return * - ESP_ERR_INVALID_ARG If the combination of arguments is invalid. @@ -33,17 +42,10 @@ esp_err_t __attribute__((unused)) dac_digi_init(void); * - ESP_ERR_NO_MEM If out of memory * - ESP_OK On success */ -esp_err_t dac_digi_initialize(const dac_digi_config_t *init_cfg); +esp_err_t dac_digi_initialize(const dac_digi_init_config_t *init_cfg); /** - * @brief DAC digital controller deinitialization. - * @return - * - ESP_OK success - */ -esp_err_t __attribute__((unused)) dac_digi_deinit(void); - -/** - * @brief Deinitialize the Digital DAC. + * @brief Deinitialize the Digital DAC controller. * * @return * - ESP_ERR_INVALID_STATE Driver state is invalid. @@ -54,25 +56,17 @@ esp_err_t dac_digi_deinitialize(void); /** * @brief Write bytes to Digital DAC through DMA. * - * @param[in] buffer Buffer to write to DAC. + * @param length the buffer length. + * @param[in] buffer Buffer to write to DAC. + * @param ticks_to_wait Ticks to wait until there's room in the queue; use portMAX_DELAY to + * never time out. * * @return * - ESP_ERR_INVALID_STATE Driver state is invalid. Usually it means the ADC sampling rate is faster than the task processing rate. * - ESP_ERR_TIMEOUT Operation timed out * - ESP_OK On success */ -esp_err_t dac_digi_write_bytes(const void *buffer); - -/** - * @brief Setting the DAC digital controller. - * - * @param cfg Pointer to digital controller paramter. See ``dac_digi_config_t``. - * - * @return - * - ESP_OK success - * - ESP_ERR_INVALID_ARG Parameter error - */ -esp_err_t __attribute__((unused)) dac_digi_controller_config(const dac_digi_config_t *cfg); +esp_err_t dac_digi_write_bytes(uint32_t length, const void *buffer, TickType_t ticks_to_wait); /** * @brief DAC digital controller start output voltage. @@ -102,6 +96,35 @@ esp_err_t dac_digi_fifo_reset(void); */ esp_err_t dac_digi_reset(void); +/************************************************************ + * Deprecated APIs + ***********************************************************/ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +/** + * @brief Setting the DAC digital controller. + * + * @param cfg Pointer to digital controller paramter. See ``dac_digi_config_t``. + * + * @return + * - ESP_OK success + * - ESP_ERR_INVALID_ARG Parameter error + */ +esp_err_t __attribute__((deprecated)) dac_digi_controller_config(const dac_digi_config_t *cfg); + +/** + * @brief DAC digital controller deinitialization. + * @return + * - ESP_OK success + */ +esp_err_t __attribute__((deprecated)) dac_digi_deinit(void); + +/** + * @brief DAC digital controller initialization. + * @return + * - ESP_OK success + */ +esp_err_t __attribute__((deprecated)) dac_digi_init(void); + #ifdef __cplusplus } #endif diff --git a/components/driver/test/dac_dma_test/test_esp32s2.c b/components/driver/test/dac_dma_test/test_esp32s2.c new file mode 100644 index 0000000000..9b44acd095 --- /dev/null +++ b/components/driver/test/dac_dma_test/test_esp32s2.c @@ -0,0 +1,363 @@ +/* + * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* + Tests for the dac device driver on ESP32-S2 only +*/ +#include "sdkconfig.h" +#if CONFIG_IDF_TARGET_ESP32S2 + +#include "esp_system.h" +#include "esp_intr_alloc.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/queue.h" +#include "driver/adc.h" +#include "driver/rtc_io.h" +#include "driver/gpio.h" +#include "unity.h" +#include "esp_system.h" +#include "esp_event.h" +#include "esp_wifi.h" +#include "esp_log.h" +#include "nvs_flash.h" +#include "test_utils.h" +#include "soc/soc.h" +#include "soc/spi_reg.h" +#include "soc/adc_periph.h" +#include "soc/dac_periph.h" +#include "soc/spi_periph.h" +#include "test/test_common_adc.h" +#include "driver/dac.h" +#include "soc/system_reg.h" +#include "esp32s2/rom/lldesc.h" +#include "test/test_adc_dac_dma.h" + +/******************************************************** + * This test is left for testing the legacy DAC-DMA APIs + *******************************************************/ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + +static const char *TAG = "test_adc"; + +#define PLATFORM_SELECT (1) //0: pxp; 1: chip +#if (PLATFORM_SELECT == 0) //PXP platform +#include "soc/apb_ctrl_reg.h" +#define SET_BREAK_POINT(flag) REG_WRITE(APB_CTRL_DATE_REG, flag) +//PXP clk is slower. +#define SYS_DELAY_TIME_MOM (1/40) +#define RTC_SLOW_CLK_FLAG 1 // Slow clock is 32KHz. +static void test_pxp_deinit_io(void) +{ + for (int i = 0; i < 22; i++) { + rtc_gpio_init(i); + } +} +#else +//PXP clk is slower. +#define SET_BREAK_POINT(flag) +#define SYS_DELAY_TIME_MOM (1) +#define RTC_SLOW_CLK_FLAG 0 // Slow clock is 32KHz. +#endif + +#define SAR_SIMPLE_NUM 512 // Set out number of enabled unit. + +typedef struct dma_msg { + uint32_t int_msk; + uint8_t *data; + uint32_t data_len; +} dac_dma_event_t; + +static QueueHandle_t que_dac = NULL; +static uint8_t link_buf[2][SAR_SIMPLE_NUM*2] = {0}; +static lldesc_t dma1 = {0}; +static lldesc_t dma2 = {0}; + +/*******************************************/ +/** DAC-DMA INIT CODE */ +/*******************************************/ + +/** + * DMA liner initialization and start. + * @param is_loop + * - true: The two dma linked lists are connected end to end, with no end mark (eof). + * - false: The two dma linked lists are connected end to end, with end mark (eof). + * @param int_mask DMA interrupt types. + */ +uint32_t dac_dma_linker_init(bool is_alter, bool is_loop) +{ + /* The DAC output is a sawtooth wave. */ + if (is_alter) { + for(int i=0; i> %s - dac mode %d<< ", __func__, mode); + + dac_dma_event_t evt; + + dac_digi_init(); + const dac_digi_config_t cfg = { + .mode = mode, + .interval = 100, + .dig_clk.use_apll = false, // APB clk + .dig_clk.div_num = 79, + .dig_clk.div_b = 1, + .dig_clk.div_a = 0, + }; + dac_digi_controller_config(&cfg); + dac_output_enable(DAC_CHANNEL_1); + dac_output_enable(DAC_CHANNEL_2); + + /* DAC-DMA linker init */ + if (que_dac == NULL) { + que_dac = xQueueCreate(5, sizeof(dac_dma_event_t)); + } else { + xQueueReset(que_dac); + } + uint32_t int_mask = SPI_OUT_DONE_INT_ENA | SPI_OUT_EOF_INT_ENA | SPI_OUT_TOTAL_EOF_INT_ENA; + uint32_t dma_addr = dac_dma_linker_init(mode, false); + adc_dac_dma_isr_register(dac_dma_isr, NULL, int_mask); + adc_dac_dma_linker_start(DMA_ONLY_DAC_OUTLINK, (void *)dma_addr, int_mask); + + /* ADC-DMA start output */ + dac_digi_start(); + + /* Check interrupt type */ + while (int_mask) { + TEST_ASSERT_EQUAL( xQueueReceive(que_dac, &evt, 2000 / portTICK_RATE_MS), pdTRUE ); + ESP_LOGI(TAG, "DAC-DMA intr type 0x%x", evt.int_msk); + if (evt.int_msk & int_mask) { + int_mask &= (~evt.int_msk); + } + } + + ESP_LOGI(TAG, "DAC-DMA intr test over"); + adc_dac_dma_linker_deinit(); + adc_dac_dma_isr_deregister(dac_dma_isr, NULL); + TEST_ESP_OK( dac_digi_deinit() ); +} + +TEST_CASE("DAC-DMA interrupt test", "[dac]") +{ + test_dac_dig_dma_intr_check(DAC_CONV_NORMAL); + test_dac_dig_dma_intr_check(DAC_CONV_ALTER); +} + +/*******************************************/ +/** SPI DMA INIT CODE */ +/*******************************************/ + +#include "sys/queue.h" +static bool adc_dac_dma_isr_flag = false; + +/*--------------------------------------------------------------- + INTERRUPT HANDLER +---------------------------------------------------------------*/ + +typedef struct adc_dac_dma_isr_handler_ { + uint32_t mask; + intr_handler_t handler; + void* handler_arg; + SLIST_ENTRY(adc_dac_dma_isr_handler_) next; +} adc_dac_dma_isr_handler_t; + +static SLIST_HEAD(adc_dac_dma_isr_handler_list_, adc_dac_dma_isr_handler_) s_adc_dac_dma_isr_handler_list = + SLIST_HEAD_INITIALIZER(s_adc_dac_dma_isr_handler_list); +portMUX_TYPE s_isr_handler_list_lock = portMUX_INITIALIZER_UNLOCKED; +static intr_handle_t s_adc_dac_dma_isr_handle; + +static IRAM_ATTR void adc_dac_dma_isr_default(void* arg) +{ + uint32_t status = REG_READ(SPI_DMA_INT_ST_REG(3)); + adc_dac_dma_isr_handler_t* it; + portENTER_CRITICAL_ISR(&s_isr_handler_list_lock); + SLIST_FOREACH(it, &s_adc_dac_dma_isr_handler_list, next) { + if (it->mask & status) { + portEXIT_CRITICAL_ISR(&s_isr_handler_list_lock); + (*it->handler)(it->handler_arg); + portENTER_CRITICAL_ISR(&s_isr_handler_list_lock); + } + } + portEXIT_CRITICAL_ISR(&s_isr_handler_list_lock); + REG_WRITE(SPI_DMA_INT_CLR_REG(3), status); +} + +static esp_err_t adc_dac_dma_isr_ensure_installed(void) +{ + esp_err_t err = ESP_OK; + portENTER_CRITICAL(&s_isr_handler_list_lock); + if (s_adc_dac_dma_isr_handle) { + goto out; + } + REG_WRITE(SPI_DMA_INT_ENA_REG(3), 0); + REG_WRITE(SPI_DMA_INT_CLR_REG(3), UINT32_MAX); + err = esp_intr_alloc(ETS_SPI3_DMA_INTR_SOURCE, 0, &adc_dac_dma_isr_default, NULL, &s_adc_dac_dma_isr_handle); + if (err != ESP_OK) { + goto out; + } + +out: + portEXIT_CRITICAL(&s_isr_handler_list_lock); + return err; +} + +esp_err_t adc_dac_dma_isr_register(intr_handler_t handler, void* handler_arg, uint32_t intr_mask) +{ + esp_err_t err = adc_dac_dma_isr_ensure_installed(); + if (err != ESP_OK) { + return err; + } + + adc_dac_dma_isr_handler_t* item = malloc(sizeof(*item)); + if (item == NULL) { + return ESP_ERR_NO_MEM; + } + item->handler = handler; + item->handler_arg = handler_arg; + item->mask = intr_mask; + portENTER_CRITICAL(&s_isr_handler_list_lock); + SLIST_INSERT_HEAD(&s_adc_dac_dma_isr_handler_list, item, next); + portEXIT_CRITICAL(&s_isr_handler_list_lock); + return ESP_OK; +} + +esp_err_t adc_dac_dma_isr_deregister(intr_handler_t handler, void* handler_arg) +{ + adc_dac_dma_isr_handler_t* it; + adc_dac_dma_isr_handler_t* prev = NULL; + bool found = false; + portENTER_CRITICAL(&s_isr_handler_list_lock); + SLIST_FOREACH(it, &s_adc_dac_dma_isr_handler_list, next) { + if (it->handler == handler && it->handler_arg == handler_arg) { + if (it == SLIST_FIRST(&s_adc_dac_dma_isr_handler_list)) { + SLIST_REMOVE_HEAD(&s_adc_dac_dma_isr_handler_list, next); + } else { + SLIST_REMOVE_AFTER(prev, next); + } + found = true; + free(it); + break; + } + prev = it; + } + portEXIT_CRITICAL(&s_isr_handler_list_lock); + return found ? ESP_OK : ESP_ERR_INVALID_STATE; +} + +void adc_dac_dma_linker_start(spi_dma_link_type_t type, void *dma_addr, uint32_t int_msk) +{ + REG_SET_BIT(DPORT_PERIP_CLK_EN_REG, DPORT_APB_SARADC_CLK_EN_M); + REG_SET_BIT(DPORT_PERIP_CLK_EN_REG, DPORT_SPI3_DMA_CLK_EN_M); + REG_SET_BIT(DPORT_PERIP_CLK_EN_REG, DPORT_SPI3_CLK_EN); + REG_CLR_BIT(DPORT_PERIP_RST_EN_REG, DPORT_SPI3_DMA_RST_M); + REG_CLR_BIT(DPORT_PERIP_RST_EN_REG, DPORT_SPI3_RST_M); + REG_WRITE(SPI_DMA_INT_CLR_REG(3), 0xFFFFFFFF); + REG_WRITE(SPI_DMA_INT_ENA_REG(3), int_msk | REG_READ(SPI_DMA_INT_ENA_REG(3))); + if (type & DMA_ONLY_ADC_INLINK) { + REG_SET_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_STOP); + REG_CLR_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_START); + SET_PERI_REG_BITS(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_ADDR, (uint32_t)dma_addr, 0); + REG_SET_BIT(SPI_DMA_CONF_REG(3), SPI_IN_RST); + REG_CLR_BIT(SPI_DMA_CONF_REG(3), SPI_IN_RST); + REG_CLR_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_STOP); + REG_SET_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_START); + } + if (type & DMA_ONLY_DAC_OUTLINK) { + REG_SET_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_STOP); + REG_CLR_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_START); + SET_PERI_REG_BITS(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_ADDR, (uint32_t)dma_addr, 0); + REG_SET_BIT(SPI_DMA_CONF_REG(3), SPI_OUT_RST); + REG_CLR_BIT(SPI_DMA_CONF_REG(3), SPI_OUT_RST); + REG_CLR_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_STOP); + REG_SET_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_START); + } +} + +void adc_dac_dma_linker_stop(spi_dma_link_type_t type) +{ + if (type & DMA_ONLY_ADC_INLINK) { + REG_SET_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_STOP); + REG_CLR_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_START); + } + if (type & DMA_ONLY_DAC_OUTLINK) { + REG_SET_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_STOP); + REG_CLR_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_START); + } +} + +void adc_dac_dma_linker_deinit(void) +{ + adc_dac_dma_linker_stop(DMA_BOTH_ADC_DAC); + REG_WRITE(SPI_DMA_INT_CLR_REG(3), 0xFFFFFFFF); + REG_WRITE(SPI_DMA_INT_ENA_REG(3), 0); + adc_dac_dma_isr_flag = false; +} + +/*******************************************/ +/** SPI DMA INIT CODE END */ +/*******************************************/ + +#endif // CONFIG_IDF_TARGET_ESP32S2 diff --git a/components/driver/test/test_dac_dma.c b/components/driver/test/test_dac_dma.c index 12722e1679..89e60b2cca 100644 --- a/components/driver/test/test_dac_dma.c +++ b/components/driver/test/test_dac_dma.c @@ -61,6 +61,8 @@ static void test_pxp_deinit_io(void) #define SAR_SIMPLE_NUM 512 // Set out number of enabled unit. +static const char *TAG = "test_adc"; + /*******************************************/ /** DAC-DMA INIT CODE */ /*******************************************/ @@ -98,28 +100,24 @@ void dac_dma_test_create_buffer(dac_digi_convert_mode_t mode) /** * Testcase: Check the interrupt types of DAC-DMA. */ -void test_dac_dig_dma_intr_check(dac_digi_convert_mode_t mode) +void test_dac_dma(dac_digi_convert_mode_t mode) { ESP_LOGI(TAG, " >> %s - dac mode %d<< ", __func__, mode); - const dac_digi_config_t cfg = { + const dac_digi_init_config_t cfg = { .mode = mode, + .dac_chan_msk = BIT(DAC_CHANNEL_1) | BIT(DAC_CHANNEL_2), .interval = 100, - .dig_clk.use_apll = false, // APB clk - .dig_clk.div_num = 79, - .dig_clk.div_b = 1, - .dig_clk.div_a = 0, .dac_dma_cnt = 4, .dac_dma_length = 128, - .dac_dma_link_type = DAC_DMA_LINK_LINE, + .dac_dma_link_type = DAC_DMA_LINK_RECURSIVE, }; dac_digi_initialize(&cfg); - dac_output_enable(DAC_CHANNEL_1); - dac_output_enable(DAC_CHANNEL_2); dac_dma_test_create_buffer(mode); dac_digi_start(); - dac_digi_write_bytes((uint8_t*)_buf); + uint32_t length = sizeof(_buf); + dac_digi_write_bytes(length, (uint8_t*)_buf, portMAX_DELAY); // /* Check interrupt type */ ESP_LOGI(TAG, "DAC-DMA intr test over"); @@ -127,87 +125,10 @@ void test_dac_dig_dma_intr_check(dac_digi_convert_mode_t mode) dac_digi_deinitialize(); } -TEST_CASE("DAC-DMA interrupt test", "[dac]") +TEST_CASE("DAC with DMA test", "[dac]") { - test_dac_dig_dma_intr_check(DAC_CONV_NORMAL); - test_dac_dig_dma_intr_check(DAC_CONV_ALTER); -} - -/**************************************************** - * The code below is used for legacy implementation - ***************************************************/ -#ifndef DAC_DMA_LEGACY_IMPL -#define DAC_DMA_LEGACY_IMPL 1 -#endif - -#if DAC_DMA_LEGACY_IMPL - -typedef struct dma_msg { - uint32_t int_msk; - uint8_t *data; - uint32_t data_len; -} dac_dma_event_t; - -static QueueHandle_t que_dac = NULL; -static uint8_t link_buf[2][SAR_SIMPLE_NUM*2] = {0}; -static lldesc_t dma1 = {0}; -static lldesc_t dma2 = {0}; - -/*******************************************/ -/** DAC-DMA INIT CODE */ -/*******************************************/ - -/** - * DMA liner initialization and start. - * @param is_loop - * - true: The two dma linked lists are connected end to end, with no end mark (eof). - * - false: The two dma linked lists are connected end to end, with end mark (eof). - * @param is_alter Is alter or not. - */ -uint32_t dac_dma_linker_init(bool is_alter, bool is_loop) -{ - /* The DAC output is a sawtooth wave. */ - if (is_alter) { - for(int i=0; idev, DAC_DMA_HAL_INTR); } -void dac_hal_digi_deinit(void) +bool dac_dma_hal_get_intr_status(dac_hal_context_t *hal) +{ + return spi_ll_get_intr(hal->dev, DAC_DMA_HAL_INTR); +} + + +void dac_dma_hal_init(dac_hal_context_t *hal) +{ + dac_ll_dma_clear_intr(hal->dev, DAC_DMA_HAL_INTR); + dac_ll_dma_enable_intr(hal->dev, DAC_DMA_HAL_INTR); + +} + +void dac_dma_hal_deinit(dac_hal_context_t *hal) { dac_ll_digi_trigger_output(false); dac_ll_digi_enable_dma(false); - dac_ll_digi_fifo_reset(); - dac_ll_digi_reset(); + dac_ll_dma_clear_intr(hal->dev, DAC_DMA_HAL_INTR); + dac_ll_dma_disable(hal->dev); } -void dac_hal_digi_controller_config(const dac_digi_config_t *cfg) +void dac_dma_hal_trans_start(dac_hal_context_t *hal, lldesc_t *desc) { + dac_ll_dma_reset(hal->dev, hal->dma_chan); + dac_ll_dma_fifo_reset(hal->dev); + dac_ll_dma_start(hal->dev, hal->dma_chan, desc); +} + +void dac_hal_digi_controller_configure(const dac_hal_ctrl_config_t *cfg) +{ + dac_ll_digi_clk_inv(true); dac_ll_digi_set_convert_mode(cfg->mode); dac_ll_digi_set_trigger_interval(cfg->interval); adc_ll_digi_controller_clk_div(cfg->dig_clk.div_num, cfg->dig_clk.div_b, cfg->dig_clk.div_a); @@ -46,3 +76,24 @@ void dac_hal_digi_stop(void) dac_ll_digi_trigger_output(false); dac_ll_digi_enable_dma(false); } + +void __attribute__((deprecated)) dac_hal_digi_deinit(void) +{ + dac_ll_digi_trigger_output(false); + dac_ll_digi_enable_dma(false); + dac_ll_digi_fifo_reset(); + dac_ll_digi_reset(); +} + +void __attribute__((deprecated)) dac_hal_digi_controller_config(const dac_digi_config_t *cfg) +{ + dac_ll_digi_set_convert_mode(cfg->mode); + dac_ll_digi_set_trigger_interval(cfg->interval); + adc_ll_digi_controller_clk_div(cfg->dig_clk.div_num, cfg->dig_clk.div_b, cfg->dig_clk.div_a); + adc_ll_digi_controller_clk_enable(cfg->dig_clk.use_apll); +} + +void __attribute__((deprecated)) dac_hal_digi_init(void) +{ + dac_ll_digi_clk_inv(true); +} diff --git a/components/hal/esp32s2/include/hal/dac_hal.h b/components/hal/esp32s2/include/hal/dac_hal.h index a7f4abce4c..947b563a12 100644 --- a/components/hal/esp32s2/include/hal/dac_hal.h +++ b/components/hal/esp32s2/include/hal/dac_hal.h @@ -1,16 +1,8 @@ -// Copyright 2019 Espressif Systems (Shanghai) PTE 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. +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /******************************************************************************* * NOTICE @@ -24,6 +16,8 @@ #include "hal/dac_ll.h" #include "hal/dac_types.h" +#include "hal/spi_ll.h" +#include "soc/lldesc.h" #include_next "hal/dac_hal.h" @@ -31,6 +25,19 @@ extern "C" { #endif +#define DAC_DMA_HAL_INTR (SPI_LL_INTR_OUT_TOTAL_EOF) + +typedef struct { + void *dev; + uint32_t dma_chan; +} dac_hal_context_t; + +typedef struct { + dac_digi_convert_mode_t mode; + uint32_t interval; +} dac_hal_ctrl_config_t; + + /*--------------------------------------------------------------- Digital controller setting ---------------------------------------------------------------*/ @@ -49,7 +56,7 @@ void dac_hal_digi_deinit(void); * * @param cfg Pointer to digital controller paramter. */ -void dac_hal_digi_controller_config(const dac_digi_config_t *cfg); +void dac_hal_digi_controller_configure(const dac_hal_ctrl_config_t *ctrl_cfg); /** * DAC digital controller start output voltage. @@ -71,6 +78,51 @@ void dac_hal_digi_stop(void); */ #define dac_hal_digi_reset() dac_ll_digi_reset() +/******************************************************* + * DAC-DMA hal layer functions. + * On ESP32-S2, DAC shares the DMA with SPI3. +*******************************************************/ + +/** + * DAC DMA HAL initialization + * + * @param hal Context of the HAL layer + */ +void dac_dma_hal_init(dac_hal_context_t *hal); + +/** + * DAC DMA HAL interrupt clear. + * + * @param hal Context of the HAL layer + */ +void dac_dma_hal_clr_intr(dac_hal_context_t *hal); + +/** + * DAC DMA HAL transaction start. + * + * @param hal Context of the HAL layer + */ +void dac_dma_hal_trans_start(dac_hal_context_t *hal, lldesc_t *desc); + +/** + * Get if interrupt is triggered or not. + * + * @param hal Context of the HAL layer + * + * @return if the intr is triggered. 1: triggered, 0: not triggered. + */ +bool dac_dma_hal_get_intr_status(dac_hal_context_t *hal); + +/** + * DAC DMA HAL deinitialization + * + * @param hal Context of the HAL layer + */ +void dac_dma_hal_deinit(dac_hal_context_t *hal); + +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +void __attribute__((deprecated)) dac_hal_digi_controller_config(const dac_digi_config_t *cfg); + #ifdef __cplusplus } #endif diff --git a/components/hal/esp32s2/include/hal/spi_ll.h b/components/hal/esp32s2/include/hal/spi_ll.h index 13b862b5fd..65084c8d23 100644 --- a/components/hal/esp32s2/include/hal/spi_ll.h +++ b/components/hal/esp32s2/include/hal/spi_ll.h @@ -1290,11 +1290,6 @@ static inline bool spi_ll_tx_get_empty_err(spi_dev_t *hw) return hw->dma_int_raw.outfifo_empty_err; } -static inline uint32_t spi_ll_read_intr_status(spi_dev_t *hw) -{ - return hw->dma_int_st.val; -} - #undef SPI_LL_RST_MASK #undef SPI_LL_UNUSED_INT_MASK diff --git a/components/hal/include/hal/dac_hal.h b/components/hal/include/hal/dac_hal.h index ec2e8014b0..e0c4d9a23f 100644 --- a/components/hal/include/hal/dac_hal.h +++ b/components/hal/include/hal/dac_hal.h @@ -13,12 +13,6 @@ #pragma once #include "hal/dac_ll.h" -#if CONFIG_IDF_TARGET_ESP32S2 -#include "soc/spi_struct.h" -#include "hal/spi_ll.h" -#include "soc/spi_reg.h" -#include "soc/spi_periph.h" -#endif /** * Power on dac module and start output voltage. @@ -74,51 +68,3 @@ void dac_hal_cw_generator_config(dac_cw_config_t *cw); * Enable/disable DAC output data from DMA. */ #define dac_hal_digi_enable_dma(enable) dac_ll_digi_enable_dma(enable) - -#if CONFIG_IDF_TARGET_ESP32S2 -/******************************************************* - * DAC-DMA hal layer functions. - * On ESP32-S2, DAC shares the DMA with SPI3. -*******************************************************/ - -/** - * Read the interrupt status. - */ -#define dac_hal_digi_read_intr_status() spi_ll_read_intr_status(&GPSPI3) - -/** - * Clear the interrupt bit. - * @param mask spi-dma interrupt bit mask. - */ -#define dac_hal_digi_clear_intr(mask) spi_ll_clear_intr(&GPSPI3, mask) - -/** - * Enable interrupt - * @param mask spi-dma interrupt bit mask. - */ -#define dac_hal_digi_enable_intr(mask) spi_ll_enable_intr(&GPSPI3, mask) - -/** - * Disable dac dma - */ -#define dac_hal_dma_disable() spi_dma_ll_tx_disable(&GPSPI3) - -/** - * Reset dac dma - * @param chan the dma channel. - */ -#define dac_hal_dma_reset(chan) spi_dma_ll_tx_reset(&GPSPI3, chan) - -/** - * Start dac dma - * @param chan the dma channel. - * @param desc the pointer to the dma link. - */ -#define dac_hal_dma_start(chan, desc) spi_dma_ll_tx_start(&GPSPI3, chan, desc) - -/** - * Reset the dma fifo - */ -#define dac_hal_dma_fifo_reset() spi_ll_dma_tx_fifo_reset(&GPSPI3) - -#endif //CONFIG_IDF_TARGET_ESP32S2 diff --git a/components/hal/include/hal/dac_types.h b/components/hal/include/hal/dac_types.h index 587ea9e4ec..d52c72ed7c 100644 --- a/components/hal/include/hal/dac_types.h +++ b/components/hal/include/hal/dac_types.h @@ -70,9 +70,6 @@ typedef struct { Note: The sampling rate of each channel is also related to the conversion mode (See ``dac_digi_convert_mode_t``) and pattern table settings. */ adc_digi_clk_t dig_clk; /*!` and the :doc:`LED Control module `. Both these modules produce high frequency PDM/PWM output, which can be hardware low-pass filtered in order to generate a lower frequency analog output. @@ -40,35 +40,6 @@ Setting DAC channel 1 ({IDF_TARGET_DAC_CH_1}) voltage to approx 0.78 of VDD_A vo dac_output_voltage(DAC_CHANNEL_1, 200); -.. only:: esp32s2 - -For {IDF_TARGET_NAME}, DAC support to use DMA to send digital data to convert. Here is the example: - -.. code-block:: c - - #include - - const dac_digi_config_t cfg = { - .mode = mode, - .interval = 100, - .dig_clk.use_apll = false, // APB clk - .dig_clk.div_num = 79, // See comments `adc_digi_clk_t` - .dig_clk.div_b = 1, - .dig_clk.div_a = 0, - .dac_dma_cnt = 1, // The dac dma link number for your project - .dac_dma_length = 512, // The dac dam link length for your project. Should fit the buffer you prepared with dac_dma_cnt. - .dac_dma_link_type = DAC_DMA_LINK_RECURSIVE, //The link type. - }; - - dac_digi_initialize(&cfg); - dac_output_enable(DAC_CHANNEL_X); - dac_digi_start(); - dac_digi_write_bytes((uint8_t*)buffer_you_prepared); - dac_digi_stop(); - dac_digi_deinitialize(); - - - API Reference ------------- diff --git a/tools/ci/check_copyright_ignore.txt b/tools/ci/check_copyright_ignore.txt index fb6cabc244..bfefd9b15e 100644 --- a/tools/ci/check_copyright_ignore.txt +++ b/tools/ci/check_copyright_ignore.txt @@ -717,7 +717,7 @@ components/hal/esp32h2/include/hal/uhci_ll.h components/hal/esp32h2/include/hal/uhci_types.h components/hal/esp32h2/include/hal/usb_serial_jtag_ll.h components/hal/esp32s2/include/hal/crypto_dma_ll.h -components/hal/esp32s2/include/hal/dac_hal.h +components/hal/esp32s2/include/hal/dac_ll.h components/hal/esp32s2/include/hal/dedic_gpio_ll.h components/hal/esp32s2/include/hal/mpu_ll.h components/hal/esp32s2/include/hal/sha_ll.h From 351a18415c5ccf4fd794bc13837a1d1323d8b90f Mon Sep 17 00:00:00 2001 From: laokaiyao Date: Mon, 9 May 2022 17:33:51 +0800 Subject: [PATCH 3/5] dac: driver-ng framework --- components/driver/CMakeLists.txt | 17 +- components/driver/Kconfig | 25 + components/driver/dac.c | 643 ++++++++++++++++++ .../dac_common_legacy.c} | 7 +- .../driver/dac_common.h | 2 +- .../deprecated/driver/dac_types_legacy.h | 30 + .../dac.c => deprecated/esp32/dac_legacy.c} | 0 .../include => deprecated/esp32}/driver/dac.h | 0 .../driver/deprecated/esp32s2/dac_legacy.c | 132 ++++ .../driver/deprecated/esp32s2/driver/dac.h | 73 ++ components/driver/esp32/dac_dma.c | 187 +++++ components/driver/esp32s2/dac.c | 414 ----------- components/driver/esp32s2/dac_dma.c | 199 ++++++ .../driver/esp32s2/include/driver/dac.h | 130 ---- components/driver/include/driver/dac_new.h | 260 +++++++ components/driver/include/driver/dac_types.h | 55 ++ .../driver/include/esp_private/dac_dma.h | 37 + components/hal/CMakeLists.txt | 1 - components/hal/dac_hal.c | 36 +- components/hal/esp32/include/hal/dac_ll.h | 4 +- components/hal/esp32s2/dac_hal.c | 4 +- .../hal/esp32s2/include/hal/clk_gate_ll.h | 2 - components/hal/esp32s2/include/hal/dac_ll.h | 12 +- components/hal/include/hal/dac_hal.h | 3 +- components/hal/include/hal/dac_types.h | 23 +- tools/ci/check_copyright_ignore.txt | 2 - 26 files changed, 1684 insertions(+), 614 deletions(-) create mode 100644 components/driver/dac.c rename components/driver/{dac_common.c => deprecated/dac_common_legacy.c} (92%) rename components/driver/{include => deprecated}/driver/dac_common.h (98%) create mode 100644 components/driver/deprecated/driver/dac_types_legacy.h rename components/driver/{esp32/dac.c => deprecated/esp32/dac_legacy.c} (100%) rename components/driver/{esp32/include => deprecated/esp32}/driver/dac.h (100%) create mode 100644 components/driver/deprecated/esp32s2/dac_legacy.c create mode 100644 components/driver/deprecated/esp32s2/driver/dac.h create mode 100644 components/driver/esp32/dac_dma.c delete mode 100644 components/driver/esp32s2/dac.c create mode 100644 components/driver/esp32s2/dac_dma.c delete mode 100644 components/driver/esp32s2/include/driver/dac.h create mode 100644 components/driver/include/driver/dac_new.h create mode 100644 components/driver/include/driver/dac_types.h create mode 100644 components/driver/include/esp_private/dac_dma.h diff --git a/components/driver/CMakeLists.txt b/components/driver/CMakeLists.txt index 6315559855..2b63897d6f 100644 --- a/components/driver/CMakeLists.txt +++ b/components/driver/CMakeLists.txt @@ -99,7 +99,14 @@ if(CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2) endif() if(CONFIG_SOC_TOUCH_SENSOR_SUPPORTED) - list(APPEND srcs "touch_sensor_common.c" "${target}/touch_sensor.c") + list(APPEND srcs "touch_sensor_common.c" + "${target}/touch_sensor.c") +endif() + +if(CONFIG_SOC_DAC_SUPPORTED) + list(APPEND srcs "dac.c" + "deprecated/dac_common_legacy.c") + list(APPEND includes "deprecated/${target}") endif() if(CONFIG_SOC_SDIO_SLAVE_SUPPORTED) @@ -107,14 +114,12 @@ if(CONFIG_SOC_SDIO_SLAVE_SUPPORTED) endif() if(${target} STREQUAL "esp32") - list(APPEND srcs "dac_common.c" - "deprecated/adc_i2s_deprecated.c" - "esp32/dac.c") + list(APPEND srcs "deprecated/adc_i2s_deprecated.c" + "deprecated/esp32/dac_legacy.c") endif() if(${target} STREQUAL "esp32s2") - list(APPEND srcs "dac_common.c" - "esp32s2/dac.c") + list(APPEND srcs "deprecated/esp32s2/dac_legacy.c") endif() if(BOOTLOADER_BUILD) diff --git a/components/driver/Kconfig b/components/driver/Kconfig index 7888cd5380..33417b07bf 100644 --- a/components/driver/Kconfig +++ b/components/driver/Kconfig @@ -399,4 +399,29 @@ menu "Driver Configurations" Note that, this option only controls the I2S driver log, will not affect other drivers. endmenu # I2S Configuration + menu "DAC Configuration" + depends on SOC_DAC_SUPPORTED + config DAC_ISR_IRAM_SAFE + bool "DAC ISR IRAM-Safe" + default n + help + Ensure the DAC interrupt is IRAM-Safe by allowing the interrupt handler to be + executable when the cache is disabled (e.g. SPI Flash write). + + config DAC_SUPPRESS_DEPRECATE_WARN + bool "Suppress legacy driver deprecated warning" + default n + help + Wether to suppress the deprecation warnings when using legacy DAC driver (driver/DAC.h). + If you want to continue using the legacy driver, and don't want to see related deprecation warnings, + you can enable this option. + + config DAC_ENABLE_DEBUG_LOG + bool "Enable debug log" + default n + help + Wether to enable the debug log message for DAC driver. + Note that, this option only controls the DAC driver log, won't affect other drivers. + endmenu # DAC Configuration + endmenu # Driver configurations diff --git a/components/driver/dac.c b/components/driver/dac.c new file mode 100644 index 0000000000..75cc6e220c --- /dev/null +++ b/components/driver/dac.c @@ -0,0 +1,643 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" +#include "freertos/semphr.h" + +#include "sdkconfig.h" + +#include "soc/soc_caps.h" +#include "soc/lldesc.h" +#include "soc/dac_periph.h" +#include "hal/dac_types.h" +#include "hal/dac_ll.h" +#include "driver/rtc_io.h" +#include "driver/dac_new.h" +#include "esp_private/dac_dma.h" + +#include "esp_check.h" + +#define DAC_DMA_MAX_BUF_SIZE 4092 +#if CONFIG_DAC_ISR_IRAM_SAFE + #define DAC_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_INTRDISABLED | ESP_INTR_FLAG_SHARED) + #define DAC_MEM_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT) +#else + #define DAC_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_INTRDISABLED | ESP_INTR_FLAG_SHARED) + #define DAC_MEM_ALLOC_CAPS MALLOC_CAP_DEFAULT +#endif +#define DAC_DMA_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_DMA) + +typedef enum { + DAC_STATE_INITIAL, /* Initial state, dac has been registered */ + DAC_STATE_OUTPUT_READY, /* DAC channels enabled and ready to output constant voltage */ + DAC_STATE_DMA_READY, /* DMA mode initialized, but not started */ + DAC_STATE_CW_READY, /* Cosine wave mode is initialized, but not started */ + DAC_STATE_DMA_RUNNING, /* DAC DMA dma is running, can't switch mode in this stage */ + DAC_STATE_CW_RUNNING, /* DAC cosine wave generator is running, can't switch mode in this stage */ +} dac_state_t; + +typedef struct { + QueueHandle_t msg_que; +#if CONFIG_DAC_ISR_IRAM_SAFE + StaticQueue_t *msg_que_struct; /*!< Static message queue struct */ + void *msg_que_storage; /*!< Static message queue storage */ +#endif + dac_dma_config_t cfg; + lldesc_t **desc; +} dac_dma_t; + +typedef struct dac_channel_chain_s { + dac_channel_t id; + struct dac_channel_chain_s *next; +} dac_channel_chain_t; + +struct dac_channel_group_s { + uint32_t chan_num; + dac_state_t state; + SemaphoreHandle_t mutex; +#if CONFIG_DAC_ISR_IRAM_SAFE + StaticSemaphore_t *mutex_struct; /*!< Static mutex struct */ +#endif +#if CONFIG_PM_ENABLE + esp_pm_lock_handle_t pm_lock; +#endif + bool is_enabled; + dac_dma_t dma; + dac_cosine_config_t sw_cfg; + dac_channel_chain_t *head; +}; + +typedef struct { + dac_channel_chain_t *chan[SOC_DAC_PERIPH_NUM]; +} dac_platform_t; + +static const char *TAG = "DAC"; + +static dac_platform_t s_dac = { + .chan = { + [0 ... SOC_DAC_PERIPH_NUM - 1] = NULL + }, +}; + +/* Global dac spin lock for the whole DAC driver */ +portMUX_TYPE dac_spinlock = portMUX_INITIALIZER_UNLOCKED; // TODO: check rtc_spinlock + +#define DAC_NULL_POINTER_CHECK(p) ESP_RETURN_ON_FALSE((p), ESP_ERR_INVALID_ARG, TAG, "input parameter '"#p"' is NULL") + +static void dac_free_dma_desc(dac_channel_group_handle_t handle) +{ + if (handle->dma.desc == NULL) { + return; + } + for (int i = 0; i < handle->dma.cfg.desc_num; i++) { + if (handle->dma.desc[i]) { + free(handle->dma.desc[i]); + handle->dma.desc[i] = NULL; + } + } + free(handle->dma.desc); + handle->dma.desc = NULL; +} + +static esp_err_t dac_alloc_dma_desc(dac_channel_group_handle_t handle) +{ + esp_err_t ret = ESP_OK; + + handle->dma.desc = (lldesc_t **) heap_caps_calloc(handle->dma.cfg.desc_num, sizeof(lldesc_t *), DAC_MEM_ALLOC_CAPS); + ESP_RETURN_ON_FALSE(handle->dma.desc, ESP_ERR_NO_MEM, TAG, "Faild to allocate dma descriptor buffer"); + for (int cnt = 0; cnt < handle->dma.cfg.desc_num; cnt++) { + /* Allocate DMA descpriptor */ + handle->dma.desc[cnt] = (lldesc_t *) heap_caps_calloc(1, sizeof(lldesc_t), DAC_DMA_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(handle->dma.desc[cnt], ESP_ERR_NO_MEM, err, TAG, "failed to allocate dma descriptor"); + } + + return ESP_OK; +err: + /* Free DMA buffer if failed to allocate memory */ + dac_free_dma_desc(handle); + return ret; +} + +static void IRAM_ATTR dac_default_intr_handler(void *arg) +{ + dac_channel_group_handle_t handle = (dac_channel_group_handle_t)arg; + uint32_t dummy; + BaseType_t need_awoke = pdFALSE; + BaseType_t tmp; + if (dac_dma_periph_intr_is_triggered()) { + lldesc_t *fdesc = (lldesc_t *)dac_dma_periph_intr_get_eof_desc(); + if (xQueueIsQueueFullFromISR(handle->dma.msg_que) == pdTRUE) { + xQueueReceiveFromISR(handle->dma.msg_que, &dummy, &tmp); + need_awoke |= tmp; + } + xQueueSendFromISR(handle->dma.msg_que, fdesc, &tmp); + need_awoke |= tmp; + } + if (need_awoke == pdTRUE) { + portYIELD_FROM_ISR(); + } +} + +static void dac_free_channel_chain(dac_channel_chain_t *head) +{ + if (head->next) { + dac_free_channel_chain(head->next); + } + s_dac.chan[head->id - 1] = NULL; + free(head); +} + +/*-------------------------------------------------------------------------- + DAC common APIs + ---------------------------------------------------------------------------*/ +esp_err_t dac_new_channel_group(const dac_group_config_t *dac_cfg, dac_channel_group_handle_t *handle) +{ + esp_err_t ret = ESP_OK; + + DAC_NULL_POINTER_CHECK(dac_cfg); + DAC_NULL_POINTER_CHECK(handle); + + ESP_RETURN_ON_FALSE((uint32_t)dac_cfg->chan_sel > 0, ESP_ERR_INVALID_ARG, TAG, "invalid DAC channel"); + ESP_RETURN_ON_FALSE((32 - __builtin_clz((uint32_t)dac_cfg->chan_sel)) <= SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "invalid DAC channel"); + + dac_channel_group_handle_t group = (dac_channel_group_handle_t)calloc(1, sizeof(struct dac_channel_group_s)); + ESP_RETURN_ON_FALSE(group, ESP_ERR_NO_MEM, TAG, "No memory for DAC channel group"); + group->chan_num = 0; + group->is_enabled = false; + group->state = DAC_STATE_INITIAL; // Set static output as default +#if CONFIG_DAC_ISR_IRAM_SAFE + group->mutex_struct = (StaticSemaphore_t *)heap_caps_calloc(1, sizeof(StaticSemaphore_t), DAC_MEM_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(group->mutex_struct, ESP_ERR_NO_MEM, err, TAG, "No memory for group mutex struct"); + group->mutex = xSemaphoreCreateMutexStatic(group->mutex_struct); +#else + group->mutex = xSemaphoreCreateMutex(); +#endif + ESP_GOTO_ON_FALSE(group->mutex, ESP_ERR_NO_MEM, err, TAG, "No memory for group mutex"); +#if CONFIG_PM_ENABLE + ESP_GOTO_ON_ERROR(esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_driver", &group->pm_lock), err, TAG, "Failed to create DAC pm lock"); +#endif + /* Register selected channels and link into a chain*/ + dac_channel_chain_t *temp = NULL; + for (uint32_t msk = (uint32_t)dac_cfg->chan_sel, i = 0; msk != 0; msk >>= 1, i++) { + if (msk & 0x01) { + /* Allocate memory for the channel when it is enabled */ + ESP_GOTO_ON_FALSE(!s_dac.chan[i], ESP_ERR_INVALID_STATE, err, TAG, "DAC channel %d has been registered already", i + 1); + dac_channel_chain_t *node = (dac_channel_chain_t *)calloc(1, sizeof(dac_channel_chain_t)); + ESP_GOTO_ON_FALSE(node, ESP_ERR_NO_MEM, err, TAG, "No memory for DAC channel object"); + node->id = i; + s_dac.chan[i] = node; + group->chan_num++; + /* Link the channel into a chain */ + if (!temp) { + temp = node; + group->head = node; + } else { + temp->next = node; + temp = temp->next; + } + } + } + + *handle = group; + + return ret; + +err: + /* Free the resource when error occurs */ + dac_del_channel_group(group); + group = NULL; + + return ret; +} + +esp_err_t dac_del_channel_group(dac_channel_group_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_INITIAL, ESP_ERR_INVALID_STATE, TAG, "This DAC group is not deinitialized"); + ESP_RETURN_ON_FALSE(!handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group is not disabled"); + + if (handle->mutex) { + vSemaphoreDelete(handle->mutex); + } +#if CONFIG_DAC_ISR_IRAM_SAFE + if (handle->mutex_struct) { + free(handle_mutex_struct); + } +#endif +#if CONFIG_PM_ENABLE + if (handle->pm_lock) { + esp_pm_lock_delete(handle->pm_lock); + handle->pm_lock = NULL; + } +#endif + if (handle->head) { + dac_free_channel_chain(handle->head); + } + free(handle); + + return ESP_OK; +} + +esp_err_t dac_channel_group_enable(dac_channel_group_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(!handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has been enabled already"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + + for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { + gpio_num_t gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[p->id]; + rtc_gpio_init(gpio_num); + rtc_gpio_set_direction(gpio_num, RTC_GPIO_MODE_DISABLED); + rtc_gpio_pullup_dis(gpio_num); + rtc_gpio_pulldown_dis(gpio_num); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_power_on(p->id); + dac_ll_rtc_sync_by_adc(false); + portEXIT_CRITICAL(&dac_spinlock); + } + handle->is_enabled = true; + /* If the group has not been intialized to other mode, set it `DAC_STATE_OUTPUT_READY` as default */ + if (handle->state == DAC_STATE_INITIAL) { + handle->state = DAC_STATE_OUTPUT_READY; + } + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channel_group_disable(dac_channel_group_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled yet"); + ESP_RETURN_ON_FALSE(handle->state < DAC_STATE_DMA_RUNNING, ESP_ERR_INVALID_STATE, TAG, "This DAC group is still running"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { + gpio_num_t gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[p->id]; + rtc_gpio_deinit(gpio_num); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_power_down(p->id); + portEXIT_CRITICAL(&dac_spinlock); + } + handle->is_enabled = false; + /* If the group has not been intialized to other mode, set it `DAC_STATE_INITIAL` as default */ + if (handle->state == DAC_STATE_OUTPUT_READY) { + handle->state = DAC_STATE_INITIAL; + } + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +/*-------------------------------------------------------------------------- + DAC constant voltage outputting APIs + ---------------------------------------------------------------------------*/ +esp_err_t dac_channel_group_output_constant_voltage(dac_channel_group_handle_t handle, uint8_t value) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_OUTPUT_READY, ESP_ERR_INVALID_STATE, TAG, "This DAC group has been configured to other mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + /* Set the constant voltage for each channel in the group */ + for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { + portENTER_CRITICAL(&dac_spinlock); + dac_ll_update_output_value(p->id, value); + portEXIT_CRITICAL(&dac_spinlock); + } + xSemaphoreGive(handle->mutex); + return ESP_OK; +} + +/*-------------------------------------------------------------------------- + DAC DMA outputting APIs + ---------------------------------------------------------------------------*/ +esp_err_t dac_channel_group_init_dma_output(dac_channel_group_handle_t handle, const dac_dma_config_t *dma_cfg) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->state < DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, "This DAC group has been initialized already"); + + esp_err_t ret = ESP_OK; + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + +#if CONFIG_DAC_ISR_IRAM_SAFE + handle->dma.msg_que_storage = (uint8_t *)heap_caps_calloc(desc_num - 1, sizeof(lldesc_t *), I2S_MEM_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(handle->dma.msg_que_storage, ESP_ERR_NO_MEM, err, TAG, "No memory for message queue storage"); + handle->dma.msg_que_struct = (StaticQueue_t *)heap_caps_calloc(1, sizeof(StaticQueue_t), I2S_MEM_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(handle->dma.msg_que_storage, ESP_ERR_NO_MEM, err, TAG, "No memory for message queue struct"); + handle->dma.msg_queue = xQueueCreateStatic(desc_num - 1, sizeof(lldesc_t *), handle->dma.msg_que_storage, handle->dma.msg_que_struct); +#else + handle->dma.msg_que = xQueueCreate(dma_cfg->desc_num - 1, sizeof(lldesc_t *)); +#endif + ESP_GOTO_ON_FALSE(handle->dma.msg_que, ESP_ERR_NO_MEM, err3, TAG, "No memory for message queue"); + /* Allocate DMA buffer */ + memcpy(&(handle->dma.cfg), dma_cfg, sizeof(dac_dma_config_t)); + ESP_GOTO_ON_ERROR(dac_alloc_dma_desc(handle), err2, TAG, "Failed to allocate memory for DMA buffers"); + + /* Initialize DAC DMA peripheral */ + ESP_GOTO_ON_ERROR(dac_dma_periph_init(handle->chan_num, dma_cfg->freq_hz, dma_cfg->chan_mode == DAC_CHANNEL_ALTERNATE), err2, TAG, "Failed to initialize DAC DMA peripheral"); + /* Register DMA interrupt */ + ESP_GOTO_ON_ERROR(dac_dma_periph_register_intr(dac_default_intr_handler, handle), err1, TAG, "Failed to register DMA interrupt"); + /* Connect DAC module to the DMA peripheral */ + portENTER_CRITICAL(&dac_spinlock); + dac_ll_digi_enable_dma(true); + portEXIT_CRITICAL(&dac_spinlock); + + handle->state = DAC_STATE_DMA_READY; + + xSemaphoreGive(handle->mutex); + + return ret; +err1: + dac_dma_periph_deinit(); +err2: + dac_free_dma_desc(handle); +err3: + if (handle->dma.msg_que) { + vQueueDelete(handle->dma.msg_que); + } +#if CONFIG_DAC_ISR_IRAM_SAFE + if (handle->dma.msq_que_struct) { + free(handle->dma.msq_que_struct); + } + if (handle->dma.msq_que_storage) { + free(handle->dma.msq_que_storage); + } +#endif + xSemaphoreGive(handle->mutex); + return ret; +} + +esp_err_t dac_channel_group_deinit_dma_output(dac_channel_group_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, + "This DAC group is still running or has been configured to other mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + + /* Free DMA buffer */ + dac_free_dma_desc(handle); + + /* Deregister DMA interrupt */ + ESP_RETURN_ON_ERROR(dac_dma_periph_deregister_intr(), TAG, "Failed to deregister DMA interrupt"); + /* Deinitialize DMA peripheral */ + ESP_RETURN_ON_ERROR(dac_dma_periph_deinit(), TAG, "Failed to deinitialize DAC DMA peripheral"); + /* Disconnect DAC module to the DMA peripheral */ + portENTER_CRITICAL(&dac_spinlock); + dac_ll_digi_enable_dma(false); + portEXIT_CRITICAL(&dac_spinlock); + + if (handle->is_enabled) { + handle->state = DAC_STATE_OUTPUT_READY; + } else { + handle->state = DAC_STATE_INITIAL; + } + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channel_group_start_dma_output(dac_channel_group_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, + "This DAC group has started already or not working at DMA mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); +#ifdef CONFIG_PM_ENABLE + esp_pm_lock_acquire(handle->pm_lock); +#endif + dac_dma_periph_enable(); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_digi_enable_dma(true); + portEXIT_CRITICAL(&dac_spinlock); + handle->state = DAC_STATE_DMA_RUNNING; + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channel_group_stop_dma_output(dac_channel_group_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_RUNNING, ESP_ERR_INVALID_STATE, TAG, + "This DAC group has stopped already or not working at DMA mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + dac_dma_periph_disable(); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_digi_enable_dma(false); + portEXIT_CRITICAL(&dac_spinlock); +#ifdef CONFIG_PM_ENABLE + esp_pm_lock_release(handle->pm_lock); +#endif + handle->state = DAC_STATE_DMA_READY; + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +static uint32_t dac_load_dma_data(lldesc_t *desc, uint8_t *data, uint32_t size) +{ + uint32_t byte_to_load = size > DAC_DMA_MAX_BUF_SIZE ? DAC_DMA_MAX_BUF_SIZE : size; + desc->owner = 1; + desc->eof = 1; + desc->sosf = 0; + desc->length = byte_to_load; + desc->size = byte_to_load; + desc->buf = data; + desc->offset = 0; + return byte_to_load; +} +// TODO: wait until all data sent or all data loaded? If all data loaded, need to monitor end of frame +esp_err_t dac_channel_group_write_acyclicly(dac_channel_group_handle_t handle, uint8_t *buf, size_t buf_size, uint32_t timeout_ms) +{ + DAC_NULL_POINTER_CHECK(handle); + DAC_NULL_POINTER_CHECK(buf); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_RUNNING, ESP_ERR_INVALID_STATE, TAG, "This DAC group is not started"); +#if CONFIG_DAC_ISR_IRAM_SAFE + ESP_RETURN_ON_ERROR(esp_ptr_internal(buf), ESP_ERR_INVALID_ARG, err, TAG, "the buffer is not in internal RAM"); +#endif + + esp_err_t ret = ESP_OK; + ESP_RETURN_ON_FALSE(xSemaphoreTake(handle->mutex, pdMS_TO_TICKS(timeout_ms) == pdTRUE), ESP_ERR_TIMEOUT, TAG, "Take semaphore timeout"); + /* Reset the queue to drop the legacy descriptors */ + xQueueReset(handle->dma.msg_que); + /* Break the legacy descriptor chain for the new data */ + for (int i=0; i < handle->dma.cfg.desc_num; i++) { + handle->dma.desc[i]->empty = 0; + } + /* Pre-load data to DMA */ + size_t index = 0; + uint32_t pending_desc_cnt = 0; + for (int i = 0; i < handle->dma.cfg.desc_num && index < buf_size; i++, pending_desc_cnt++) { + index += dac_load_dma_data(handle->dma.desc[i], &buf[index], buf_size - index); + /* Link to the previous descriptor */ + if (i > 0) { + handle->dma.desc[i-1]->empty = (uint32_t)handle->dma.desc[i]; + } + } + /* Link the start and end desc as a ring if the buffer not loaded conmpletely */ + handle->dma.desc[pending_desc_cnt-1]->empty = index < buf_size ? (uint32_t)handle->dma.desc[0] : 0; + dac_dma_periph_dma_trans_start((uint32_t)handle->dma.desc[0]); + /* Wait until all data be sent */ + for (lldesc_t *finish_desc = NULL; pending_desc_cnt > 0; pending_desc_cnt--) { + ESP_GOTO_ON_FALSE(xQueueReceive(handle->dma.msg_que, &finish_desc, pdMS_TO_TICKS(timeout_ms)) == pdTRUE, + ESP_ERR_TIMEOUT, err, TAG, "Receive message queue timeout"); + /* Load those unsent data */ + if (index < buf_size) { + index += dac_load_dma_data(finish_desc, &buf[index], buf_size - index); + pending_desc_cnt++; + /* If all date loaded, break the ring desc */ + if (index >= buf_size) { + finish_desc->empty = 0; + } + } + } +err: + xSemaphoreGive(handle->mutex); + return ret; +} + +esp_err_t dac_channel_group_write_cyclicly(dac_channel_group_handle_t handle, uint8_t *buf, size_t buf_size, uint32_t timeout_ms) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_RUNNING, ESP_ERR_INVALID_STATE, TAG, "This DAC group is not started"); + ESP_RETURN_ON_FALSE(buf_size < (DAC_DMA_MAX_BUF_SIZE * handle->dma.cfg.desc_num), + ESP_ERR_INVALID_ARG, TAG, "The cyclic buffer size exceeds the total DMA buffer size: desc_num * %d = %d", + DAC_DMA_MAX_BUF_SIZE, DAC_DMA_MAX_BUF_SIZE * handle->dma.cfg.desc_num); +#if CONFIG_DAC_ISR_IRAM_SAFE + ESP_RETURN_ON_ERROR(esp_ptr_internal(buf), ESP_ERR_INVALID_ARG, err, TAG, "the buffer is not in internal RAM"); +#endif + ESP_RETURN_ON_FALSE(xSemaphoreTake(handle->mutex, pdMS_TO_TICKS(timeout_ms) == pdTRUE), ESP_ERR_TIMEOUT, TAG, "Take semaphore timeout"); + /* If the buffer size is small, split it into two descriptors */ + if (buf_size > DAC_DMA_MAX_BUF_SIZE) { + size_t index = 0; + int i = 0; + for (i = 0; (i < handle->dma.cfg.desc_num) && (index < buf_size); i++) { + index += dac_load_dma_data(handle->dma.desc[i], &buf[index], buf_size - index); + /* Link to the previous descriptor */ + if (i > 0) { + handle->dma.desc[i-1]->empty = (uint32_t)handle->dma.desc[i]; + } + } + /* Link as a loop */ + handle->dma.desc[i-1]->empty = (uint32_t)handle->dma.desc[0]; + } + /* If the buffer size is small, split it into two descriptors */ + else { + uint32_t half = buf_size / 2; + dac_load_dma_data(handle->dma.desc[0], buf, half); + dac_load_dma_data(handle->dma.desc[1], &buf[half], buf_size - half); + handle->dma.desc[0]->empty = (uint32_t)handle->dma.desc[1]; + handle->dma.desc[1]->empty = (uint32_t)handle->dma.desc[0]; + } + dac_dma_periph_dma_trans_start((uint32_t)handle->dma.desc[0]); + xSemaphoreGive(handle->mutex); + return ESP_OK; +} + +/*-------------------------------------------------------------------------- + DAC cosine wave outputting APIs + ---------------------------------------------------------------------------*/ +esp_err_t dac_channel_group_init_cosine_output(dac_channel_group_handle_t handle, const dac_cosine_config_t *cw_cfg) +{ + DAC_NULL_POINTER_CHECK(handle); + DAC_NULL_POINTER_CHECK(cw_cfg); + ESP_RETURN_ON_FALSE((handle->state == DAC_STATE_INITIAL) | (handle->state == DAC_STATE_OUTPUT_READY), + ESP_ERR_INVALID_STATE, TAG, "This DAC group has been initialized already"); + ESP_RETURN_ON_FALSE(cw_cfg->freq_hz >= 130, ESP_ERR_NOT_SUPPORTED, TAG, "The cosine wave generator doesn't support frequency below 130 Hz"); + ESP_RETURN_ON_FALSE(cw_cfg->freq_hz <= 55000, ESP_ERR_NOT_SUPPORTED, TAG, "The cosine wave generator doesn't support frequency beyond 55000 Hz"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + portENTER_CRITICAL(&dac_spinlock); + for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { + /* Connect DAC module to cosine wave generator */ + dac_ll_cw_set_channel(p->id, true); + /* Set coefficients for cosine wave generator */ + dac_ll_cw_set_freq(cw_cfg->freq_hz); + dac_ll_cw_set_scale(p->id, cw_cfg->scale); + dac_ll_cw_set_phase(p->id, cw_cfg->phase); + dac_ll_cw_set_dc_offset(p->id, cw_cfg->offset); + } + portEXIT_CRITICAL(&dac_spinlock); + handle->state = DAC_STATE_CW_READY; + xSemaphoreGive(handle->mutex); + return ESP_OK; +} + +esp_err_t dac_channel_group_deinit_cosine_output(dac_channel_group_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_READY, ESP_ERR_INVALID_STATE, TAG, + "This DAC group is still running or not working at cosine wave mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + portENTER_CRITICAL(&dac_spinlock); + for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { + /* Disonnect DAC module to cosine wave generator */ + dac_ll_cw_set_channel(p->id, false); + } + portEXIT_CRITICAL(&dac_spinlock); + if (handle->is_enabled) { + handle->state = DAC_STATE_OUTPUT_READY; + } else { + handle->state = DAC_STATE_INITIAL; + } + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channel_group_start_cosine_output(dac_channel_group_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_READY, ESP_ERR_INVALID_STATE, TAG, + "This DAC group has started already or not working at cosine wave mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); +#ifdef CONFIG_PM_ENABLE + esp_pm_lock_acquire(handle->pm_lock); +#endif + portENTER_CRITICAL(&dac_spinlock); + dac_ll_cw_generator_enable(); + portEXIT_CRITICAL(&dac_spinlock); + handle->state = DAC_STATE_CW_RUNNING; + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channel_group_stop_cosine_output(dac_channel_group_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_RUNNING, ESP_ERR_INVALID_STATE, TAG, + "This DAC group has stopped already or not working at cosine wave mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_cw_generator_disable(); + portEXIT_CRITICAL(&dac_spinlock); +#ifdef CONFIG_PM_ENABLE + esp_pm_lock_release(handle->pm_lock); +#endif + handle->state = DAC_STATE_CW_READY; + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} diff --git a/components/driver/dac_common.c b/components/driver/deprecated/dac_common_legacy.c similarity index 92% rename from components/driver/dac_common.c rename to components/driver/deprecated/dac_common_legacy.c index 9ccf89ada2..ee8744f24a 100644 --- a/components/driver/dac_common.c +++ b/components/driver/deprecated/dac_common_legacy.c @@ -16,6 +16,7 @@ #include "driver/dac.h" #include "soc/dac_periph.h" #include "hal/dac_hal.h" +#include "hal/dac_types.h" extern portMUX_TYPE rtc_spinlock; //TODO: Will be placed in the appropriate position after the rtc module is finished. @@ -116,7 +117,11 @@ esp_err_t dac_cw_generator_config(dac_cw_config_t *cw) ESP_RETURN_ON_FALSE(cw, ESP_ERR_INVALID_ARG, TAG, "invalid clock configuration"); portENTER_CRITICAL(&rtc_spinlock); - dac_hal_cw_generator_config(cw); + dac_ll_cw_set_freq(cw->freq); + dac_ll_cw_set_scale(cw->en_ch, cw->scale); + dac_ll_cw_set_phase(cw->en_ch, cw->phase); + dac_ll_cw_set_dc_offset(cw->en_ch, cw->offset); + dac_ll_cw_set_channel(cw->en_ch, true); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; diff --git a/components/driver/include/driver/dac_common.h b/components/driver/deprecated/driver/dac_common.h similarity index 98% rename from components/driver/include/driver/dac_common.h rename to components/driver/deprecated/driver/dac_common.h index f0f2ecadae..a5e6e2b5e0 100644 --- a/components/driver/include/driver/dac_common.h +++ b/components/driver/deprecated/driver/dac_common.h @@ -13,7 +13,7 @@ extern "C" { #include #include "esp_err.h" #include "driver/gpio.h" -#include "hal/dac_types.h" +#include "driver/dac_types_legacy.h" /** * @brief Get the GPIO number of a specific DAC channel. diff --git a/components/driver/deprecated/driver/dac_types_legacy.h b/components/driver/deprecated/driver/dac_types_legacy.h new file mode 100644 index 0000000000..af77e377f1 --- /dev/null +++ b/components/driver/deprecated/driver/dac_types_legacy.h @@ -0,0 +1,30 @@ +/* + * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "driver/dac_types.h" +#include "hal/dac_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Config the cosine wave generator function in DAC module. + */ +typedef struct { + dac_channel_t en_ch; /*!< Enable the cosine wave generator of DAC channel. */ + dac_cw_scale_t scale; /*!< Set the amplitude of the cosine wave generator output. */ + dac_cw_phase_t phase; /*!< Set the phase of the cosine wave generator output. */ + uint32_t freq; /*!< Set frequency of cosine wave generator output. Range: 130(130Hz) ~ 55000(100KHz). */ + int8_t offset; /*!< Set the voltage value of the DC component of the cosine wave generator output. + Note: Unreasonable settings can cause waveform to be oversaturated. Range: -128 ~ 127. */ +} dac_cw_config_t; + +#ifdef __cplusplus +} +#endif diff --git a/components/driver/esp32/dac.c b/components/driver/deprecated/esp32/dac_legacy.c similarity index 100% rename from components/driver/esp32/dac.c rename to components/driver/deprecated/esp32/dac_legacy.c diff --git a/components/driver/esp32/include/driver/dac.h b/components/driver/deprecated/esp32/driver/dac.h similarity index 100% rename from components/driver/esp32/include/driver/dac.h rename to components/driver/deprecated/esp32/driver/dac.h diff --git a/components/driver/deprecated/esp32s2/dac_legacy.c b/components/driver/deprecated/esp32s2/dac_legacy.c new file mode 100644 index 0000000000..b10ee0c125 --- /dev/null +++ b/components/driver/deprecated/esp32s2/dac_legacy.c @@ -0,0 +1,132 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + + +#include +#include "esp_log.h" +#include "esp_err.h" +#include "esp_check.h" +#include "esp_pm.h" +#include "freertos/FreeRTOS.h" +#include "freertos/semphr.h" +#include "freertos/timers.h" +#include "driver/rtc_io.h" +#include "driver/dac.h" +#include "soc/dac_periph.h" +#include "hal/dac_hal.h" + +static __attribute__((unused)) const char *TAG = "DAC"; + +extern portMUX_TYPE rtc_spinlock; //TODO: Will be placed in the appropriate position after the rtc module is finished. +#define DAC_ENTER_CRITICAL() portENTER_CRITICAL(&rtc_spinlock) +#define DAC_EXIT_CRITICAL() portEXIT_CRITICAL(&rtc_spinlock) + +#ifdef CONFIG_PM_ENABLE +static esp_pm_lock_handle_t s_dac_digi_lock = NULL; +#endif //CONFIG_PM_ENABLE + +/*--------------------------------------------------------------- + Digital controller setting +---------------------------------------------------------------*/ + +esp_err_t dac_digi_init(void) +{ + DAC_ENTER_CRITICAL(); + dac_hal_digi_init(); + DAC_EXIT_CRITICAL(); + + return ESP_OK; +} + +esp_err_t dac_digi_deinit(void) +{ +#ifdef CONFIG_PM_ENABLE + if (s_dac_digi_lock) { + esp_pm_lock_delete(s_dac_digi_lock); + s_dac_digi_lock = NULL; + } +#endif + DAC_ENTER_CRITICAL(); + dac_hal_digi_deinit(); + DAC_EXIT_CRITICAL(); + + return ESP_OK; +} + +esp_err_t dac_digi_controller_config(const dac_digi_config_t *cfg) +{ + ESP_RETURN_ON_FALSE(cfg->mode <= DAC_CONV_ALTER, ESP_ERR_INVALID_ARG, TAG, "DAC mode error"); + ESP_RETURN_ON_FALSE(cfg->interval > 0 && cfg->interval < 4096, ESP_ERR_INVALID_ARG, TAG, "DAC interval error"); + ESP_RETURN_ON_FALSE(cfg->dig_clk.div_num < 256, ESP_ERR_INVALID_ARG, TAG, "DAC clk div_num error"); + ESP_RETURN_ON_FALSE(cfg->dig_clk.div_b > 0 && cfg->dig_clk.div_b < 64, ESP_ERR_INVALID_ARG, TAG, "DAC clk div_b error"); + ESP_RETURN_ON_FALSE(cfg->dig_clk.div_a < 64, ESP_ERR_INVALID_ARG, TAG, "DAC clk div_a error"); +#ifdef CONFIG_PM_ENABLE + esp_err_t err; + if (s_dac_digi_lock == NULL) { + if (cfg->dig_clk.use_apll) { + err = esp_pm_lock_create(ESP_PM_NO_LIGHT_SLEEP, 0, "dac_dma", &s_dac_digi_lock); + } else { + err = esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_dma", &s_dac_digi_lock); + } + if (err != ESP_OK) { + s_dac_digi_lock = NULL; + ESP_LOGE(TAG, "DAC-DMA pm lock error"); + return err; + } + } +#endif //CONFIG_PM_ENABLE + + DAC_ENTER_CRITICAL(); + dac_hal_digi_controller_config(cfg); + DAC_EXIT_CRITICAL(); + + return ESP_OK; +} + +esp_err_t dac_digi_start(void) +{ +#ifdef CONFIG_PM_ENABLE + ESP_RETURN_ON_FALSE(s_dac_digi_lock, ESP_FAIL, TAG, "Should start after call `dac_digi_controller_config`"); + esp_pm_lock_acquire(s_dac_digi_lock); +#endif + DAC_ENTER_CRITICAL(); + dac_hal_digi_start(); + DAC_EXIT_CRITICAL(); + + return ESP_OK; +} + +esp_err_t dac_digi_stop(void) +{ +#ifdef CONFIG_PM_ENABLE + if (s_dac_digi_lock) { + esp_pm_lock_release(s_dac_digi_lock); + } +#endif + DAC_ENTER_CRITICAL(); + dac_hal_digi_stop(); + DAC_EXIT_CRITICAL(); + + return ESP_OK; +} + +esp_err_t dac_digi_fifo_reset(void) +{ + DAC_ENTER_CRITICAL(); + dac_hal_digi_fifo_reset(); + DAC_EXIT_CRITICAL(); + + return ESP_OK; +} + +esp_err_t dac_digi_reset(void) +{ + DAC_ENTER_CRITICAL(); + dac_hal_digi_reset(); + DAC_EXIT_CRITICAL(); + + return ESP_OK; +} diff --git a/components/driver/deprecated/esp32s2/driver/dac.h b/components/driver/deprecated/esp32s2/driver/dac.h new file mode 100644 index 0000000000..39f3e7e068 --- /dev/null +++ b/components/driver/deprecated/esp32s2/driver/dac.h @@ -0,0 +1,73 @@ +/* + * SPDX-FileCopyrightText: 2019-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "driver/dac_common.h" + +#ifdef __cplusplus +extern "C" { +#endif +/*--------------------------------------------------------------- + Digital controller setting +---------------------------------------------------------------*/ + +/** + * @brief DAC digital controller initialization. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_init(void); + +/** + * @brief DAC digital controller deinitialization. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_deinit(void); + +/** + * @brief Setting the DAC digital controller. + * + * @param cfg Pointer to digital controller paramter. See ``dac_digi_config_t``. + * + * @return + * - ESP_OK success + * - ESP_ERR_INVALID_ARG Parameter error + */ +esp_err_t dac_digi_controller_config(const dac_digi_config_t *cfg); + +/** + * @brief DAC digital controller start output voltage. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_start(void); + +/** + * @brief DAC digital controller stop output voltage. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_stop(void); + +/** + * @brief Reset DAC digital controller FIFO. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_fifo_reset(void); + +/** + * @brief Reset DAC digital controller. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_reset(void); + +#ifdef __cplusplus +} +#endif diff --git a/components/driver/esp32/dac_dma.c b/components/driver/esp32/dac_dma.c new file mode 100644 index 0000000000..e043f248a0 --- /dev/null +++ b/components/driver/esp32/dac_dma.c @@ -0,0 +1,187 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "freertos/FreeRTOS.h" + + +#include "hal/i2s_ll.h" +#include "hal/i2s_types.h" +#include "soc/i2s_periph.h" +#include "esp_private/dac_dma.h" +#include "esp_private/i2s_platform.h" + +#include "esp_check.h" + +#define DAC_DMA_PERIPH_I2S_NUM 0 +#define DAC_DMA_PERIPH_I2S_BIT_WIDTH 8 + +typedef struct { + void *periph_dev; /* DMA peripheral device address */ + intr_handle_t intr_handle; /* Interrupt handle */ +} dac_dma_periph_i2s_t; + +static dac_dma_periph_i2s_t *s_ddp = NULL; // Static DAC DMA peripheral structure pointer + +static const char *TAG = "DAC_DMA"; + +extern portMUX_TYPE dac_spinlock; /* Global DAC spinlock */ + +static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz){ + /* Calculate clock coefficients */ + uint32_t bclk = freq_hz * I2S_LL_AD_BCK_FACTOR; + uint32_t bclk_div = DAC_DMA_PERIPH_I2S_BIT_WIDTH; + uint32_t mclk = bclk * bclk_div; + uint32_t sclk = I2S_LL_BASE_CLK; // use PLL clock as default + uint32_t mclk_div = sclk / mclk; + + /* Check if the configuration is correct */ + // TODO: expand the frequency range + ESP_RETURN_ON_FALSE(sclk / (float)mclk > 1.99, ESP_ERR_INVALID_ARG, TAG, "Frequency is too large, the mclk division is below minimum value 2"); + ESP_RETURN_ON_FALSE(mclk_div < 256, ESP_ERR_INVALID_ARG, TAG, "Frequency is too small, the mclk division exceed the maximum value 255"); + + portENTER_CRITICAL(&dac_spinlock); + i2s_ll_tx_clk_set_src(s_ddp->periph_dev, I2S_CLK_D2CLK); + i2s_ll_tx_set_mclk(s_ddp->periph_dev, sclk, mclk, mclk_div); + i2s_ll_tx_set_bck_div_num(s_ddp->periph_dev, bclk_div); + portEXIT_CRITICAL(&dac_spinlock); + + return ESP_OK; +} + +esp_err_t dac_dma_periph_init(int chan_num, uint32_t freq_hz, bool is_alternate) +{ + esp_err_t ret = ESP_OK; + /* Acquire DMA peripheral */ + ESP_RETURN_ON_ERROR(i2s_priv_register_object("dac_dma", DAC_DMA_PERIPH_I2S_NUM), TAG, "Failed to acquire DAC DMA peripheral"); + /* Allocate DAC DMA peripheral object */ + s_ddp = (dac_dma_periph_i2s_t *)calloc(1, sizeof(dac_dma_periph_i2s_t)); + ESP_GOTO_ON_FALSE(s_ddp, ESP_ERR_NO_MEM, err, TAG, "No memory for DAC DMA object"); + s_ddp->periph_dev = (void *)I2S_LL_GET_HW(DAC_DMA_PERIPH_I2S_NUM); + + ESP_GOTO_ON_ERROR(dac_dma_periph_set_clock(freq_hz), err, TAG, "Failed to set clock of DMA peripheral"); + + portENTER_CRITICAL(&dac_spinlock); + i2s_ll_tx_reset(s_ddp->periph_dev); + i2s_ll_tx_set_slave_mod(s_ddp->periph_dev, false); + i2s_ll_tx_set_sample_bit(s_ddp->periph_dev, DAC_DMA_PERIPH_I2S_BIT_WIDTH, DAC_DMA_PERIPH_I2S_BIT_WIDTH); + i2s_ll_tx_enable_mono_mode(s_ddp->periph_dev, !is_alternate); + i2s_ll_tx_enable_msb_shift(s_ddp->periph_dev, false); + i2s_ll_tx_set_ws_width(s_ddp->periph_dev, DAC_DMA_PERIPH_I2S_BIT_WIDTH); + i2s_ll_tx_enable_msb_right(s_ddp->periph_dev, false); + i2s_ll_tx_enable_right_first(s_ddp->periph_dev, true); + /* Should always enable fifo */ + i2s_ll_tx_force_enable_fifo_mod(s_ddp->periph_dev, true); + portEXIT_CRITICAL(&dac_spinlock); + + return ret; +err: + dac_dma_periph_deinit(); + return ret; +} + +esp_err_t dac_dma_periph_deinit(void) +{ + ESP_RETURN_ON_ERROR(i2s_priv_deregister_object(DAC_DMA_PERIPH_I2S_NUM), TAG, "Failed to release DAC DMA peripheral"); + if (s_ddp) { + if (s_ddp->intr_handle) { + dac_dma_periph_deregister_intr(); + } + free(s_ddp); + s_ddp = NULL; + } + + return ESP_OK; +} + +esp_err_t dac_dma_periph_register_intr(intr_handler_t intr_handler_func, void *user_ctx) +{ + ESP_RETURN_ON_FALSE(s_ddp, ESP_ERR_INVALID_STATE, TAG, "DAC DMA peripheral has not initialized yet"); + /* Regigster interrupt */ + ESP_RETURN_ON_ERROR(esp_intr_alloc(i2s_periph_signal[DAC_DMA_PERIPH_I2S_NUM].irq, ESP_INTR_FLAG_LEVEL1, + intr_handler_func, user_ctx, &(s_ddp->intr_handle)), + TAG, "Failed to register DAC DMA interrupt"); + portENTER_CRITICAL(&dac_spinlock); + i2s_ll_enable_intr(s_ddp->periph_dev, I2S_LL_EVENT_TX_EOF, true); + portEXIT_CRITICAL(&dac_spinlock); + return ESP_OK; +} + +esp_err_t dac_dma_periph_deregister_intr(void) +{ + ESP_RETURN_ON_FALSE(s_ddp, ESP_ERR_INVALID_STATE, TAG, "DAC DMA peripheral has not initialized yet"); + if (s_ddp->intr_handle) { + portENTER_CRITICAL(&dac_spinlock); + i2s_ll_enable_intr(s_ddp->periph_dev, I2S_LL_EVENT_TX_EOF, false); + portEXIT_CRITICAL(&dac_spinlock); + esp_intr_free(s_ddp->intr_handle); + s_ddp->intr_handle = NULL; + } + return ESP_OK; +} + +void dac_dma_periph_enable(void) +{ + portENTER_CRITICAL(&dac_spinlock); + /* Reset */ + i2s_ll_tx_reset(s_ddp->periph_dev); + i2s_ll_tx_reset_dma(s_ddp->periph_dev); + i2s_ll_tx_reset_fifo(s_ddp->periph_dev); + /* Start */ + i2s_ll_enable_dma(s_ddp->periph_dev,true); + i2s_ll_tx_enable_intr(s_ddp->periph_dev); + // i2s_ll_tx_start_link(s_ddp->periph_dev, (uint32_t)desc_addr); + // i2s_ll_tx_start(s_ddp->periph_dev); + portEXIT_CRITICAL(&dac_spinlock); + /* Enable interrupt */ + esp_intr_enable(s_ddp->intr_handle); +} + +void dac_dma_periph_disable(void) +{ + portENTER_CRITICAL(&dac_spinlock); + /* Reset */ + i2s_ll_tx_reset(s_ddp->periph_dev); + i2s_ll_tx_reset_dma(s_ddp->periph_dev); + i2s_ll_tx_reset_fifo(s_ddp->periph_dev); + /* Stop */ + i2s_ll_tx_stop(s_ddp->periph_dev); + i2s_ll_tx_stop_link(s_ddp->periph_dev); + i2s_ll_tx_disable_intr(s_ddp->periph_dev); + i2s_ll_enable_dma(s_ddp->periph_dev, false); + portEXIT_CRITICAL(&dac_spinlock); + /* Disable interrupt */ + esp_intr_disable(s_ddp->intr_handle); +} + +bool inline dac_dma_periph_intr_is_triggered(void) +{ + uint32_t status = i2s_ll_get_intr_status(s_ddp->periph_dev); + if (status == 0) { + //Avoid spurious interrupt + return false; + } + i2s_ll_clear_intr_status(s_ddp->periph_dev, status); + return (status & I2S_LL_EVENT_TX_EOF) != 0; +} + +uint32_t inline dac_dma_periph_intr_get_eof_desc(void) +{ + uint32_t finish_desc; + i2s_ll_tx_get_eof_des_addr(s_ddp->periph_dev, &finish_desc); + return finish_desc; +} + +void inline dac_dma_periph_dma_trans_start(uint32_t desc_addr) +{ + portENTER_CRITICAL(&dac_spinlock); + // TODO: check whether need to reset + i2s_ll_tx_reset(s_ddp->periph_dev); + i2s_ll_tx_reset_dma(s_ddp->periph_dev); + i2s_ll_tx_reset_fifo(s_ddp->periph_dev); + i2s_ll_tx_start_link(s_ddp->periph_dev, desc_addr); + i2s_ll_tx_start(s_ddp->periph_dev); + portEXIT_CRITICAL(&dac_spinlock); +} diff --git a/components/driver/esp32s2/dac.c b/components/driver/esp32s2/dac.c deleted file mode 100644 index 19688fa41f..0000000000 --- a/components/driver/esp32s2/dac.c +++ /dev/null @@ -1,414 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - - -#include -#include "esp_log.h" -#include "esp_err.h" -#include "esp_check.h" -#include "esp_pm.h" -#include "esp_check.h" -#include "freertos/FreeRTOS.h" -#include "freertos/semphr.h" -#include "freertos/timers.h" -#include "freertos/queue.h" -#include "driver/rtc_io.h" -#include "driver/dac.h" -#include "soc/dac_periph.h" -#include "soc/lldesc.h" -#include "hal/dac_hal.h" -#include "periph_ctrl.h" -#include "driver/spi_common_internal.h" - -static const char *DAC_TAG = "DAC"; - -/* On ESP32-S2, DAC-DMA shares the SPI3-DMA channel */ -#define DAC_USE_SPI3_DMA_CHANNEL SPI3_HOST - -extern portMUX_TYPE rtc_spinlock; //TODO: Will be placed in the appropriate position after the rtc module is finished. -#define DAC_ENTER_CRITICAL() portENTER_CRITICAL(&rtc_spinlock) -#define DAC_EXIT_CRITICAL() portEXIT_CRITICAL(&rtc_spinlock) - -typedef struct { - bool intr_trigger; - uint8_t *data; - uint32_t data_len; -} dac_dma_event_t; - -typedef struct { - dac_hal_context_t *hal; /*!< HAL pointer of DAC */ - QueueHandle_t que_dac_hdl; /*!< DAC queue handler */ - uint32_t dma_buffer_cnt; /*!< DMA buffer count, number of buffer. */ - uint32_t dma_buffer_length; /*!< DMA buffer length, length of each buffer. */ - lldesc_t **desc; /*!< Pointer to DMA descriptor*/ - bool dac_start_en; /*!< The status of the DAC, 0: stop, 1: start */ - dac_dma_link_type_t dac_dma_link_type; /*!< The type of the link, see `dac_dma_link_type_t` */ - esp_pm_lock_handle_t pm_lock; /*!< Spinlock for DAC */ - spi_host_device_t spi_host; /*!< spi host */ - intr_handle_t dac_isr_handle; /*!< DAC interrupt handler */ -} dac_digi_context_t; - -static dac_digi_context_t *s_dac_digi_ctx = NULL; - -/*--------------------------------------------------------------- - INTERRUPT HANDLER ----------------------------------------------------------------*/ - -static IRAM_ATTR void dac_dma_isr_default(void *arg) -{ - dac_digi_context_t *p_dac = (dac_digi_context_t *) arg; - bool status = dac_dma_hal_get_intr_status(p_dac->hal); - dac_dma_hal_clr_intr(p_dac->hal); - int task_awoken = pdFALSE; - dac_dma_event_t dac_evt; - dac_evt.intr_trigger = status; - xQueueSendFromISR(s_dac_digi_ctx->que_dac_hdl, &dac_evt, &task_awoken); -} - -/*--------------------------------------------------------------- - Digital controller setting ----------------------------------------------------------------*/ -static lldesc_t** dac_dma_desc_buf_create(int desc_cnt, size_t buf_size) -{ - lldesc_t** pdesc = (lldesc_t**)heap_caps_calloc(1, sizeof(lldesc_t*) * desc_cnt, MALLOC_CAP_DMA); - if (pdesc == NULL) { - goto _exit; - } - for (int i = 0; i < desc_cnt; i++) { - pdesc[i] = (lldesc_t*)heap_caps_malloc(sizeof(lldesc_t), MALLOC_CAP_DMA); - if (pdesc[i] == NULL) { - goto _exit; - } - memset(pdesc[i], 0, sizeof(lldesc_t)); - } - return pdesc; -_exit: - for (int i = 0; i < desc_cnt; i++) { - free(pdesc[i]); - } - free(pdesc); - return NULL; -} - -static void dac_dma_write(lldesc_t** pdesc, int desc_cnt, size_t buf_size, const void *buffer) -{ - for (int bux_idx = 0; bux_idx < desc_cnt; bux_idx++) { - pdesc[bux_idx]->owner = 1; - pdesc[bux_idx]->eof = 1; - pdesc[bux_idx]->length = buf_size; - pdesc[bux_idx]->size = buf_size; - pdesc[bux_idx]->buf = (uint8_t *) buffer; - buffer += buf_size; - if (s_dac_digi_ctx->dac_dma_link_type == DAC_DMA_LINK_RECURSIVE) { - pdesc[bux_idx]->qe.stqe_next = ((bux_idx < (desc_cnt - 1)) ? (pdesc[bux_idx + 1]) : pdesc[0]); - } else { - pdesc[bux_idx]->qe.stqe_next = ((bux_idx < (desc_cnt - 1)) ? (pdesc[bux_idx + 1]) : NULL); - } - } -} - -esp_err_t dac_digi_initialize(const dac_digi_init_config_t *init_cfg) -{ - ESP_RETURN_ON_FALSE(init_cfg->mode < DAC_CONV_MAX, ESP_ERR_INVALID_ARG, DAC_TAG, "DAC mode error"); - ESP_RETURN_ON_FALSE((init_cfg->interval > 0) && (init_cfg->interval < 4096), ESP_ERR_INVALID_ARG, DAC_TAG, "DAC interval error"); - - esp_err_t err = ESP_OK; - uint32_t dma_chan = 0; - uint32_t dac_chan = 0; - if (s_dac_digi_ctx != NULL) { - ESP_LOGE(DAC_TAG, "DAC has been installed"); - err = ESP_FAIL; - goto _exit; - } - - s_dac_digi_ctx = calloc(1, sizeof(dac_digi_context_t)); - s_dac_digi_ctx->dac_start_en = false; - if(s_dac_digi_ctx == NULL){ - err = ESP_ERR_NO_MEM; - goto _exit; - } - -#ifdef CONFIG_PM_ENABLE - if (s_dac_digi_ctx->pm_lock == NULL) { - err = esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_dma", &s_dac_digi_ctx->pm_lock); - if (err != ESP_OK) { - s_dac_digi_ctx->pm_lock = NULL; - ESP_LOGE(DAC_TAG, "DAC-DMA pm lock error"); - goto _exit; - } - } -#endif //CONFIG_PM_ENABLE - - if (s_dac_digi_ctx->que_dac_hdl == NULL) { - s_dac_digi_ctx->que_dac_hdl = xQueueCreate(5, sizeof(dac_dma_event_t)); - } else { - xQueueReset(s_dac_digi_ctx->que_dac_hdl); - } - - periph_module_enable(PERIPH_SARADC_MODULE); - - do { - if ((init_cfg->dac_chan_msk >> dac_chan) & BIT(0)) { - dac_output_enable(dac_chan); - dac_chan++; - } - } while (dac_chan < DAC_CHANNEL_MAX); - - dac_hal_ctrl_config_t ctrl_hal_cfg = { - .mode = init_cfg->mode, - .interval = init_cfg->interval, - }; - - dac_hal_digi_controller_configure(&ctrl_hal_cfg); - s_dac_digi_ctx->dma_buffer_cnt = init_cfg->dac_dma_cnt; - s_dac_digi_ctx->dma_buffer_length = init_cfg->dac_dma_length; - s_dac_digi_ctx->dac_dma_link_type = init_cfg->dac_dma_link_type; - s_dac_digi_ctx->spi_host = DAC_USE_SPI3_DMA_CHANNEL; - - spicommon_periph_claim(s_dac_digi_ctx->spi_host, "dac"); - err = spicommon_slave_dma_chan_alloc(s_dac_digi_ctx->spi_host, SPI_DMA_CH_AUTO, &dma_chan, &dma_chan); - if (err != ESP_OK) { - goto _exit; - } - - s_dac_digi_ctx->hal = calloc(1, sizeof(dac_hal_context_t)); - s_dac_digi_ctx->hal->dev = (void *)SPI_LL_GET_HW(s_dac_digi_ctx->spi_host); - s_dac_digi_ctx->hal->dma_chan = dma_chan; - - dac_dma_hal_init(s_dac_digi_ctx->hal); - err = esp_intr_alloc(spicommon_irqdma_source_for_host(s_dac_digi_ctx->spi_host), 0, dac_dma_isr_default, s_dac_digi_ctx, &s_dac_digi_ctx->dac_isr_handle); - if(err != ESP_OK){ - goto _exit; - } - s_dac_digi_ctx->desc = dac_dma_desc_buf_create(s_dac_digi_ctx->dma_buffer_cnt, s_dac_digi_ctx->dma_buffer_length); - - return err; -_exit: - dac_digi_deinitialize(); - return err; -} - -esp_err_t dac_digi_write_bytes(uint32_t length, const void *buffer, TickType_t ticks_to_wait) -{ - ESP_RETURN_ON_FALSE(length <= (s_dac_digi_ctx->dma_buffer_cnt * s_dac_digi_ctx->dma_buffer_length), ESP_ERR_INVALID_ARG, DAC_TAG, "DAC DMA buffer length is larger than DMA buffer."); - dac_dma_event_t dac_evt; - bool dac_isr_flag = 1; - - - dac_dma_write(s_dac_digi_ctx->desc, s_dac_digi_ctx->dma_buffer_cnt, s_dac_digi_ctx->dma_buffer_length, buffer); - - dac_dma_hal_trans_start(s_dac_digi_ctx->hal, s_dac_digi_ctx->desc[0]); - while (dac_isr_flag) { - xQueueReceive(s_dac_digi_ctx->que_dac_hdl, &dac_evt, ticks_to_wait); - if (dac_evt.intr_trigger & dac_isr_flag) { - dac_isr_flag &= (!dac_evt.intr_trigger); - } - } - return ESP_OK; -} - -esp_err_t dac_digi_deinitialize(void) -{ - if (!s_dac_digi_ctx) { - return ESP_ERR_INVALID_STATE; - } - - if (s_dac_digi_ctx->dac_start_en == true) { - ESP_LOGE(DAC_TAG, "DAC is still working"); - return ESP_ERR_INVALID_STATE; - } - periph_module_disable(PERIPH_SARADC_MODULE); - - spicommon_periph_free(s_dac_digi_ctx->spi_host); - spicommon_slave_free_dma(s_dac_digi_ctx->spi_host); - - - if (s_dac_digi_ctx->que_dac_hdl) { - vQueueDelete(s_dac_digi_ctx->que_dac_hdl); - s_dac_digi_ctx->que_dac_hdl = NULL; - } - - dac_dma_hal_deinit(s_dac_digi_ctx->hal); - - for (int i = 0; i < s_dac_digi_ctx->dma_buffer_cnt; i++) { - free(s_dac_digi_ctx->desc[i]); - } - - free(s_dac_digi_ctx->hal); - free(s_dac_digi_ctx); - s_dac_digi_ctx = NULL; -#ifdef CONFIG_PM_ENABLE - if (s_dac_digi_ctx->pm_lock) { - esp_pm_lock_delete(s_dac_digi_ctx->pm_lock); - s_dac_digi_ctx->pm_lock = NULL; - } -#endif - - DAC_ENTER_CRITICAL(); - dac_hal_digi_deinit(); - DAC_EXIT_CRITICAL(); - return ESP_OK; -} - -esp_err_t __attribute__((unused)) dac_digi_deinit(void) -{ -#ifdef CONFIG_PM_ENABLE - if (s_dac_digi_ctx->pm_lock) { - esp_pm_lock_delete(s_dac_digi_ctx->pm_lock); - s_dac_digi_ctx->pm_lock = NULL; - } -#endif - free(s_dac_digi_ctx); - DAC_ENTER_CRITICAL(); - dac_hal_digi_deinit(); - DAC_EXIT_CRITICAL(); - - return ESP_OK; -} - -esp_err_t __attribute__((unused)) dac_digi_controller_config(const dac_digi_config_t *cfg) -{ - ESP_RETURN_ON_FALSE(cfg->mode < DAC_CONV_MAX, ESP_ERR_INVALID_ARG, TAG, "DAC mode error"); - ESP_RETURN_ON_FALSE(cfg->interval > 0 && cfg->interval < 4096, ESP_ERR_INVALID_ARG, TAG, "DAC interval error"); - ESP_RETURN_ON_FALSE(cfg->dig_clk.div_num < 256, ESP_ERR_INVALID_ARG, TAG, "DAC clk div_num error"); - ESP_RETURN_ON_FALSE(cfg->dig_clk.div_b > 0 && cfg->dig_clk.div_b < 64, ESP_ERR_INVALID_ARG, TAG, "DAC clk div_b error"); - ESP_RETURN_ON_FALSE(cfg->dig_clk.div_a < 64, ESP_ERR_INVALID_ARG, TAG, "DAC clk div_a error"); -#ifdef CONFIG_PM_ENABLE - esp_err_t err; - if (s_dac_digi_ctx->pm_lock == NULL) { - if (cfg->dig_clk.use_apll) { - err = esp_pm_lock_create(ESP_PM_NO_LIGHT_SLEEP, 0, "dac_dma", &s_dac_digi_ctx->pm_lock); - } else { - err = esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_dma", &s_dac_digi_ctx->pm_lock); - } - if (err != ESP_OK) { - s_dac_digi_ctx->pm_lock = NULL; - ESP_LOGE(DAC_TAG, "DAC-DMA pm lock error"); - return err; - } - } -#endif //CONFIG_PM_ENABLE - - DAC_ENTER_CRITICAL(); - dac_hal_digi_controller_config(cfg); - DAC_EXIT_CRITICAL(); - - return ESP_OK; -} - -esp_err_t dac_digi_start(void) -{ - if (s_dac_digi_ctx->dac_start_en == true) { - ESP_LOGE(DAC_TAG, "DAC is already started"); - return ESP_ERR_INVALID_STATE; - } - s_dac_digi_ctx->dac_start_en = true; -#ifdef CONFIG_PM_ENABLE - ESP_RETURN_ON_FALSE((s_dac_digi_ctx->pm_lock), ESP_ERR_INVALID_STATE, DAC_TAG, "Should start after call `dac_digi_controller_config`"); - esp_pm_lock_acquire(s_dac_digi_ctx->pm_lock); -#endif - DAC_ENTER_CRITICAL(); - dac_hal_digi_start(); - DAC_EXIT_CRITICAL(); - - return ESP_OK; -} - -esp_err_t dac_digi_stop(void) -{ - if (s_dac_digi_ctx->dac_start_en == false) { - ESP_LOGE(DAC_TAG, "DAC is already stopped"); - return ESP_ERR_INVALID_STATE; - } - s_dac_digi_ctx->dac_start_en = false; -#ifdef CONFIG_PM_ENABLE - if (s_dac_digi_ctx->pm_lock) { - esp_pm_lock_release(s_dac_digi_ctx->pm_lock); - } -#endif - DAC_ENTER_CRITICAL(); - dac_hal_digi_stop(); - DAC_EXIT_CRITICAL(); - - return ESP_OK; -} - -esp_err_t dac_digi_fifo_reset(void) -{ - DAC_ENTER_CRITICAL(); - dac_hal_digi_fifo_reset(); - DAC_EXIT_CRITICAL(); - - return ESP_OK; -} - -esp_err_t dac_digi_reset(void) -{ - DAC_ENTER_CRITICAL(); - dac_hal_digi_reset(); - DAC_EXIT_CRITICAL(); - - return ESP_OK; -} - -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -esp_err_t __attribute__((deprecated)) dac_digi_init(void) -{ - s_dac_digi_ctx = calloc(1, sizeof(dac_digi_context_t)); - s_dac_digi_ctx->dac_start_en = false; - DAC_ENTER_CRITICAL(); - dac_hal_digi_init(); - DAC_EXIT_CRITICAL(); - - return ESP_OK; -} - -esp_err_t __attribute__((deprecated)) dac_digi_deinit(void) -{ -#ifdef CONFIG_PM_ENABLE - if (s_dac_digi_ctx->pm_lock) { - esp_pm_lock_delete(s_dac_digi_ctx->pm_lock); - s_dac_digi_ctx->pm_lock = NULL; - } - -#endif - free(s_dac_digi_ctx); - DAC_ENTER_CRITICAL(); - dac_hal_digi_deinit(); - DAC_EXIT_CRITICAL(); - - return ESP_OK; -} - -esp_err_t __attribute__((deprecated)) dac_digi_controller_config(const dac_digi_config_t *cfg) -{ - ESP_RETURN_ON_FALSE(cfg->mode < DAC_CONV_MAX, ESP_ERR_INVALID_ARG, DAC_TAG, "DAC mode error"); - ESP_RETURN_ON_FALSE(cfg->interval > 0 && cfg->interval < 4096, ESP_ERR_INVALID_ARG, DAC_TAG, "DAC interval error"); - ESP_RETURN_ON_FALSE(cfg->dig_clk.div_num < 256, ESP_ERR_INVALID_ARG, DAC_TAG, "DAC clk div_num error"); - ESP_RETURN_ON_FALSE(cfg->dig_clk.div_b > 0 && cfg->dig_clk.div_b < 64, ESP_ERR_INVALID_ARG, DAC_TAG, "DAC clk div_b error"); - ESP_RETURN_ON_FALSE(cfg->dig_clk.div_a < 64, ESP_ERR_INVALID_ARG, DAC_TAG, "DAC clk div_a error"); -#ifdef CONFIG_PM_ENABLE - esp_err_t err; - if (s_dac_digi_ctx->pm_lock == NULL) { - if (cfg->dig_clk.use_apll) { - err = esp_pm_lock_create(ESP_PM_NO_LIGHT_SLEEP, 0, "dac_dma", &s_dac_digi_ctx->pm_lock); - } else { - err = esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_dma", &s_dac_digi_ctx->pm_lock); - } - if (err != ESP_OK) { - s_dac_digi_ctx->pm_lock = NULL; - ESP_LOGE(DAC_TAG, "DAC-DMA pm lock error"); - return err; - } - } -#endif //CONFIG_PM_ENABLE - - DAC_ENTER_CRITICAL(); - dac_hal_digi_controller_config(cfg); - DAC_EXIT_CRITICAL(); - - return ESP_OK; -} diff --git a/components/driver/esp32s2/dac_dma.c b/components/driver/esp32s2/dac_dma.c new file mode 100644 index 0000000000..a6b2adf004 --- /dev/null +++ b/components/driver/esp32s2/dac_dma.c @@ -0,0 +1,199 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "hal/spi_ll.h" +#include "hal/dac_ll.h" +#include "hal/adc_ll.h" +#include "soc/lldesc.h" +#include "esp_private/dac_dma.h" +#include "esp_private/periph_ctrl.h" +#include "driver/spi_common_internal.h" +#include "esp_check.h" + +#define DAC_DMA_PERIPH_SPI_HOST SPI3_HOST + +typedef struct { + void *periph_dev; /* DMA peripheral device address */ + uint32_t dma_chan; + intr_handle_t intr_handle; /* Interrupt handle */ +} dac_dma_periph_spi_t; + +static dac_dma_periph_spi_t *s_ddp = NULL; // Static DAC DMA peripheral structure pointer + +static const char *TAG = "DAC_DMA"; + +extern portMUX_TYPE dac_spinlock; /* Global DAC spinlock */ + +/** + * @brief Calculate and set DAC data frequency + * @note DAC clcok shares clock devider with ADC, the clock source is APB or APLL on ESP32-S2 + * freq_hz = (source_clk / (clk_div + (b / a) + 1)) / interval + * interval range: 1~4095, to avoid decimal as possible, all calculations will base on interval = 4000 + * @param freq_hz DAC byte frequency + * @return + * - ESP_OK config success + * - ESP_ERR_INVALID_ARG invalid frequency + */ +// TODO: check clock again, the dma data seems abnormal +static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz){ + ESP_RETURN_ON_FALSE(freq_hz >= 80, ESP_ERR_INVALID_ARG, TAG, "the DAC frequency should be greater than 80 Hz"); + // TODO: replace 80000000 with APB or APLL clock frequency + // when interval = 4000, max_freq = 20k min_freq = 80 + uint32_t freq_khz = freq_hz / 1000; + /* If freq_khz < 20k, interval = 4000 is enough, so mutiple = 1, + * otherwise interval need to zoom out to increase the max_freq, + * And in order to avoid decimal as possible, multiple better to be 2^n */ + uint32_t multiple = freq_khz < 20 ? 1 : 1 << (32 - __builtin_clz(freq_khz / 20)); // Multiple need to be 2^n to avoid decimal + uint32_t interval = 4000 / multiple; // Zoom in the max/min supported freq by zooming out interval + ESP_RETURN_ON_FALSE(interval > 0, ESP_ERR_INVALID_ARG, TAG, "the DAC frequency is too big"); + + uint32_t clk_div = (80000000 / interval) / freq_hz; + uint32_t mod = (80000000 / interval) % freq_hz; + uint32_t a = 0; + uint32_t b = 1; + if (mod == 0) { + goto finish; + } + + uint32_t min_diff = mod + 1; + for (uint32_t tmp_b = 1; tmp_b < 64; tmp_b++) { + uint32_t tmp_a = (uint32_t)(((mod * b) / (float)freq_hz) + 0.5); + uint32_t diff = (uint32_t)abs((int)(mod * tmp_b) - (int)(freq_hz * tmp_a)); + if (diff == 0) { + a = tmp_a; + b = tmp_b; + goto finish; + } + if (diff < min_diff) { + min_diff = diff; + a = tmp_a; + b = tmp_b; + } + } + +finish: + portENTER_CRITICAL(&dac_spinlock); + dac_ll_digi_clk_inv(true); + dac_ll_digi_set_trigger_interval(interval); // secondary clock division + adc_ll_digi_controller_clk_div(clk_div, b, a); + adc_ll_digi_clk_sel(false); + portEXIT_CRITICAL(&dac_spinlock); + return ESP_OK; +} + +esp_err_t dac_dma_periph_init(int chan_num, uint32_t freq_hz, bool is_alternate) +{ + esp_err_t ret = ESP_OK; + /* Acquire DMA peripheral */ + ESP_RETURN_ON_FALSE(spicommon_periph_claim(DAC_DMA_PERIPH_SPI_HOST, "dac_dma"), ESP_ERR_NOT_FOUND, TAG, "Failed to acquire DAC DMA peripheral"); + // TODO: reference count, maybe only required on s2 + periph_module_enable(PERIPH_SARADC_MODULE); + /* Allocate DAC DMA peripheral object */ + s_ddp = (dac_dma_periph_spi_t *)calloc(1, sizeof(dac_dma_periph_spi_t)); + ESP_GOTO_ON_FALSE(s_ddp, ESP_ERR_NO_MEM, err, TAG, "No memory for DAC DMA object"); + s_ddp->periph_dev = (void *)SPI_LL_GET_HW(DAC_DMA_PERIPH_SPI_HOST); + // TODO: clock may related to convert mode (mono/stereo) + ESP_GOTO_ON_ERROR(dac_dma_periph_set_clock(freq_hz), err, TAG, "Failed to set clock of DMA peripheral"); + + portENTER_CRITICAL(&dac_spinlock); + dac_ll_digi_set_convert_mode(is_alternate); + portEXIT_CRITICAL(&dac_spinlock); + return ret; +err: + dac_dma_periph_deinit(); + return ret; +} + +esp_err_t dac_dma_periph_deinit(void) +{ + ESP_RETURN_ON_FALSE(spicommon_periph_free(DAC_DMA_PERIPH_SPI_HOST), ESP_FAIL, TAG, "Failed to release DAC DMA peripheral"); + // TODO: reference count, maybe only required on s2 + periph_module_disable(PERIPH_SARADC_MODULE); + if (s_ddp) { + if (s_ddp->intr_handle) { + dac_dma_periph_deregister_intr(); + } + free(s_ddp); + s_ddp = NULL; + } + return ESP_OK; +} + +esp_err_t dac_dma_periph_register_intr(intr_handler_t intr_handler_func, void *user_ctx) +{ + ESP_RETURN_ON_FALSE(s_ddp, ESP_ERR_INVALID_STATE, TAG, "DAC DMA peripheral has not initialized yet"); + ESP_RETURN_ON_ERROR(spicommon_dma_chan_alloc(DAC_DMA_PERIPH_SPI_HOST, SPI_DMA_CH_AUTO, &s_ddp->dma_chan, &s_ddp->dma_chan), + TAG, "Failed to allocate dma peripheral channel"); + esp_err_t ret = ESP_OK; + /* Regigster interrupt */ + ESP_GOTO_ON_ERROR(esp_intr_alloc(spicommon_irqdma_source_for_host(DAC_DMA_PERIPH_SPI_HOST), + 0, intr_handler_func, user_ctx, &(s_ddp->intr_handle)), err, TAG, "Failed to register DAC DMA interrupt"); + portENTER_CRITICAL(&dac_spinlock); + spi_ll_enable_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF); + portEXIT_CRITICAL(&dac_spinlock); + return ret; +err: + spicommon_dma_chan_free(DAC_DMA_PERIPH_SPI_HOST); + return ret; +} + +esp_err_t dac_dma_periph_deregister_intr(void) +{ + ESP_RETURN_ON_FALSE(s_ddp, ESP_ERR_INVALID_STATE, TAG, "DAC DMA peripheral has not initialized yet"); + ESP_RETURN_ON_ERROR(spicommon_dma_chan_free(DAC_DMA_PERIPH_SPI_HOST), TAG, "Failed to free dma peripheral channel"); + if (s_ddp->intr_handle) { + portENTER_CRITICAL(&dac_spinlock); + spi_ll_disable_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF); + portEXIT_CRITICAL(&dac_spinlock); + esp_intr_free(s_ddp->intr_handle); + s_ddp->intr_handle = NULL; + } + return ESP_OK; +} + +void dac_dma_periph_enable(void) +{ + portENTER_CRITICAL(&dac_spinlock); + spi_dma_ll_tx_reset(s_ddp->periph_dev, s_ddp->dma_chan); + spi_ll_dma_tx_fifo_reset(s_ddp->periph_dev); + dac_ll_digi_trigger_output(true); + portEXIT_CRITICAL(&dac_spinlock); + /* Enable interrupt */ + esp_intr_enable(s_ddp->intr_handle); +} + +void dac_dma_periph_disable(void) +{ + portENTER_CRITICAL(&dac_spinlock); + spi_dma_ll_tx_reset(s_ddp->periph_dev, s_ddp->dma_chan); + spi_ll_dma_tx_fifo_reset(s_ddp->periph_dev); + spi_dma_ll_tx_stop(s_ddp->periph_dev, s_ddp->dma_chan); + dac_ll_digi_trigger_output(false); + portEXIT_CRITICAL(&dac_spinlock); + /* Disable interrupt */ + esp_intr_disable(s_ddp->intr_handle); +} + +bool IRAM_ATTR dac_dma_periph_intr_is_triggered(void) +{ + uint32_t is_triggered = spi_ll_get_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF); + spi_ll_clear_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF); + return is_triggered; +} + +uint32_t IRAM_ATTR dac_dma_periph_intr_get_eof_desc(void) +{ + return spi_dma_ll_get_out_eof_desc_addr(s_ddp->periph_dev, s_ddp->dma_chan); +} + +void dac_dma_periph_dma_trans_start(uint32_t desc_addr) +{ + portENTER_CRITICAL(&dac_spinlock); + spi_dma_ll_tx_reset(s_ddp->periph_dev, s_ddp->dma_chan); + spi_ll_dma_tx_fifo_reset(s_ddp->periph_dev); + spi_dma_ll_tx_start(s_ddp->periph_dev, s_ddp->dma_chan, (lldesc_t *)desc_addr); + portEXIT_CRITICAL(&dac_spinlock); +} diff --git a/components/driver/esp32s2/include/driver/dac.h b/components/driver/esp32s2/include/driver/dac.h deleted file mode 100644 index 695e5c3f9f..0000000000 --- a/components/driver/esp32s2/include/driver/dac.h +++ /dev/null @@ -1,130 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#pragma once - -#include "driver/dac_common.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @brief DAC digital controller (DMA mode) configuration parameters. - */ -typedef struct { - dac_digi_convert_mode_t mode; /*!< DAC digital controller (DMA mode) work mode. See ``dac_digi_convert_mode_t``. */ - uint32_t dac_chan_msk; /*!< DAC channel select mask, use BIT(CHAN_X) to mask the channesl */ - uint32_t interval; /*!< The number of interval clock cycles for the DAC digital controller to output voltage. - The unit is the divided clock. Range: 1 ~ 4095. - Expression: `dac_output_freq` = `controller_clk` / interval. Refer to ``adc_digi_clk_t``. - Note: The sampling rate of each channel is also related to the conversion mode (See ``dac_digi_convert_mode_t``) and pattern table settings. */ - uint32_t dac_dma_cnt; /*!< DMA buffer count, number of buffer. */ - uint32_t dac_dma_length; /*!< DMA buffer length, length of each buffer. */ - dac_dma_link_type_t dac_dma_link_type; /*!< The type of the link, see `dac_dma_link_type_t` */ -} dac_digi_init_config_t; - -/*--------------------------------------------------------------- - Digital controller setting ----------------------------------------------------------------*/ - -/** - * @brief Initialize the Digital DAC controller. - * - * @param init_cfg Pointer to Digital DAC initialization config. Refer to ``dac_digi_config_t``. - * - * @return - * - ESP_ERR_INVALID_ARG If the combination of arguments is invalid. - * - ESP_ERR_NOT_FOUND No free interrupt found with the specified flags - * - ESP_ERR_NO_MEM If out of memory - * - ESP_OK On success - */ -esp_err_t dac_digi_initialize(const dac_digi_init_config_t *init_cfg); - -/** - * @brief Deinitialize the Digital DAC controller. - * - * @return - * - ESP_ERR_INVALID_STATE Driver state is invalid. - * - ESP_OK On success - */ -esp_err_t dac_digi_deinitialize(void); - -/** - * @brief Write bytes to Digital DAC through DMA. - * - * @param length the buffer length. - * @param[in] buffer Buffer to write to DAC. - * @param ticks_to_wait Ticks to wait until there's room in the queue; use portMAX_DELAY to - * never time out. - * - * @return - * - ESP_ERR_INVALID_STATE Driver state is invalid. Usually it means the ADC sampling rate is faster than the task processing rate. - * - ESP_ERR_TIMEOUT Operation timed out - * - ESP_OK On success - */ -esp_err_t dac_digi_write_bytes(uint32_t length, const void *buffer, TickType_t ticks_to_wait); - -/** - * @brief DAC digital controller start output voltage. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_start(void); - -/** - * @brief DAC digital controller stop output voltage. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_stop(void); - -/** - * @brief Reset DAC digital controller FIFO. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_fifo_reset(void); - -/** - * @brief Reset DAC digital controller. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_reset(void); - -/************************************************************ - * Deprecated APIs - ***********************************************************/ -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -/** - * @brief Setting the DAC digital controller. - * - * @param cfg Pointer to digital controller paramter. See ``dac_digi_config_t``. - * - * @return - * - ESP_OK success - * - ESP_ERR_INVALID_ARG Parameter error - */ -esp_err_t __attribute__((deprecated)) dac_digi_controller_config(const dac_digi_config_t *cfg); - -/** - * @brief DAC digital controller deinitialization. - * @return - * - ESP_OK success - */ -esp_err_t __attribute__((deprecated)) dac_digi_deinit(void); - -/** - * @brief DAC digital controller initialization. - * @return - * - ESP_OK success - */ -esp_err_t __attribute__((deprecated)) dac_digi_init(void); - -#ifdef __cplusplus -} -#endif diff --git a/components/driver/include/driver/dac_new.h b/components/driver/include/driver/dac_new.h new file mode 100644 index 0000000000..f4ad111487 --- /dev/null +++ b/components/driver/include/driver/dac_new.h @@ -0,0 +1,260 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "driver/dac_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if CONFIG_IDF_TARGET_ESP32 +#define DAC_CHANNEL1_IO 25 /*!< ESP32 DAC channel 1 GPIO number: GPIO_NUM_25 */ +#define DAC_CHANNEL2_IO 26 /*!< ESP32 DAC channel 2 GPIO number: GPIO_NUM_26 */ +#elif CONFIG_IDF_TARGET_ESP32S2 +#define DAC_CHANNEL1_IO 17 /*!< ESP32S2 DAC channel 1 GPIO number: GPIO_NUM_17 */ +#define DAC_CHANNEL2_IO 18 /*!< ESP32S2 DAC channel 2 GPIO number: GPIO_NUM_17 */ +#endif + +/** + * @brief DAC channel configuration + * + */ +typedef struct { + dac_channel_mask_t chan_sel; /*!< Using DAC channel mask to select the channel in the channel group */ +} dac_group_config_t; + +/** + * @brief DAC DMA configration + * + */ +typedef struct { + uint32_t freq_hz; /*!< The frequency of DAC converting each data in DMA mode, unit: Hz */ + uint32_t desc_num; /*!< The number of DMA descriptor , directly proportional to the max data buffer size while converting in cyclic way */ + dac_dma_channel_mode_t chan_mode; /*!< DMA channel mode, only take effect when multiple channels enabled in a group, depends converting the buffer alternately or simultaneously */ +} dac_dma_config_t; + +/** + * @brief DAC cosine wave gnerator configuration + * + */ +typedef struct { + uint32_t freq_hz; /*!< The frequency of cosine wave, unit: Hz */ + dac_cosine_scale_t scale; /*!< The scale of cosine wave amplitude */ + dac_cosine_phase_t phase; /*!< The phase of cosine wave */ + int8_t offset; /*!< The DC offset of cosine wave */ +} dac_cosine_config_t; + +typedef struct dac_channel_group_s *dac_channel_group_handle_t; /*!< DAC group handle of DAC peripheral, one or multiple DAC channels can be controlled by the group handle */ + +/*-------------------------------------------------------------------------- + DAC common APIs + ---------------------------------------------------------------------------*/ +/** + * @brief Allocate a new DAC channel group + * + * @param[in] dac_cfg DAC basic configuration + * @param[out] handle DAC channel group handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_NO_MEM No memory for a new DAC handle + * - ESP_ERR_INVALID_STATE The specified DAC channel is occupied already + * - ESP_OK Success to allocate DAC channel group + */ +esp_err_t dac_new_channel_group(const dac_group_config_t *dac_cfg, dac_channel_group_handle_t *handle); + +/** + * @brief Delete and free the DAC channel group + * + * @param[in] handle DAC channel group handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channel group is not disabled + * - ESP_OK Success to delete the channel group + */ +esp_err_t dac_del_channel_group(dac_channel_group_handle_t handle); + +/** + * @brief Enabled the DAC channels in the channel group + * @note GPIOs of DAC channles will be enabled in this step + * + * @param[in] handle DAC channel group handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channel group has enabled already or the channels are running + * - ESP_OK Success to enable the channel group + */ +esp_err_t dac_channel_group_enable(dac_channel_group_handle_t handle); + +/** + * @brief Disable the DAC channels in the channel group + * + * @param[in] handle DAC channel group handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channel group has disabled already or the channels are running + * - ESP_OK Success to enable the channel group + */ +esp_err_t dac_channel_group_disable(dac_channel_group_handle_t handle); + +/*-------------------------------------------------------------------------- + DAC constant voltage outputting APIs + ---------------------------------------------------------------------------*/ +/** + * @brief DAC channel group output a constant voltage + * @note This function is available when DAC chennel group is enbled + * + * @param[in] handle DAC channel group handle + * @param[in] value The digital value of the constant voltage + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channel group is not enabled + * - ESP_OK Success to enable the channel group + */ +esp_err_t dac_channel_group_output_constant_voltage(dac_channel_group_handle_t handle, uint8_t value); + +/*-------------------------------------------------------------------------- + DAC continuous outputting APIs + ---------------------------------------------------------------------------*/ +/** + * @brief Initialize the DAC channel group to DMA mode + * @note DAC can convert digital data continuously in DMA mode + * + * @param[in] handle DAC channel group handle + * @param[in] dma_cfg DAC DMA configuration + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channel group has been initialized already + * - ESP_ERR_NO_MEM No memory for DAC DMA mode + * - ESP_OK Success to initializing the DAC channel group to DMA mode + */ +esp_err_t dac_channel_group_init_dma_output(dac_channel_group_handle_t handle, const dac_dma_config_t *dma_cfg); + +/** + * @brief Deinitialize the DMA mode of the DAC channel group + * @note It can only be deinitialized when the DMA output is stopped + * + * @param[in] handle DAC channel group handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC DMA is not stopped yet + * - ESP_OK Success to deinitialize the DAC DMA mode + */ +esp_err_t dac_channel_group_deinit_dma_output(dac_channel_group_handle_t handle); + +/** + * @brief Start the DAC DMA output + * + * @param[in] handle DAC channel group handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC DMA has not been enabled yet or started already + * - ESP_OK Success to start the DMA output + */ +esp_err_t dac_channel_group_start_dma_output(dac_channel_group_handle_t handle); + +/** + * @brief Stop the DAC DMA output + * + * @param[in] handle DAC channel group handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC DMA is stopped or not disabled already + * - ESP_OK Success to stop the DMA output + */ +esp_err_t dac_channel_group_stop_dma_output(dac_channel_group_handle_t handle); + +/** + * @brief Write DAC DMA data acyclicly + * @note The data in buffer will only be converted one time, + * This function will be blocked until all data sent successfully or timeout + * then the DAC output will keep outputting the voltage of the last data in the buffer + * + * @param[in] handle DAC channel group handle + * @param[in] buf The digital data buffer to convert + * @param[in] buf_size The buffer size of digital data buffer + * @param[in] timeout_ms The timeout time in mili-second + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC DMA has not been started or enabled yet + * - ESP_ERR_TIMEOUT Waiting for semaphore or message queue timeout + * - ESP_OK Success to output the acyclic DAC data by DMA + */ +esp_err_t dac_channel_group_write_acyclicly(dac_channel_group_handle_t handle, uint8_t *buf, size_t buf_size, uint32_t timeout_ms); + +/** + * @brief Write DAC DMA data cyclicly + * @note The data in buffer will be converted cyclicly once this function is called, + * so the input buffer needs to stay accessable during the convertion, + * but this function won't be blocked, it will return once the data loaded into DMA descriptors + * @note The buffer size of cyclicly output is limited by the descriptor number while initializing the DMA mode, + * Concretely, in order to load all the data into descriptors, + * the cyclic buffer size is not supposed to be greater than `desc_num * 4092` + * + * @param[in] handle DAC channel group handle + * @param[in] buf The digital data buffer to convert + * @param[in] buf_size The buffer size of digital data buffer + * @param[in] timeout_ms The timeout time in mili-second + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC DMA has not been started or enabled yet + * - ESP_ERR_TIMEOUT Waiting for semaphore or message queue timeout + * - ESP_OK Success to output the acyclic DAC data by DMA + */ +esp_err_t dac_channel_group_write_cyclicly(dac_channel_group_handle_t handle, uint8_t *buf, size_t buf_size, uint32_t timeout_ms); + +/*-------------------------------------------------------------------------- + DAC cosine wave outputting APIs + ---------------------------------------------------------------------------*/ +/** + * @brief Initialize the DAC channel group to cosine wave mode + * + * @param[in] handle DAC channel group handle + * @param[in] cw_cfg DAC cosine wave generater configuration + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channel group has been initialized already + * - ESP_OK Success to initialize the DAC channel group into cosine wave mode + */ +esp_err_t dac_channel_group_init_cosine_output(dac_channel_group_handle_t handle, const dac_cosine_config_t *cw_cfg); + +/** + * @brief Deinitialize the DAC channel group to cosine wave mode + * + * @param[in] handle DAC channel group handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC cosine wave generator is not stopped yet + * - ESP_OK Success to deinitialize the DAC DMA mode + */ +esp_err_t dac_channel_group_deinit_cosine_output(dac_channel_group_handle_t handle); + +/** + * @brief Start the DAC cosine wave generator output + * + * @param[in] handle DAC channel group handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channel group has not been enabled yet or started already + * - ESP_OK Success to start cosine wave generator + */ +esp_err_t dac_channel_group_start_cosine_output(dac_channel_group_handle_t handle); + +/** + * @brief Stop the DAC cosine wave generator output + * + * @param[in] handle DAC channel group handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channel group has not been enabled yet or stoppped already + * - ESP_OK Success to stop cosine wave generator + */ +esp_err_t dac_channel_group_stop_cosine_output(dac_channel_group_handle_t handle); + +#ifdef __cplusplus +} +#endif diff --git a/components/driver/include/driver/dac_types.h b/components/driver/include/driver/dac_types.h new file mode 100644 index 0000000000..c38a955564 --- /dev/null +++ b/components/driver/include/driver/dac_types.h @@ -0,0 +1,55 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#pragma once + +#include "soc/soc_caps.h" +#include "hal/adc_types.h" +#include "sdkconfig.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief DAC channel mask + * + */ +typedef enum { + DAC_CHANNEL_MASK_1 = BIT(0), /*!< DAC channel 1 is GPIO25(ESP32) / GPIO17(ESP32S2) */ + DAC_CHANNEL_MASK_2 = BIT(1), /*!< DAC channel 2 is GPIO26(ESP32) / GPIO18(ESP32S2) */ + DAC_CHANNEL_MASK_BOTH = BIT(0) | BIT(1), /*!< DAC channel 2 is GPIO26(ESP32) / GPIO18(ESP32S2) */ +} dac_channel_mask_t; + +/** + * @brief DAC channel work mode in dma mode + * @note Only take effect when multiple channels enabled. + */ +typedef enum { + DAC_CHANNEL_SIMULTANEOUS, /*!< The data in the DMA buffer is simultaneously output to the enable channel of the DAC. */ + DAC_CHANNEL_ALTERNATE, /*!< The data in the DMA buffer is alternately output to the enable channel of the DAC. */ +} dac_dma_channel_mode_t; + +/** + * @brief The multiple of the amplitude of the cosine wave generator. The max amplitude is VDD3P3_RTC. + */ +typedef enum { + DAC_COSINE_SCALE_1 = 0x0, /*!< No scaling to the DAC cosine wave amplitude. Default. */ + DAC_COSINE_SCALE_2 = 0x1, /*!< 1/2 amplitude of the DAC cosine wave */ + DAC_COSINE_SCALE_4 = 0x2, /*!< 1/4 amplitude of the DAC cosine wave */ + DAC_COSINE_SCALE_8 = 0x3, /*!< 1/8 amplitude of the DAC cosine wave */ +} dac_cosine_scale_t; + +/** + * @brief Set the phase of the cosine wave generator output. + */ +typedef enum { + DAC_COSINE_PHASE_0 = 0x2, /*!< Phase shift +0° */ + DAC_COSINE_PHASE_180 = 0x3, /*!< Phase shift +180° */ +} dac_cosine_phase_t; + +#ifdef __cplusplus +} +#endif diff --git a/components/driver/include/esp_private/dac_dma.h b/components/driver/include/esp_private/dac_dma.h new file mode 100644 index 0000000000..66735534fa --- /dev/null +++ b/components/driver/include/esp_private/dac_dma.h @@ -0,0 +1,37 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "esp_err.h" +#include "esp_intr_alloc.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +esp_err_t dac_dma_periph_init(int chan_num, uint32_t freq_hz, bool is_alternate); + +esp_err_t dac_dma_periph_deinit(void); + +esp_err_t dac_dma_periph_register_intr(intr_handler_t intr_handler_func, void *user_ctx); + +esp_err_t dac_dma_periph_deregister_intr(void); + +void dac_dma_periph_enable(void); + +void dac_dma_periph_disable(void); + +bool dac_dma_periph_intr_is_triggered(void); + +uint32_t dac_dma_periph_intr_get_eof_desc(void); + +void dac_dma_periph_dma_trans_start(uint32_t desc_addr); + +#ifdef __cplusplus +} +#endif diff --git a/components/hal/CMakeLists.txt b/components/hal/CMakeLists.txt index deb55e1ea1..8a9ffa9685 100644 --- a/components/hal/CMakeLists.txt +++ b/components/hal/CMakeLists.txt @@ -125,7 +125,6 @@ if(NOT BOOTLOADER_BUILD) "esp32s2/brownout_hal.c" "esp32s2/cp_dma_hal.c" "esp32s2/touch_sensor_hal.c" - "esp32s2/dac_hal.c" "usb_dwc_hal.c") endif() diff --git a/components/hal/dac_hal.c b/components/hal/dac_hal.c index 51e4a2727a..765d1fcc8f 100644 --- a/components/hal/dac_hal.c +++ b/components/hal/dac_hal.c @@ -1,24 +1,16 @@ -// Copyright 2019 Espressif Systems (Shanghai) PTE 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. +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ -#include "hal/dac_hal.h" +// #include "hal/dac_hal.h" -void dac_hal_cw_generator_config(dac_cw_config_t *cw) -{ - dac_ll_cw_set_freq(cw->freq); - dac_ll_cw_set_scale(cw->en_ch, cw->scale); - dac_ll_cw_set_phase(cw->en_ch, cw->phase); - dac_ll_cw_set_dc_offset(cw->en_ch, cw->offset); - dac_ll_cw_set_channel(cw->en_ch, true); -} +// void dac_hal_cw_generator_config(dac_cw_config_t *cw) +// { +// dac_ll_cw_set_freq(cw->freq); +// dac_ll_cw_set_scale(cw->en_ch, cw->scale); +// dac_ll_cw_set_phase(cw->en_ch, cw->phase); +// dac_ll_cw_set_dc_offset(cw->en_ch, cw->offset); +// dac_ll_cw_set_channel(cw->en_ch, true); +// } diff --git a/components/hal/esp32/include/hal/dac_ll.h b/components/hal/esp32/include/hal/dac_ll.h index 3bf220c8e2..2c15ede3bd 100644 --- a/components/hal/esp32/include/hal/dac_ll.h +++ b/components/hal/esp32/include/hal/dac_ll.h @@ -128,7 +128,7 @@ static inline void dac_ll_cw_set_freq(uint32_t freq) * @param channel DAC channel num. * @param scale The multiple of the amplitude. The max amplitude is VDD3P3_RTC. */ -static inline void dac_ll_cw_set_scale(dac_channel_t channel, dac_cw_scale_t scale) +static inline void dac_ll_cw_set_scale(dac_channel_t channel, uint32_t scale) { if (channel == DAC_CHANNEL_1) { SENS.sar_dac_ctrl2.dac_scale1 = scale; @@ -143,7 +143,7 @@ static inline void dac_ll_cw_set_scale(dac_channel_t channel, dac_cw_scale_t sca * @param channel DAC channel num. * @param scale Phase value. */ -static inline void dac_ll_cw_set_phase(dac_channel_t channel, dac_cw_phase_t phase) +static inline void dac_ll_cw_set_phase(dac_channel_t channel, uint32_t phase) { if (channel == DAC_CHANNEL_1) { SENS.sar_dac_ctrl2.dac_inv1 = phase; diff --git a/components/hal/esp32s2/dac_hal.c b/components/hal/esp32s2/dac_hal.c index 357688f73e..123ade4d53 100644 --- a/components/hal/esp32s2/dac_hal.c +++ b/components/hal/esp32s2/dac_hal.c @@ -59,7 +59,7 @@ void dac_dma_hal_trans_start(dac_hal_context_t *hal, lldesc_t *desc) void dac_hal_digi_controller_configure(const dac_hal_ctrl_config_t *cfg) { dac_ll_digi_clk_inv(true); - dac_ll_digi_set_convert_mode(cfg->mode); + dac_ll_digi_set_convert_mode(cfg->mode == DAC_CONV_ALTER); dac_ll_digi_set_trigger_interval(cfg->interval); adc_ll_digi_controller_clk_div(cfg->dig_clk.div_num, cfg->dig_clk.div_b, cfg->dig_clk.div_a); adc_ll_digi_clk_sel(cfg->dig_clk.use_apll); @@ -87,7 +87,7 @@ void __attribute__((deprecated)) dac_hal_digi_deinit(void) void __attribute__((deprecated)) dac_hal_digi_controller_config(const dac_digi_config_t *cfg) { - dac_ll_digi_set_convert_mode(cfg->mode); + dac_ll_digi_set_convert_mode(cfg->mode == DAC_CONV_ALTER); dac_ll_digi_set_trigger_interval(cfg->interval); adc_ll_digi_controller_clk_div(cfg->dig_clk.div_num, cfg->dig_clk.div_b, cfg->dig_clk.div_a); adc_ll_digi_controller_clk_enable(cfg->dig_clk.use_apll); diff --git a/components/hal/esp32s2/include/hal/clk_gate_ll.h b/components/hal/esp32s2/include/hal/clk_gate_ll.h index 45ce590207..cde957997f 100644 --- a/components/hal/esp32s2/include/hal/clk_gate_ll.h +++ b/components/hal/esp32s2/include/hal/clk_gate_ll.h @@ -83,8 +83,6 @@ static inline uint32_t periph_ll_get_clk_en_mask(periph_module_t periph) return DPORT_CRYPTO_DMA_CLK_EN | DPORT_CRYPTO_SHA_CLK_EN; case PERIPH_AES_DMA_MODULE: return DPORT_CRYPTO_DMA_CLK_EN | DPORT_CRYPTO_AES_CLK_EN; - case PERIPH_SARADC_MODULE: - return DPORT_APB_SARADC_CLK_EN_M; default: return 0; } diff --git a/components/hal/esp32s2/include/hal/dac_ll.h b/components/hal/esp32s2/include/hal/dac_ll.h index daf861dc66..cf5f9a3cc4 100644 --- a/components/hal/esp32s2/include/hal/dac_ll.h +++ b/components/hal/esp32s2/include/hal/dac_ll.h @@ -149,7 +149,7 @@ static inline void dac_ll_cw_set_freq(uint32_t freq) * @param channel DAC channel num. * @param scale The multiple of the amplitude. The max amplitude is VDD3P3_RTC. */ -static inline void dac_ll_cw_set_scale(dac_channel_t channel, dac_cw_scale_t scale) +static inline void dac_ll_cw_set_scale(dac_channel_t channel, uint32_t scale) { if (channel == DAC_CHANNEL_1) { SENS.sar_dac_ctrl2.dac_scale1 = scale; @@ -164,7 +164,7 @@ static inline void dac_ll_cw_set_scale(dac_channel_t channel, dac_cw_scale_t sca * @param channel DAC channel num. * @param scale Phase value. */ -static inline void dac_ll_cw_set_phase(dac_channel_t channel, dac_cw_phase_t phase) +static inline void dac_ll_cw_set_phase(dac_channel_t channel, uint32_t phase) { if (channel == DAC_CHANNEL_1) { SENS.sar_dac_ctrl2.dac_inv1 = phase; @@ -251,13 +251,9 @@ static inline void dac_ll_digi_trigger_output(bool enable) * * @param mode Conversion mode select. See ``dac_digi_convert_mode_t``. */ -static inline void dac_ll_digi_set_convert_mode(dac_digi_convert_mode_t mode) +static inline void dac_ll_digi_set_convert_mode(bool is_alternate) { - if (mode == DAC_CONV_NORMAL) { - APB_SARADC.apb_dac_ctrl.apb_dac_alter_mode = 0; - } else { - APB_SARADC.apb_dac_ctrl.apb_dac_alter_mode = 1; - } + APB_SARADC.apb_dac_ctrl.apb_dac_alter_mode = is_alternate; } /** diff --git a/components/hal/include/hal/dac_hal.h b/components/hal/include/hal/dac_hal.h index e0c4d9a23f..40d56a57ba 100644 --- a/components/hal/include/hal/dac_hal.h +++ b/components/hal/include/hal/dac_hal.h @@ -13,6 +13,7 @@ #pragma once #include "hal/dac_ll.h" +#include "hal/dac_types.h" /** * Power on dac module and start output voltage. @@ -62,7 +63,7 @@ * * @param cw Configuration. */ -void dac_hal_cw_generator_config(dac_cw_config_t *cw); +// void dac_hal_cw_generator_config(dac_cw_config_t *cw); /** * Enable/disable DAC output data from DMA. diff --git a/components/hal/include/hal/dac_types.h b/components/hal/include/hal/dac_types.h index d52c72ed7c..266bdbc453 100644 --- a/components/hal/include/hal/dac_types.h +++ b/components/hal/include/hal/dac_types.h @@ -28,18 +28,6 @@ typedef enum { DAC_CW_PHASE_180 = 0x3, /*!< Phase shift +180° */ } dac_cw_phase_t; -/** - * @brief Config the cosine wave generator function in DAC module. - */ -typedef struct { - dac_channel_t en_ch; /*!< Enable the cosine wave generator of DAC channel. */ - dac_cw_scale_t scale; /*!< Set the amplitude of the cosine wave generator output. */ - dac_cw_phase_t phase; /*!< Set the phase of the cosine wave generator output. */ - uint32_t freq; /*!< Set frequency of cosine wave generator output. Range: 130(130Hz) ~ 55000(100KHz). */ - int8_t offset; /*!< Set the voltage value of the DC component of the cosine wave generator output. - Note: Unreasonable settings can cause waveform to be oversaturated. Range: -128 ~ 127. */ -} dac_cw_config_t; - #if CONFIG_IDF_TARGET_ESP32S2 /** @@ -48,17 +36,8 @@ typedef struct { typedef enum { DAC_CONV_NORMAL, /*!< The data in the DMA buffer is simultaneously output to the enable channel of the DAC. */ DAC_CONV_ALTER, /*!< The data in the DMA buffer is alternately output to the enable channel of the DAC. */ - DAC_CONV_MAX } dac_digi_convert_mode_t; -/** - * @brief The type of the DAC DMA link. -*/ -typedef enum { - DAC_DMA_LINK_LINE = BIT(0), /*!< The link is Linear. */ - DAC_DMA_LINK_RECURSIVE = BIT(1), /*!< The link is recursive. */ -} dac_dma_link_type_t; - /** * @brief DAC digital controller (DMA mode) configuration parameters. */ @@ -70,6 +49,6 @@ typedef struct { Note: The sampling rate of each channel is also related to the conversion mode (See ``dac_digi_convert_mode_t``) and pattern table settings. */ adc_digi_clk_t dig_clk; /*! Date: Tue, 24 May 2022 17:26:36 +0800 Subject: [PATCH 4/5] dac: update unit-test docs and examples for driver-NG --- components/driver/.build-test-rules.yml | 8 + components/driver/CMakeLists.txt | 13 +- components/driver/Kconfig | 21 + components/driver/dac.c | 643 --- components/driver/dac/dac_dma.h | 102 + components/driver/dac/dac_driver.c | 781 +++ components/driver/{ => dac}/esp32/dac_dma.c | 98 +- components/driver/{ => dac}/esp32s2/dac_dma.c | 124 +- components/driver/deprecated/adc_legacy.c | 18 +- .../driver/deprecated/dac_common_legacy.c | 55 +- components/driver/deprecated/driver/dac.h | 171 + .../driver/deprecated/driver/dac_common.h | 90 - .../deprecated/driver/dac_types_legacy.h | 51 +- .../deprecated/driver/i2s_types_legacy.h | 4 +- .../driver/deprecated/esp32/dac_legacy.c | 15 +- .../driver/deprecated/esp32/driver/dac.h | 36 - .../driver/deprecated/esp32s2/dac_legacy.c | 36 +- .../driver/deprecated/esp32s2/driver/dac.h | 73 - components/driver/deprecated/i2s_legacy.c | 17 +- components/driver/include/driver/dac_driver.h | 298 + components/driver/include/driver/dac_new.h | 260 - components/driver/include/driver/dac_types.h | 57 +- .../driver/include/esp_private/dac_dma.h | 37 - components/driver/linker.lf | 2 + components/driver/test/CMakeLists.txt | 2 +- .../test/dac_dma_test/test_dac_audio_file.h | 4980 ----------------- .../driver/test/dac_dma_test/test_esp32s2.c | 363 -- components/driver/test/test_dac_dma.c | 209 - .../dac_test_apps/dac/CMakeLists.txt | 18 + .../test_apps/dac_test_apps/dac/README.md | 2 + .../dac_test_apps/dac/main/CMakeLists.txt | 11 + .../dac_test_apps/dac/main/test_app_main.c | 54 + .../dac_test_apps/dac/main/test_dac.c | 368 ++ .../dac_test_apps/dac/main/test_dac_iram.c | 70 + .../test_apps/dac_test_apps/dac/pytest_dac.py | 22 + .../dac_test_apps/dac/sdkconfig.ci.iram_safe | 5 + .../dac_test_apps/dac/sdkconfig.ci.release | 5 + .../dac_test_apps/dac/sdkconfig.defaults | 4 + .../legacy_dac_driver/CMakeLists.txt | 18 + .../dac_test_apps/legacy_dac_driver/README.md | 2 + .../legacy_dac_driver/main/CMakeLists.txt | 7 + .../legacy_dac_driver/main/test_app_main.c | 53 + .../legacy_dac_driver/main/test_legacy_dac.c} | 21 +- .../legacy_dac_driver/pytest_legacy_dac.py | 21 + .../legacy_dac_driver/sdkconfig.ci.release | 5 + .../legacy_dac_driver/sdkconfig.defaults | 4 + .../legacy_i2s_adc_dac/main/test_i2s_adc.c | 3 +- .../legacy_i2s_adc_dac/sdkconfig.defaults | 1 + components/hal/CMakeLists.txt | 2 - components/hal/adc_oneshot_hal.c | 8 +- components/hal/dac_hal.c | 16 - components/hal/esp32/include/hal/dac_ll.h | 40 +- components/hal/esp32/include/hal/i2s_ll.h | 1 + components/hal/esp32s2/dac_hal.c | 99 - components/hal/esp32s2/include/hal/dac_hal.h | 128 - components/hal/esp32s2/include/hal/dac_ll.h | 40 +- components/hal/include/hal/dac_hal.h | 71 - components/hal/include/hal/dac_types.h | 58 +- components/soc/esp32/dac_periph.c | 22 +- .../soc/esp32/include/soc/Kconfig.soc_caps.in | 4 + .../soc/esp32/include/soc/clk_tree_defs.h | 31 + .../soc/esp32/include/soc/dac_channel.h | 26 +- components/soc/esp32/include/soc/soc_caps.h | 5 +- components/soc/esp32s2/dac_periph.c | 22 +- .../soc/esp32s2/include/soc/clk_tree_defs.h | 31 + .../soc/esp32s2/include/soc/dac_channel.h | 26 +- .../diagrams/dac/dac_file_structure.png | Bin 0 -> 63442 bytes .../diagrams/dac/dac_state_machine.png | Bin 0 -> 113167 bytes docs/doxygen/Doxyfile | 2 - docs/doxygen/Doxyfile_esp32 | 1 - docs/doxygen/Doxyfile_esp32s2 | 1 - docs/en/api-reference/peripherals/dac.rst | 297 +- .../release-5.x/5.0/peripherals.rst | 59 + .../classic_bt/a2dp_sink/main/bt_app_av.c | 54 +- .../classic_bt/a2dp_sink/main/bt_app_core.c | 7 +- .../coex/a2dp_gatts_coex/main/bt_app_av.c | 17 +- .../coex/a2dp_gatts_coex/main/bt_app_core.c | 7 +- .../coex/a2dp_gatts_coex/main/main.c | 37 +- examples/peripherals/.build-test-rules.yml | 16 + .../dac_audio}/CMakeLists.txt | 2 +- examples/peripherals/dac/dac_audio/README.md | 53 + .../dac/dac_audio/main/CMakeLists.txt | 2 + .../dac_audio}/main/audio_example_file.h | 0 .../dac/dac_audio/main/dac_audio.c | 73 + .../dac/dac_audio/pytest_dac_audio.py | 16 + .../dac_audio}/tools/generate_audio_file.py | 0 .../dac_audio}/tools/sample_00.wav | Bin .../dac_audio}/tools/sample_01.wav | Bin .../dac_audio}/tools/sample_02.wav | Bin .../dac_basic}/CMakeLists.txt | 2 +- examples/peripherals/dac/dac_basic/README.md | 71 + .../dac/dac_basic/main/CMakeLists.txt | 2 + .../dac/dac_basic/main/dac_basic.c | 96 + .../dac/dac_basic/pytest_dac_basic.py | 34 + .../dac/dac_basic/sdkconfig.defaults | 1 + .../dac/dac_continuous/CMakeLists.txt | 6 + .../peripherals/dac/dac_continuous/README.md | 153 + .../dac/dac_continuous/main/CMakeLists.txt | 6 + .../dac/dac_continuous/main/dac_continuous.h | 41 + .../dac_continuous/main/dac_continuous_dma.c | 130 + .../dac_continuous/main/dac_continuous_main.c | 89 + .../main/dac_continuous_timer.c | 113 + .../dac_continuous/pytest_dac_continuous.py | 33 + .../dac/dac_continuous/sdkconfig.defaults | 1 + .../dac/dac_cosine_wave/CMakeLists.txt | 6 + .../peripherals/dac/dac_cosine_wave/README.md | 70 + .../dac/dac_cosine_wave/main/CMakeLists.txt | 2 + .../dac_cosine_wave/main/dac_cosine_wave.c | 111 + .../dac_cosine_wave/pytest_dac_cosine_wave.py | 35 + .../dac/dac_cosine_wave/sdkconfig.defaults | 1 + .../peripherals/i2s/i2s_adc_dac/README.md | 94 - .../i2s/i2s_adc_dac/main/CMakeLists.txt | 2 - .../i2s/i2s_adc_dac/main/app_main.c | 303 - .../partitions_adc_dac_example.csv | 6 - .../i2s/i2s_adc_dac/pytest_i2s_adc_dac.py | 15 - .../i2s/i2s_adc_dac/sdkconfig.defaults | 7 - examples/peripherals/wave_gen/README.md | 112 - .../peripherals/wave_gen/image/sawtooth.png | Bin 47422 -> 0 bytes examples/peripherals/wave_gen/image/sine.png | Bin 50835 -> 0 bytes .../peripherals/wave_gen/image/square.png | Bin 45087 -> 0 bytes .../peripherals/wave_gen/image/triangle.png | Bin 49953 -> 0 bytes .../peripherals/wave_gen/main/CMakeLists.txt | 2 - .../wave_gen/main/Kconfig.projbuild | 103 - .../wave_gen/main/wave_gen_example_main.c | 131 - examples/system/app_trace_to_host/README.md | 2 +- .../system/app_trace_to_host/example_test.py | 2 +- .../app_trace_to_host/main/Kconfig.projbuild | 20 - .../main/app_trace_to_host_example_main.c | 52 +- tools/ci/check_copyright_ignore.txt | 4 - 129 files changed, 4163 insertions(+), 8227 deletions(-) delete mode 100644 components/driver/dac.c create mode 100644 components/driver/dac/dac_dma.h create mode 100644 components/driver/dac/dac_driver.c rename components/driver/{ => dac}/esp32/dac_dma.c (60%) rename components/driver/{ => dac}/esp32s2/dac_dma.c (56%) create mode 100644 components/driver/deprecated/driver/dac.h delete mode 100644 components/driver/deprecated/driver/dac_common.h delete mode 100644 components/driver/deprecated/esp32/driver/dac.h delete mode 100644 components/driver/deprecated/esp32s2/driver/dac.h create mode 100644 components/driver/include/driver/dac_driver.h delete mode 100644 components/driver/include/driver/dac_new.h delete mode 100644 components/driver/include/esp_private/dac_dma.h delete mode 100644 components/driver/test/dac_dma_test/test_dac_audio_file.h delete mode 100644 components/driver/test/dac_dma_test/test_esp32s2.c delete mode 100644 components/driver/test/test_dac_dma.c create mode 100644 components/driver/test_apps/dac_test_apps/dac/CMakeLists.txt create mode 100644 components/driver/test_apps/dac_test_apps/dac/README.md create mode 100644 components/driver/test_apps/dac_test_apps/dac/main/CMakeLists.txt create mode 100644 components/driver/test_apps/dac_test_apps/dac/main/test_app_main.c create mode 100644 components/driver/test_apps/dac_test_apps/dac/main/test_dac.c create mode 100644 components/driver/test_apps/dac_test_apps/dac/main/test_dac_iram.c create mode 100644 components/driver/test_apps/dac_test_apps/dac/pytest_dac.py create mode 100644 components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.iram_safe create mode 100644 components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.release create mode 100644 components/driver/test_apps/dac_test_apps/dac/sdkconfig.defaults create mode 100644 components/driver/test_apps/dac_test_apps/legacy_dac_driver/CMakeLists.txt create mode 100644 components/driver/test_apps/dac_test_apps/legacy_dac_driver/README.md create mode 100644 components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/CMakeLists.txt create mode 100644 components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_app_main.c rename components/driver/{test/test_dac.c => test_apps/dac_test_apps/legacy_dac_driver/main/test_legacy_dac.c} (91%) create mode 100644 components/driver/test_apps/dac_test_apps/legacy_dac_driver/pytest_legacy_dac.py create mode 100644 components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.ci.release create mode 100644 components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.defaults delete mode 100644 components/hal/dac_hal.c delete mode 100644 components/hal/esp32s2/dac_hal.c delete mode 100644 components/hal/esp32s2/include/hal/dac_hal.h delete mode 100644 components/hal/include/hal/dac_hal.h create mode 100644 docs/_static/diagrams/dac/dac_file_structure.png create mode 100644 docs/_static/diagrams/dac/dac_state_machine.png rename examples/peripherals/{wave_gen => dac/dac_audio}/CMakeLists.txt (91%) create mode 100644 examples/peripherals/dac/dac_audio/README.md create mode 100644 examples/peripherals/dac/dac_audio/main/CMakeLists.txt rename examples/peripherals/{i2s/i2s_adc_dac => dac/dac_audio}/main/audio_example_file.h (100%) create mode 100644 examples/peripherals/dac/dac_audio/main/dac_audio.c create mode 100644 examples/peripherals/dac/dac_audio/pytest_dac_audio.py rename examples/peripherals/{i2s/i2s_adc_dac => dac/dac_audio}/tools/generate_audio_file.py (100%) rename examples/peripherals/{i2s/i2s_adc_dac => dac/dac_audio}/tools/sample_00.wav (100%) rename examples/peripherals/{i2s/i2s_adc_dac => dac/dac_audio}/tools/sample_01.wav (100%) rename examples/peripherals/{i2s/i2s_adc_dac => dac/dac_audio}/tools/sample_02.wav (100%) rename examples/peripherals/{i2s/i2s_adc_dac => dac/dac_basic}/CMakeLists.txt (91%) create mode 100644 examples/peripherals/dac/dac_basic/README.md create mode 100644 examples/peripherals/dac/dac_basic/main/CMakeLists.txt create mode 100644 examples/peripherals/dac/dac_basic/main/dac_basic.c create mode 100644 examples/peripherals/dac/dac_basic/pytest_dac_basic.py create mode 100644 examples/peripherals/dac/dac_basic/sdkconfig.defaults create mode 100644 examples/peripherals/dac/dac_continuous/CMakeLists.txt create mode 100644 examples/peripherals/dac/dac_continuous/README.md create mode 100644 examples/peripherals/dac/dac_continuous/main/CMakeLists.txt create mode 100644 examples/peripherals/dac/dac_continuous/main/dac_continuous.h create mode 100644 examples/peripherals/dac/dac_continuous/main/dac_continuous_dma.c create mode 100644 examples/peripherals/dac/dac_continuous/main/dac_continuous_main.c create mode 100644 examples/peripherals/dac/dac_continuous/main/dac_continuous_timer.c create mode 100644 examples/peripherals/dac/dac_continuous/pytest_dac_continuous.py create mode 100644 examples/peripherals/dac/dac_continuous/sdkconfig.defaults create mode 100644 examples/peripherals/dac/dac_cosine_wave/CMakeLists.txt create mode 100644 examples/peripherals/dac/dac_cosine_wave/README.md create mode 100644 examples/peripherals/dac/dac_cosine_wave/main/CMakeLists.txt create mode 100644 examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_wave.c create mode 100644 examples/peripherals/dac/dac_cosine_wave/pytest_dac_cosine_wave.py create mode 100644 examples/peripherals/dac/dac_cosine_wave/sdkconfig.defaults delete mode 100644 examples/peripherals/i2s/i2s_adc_dac/README.md delete mode 100644 examples/peripherals/i2s/i2s_adc_dac/main/CMakeLists.txt delete mode 100644 examples/peripherals/i2s/i2s_adc_dac/main/app_main.c delete mode 100644 examples/peripherals/i2s/i2s_adc_dac/partitions_adc_dac_example.csv delete mode 100644 examples/peripherals/i2s/i2s_adc_dac/pytest_i2s_adc_dac.py delete mode 100644 examples/peripherals/i2s/i2s_adc_dac/sdkconfig.defaults delete mode 100644 examples/peripherals/wave_gen/README.md delete mode 100644 examples/peripherals/wave_gen/image/sawtooth.png delete mode 100644 examples/peripherals/wave_gen/image/sine.png delete mode 100644 examples/peripherals/wave_gen/image/square.png delete mode 100644 examples/peripherals/wave_gen/image/triangle.png delete mode 100644 examples/peripherals/wave_gen/main/CMakeLists.txt delete mode 100644 examples/peripherals/wave_gen/main/Kconfig.projbuild delete mode 100644 examples/peripherals/wave_gen/main/wave_gen_example_main.c delete mode 100644 examples/system/app_trace_to_host/main/Kconfig.projbuild diff --git a/components/driver/.build-test-rules.yml b/components/driver/.build-test-rules.yml index 0521ccfeda..008356ddad 100644 --- a/components/driver/.build-test-rules.yml +++ b/components/driver/.build-test-rules.yml @@ -1,5 +1,13 @@ # Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps +components/driver/test_apps/dac_test_apps/dac: + disable: + - if: SOC_DAC_SUPPORTED != 1 + +components/driver/test_apps/dac_test_apps/legacy_dac_driver: + disable: + - if: SOC_DAC_SUPPORTED != 1 + components/driver/test_apps/i2s_test_apps: disable: - if: SOC_I2S_SUPPORTED != 1 diff --git a/components/driver/CMakeLists.txt b/components/driver/CMakeLists.txt index 2b63897d6f..7a5fd40aed 100644 --- a/components/driver/CMakeLists.txt +++ b/components/driver/CMakeLists.txt @@ -104,8 +104,10 @@ if(CONFIG_SOC_TOUCH_SENSOR_SUPPORTED) endif() if(CONFIG_SOC_DAC_SUPPORTED) - list(APPEND srcs "dac.c" - "deprecated/dac_common_legacy.c") + list(APPEND srcs "dac/dac_driver.c" + "dac/${target}/dac_dma.c" + "deprecated/dac_common_legacy.c" + "deprecated/${target}/dac_legacy.c") list(APPEND includes "deprecated/${target}") endif() @@ -114,12 +116,7 @@ if(CONFIG_SOC_SDIO_SLAVE_SUPPORTED) endif() if(${target} STREQUAL "esp32") - list(APPEND srcs "deprecated/adc_i2s_deprecated.c" - "deprecated/esp32/dac_legacy.c") -endif() - -if(${target} STREQUAL "esp32s2") - list(APPEND srcs "deprecated/esp32s2/dac_legacy.c") + list(APPEND srcs "deprecated/adc_i2s_deprecated.c") endif() if(BOOTLOADER_BUILD) diff --git a/components/driver/Kconfig b/components/driver/Kconfig index 33417b07bf..220d242883 100644 --- a/components/driver/Kconfig +++ b/components/driver/Kconfig @@ -401,6 +401,14 @@ menu "Driver Configurations" menu "DAC Configuration" depends on SOC_DAC_SUPPORTED + config DAC_CTRL_FUNC_IN_IRAM + bool "Place DAC control functions into IRAM" + default n + help + Place 'dac_channels_set_voltage' function into IRAM, + so that this function can be IRAM-safe and able to be called in the other IRAM interrupt context. + Enabling this option can improve driver performance as well. + config DAC_ISR_IRAM_SAFE bool "DAC ISR IRAM-Safe" default n @@ -422,6 +430,19 @@ menu "Driver Configurations" help Wether to enable the debug log message for DAC driver. Note that, this option only controls the DAC driver log, won't affect other drivers. + + config DAC_DMA_AUTO_16BIT_ALIGN + bool "Align the continuous data to 16 bit automatically" + depends on IDF_TARGET_ESP32 + default y + help + Whether to left shift the continuous data to align every bytes to 16 bits in the driver. + On ESP32, although the DAC resolution is only 8 bits, + the hardware requires 16 bits data in continuous mode. + By enabling this option, the driver will left shift 8 bits for the input data automatically. + Only disable this option when you decide to do this step by yourself. + Note that the driver will allocate a new piece of memory to save the converted data. + endmenu # DAC Configuration endmenu # Driver configurations diff --git a/components/driver/dac.c b/components/driver/dac.c deleted file mode 100644 index 75cc6e220c..0000000000 --- a/components/driver/dac.c +++ /dev/null @@ -1,643 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include -#include -#include "freertos/FreeRTOS.h" -#include "freertos/queue.h" -#include "freertos/semphr.h" - -#include "sdkconfig.h" - -#include "soc/soc_caps.h" -#include "soc/lldesc.h" -#include "soc/dac_periph.h" -#include "hal/dac_types.h" -#include "hal/dac_ll.h" -#include "driver/rtc_io.h" -#include "driver/dac_new.h" -#include "esp_private/dac_dma.h" - -#include "esp_check.h" - -#define DAC_DMA_MAX_BUF_SIZE 4092 -#if CONFIG_DAC_ISR_IRAM_SAFE - #define DAC_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_INTRDISABLED | ESP_INTR_FLAG_SHARED) - #define DAC_MEM_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT) -#else - #define DAC_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_INTRDISABLED | ESP_INTR_FLAG_SHARED) - #define DAC_MEM_ALLOC_CAPS MALLOC_CAP_DEFAULT -#endif -#define DAC_DMA_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_DMA) - -typedef enum { - DAC_STATE_INITIAL, /* Initial state, dac has been registered */ - DAC_STATE_OUTPUT_READY, /* DAC channels enabled and ready to output constant voltage */ - DAC_STATE_DMA_READY, /* DMA mode initialized, but not started */ - DAC_STATE_CW_READY, /* Cosine wave mode is initialized, but not started */ - DAC_STATE_DMA_RUNNING, /* DAC DMA dma is running, can't switch mode in this stage */ - DAC_STATE_CW_RUNNING, /* DAC cosine wave generator is running, can't switch mode in this stage */ -} dac_state_t; - -typedef struct { - QueueHandle_t msg_que; -#if CONFIG_DAC_ISR_IRAM_SAFE - StaticQueue_t *msg_que_struct; /*!< Static message queue struct */ - void *msg_que_storage; /*!< Static message queue storage */ -#endif - dac_dma_config_t cfg; - lldesc_t **desc; -} dac_dma_t; - -typedef struct dac_channel_chain_s { - dac_channel_t id; - struct dac_channel_chain_s *next; -} dac_channel_chain_t; - -struct dac_channel_group_s { - uint32_t chan_num; - dac_state_t state; - SemaphoreHandle_t mutex; -#if CONFIG_DAC_ISR_IRAM_SAFE - StaticSemaphore_t *mutex_struct; /*!< Static mutex struct */ -#endif -#if CONFIG_PM_ENABLE - esp_pm_lock_handle_t pm_lock; -#endif - bool is_enabled; - dac_dma_t dma; - dac_cosine_config_t sw_cfg; - dac_channel_chain_t *head; -}; - -typedef struct { - dac_channel_chain_t *chan[SOC_DAC_PERIPH_NUM]; -} dac_platform_t; - -static const char *TAG = "DAC"; - -static dac_platform_t s_dac = { - .chan = { - [0 ... SOC_DAC_PERIPH_NUM - 1] = NULL - }, -}; - -/* Global dac spin lock for the whole DAC driver */ -portMUX_TYPE dac_spinlock = portMUX_INITIALIZER_UNLOCKED; // TODO: check rtc_spinlock - -#define DAC_NULL_POINTER_CHECK(p) ESP_RETURN_ON_FALSE((p), ESP_ERR_INVALID_ARG, TAG, "input parameter '"#p"' is NULL") - -static void dac_free_dma_desc(dac_channel_group_handle_t handle) -{ - if (handle->dma.desc == NULL) { - return; - } - for (int i = 0; i < handle->dma.cfg.desc_num; i++) { - if (handle->dma.desc[i]) { - free(handle->dma.desc[i]); - handle->dma.desc[i] = NULL; - } - } - free(handle->dma.desc); - handle->dma.desc = NULL; -} - -static esp_err_t dac_alloc_dma_desc(dac_channel_group_handle_t handle) -{ - esp_err_t ret = ESP_OK; - - handle->dma.desc = (lldesc_t **) heap_caps_calloc(handle->dma.cfg.desc_num, sizeof(lldesc_t *), DAC_MEM_ALLOC_CAPS); - ESP_RETURN_ON_FALSE(handle->dma.desc, ESP_ERR_NO_MEM, TAG, "Faild to allocate dma descriptor buffer"); - for (int cnt = 0; cnt < handle->dma.cfg.desc_num; cnt++) { - /* Allocate DMA descpriptor */ - handle->dma.desc[cnt] = (lldesc_t *) heap_caps_calloc(1, sizeof(lldesc_t), DAC_DMA_ALLOC_CAPS); - ESP_GOTO_ON_FALSE(handle->dma.desc[cnt], ESP_ERR_NO_MEM, err, TAG, "failed to allocate dma descriptor"); - } - - return ESP_OK; -err: - /* Free DMA buffer if failed to allocate memory */ - dac_free_dma_desc(handle); - return ret; -} - -static void IRAM_ATTR dac_default_intr_handler(void *arg) -{ - dac_channel_group_handle_t handle = (dac_channel_group_handle_t)arg; - uint32_t dummy; - BaseType_t need_awoke = pdFALSE; - BaseType_t tmp; - if (dac_dma_periph_intr_is_triggered()) { - lldesc_t *fdesc = (lldesc_t *)dac_dma_periph_intr_get_eof_desc(); - if (xQueueIsQueueFullFromISR(handle->dma.msg_que) == pdTRUE) { - xQueueReceiveFromISR(handle->dma.msg_que, &dummy, &tmp); - need_awoke |= tmp; - } - xQueueSendFromISR(handle->dma.msg_que, fdesc, &tmp); - need_awoke |= tmp; - } - if (need_awoke == pdTRUE) { - portYIELD_FROM_ISR(); - } -} - -static void dac_free_channel_chain(dac_channel_chain_t *head) -{ - if (head->next) { - dac_free_channel_chain(head->next); - } - s_dac.chan[head->id - 1] = NULL; - free(head); -} - -/*-------------------------------------------------------------------------- - DAC common APIs - ---------------------------------------------------------------------------*/ -esp_err_t dac_new_channel_group(const dac_group_config_t *dac_cfg, dac_channel_group_handle_t *handle) -{ - esp_err_t ret = ESP_OK; - - DAC_NULL_POINTER_CHECK(dac_cfg); - DAC_NULL_POINTER_CHECK(handle); - - ESP_RETURN_ON_FALSE((uint32_t)dac_cfg->chan_sel > 0, ESP_ERR_INVALID_ARG, TAG, "invalid DAC channel"); - ESP_RETURN_ON_FALSE((32 - __builtin_clz((uint32_t)dac_cfg->chan_sel)) <= SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "invalid DAC channel"); - - dac_channel_group_handle_t group = (dac_channel_group_handle_t)calloc(1, sizeof(struct dac_channel_group_s)); - ESP_RETURN_ON_FALSE(group, ESP_ERR_NO_MEM, TAG, "No memory for DAC channel group"); - group->chan_num = 0; - group->is_enabled = false; - group->state = DAC_STATE_INITIAL; // Set static output as default -#if CONFIG_DAC_ISR_IRAM_SAFE - group->mutex_struct = (StaticSemaphore_t *)heap_caps_calloc(1, sizeof(StaticSemaphore_t), DAC_MEM_ALLOC_CAPS); - ESP_GOTO_ON_FALSE(group->mutex_struct, ESP_ERR_NO_MEM, err, TAG, "No memory for group mutex struct"); - group->mutex = xSemaphoreCreateMutexStatic(group->mutex_struct); -#else - group->mutex = xSemaphoreCreateMutex(); -#endif - ESP_GOTO_ON_FALSE(group->mutex, ESP_ERR_NO_MEM, err, TAG, "No memory for group mutex"); -#if CONFIG_PM_ENABLE - ESP_GOTO_ON_ERROR(esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_driver", &group->pm_lock), err, TAG, "Failed to create DAC pm lock"); -#endif - /* Register selected channels and link into a chain*/ - dac_channel_chain_t *temp = NULL; - for (uint32_t msk = (uint32_t)dac_cfg->chan_sel, i = 0; msk != 0; msk >>= 1, i++) { - if (msk & 0x01) { - /* Allocate memory for the channel when it is enabled */ - ESP_GOTO_ON_FALSE(!s_dac.chan[i], ESP_ERR_INVALID_STATE, err, TAG, "DAC channel %d has been registered already", i + 1); - dac_channel_chain_t *node = (dac_channel_chain_t *)calloc(1, sizeof(dac_channel_chain_t)); - ESP_GOTO_ON_FALSE(node, ESP_ERR_NO_MEM, err, TAG, "No memory for DAC channel object"); - node->id = i; - s_dac.chan[i] = node; - group->chan_num++; - /* Link the channel into a chain */ - if (!temp) { - temp = node; - group->head = node; - } else { - temp->next = node; - temp = temp->next; - } - } - } - - *handle = group; - - return ret; - -err: - /* Free the resource when error occurs */ - dac_del_channel_group(group); - group = NULL; - - return ret; -} - -esp_err_t dac_del_channel_group(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_INITIAL, ESP_ERR_INVALID_STATE, TAG, "This DAC group is not deinitialized"); - ESP_RETURN_ON_FALSE(!handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group is not disabled"); - - if (handle->mutex) { - vSemaphoreDelete(handle->mutex); - } -#if CONFIG_DAC_ISR_IRAM_SAFE - if (handle->mutex_struct) { - free(handle_mutex_struct); - } -#endif -#if CONFIG_PM_ENABLE - if (handle->pm_lock) { - esp_pm_lock_delete(handle->pm_lock); - handle->pm_lock = NULL; - } -#endif - if (handle->head) { - dac_free_channel_chain(handle->head); - } - free(handle); - - return ESP_OK; -} - -esp_err_t dac_channel_group_enable(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(!handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has been enabled already"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - - for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { - gpio_num_t gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[p->id]; - rtc_gpio_init(gpio_num); - rtc_gpio_set_direction(gpio_num, RTC_GPIO_MODE_DISABLED); - rtc_gpio_pullup_dis(gpio_num); - rtc_gpio_pulldown_dis(gpio_num); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_power_on(p->id); - dac_ll_rtc_sync_by_adc(false); - portEXIT_CRITICAL(&dac_spinlock); - } - handle->is_enabled = true; - /* If the group has not been intialized to other mode, set it `DAC_STATE_OUTPUT_READY` as default */ - if (handle->state == DAC_STATE_INITIAL) { - handle->state = DAC_STATE_OUTPUT_READY; - } - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channel_group_disable(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled yet"); - ESP_RETURN_ON_FALSE(handle->state < DAC_STATE_DMA_RUNNING, ESP_ERR_INVALID_STATE, TAG, "This DAC group is still running"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { - gpio_num_t gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[p->id]; - rtc_gpio_deinit(gpio_num); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_power_down(p->id); - portEXIT_CRITICAL(&dac_spinlock); - } - handle->is_enabled = false; - /* If the group has not been intialized to other mode, set it `DAC_STATE_INITIAL` as default */ - if (handle->state == DAC_STATE_OUTPUT_READY) { - handle->state = DAC_STATE_INITIAL; - } - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -/*-------------------------------------------------------------------------- - DAC constant voltage outputting APIs - ---------------------------------------------------------------------------*/ -esp_err_t dac_channel_group_output_constant_voltage(dac_channel_group_handle_t handle, uint8_t value) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_OUTPUT_READY, ESP_ERR_INVALID_STATE, TAG, "This DAC group has been configured to other mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - /* Set the constant voltage for each channel in the group */ - for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { - portENTER_CRITICAL(&dac_spinlock); - dac_ll_update_output_value(p->id, value); - portEXIT_CRITICAL(&dac_spinlock); - } - xSemaphoreGive(handle->mutex); - return ESP_OK; -} - -/*-------------------------------------------------------------------------- - DAC DMA outputting APIs - ---------------------------------------------------------------------------*/ -esp_err_t dac_channel_group_init_dma_output(dac_channel_group_handle_t handle, const dac_dma_config_t *dma_cfg) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->state < DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, "This DAC group has been initialized already"); - - esp_err_t ret = ESP_OK; - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - -#if CONFIG_DAC_ISR_IRAM_SAFE - handle->dma.msg_que_storage = (uint8_t *)heap_caps_calloc(desc_num - 1, sizeof(lldesc_t *), I2S_MEM_ALLOC_CAPS); - ESP_GOTO_ON_FALSE(handle->dma.msg_que_storage, ESP_ERR_NO_MEM, err, TAG, "No memory for message queue storage"); - handle->dma.msg_que_struct = (StaticQueue_t *)heap_caps_calloc(1, sizeof(StaticQueue_t), I2S_MEM_ALLOC_CAPS); - ESP_GOTO_ON_FALSE(handle->dma.msg_que_storage, ESP_ERR_NO_MEM, err, TAG, "No memory for message queue struct"); - handle->dma.msg_queue = xQueueCreateStatic(desc_num - 1, sizeof(lldesc_t *), handle->dma.msg_que_storage, handle->dma.msg_que_struct); -#else - handle->dma.msg_que = xQueueCreate(dma_cfg->desc_num - 1, sizeof(lldesc_t *)); -#endif - ESP_GOTO_ON_FALSE(handle->dma.msg_que, ESP_ERR_NO_MEM, err3, TAG, "No memory for message queue"); - /* Allocate DMA buffer */ - memcpy(&(handle->dma.cfg), dma_cfg, sizeof(dac_dma_config_t)); - ESP_GOTO_ON_ERROR(dac_alloc_dma_desc(handle), err2, TAG, "Failed to allocate memory for DMA buffers"); - - /* Initialize DAC DMA peripheral */ - ESP_GOTO_ON_ERROR(dac_dma_periph_init(handle->chan_num, dma_cfg->freq_hz, dma_cfg->chan_mode == DAC_CHANNEL_ALTERNATE), err2, TAG, "Failed to initialize DAC DMA peripheral"); - /* Register DMA interrupt */ - ESP_GOTO_ON_ERROR(dac_dma_periph_register_intr(dac_default_intr_handler, handle), err1, TAG, "Failed to register DMA interrupt"); - /* Connect DAC module to the DMA peripheral */ - portENTER_CRITICAL(&dac_spinlock); - dac_ll_digi_enable_dma(true); - portEXIT_CRITICAL(&dac_spinlock); - - handle->state = DAC_STATE_DMA_READY; - - xSemaphoreGive(handle->mutex); - - return ret; -err1: - dac_dma_periph_deinit(); -err2: - dac_free_dma_desc(handle); -err3: - if (handle->dma.msg_que) { - vQueueDelete(handle->dma.msg_que); - } -#if CONFIG_DAC_ISR_IRAM_SAFE - if (handle->dma.msq_que_struct) { - free(handle->dma.msq_que_struct); - } - if (handle->dma.msq_que_storage) { - free(handle->dma.msq_que_storage); - } -#endif - xSemaphoreGive(handle->mutex); - return ret; -} - -esp_err_t dac_channel_group_deinit_dma_output(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, - "This DAC group is still running or has been configured to other mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - - /* Free DMA buffer */ - dac_free_dma_desc(handle); - - /* Deregister DMA interrupt */ - ESP_RETURN_ON_ERROR(dac_dma_periph_deregister_intr(), TAG, "Failed to deregister DMA interrupt"); - /* Deinitialize DMA peripheral */ - ESP_RETURN_ON_ERROR(dac_dma_periph_deinit(), TAG, "Failed to deinitialize DAC DMA peripheral"); - /* Disconnect DAC module to the DMA peripheral */ - portENTER_CRITICAL(&dac_spinlock); - dac_ll_digi_enable_dma(false); - portEXIT_CRITICAL(&dac_spinlock); - - if (handle->is_enabled) { - handle->state = DAC_STATE_OUTPUT_READY; - } else { - handle->state = DAC_STATE_INITIAL; - } - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channel_group_start_dma_output(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, - "This DAC group has started already or not working at DMA mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); -#ifdef CONFIG_PM_ENABLE - esp_pm_lock_acquire(handle->pm_lock); -#endif - dac_dma_periph_enable(); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_digi_enable_dma(true); - portEXIT_CRITICAL(&dac_spinlock); - handle->state = DAC_STATE_DMA_RUNNING; - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channel_group_stop_dma_output(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_RUNNING, ESP_ERR_INVALID_STATE, TAG, - "This DAC group has stopped already or not working at DMA mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - dac_dma_periph_disable(); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_digi_enable_dma(false); - portEXIT_CRITICAL(&dac_spinlock); -#ifdef CONFIG_PM_ENABLE - esp_pm_lock_release(handle->pm_lock); -#endif - handle->state = DAC_STATE_DMA_READY; - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -static uint32_t dac_load_dma_data(lldesc_t *desc, uint8_t *data, uint32_t size) -{ - uint32_t byte_to_load = size > DAC_DMA_MAX_BUF_SIZE ? DAC_DMA_MAX_BUF_SIZE : size; - desc->owner = 1; - desc->eof = 1; - desc->sosf = 0; - desc->length = byte_to_load; - desc->size = byte_to_load; - desc->buf = data; - desc->offset = 0; - return byte_to_load; -} -// TODO: wait until all data sent or all data loaded? If all data loaded, need to monitor end of frame -esp_err_t dac_channel_group_write_acyclicly(dac_channel_group_handle_t handle, uint8_t *buf, size_t buf_size, uint32_t timeout_ms) -{ - DAC_NULL_POINTER_CHECK(handle); - DAC_NULL_POINTER_CHECK(buf); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_RUNNING, ESP_ERR_INVALID_STATE, TAG, "This DAC group is not started"); -#if CONFIG_DAC_ISR_IRAM_SAFE - ESP_RETURN_ON_ERROR(esp_ptr_internal(buf), ESP_ERR_INVALID_ARG, err, TAG, "the buffer is not in internal RAM"); -#endif - - esp_err_t ret = ESP_OK; - ESP_RETURN_ON_FALSE(xSemaphoreTake(handle->mutex, pdMS_TO_TICKS(timeout_ms) == pdTRUE), ESP_ERR_TIMEOUT, TAG, "Take semaphore timeout"); - /* Reset the queue to drop the legacy descriptors */ - xQueueReset(handle->dma.msg_que); - /* Break the legacy descriptor chain for the new data */ - for (int i=0; i < handle->dma.cfg.desc_num; i++) { - handle->dma.desc[i]->empty = 0; - } - /* Pre-load data to DMA */ - size_t index = 0; - uint32_t pending_desc_cnt = 0; - for (int i = 0; i < handle->dma.cfg.desc_num && index < buf_size; i++, pending_desc_cnt++) { - index += dac_load_dma_data(handle->dma.desc[i], &buf[index], buf_size - index); - /* Link to the previous descriptor */ - if (i > 0) { - handle->dma.desc[i-1]->empty = (uint32_t)handle->dma.desc[i]; - } - } - /* Link the start and end desc as a ring if the buffer not loaded conmpletely */ - handle->dma.desc[pending_desc_cnt-1]->empty = index < buf_size ? (uint32_t)handle->dma.desc[0] : 0; - dac_dma_periph_dma_trans_start((uint32_t)handle->dma.desc[0]); - /* Wait until all data be sent */ - for (lldesc_t *finish_desc = NULL; pending_desc_cnt > 0; pending_desc_cnt--) { - ESP_GOTO_ON_FALSE(xQueueReceive(handle->dma.msg_que, &finish_desc, pdMS_TO_TICKS(timeout_ms)) == pdTRUE, - ESP_ERR_TIMEOUT, err, TAG, "Receive message queue timeout"); - /* Load those unsent data */ - if (index < buf_size) { - index += dac_load_dma_data(finish_desc, &buf[index], buf_size - index); - pending_desc_cnt++; - /* If all date loaded, break the ring desc */ - if (index >= buf_size) { - finish_desc->empty = 0; - } - } - } -err: - xSemaphoreGive(handle->mutex); - return ret; -} - -esp_err_t dac_channel_group_write_cyclicly(dac_channel_group_handle_t handle, uint8_t *buf, size_t buf_size, uint32_t timeout_ms) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_RUNNING, ESP_ERR_INVALID_STATE, TAG, "This DAC group is not started"); - ESP_RETURN_ON_FALSE(buf_size < (DAC_DMA_MAX_BUF_SIZE * handle->dma.cfg.desc_num), - ESP_ERR_INVALID_ARG, TAG, "The cyclic buffer size exceeds the total DMA buffer size: desc_num * %d = %d", - DAC_DMA_MAX_BUF_SIZE, DAC_DMA_MAX_BUF_SIZE * handle->dma.cfg.desc_num); -#if CONFIG_DAC_ISR_IRAM_SAFE - ESP_RETURN_ON_ERROR(esp_ptr_internal(buf), ESP_ERR_INVALID_ARG, err, TAG, "the buffer is not in internal RAM"); -#endif - ESP_RETURN_ON_FALSE(xSemaphoreTake(handle->mutex, pdMS_TO_TICKS(timeout_ms) == pdTRUE), ESP_ERR_TIMEOUT, TAG, "Take semaphore timeout"); - /* If the buffer size is small, split it into two descriptors */ - if (buf_size > DAC_DMA_MAX_BUF_SIZE) { - size_t index = 0; - int i = 0; - for (i = 0; (i < handle->dma.cfg.desc_num) && (index < buf_size); i++) { - index += dac_load_dma_data(handle->dma.desc[i], &buf[index], buf_size - index); - /* Link to the previous descriptor */ - if (i > 0) { - handle->dma.desc[i-1]->empty = (uint32_t)handle->dma.desc[i]; - } - } - /* Link as a loop */ - handle->dma.desc[i-1]->empty = (uint32_t)handle->dma.desc[0]; - } - /* If the buffer size is small, split it into two descriptors */ - else { - uint32_t half = buf_size / 2; - dac_load_dma_data(handle->dma.desc[0], buf, half); - dac_load_dma_data(handle->dma.desc[1], &buf[half], buf_size - half); - handle->dma.desc[0]->empty = (uint32_t)handle->dma.desc[1]; - handle->dma.desc[1]->empty = (uint32_t)handle->dma.desc[0]; - } - dac_dma_periph_dma_trans_start((uint32_t)handle->dma.desc[0]); - xSemaphoreGive(handle->mutex); - return ESP_OK; -} - -/*-------------------------------------------------------------------------- - DAC cosine wave outputting APIs - ---------------------------------------------------------------------------*/ -esp_err_t dac_channel_group_init_cosine_output(dac_channel_group_handle_t handle, const dac_cosine_config_t *cw_cfg) -{ - DAC_NULL_POINTER_CHECK(handle); - DAC_NULL_POINTER_CHECK(cw_cfg); - ESP_RETURN_ON_FALSE((handle->state == DAC_STATE_INITIAL) | (handle->state == DAC_STATE_OUTPUT_READY), - ESP_ERR_INVALID_STATE, TAG, "This DAC group has been initialized already"); - ESP_RETURN_ON_FALSE(cw_cfg->freq_hz >= 130, ESP_ERR_NOT_SUPPORTED, TAG, "The cosine wave generator doesn't support frequency below 130 Hz"); - ESP_RETURN_ON_FALSE(cw_cfg->freq_hz <= 55000, ESP_ERR_NOT_SUPPORTED, TAG, "The cosine wave generator doesn't support frequency beyond 55000 Hz"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - portENTER_CRITICAL(&dac_spinlock); - for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { - /* Connect DAC module to cosine wave generator */ - dac_ll_cw_set_channel(p->id, true); - /* Set coefficients for cosine wave generator */ - dac_ll_cw_set_freq(cw_cfg->freq_hz); - dac_ll_cw_set_scale(p->id, cw_cfg->scale); - dac_ll_cw_set_phase(p->id, cw_cfg->phase); - dac_ll_cw_set_dc_offset(p->id, cw_cfg->offset); - } - portEXIT_CRITICAL(&dac_spinlock); - handle->state = DAC_STATE_CW_READY; - xSemaphoreGive(handle->mutex); - return ESP_OK; -} - -esp_err_t dac_channel_group_deinit_cosine_output(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_READY, ESP_ERR_INVALID_STATE, TAG, - "This DAC group is still running or not working at cosine wave mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - portENTER_CRITICAL(&dac_spinlock); - for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { - /* Disonnect DAC module to cosine wave generator */ - dac_ll_cw_set_channel(p->id, false); - } - portEXIT_CRITICAL(&dac_spinlock); - if (handle->is_enabled) { - handle->state = DAC_STATE_OUTPUT_READY; - } else { - handle->state = DAC_STATE_INITIAL; - } - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channel_group_start_cosine_output(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_READY, ESP_ERR_INVALID_STATE, TAG, - "This DAC group has started already or not working at cosine wave mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); -#ifdef CONFIG_PM_ENABLE - esp_pm_lock_acquire(handle->pm_lock); -#endif - portENTER_CRITICAL(&dac_spinlock); - dac_ll_cw_generator_enable(); - portEXIT_CRITICAL(&dac_spinlock); - handle->state = DAC_STATE_CW_RUNNING; - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channel_group_stop_cosine_output(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_RUNNING, ESP_ERR_INVALID_STATE, TAG, - "This DAC group has stopped already or not working at cosine wave mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_cw_generator_disable(); - portEXIT_CRITICAL(&dac_spinlock); -#ifdef CONFIG_PM_ENABLE - esp_pm_lock_release(handle->pm_lock); -#endif - handle->state = DAC_STATE_CW_READY; - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} diff --git a/components/driver/dac/dac_dma.h b/components/driver/dac/dac_dma.h new file mode 100644 index 0000000000..e23aaf827d --- /dev/null +++ b/components/driver/dac/dac_dma.h @@ -0,0 +1,102 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "esp_err.h" +#include "esp_intr_alloc.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +#define DAC_DMA_EOF_INTR 0x01 +#define DAC_DMA_TEOF_INTR 0x02 + +/** + * @brief Initialize DAC DMA peripheral + * + * @param[in] freq_hz DAC data frequency per channel + * @param[in] is_alternate Transmit data alternate between two channels or simultaneously + * @param[in] is_apll Whether use APLL as DAC digital controller clock source + * @return + * - ESP_ERR_NOT_FOUND The DMA peripheral has been occupied + * - ESP_ERR_NO_MEM No memory for the DMA peripheral struct + * - ESP_ERR_INVALID_ARG The frequency is outof range + * - ESP_OK Initialize DAC DMA peripheral success + */ +esp_err_t dac_dma_periph_init(uint8_t chan_num, uint32_t freq_hz, bool is_alternate, bool is_apll); + +/** + * @brief Deinitialize DAC DMA peripheral + * + * @return + * - ESP_ERR_INVALID_STATE The DAC DMA has deinitialized already + * - ESP_OK Deinitialize DAC DMA peripheral success + */ +esp_err_t dac_dma_periph_deinit(void); + +/** + * @brief Register the DMA interrupt + * + * @param[in] intr_handler_func DMA interrupt handler function + * @param[in] user_ctx User contex that pass to the interrupt handler + * @return + * - ESP_ERR_INVALID_STATE DAC DMA peripheral is not initialized + * - ESP_OK Register DMA interrupt success + */ +esp_err_t dac_dma_periph_register_intr(intr_handler_t intr_handler_func, void *user_ctx); + +/** + * @brief Deregister the DMA interrupt + * + * @return + * - ESP_ERR_INVALID_STATE DAC DMA peripheral is not initialized + * - ESP_OK Deregister DMA interrupt success + */ +esp_err_t dac_dma_periph_deregister_intr(void); + +/** + * @brief Enable the DMA and interrupt of the DAC DMA peripheral + * + */ +void dac_dma_periph_enable(void); + +/** + * @brief Disable the DMA and interrupt of the DAC DMA peripheral + * + */ +void dac_dma_periph_disable(void); + +/** + * @brief Whether the TX_EOF interrupt is triggered + * + * @return + * - true TX_EOF interrupt is triggered + * - false TX_EOF interrupt is not triggered + */ +uint32_t dac_dma_periph_intr_is_triggered(void); + +/** + * @brief Get the descriptor that just finished sending data + * + * @return + * - uint32_t The address of the EOF descriptor + */ +uint32_t dac_dma_periph_intr_get_eof_desc(void); + +/** + * @brief Start a DMA transaction + * @note DMA transaction will stop when reaches the tail of the descriptor link + * + * @param[in] desc_addr Descriptor address + */ +void dac_dma_periph_dma_trans_start(uint32_t desc_addr); + +#ifdef __cplusplus +} +#endif diff --git a/components/driver/dac/dac_driver.c b/components/driver/dac/dac_driver.c new file mode 100644 index 0000000000..ed5a7039ab --- /dev/null +++ b/components/driver/dac/dac_driver.c @@ -0,0 +1,781 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" +#include "freertos/semphr.h" + +#include "sdkconfig.h" + +#include "rom/lldesc.h" +#include "soc/soc_caps.h" +#include "soc/dac_periph.h" +#include "hal/dac_types.h" +#include "hal/dac_ll.h" +#include "driver/rtc_io.h" +#include "driver/dac_driver.h" +#include "dac_dma.h" +#include "esp_memory_utils.h" +#include "clk_ctrl_os.h" + +#if CONFIG_DAC_ENABLE_DEBUG_LOG +// The local log level must be defined before including esp_log.h +// Set the maximum log level for this source file +#define LOG_LOCAL_LEVEL ESP_LOG_DEBUG +#endif +#include "esp_check.h" +#if CONFIG_PM_ENABLE +#include "esp_pm.h" +#endif + +#define DAC_DMA_MAX_BUF_SIZE 4092 // Max DMA buffer size is 4095 but better to align with 4 bytes, so set 4092 here +#if CONFIG_DAC_ISR_IRAM_SAFE || CONFIG_DAC_CTRL_FUNC_IN_IRAM + #define DAC_MEM_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT) +#else + #define DAC_MEM_ALLOC_CAPS MALLOC_CAP_DEFAULT +#endif + +#if CONFIG_DAC_ISR_IRAM_SAFE + #define DAC_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_INTRDISABLED | ESP_INTR_FLAG_SHARED) +#else + #define DAC_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_INTRDISABLED | ESP_INTR_FLAG_SHARED) +#endif + +#define DAC_DMA_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_DMA) + +#define DAC_STAILQ_REMOVE(head, elm, type, field) do { \ + if ((head)->stqh_first == (elm)) { \ + STAILQ_REMOVE_HEAD((head), field); \ + } else { \ + struct type *curelm = (head)->stqh_first; \ + while (curelm->field.stqe_next != (elm) && \ + curelm->field.stqe_next != NULL) \ + curelm = curelm->field.stqe_next; \ + if (curelm->field.stqe_next && (curelm->field.stqe_next = \ + curelm->field.stqe_next->field.stqe_next) == NULL) \ + (head)->stqh_last = &(curelm)->field.stqe_next; \ + } \ +} while (/*CONSTCOND*/0) + +typedef enum { + DAC_STATE_INITIAL, /* Initial state, dac has been registered */ + DAC_STATE_OUTPUT_READY, /* DAC channels enabled and ready to output constant voltage */ + DAC_STATE_DMA_READY, /* DMA mode initialized, but not started */ + DAC_STATE_CW_READY, /* Cosine wave mode is initialized, but not started */ + DAC_STATE_DMA_ENABLED, /* DAC DMA dma is enabled, can't switch mode in this stage */ + DAC_STATE_CW_RUNNING, /* DAC cosine wave generator is running, can't switch mode in this stage */ +} dac_state_t; + +typedef struct { + QueueHandle_t desc_pool; /* The pool of available descriptors + * The descriptors in the pool are not linked in to pending chain */ +#if CONFIG_DAC_ISR_IRAM_SAFE + StaticQueue_t *desc_pool_struct; /* Static message queue struct */ + void *desc_pool_storage; /* Static message queue storage */ +#endif + dac_conti_config_t cfg; + STAILQ_HEAD(desc_chain_s, lldesc_s) head; /* Head of the descriptor chain + * The descriptors in the chain are pending to be sent or sending now */ + lldesc_t **desc; + uint8_t **bufs; + volatile bool is_running; /* Is DMA running or stopped */ + volatile bool is_cyclic; /* Is transport data cyclicly */ +} dac_dma_t; + +typedef struct dac_channel_chain_node_s { + dac_channel_t id; + SLIST_ENTRY(dac_channel_chain_node_s) next; +} dac_channel_info_t; + +typedef SLIST_HEAD(dac_channel_chain_s, dac_channel_chain_node_s) dac_channel_chain_t; + +struct dac_channels_s { + uint32_t chan_num; + dac_state_t state; + SemaphoreHandle_t mutex; + StaticSemaphore_t *mutex_struct; /*!< Static mutex struct */ +#if CONFIG_PM_ENABLE + esp_pm_lock_handle_t pm_lock; +#endif + bool is_enabled; + dac_dma_t dma; + dac_cosine_config_t sw_cfg; + dac_channel_chain_t head; +}; + +typedef struct { + dac_channel_info_t *chan[SOC_DAC_PERIPH_NUM]; + bool dma_in_use; +} dac_platform_t; + +static const char *TAG = "DAC"; + +static dac_platform_t s_dac = { + .chan = { + [0 ... SOC_DAC_PERIPH_NUM - 1] = NULL, + }, + .dma_in_use = false, +}; + +/* Global dac spin lock for the whole DAC driver */ +portMUX_TYPE dac_spinlock = portMUX_INITIALIZER_UNLOCKED; // TODO: check rtc_spinlock + +#define DAC_NULL_POINTER_CHECK(p) ESP_RETURN_ON_FALSE((p), ESP_ERR_INVALID_ARG, TAG, "input parameter '"#p"' is NULL") + +static void dac_free_dma_desc(dac_channels_handle_t handle) +{ + STAILQ_EMPTY(&handle->dma.head); + if (handle->dma.desc != NULL) { + for (int i = 0; i < handle->dma.cfg.desc_num; i++) { + if (handle->dma.desc[i]) { + free(handle->dma.desc[i]); + handle->dma.desc[i] = NULL; + } + } + free(handle->dma.desc); + handle->dma.desc = NULL; + } + + if (handle->dma.bufs != NULL) { + for (int i = 0; i < handle->dma.cfg.desc_num; i++) { + if (handle->dma.bufs[i]) { + free(handle->dma.bufs[i]); + handle->dma.bufs[i] = NULL; + } + } + free(handle->dma.bufs); + handle->dma.bufs = NULL; + } +} + +static esp_err_t dac_alloc_dma_desc(dac_channels_handle_t handle) +{ + esp_err_t ret = ESP_OK; + + STAILQ_INIT(&handle->dma.head); + handle->dma.desc = (lldesc_t **) heap_caps_calloc(handle->dma.cfg.desc_num, sizeof(lldesc_t *), DAC_MEM_ALLOC_CAPS); + ESP_RETURN_ON_FALSE(handle->dma.desc, ESP_ERR_NO_MEM, TAG, "Faild to allocate dma descriptor array"); + handle->dma.bufs = (uint8_t **) heap_caps_calloc(handle->dma.cfg.desc_num, sizeof(uint8_t *), DAC_MEM_ALLOC_CAPS); + ESP_RETURN_ON_FALSE(handle->dma.bufs, ESP_ERR_NO_MEM, TAG, "Faild to allocate dma buffer array"); + for (int cnt = 0; cnt < handle->dma.cfg.desc_num; cnt++) { + /* Allocate DMA descpriptor */ + handle->dma.desc[cnt] = (lldesc_t *) heap_caps_calloc(1, sizeof(lldesc_t), DAC_DMA_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(handle->dma.desc[cnt], ESP_ERR_NO_MEM, err, TAG, "failed to allocate dma descriptor"); + /* Allocate DMA buffer */ + handle->dma.bufs[cnt] = (uint8_t *) heap_caps_calloc(1, handle->dma.cfg.buf_size, DAC_DMA_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(handle->dma.desc[cnt], ESP_ERR_NO_MEM, err, TAG, "failed to allocate dma buffer"); + /* Assign initial value */ + lldesc_config(handle->dma.desc[cnt], LLDESC_HW_OWNED, 1, 0, handle->dma.cfg.buf_size); + handle->dma.desc[cnt]->size = handle->dma.cfg.buf_size; + handle->dma.desc[cnt]->buf = handle->dma.bufs[cnt]; + handle->dma.desc[cnt]->offset = 0; + xQueueSend(handle->dma.desc_pool, &handle->dma.desc[cnt], portMAX_DELAY); + } + + return ESP_OK; +err: + /* Free DMA buffer if failed to allocate memory */ + dac_free_dma_desc(handle); + return ret; +} + +static void IRAM_ATTR dac_default_intr_handler(void *arg) +{ + dac_channels_handle_t handle = (dac_channels_handle_t)arg; + uint32_t dummy; + BaseType_t need_awoke = pdFALSE; + BaseType_t tmp; + uint32_t intr_mask = dac_dma_periph_intr_is_triggered(); + if ((intr_mask & DAC_DMA_EOF_INTR) && (!handle->dma.is_cyclic)) { + lldesc_t *fdesc = (lldesc_t *)dac_dma_periph_intr_get_eof_desc(); + /* Remove the descriptor in the chain that finished sent */ + portENTER_CRITICAL(&dac_spinlock); + if (STAILQ_FIRST(&handle->dma.head) != NULL) { + DAC_STAILQ_REMOVE(&handle->dma.head, fdesc, lldesc_s, qe); + } + portEXIT_CRITICAL(&dac_spinlock); + if (xQueueIsQueueFullFromISR(handle->dma.desc_pool) == pdTRUE) { + xQueueReceiveFromISR(handle->dma.desc_pool, &dummy, &tmp); + need_awoke |= tmp; + } + xQueueSendFromISR(handle->dma.desc_pool, &fdesc, &tmp); + need_awoke |= tmp; + } + if (intr_mask & DAC_DMA_TEOF_INTR) { + /* Total end of frame interrupt received, DMA stopped */ + handle->dma.is_running = false; + } + if (need_awoke == pdTRUE) { + portYIELD_FROM_ISR(); + } +} + +/*-------------------------------------------------------------------------- + DAC common APIs + ---------------------------------------------------------------------------*/ +esp_err_t dac_new_channels(const dac_channels_config_t *dac_cfg, dac_channels_handle_t *handle) +{ +#if CONFIG_DAC_ENABLE_DEBUG_LOG + esp_log_level_set(TAG, ESP_LOG_DEBUG); +#endif + esp_err_t ret = ESP_OK; + + DAC_NULL_POINTER_CHECK(dac_cfg); + DAC_NULL_POINTER_CHECK(handle); + + ESP_RETURN_ON_FALSE((uint32_t)dac_cfg->chan_sel > 0, ESP_ERR_INVALID_ARG, TAG, "invalid DAC channel"); + ESP_RETURN_ON_FALSE((32 - __builtin_clz((uint32_t)dac_cfg->chan_sel)) <= SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "invalid DAC channel"); + + dac_channels_handle_t channels = (dac_channels_handle_t)heap_caps_calloc(1, sizeof(struct dac_channels_s), DAC_MEM_ALLOC_CAPS); + ESP_RETURN_ON_FALSE(channels, ESP_ERR_NO_MEM, TAG, "No memory for DAC channels' structure"); + + channels->mutex_struct = (StaticSemaphore_t *)heap_caps_calloc(1, sizeof(StaticSemaphore_t), DAC_MEM_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(channels->mutex_struct, ESP_ERR_NO_MEM, err, TAG, "No memory for channels mutex struct"); + channels->mutex = xSemaphoreCreateMutexStatic(channels->mutex_struct); + ESP_GOTO_ON_FALSE(channels->mutex, ESP_ERR_NO_MEM, err, TAG, "No memory for channels mutex"); + channels->chan_num = 0; + channels->is_enabled = false; + channels->state = DAC_STATE_INITIAL; // Set static output as default + /* Register selected channels and link into a chain*/ + SLIST_INIT(&channels->head); + for (uint32_t msk = (uint32_t)dac_cfg->chan_sel, i = 0; msk != 0; msk >>= 1, i++) { + if (msk & 0x01) { + /* Allocate memory for the channel when it is enabled */ + ESP_GOTO_ON_FALSE(!s_dac.chan[i], ESP_ERR_INVALID_STATE, err, TAG, "DAC channel %d has been registered already", i + 1); + dac_channel_info_t *node = (dac_channel_info_t *)calloc(1, sizeof(dac_channel_info_t)); + ESP_GOTO_ON_FALSE(node, ESP_ERR_NO_MEM, err, TAG, "No memory for DAC channel object"); + node->id = i; + s_dac.chan[i] = node; + channels->chan_num++; + /* Add the channel node into a chain */ + SLIST_INSERT_HEAD(&channels->head, node, next); + } + } + + *handle = channels; + + return ret; + +err: + /* Free the resource when error occurs */ + dac_del_channels(channels); + channels = NULL; + + return ret; +} + +esp_err_t dac_del_channels(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_INITIAL, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is not deinitialized"); + ESP_RETURN_ON_FALSE(!handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is not disabled"); + + if (handle->mutex) { + vSemaphoreDelete(handle->mutex); + } + if (handle->mutex_struct) { + free(handle->mutex_struct); + } + while (SLIST_FIRST(&handle->head)) { + dac_channel_info_t *node = SLIST_FIRST(&handle->head); + SLIST_REMOVE_HEAD(&handle->head, next); + s_dac.chan[node->id] = NULL; + free(node); + } + free(handle); + + return ESP_OK; +} + +esp_err_t dac_channels_enable(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(!handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has been enabled already"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + + dac_channel_info_t *p; + SLIST_FOREACH(p, &handle->head, next) { + gpio_num_t gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[p->id]; + rtc_gpio_init(gpio_num); + rtc_gpio_set_direction(gpio_num, RTC_GPIO_MODE_DISABLED); + rtc_gpio_pullup_dis(gpio_num); + rtc_gpio_pulldown_dis(gpio_num); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_power_on(p->id); + dac_ll_rtc_sync_by_adc(false); + portEXIT_CRITICAL(&dac_spinlock); + } + handle->is_enabled = true; + /* If the channels has not been intialized to other mode, set it `DAC_STATE_OUTPUT_READY` as default */ + if (handle->state == DAC_STATE_INITIAL) { + handle->state = DAC_STATE_OUTPUT_READY; + } + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channels_disable(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled yet"); + ESP_RETURN_ON_FALSE(handle->state < DAC_STATE_DMA_ENABLED, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is still running"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + dac_channel_info_t *p; + SLIST_FOREACH(p, &handle->head, next) { + gpio_num_t gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[p->id]; + rtc_gpio_deinit(gpio_num); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_power_down(p->id); + portEXIT_CRITICAL(&dac_spinlock); + } + handle->is_enabled = false; + /* If the channels has not been intialized to other mode, set it `DAC_STATE_INITIAL` as default */ + if (handle->state == DAC_STATE_OUTPUT_READY) { + handle->state = DAC_STATE_INITIAL; + } + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +/*-------------------------------------------------------------------------- + DAC direct voltage outputting APIs + ---------------------------------------------------------------------------*/ +#if CONFIG_DAC_ISR_IRAM_SAFE +IRAM_ATTR +#endif +esp_err_t dac_channels_set_voltage(dac_channels_handle_t handle, uint8_t value) +{ + ESP_RETURN_ON_FALSE_ISR(handle, ESP_ERR_INVALID_ARG, TAG, "NULL pointer"); + ESP_RETURN_ON_FALSE_ISR(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "Not enabled"); + ESP_RETURN_ON_FALSE_ISR(handle->state == DAC_STATE_OUTPUT_READY, ESP_ERR_INVALID_STATE, TAG, "Incorrect mode"); + + /* Set the voltage for each channel in the channels */ + dac_channel_info_t *p; + SLIST_FOREACH(p, &handle->head, next) { + portENTER_CRITICAL(&dac_spinlock); + dac_ll_update_output_value(p->id, value); + portEXIT_CRITICAL(&dac_spinlock); + } + return ESP_OK; +} + +/*-------------------------------------------------------------------------- + DAC continuous mode APIs + ---------------------------------------------------------------------------*/ +esp_err_t dac_channels_init_continuous_mode(dac_channels_handle_t handle, const dac_conti_config_t *conti_cfg) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->state < DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has been initialized already"); + ESP_RETURN_ON_FALSE(conti_cfg->desc_num > 1, ESP_ERR_INVALID_STATE, TAG, "At least two DMA descriptor needed"); + ESP_RETURN_ON_FALSE(!s_dac.dma_in_use, ESP_ERR_INVALID_STATE, TAG, "Only one set of channels can use DMA output"); + + esp_err_t ret = ESP_OK; + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + +#if CONFIG_DAC_ISR_IRAM_SAFE + handle->dma.desc_pool_storage = (uint8_t *)heap_caps_calloc(conti_cfg->desc_num, sizeof(lldesc_t *), DAC_MEM_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(handle->dma.desc_pool_storage, ESP_ERR_NO_MEM, err3, TAG, "No memory for message queue storage"); + handle->dma.desc_pool_struct = (StaticQueue_t *)heap_caps_calloc(1, sizeof(StaticQueue_t), DAC_MEM_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(handle->dma.desc_pool_struct , ESP_ERR_NO_MEM, err3, TAG, "No memory for message queue struct"); + handle->dma.desc_pool = xQueueCreateStatic(conti_cfg->desc_num, sizeof(lldesc_t *), handle->dma.desc_pool_storage, handle->dma.desc_pool_struct); +#else + handle->dma.desc_pool = xQueueCreate(conti_cfg->desc_num, sizeof(lldesc_t *)); +#endif + ESP_GOTO_ON_FALSE(handle->dma.desc_pool, ESP_ERR_NO_MEM, err3, TAG, "No memory for message queue"); +#if CONFIG_PM_ENABLE + esp_pm_lock_type_t pm_lock_type = conti_cfg->clk_src == DAC_DIGI_CLK_SRC_APLL ? ESP_PM_NO_LIGHT_SLEEP : ESP_PM_APB_FREQ_MAX; + ESP_GOTO_ON_ERROR(esp_pm_lock_create(pm_lock_type, 0, "dac_driver", &handle->pm_lock), err3, TAG, "Failed to create DAC pm lock"); +#endif + + handle->dma.is_running = false; + /* Allocate DMA buffer */ + memcpy(&(handle->dma.cfg), conti_cfg, sizeof(dac_conti_config_t)); + ESP_GOTO_ON_ERROR(dac_alloc_dma_desc(handle), err2, TAG, "Failed to allocate memory for DMA buffers"); + + /* Initialize DAC DMA peripheral */ + ESP_GOTO_ON_ERROR(dac_dma_periph_init(handle->chan_num ,conti_cfg->freq_hz, conti_cfg->chan_mode == DAC_CHANNEL_MODE_ALTER, conti_cfg->clk_src == DAC_DIGI_CLK_SRC_APLL), + err2, TAG, "Failed to initialize DAC DMA peripheral"); + /* Register DMA interrupt */ + ESP_GOTO_ON_ERROR(dac_dma_periph_register_intr(dac_default_intr_handler, handle), err1, TAG, "Failed to register DMA interrupt"); + /* Connect DAC module to the DMA peripheral */ + portENTER_CRITICAL(&dac_spinlock); + dac_ll_digi_enable_dma(true); + portEXIT_CRITICAL(&dac_spinlock); + + handle->state = DAC_STATE_DMA_READY; + s_dac.dma_in_use = true; + + xSemaphoreGive(handle->mutex); + + return ret; +err1: + dac_dma_periph_deinit(); +err2: + dac_free_dma_desc(handle); +err3: + if (handle->dma.desc_pool) { + vQueueDelete(handle->dma.desc_pool); + } +#if CONFIG_DAC_ISR_IRAM_SAFE + if (handle->dma.desc_pool_struct) { + free(handle->dma.desc_pool_struct); + } + if (handle->dma.desc_pool_storage) { + free(handle->dma.desc_pool_storage); + } +#endif + xSemaphoreGive(handle->mutex); + return ret; +} + +esp_err_t dac_channels_deinit_continuous_mode(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, + "This set of DAC channels is still running or has been configured to other mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + +#if CONFIG_DAC_ISR_IRAM_SAFE + free(handle->dma.desc_pool_storage); + handle->dma.desc_pool_storage = NULL; + free(handle->dma.desc_pool_struct); + handle->dma.desc_pool_struct = NULL; +#endif +#if CONFIG_PM_ENABLE + if (handle->pm_lock) { + esp_pm_lock_delete(handle->pm_lock); + handle->pm_lock = NULL; + } +#endif + vQueueDelete(handle->dma.desc_pool); + + /* Free DMA buffer */ + dac_free_dma_desc(handle); + + /* Deregister DMA interrupt */ + ESP_RETURN_ON_ERROR(dac_dma_periph_deregister_intr(), TAG, "Failed to deregister DMA interrupt"); + /* Deinitialize DMA peripheral */ + ESP_RETURN_ON_ERROR(dac_dma_periph_deinit(), TAG, "Failed to deinitialize DAC DMA peripheral"); + /* Disconnect DAC module to the DMA peripheral */ + portENTER_CRITICAL(&dac_spinlock); + dac_ll_digi_enable_dma(false); + portEXIT_CRITICAL(&dac_spinlock); + + if (handle->is_enabled) { + handle->state = DAC_STATE_OUTPUT_READY; + } else { + handle->state = DAC_STATE_INITIAL; + } + s_dac.dma_in_use = false; + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channels_enable_continuous_mode(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, + "This set of DAC channels has started already or not working at DMA mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); +#ifdef CONFIG_PM_ENABLE + esp_pm_lock_acquire(handle->pm_lock); +#endif + dac_dma_periph_enable(); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_digi_enable_dma(true); + portEXIT_CRITICAL(&dac_spinlock); + handle->state = DAC_STATE_DMA_ENABLED; + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channels_disable_continuous_mode(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_ENABLED, ESP_ERR_INVALID_STATE, TAG, + "This set of DAC channels has stopped already or not working at DMA mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + dac_dma_periph_disable(); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_digi_enable_dma(false); + portEXIT_CRITICAL(&dac_spinlock); +#ifdef CONFIG_PM_ENABLE + esp_pm_lock_release(handle->pm_lock); +#endif + handle->state = DAC_STATE_DMA_READY; + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +static esp_err_t s_dac_load_dma_data(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *w_size, uint32_t timeout_ms) +{ + lldesc_t *desc = NULL; + + /* Try to get the descriptor from the pool */ + ESP_RETURN_ON_FALSE(xQueueReceive(handle->dma.desc_pool, &desc, pdMS_TO_TICKS(timeout_ms)) == pdTRUE, + ESP_ERR_TIMEOUT, TAG, "Get available descriptor timeout"); + if (STAILQ_FIRST(&handle->dma.head) != NULL) { + DAC_STAILQ_REMOVE(&handle->dma.head, desc, lldesc_s, qe); + } + + /* Get the DMA buffer address (use 'memcpy' to avoid the 'volatile' warning) */ + uint8_t *dma_buf; + memcpy(&dma_buf, &desc->buf, sizeof(desc->buf)); +#if SOC_DAC_DMA_16BIT_ALIGN && CONFIG_DAC_DMA_AUTO_16BIT_ALIGN + /* Load the data to the high 8 bit in the 16-bit width slot */ + size_t _w_size = (buf_size > handle->dma.cfg.buf_size / 2) ? handle->dma.cfg.buf_size / 2 : buf_size; + for (int i = 0; i < _w_size; i++) { + dma_buf[2 * i + 1] = buf[i]; + } + lldesc_config(desc, LLDESC_HW_OWNED, 1, 0, _w_size * 2); + desc->size = _w_size * 2; +#else + /* Load the data into the DMA buffer */ + size_t _w_size = (buf_size > handle->dma.cfg.buf_size) ? handle->dma.cfg.buf_size : buf_size; + memcpy(dma_buf, buf, _w_size); + lldesc_config(desc, LLDESC_HW_OWNED, 1, 0, _w_size); + desc->size = _w_size; +#endif + *w_size = _w_size; + /* Insert the loaded descriptor to the end of the chain, waiting to be sent */ + portENTER_CRITICAL(&dac_spinlock); + STAILQ_INSERT_TAIL(&handle->dma.head, desc, qe); + portEXIT_CRITICAL(&dac_spinlock); + + return ESP_OK; +} + +esp_err_t dac_channels_write_continuously(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded, uint32_t timeout_ms) +{ + DAC_NULL_POINTER_CHECK(handle); + DAC_NULL_POINTER_CHECK(buf); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_ENABLED, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is not started"); +#if CONFIG_DAC_ISR_IRAM_SAFE + ESP_RETURN_ON_FALSE(esp_ptr_internal(buf), ESP_ERR_INVALID_ARG, TAG, "the buffer is not in internal RAM"); +#endif + esp_err_t ret = ESP_OK; + ESP_RETURN_ON_FALSE(xSemaphoreTake(handle->mutex, pdMS_TO_TICKS(timeout_ms) == pdTRUE), ESP_ERR_TIMEOUT, TAG, "Take semaphore timeout"); + + size_t w_size = 0; + size_t src_buf_size = buf_size; + /* When there is no descriptor in the chain, DMA has stopped, load data and start the DMA link */ + if (STAILQ_FIRST(&handle->dma.head) == NULL) { + /* Break the chain if DMA still running */ + for (int i = 0; handle->dma.is_running && i < handle->dma.cfg.desc_num; i++) { + handle->dma.desc[i]->empty = 0; + } + for (int i = 0; + i < handle->dma.cfg.desc_num && buf_size > 0; + i++, buf += w_size, buf_size -= w_size) { + ESP_GOTO_ON_ERROR(s_dac_load_dma_data(handle, buf, buf_size, &w_size, timeout_ms), err, TAG, "Load data failed"); + } + /* Wait for the previous DMA stop */ + while (handle->dma.is_running) {} + handle->dma.is_cyclic = false; + dac_dma_periph_dma_trans_start((uint32_t)(STAILQ_FIRST(&handle->dma.head))); + handle->dma.is_running = true; + } + /* If the source buffer is not totally loaded, keep loading the rest data */ + while (buf_size > 0) { + /* If the DMA stopped but there are still some decriptors not sent, start the DMA again */ + if ((!handle->dma.is_running) && STAILQ_FIRST(&handle->dma.head)) { + dac_dma_periph_dma_trans_start((uint32_t)(STAILQ_FIRST(&handle->dma.head))); + } + ESP_GOTO_ON_ERROR(s_dac_load_dma_data(handle, buf, buf_size, &w_size, timeout_ms), err, TAG, "Load data failed"); + buf += w_size; + buf_size -= w_size; + } +err: + /* The bytes number that has been loaded */ + if (bytes_loaded) { + *bytes_loaded = src_buf_size - buf_size; + } + xSemaphoreGive(handle->mutex); + return ret; +} + +esp_err_t dac_channels_write_cyclically(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded, uint32_t timeout_ms) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_ENABLED, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is not started"); +#if CONFIG_DAC_ISR_IRAM_SAFE + ESP_RETURN_ON_FALSE(esp_ptr_internal(buf), ESP_ERR_INVALID_ARG, TAG, "the buffer is not in internal RAM"); +#endif + + esp_err_t ret = ESP_OK; + ESP_RETURN_ON_FALSE(xSemaphoreTake(handle->mutex, pdMS_TO_TICKS(timeout_ms) == pdTRUE), ESP_ERR_TIMEOUT, TAG, "Take semaphore timeout"); + + /* Break the DMA descriptor chain to stop the DMA first */ + for (int i = 0; i < handle->dma.cfg.desc_num; i++) { + handle->dma.desc[i]->empty = 0; + } + size_t src_buf_size = buf_size; + + /* If the source buffer size is smaller than the DMA buffer size, load the source buffer into two descriptors */ + if (buf_size < handle->dma.cfg.buf_size) { + /* Load data */ + size_t half_size = buf_size / 2; + memcpy(handle->dma.bufs[0], buf, half_size); + memcpy(handle->dma.bufs[1], buf, buf_size - half_size); + lldesc_config(handle->dma.desc[0], LLDESC_HW_OWNED, 1, 0, half_size); + lldesc_config(handle->dma.desc[1], LLDESC_HW_OWNED, 1, 0, buf_size - half_size); + buf_size = 0; + /* Link as a circle */ + handle->dma.desc[0]->empty = (uint32_t)handle->dma.desc[1]; + handle->dma.desc[1]->empty = (uint32_t)handle->dma.desc[0]; + } else { + int i; + for (i = 0; i < handle->dma.cfg.desc_num && buf_size > 0; i++) { + size_t w_size = buf_size > handle->dma.cfg.buf_size ? handle->dma.cfg.buf_size : buf_size; + memcpy(handle->dma.bufs[i], buf, w_size); + lldesc_config(handle->dma.desc[i], LLDESC_HW_OWNED, 1, 0, w_size); + handle->dma.desc[i]->empty = (uint32_t)(i < handle->dma.cfg.desc_num - 1 ? handle->dma.desc[i+1] :0); + buf_size -= w_size; + buf += w_size; + } + handle->dma.desc[i-1]->empty = (uint32_t)(handle->dma.desc[0]); + } + /* Wait for the previous DMA stop */ + while (handle->dma.is_running) {} + handle->dma.is_cyclic = true; + dac_dma_periph_dma_trans_start((uint32_t)handle->dma.desc[0]); + handle->dma.is_running = true; + if (bytes_loaded) { + *bytes_loaded = src_buf_size - buf_size; + } + if (buf_size > 0) { + ESP_LOGW(TAG, "The cyclic buffer size exceeds the total DMA buffer size: %d(desc_num) * %d(buf_size) = %d", + handle->dma.cfg.desc_num, handle->dma.cfg.buf_size, handle->dma.cfg.buf_size * handle->dma.cfg.desc_num); + } + + xSemaphoreGive(handle->mutex); + return ret; +} + +/*-------------------------------------------------------------------------- + DAC cosine wave outputting APIs + ---------------------------------------------------------------------------*/ +esp_err_t dac_channels_init_cosine_mode(dac_channels_handle_t handle, const dac_cosine_config_t *cw_cfg) +{ + DAC_NULL_POINTER_CHECK(handle); + DAC_NULL_POINTER_CHECK(cw_cfg); + ESP_RETURN_ON_FALSE((handle->state == DAC_STATE_INITIAL) | (handle->state == DAC_STATE_OUTPUT_READY), + ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has been initialized already"); + ESP_RETURN_ON_FALSE(cw_cfg->freq_hz >= 130, ESP_ERR_NOT_SUPPORTED, TAG, "The cosine wave generator doesn't support frequency below 130 Hz"); + + esp_err_t ret = ESP_OK; + + xSemaphoreTake(handle->mutex, portMAX_DELAY); +#if CONFIG_PM_ENABLE + ESP_GOTO_ON_ERROR(esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_driver", &handle->pm_lock), err, TAG, "Failed to create DAC pm lock"); +#endif + portENTER_CRITICAL(&dac_spinlock); + dac_channel_info_t *p; + SLIST_FOREACH(p, &handle->head, next) { + /* Connect DAC module to cosine wave generator */ + dac_ll_cw_set_channel(p->id, true); + /* Set coefficients for cosine wave generator */ + dac_ll_cw_set_freq(cw_cfg->freq_hz, periph_rtc_dig_clk8m_get_freq()); + dac_ll_cw_set_scale(p->id, cw_cfg->scale); + dac_ll_cw_set_phase(p->id, cw_cfg->phase == DAC_COSINE_PHASE_180 ? DAC_LL_CW_PHASE_180 : DAC_LL_CW_PHASE_0); + dac_ll_cw_set_dc_offset(p->id, cw_cfg->offset); + } + portEXIT_CRITICAL(&dac_spinlock); + handle->state = DAC_STATE_CW_READY; +#if CONFIG_PM_ENABLE +err: +#endif + xSemaphoreGive(handle->mutex); + return ret; +} + +esp_err_t dac_channels_deinit_cosine_mode(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_READY, ESP_ERR_INVALID_STATE, TAG, + "This set of DAC channels is still running or not working at cosine wave mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); +#if CONFIG_PM_ENABLE + if (handle->pm_lock) { + esp_pm_lock_delete(handle->pm_lock); + handle->pm_lock = NULL; + } +#endif + portENTER_CRITICAL(&dac_spinlock); + dac_channel_info_t *p; + SLIST_FOREACH(p, &handle->head, next) { + /* Disonnect DAC module to cosine wave generator */ + dac_ll_cw_set_channel(p->id, false); + } + portEXIT_CRITICAL(&dac_spinlock); + if (handle->is_enabled) { + handle->state = DAC_STATE_OUTPUT_READY; + } else { + handle->state = DAC_STATE_INITIAL; + } + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channels_start_cosine_output(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_READY, ESP_ERR_INVALID_STATE, TAG, + "This set of DAC channels has started already or not working at cosine wave mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); +#ifdef CONFIG_PM_ENABLE + esp_pm_lock_acquire(handle->pm_lock); +#endif + portENTER_CRITICAL(&dac_spinlock); + dac_ll_cw_generator_enable(); + portEXIT_CRITICAL(&dac_spinlock); + handle->state = DAC_STATE_CW_RUNNING; + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channels_stop_cosine_output(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_RUNNING, ESP_ERR_INVALID_STATE, TAG, + "This set of DAC channels has stopped already or not working at cosine wave mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_cw_generator_disable(); + portEXIT_CRITICAL(&dac_spinlock); +#ifdef CONFIG_PM_ENABLE + esp_pm_lock_release(handle->pm_lock); +#endif + handle->state = DAC_STATE_CW_READY; + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} diff --git a/components/driver/esp32/dac_dma.c b/components/driver/dac/esp32/dac_dma.c similarity index 60% rename from components/driver/esp32/dac_dma.c rename to components/driver/dac/esp32/dac_dma.c index e043f248a0..fa3d3a7e9d 100644 --- a/components/driver/esp32/dac_dma.c +++ b/components/driver/dac/esp32/dac_dma.c @@ -7,20 +7,28 @@ #include "freertos/FreeRTOS.h" +#include "hal/adc_ll.h" #include "hal/i2s_ll.h" #include "hal/i2s_types.h" #include "soc/i2s_periph.h" -#include "esp_private/dac_dma.h" +#include "../dac_dma.h" #include "esp_private/i2s_platform.h" - +#include "clk_ctrl_os.h" +#if CONFIG_DAC_ENABLE_DEBUG_LOG +// The local log level must be defined before including esp_log.h +// Set the maximum log level for this source file +#define LOG_LOCAL_LEVEL ESP_LOG_DEBUG +#endif #include "esp_check.h" +#include "esp_attr.h" #define DAC_DMA_PERIPH_I2S_NUM 0 -#define DAC_DMA_PERIPH_I2S_BIT_WIDTH 8 +#define DAC_DMA_PERIPH_I2S_BIT_WIDTH 16 // Fixed bit width, only the high 8 bits take effect typedef struct { void *periph_dev; /* DMA peripheral device address */ intr_handle_t intr_handle; /* Interrupt handle */ + bool use_apll; /* Whether use APLL as clock source */ } dac_dma_periph_i2s_t; static dac_dma_periph_i2s_t *s_ddp = NULL; // Static DAC DMA peripheral structure pointer @@ -29,21 +37,51 @@ static const char *TAG = "DAC_DMA"; extern portMUX_TYPE dac_spinlock; /* Global DAC spinlock */ -static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz){ +static uint32_t dac_set_apll(uint32_t mclk) +{ + /* Calculate the expected APLL */ + int div = (int)((SOC_APLL_MIN_HZ / mclk) + 1); + /* apll_freq = mclk * div + * when div = 1, hardware will still divide 2 + * when div = 0, hardware will divide 255 + * So the div here should be at least 2 */ + div = div < 2 ? 2 : div; + uint32_t expt_freq = mclk * div; + /* Set APLL coefficients to the given frequency */ + uint32_t real_freq = 0; + esp_err_t ret = periph_rtc_apll_freq_set(expt_freq, &real_freq); + if (ret == ESP_ERR_INVALID_ARG) { + return 0; + } + if (ret == ESP_ERR_INVALID_STATE) { + ESP_LOGW(TAG, "APLL is occupied already, it is working at %d Hz", real_freq); + } + ESP_LOGD(TAG, "APLL expected frequency is %d Hz, real frequency is %d Hz", expt_freq, real_freq); + return real_freq; +} + +static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz, bool is_apll) +{ /* Calculate clock coefficients */ uint32_t bclk = freq_hz * I2S_LL_AD_BCK_FACTOR; uint32_t bclk_div = DAC_DMA_PERIPH_I2S_BIT_WIDTH; uint32_t mclk = bclk * bclk_div; - uint32_t sclk = I2S_LL_BASE_CLK; // use PLL clock as default + uint32_t sclk; // use 160M PLL clock as default, minimun support freq: 19.6 KHz maximun support freq: 2.5 MHz + if (is_apll) { + sclk = dac_set_apll(mclk); + ESP_RETURN_ON_FALSE(sclk, ESP_ERR_INVALID_ARG, TAG, "set APLL coefficients failed"); + } else { + sclk = I2S_LL_BASE_CLK; + } uint32_t mclk_div = sclk / mclk; /* Check if the configuration is correct */ - // TODO: expand the frequency range ESP_RETURN_ON_FALSE(sclk / (float)mclk > 1.99, ESP_ERR_INVALID_ARG, TAG, "Frequency is too large, the mclk division is below minimum value 2"); ESP_RETURN_ON_FALSE(mclk_div < 256, ESP_ERR_INVALID_ARG, TAG, "Frequency is too small, the mclk division exceed the maximum value 255"); + ESP_LOGD(TAG, "[sclk] %d [mclk] %d [mclk_div] %d [bclk] %d [bclk_div] %d", sclk, mclk, mclk_div, bclk, bclk_div); portENTER_CRITICAL(&dac_spinlock); - i2s_ll_tx_clk_set_src(s_ddp->periph_dev, I2S_CLK_D2CLK); + i2s_ll_tx_clk_set_src(s_ddp->periph_dev, is_apll ? I2S_CLK_SRC_APLL : I2S_CLK_SRC_DEFAULT); i2s_ll_tx_set_mclk(s_ddp->periph_dev, sclk, mclk, mclk_div); i2s_ll_tx_set_bck_div_num(s_ddp->periph_dev, bclk_div); portEXIT_CRITICAL(&dac_spinlock); @@ -51,23 +89,32 @@ static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz){ return ESP_OK; } -esp_err_t dac_dma_periph_init(int chan_num, uint32_t freq_hz, bool is_alternate) +esp_err_t dac_dma_periph_init(uint8_t chan_num, uint32_t freq_hz, bool is_alternate, bool is_apll) { +#if CONFIG_DAC_ENABLE_DEBUG_LOG + esp_log_level_set(TAG, ESP_LOG_DEBUG); +#endif esp_err_t ret = ESP_OK; /* Acquire DMA peripheral */ - ESP_RETURN_ON_ERROR(i2s_priv_register_object("dac_dma", DAC_DMA_PERIPH_I2S_NUM), TAG, "Failed to acquire DAC DMA peripheral"); + ESP_RETURN_ON_ERROR(i2s_platform_acquire_occupation(DAC_DMA_PERIPH_I2S_NUM, "dac_dma"), TAG, "Failed to acquire DAC DMA peripheral"); /* Allocate DAC DMA peripheral object */ s_ddp = (dac_dma_periph_i2s_t *)calloc(1, sizeof(dac_dma_periph_i2s_t)); ESP_GOTO_ON_FALSE(s_ddp, ESP_ERR_NO_MEM, err, TAG, "No memory for DAC DMA object"); s_ddp->periph_dev = (void *)I2S_LL_GET_HW(DAC_DMA_PERIPH_I2S_NUM); - ESP_GOTO_ON_ERROR(dac_dma_periph_set_clock(freq_hz), err, TAG, "Failed to set clock of DMA peripheral"); + if (is_apll) { + periph_rtc_apll_acquire(); + s_ddp->use_apll = true; + } + ESP_GOTO_ON_ERROR(dac_dma_periph_set_clock(freq_hz, is_apll), err, TAG, "Failed to set clock of DMA peripheral"); portENTER_CRITICAL(&dac_spinlock); + i2s_ll_enable_builtin_dac(s_ddp->periph_dev, true); i2s_ll_tx_reset(s_ddp->periph_dev); i2s_ll_tx_set_slave_mod(s_ddp->periph_dev, false); i2s_ll_tx_set_sample_bit(s_ddp->periph_dev, DAC_DMA_PERIPH_I2S_BIT_WIDTH, DAC_DMA_PERIPH_I2S_BIT_WIDTH); i2s_ll_tx_enable_mono_mode(s_ddp->periph_dev, !is_alternate); + i2s_ll_tx_select_std_slot(s_ddp->periph_dev, 0x03, !is_alternate); i2s_ll_tx_enable_msb_shift(s_ddp->periph_dev, false); i2s_ll_tx_set_ws_width(s_ddp->periph_dev, DAC_DMA_PERIPH_I2S_BIT_WIDTH); i2s_ll_tx_enable_msb_right(s_ddp->periph_dev, false); @@ -84,11 +131,15 @@ err: esp_err_t dac_dma_periph_deinit(void) { - ESP_RETURN_ON_ERROR(i2s_priv_deregister_object(DAC_DMA_PERIPH_I2S_NUM), TAG, "Failed to release DAC DMA peripheral"); + ESP_RETURN_ON_ERROR(i2s_platform_release_occupation(DAC_DMA_PERIPH_I2S_NUM), TAG, "Failed to release DAC DMA peripheral"); if (s_ddp) { if (s_ddp->intr_handle) { dac_dma_periph_deregister_intr(); } + if (s_ddp->use_apll) { + periph_rtc_apll_release(); + s_ddp->use_apll = false; + } free(s_ddp); s_ddp = NULL; } @@ -104,7 +155,7 @@ esp_err_t dac_dma_periph_register_intr(intr_handler_t intr_handler_func, void *u intr_handler_func, user_ctx, &(s_ddp->intr_handle)), TAG, "Failed to register DAC DMA interrupt"); portENTER_CRITICAL(&dac_spinlock); - i2s_ll_enable_intr(s_ddp->periph_dev, I2S_LL_EVENT_TX_EOF, true); + i2s_ll_enable_intr(s_ddp->periph_dev, I2S_LL_EVENT_TX_EOF | I2S_LL_EVENT_TX_TEOF, true); portEXIT_CRITICAL(&dac_spinlock); return ESP_OK; } @@ -114,7 +165,7 @@ esp_err_t dac_dma_periph_deregister_intr(void) ESP_RETURN_ON_FALSE(s_ddp, ESP_ERR_INVALID_STATE, TAG, "DAC DMA peripheral has not initialized yet"); if (s_ddp->intr_handle) { portENTER_CRITICAL(&dac_spinlock); - i2s_ll_enable_intr(s_ddp->periph_dev, I2S_LL_EVENT_TX_EOF, false); + i2s_ll_enable_intr(s_ddp->periph_dev, I2S_LL_EVENT_TX_EOF | I2S_LL_EVENT_TX_TEOF, false); portEXIT_CRITICAL(&dac_spinlock); esp_intr_free(s_ddp->intr_handle); s_ddp->intr_handle = NULL; @@ -132,8 +183,9 @@ void dac_dma_periph_enable(void) /* Start */ i2s_ll_enable_dma(s_ddp->periph_dev,true); i2s_ll_tx_enable_intr(s_ddp->periph_dev); - // i2s_ll_tx_start_link(s_ddp->periph_dev, (uint32_t)desc_addr); - // i2s_ll_tx_start(s_ddp->periph_dev); + i2s_ll_tx_start(s_ddp->periph_dev); + i2s_ll_dma_enable_eof_on_fifo_empty(s_ddp->periph_dev, true); + i2s_ll_dma_enable_auto_write_back(s_ddp->periph_dev, true); portEXIT_CRITICAL(&dac_spinlock); /* Enable interrupt */ esp_intr_enable(s_ddp->intr_handle); @@ -151,12 +203,14 @@ void dac_dma_periph_disable(void) i2s_ll_tx_stop_link(s_ddp->periph_dev); i2s_ll_tx_disable_intr(s_ddp->periph_dev); i2s_ll_enable_dma(s_ddp->periph_dev, false); + i2s_ll_dma_enable_eof_on_fifo_empty(s_ddp->periph_dev, false); + i2s_ll_dma_enable_auto_write_back(s_ddp->periph_dev, false); portEXIT_CRITICAL(&dac_spinlock); /* Disable interrupt */ esp_intr_disable(s_ddp->intr_handle); } -bool inline dac_dma_periph_intr_is_triggered(void) +uint32_t IRAM_ATTR dac_dma_periph_intr_is_triggered(void) { uint32_t status = i2s_ll_get_intr_status(s_ddp->periph_dev); if (status == 0) { @@ -164,10 +218,13 @@ bool inline dac_dma_periph_intr_is_triggered(void) return false; } i2s_ll_clear_intr_status(s_ddp->periph_dev, status); - return (status & I2S_LL_EVENT_TX_EOF) != 0; + uint32_t ret = 0; + ret |= (status & I2S_LL_EVENT_TX_EOF) ? DAC_DMA_EOF_INTR : 0; + ret |= (status & I2S_LL_EVENT_TX_TEOF) ? DAC_DMA_TEOF_INTR : 0; + return ret; } -uint32_t inline dac_dma_periph_intr_get_eof_desc(void) +uint32_t IRAM_ATTR dac_dma_periph_intr_get_eof_desc(void) { uint32_t finish_desc; i2s_ll_tx_get_eof_des_addr(s_ddp->periph_dev, &finish_desc); @@ -177,11 +234,6 @@ uint32_t inline dac_dma_periph_intr_get_eof_desc(void) void inline dac_dma_periph_dma_trans_start(uint32_t desc_addr) { portENTER_CRITICAL(&dac_spinlock); - // TODO: check whether need to reset - i2s_ll_tx_reset(s_ddp->periph_dev); - i2s_ll_tx_reset_dma(s_ddp->periph_dev); - i2s_ll_tx_reset_fifo(s_ddp->periph_dev); i2s_ll_tx_start_link(s_ddp->periph_dev, desc_addr); - i2s_ll_tx_start(s_ddp->periph_dev); portEXIT_CRITICAL(&dac_spinlock); } diff --git a/components/driver/esp32s2/dac_dma.c b/components/driver/dac/esp32s2/dac_dma.c similarity index 56% rename from components/driver/esp32s2/dac_dma.c rename to components/driver/dac/esp32s2/dac_dma.c index a6b2adf004..3f719d828d 100644 --- a/components/driver/esp32s2/dac_dma.c +++ b/components/driver/dac/esp32s2/dac_dma.c @@ -4,14 +4,23 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "esp_private/spi_common_internal.h" +#include "esp_private/periph_ctrl.h" #include "hal/spi_ll.h" #include "hal/dac_ll.h" #include "hal/adc_ll.h" #include "soc/lldesc.h" -#include "esp_private/dac_dma.h" -#include "esp_private/periph_ctrl.h" -#include "driver/spi_common_internal.h" +#include "soc/soc.h" +#include "soc/soc_caps.h" +#include "../dac_dma.h" +#include "clk_ctrl_os.h" +#if CONFIG_DAC_ENABLE_DEBUG_LOG +// The local log level must be defined before including esp_log.h +// Set the maximum log level for this source file +#define LOG_LOCAL_LEVEL ESP_LOG_DEBUG +#endif #include "esp_check.h" +#include "esp_attr.h" #define DAC_DMA_PERIPH_SPI_HOST SPI3_HOST @@ -19,6 +28,7 @@ typedef struct { void *periph_dev; /* DMA peripheral device address */ uint32_t dma_chan; intr_handle_t intr_handle; /* Interrupt handle */ + bool use_apll; /* Whether use APLL as digital controller clock source */ } dac_dma_periph_spi_t; static dac_dma_periph_spi_t *s_ddp = NULL; // Static DAC DMA peripheral structure pointer @@ -27,41 +37,74 @@ static const char *TAG = "DAC_DMA"; extern portMUX_TYPE dac_spinlock; /* Global DAC spinlock */ +static uint32_t dac_set_apll_freq(uint32_t expt_freq) +{ + /* Set APLL coefficients to the given frequency */ + uint32_t real_freq = 0; + esp_err_t ret = periph_rtc_apll_freq_set(expt_freq, &real_freq); + if (ret == ESP_ERR_INVALID_ARG) { + return 0; + } + if (ret == ESP_ERR_INVALID_STATE) { + ESP_LOGW(TAG, "APLL is occupied already, it is working at %d Hz", real_freq); + } + ESP_LOGD(TAG, "APLL expected frequency is %d Hz, real frequency is %d Hz", expt_freq, real_freq); + return real_freq; +} + /** * @brief Calculate and set DAC data frequency * @note DAC clcok shares clock devider with ADC, the clock source is APB or APLL on ESP32-S2 * freq_hz = (source_clk / (clk_div + (b / a) + 1)) / interval * interval range: 1~4095, to avoid decimal as possible, all calculations will base on interval = 4000 - * @param freq_hz DAC byte frequency + * @param freq_hz DAC byte transmit frequency * @return * - ESP_OK config success * - ESP_ERR_INVALID_ARG invalid frequency */ -// TODO: check clock again, the dma data seems abnormal -static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz){ - ESP_RETURN_ON_FALSE(freq_hz >= 80, ESP_ERR_INVALID_ARG, TAG, "the DAC frequency should be greater than 80 Hz"); - // TODO: replace 80000000 with APB or APLL clock frequency - // when interval = 4000, max_freq = 20k min_freq = 80 - uint32_t freq_khz = freq_hz / 1000; - /* If freq_khz < 20k, interval = 4000 is enough, so mutiple = 1, - * otherwise interval need to zoom out to increase the max_freq, - * And in order to avoid decimal as possible, multiple better to be 2^n */ - uint32_t multiple = freq_khz < 20 ? 1 : 1 << (32 - __builtin_clz(freq_khz / 20)); // Multiple need to be 2^n to avoid decimal - uint32_t interval = 4000 / multiple; // Zoom in the max/min supported freq by zooming out interval - ESP_RETURN_ON_FALSE(interval > 0, ESP_ERR_INVALID_ARG, TAG, "the DAC frequency is too big"); +static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz, bool is_apll){ + /* Step 1: Determine the digital clock source frequency */ + uint32_t digi_ctrl_freq; // Digital controller clock + if (is_apll) { + /* Theoretical frequency range (due to the limitation of DAC, the maximum frequency may not reach): + * SOC_APLL_MAX_HZ: 119.24 Hz ~ 67.5 MHz + * SOC_APLL_MIN_HZ: 5.06 Hz ~ 2.65 MHz */ + digi_ctrl_freq = dac_set_apll_freq(freq_hz < 120 ? SOC_APLL_MIN_HZ :SOC_APLL_MAX_HZ); + ESP_RETURN_ON_FALSE(digi_ctrl_freq, ESP_ERR_INVALID_ARG, TAG, "set APLL coefficients failed"); + } else { + digi_ctrl_freq = APB_CLK_FREQ; + } - uint32_t clk_div = (80000000 / interval) / freq_hz; - uint32_t mod = (80000000 / interval) % freq_hz; + /* Step 2: Determine the interval */ + uint32_t total_div = digi_ctrl_freq / freq_hz; + uint32_t interval; + /* For the case that smaller than the minimum ADC controller division, the required frequency is too big */ + ESP_RETURN_ON_FALSE(total_div >= 2, ESP_ERR_INVALID_ARG, TAG, "the DAC frequency is too big"); + if (total_div < 256) { // For the case that smaller than the maximum ADC controller division + /* Fix the interval to 1, the division is fully realized by the ADC controller clock divider */ + interval = 1; + } else if (total_div < 8192) { // for the case that smaller than the maximum inverval + /* Set the interval to 'total_div / 2', fix the integer part of ADC controller clock division to 2 */ + interval = total_div / 2; + } else { + /* Fix the interval to 4095, */ + interval = 4095; + } + ESP_RETURN_ON_FALSE(interval * 256 > total_div, ESP_ERR_INVALID_ARG, TAG, "the DAC frequency is too small"); + + /* Step 3: Calculate the coefficients of ADC digital controller divider*/ + uint32_t fsclk = interval * freq_hz; /* The clock frequency that produced by ADC controller divider */ + uint32_t clk_div = digi_ctrl_freq / fsclk; + uint32_t mod = digi_ctrl_freq % fsclk; uint32_t a = 0; uint32_t b = 1; if (mod == 0) { goto finish; } - uint32_t min_diff = mod + 1; for (uint32_t tmp_b = 1; tmp_b < 64; tmp_b++) { - uint32_t tmp_a = (uint32_t)(((mod * b) / (float)freq_hz) + 0.5); - uint32_t diff = (uint32_t)abs((int)(mod * tmp_b) - (int)(freq_hz * tmp_a)); + uint32_t tmp_a = (uint32_t)(((mod * b) / (float)fsclk) + 0.5); + uint32_t diff = (uint32_t)abs((int)(mod * tmp_b) - (int)(fsclk * tmp_a)); if (diff == 0) { a = tmp_a; b = tmp_b; @@ -75,28 +118,37 @@ static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz){ } finish: + /* Step 4: Set the clock coefficients */ portENTER_CRITICAL(&dac_spinlock); dac_ll_digi_clk_inv(true); dac_ll_digi_set_trigger_interval(interval); // secondary clock division - adc_ll_digi_controller_clk_div(clk_div, b, a); - adc_ll_digi_clk_sel(false); + adc_ll_digi_controller_clk_div(clk_div - 1, b, a); + adc_ll_digi_clk_sel(is_apll); portEXIT_CRITICAL(&dac_spinlock); return ESP_OK; } -esp_err_t dac_dma_periph_init(int chan_num, uint32_t freq_hz, bool is_alternate) +esp_err_t dac_dma_periph_init(uint8_t chan_num, uint32_t freq_hz, bool is_alternate, bool is_apll) { +#if CONFIG_DAC_ENABLE_DEBUG_LOG + esp_log_level_set(TAG, ESP_LOG_DEBUG); +#endif esp_err_t ret = ESP_OK; /* Acquire DMA peripheral */ ESP_RETURN_ON_FALSE(spicommon_periph_claim(DAC_DMA_PERIPH_SPI_HOST, "dac_dma"), ESP_ERR_NOT_FOUND, TAG, "Failed to acquire DAC DMA peripheral"); - // TODO: reference count, maybe only required on s2 periph_module_enable(PERIPH_SARADC_MODULE); /* Allocate DAC DMA peripheral object */ s_ddp = (dac_dma_periph_spi_t *)calloc(1, sizeof(dac_dma_periph_spi_t)); ESP_GOTO_ON_FALSE(s_ddp, ESP_ERR_NO_MEM, err, TAG, "No memory for DAC DMA object"); s_ddp->periph_dev = (void *)SPI_LL_GET_HW(DAC_DMA_PERIPH_SPI_HOST); - // TODO: clock may related to convert mode (mono/stereo) - ESP_GOTO_ON_ERROR(dac_dma_periph_set_clock(freq_hz), err, TAG, "Failed to set clock of DMA peripheral"); + + if (is_apll) { + periph_rtc_apll_acquire(); + s_ddp->use_apll = true; + } + /* When transmit alternately, twice frequency is needed to guarantee the convert frequency in one channel */ + uint32_t trans_freq_hz = freq_hz * (is_alternate ? 2 : 1); + ESP_GOTO_ON_ERROR(dac_dma_periph_set_clock(trans_freq_hz, is_apll), err, TAG, "Failed to set clock of DMA peripheral"); portENTER_CRITICAL(&dac_spinlock); dac_ll_digi_set_convert_mode(is_alternate); @@ -110,12 +162,15 @@ err: esp_err_t dac_dma_periph_deinit(void) { ESP_RETURN_ON_FALSE(spicommon_periph_free(DAC_DMA_PERIPH_SPI_HOST), ESP_FAIL, TAG, "Failed to release DAC DMA peripheral"); - // TODO: reference count, maybe only required on s2 periph_module_disable(PERIPH_SARADC_MODULE); if (s_ddp) { if (s_ddp->intr_handle) { dac_dma_periph_deregister_intr(); } + if (s_ddp->use_apll) { + periph_rtc_apll_release(); + s_ddp->use_apll = false; + } free(s_ddp); s_ddp = NULL; } @@ -132,7 +187,7 @@ esp_err_t dac_dma_periph_register_intr(intr_handler_t intr_handler_func, void *u ESP_GOTO_ON_ERROR(esp_intr_alloc(spicommon_irqdma_source_for_host(DAC_DMA_PERIPH_SPI_HOST), 0, intr_handler_func, user_ctx, &(s_ddp->intr_handle)), err, TAG, "Failed to register DAC DMA interrupt"); portENTER_CRITICAL(&dac_spinlock); - spi_ll_enable_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF); + spi_ll_enable_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF | SPI_LL_INTR_OUT_TOTAL_EOF); portEXIT_CRITICAL(&dac_spinlock); return ret; err: @@ -146,7 +201,7 @@ esp_err_t dac_dma_periph_deregister_intr(void) ESP_RETURN_ON_ERROR(spicommon_dma_chan_free(DAC_DMA_PERIPH_SPI_HOST), TAG, "Failed to free dma peripheral channel"); if (s_ddp->intr_handle) { portENTER_CRITICAL(&dac_spinlock); - spi_ll_disable_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF); + spi_ll_disable_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF | SPI_LL_INTR_OUT_TOTAL_EOF); portEXIT_CRITICAL(&dac_spinlock); esp_intr_free(s_ddp->intr_handle); s_ddp->intr_handle = NULL; @@ -177,11 +232,14 @@ void dac_dma_periph_disable(void) esp_intr_disable(s_ddp->intr_handle); } -bool IRAM_ATTR dac_dma_periph_intr_is_triggered(void) +uint32_t IRAM_ATTR dac_dma_periph_intr_is_triggered(void) { - uint32_t is_triggered = spi_ll_get_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF); + uint32_t ret = 0; + ret |= spi_ll_get_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF) ? DAC_DMA_EOF_INTR : 0; + ret |= spi_ll_get_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_TOTAL_EOF) ? DAC_DMA_TEOF_INTR : 0; spi_ll_clear_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF); - return is_triggered; + spi_ll_clear_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_TOTAL_EOF); + return ret; } uint32_t IRAM_ATTR dac_dma_periph_intr_get_eof_desc(void) diff --git a/components/driver/deprecated/adc_legacy.c b/components/driver/deprecated/adc_legacy.c index 238a9a1926..11c2906756 100644 --- a/components/driver/deprecated/adc_legacy.c +++ b/components/driver/deprecated/adc_legacy.c @@ -29,8 +29,8 @@ #include "driver/adc_types_legacy.h" #if SOC_DAC_SUPPORTED -#include "driver/dac.h" -#include "hal/dac_hal.h" +#include "hal/dac_types.h" +#include "hal/dac_ll.h" #endif #if CONFIG_IDF_TARGET_ESP32S3 @@ -151,7 +151,7 @@ static void adc_rtc_chan_init(adc_unit_t adc_unit) /* Workaround: Disable the synchronization operation function of ADC1 and DAC. If enabled(default), ADC RTC controller sampling will cause the DAC channel output voltage. */ #if SOC_DAC_SUPPORTED - dac_hal_rtc_sync_by_adc(false); + dac_ll_rtc_sync_by_adc(false); #endif adc_oneshot_ll_output_invert(ADC_UNIT_1, ADC_HAL_DATA_INVERT_DEFAULT(ADC_UNIT_1)); adc_ll_set_sar_clk_div(ADC_UNIT_1, ADC_HAL_SAR_CLK_DIV_DEFAULT(ADC_UNIT_1)); @@ -471,16 +471,16 @@ static inline void adc2_dac_disable( adc2_channel_t channel) { #if SOC_DAC_SUPPORTED #ifdef CONFIG_IDF_TARGET_ESP32 - if ( channel == ADC2_CHANNEL_8 ) { // the same as DAC channel 1 - dac_output_disable(DAC_CHANNEL_1); + if ( channel == ADC2_CHANNEL_8 ) { // the same as DAC channel 0 + dac_ll_power_down(DAC_CHAN_0); } else if ( channel == ADC2_CHANNEL_9 ) { - dac_output_disable(DAC_CHANNEL_2); + dac_ll_power_down(DAC_CHAN_1); } #else - if ( channel == ADC2_CHANNEL_6 ) { // the same as DAC channel 1 - dac_output_disable(DAC_CHANNEL_1); + if ( channel == ADC2_CHANNEL_6 ) { // the same as DAC channel 0 + dac_ll_power_down(DAC_CHAN_0); } else if ( channel == ADC2_CHANNEL_7 ) { - dac_output_disable(DAC_CHANNEL_2); + dac_ll_power_down(DAC_CHAN_1); } #endif #endif // SOC_DAC_SUPPORTED diff --git a/components/driver/deprecated/dac_common_legacy.c b/components/driver/deprecated/dac_common_legacy.c index ee8744f24a..33f3e1b545 100644 --- a/components/driver/deprecated/dac_common_legacy.c +++ b/components/driver/deprecated/dac_common_legacy.c @@ -6,17 +6,14 @@ #include -#include "esp_log.h" -#include "esp_err.h" #include "esp_check.h" #include "freertos/FreeRTOS.h" -#include "freertos/semphr.h" -#include "freertos/timers.h" #include "driver/rtc_io.h" -#include "driver/dac.h" +#include "driver/dac_types_legacy.h" #include "soc/dac_periph.h" -#include "hal/dac_hal.h" -#include "hal/dac_types.h" +#include "hal/gpio_types.h" +#include "hal/dac_ll.h" +#include "clk_ctrl_os.h" extern portMUX_TYPE rtc_spinlock; //TODO: Will be placed in the appropriate position after the rtc module is finished. @@ -27,7 +24,7 @@ static __attribute__((unused)) const char *TAG = "DAC"; ---------------------------------------------------------------*/ esp_err_t dac_pad_get_io_num(dac_channel_t channel, gpio_num_t *gpio_num) { - ESP_RETURN_ON_FALSE(channel < DAC_CHANNEL_MAX, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); *gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[channel]; @@ -36,7 +33,7 @@ esp_err_t dac_pad_get_io_num(dac_channel_t channel, gpio_num_t *gpio_num) static esp_err_t dac_rtc_pad_init(dac_channel_t channel) { - ESP_RETURN_ON_FALSE(channel < DAC_CHANNEL_MAX, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); gpio_num_t gpio_num = 0; dac_pad_get_io_num(channel, &gpio_num); @@ -50,12 +47,12 @@ static esp_err_t dac_rtc_pad_init(dac_channel_t channel) esp_err_t dac_output_enable(dac_channel_t channel) { - ESP_RETURN_ON_FALSE(channel < DAC_CHANNEL_MAX, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); dac_rtc_pad_init(channel); portENTER_CRITICAL(&rtc_spinlock); - dac_hal_power_on(channel); - dac_hal_rtc_sync_by_adc(false); + dac_ll_power_on(channel); + dac_ll_rtc_sync_by_adc(false); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; @@ -63,10 +60,10 @@ esp_err_t dac_output_enable(dac_channel_t channel) esp_err_t dac_output_disable(dac_channel_t channel) { - ESP_RETURN_ON_FALSE(channel < DAC_CHANNEL_MAX, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); portENTER_CRITICAL(&rtc_spinlock); - dac_hal_power_down(channel); + dac_ll_power_down(channel); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; @@ -74,10 +71,10 @@ esp_err_t dac_output_disable(dac_channel_t channel) esp_err_t dac_output_voltage(dac_channel_t channel, uint8_t dac_value) { - ESP_RETURN_ON_FALSE(channel < DAC_CHANNEL_MAX, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); portENTER_CRITICAL(&rtc_spinlock); - dac_hal_update_output_value(channel, dac_value); + dac_ll_update_output_value(channel, dac_value); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; @@ -85,10 +82,10 @@ esp_err_t dac_output_voltage(dac_channel_t channel, uint8_t dac_value) esp_err_t dac_out_voltage(dac_channel_t channel, uint8_t dac_value) { - ESP_RETURN_ON_FALSE(channel < DAC_CHANNEL_MAX, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); portENTER_CRITICAL(&rtc_spinlock); - dac_hal_update_output_value(channel, dac_value); + dac_ll_update_output_value(channel, dac_value); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; @@ -97,7 +94,7 @@ esp_err_t dac_out_voltage(dac_channel_t channel, uint8_t dac_value) esp_err_t dac_cw_generator_enable(void) { portENTER_CRITICAL(&rtc_spinlock); - dac_hal_cw_generator_enable(); + dac_ll_cw_generator_enable(); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; @@ -106,7 +103,7 @@ esp_err_t dac_cw_generator_enable(void) esp_err_t dac_cw_generator_disable(void) { portENTER_CRITICAL(&rtc_spinlock); - dac_hal_cw_generator_disable(); + dac_ll_cw_generator_disable(); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; @@ -117,7 +114,7 @@ esp_err_t dac_cw_generator_config(dac_cw_config_t *cw) ESP_RETURN_ON_FALSE(cw, ESP_ERR_INVALID_ARG, TAG, "invalid clock configuration"); portENTER_CRITICAL(&rtc_spinlock); - dac_ll_cw_set_freq(cw->freq); + dac_ll_cw_set_freq(cw->freq, periph_rtc_dig_clk8m_get_freq()); dac_ll_cw_set_scale(cw->en_ch, cw->scale); dac_ll_cw_set_phase(cw->en_ch, cw->phase); dac_ll_cw_set_dc_offset(cw->en_ch, cw->offset); @@ -126,3 +123,19 @@ esp_err_t dac_cw_generator_config(dac_cw_config_t *cw) return ESP_OK; } + +/** + * @brief This function will be called during start up, to check that this legacy DAC driver is not running along with the new driver + */ +__attribute__((constructor)) +static void check_dac_legacy_driver_conflict(void) +{ + // This function was declared as weak here. The new DAC driver has one implementation. + // So if the new DAC driver is not linked in, then `dac_new_channels()` should be NULL at runtime. + extern __attribute__((weak)) esp_err_t dac_new_channels(const void *dac_cfg, void **handle); + if ((void *)dac_new_channels != NULL) { + ESP_EARLY_LOGE(TAG, "CONFLICT! The new DAC driver is not allowed to be used together with the legacy driver"); + abort(); + } + ESP_EARLY_LOGW(TAG, "legacy driver is deprecated, please migrate to `driver/dac_driver.h` instead"); +} diff --git a/components/driver/deprecated/driver/dac.h b/components/driver/deprecated/driver/dac.h new file mode 100644 index 0000000000..966871f7bd --- /dev/null +++ b/components/driver/deprecated/driver/dac.h @@ -0,0 +1,171 @@ +/* + * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include +#include "esp_err.h" +#include "sdkconfig.h" +#include "driver/gpio.h" +#include "driver/dac_types_legacy.h" + +#if !CONFIG_DAC_SUPPRESS_DEPRECATE_WARN +#warning "The legacy DAC driver is deprecated, please use driver/dac_driver.h instead" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Get the GPIO number of a specific DAC channel. + * + * @param channel Channel to get the gpio number + * @param gpio_num output buffer to hold the gpio number + * @return + * - ESP_OK if success + */ +esp_err_t dac_pad_get_io_num(dac_channel_t channel, gpio_num_t *gpio_num); + +/** + * @brief Set DAC output voltage. + * DAC output is 8-bit. Maximum (255) corresponds to VDD3P3_RTC. + * + * @note Need to configure DAC pad before calling this function. + * DAC channel 0 is attached to GPIO25, DAC channel 1 is attached to GPIO26 + * @param channel DAC channel + * @param dac_value DAC output value + * + * @return + * - ESP_OK success + */ +esp_err_t dac_output_voltage(dac_channel_t channel, uint8_t dac_value); + +/** + * @brief DAC pad output enable + * + * @param channel DAC channel + * @note DAC channel 0 is attached to GPIO25, DAC channel 1 is attached to GPIO26 + * I2S left channel will be mapped to DAC channel 1 + * I2S right channel will be mapped to DAC channel 0 + */ +esp_err_t dac_output_enable(dac_channel_t channel); + +/** + * @brief DAC pad output disable + * + * @param channel DAC channel + * @note DAC channel 0 is attached to GPIO25, DAC channel 1 is attached to GPIO26 + * @return + * - ESP_OK success + */ +esp_err_t dac_output_disable(dac_channel_t channel); + +/** + * @brief Enable cosine wave generator output. + * + * @return + * - ESP_OK success + */ +esp_err_t dac_cw_generator_enable(void); + +/** + * @brief Disable cosine wave generator output. + * + * @return + * - ESP_OK success + */ +esp_err_t dac_cw_generator_disable(void); + +/** + * @brief Config the cosine wave generator function in DAC module. + * + * @param cw Configuration. + * @return + * - ESP_OK success + * - ESP_ERR_INVALID_ARG The parameter is NULL. + */ +esp_err_t dac_cw_generator_config(dac_cw_config_t *cw); + +/*--------------------------------------------------------------- + Digital controller setting +---------------------------------------------------------------*/ +#if CONFIG_IDF_TARGET_ESP32 +/** + * @brief Enable DAC output data from I2S + * + * @return + * - ESP_OK success + */ +esp_err_t dac_i2s_enable(void); + +/** + * @brief Disable DAC output data from I2S + * + * @return + * - ESP_OK success + */ +esp_err_t dac_i2s_disable(void); +#endif + +#if CONFIG_IDF_TARGET_ESP32S2 +/** + * @brief DAC digital controller initialization. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_init(void); + +/** + * @brief DAC digital controller deinitialization. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_deinit(void); + +/** + * @brief Setting the DAC digital controller. + * + * @param cfg Pointer to digital controller paramter. See ``dac_digi_config_t``. + * + * @return + * - ESP_OK success + * - ESP_ERR_INVALID_ARG Parameter error + */ +esp_err_t dac_digi_controller_config(const dac_digi_config_t *cfg); + +/** + * @brief DAC digital controller start output voltage. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_start(void); + +/** + * @brief DAC digital controller stop output voltage. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_stop(void); + +/** + * @brief Reset DAC digital controller FIFO. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_fifo_reset(void); + +/** + * @brief Reset DAC digital controller. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_reset(void); +#endif + +#ifdef __cplusplus +} +#endif diff --git a/components/driver/deprecated/driver/dac_common.h b/components/driver/deprecated/driver/dac_common.h deleted file mode 100644 index a5e6e2b5e0..0000000000 --- a/components/driver/deprecated/driver/dac_common.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include "esp_err.h" -#include "driver/gpio.h" -#include "driver/dac_types_legacy.h" - -/** - * @brief Get the GPIO number of a specific DAC channel. - * - * @param channel Channel to get the gpio number - * @param gpio_num output buffer to hold the gpio number - * @return - * - ESP_OK if success - */ -esp_err_t dac_pad_get_io_num(dac_channel_t channel, gpio_num_t *gpio_num); - -/** - * @brief Set DAC output voltage. - * DAC output is 8-bit. Maximum (255) corresponds to VDD3P3_RTC. - * - * @note Need to configure DAC pad before calling this function. - * DAC channel 1 is attached to GPIO25, DAC channel 2 is attached to GPIO26 - * @param channel DAC channel - * @param dac_value DAC output value - * - * @return - * - ESP_OK success - */ -esp_err_t dac_output_voltage(dac_channel_t channel, uint8_t dac_value); - -/** - * @brief DAC pad output enable - * - * @param channel DAC channel - * @note DAC channel 1 is attached to GPIO25, DAC channel 2 is attached to GPIO26 - * I2S left channel will be mapped to DAC channel 2 - * I2S right channel will be mapped to DAC channel 1 - */ -esp_err_t dac_output_enable(dac_channel_t channel); - -/** - * @brief DAC pad output disable - * - * @param channel DAC channel - * @note DAC channel 1 is attached to GPIO25, DAC channel 2 is attached to GPIO26 - * @return - * - ESP_OK success - */ -esp_err_t dac_output_disable(dac_channel_t channel); - -/** - * @brief Enable cosine wave generator output. - * - * @return - * - ESP_OK success - */ -esp_err_t dac_cw_generator_enable(void); - -/** - * @brief Disable cosine wave generator output. - * - * @return - * - ESP_OK success - */ -esp_err_t dac_cw_generator_disable(void); - -/** - * @brief Config the cosine wave generator function in DAC module. - * - * @param cw Configuration. - * @return - * - ESP_OK success - * - ESP_ERR_INVALID_ARG The parameter is NULL. - */ -esp_err_t dac_cw_generator_config(dac_cw_config_t *cw); - -#ifdef __cplusplus -} -#endif diff --git a/components/driver/deprecated/driver/dac_types_legacy.h b/components/driver/deprecated/driver/dac_types_legacy.h index af77e377f1..f14396f136 100644 --- a/components/driver/deprecated/driver/dac_types_legacy.h +++ b/components/driver/deprecated/driver/dac_types_legacy.h @@ -6,13 +6,62 @@ #pragma once -#include "driver/dac_types.h" +#include +#include +#include +#include +#include "sdkconfig.h" #include "hal/dac_types.h" +#if CONFIG_IDF_TARGET_ESP32S2 +#include "hal/adc_types.h" +#endif #ifdef __cplusplus extern "C" { #endif +/** + * @brief The multiple of the amplitude of the cosine wave generator. The max amplitude is VDD3P3_RTC. + */ +typedef enum { + DAC_CW_SCALE_1 = 0x0, /*!< 1/1. Default. */ + DAC_CW_SCALE_2 = 0x1, /*!< 1/2. */ + DAC_CW_SCALE_4 = 0x2, /*!< 1/4. */ + DAC_CW_SCALE_8 = 0x3, /*!< 1/8. */ +} dac_cw_scale_t; + +/** + * @brief Set the phase of the cosine wave generator output. + */ +typedef enum { + DAC_CW_PHASE_0 = 0x2, /*!< Phase shift +0° */ + DAC_CW_PHASE_180 = 0x3, /*!< Phase shift +180° */ +} dac_cw_phase_t; + +#if CONFIG_IDF_TARGET_ESP32S2 +/** + * @brief DAC digital controller (DMA mode) work mode. + */ +typedef enum { + DAC_CONV_NORMAL, /*!< The data in the DMA buffer is simultaneously output to the enable channel of the DAC. */ + DAC_CONV_ALTER, /*!< The data in the DMA buffer is alternately output to the enable channel of the DAC. */ + DAC_CONV_MAX +} dac_digi_convert_mode_t; + +/** + * @brief DAC digital controller (DMA mode) configuration parameters. + */ +typedef struct { + dac_digi_convert_mode_t mode; /*! -#include "esp_log.h" -#include "esp_err.h" #include "freertos/FreeRTOS.h" -#include "freertos/semphr.h" -#include "freertos/timers.h" -#include "driver/rtc_io.h" -#include "driver/dac.h" -#include "soc/dac_periph.h" -#include "hal/dac_hal.h" +#include "hal/dac_ll.h" +#include "esp_err.h" extern portMUX_TYPE rtc_spinlock; //TODO: Will be placed in the appropriate position after the rtc module is finished. #define DAC_ENTER_CRITICAL() portENTER_CRITICAL(&rtc_spinlock) @@ -27,7 +20,7 @@ extern portMUX_TYPE rtc_spinlock; //TODO: Will be placed in the appropriate posi esp_err_t dac_i2s_enable(void) { DAC_ENTER_CRITICAL(); - dac_hal_digi_enable_dma(true); + dac_ll_digi_enable_dma(true); DAC_EXIT_CRITICAL(); return ESP_OK; @@ -36,7 +29,7 @@ esp_err_t dac_i2s_enable(void) esp_err_t dac_i2s_disable(void) { DAC_ENTER_CRITICAL(); - dac_hal_digi_enable_dma(false); + dac_ll_digi_enable_dma(false); DAC_EXIT_CRITICAL(); return ESP_OK; diff --git a/components/driver/deprecated/esp32/driver/dac.h b/components/driver/deprecated/esp32/driver/dac.h deleted file mode 100644 index 2876ef07ca..0000000000 --- a/components/driver/deprecated/esp32/driver/dac.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#pragma once - -#include "driver/dac_common.h" - -#ifdef __cplusplus -extern "C" { -#endif -/*--------------------------------------------------------------- - Digital controller setting ----------------------------------------------------------------*/ - -/** - * @brief Enable DAC output data from I2S - * - * @return - * - ESP_OK success - */ -esp_err_t dac_i2s_enable(void); - -/** - * @brief Disable DAC output data from I2S - * - * @return - * - ESP_OK success - */ -esp_err_t dac_i2s_disable(void); - -#ifdef __cplusplus -} -#endif diff --git a/components/driver/deprecated/esp32s2/dac_legacy.c b/components/driver/deprecated/esp32s2/dac_legacy.c index b10ee0c125..3e09d4c869 100644 --- a/components/driver/deprecated/esp32s2/dac_legacy.c +++ b/components/driver/deprecated/esp32s2/dac_legacy.c @@ -6,17 +6,13 @@ #include -#include "esp_log.h" -#include "esp_err.h" +#include "sdkconfig.h" +#include "freertos/FreeRTOS.h" +#include "driver/dac_types_legacy.h" +#include "hal/adc_ll.h" +#include "hal/dac_ll.h" #include "esp_check.h" #include "esp_pm.h" -#include "freertos/FreeRTOS.h" -#include "freertos/semphr.h" -#include "freertos/timers.h" -#include "driver/rtc_io.h" -#include "driver/dac.h" -#include "soc/dac_periph.h" -#include "hal/dac_hal.h" static __attribute__((unused)) const char *TAG = "DAC"; @@ -35,7 +31,7 @@ static esp_pm_lock_handle_t s_dac_digi_lock = NULL; esp_err_t dac_digi_init(void) { DAC_ENTER_CRITICAL(); - dac_hal_digi_init(); + dac_ll_digi_clk_inv(true); DAC_EXIT_CRITICAL(); return ESP_OK; @@ -50,7 +46,10 @@ esp_err_t dac_digi_deinit(void) } #endif DAC_ENTER_CRITICAL(); - dac_hal_digi_deinit(); + dac_ll_digi_trigger_output(false); + dac_ll_digi_enable_dma(false); + dac_ll_digi_fifo_reset(); + dac_ll_digi_reset(); DAC_EXIT_CRITICAL(); return ESP_OK; @@ -80,7 +79,10 @@ esp_err_t dac_digi_controller_config(const dac_digi_config_t *cfg) #endif //CONFIG_PM_ENABLE DAC_ENTER_CRITICAL(); - dac_hal_digi_controller_config(cfg); + dac_ll_digi_set_convert_mode(cfg->mode == DAC_CONV_ALTER); + dac_ll_digi_set_trigger_interval(cfg->interval); + adc_ll_digi_controller_clk_div(cfg->dig_clk.div_num, cfg->dig_clk.div_b, cfg->dig_clk.div_a); + adc_ll_digi_clk_sel(cfg->dig_clk.use_apll); DAC_EXIT_CRITICAL(); return ESP_OK; @@ -93,7 +95,8 @@ esp_err_t dac_digi_start(void) esp_pm_lock_acquire(s_dac_digi_lock); #endif DAC_ENTER_CRITICAL(); - dac_hal_digi_start(); + dac_ll_digi_enable_dma(true); + dac_ll_digi_trigger_output(true); DAC_EXIT_CRITICAL(); return ESP_OK; @@ -107,7 +110,8 @@ esp_err_t dac_digi_stop(void) } #endif DAC_ENTER_CRITICAL(); - dac_hal_digi_stop(); + dac_ll_digi_trigger_output(false); + dac_ll_digi_enable_dma(false); DAC_EXIT_CRITICAL(); return ESP_OK; @@ -116,7 +120,7 @@ esp_err_t dac_digi_stop(void) esp_err_t dac_digi_fifo_reset(void) { DAC_ENTER_CRITICAL(); - dac_hal_digi_fifo_reset(); + dac_ll_digi_fifo_reset(); DAC_EXIT_CRITICAL(); return ESP_OK; @@ -125,7 +129,7 @@ esp_err_t dac_digi_fifo_reset(void) esp_err_t dac_digi_reset(void) { DAC_ENTER_CRITICAL(); - dac_hal_digi_reset(); + dac_ll_digi_reset(); DAC_EXIT_CRITICAL(); return ESP_OK; diff --git a/components/driver/deprecated/esp32s2/driver/dac.h b/components/driver/deprecated/esp32s2/driver/dac.h deleted file mode 100644 index 39f3e7e068..0000000000 --- a/components/driver/deprecated/esp32s2/driver/dac.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#pragma once - -#include "driver/dac_common.h" - -#ifdef __cplusplus -extern "C" { -#endif -/*--------------------------------------------------------------- - Digital controller setting ----------------------------------------------------------------*/ - -/** - * @brief DAC digital controller initialization. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_init(void); - -/** - * @brief DAC digital controller deinitialization. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_deinit(void); - -/** - * @brief Setting the DAC digital controller. - * - * @param cfg Pointer to digital controller paramter. See ``dac_digi_config_t``. - * - * @return - * - ESP_OK success - * - ESP_ERR_INVALID_ARG Parameter error - */ -esp_err_t dac_digi_controller_config(const dac_digi_config_t *cfg); - -/** - * @brief DAC digital controller start output voltage. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_start(void); - -/** - * @brief DAC digital controller stop output voltage. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_stop(void); - -/** - * @brief Reset DAC digital controller FIFO. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_fifo_reset(void); - -/** - * @brief Reset DAC digital controller. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_reset(void); - -#ifdef __cplusplus -} -#endif diff --git a/components/driver/deprecated/i2s_legacy.c b/components/driver/deprecated/i2s_legacy.c index 6d619ad5c6..43c7bec232 100644 --- a/components/driver/deprecated/i2s_legacy.c +++ b/components/driver/deprecated/i2s_legacy.c @@ -26,7 +26,8 @@ #include "driver/i2s_types_legacy.h" #include "hal/i2s_hal.h" #if SOC_I2S_SUPPORTS_DAC -#include "driver/dac.h" +#include "hal/dac_ll.h" +#include "hal/dac_types.h" #include "esp_private/adc_share_hw_ctrl.h" #include "adc1_private.h" #include "driver/adc_i2s_legacy.h" @@ -836,20 +837,22 @@ esp_err_t i2s_set_dac_mode(i2s_dac_mode_t dac_mode) { ESP_RETURN_ON_FALSE((dac_mode < I2S_DAC_CHANNEL_MAX), ESP_ERR_INVALID_ARG, TAG, "i2s dac mode error"); if (dac_mode == I2S_DAC_CHANNEL_DISABLE) { - dac_output_disable(DAC_CHANNEL_1); - dac_output_disable(DAC_CHANNEL_2); - dac_i2s_disable(); + dac_ll_power_down(DAC_CHAN_0); + dac_ll_power_down(DAC_CHAN_1); + dac_ll_digi_enable_dma(false); } else { - dac_i2s_enable(); + dac_ll_digi_enable_dma(true); } if (dac_mode & I2S_DAC_CHANNEL_RIGHT_EN) { //DAC1, right channel - dac_output_enable(DAC_CHANNEL_1); + dac_ll_power_on(DAC_CHAN_0); + dac_ll_rtc_sync_by_adc(false); } if (dac_mode & I2S_DAC_CHANNEL_LEFT_EN) { //DAC2, left channel - dac_output_enable(DAC_CHANNEL_2); + dac_ll_power_on(DAC_CHAN_1); + dac_ll_rtc_sync_by_adc(false); } return ESP_OK; } diff --git a/components/driver/include/driver/dac_driver.h b/components/driver/include/driver/dac_driver.h new file mode 100644 index 0000000000..f743fab293 --- /dev/null +++ b/components/driver/include/driver/dac_driver.h @@ -0,0 +1,298 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "driver/dac_types.h" +#include "driver/gpio.h" +#include "esp_err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if SOC_DAC_SUPPORTED + +/** + * @brief DAC channel configuration + * + */ +typedef struct { + dac_channel_mask_t chan_sel; /*!< Using DAC channel mask to select the channels */ +} dac_channels_config_t; + +/** + * @brief DAC continuous mode configration + * + */ +typedef struct { + uint32_t freq_hz; /*!< The frequency of DAC conversion in continuous mode, unit: Hz + * The supported range is related to the target and the clock source. + * For the clock `DAC_DIGI_CLK_SRC_DEFAULT`: the range is 19.6 KHz to several MHz on ESP32 + * and 77 Hz to several MHz on ESP32-S2. + * For the clock `DAC_DIGI_CLK_SRC_APLL`: the range is 648 Hz to several MHz on ESP32 + * and 6 Hz to several MHz on ESP32-S2. + * Typically not suggest to set the frequency higher than 2 MHz, otherwise the severe distortion will appear + */ + dac_conti_clk_src_t clk_src; /*!< The clock source of digital controller, which can affect the range of supported frequency + * Currently `DAC_DIGI_CLK_SRC_DEFAULT` and `DAC_DIGI_CLK_SRC_APLL` are available + */ + uint32_t desc_num; /*!< The number of DMA descriptor, at least 2 descriptors are required + * The number of descriptors is directly proportional to the max data buffer size while converting in cyclic output + * but only need to ensure it is greater than '1' in acyclic output + * Typically, suggest to set the number bigger than 5, in case the DMA stopped while sending a short buffer + */ + uint32_t buf_size; /*!< The DMA buffer size, should be within 4092 bytes. Each DMA buffer will be attached to a DMA descriptor, + * i.e. the number of DMA buffer will be equal to the DMA descriptor number + * The DMA buffer size is not allowed to be greater than 4092 bytes + * The total DMA buffer size equal to `desc_num * buf_size` + * Typically, suggest to set the size to the multiple of 4 + */ + dac_conti_channel_mode_t chan_mode; /*!< The channel mode of continuous mode, only take effect when multiple channels enabled, depends converting the buffer alternately or simultaneously */ +} dac_conti_config_t; + +/** + * @brief DAC cosine wave gnerator configuration + * + */ +typedef struct { + uint32_t freq_hz; /*!< The frequency of cosine wave, unit: Hz. + * The cosine wave generator is driven by RTC clock which is about SOC_CLK_RC_FAST_FREQ_APPROX Hz by default, + * With the default RTC clock, the minimun frequency of cosine wave is about 130 Hz, + * Although it can support up to serveral MHz frequency theoretically, + * the waveform will distort at high frequency due to the hardware limitation. + * Typically not suggest to set the frequency higher than 200 KHz + */ + dac_cosine_clk_src_t clk_src; /*!< The clock source of the cosine wave generator, currently only support `DAC_COSINE_CLK_SRC_DEFAULT` which comes from RTC FAST clock */ + dac_cosine_scale_t scale; /*!< The scale of cosine wave amplitude */ + dac_cosine_phase_t phase; /*!< The phase of cosine wave */ + int8_t offset; /*!< The DC offset of cosine wave */ +} dac_cosine_config_t; + +typedef struct dac_channels_s *dac_channels_handle_t; /*!< DAC channels' handle of DAC peripheral, one or multiple DAC channels can be controlled by this handle */ + +/*-------------------------------------------------------------------------- + DAC common APIs + ---------------------------------------------------------------------------*/ +/** + * @brief Allocate a new DAC channels' handle + * @note The driver supports to manage one single channel by enabling only one channel in the channel mask, + * or multiple channels together as a whole by enabling multiple channels in the channel mask. + * Moreover, the channels can also be managed separately if they are allocated separately. + * + * @param[in] dac_cfg DAC basic configuration + * @param[out] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_NO_MEM No memory for a new DAC handle + * - ESP_ERR_INVALID_STATE The specified DAC channel is occupied already + * - ESP_OK Success to allocate DAC channels + */ +esp_err_t dac_new_channels(const dac_channels_config_t *dac_cfg, dac_channels_handle_t *handle); + +/** + * @brief Delete and free the DAC channels + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channels are not disabled + * - ESP_OK Success to delete the channels + */ +esp_err_t dac_del_channels(dac_channels_handle_t handle); + +/** + * @brief Enabled the DAC channels in the channels + * @note GPIOs of DAC channles will be enabled in this step + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channels has enabled already or the channels are running + * - ESP_OK Success to enable the channels + */ +esp_err_t dac_channels_enable(dac_channels_handle_t handle); + +/** + * @brief Disable the DAC channels in the channels + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channels has disabled already or the channels are running + * - ESP_OK Success to enable the channels + */ +esp_err_t dac_channels_disable(dac_channels_handle_t handle); + +/*-------------------------------------------------------------------------- + DAC direct voltage outputting APIs + ---------------------------------------------------------------------------*/ +/** + * @brief DAC channels output a voltage directly + * @note This function is available when DAC chennels is enbled + * @note Please enable 'DAC ISR IRAM-Safe' in memuconfig when it is called in an IRAM safe ISR + * + * @param[in] handle DAC channels handle + * @param[in] value The digital value of the voltage + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channels are not enabled + * - ESP_OK Success to enable the channels + */ +esp_err_t dac_channels_set_voltage(dac_channels_handle_t handle, uint8_t value); + +/*-------------------------------------------------------------------------- + DAC continuous outputting APIs + ---------------------------------------------------------------------------*/ +/** + * @brief Initialize the DAC channels to continuous mode + * @note DAC can convert digital data continuously in continuous mode + * + * @param[in] handle DAC channels handle + * @param[in] conti_cfg DAC continuous mode configuration + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channels has been initialized already + * - ESP_ERR_NO_MEM No memory for DAC continuous mode + * - ESP_OK Success to initializing the DAC channels to continuous mode + */ +esp_err_t dac_channels_init_continuous_mode(dac_channels_handle_t handle, const dac_conti_config_t *conti_cfg); + +/** + * @brief Deinitialize the continuous mode of the DAC channels + * @note It can only be deinitialized when the continuous output is disabled + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC continuous mode is not disabled yet + * - ESP_OK Success to deinitialize the DAC continuous mode + */ +esp_err_t dac_channels_deinit_continuous_mode(dac_channels_handle_t handle); + +/** + * @brief Enable the DAC continuous output + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC continuous mode has been enabled already + * - ESP_OK Success to start the continuous output + */ +esp_err_t dac_channels_enable_continuous_mode(dac_channels_handle_t handle); + +/** + * @brief Disable the DAC continuous output + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC continuous mode is disabled already + * - ESP_OK Success to stop the continuous output + */ +esp_err_t dac_channels_disable_continuous_mode(dac_channels_handle_t handle); + +/** + * @brief Write DAC continuous data continuously + * @note The data in buffer will only be converted one time, + * This function will be blocked until all data loaded or timeout + * then the DAC output will keep outputting the voltage of the last data in the buffer + * @note On ESP32, the data bit width of DAC continuous data is fixed to 16 bits while only the high 8 bits are available, + * you can align the DAC data to 16 bits manually or set `CONFIG_DAC_DMA_AUTO_16BIT_ALIGN` to get the correct wave. + * But the data bit width is already 8 bits on ESP32-S2, each byte stands for an vailable voltage, + * no need to do any alignment. + * + * @param[in] handle DAC channels handle + * @param[in] buf The digital data buffer to convert + * @param[in] buf_size The buffer size of digital data buffer + * @param[out] bytes_loaded The bytes that has been loaded into DMA buffer, can be NULL if don't need it + * @param[in] timeout_ms The timeout time in mili-second + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC continuous mode has not been enabled yet + * - ESP_ERR_TIMEOUT Waiting for semaphore or message queue timeout + * - ESP_OK Success to output the acyclic DAC data + */ +esp_err_t dac_channels_write_continuously(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded, uint32_t timeout_ms); + +/** + * @brief Write DAC continuous data cyclically + * @note The data in buffer will be converted cyclically once this function is called, + * This function won't be blocked, it will return once the data loaded into DMA buffers + * @note The buffer size of cyclically output is limited by the descriptor number while initializing the continuous mode, + * Concretely, in order to load all the data into descriptors, + * the cyclic buffer size is not supposed to be greater than `desc_num * 4092` + * @note On ESP32, the data bit width of DAC continuous data is fixed to 16 bits while only the high 8 bits are available, + * you can align the DAC data to 16 bits manually or set `CONFIG_DAC_DMA_AUTO_16BIT_ALIGN` to get the correct wave. + * But the data bit width is already 8 bits on ESP32-S2, each byte stands for an vailable voltage, + * no need to do any alignment. + * + * @param[in] handle DAC channels handle + * @param[in] buf The digital data buffer to convert + * @param[in] buf_size The buffer size of digital data buffer + * @param[out] bytes_loaded The bytes that has been loaded into DMA buffer, can be NULL if don't need it + * @param[in] timeout_ms The timeout time in mili-second + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC continuous mode has not been enabled yet + * - ESP_ERR_TIMEOUT Waiting for semaphore or message queue timeout + * - ESP_OK Success to output the acyclic DAC data + */ +esp_err_t dac_channels_write_cyclically(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded, uint32_t timeout_ms); + +/*-------------------------------------------------------------------------- + DAC cosine wave outputting APIs + ---------------------------------------------------------------------------*/ +/** + * @brief Initialize the DAC channels to cosine wave mode + * + * @param[in] handle DAC channels handle + * @param[in] cw_cfg DAC cosine wave generater configuration + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channels has been initialized already + * - ESP_OK Success to initialize the DAC channels into cosine wave mode + */ +esp_err_t dac_channels_init_cosine_mode(dac_channels_handle_t handle, const dac_cosine_config_t *cw_cfg); + +/** + * @brief Deinitialize the DAC channels to cosine wave mode + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC cosine wave generator is not stopped yet + * - ESP_OK Success to deinitialize the DAC cosine mode + */ +esp_err_t dac_channels_deinit_cosine_mode(dac_channels_handle_t handle); + +/** + * @brief Start the DAC cosine wave generator output + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channels has not been enabled yet or started already + * - ESP_OK Success to start cosine wave generator + */ +esp_err_t dac_channels_start_cosine_output(dac_channels_handle_t handle); + +/** + * @brief Stop the DAC cosine wave generator output + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channels has not been enabled yet or stoppped already + * - ESP_OK Success to stop cosine wave generator + */ +esp_err_t dac_channels_stop_cosine_output(dac_channels_handle_t handle); + +#endif // SOC_DAC_SUPPORTED + +#ifdef __cplusplus +} +#endif diff --git a/components/driver/include/driver/dac_new.h b/components/driver/include/driver/dac_new.h deleted file mode 100644 index f4ad111487..0000000000 --- a/components/driver/include/driver/dac_new.h +++ /dev/null @@ -1,260 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#pragma once - -#include "driver/dac_types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if CONFIG_IDF_TARGET_ESP32 -#define DAC_CHANNEL1_IO 25 /*!< ESP32 DAC channel 1 GPIO number: GPIO_NUM_25 */ -#define DAC_CHANNEL2_IO 26 /*!< ESP32 DAC channel 2 GPIO number: GPIO_NUM_26 */ -#elif CONFIG_IDF_TARGET_ESP32S2 -#define DAC_CHANNEL1_IO 17 /*!< ESP32S2 DAC channel 1 GPIO number: GPIO_NUM_17 */ -#define DAC_CHANNEL2_IO 18 /*!< ESP32S2 DAC channel 2 GPIO number: GPIO_NUM_17 */ -#endif - -/** - * @brief DAC channel configuration - * - */ -typedef struct { - dac_channel_mask_t chan_sel; /*!< Using DAC channel mask to select the channel in the channel group */ -} dac_group_config_t; - -/** - * @brief DAC DMA configration - * - */ -typedef struct { - uint32_t freq_hz; /*!< The frequency of DAC converting each data in DMA mode, unit: Hz */ - uint32_t desc_num; /*!< The number of DMA descriptor , directly proportional to the max data buffer size while converting in cyclic way */ - dac_dma_channel_mode_t chan_mode; /*!< DMA channel mode, only take effect when multiple channels enabled in a group, depends converting the buffer alternately or simultaneously */ -} dac_dma_config_t; - -/** - * @brief DAC cosine wave gnerator configuration - * - */ -typedef struct { - uint32_t freq_hz; /*!< The frequency of cosine wave, unit: Hz */ - dac_cosine_scale_t scale; /*!< The scale of cosine wave amplitude */ - dac_cosine_phase_t phase; /*!< The phase of cosine wave */ - int8_t offset; /*!< The DC offset of cosine wave */ -} dac_cosine_config_t; - -typedef struct dac_channel_group_s *dac_channel_group_handle_t; /*!< DAC group handle of DAC peripheral, one or multiple DAC channels can be controlled by the group handle */ - -/*-------------------------------------------------------------------------- - DAC common APIs - ---------------------------------------------------------------------------*/ -/** - * @brief Allocate a new DAC channel group - * - * @param[in] dac_cfg DAC basic configuration - * @param[out] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_NO_MEM No memory for a new DAC handle - * - ESP_ERR_INVALID_STATE The specified DAC channel is occupied already - * - ESP_OK Success to allocate DAC channel group - */ -esp_err_t dac_new_channel_group(const dac_group_config_t *dac_cfg, dac_channel_group_handle_t *handle); - -/** - * @brief Delete and free the DAC channel group - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The channel group is not disabled - * - ESP_OK Success to delete the channel group - */ -esp_err_t dac_del_channel_group(dac_channel_group_handle_t handle); - -/** - * @brief Enabled the DAC channels in the channel group - * @note GPIOs of DAC channles will be enabled in this step - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The channel group has enabled already or the channels are running - * - ESP_OK Success to enable the channel group - */ -esp_err_t dac_channel_group_enable(dac_channel_group_handle_t handle); - -/** - * @brief Disable the DAC channels in the channel group - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The channel group has disabled already or the channels are running - * - ESP_OK Success to enable the channel group - */ -esp_err_t dac_channel_group_disable(dac_channel_group_handle_t handle); - -/*-------------------------------------------------------------------------- - DAC constant voltage outputting APIs - ---------------------------------------------------------------------------*/ -/** - * @brief DAC channel group output a constant voltage - * @note This function is available when DAC chennel group is enbled - * - * @param[in] handle DAC channel group handle - * @param[in] value The digital value of the constant voltage - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The channel group is not enabled - * - ESP_OK Success to enable the channel group - */ -esp_err_t dac_channel_group_output_constant_voltage(dac_channel_group_handle_t handle, uint8_t value); - -/*-------------------------------------------------------------------------- - DAC continuous outputting APIs - ---------------------------------------------------------------------------*/ -/** - * @brief Initialize the DAC channel group to DMA mode - * @note DAC can convert digital data continuously in DMA mode - * - * @param[in] handle DAC channel group handle - * @param[in] dma_cfg DAC DMA configuration - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC channel group has been initialized already - * - ESP_ERR_NO_MEM No memory for DAC DMA mode - * - ESP_OK Success to initializing the DAC channel group to DMA mode - */ -esp_err_t dac_channel_group_init_dma_output(dac_channel_group_handle_t handle, const dac_dma_config_t *dma_cfg); - -/** - * @brief Deinitialize the DMA mode of the DAC channel group - * @note It can only be deinitialized when the DMA output is stopped - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC DMA is not stopped yet - * - ESP_OK Success to deinitialize the DAC DMA mode - */ -esp_err_t dac_channel_group_deinit_dma_output(dac_channel_group_handle_t handle); - -/** - * @brief Start the DAC DMA output - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC DMA has not been enabled yet or started already - * - ESP_OK Success to start the DMA output - */ -esp_err_t dac_channel_group_start_dma_output(dac_channel_group_handle_t handle); - -/** - * @brief Stop the DAC DMA output - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC DMA is stopped or not disabled already - * - ESP_OK Success to stop the DMA output - */ -esp_err_t dac_channel_group_stop_dma_output(dac_channel_group_handle_t handle); - -/** - * @brief Write DAC DMA data acyclicly - * @note The data in buffer will only be converted one time, - * This function will be blocked until all data sent successfully or timeout - * then the DAC output will keep outputting the voltage of the last data in the buffer - * - * @param[in] handle DAC channel group handle - * @param[in] buf The digital data buffer to convert - * @param[in] buf_size The buffer size of digital data buffer - * @param[in] timeout_ms The timeout time in mili-second - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC DMA has not been started or enabled yet - * - ESP_ERR_TIMEOUT Waiting for semaphore or message queue timeout - * - ESP_OK Success to output the acyclic DAC data by DMA - */ -esp_err_t dac_channel_group_write_acyclicly(dac_channel_group_handle_t handle, uint8_t *buf, size_t buf_size, uint32_t timeout_ms); - -/** - * @brief Write DAC DMA data cyclicly - * @note The data in buffer will be converted cyclicly once this function is called, - * so the input buffer needs to stay accessable during the convertion, - * but this function won't be blocked, it will return once the data loaded into DMA descriptors - * @note The buffer size of cyclicly output is limited by the descriptor number while initializing the DMA mode, - * Concretely, in order to load all the data into descriptors, - * the cyclic buffer size is not supposed to be greater than `desc_num * 4092` - * - * @param[in] handle DAC channel group handle - * @param[in] buf The digital data buffer to convert - * @param[in] buf_size The buffer size of digital data buffer - * @param[in] timeout_ms The timeout time in mili-second - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC DMA has not been started or enabled yet - * - ESP_ERR_TIMEOUT Waiting for semaphore or message queue timeout - * - ESP_OK Success to output the acyclic DAC data by DMA - */ -esp_err_t dac_channel_group_write_cyclicly(dac_channel_group_handle_t handle, uint8_t *buf, size_t buf_size, uint32_t timeout_ms); - -/*-------------------------------------------------------------------------- - DAC cosine wave outputting APIs - ---------------------------------------------------------------------------*/ -/** - * @brief Initialize the DAC channel group to cosine wave mode - * - * @param[in] handle DAC channel group handle - * @param[in] cw_cfg DAC cosine wave generater configuration - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC channel group has been initialized already - * - ESP_OK Success to initialize the DAC channel group into cosine wave mode - */ -esp_err_t dac_channel_group_init_cosine_output(dac_channel_group_handle_t handle, const dac_cosine_config_t *cw_cfg); - -/** - * @brief Deinitialize the DAC channel group to cosine wave mode - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC cosine wave generator is not stopped yet - * - ESP_OK Success to deinitialize the DAC DMA mode - */ -esp_err_t dac_channel_group_deinit_cosine_output(dac_channel_group_handle_t handle); - -/** - * @brief Start the DAC cosine wave generator output - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC channel group has not been enabled yet or started already - * - ESP_OK Success to start cosine wave generator - */ -esp_err_t dac_channel_group_start_cosine_output(dac_channel_group_handle_t handle); - -/** - * @brief Stop the DAC cosine wave generator output - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC channel group has not been enabled yet or stoppped already - * - ESP_OK Success to stop cosine wave generator - */ -esp_err_t dac_channel_group_stop_cosine_output(dac_channel_group_handle_t handle); - -#ifdef __cplusplus -} -#endif diff --git a/components/driver/include/driver/dac_types.h b/components/driver/include/driver/dac_types.h index c38a955564..50733abcb9 100644 --- a/components/driver/include/driver/dac_types.h +++ b/components/driver/include/driver/dac_types.h @@ -5,51 +5,82 @@ */ #pragma once +#include +#include +#include +#include #include "soc/soc_caps.h" +#include "soc/clk_tree_defs.h" #include "hal/adc_types.h" +#include "esp_bit_defs.h" #include "sdkconfig.h" #ifdef __cplusplus extern "C" { #endif +#if SOC_DAC_SUPPORTED + /** * @brief DAC channel mask * */ typedef enum { - DAC_CHANNEL_MASK_1 = BIT(0), /*!< DAC channel 1 is GPIO25(ESP32) / GPIO17(ESP32S2) */ - DAC_CHANNEL_MASK_2 = BIT(1), /*!< DAC channel 2 is GPIO26(ESP32) / GPIO18(ESP32S2) */ - DAC_CHANNEL_MASK_BOTH = BIT(0) | BIT(1), /*!< DAC channel 2 is GPIO26(ESP32) / GPIO18(ESP32S2) */ + DAC_CHANNEL_MASK_CH0 = BIT(0), /*!< DAC channel 0 is GPIO25(ESP32) / GPIO17(ESP32S2) */ + DAC_CHANNEL_MASK_CH1 = BIT(1), /*!< DAC channel 1 is GPIO26(ESP32) / GPIO18(ESP32S2) */ + DAC_CHANNEL_MASK_BOTH = BIT(0) | BIT(1), /*!< Both DAC channel 0 and channel 1 */ } dac_channel_mask_t; /** * @brief DAC channel work mode in dma mode * @note Only take effect when multiple channels enabled. + * @note Assume the data in buffer is 'A B C D E F' + * DAC_CHANNEL_MODE_SIMUL: + * - channel 0: A B C D E F + * - channel 1: A B C D E F + * DAC_CHANNEL_MODE_ALTER: + * - channel 0: A C E + * - channel 1: B D F */ typedef enum { - DAC_CHANNEL_SIMULTANEOUS, /*!< The data in the DMA buffer is simultaneously output to the enable channel of the DAC. */ - DAC_CHANNEL_ALTERNATE, /*!< The data in the DMA buffer is alternately output to the enable channel of the DAC. */ -} dac_dma_channel_mode_t; + DAC_CHANNEL_MODE_SIMUL, /*!< The data in the DMA buffer is simultaneously output to the enable channel of the DAC. */ + DAC_CHANNEL_MODE_ALTER, /*!< The data in the DMA buffer is alternately output to the enable channel of the DAC. */ +} dac_conti_channel_mode_t; /** - * @brief The multiple of the amplitude of the cosine wave generator. The max amplitude is VDD3P3_RTC. + * @brief DAC DMA (digitial controller) clock source + * + */ +typedef soc_periph_dac_digi_clk_src_t dac_conti_clk_src_t; + +/** + * @brief DAC cosine wave generator clock source + * + */ +typedef soc_periph_dac_cosine_clk_src_t dac_cosine_clk_src_t; + +/** + * @brief The attenuation of the amplitude of the cosine wave generator. The max amplitude is VDD3P3_RTC. */ typedef enum { - DAC_COSINE_SCALE_1 = 0x0, /*!< No scaling to the DAC cosine wave amplitude. Default. */ - DAC_COSINE_SCALE_2 = 0x1, /*!< 1/2 amplitude of the DAC cosine wave */ - DAC_COSINE_SCALE_4 = 0x2, /*!< 1/4 amplitude of the DAC cosine wave */ - DAC_COSINE_SCALE_8 = 0x3, /*!< 1/8 amplitude of the DAC cosine wave */ + DAC_COSINE_NO_ATTEN = 0x0, /*!< No attenuation to the DAC cosine wave amplitude. Default. */ + DAC_COSINE_ATTEN_2 = 0x1, /*!< 1/2 amplitude of the DAC cosine wave */ + DAC_COSINE_ATTEN_4 = 0x2, /*!< 1/4 amplitude of the DAC cosine wave */ + DAC_COSINE_ATTEN_8 = 0x3, /*!< 1/8 amplitude of the DAC cosine wave */ } dac_cosine_scale_t; /** * @brief Set the phase of the cosine wave generator output. + * @note Only 0 or 180 are supported, + * it will be set to 0 as default if configured to an unsupported phase. */ typedef enum { - DAC_COSINE_PHASE_0 = 0x2, /*!< Phase shift +0° */ - DAC_COSINE_PHASE_180 = 0x3, /*!< Phase shift +180° */ + DAC_COSINE_PHASE_0 = 0, /*!< Phase shift +0° */ + DAC_COSINE_PHASE_180 = 180, /*!< Phase shift +180° */ } dac_cosine_phase_t; +#endif // SOC_DAC_SUPPORTED + #ifdef __cplusplus } #endif diff --git a/components/driver/include/esp_private/dac_dma.h b/components/driver/include/esp_private/dac_dma.h deleted file mode 100644 index 66735534fa..0000000000 --- a/components/driver/include/esp_private/dac_dma.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#pragma once - -#include "esp_err.h" -#include "esp_intr_alloc.h" - - -#ifdef __cplusplus -extern "C" { -#endif - -esp_err_t dac_dma_periph_init(int chan_num, uint32_t freq_hz, bool is_alternate); - -esp_err_t dac_dma_periph_deinit(void); - -esp_err_t dac_dma_periph_register_intr(intr_handler_t intr_handler_func, void *user_ctx); - -esp_err_t dac_dma_periph_deregister_intr(void); - -void dac_dma_periph_enable(void); - -void dac_dma_periph_disable(void); - -bool dac_dma_periph_intr_is_triggered(void); - -uint32_t dac_dma_periph_intr_get_eof_desc(void); - -void dac_dma_periph_dma_trans_start(uint32_t desc_addr); - -#ifdef __cplusplus -} -#endif diff --git a/components/driver/linker.lf b/components/driver/linker.lf index 46980ee0c6..119189a0e4 100644 --- a/components/driver/linker.lf +++ b/components/driver/linker.lf @@ -17,5 +17,7 @@ entries: gpio: gpio_intr_disable (noflash) if SDM_CTRL_FUNC_IN_IRAM = y: sdm: sdm_channel_set_duty (noflash) + if DAC_CTRL_FUNC_IN_IRAM = y: + dac_driver: dac_channels_set_voltage (noflash) if MCPWM_CTRL_FUNC_IN_IRAM = y: mcpwm_cmpr: mcpwm_comparator_set_compare_value (noflash) diff --git a/components/driver/test/CMakeLists.txt b/components/driver/test/CMakeLists.txt index f609fd6ca1..dc3eb2437f 100644 --- a/components/driver/test/CMakeLists.txt +++ b/components/driver/test/CMakeLists.txt @@ -1,4 +1,4 @@ -idf_component_register(SRC_DIRS . param_test dac_dma_test +idf_component_register(SRC_DIRS . param_test PRIV_INCLUDE_DIRS include param_test/include PRIV_REQUIRES cmock test_utils driver nvs_flash esp_timer esp_adc esp_event esp_wifi) diff --git a/components/driver/test/dac_dma_test/test_dac_audio_file.h b/components/driver/test/dac_dma_test/test_dac_audio_file.h deleted file mode 100644 index fbe62c647c..0000000000 --- a/components/driver/test/dac_dma_test/test_dac_audio_file.h +++ /dev/null @@ -1,4980 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include -const unsigned char audio_table[] = { - 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x81, 0x7e, 0x7a, 0x79, 0x79, 0x7c, 0x81, 0x82, 0x82, - 0x81, 0x7e, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x7e, 0x82, 0x84, 0x84, 0x85, 0x84, 0x80, 0x7d, 0x7a, - 0x78, 0x78, 0x7a, 0x80, 0x84, 0x87, 0x86, 0x80, 0x7a, 0x77, 0x79, 0x7d, 0x82, 0x85, 0x84, 0x82, - 0x7d, 0x7a, 0x77, 0x76, 0x77, 0x79, 0x80, 0x84, 0x86, 0x88, 0x87, 0x84, 0x7e, 0x77, 0x74, 0x75, - 0x79, 0x81, 0x88, 0x8b, 0x89, 0x87, 0x84, 0x7e, 0x78, 0x73, 0x72, 0x78, 0x82, 0x8b, 0x8f, 0x8e, - 0x88, 0x7e, 0x71, 0x69, 0x6d, 0x79, 0x88, 0x8f, 0x8c, 0x85, 0x80, 0x80, 0x81, 0x7d, 0x77, 0x73, - 0x76, 0x7e, 0x88, 0x8f, 0x8d, 0x85, 0x7e, 0x7b, 0x7b, 0x7e, 0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x80, - 0x83, 0x82, 0x80, 0x7d, 0x7d, 0x80, 0x82, 0x84, 0x83, 0x80, 0x7c, 0x7b, 0x7d, 0x81, 0x84, 0x84, - 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x7c, 0x7a, 0x79, 0x7c, 0x83, 0x87, 0x87, 0x83, 0x7e, 0x79, 0x78, - 0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x81, 0x82, 0x83, 0x84, 0x83, 0x7e, 0x7a, 0x77, 0x78, 0x7b, 0x7e, - 0x81, 0x82, 0x80, 0x7e, 0x7e, 0x81, 0x82, 0x80, 0x7e, 0x80, 0x82, 0x82, 0x81, 0x7e, 0x7c, 0x7b, - 0x7b, 0x7c, 0x80, 0x83, 0x84, 0x83, 0x82, 0x80, 0x7e, 0x7a, 0x77, 0x77, 0x78, 0x7c, 0x82, 0x85, - 0x86, 0x85, 0x84, 0x82, 0x7e, 0x7b, 0x77, 0x75, 0x78, 0x7e, 0x83, 0x85, 0x85, 0x85, 0x84, 0x83, - 0x81, 0x7c, 0x7a, 0x7a, 0x7c, 0x7e, 0x81, 0x82, 0x83, 0x84, 0x84, 0x82, 0x80, 0x7e, 0x7c, 0x7a, - 0x7a, 0x7c, 0x80, 0x83, 0x86, 0x87, 0x84, 0x80, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, - 0x83, 0x87, 0x88, 0x87, 0x82, 0x7c, 0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x81, 0x85, 0x8a, 0x8a, 0x85, - 0x7e, 0x79, 0x78, 0x79, 0x7a, 0x7c, 0x7c, 0x7e, 0x81, 0x82, 0x83, 0x81, 0x7e, 0x7d, 0x7c, 0x7d, - 0x80, 0x7e, 0x7b, 0x7a, 0x7b, 0x7c, 0x81, 0x83, 0x83, 0x84, 0x81, 0x7d, 0x7a, 0x77, 0x78, 0x7a, - 0x7d, 0x80, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x7a, 0x7c, 0x80, 0x82, 0x81, 0x7e, 0x7c, 0x7c, 0x7e, - 0x81, 0x82, 0x84, 0x84, 0x84, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, - 0x7d, 0x82, 0x86, 0x89, 0x89, 0x85, 0x7a, 0x6f, 0x69, 0x64, 0x62, 0x6f, 0x8f, 0xb2, 0xc9, 0xcc, - 0xb1, 0x80, 0x4f, 0x2c, 0x18, 0x24, 0x53, 0x8c, 0xb3, 0xc9, 0xd0, 0xbe, 0x9c, 0x78, 0x5b, 0x4b, - 0x4e, 0x5d, 0x76, 0x8b, 0x92, 0x9d, 0x9d, 0x90, 0x87, 0x7a, 0x70, 0x6c, 0x70, 0x7a, 0x86, 0x8b, - 0x8e, 0x8b, 0x83, 0x7b, 0x77, 0x78, 0x7a, 0x80, 0x82, 0x82, 0x83, 0x81, 0x7a, 0x79, 0x7e, 0x84, - 0x89, 0x8b, 0x85, 0x7b, 0x71, 0x6f, 0x71, 0x73, 0x79, 0x88, 0x94, 0x99, 0x96, 0x8f, 0x82, 0x6c, - 0x5f, 0x60, 0x67, 0x77, 0x8f, 0xa1, 0xa6, 0x9c, 0x85, 0x67, 0x56, 0x58, 0x69, 0x83, 0x99, 0xa7, - 0xa7, 0x97, 0x82, 0x6a, 0x57, 0x54, 0x5e, 0x74, 0x90, 0xa5, 0xa9, 0x9c, 0x86, 0x6f, 0x60, 0x5d, - 0x67, 0x7b, 0x8f, 0x98, 0x98, 0x8e, 0x7d, 0x6b, 0x60, 0x63, 0x70, 0x84, 0x99, 0xa5, 0xa4, 0x94, - 0x7d, 0x67, 0x58, 0x59, 0x63, 0x75, 0x89, 0x93, 0x96, 0x98, 0x96, 0x90, 0x86, 0x77, 0x69, 0x5f, - 0x5d, 0x69, 0x7c, 0x8d, 0x99, 0x9a, 0x92, 0x86, 0x74, 0x68, 0x68, 0x74, 0x84, 0x93, 0x9b, 0x98, - 0x8d, 0x7a, 0x69, 0x60, 0x61, 0x6a, 0x7a, 0x8d, 0x9e, 0xa4, 0x98, 0x83, 0x6c, 0x5e, 0x60, 0x6c, - 0x7d, 0x91, 0x98, 0x94, 0x8b, 0x79, 0x6c, 0x67, 0x6a, 0x78, 0x88, 0x92, 0x98, 0x8e, 0x7b, 0x69, - 0x61, 0x69, 0x7a, 0x8f, 0x9e, 0xa1, 0x97, 0x87, 0x78, 0x6d, 0x6a, 0x6e, 0x74, 0x7c, 0x82, 0x80, - 0x7c, 0x7d, 0x81, 0x85, 0x8b, 0x91, 0x92, 0x8b, 0x7d, 0x70, 0x64, 0x5d, 0x5c, 0x67, 0x80, 0x9a, - 0xb1, 0xbd, 0xb7, 0x9f, 0x7a, 0x53, 0x36, 0x31, 0x45, 0x6a, 0x99, 0xc5, 0xd8, 0xca, 0xa4, 0x73, - 0x46, 0x2a, 0x2d, 0x50, 0x83, 0xad, 0xc1, 0xba, 0xa3, 0x8a, 0x70, 0x5c, 0x53, 0x57, 0x67, 0x79, - 0x89, 0x9b, 0xa7, 0xa3, 0x93, 0x81, 0x71, 0x6a, 0x68, 0x69, 0x6d, 0x75, 0x78, 0x78, 0x80, 0x8c, - 0x9b, 0xaa, 0xb0, 0xa7, 0x91, 0x71, 0x4c, 0x34, 0x35, 0x4d, 0x78, 0xa9, 0xcc, 0xd8, 0xcd, 0xa7, - 0x73, 0x41, 0x19, 0xf, 0x29, 0x5f, 0xa5, 0xe3, 0xff, 0xf8, 0xc1, 0x6c, 0x22, 0x0, 0x9, 0x34, - 0x74, 0xb3, 0xdc, 0xe3, 0xca, 0x98, 0x64, 0x42, 0x36, 0x44, 0x6a, 0x96, 0xb6, 0xbb, 0xa5, 0x83, - 0x64, 0x57, 0x57, 0x5e, 0x71, 0x8d, 0x9f, 0xa4, 0x98, 0x85, 0x75, 0x6b, 0x6a, 0x73, 0x81, 0x8d, - 0x97, 0x94, 0x7a, 0x5e, 0x53, 0x5e, 0x7a, 0x91, 0xa1, 0xa6, 0x9c, 0x91, 0x78, 0x66, 0x66, 0x6c, - 0x7b, 0x82, 0x84, 0x93, 0x9c, 0x93, 0x85, 0x74, 0x62, 0x58, 0x62, 0x7a, 0x8f, 0xa3, 0xb3, 0xaf, - 0x92, 0x63, 0x40, 0x3c, 0x55, 0x81, 0xa8, 0xbb, 0xb4, 0x90, 0x65, 0x50, 0x58, 0x74, 0x8a, 0x95, - 0x96, 0x91, 0x87, 0x80, 0x7a, 0x70, 0x68, 0x68, 0x6f, 0x7e, 0x95, 0xa8, 0xa7, 0x98, 0x7d, 0x60, - 0x54, 0x5c, 0x6d, 0x81, 0x95, 0xa3, 0xa4, 0x99, 0x7d, 0x68, 0x5d, 0x5d, 0x67, 0x76, 0x88, 0x96, - 0x9f, 0xa2, 0x9d, 0x87, 0x6a, 0x53, 0x4d, 0x5e, 0x7a, 0x99, 0xad, 0xb1, 0xa3, 0x81, 0x62, 0x59, - 0x5d, 0x67, 0x77, 0x8d, 0x9c, 0x9b, 0x91, 0x83, 0x70, 0x64, 0x69, 0x7b, 0x93, 0xa1, 0x9e, 0x89, - 0x74, 0x64, 0x50, 0x4d, 0x69, 0x96, 0xbd, 0xc5, 0xad, 0x8a, 0x5c, 0x3d, 0x38, 0x46, 0x6c, 0x99, - 0xbb, 0xce, 0xc8, 0xa7, 0x72, 0x3e, 0x21, 0x27, 0x4f, 0x8b, 0xbc, 0xd1, 0xc7, 0xa5, 0x76, 0x50, - 0x3d, 0x41, 0x5e, 0x84, 0xa9, 0xc0, 0xb7, 0xa0, 0x82, 0x66, 0x58, 0x58, 0x60, 0x6e, 0x7e, 0x8e, - 0x9b, 0xa1, 0x9e, 0x97, 0x87, 0x71, 0x62, 0x57, 0x54, 0x61, 0x7c, 0xa1, 0xbb, 0xbd, 0xa9, 0x84, - 0x59, 0x3c, 0x3b, 0x57, 0x81, 0xa8, 0xc2, 0xc4, 0xac, 0x81, 0x58, 0x3d, 0x3a, 0x52, 0x75, 0x98, - 0xb4, 0xc2, 0xbb, 0xa1, 0x7b, 0x5a, 0x44, 0x3c, 0x4d, 0x6e, 0x93, 0xb0, 0xbc, 0xba, 0xa4, 0x80, - 0x5c, 0x45, 0x42, 0x52, 0x72, 0x98, 0xb2, 0xba, 0xaf, 0x92, 0x6e, 0x52, 0x45, 0x48, 0x5a, 0x7a, - 0x9c, 0xb1, 0xb8, 0xaf, 0x99, 0x7b, 0x60, 0x51, 0x51, 0x63, 0x7b, 0x96, 0xa8, 0xa8, 0x99, 0x82, - 0x6c, 0x5e, 0x59, 0x61, 0x76, 0x90, 0xa3, 0xa6, 0x9c, 0x89, 0x6f, 0x5a, 0x4d, 0x4f, 0x64, 0x82, - 0xa0, 0xb5, 0xb8, 0xad, 0x93, 0x72, 0x58, 0x49, 0x4d, 0x64, 0x83, 0x9f, 0xb3, 0xb5, 0xa5, 0x8b, - 0x6f, 0x59, 0x54, 0x5b, 0x67, 0x77, 0x8b, 0x98, 0x9d, 0x97, 0x8c, 0x7e, 0x71, 0x6a, 0x68, 0x6c, - 0x76, 0x86, 0x92, 0x9a, 0x9d, 0x98, 0x8a, 0x75, 0x61, 0x54, 0x55, 0x65, 0x83, 0xa0, 0xaf, 0xaa, - 0x99, 0x86, 0x75, 0x69, 0x5f, 0x5e, 0x67, 0x79, 0x8c, 0x96, 0x95, 0x8b, 0x80, 0x78, 0x76, 0x78, - 0x79, 0x76, 0x77, 0x80, 0x88, 0x89, 0x86, 0x86, 0x86, 0x84, 0x81, 0x7b, 0x78, 0x78, 0x7e, 0x83, - 0x81, 0x7c, 0x79, 0x7b, 0x84, 0x88, 0x86, 0x83, 0x80, 0x80, 0x82, 0x7e, 0x77, 0x74, 0x7b, 0x89, - 0x91, 0x89, 0x7a, 0x6f, 0x6c, 0x70, 0x7a, 0x84, 0x85, 0x81, 0x84, 0x89, 0x8e, 0x90, 0x8e, 0x8a, - 0x84, 0x7b, 0x6e, 0x63, 0x62, 0x71, 0x8c, 0xa5, 0xad, 0xa1, 0x8a, 0x73, 0x62, 0x58, 0x57, 0x5f, - 0x70, 0x8d, 0xa7, 0xb3, 0xae, 0x9c, 0x83, 0x68, 0x51, 0x41, 0x3e, 0x4f, 0x75, 0xa3, 0xc6, 0xd2, - 0xc3, 0x9b, 0x6b, 0x46, 0x35, 0x3a, 0x55, 0x7d, 0xa9, 0xc3, 0xc4, 0xb4, 0x95, 0x73, 0x5b, 0x4a, - 0x44, 0x4b, 0x5c, 0x79, 0x9b, 0xb7, 0xc2, 0xb5, 0x99, 0x7a, 0x5f, 0x4b, 0x45, 0x4d, 0x62, 0x7d, - 0x9a, 0xae, 0xb1, 0xaa, 0x9a, 0x8a, 0x7b, 0x64, 0x4d, 0x45, 0x50, 0x6b, 0x8e, 0xaa, 0xb4, 0xad, - 0x9d, 0x82, 0x68, 0x58, 0x53, 0x5b, 0x6d, 0x85, 0x97, 0xa4, 0xa9, 0xa4, 0x97, 0x81, 0x66, 0x56, - 0x54, 0x62, 0x78, 0x8e, 0x9d, 0xa3, 0x9c, 0x8e, 0x80, 0x75, 0x6d, 0x65, 0x63, 0x6a, 0x77, 0x89, - 0x97, 0x9d, 0x98, 0x8c, 0x7c, 0x6f, 0x67, 0x65, 0x67, 0x6e, 0x7d, 0x92, 0xa3, 0xa8, 0xa2, 0x95, - 0x84, 0x71, 0x63, 0x5d, 0x5f, 0x68, 0x78, 0x8a, 0x95, 0x98, 0x93, 0x88, 0x7e, 0x79, 0x76, 0x76, - 0x77, 0x7a, 0x81, 0x84, 0x85, 0x84, 0x82, 0x80, 0x7e, 0x81, 0x82, 0x81, 0x7b, 0x77, 0x75, 0x77, - 0x7c, 0x85, 0x8e, 0x96, 0x96, 0x8c, 0x7e, 0x6f, 0x64, 0x61, 0x66, 0x75, 0x85, 0x8c, 0x91, 0x90, - 0x8b, 0x86, 0x80, 0x7a, 0x78, 0x78, 0x7c, 0x81, 0x81, 0x7b, 0x79, 0x79, 0x7d, 0x82, 0x83, 0x80, - 0x79, 0x76, 0x79, 0x82, 0x8a, 0x90, 0x92, 0x8e, 0x88, 0x7c, 0x6e, 0x66, 0x66, 0x6b, 0x7b, 0x8f, - 0x99, 0x97, 0x8e, 0x86, 0x7e, 0x79, 0x75, 0x71, 0x6f, 0x73, 0x7b, 0x85, 0x8b, 0x8d, 0x8b, 0x88, - 0x82, 0x7a, 0x72, 0x6f, 0x72, 0x78, 0x7d, 0x81, 0x79, 0x69, 0x5b, 0x56, 0x64, 0x83, 0xa7, 0xc6, - 0xce, 0xc2, 0xa4, 0x7e, 0x5d, 0x48, 0x45, 0x52, 0x67, 0x7e, 0x91, 0x9c, 0xa1, 0x9d, 0x91, 0x7e, - 0x66, 0x4f, 0x3f, 0x3f, 0x51, 0x75, 0xa0, 0xc1, 0xd2, 0xc7, 0xa7, 0x80, 0x5b, 0x49, 0x4c, 0x5d, - 0x7b, 0x97, 0xa9, 0xaf, 0xa7, 0x9a, 0x87, 0x72, 0x60, 0x52, 0x49, 0x4b, 0x58, 0x71, 0x92, 0xaa, - 0xb4, 0xac, 0x97, 0x7c, 0x65, 0x5a, 0x5f, 0x6e, 0x82, 0x93, 0x9f, 0xa0, 0x9a, 0x90, 0x85, 0x7a, - 0x6f, 0x64, 0x5d, 0x5b, 0x61, 0x70, 0x84, 0x93, 0x9b, 0x9d, 0x97, 0x8b, 0x80, 0x76, 0x70, 0x70, - 0x6e, 0x6c, 0x6c, 0x6f, 0x7b, 0x8c, 0x9d, 0xa6, 0xa3, 0x98, 0x89, 0x7a, 0x6b, 0x5f, 0x5c, 0x62, - 0x6e, 0x80, 0x8e, 0x99, 0xa2, 0xa5, 0x9c, 0x84, 0x66, 0x53, 0x50, 0x5d, 0x74, 0x8e, 0x9e, 0xa2, - 0x9a, 0x8e, 0x84, 0x80, 0x7d, 0x7b, 0x74, 0x65, 0x5a, 0x5d, 0x72, 0x90, 0xa7, 0xb1, 0xa9, 0x95, - 0x7b, 0x69, 0x62, 0x64, 0x6c, 0x78, 0x84, 0x89, 0x8b, 0x8d, 0x8e, 0x8c, 0x8a, 0x84, 0x7a, 0x73, - 0x6d, 0x6b, 0x6f, 0x72, 0x6e, 0x66, 0x5d, 0x5b, 0x6b, 0x89, 0xab, 0xc3, 0xc7, 0xba, 0xa1, 0x83, - 0x6d, 0x63, 0x62, 0x67, 0x6d, 0x70, 0x72, 0x77, 0x7d, 0x85, 0x8b, 0x8a, 0x84, 0x7b, 0x72, 0x6a, - 0x67, 0x69, 0x6e, 0x75, 0x7a, 0x7c, 0x82, 0x8c, 0x96, 0x9e, 0xa2, 0x9e, 0x95, 0x8a, 0x81, 0x7b, - 0x7a, 0x7b, 0x79, 0x75, 0x71, 0x6e, 0x71, 0x79, 0x7d, 0x7e, 0x7a, 0x72, 0x70, 0x72, 0x76, 0x83, - 0x8e, 0x93, 0x93, 0x8c, 0x80, 0x77, 0x71, 0x70, 0x76, 0x7e, 0x87, 0x8d, 0x92, 0x95, 0x93, 0x8c, - 0x80, 0x71, 0x66, 0x60, 0x60, 0x66, 0x72, 0x81, 0x8d, 0x93, 0x96, 0x96, 0x94, 0x8f, 0x87, 0x7e, - 0x74, 0x69, 0x61, 0x62, 0x6e, 0x7c, 0x86, 0x8d, 0x8f, 0x8c, 0x89, 0x89, 0x8c, 0x8d, 0x8a, 0x82, - 0x78, 0x6c, 0x67, 0x6a, 0x70, 0x78, 0x81, 0x86, 0x8c, 0x90, 0x92, 0x93, 0x8e, 0x85, 0x79, 0x6e, - 0x67, 0x66, 0x6b, 0x75, 0x84, 0x90, 0x96, 0x96, 0x91, 0x8c, 0x85, 0x79, 0x6f, 0x66, 0x63, 0x67, - 0x6f, 0x7c, 0x8c, 0x99, 0x9e, 0x9d, 0x96, 0x89, 0x79, 0x6f, 0x69, 0x67, 0x6b, 0x74, 0x7e, 0x88, - 0x8b, 0x8a, 0x85, 0x7b, 0x71, 0x6a, 0x6a, 0x71, 0x80, 0x8e, 0x98, 0x9f, 0x9f, 0x95, 0x8b, 0x7c, - 0x6f, 0x69, 0x66, 0x68, 0x70, 0x78, 0x83, 0x8b, 0x90, 0x92, 0x8e, 0x87, 0x7c, 0x72, 0x6d, 0x6c, - 0x70, 0x78, 0x83, 0x8d, 0x93, 0x94, 0x90, 0x8a, 0x83, 0x7a, 0x73, 0x6f, 0x6f, 0x73, 0x79, 0x82, - 0x88, 0x8b, 0x8c, 0x8a, 0x85, 0x80, 0x7c, 0x78, 0x76, 0x76, 0x77, 0x7a, 0x7d, 0x80, 0x83, 0x87, - 0x8b, 0x8b, 0x8c, 0x8a, 0x84, 0x7c, 0x74, 0x6d, 0x6c, 0x6f, 0x76, 0x82, 0x8b, 0x93, 0x96, 0x95, - 0x8f, 0x87, 0x7b, 0x70, 0x69, 0x66, 0x69, 0x70, 0x7a, 0x86, 0x8e, 0x93, 0x94, 0x8d, 0x85, 0x7c, - 0x75, 0x72, 0x72, 0x74, 0x77, 0x7b, 0x80, 0x83, 0x87, 0x87, 0x87, 0x84, 0x80, 0x7d, 0x7a, 0x77, - 0x77, 0x7a, 0x7d, 0x80, 0x83, 0x83, 0x81, 0x7d, 0x7b, 0x7a, 0x7c, 0x7d, 0x82, 0x85, 0x87, 0x87, - 0x85, 0x82, 0x7c, 0x78, 0x75, 0x75, 0x78, 0x80, 0x86, 0x8a, 0x8e, 0x8e, 0x89, 0x83, 0x7b, 0x72, - 0x6e, 0x6e, 0x70, 0x77, 0x80, 0x88, 0x8e, 0x90, 0x8d, 0x87, 0x7e, 0x74, 0x6e, 0x6c, 0x70, 0x79, - 0x85, 0x8a, 0x8e, 0x8e, 0x88, 0x83, 0x7c, 0x77, 0x74, 0x75, 0x77, 0x7b, 0x83, 0x87, 0x88, 0x87, - 0x82, 0x7d, 0x7d, 0x7c, 0x7c, 0x7e, 0x80, 0x80, 0x80, 0x7d, 0x7c, 0x7a, 0x7a, 0x7d, 0x80, 0x83, - 0x85, 0x86, 0x83, 0x81, 0x7c, 0x7a, 0x7a, 0x7a, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x81, - 0x83, 0x84, 0x83, 0x83, 0x82, 0x7e, 0x7a, 0x77, 0x73, 0x73, 0x76, 0x79, 0x80, 0x87, 0x8b, 0x8d, - 0x8a, 0x85, 0x81, 0x7a, 0x75, 0x74, 0x74, 0x76, 0x7a, 0x7e, 0x84, 0x88, 0x8a, 0x8a, 0x88, 0x84, - 0x7d, 0x77, 0x73, 0x72, 0x75, 0x7b, 0x83, 0x88, 0x8c, 0x8b, 0x86, 0x81, 0x7a, 0x76, 0x75, 0x76, - 0x78, 0x7b, 0x81, 0x86, 0x89, 0x89, 0x87, 0x82, 0x7b, 0x76, 0x74, 0x75, 0x78, 0x7d, 0x83, 0x84, - 0x85, 0x84, 0x82, 0x80, 0x7c, 0x7b, 0x7c, 0x7b, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, - 0x7e, 0x80, 0x82, 0x83, 0x82, 0x82, 0x80, 0x7d, 0x7c, 0x7d, 0x7d, 0x7e, 0x81, 0x81, 0x7e, 0x7e, - 0x7e, 0x7c, 0x7d, 0x7d, 0x7d, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7b, 0x7a, 0x7c, 0x7e, 0x83, - 0x83, 0x82, 0x82, 0x80, 0x80, 0x81, 0x83, 0x85, 0x84, 0x82, 0x80, 0x7d, 0x7b, 0x79, 0x78, 0x78, - 0x7a, 0x7d, 0x82, 0x87, 0x88, 0x87, 0x83, 0x7d, 0x79, 0x79, 0x79, 0x7c, 0x80, 0x83, 0x83, 0x82, - 0x81, 0x7c, 0x7c, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x82, 0x82, 0x7e, 0x7c, 0x7c, 0x7c, 0x7e, - 0x80, 0x81, 0x82, 0x83, 0x81, 0x7e, 0x7c, 0x7b, 0x7c, 0x7d, 0x81, 0x85, 0x86, 0x85, 0x83, 0x80, - 0x7b, 0x78, 0x77, 0x77, 0x76, 0x79, 0x81, 0x86, 0x8a, 0x8b, 0x88, 0x81, 0x7b, 0x79, 0x78, 0x7b, - 0x7d, 0x7c, 0x7b, 0x7c, 0x7d, 0x82, 0x87, 0x88, 0x86, 0x81, 0x7c, 0x7a, 0x7b, 0x7e, 0x82, 0x83, - 0x81, 0x7d, 0x7c, 0x7d, 0x81, 0x82, 0x81, 0x80, 0x81, 0x80, 0x7d, 0x7c, 0x7b, 0x7a, 0x7c, 0x80, - 0x81, 0x7e, 0x7b, 0x7c, 0x7c, 0x79, 0x78, 0x7b, 0x7d, 0x80, 0x83, 0x84, 0x84, 0x83, 0x7e, 0x7a, - 0x79, 0x78, 0x76, 0x77, 0x7b, 0x84, 0x88, 0x87, 0x85, 0x83, 0x80, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, - 0x7c, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x82, 0x86, 0x88, 0x86, 0x81, 0x7b, 0x79, 0x79, 0x78, - 0x79, 0x7a, 0x7c, 0x80, 0x84, 0x87, 0x86, 0x87, 0x85, 0x81, 0x7a, 0x75, 0x74, 0x77, 0x7b, 0x81, - 0x84, 0x84, 0x84, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x80, 0x7b, 0x7b, 0x7b, 0x7a, 0x7c, 0x80, - 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x80, - 0x7e, 0x7e, 0x7d, 0x7d, 0x80, 0x80, 0x80, 0x81, 0x83, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x79, - 0x77, 0x76, 0x77, 0x7b, 0x83, 0x8a, 0x8f, 0x8f, 0x87, 0x80, 0x78, 0x74, 0x73, 0x74, 0x7b, 0x80, - 0x83, 0x86, 0x85, 0x85, 0x84, 0x83, 0x80, 0x7c, 0x7a, 0x7b, 0x7c, 0x81, 0x85, 0x87, 0x87, 0x88, - 0x87, 0x83, 0x7e, 0x78, 0x77, 0x77, 0x77, 0x7b, 0x7e, 0x85, 0x89, 0x8b, 0x8c, 0x89, 0x82, 0x79, - 0x71, 0x70, 0x73, 0x76, 0x76, 0x76, 0x78, 0x80, 0x88, 0x8e, 0x90, 0x8b, 0x83, 0x78, 0x70, 0x6f, - 0x70, 0x77, 0x83, 0x88, 0x8a, 0x89, 0x85, 0x82, 0x81, 0x7e, 0x7a, 0x77, 0x7b, 0x82, 0x88, 0x87, - 0x7e, 0x76, 0x72, 0x75, 0x7b, 0x84, 0x8b, 0x8c, 0x87, 0x81, 0x79, 0x78, 0x7c, 0x81, 0x83, 0x7d, - 0x7a, 0x79, 0x7c, 0x85, 0x88, 0x85, 0x7e, 0x77, 0x74, 0x79, 0x7d, 0x81, 0x84, 0x83, 0x80, 0x7e, - 0x7d, 0x7a, 0x7c, 0x82, 0x80, 0x7c, 0x79, 0x78, 0x7e, 0x84, 0x84, 0x83, 0x82, 0x81, 0x7e, 0x7d, - 0x7c, 0x7d, 0x7e, 0x7a, 0x7b, 0x7e, 0x7e, 0x80, 0x82, 0x84, 0x87, 0x89, 0x86, 0x82, 0x81, 0x7d, - 0x7a, 0x78, 0x7a, 0x7e, 0x81, 0x82, 0x84, 0x83, 0x82, 0x82, 0x82, 0x80, 0x80, 0x7e, 0x79, 0x78, - 0x79, 0x7c, 0x7e, 0x7e, 0x7e, 0x81, 0x80, 0x7c, 0x7b, 0x7c, 0x7e, 0x81, 0x81, 0x83, 0x83, 0x82, - 0x82, 0x7e, 0x7d, 0x7b, 0x79, 0x7b, 0x80, 0x83, 0x84, 0x88, 0x86, 0x82, 0x7d, 0x77, 0x76, 0x79, - 0x7d, 0x82, 0x85, 0x87, 0x89, 0x88, 0x87, 0x84, 0x79, 0x74, 0x6f, 0x6c, 0x74, 0x7c, 0x87, 0x8d, - 0x8b, 0x8a, 0x84, 0x7d, 0x7a, 0x77, 0x74, 0x74, 0x76, 0x77, 0x7d, 0x84, 0x87, 0x87, 0x85, 0x80, - 0x7d, 0x81, 0x81, 0x81, 0x7e, 0x78, 0x78, 0x77, 0x79, 0x7e, 0x84, 0x85, 0x83, 0x82, 0x7e, 0x7e, - 0x84, 0x87, 0x87, 0x86, 0x81, 0x79, 0x76, 0x7a, 0x7c, 0x80, 0x82, 0x80, 0x80, 0x82, 0x88, 0x8e, - 0x8e, 0x8b, 0x83, 0x7a, 0x72, 0x6e, 0x6d, 0x72, 0x7c, 0x86, 0x8a, 0x8c, 0x8d, 0x8a, 0x88, 0x83, - 0x7b, 0x72, 0x6b, 0x6a, 0x6d, 0x77, 0x84, 0x8c, 0x91, 0x8f, 0x87, 0x80, 0x7d, 0x7c, 0x7d, 0x7e, - 0x7a, 0x78, 0x77, 0x77, 0x7b, 0x82, 0x85, 0x87, 0x88, 0x85, 0x86, 0x86, 0x85, 0x84, 0x80, 0x7b, - 0x78, 0x76, 0x77, 0x7a, 0x80, 0x80, 0x81, 0x83, 0x83, 0x85, 0x87, 0x87, 0x85, 0x80, 0x7b, 0x76, - 0x75, 0x77, 0x76, 0x78, 0x7c, 0x7e, 0x81, 0x84, 0x86, 0x87, 0x8a, 0x8a, 0x87, 0x81, 0x7c, 0x78, - 0x73, 0x74, 0x75, 0x78, 0x84, 0x8d, 0x8e, 0x8c, 0x87, 0x7e, 0x79, 0x7a, 0x7c, 0x81, 0x80, 0x7d, - 0x7a, 0x7a, 0x7e, 0x83, 0x87, 0x89, 0x86, 0x84, 0x80, 0x7b, 0x78, 0x73, 0x72, 0x74, 0x77, 0x81, - 0x8b, 0x8f, 0x8e, 0x86, 0x7b, 0x73, 0x6e, 0x71, 0x78, 0x7b, 0x7e, 0x81, 0x80, 0x82, 0x86, 0x89, - 0x8a, 0x86, 0x7c, 0x75, 0x74, 0x77, 0x7b, 0x81, 0x84, 0x83, 0x82, 0x7e, 0x81, 0x85, 0x87, 0x88, - 0x86, 0x80, 0x7a, 0x77, 0x77, 0x7b, 0x7e, 0x82, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x80, 0x7d, - 0x7c, 0x7b, 0x7c, 0x81, 0x83, 0x83, 0x80, 0x79, 0x74, 0x70, 0x70, 0x74, 0x7a, 0x86, 0x8f, 0x92, - 0x90, 0x89, 0x7d, 0x74, 0x71, 0x70, 0x74, 0x78, 0x7a, 0x7c, 0x7d, 0x7c, 0x7d, 0x82, 0x86, 0x8c, - 0x8f, 0x8d, 0x88, 0x7d, 0x74, 0x73, 0x72, 0x76, 0x7a, 0x7b, 0x82, 0x86, 0x89, 0x8e, 0x8e, 0x8b, - 0x86, 0x7b, 0x76, 0x75, 0x78, 0x7e, 0x85, 0x86, 0x83, 0x80, 0x7c, 0x7c, 0x80, 0x84, 0x87, 0x87, - 0x84, 0x82, 0x80, 0x80, 0x7e, 0x7a, 0x75, 0x73, 0x72, 0x76, 0x7c, 0x82, 0x86, 0x87, 0x85, 0x86, - 0x88, 0x86, 0x81, 0x7b, 0x75, 0x6f, 0x6e, 0x72, 0x7a, 0x82, 0x8a, 0x90, 0x91, 0x8e, 0x88, 0x84, - 0x7b, 0x76, 0x72, 0x6f, 0x70, 0x78, 0x84, 0x8b, 0x8e, 0x8a, 0x7d, 0x73, 0x71, 0x76, 0x82, 0x8e, - 0x92, 0x8b, 0x7e, 0x71, 0x6c, 0x70, 0x78, 0x81, 0x82, 0x7e, 0x7a, 0x7b, 0x80, 0x89, 0x92, 0x92, - 0x89, 0x7c, 0x70, 0x6b, 0x6f, 0x76, 0x7b, 0x7e, 0x80, 0x82, 0x87, 0x8d, 0x92, 0x91, 0x8c, 0x82, - 0x75, 0x6f, 0x6d, 0x6f, 0x73, 0x79, 0x80, 0x86, 0x8d, 0x93, 0x93, 0x8d, 0x84, 0x76, 0x6b, 0x6a, - 0x73, 0x7c, 0x88, 0x8d, 0x8b, 0x88, 0x83, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7c, 0x7a, 0x78, 0x78, - 0x78, 0x76, 0x78, 0x7c, 0x85, 0x91, 0x96, 0x91, 0x85, 0x72, 0x67, 0x68, 0x6f, 0x77, 0x80, 0x82, - 0x80, 0x7e, 0x81, 0x88, 0x93, 0x99, 0x94, 0x88, 0x78, 0x69, 0x66, 0x6e, 0x78, 0x80, 0x84, 0x82, - 0x82, 0x86, 0x8d, 0x91, 0x92, 0x8e, 0x84, 0x7b, 0x74, 0x6e, 0x71, 0x77, 0x7c, 0x7e, 0x80, 0x81, - 0x82, 0x86, 0x87, 0x87, 0x85, 0x83, 0x80, 0x7c, 0x7b, 0x7b, 0x7a, 0x77, 0x76, 0x77, 0x79, 0x7b, - 0x7e, 0x81, 0x84, 0x86, 0x86, 0x85, 0x86, 0x85, 0x81, 0x80, 0x79, 0x75, 0x73, 0x71, 0x75, 0x7a, - 0x80, 0x88, 0x8f, 0x95, 0x93, 0x85, 0x74, 0x67, 0x65, 0x74, 0x8c, 0x9c, 0x9e, 0x89, 0x69, 0x53, - 0x50, 0x66, 0x89, 0xa6, 0xae, 0x9d, 0x81, 0x6a, 0x65, 0x76, 0x8d, 0x97, 0x8b, 0x6f, 0x5b, 0x5a, - 0x6c, 0x88, 0x9e, 0xa2, 0x91, 0x7e, 0x74, 0x76, 0x83, 0x8f, 0x8f, 0x83, 0x71, 0x65, 0x64, 0x73, - 0x89, 0x97, 0x9a, 0x90, 0x80, 0x76, 0x76, 0x7b, 0x7e, 0x7d, 0x77, 0x74, 0x78, 0x81, 0x8a, 0x8f, - 0x8c, 0x83, 0x77, 0x70, 0x6e, 0x76, 0x84, 0x8e, 0x94, 0x92, 0x8c, 0x87, 0x84, 0x84, 0x83, 0x7c, - 0x72, 0x66, 0x58, 0x4b, 0x44, 0x46, 0x5b, 0x81, 0xad, 0xce, 0xd4, 0xba, 0x93, 0x73, 0x66, 0x66, - 0x6b, 0x6c, 0x67, 0x66, 0x69, 0x72, 0x84, 0x9e, 0xba, 0xc7, 0xb8, 0x93, 0x67, 0x54, 0x57, 0x68, - 0x73, 0x6d, 0x60, 0x57, 0x62, 0x7c, 0x98, 0xa6, 0xa9, 0xa2, 0x92, 0x7b, 0x68, 0x63, 0x6b, 0x78, - 0x83, 0x85, 0x80, 0x7d, 0x86, 0x92, 0x98, 0x94, 0x87, 0x7c, 0x77, 0x76, 0x78, 0x7a, 0x7b, 0x7a, - 0x7b, 0x7d, 0x7c, 0x7a, 0x79, 0x7d, 0x80, 0x80, 0x80, 0x7c, 0x7c, 0x83, 0x8a, 0x8d, 0x8c, 0x8a, - 0x87, 0x86, 0x85, 0x80, 0x7a, 0x79, 0x7b, 0x7c, 0x7b, 0x7c, 0x80, 0x84, 0x8a, 0x8b, 0x89, 0x84, - 0x77, 0x68, 0x59, 0x53, 0x55, 0x64, 0x81, 0x9b, 0xa9, 0xab, 0xa5, 0x9a, 0x8e, 0x87, 0x7c, 0x73, - 0x6d, 0x6b, 0x69, 0x6d, 0x76, 0x83, 0x91, 0x96, 0x94, 0x89, 0x77, 0x6e, 0x6c, 0x6e, 0x72, 0x73, - 0x76, 0x7a, 0x7d, 0x86, 0x8d, 0x8e, 0x8f, 0x8a, 0x84, 0x7c, 0x75, 0x76, 0x7e, 0x88, 0x8f, 0x90, - 0x8a, 0x85, 0x7e, 0x79, 0x76, 0x73, 0x74, 0x77, 0x79, 0x81, 0x86, 0x87, 0x89, 0x88, 0x85, 0x83, - 0x80, 0x7a, 0x75, 0x70, 0x69, 0x5f, 0x56, 0x54, 0x60, 0x7e, 0xa4, 0xc7, 0xd1, 0xc3, 0xa9, 0x86, - 0x6b, 0x5d, 0x57, 0x56, 0x57, 0x5e, 0x68, 0x75, 0x86, 0x95, 0xa1, 0xa5, 0x9a, 0x84, 0x68, 0x53, - 0x50, 0x59, 0x6c, 0x7b, 0x83, 0x8c, 0x97, 0xa3, 0xab, 0xa6, 0x9b, 0x8d, 0x79, 0x6b, 0x5e, 0x5b, - 0x66, 0x76, 0x85, 0x8e, 0x8f, 0x8c, 0x86, 0x81, 0x7b, 0x70, 0x64, 0x5f, 0x64, 0x71, 0x85, 0x96, - 0xa1, 0xa5, 0xa1, 0x93, 0x81, 0x6f, 0x62, 0x5e, 0x63, 0x6f, 0x79, 0x87, 0x94, 0x99, 0x98, 0x93, - 0x8b, 0x82, 0x7c, 0x79, 0x75, 0x71, 0x68, 0x5d, 0x5a, 0x63, 0x73, 0x8a, 0xa2, 0xb6, 0xba, 0xae, - 0x99, 0x7a, 0x5a, 0x40, 0x30, 0x2c, 0x3b, 0x5e, 0x8b, 0xb8, 0xd9, 0xe6, 0xdd, 0xc1, 0x99, 0x6a, - 0x43, 0x2e, 0x2c, 0x3c, 0x59, 0x77, 0x92, 0xa8, 0xb5, 0xb8, 0xaf, 0x9a, 0x7c, 0x5d, 0x42, 0x34, - 0x38, 0x50, 0x75, 0xa6, 0xd0, 0xe1, 0xd9, 0xba, 0x90, 0x64, 0x47, 0x3b, 0x3c, 0x4b, 0x5f, 0x77, - 0x91, 0xa7, 0xb3, 0xad, 0x9d, 0x86, 0x68, 0x51, 0x48, 0x4f, 0x64, 0x7e, 0x9b, 0xb2, 0xbb, 0xba, - 0xb1, 0x9c, 0x82, 0x6a, 0x55, 0x4b, 0x49, 0x4f, 0x5a, 0x69, 0x75, 0x7c, 0x7e, 0x87, 0x9b, 0xb3, - 0xc4, 0xbe, 0x9d, 0x70, 0x53, 0x4d, 0x5b, 0x74, 0x85, 0x8e, 0x95, 0x99, 0x9a, 0x91, 0x81, 0x76, - 0x6c, 0x62, 0x57, 0x4e, 0x53, 0x69, 0x8a, 0xa5, 0xb0, 0xa9, 0x9b, 0x8c, 0x83, 0x80, 0x74, 0x6d, - 0x6f, 0x73, 0x78, 0x7e, 0x87, 0x91, 0x97, 0x98, 0x90, 0x7e, 0x6e, 0x61, 0x60, 0x68, 0x71, 0x7a, - 0x84, 0x8f, 0x99, 0x9d, 0x9b, 0x93, 0x89, 0x80, 0x74, 0x6b, 0x64, 0x63, 0x6d, 0x7c, 0x8c, 0x96, - 0x9a, 0x99, 0x91, 0x89, 0x7d, 0x72, 0x6f, 0x72, 0x79, 0x83, 0x8a, 0x8b, 0x87, 0x82, 0x7a, 0x6f, - 0x64, 0x5e, 0x61, 0x70, 0x83, 0x97, 0xab, 0xbb, 0xc1, 0xb5, 0x93, 0x61, 0x39, 0x28, 0x30, 0x4e, - 0x79, 0xa2, 0xbd, 0xc9, 0xc2, 0xaa, 0x86, 0x62, 0x4a, 0x40, 0x44, 0x57, 0x72, 0x94, 0xb5, 0xcb, - 0xcd, 0xb5, 0x90, 0x6a, 0x4a, 0x39, 0x3a, 0x4b, 0x65, 0x8a, 0xaa, 0xbb, 0xbe, 0xb2, 0x98, 0x7a, - 0x5d, 0x43, 0x39, 0x40, 0x5b, 0x83, 0xac, 0xca, 0xd3, 0xc5, 0xa3, 0x79, 0x53, 0x36, 0x30, 0x3d, - 0x5a, 0x81, 0xa1, 0xb8, 0xc4, 0xba, 0xa6, 0x89, 0x67, 0x50, 0x45, 0x45, 0x50, 0x5f, 0x73, 0x84, - 0x97, 0xab, 0xbd, 0xc7, 0xbf, 0xa4, 0x74, 0x48, 0x33, 0x36, 0x53, 0x78, 0x93, 0xa5, 0xac, 0xa9, - 0x9a, 0x86, 0x6f, 0x5d, 0x52, 0x51, 0x56, 0x64, 0x7b, 0x98, 0xaf, 0xb8, 0xb1, 0x99, 0x7a, 0x64, - 0x5a, 0x5c, 0x66, 0x72, 0x82, 0x92, 0x9a, 0x98, 0x92, 0x88, 0x81, 0x77, 0x6b, 0x64, 0x62, 0x67, - 0x78, 0x8a, 0x94, 0x97, 0x92, 0x8d, 0x86, 0x7d, 0x77, 0x76, 0x78, 0x7c, 0x81, 0x81, 0x7e, 0x7b, - 0x7a, 0x7c, 0x7e, 0x7e, 0x84, 0x88, 0x89, 0x88, 0x85, 0x84, 0x85, 0x89, 0x8d, 0x8e, 0x87, 0x75, - 0x63, 0x57, 0x5a, 0x6a, 0x80, 0x93, 0x9d, 0x98, 0x8c, 0x83, 0x80, 0x85, 0x8c, 0x8b, 0x78, 0x59, - 0x3f, 0x39, 0x51, 0x81, 0xb8, 0xde, 0xe0, 0xc2, 0x92, 0x60, 0x3a, 0x2a, 0x33, 0x4e, 0x6e, 0x8f, - 0xa9, 0xba, 0xc1, 0xb6, 0x9b, 0x75, 0x51, 0x38, 0x38, 0x50, 0x76, 0xa0, 0xbd, 0xc9, 0xc0, 0xa5, - 0x84, 0x62, 0x4d, 0x44, 0x4a, 0x5d, 0x75, 0x8f, 0xa7, 0xb1, 0xab, 0x9c, 0x83, 0x6c, 0x5e, 0x5a, - 0x5f, 0x6d, 0x82, 0x94, 0xa0, 0xa3, 0x9c, 0x8f, 0x7c, 0x6a, 0x61, 0x5f, 0x65, 0x6c, 0x75, 0x7d, - 0x81, 0x84, 0x82, 0x85, 0x90, 0x99, 0xa0, 0x99, 0x88, 0x73, 0x65, 0x68, 0x73, 0x7c, 0x83, 0x85, - 0x86, 0x89, 0x88, 0x83, 0x7a, 0x72, 0x6f, 0x6d, 0x6c, 0x70, 0x7a, 0x8a, 0x98, 0x9d, 0x96, 0x8a, - 0x7d, 0x73, 0x6f, 0x70, 0x74, 0x7a, 0x82, 0x89, 0x8c, 0x89, 0x84, 0x80, 0x7c, 0x76, 0x6e, 0x66, - 0x67, 0x73, 0x81, 0x8f, 0x97, 0x93, 0x8c, 0x85, 0x81, 0x7a, 0x76, 0x79, 0x81, 0x87, 0x89, 0x87, - 0x82, 0x7b, 0x73, 0x6c, 0x69, 0x6c, 0x72, 0x82, 0x90, 0x96, 0x96, 0x94, 0x94, 0x96, 0x90, 0x82, - 0x73, 0x68, 0x65, 0x66, 0x68, 0x6b, 0x6f, 0x72, 0x73, 0x71, 0x6f, 0x7c, 0x99, 0xb2, 0xb6, 0xa5, - 0x8d, 0x77, 0x66, 0x5f, 0x60, 0x64, 0x6c, 0x81, 0x9c, 0xab, 0xa7, 0x97, 0x7b, 0x5b, 0x46, 0x45, - 0x55, 0x71, 0x8f, 0xa2, 0xac, 0xaa, 0x9e, 0x8e, 0x7c, 0x6f, 0x63, 0x61, 0x6e, 0x87, 0xa0, 0xad, - 0xa8, 0x96, 0x78, 0x5b, 0x4c, 0x49, 0x55, 0x69, 0x85, 0x9f, 0xab, 0xa7, 0x97, 0x82, 0x6d, 0x63, - 0x65, 0x71, 0x83, 0x92, 0x9c, 0x9c, 0x92, 0x82, 0x74, 0x6a, 0x63, 0x60, 0x64, 0x6d, 0x77, 0x7b, - 0x78, 0x6e, 0x69, 0x7b, 0xa2, 0xc6, 0xcf, 0xb0, 0x7a, 0x4f, 0x45, 0x59, 0x7c, 0x99, 0xa1, 0x9b, - 0x8e, 0x7a, 0x66, 0x58, 0x53, 0x5e, 0x70, 0x80, 0x87, 0x90, 0x9d, 0xa5, 0x9f, 0x87, 0x69, 0x57, - 0x56, 0x68, 0x81, 0x97, 0xab, 0xb1, 0xac, 0x9e, 0x7b, 0x55, 0x41, 0x46, 0x5b, 0x74, 0x90, 0xa5, - 0xaf, 0xac, 0x98, 0x79, 0x5d, 0x4d, 0x50, 0x62, 0x7e, 0x9c, 0xb1, 0xbe, 0xba, 0x9c, 0x6f, 0x48, - 0x38, 0x3e, 0x57, 0x78, 0x95, 0xac, 0xb6, 0xb3, 0xa2, 0x84, 0x63, 0x4d, 0x4b, 0x5b, 0x78, 0x99, - 0xb0, 0xb3, 0xa1, 0x7e, 0x5a, 0x45, 0x4c, 0x65, 0x81, 0x8f, 0x94, 0x9b, 0xa2, 0x9d, 0x8b, 0x73, - 0x5c, 0x48, 0x46, 0x5b, 0x7e, 0xa6, 0xc0, 0xc3, 0xa7, 0x7d, 0x5e, 0x57, 0x62, 0x73, 0x82, 0x8a, - 0x91, 0x92, 0x8f, 0x83, 0x70, 0x63, 0x5e, 0x6a, 0x7c, 0x92, 0x9e, 0xa2, 0x9d, 0x89, 0x6f, 0x60, - 0x61, 0x6f, 0x80, 0x8e, 0x98, 0x9c, 0x9a, 0x91, 0x82, 0x6c, 0x5d, 0x5c, 0x65, 0x74, 0x85, 0x91, - 0x96, 0x93, 0x8e, 0x83, 0x77, 0x70, 0x6a, 0x6a, 0x75, 0x84, 0x90, 0x9a, 0x9d, 0x95, 0x89, 0x77, - 0x68, 0x61, 0x5a, 0x5d, 0x6c, 0x86, 0xa5, 0xbc, 0xbd, 0xa1, 0x73, 0x50, 0x41, 0x4e, 0x70, 0x95, - 0xab, 0xac, 0xa0, 0x8e, 0x79, 0x69, 0x61, 0x5e, 0x62, 0x6f, 0x82, 0x93, 0xa0, 0xa5, 0x9d, 0x88, - 0x6b, 0x51, 0x46, 0x51, 0x70, 0x97, 0xb4, 0xbe, 0xb2, 0x96, 0x72, 0x57, 0x53, 0x5d, 0x6d, 0x81, - 0x8e, 0x93, 0x8d, 0x84, 0x7a, 0x75, 0x76, 0x79, 0x7d, 0x82, 0x86, 0x87, 0x86, 0x83, 0x7d, 0x79, - 0x76, 0x76, 0x7b, 0x83, 0x87, 0x89, 0x87, 0x7e, 0x76, 0x73, 0x72, 0x76, 0x7b, 0x82, 0x88, 0x8d, - 0x93, 0x93, 0x8d, 0x82, 0x74, 0x6c, 0x6a, 0x6d, 0x76, 0x84, 0x8c, 0x8c, 0x82, 0x75, 0x71, 0x75, - 0x7c, 0x86, 0x8b, 0x8c, 0x89, 0x80, 0x79, 0x7c, 0x83, 0x89, 0x8d, 0x89, 0x81, 0x7b, 0x73, 0x6e, - 0x6d, 0x6e, 0x73, 0x80, 0x8f, 0x97, 0x96, 0x8f, 0x83, 0x76, 0x6d, 0x6a, 0x70, 0x7a, 0x88, 0x91, - 0x93, 0x92, 0x89, 0x7b, 0x72, 0x6d, 0x6d, 0x71, 0x7a, 0x87, 0x8f, 0x8f, 0x8f, 0x89, 0x80, 0x79, - 0x75, 0x72, 0x71, 0x70, 0x71, 0x79, 0x87, 0x98, 0xa5, 0xa6, 0x96, 0x79, 0x5a, 0x4d, 0x59, 0x74, - 0x94, 0xa6, 0xa2, 0x91, 0x7a, 0x67, 0x61, 0x67, 0x72, 0x7e, 0x89, 0x90, 0x94, 0x8f, 0x88, 0x7e, - 0x74, 0x6d, 0x6c, 0x74, 0x82, 0x8d, 0x97, 0x95, 0x86, 0x73, 0x68, 0x68, 0x71, 0x82, 0x8d, 0x94, - 0x92, 0x8a, 0x81, 0x77, 0x70, 0x6c, 0x6d, 0x75, 0x81, 0x8b, 0x91, 0x8f, 0x86, 0x7b, 0x74, 0x70, - 0x70, 0x77, 0x82, 0x88, 0x8c, 0x8b, 0x85, 0x7b, 0x74, 0x70, 0x6f, 0x73, 0x7c, 0x85, 0x8b, 0x91, - 0x8e, 0x88, 0x81, 0x76, 0x72, 0x71, 0x73, 0x7b, 0x84, 0x89, 0x89, 0x87, 0x86, 0x81, 0x7a, 0x76, - 0x77, 0x77, 0x76, 0x77, 0x7a, 0x7c, 0x7d, 0x81, 0x87, 0x8b, 0x8c, 0x87, 0x81, 0x7a, 0x73, 0x70, - 0x72, 0x79, 0x82, 0x86, 0x86, 0x83, 0x80, 0x80, 0x83, 0x85, 0x80, 0x7b, 0x7c, 0x7e, 0x85, 0x88, - 0x84, 0x79, 0x67, 0x4f, 0x43, 0x55, 0x8c, 0xca, 0xef, 0xe4, 0x9c, 0x44, 0x13, 0x1c, 0x55, 0x99, - 0xbf, 0xc4, 0xb0, 0x94, 0x77, 0x5c, 0x4b, 0x4a, 0x5c, 0x75, 0x8e, 0x9f, 0xa9, 0xae, 0xa5, 0x88, - 0x60, 0x48, 0x4c, 0x6b, 0x91, 0xa8, 0xac, 0x9e, 0x8b, 0x77, 0x69, 0x63, 0x67, 0x73, 0x80, 0x8a, - 0x8f, 0x87, 0x7d, 0x7a, 0x78, 0x76, 0x77, 0x83, 0x8c, 0x8d, 0x89, 0x81, 0x77, 0x73, 0x76, 0x7d, - 0x88, 0x8c, 0x8c, 0x8d, 0x8a, 0x81, 0x73, 0x6c, 0x6f, 0x76, 0x81, 0x8b, 0x92, 0x92, 0x8a, 0x7a, - 0x69, 0x64, 0x6c, 0x7e, 0x8f, 0x97, 0x96, 0x90, 0x88, 0x7a, 0x6b, 0x65, 0x6a, 0x74, 0x80, 0x8a, - 0x95, 0x98, 0x92, 0x88, 0x78, 0x68, 0x5c, 0x5a, 0x67, 0x81, 0x96, 0xa8, 0xaf, 0xa4, 0x89, 0x6a, - 0x57, 0x52, 0x5c, 0x72, 0x90, 0xa5, 0xac, 0xa5, 0x90, 0x76, 0x60, 0x53, 0x5c, 0x72, 0x8c, 0x9f, - 0xa7, 0xa2, 0x91, 0x7d, 0x6b, 0x60, 0x62, 0x6e, 0x81, 0x91, 0x97, 0x94, 0x8e, 0x83, 0x77, 0x71, - 0x72, 0x74, 0x74, 0x72, 0x6e, 0x6a, 0x6f, 0x82, 0x9e, 0xb6, 0xb8, 0x9f, 0x6f, 0x44, 0x37, 0x50, - 0x85, 0xb3, 0xc1, 0xaa, 0x7d, 0x58, 0x4f, 0x5a, 0x72, 0x89, 0x91, 0x90, 0x8d, 0x89, 0x83, 0x79, - 0x71, 0x6d, 0x6f, 0x77, 0x86, 0x95, 0xa2, 0xa1, 0x8f, 0x75, 0x5f, 0x59, 0x63, 0x75, 0x8a, 0x98, - 0x97, 0x8d, 0x81, 0x75, 0x72, 0x73, 0x75, 0x7b, 0x7d, 0x80, 0x88, 0x90, 0x91, 0x88, 0x7c, 0x74, - 0x72, 0x76, 0x7e, 0x87, 0x89, 0x86, 0x81, 0x7b, 0x78, 0x75, 0x75, 0x7b, 0x83, 0x85, 0x83, 0x7e, - 0x7b, 0x77, 0x76, 0x79, 0x7e, 0x86, 0x8d, 0x92, 0x8f, 0x85, 0x75, 0x6a, 0x69, 0x6d, 0x77, 0x85, - 0x8b, 0x86, 0x7d, 0x77, 0x7a, 0x81, 0x86, 0x88, 0x81, 0x79, 0x71, 0x6c, 0x6f, 0x79, 0x86, 0x8c, - 0x89, 0x83, 0x81, 0x82, 0x84, 0x81, 0x78, 0x71, 0x74, 0x80, 0x8e, 0x96, 0x92, 0x86, 0x75, 0x6a, - 0x69, 0x73, 0x85, 0x92, 0x95, 0x8e, 0x81, 0x75, 0x72, 0x74, 0x79, 0x81, 0x86, 0x8c, 0x90, 0x90, - 0x8a, 0x7d, 0x6e, 0x5e, 0x53, 0x59, 0x72, 0x9e, 0xc5, 0xd3, 0xbc, 0x82, 0x41, 0x1c, 0x2a, 0x62, - 0xab, 0xdb, 0xd9, 0xad, 0x6c, 0x3b, 0x32, 0x45, 0x69, 0x8e, 0xa2, 0xab, 0xa7, 0x9a, 0x83, 0x6a, - 0x56, 0x50, 0x5c, 0x75, 0x94, 0xac, 0xb4, 0xa4, 0x84, 0x61, 0x4b, 0x50, 0x67, 0x85, 0x9b, 0xa4, - 0x9e, 0x8b, 0x73, 0x65, 0x5e, 0x65, 0x77, 0x8a, 0x97, 0x9d, 0x97, 0x8a, 0x78, 0x6a, 0x65, 0x6b, - 0x78, 0x89, 0x93, 0x93, 0x8c, 0x80, 0x74, 0x6e, 0x6f, 0x76, 0x81, 0x8b, 0x91, 0x90, 0x85, 0x78, - 0x6f, 0x6e, 0x73, 0x7c, 0x87, 0x8e, 0x8f, 0x8a, 0x81, 0x77, 0x71, 0x73, 0x7b, 0x83, 0x88, 0x8a, - 0x86, 0x7e, 0x7a, 0x7a, 0x7c, 0x7b, 0x79, 0x7a, 0x7e, 0x84, 0x89, 0x8b, 0x84, 0x7a, 0x75, 0x77, - 0x7b, 0x7a, 0x76, 0x76, 0x79, 0x7d, 0x82, 0x86, 0x8c, 0x8b, 0x85, 0x81, 0x7c, 0x7a, 0x7d, 0x84, - 0x86, 0x85, 0x84, 0x83, 0x83, 0x82, 0x7c, 0x78, 0x76, 0x77, 0x7b, 0x80, 0x87, 0x8a, 0x86, 0x82, - 0x7c, 0x78, 0x77, 0x76, 0x77, 0x76, 0x75, 0x7a, 0x88, 0x98, 0xa5, 0xa7, 0x95, 0x71, 0x51, 0x47, - 0x58, 0x7e, 0xa9, 0xc3, 0xbb, 0x97, 0x67, 0x45, 0x3f, 0x53, 0x79, 0x9a, 0xa7, 0xa4, 0x96, 0x88, - 0x7a, 0x6f, 0x69, 0x67, 0x6e, 0x7c, 0x8e, 0x9b, 0x9b, 0x90, 0x7d, 0x6b, 0x63, 0x68, 0x77, 0x88, - 0x93, 0x96, 0x8d, 0x7e, 0x72, 0x6c, 0x6e, 0x74, 0x7e, 0x87, 0x8d, 0x90, 0x8d, 0x83, 0x7a, 0x74, - 0x73, 0x79, 0x81, 0x86, 0x86, 0x83, 0x7d, 0x79, 0x7a, 0x7e, 0x83, 0x85, 0x84, 0x82, 0x82, 0x7e, - 0x7a, 0x76, 0x75, 0x7a, 0x80, 0x85, 0x89, 0x8a, 0x85, 0x7c, 0x74, 0x71, 0x75, 0x7e, 0x89, 0x8d, - 0x8d, 0x86, 0x7a, 0x74, 0x73, 0x76, 0x7c, 0x82, 0x8b, 0x92, 0x92, 0x8a, 0x7a, 0x6f, 0x6d, 0x72, - 0x75, 0x79, 0x82, 0x89, 0x89, 0x84, 0x7e, 0x7d, 0x7d, 0x7d, 0x80, 0x84, 0x85, 0x7d, 0x70, 0x57, - 0x42, 0x4b, 0x7e, 0xc4, 0xef, 0xde, 0x9b, 0x4c, 0x1f, 0x2c, 0x5b, 0x93, 0xb7, 0xc2, 0xbd, 0x9d, - 0x6b, 0x46, 0x40, 0x54, 0x6c, 0x7d, 0x8f, 0xa3, 0xae, 0xa6, 0x89, 0x62, 0x4a, 0x4a, 0x63, 0x8b, - 0xab, 0xb8, 0xae, 0x92, 0x6f, 0x56, 0x50, 0x5b, 0x74, 0x91, 0xa1, 0x9e, 0x90, 0x80, 0x6e, 0x5e, - 0x58, 0x61, 0x73, 0x8c, 0xa5, 0xac, 0x9a, 0x7c, 0x68, 0x60, 0x5e, 0x6a, 0x86, 0xa3, 0xab, 0x9f, - 0x8e, 0x7c, 0x6e, 0x67, 0x6c, 0x74, 0x7a, 0x84, 0x8b, 0x86, 0x7a, 0x73, 0x76, 0x7a, 0x80, 0x87, - 0x8d, 0x8e, 0x87, 0x7c, 0x76, 0x75, 0x7a, 0x84, 0x8d, 0x90, 0x8d, 0x81, 0x72, 0x6b, 0x6a, 0x72, - 0x80, 0x89, 0x8d, 0x8b, 0x85, 0x79, 0x6e, 0x6a, 0x70, 0x7d, 0x89, 0x93, 0x96, 0x93, 0x87, 0x79, - 0x71, 0x6e, 0x72, 0x7c, 0x86, 0x8a, 0x8a, 0x85, 0x7e, 0x7b, 0x77, 0x77, 0x7a, 0x7a, 0x7a, 0x7b, - 0x7c, 0x7b, 0x7d, 0x7d, 0x81, 0x84, 0x86, 0x85, 0x82, 0x7c, 0x7a, 0x78, 0x7a, 0x80, 0x87, 0x8b, - 0x89, 0x7e, 0x6e, 0x61, 0x5f, 0x6f, 0x8d, 0xa9, 0xb3, 0xa1, 0x78, 0x4f, 0x40, 0x55, 0x81, 0xa9, - 0xb8, 0xa9, 0x89, 0x6a, 0x5e, 0x63, 0x6d, 0x79, 0x84, 0x8c, 0x91, 0x93, 0x90, 0x87, 0x78, 0x6b, - 0x65, 0x66, 0x73, 0x8c, 0x9e, 0xa1, 0x91, 0x78, 0x67, 0x65, 0x6d, 0x7a, 0x89, 0x8f, 0x8f, 0x8a, - 0x83, 0x7a, 0x72, 0x6b, 0x6c, 0x73, 0x7e, 0x8a, 0x92, 0x94, 0x8b, 0x7d, 0x71, 0x6b, 0x6d, 0x77, - 0x85, 0x8d, 0x8d, 0x86, 0x83, 0x7e, 0x78, 0x75, 0x75, 0x7b, 0x82, 0x89, 0x8e, 0x8e, 0x86, 0x79, - 0x6e, 0x6a, 0x6e, 0x79, 0x87, 0x8f, 0x8f, 0x87, 0x7a, 0x74, 0x72, 0x76, 0x80, 0x87, 0x8a, 0x89, - 0x85, 0x7c, 0x75, 0x6f, 0x6e, 0x73, 0x7c, 0x86, 0x8b, 0x89, 0x7e, 0x72, 0x69, 0x6b, 0x77, 0x85, - 0x90, 0x96, 0x93, 0x89, 0x7d, 0x76, 0x71, 0x70, 0x76, 0x83, 0x8d, 0x91, 0x8d, 0x87, 0x7e, 0x75, - 0x6f, 0x70, 0x76, 0x7c, 0x83, 0x86, 0x86, 0x85, 0x82, 0x7e, 0x7a, 0x75, 0x70, 0x6f, 0x77, 0x85, - 0x97, 0xa4, 0xa7, 0x97, 0x79, 0x5e, 0x52, 0x5e, 0x7a, 0x98, 0xa7, 0x9e, 0x81, 0x64, 0x59, 0x65, - 0x81, 0x9b, 0xa0, 0x94, 0x7e, 0x6e, 0x6a, 0x6b, 0x70, 0x74, 0x77, 0x83, 0x94, 0xa6, 0xae, 0xa2, - 0x86, 0x66, 0x54, 0x53, 0x62, 0x7c, 0x97, 0xa4, 0xa0, 0x90, 0x7b, 0x6c, 0x67, 0x6a, 0x71, 0x77, - 0x7c, 0x85, 0x8c, 0x8d, 0x86, 0x7c, 0x72, 0x70, 0x77, 0x85, 0x92, 0x94, 0x8b, 0x7d, 0x6f, 0x6c, - 0x70, 0x7a, 0x87, 0x8b, 0x8a, 0x84, 0x7a, 0x73, 0x71, 0x74, 0x7a, 0x84, 0x8e, 0x94, 0x91, 0x88, - 0x78, 0x69, 0x65, 0x6b, 0x77, 0x85, 0x8e, 0x91, 0x8e, 0x89, 0x83, 0x7d, 0x77, 0x71, 0x70, 0x74, - 0x7e, 0x89, 0x8d, 0x8a, 0x85, 0x81, 0x7b, 0x77, 0x7a, 0x80, 0x82, 0x7e, 0x7a, 0x79, 0x7b, 0x7d, - 0x82, 0x88, 0x8c, 0x8d, 0x89, 0x80, 0x6f, 0x58, 0x43, 0x43, 0x6a, 0xad, 0xe6, 0xeb, 0xb4, 0x60, - 0x24, 0x23, 0x50, 0x87, 0xad, 0xba, 0xb5, 0xa5, 0x8d, 0x6f, 0x55, 0x47, 0x4b, 0x5e, 0x7b, 0x9b, - 0xae, 0xb1, 0xa2, 0x81, 0x5b, 0x44, 0x47, 0x69, 0x96, 0xb3, 0xb7, 0x9f, 0x82, 0x6e, 0x66, 0x66, - 0x6e, 0x7c, 0x8d, 0x97, 0x99, 0x92, 0x81, 0x69, 0x59, 0x57, 0x64, 0x7b, 0x95, 0xa4, 0xa4, 0x96, - 0x7e, 0x67, 0x5b, 0x5b, 0x6b, 0x83, 0x94, 0x9c, 0x9e, 0x9c, 0x8f, 0x7b, 0x6b, 0x64, 0x6b, 0x77, - 0x89, 0x95, 0x95, 0x8a, 0x78, 0x6b, 0x68, 0x70, 0x7b, 0x86, 0x8d, 0x90, 0x8e, 0x8a, 0x84, 0x79, - 0x70, 0x6d, 0x70, 0x7a, 0x87, 0x91, 0x94, 0x8e, 0x85, 0x79, 0x72, 0x70, 0x6f, 0x73, 0x79, 0x7e, - 0x82, 0x87, 0x8d, 0x90, 0x8b, 0x81, 0x76, 0x71, 0x72, 0x7d, 0x8c, 0x93, 0x92, 0x89, 0x7e, 0x77, - 0x77, 0x7c, 0x83, 0x85, 0x84, 0x81, 0x7d, 0x7d, 0x7b, 0x7c, 0x7d, 0x80, 0x83, 0x82, 0x82, 0x82, - 0x81, 0x7d, 0x78, 0x74, 0x76, 0x7c, 0x87, 0x8f, 0x94, 0x92, 0x8a, 0x7b, 0x69, 0x5b, 0x53, 0x5c, - 0x76, 0x9e, 0xc3, 0xce, 0xb1, 0x74, 0x37, 0x1b, 0x36, 0x7a, 0xbb, 0xdd, 0xc7, 0x8d, 0x5b, 0x48, - 0x58, 0x72, 0x81, 0x7b, 0x75, 0x81, 0x9a, 0xaf, 0xab, 0x8a, 0x5f, 0x43, 0x44, 0x63, 0x8f, 0xab, - 0xb1, 0xa2, 0x8a, 0x70, 0x60, 0x5f, 0x68, 0x77, 0x85, 0x8d, 0x90, 0x90, 0x8c, 0x84, 0x77, 0x6a, - 0x64, 0x69, 0x79, 0x8d, 0x9a, 0x99, 0x8d, 0x7a, 0x6d, 0x69, 0x70, 0x7e, 0x8a, 0x8f, 0x8e, 0x8b, - 0x88, 0x81, 0x78, 0x71, 0x71, 0x78, 0x84, 0x8f, 0x94, 0x91, 0x83, 0x70, 0x66, 0x69, 0x77, 0x88, - 0x93, 0x96, 0x90, 0x84, 0x76, 0x6d, 0x6b, 0x70, 0x78, 0x84, 0x8f, 0x97, 0x99, 0x93, 0x83, 0x71, - 0x62, 0x5b, 0x62, 0x71, 0x86, 0x94, 0x97, 0x93, 0x87, 0x78, 0x6f, 0x6c, 0x6f, 0x74, 0x7e, 0x87, - 0x8b, 0x8c, 0x88, 0x84, 0x7e, 0x7e, 0x83, 0x84, 0x82, 0x78, 0x6e, 0x67, 0x6a, 0x7c, 0x96, 0xad, - 0xb1, 0x9b, 0x74, 0x4d, 0x41, 0x59, 0x82, 0xa9, 0xb5, 0xa1, 0x80, 0x65, 0x62, 0x72, 0x87, 0x8c, - 0x7c, 0x6d, 0x6c, 0x82, 0x9e, 0xad, 0xa1, 0x7b, 0x57, 0x49, 0x5b, 0x81, 0xa0, 0xa7, 0x9a, 0x82, - 0x72, 0x73, 0x79, 0x81, 0x81, 0x79, 0x74, 0x76, 0x81, 0x8d, 0x91, 0x8b, 0x7c, 0x71, 0x6f, 0x79, - 0x88, 0x90, 0x8e, 0x84, 0x77, 0x6f, 0x70, 0x7b, 0x87, 0x8e, 0x8b, 0x86, 0x83, 0x82, 0x81, 0x7c, - 0x77, 0x73, 0x74, 0x7d, 0x89, 0x91, 0x93, 0x8a, 0x7a, 0x6e, 0x6b, 0x6f, 0x79, 0x83, 0x87, 0x85, - 0x83, 0x82, 0x83, 0x83, 0x80, 0x7a, 0x75, 0x75, 0x7b, 0x84, 0x8a, 0x8c, 0x87, 0x80, 0x7a, 0x7a, - 0x7e, 0x82, 0x83, 0x7d, 0x77, 0x76, 0x7a, 0x84, 0x8c, 0x8e, 0x8a, 0x81, 0x7a, 0x77, 0x78, 0x7a, - 0x7b, 0x7c, 0x7b, 0x80, 0x85, 0x87, 0x88, 0x85, 0x80, 0x7b, 0x77, 0x74, 0x73, 0x74, 0x79, 0x7e, - 0x86, 0x8f, 0x94, 0x90, 0x83, 0x73, 0x66, 0x66, 0x71, 0x80, 0x8d, 0x8e, 0x88, 0x80, 0x7b, 0x7c, - 0x7e, 0x7e, 0x7b, 0x77, 0x75, 0x79, 0x82, 0x8a, 0x8e, 0x8c, 0x86, 0x7b, 0x74, 0x73, 0x77, 0x80, - 0x85, 0x86, 0x85, 0x83, 0x82, 0x82, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x80, 0x7c, - 0x79, 0x78, 0x79, 0x7c, 0x82, 0x86, 0x87, 0x83, 0x7d, 0x79, 0x77, 0x77, 0x79, 0x7c, 0x7e, 0x7e, - 0x80, 0x82, 0x83, 0x83, 0x82, 0x80, 0x7a, 0x78, 0x78, 0x79, 0x7d, 0x83, 0x84, 0x84, 0x83, 0x81, - 0x80, 0x7e, 0x7c, 0x7a, 0x7a, 0x7a, 0x81, 0x87, 0x8c, 0x8b, 0x85, 0x7e, 0x78, 0x75, 0x76, 0x7a, - 0x7d, 0x81, 0x84, 0x86, 0x87, 0x86, 0x82, 0x7e, 0x79, 0x78, 0x78, 0x7a, 0x7b, 0x7c, 0x7e, 0x82, - 0x85, 0x86, 0x87, 0x84, 0x7d, 0x77, 0x74, 0x76, 0x79, 0x7e, 0x84, 0x89, 0x8b, 0x89, 0x82, 0x7c, - 0x7a, 0x79, 0x78, 0x79, 0x7d, 0x85, 0x8b, 0x8d, 0x8c, 0x86, 0x80, 0x7b, 0x75, 0x74, 0x75, 0x79, - 0x80, 0x85, 0x8c, 0x8e, 0x89, 0x82, 0x77, 0x75, 0x77, 0x7d, 0x83, 0x82, 0x7d, 0x78, 0x76, 0x79, - 0x81, 0x8a, 0x90, 0x8c, 0x80, 0x74, 0x71, 0x74, 0x7d, 0x84, 0x83, 0x80, 0x79, 0x7a, 0x80, 0x85, - 0x89, 0x87, 0x80, 0x73, 0x70, 0x76, 0x80, 0x89, 0x8b, 0x85, 0x80, 0x7d, 0x7e, 0x82, 0x82, 0x7d, - 0x78, 0x75, 0x78, 0x80, 0x86, 0x8c, 0x8e, 0x88, 0x7d, 0x74, 0x6f, 0x72, 0x78, 0x80, 0x85, 0x88, - 0x87, 0x83, 0x80, 0x80, 0x7d, 0x7a, 0x77, 0x79, 0x7d, 0x81, 0x84, 0x84, 0x82, 0x7e, 0x7a, 0x77, - 0x78, 0x7c, 0x81, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x7d, 0x7b, - 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x81, 0x82, 0x83, 0x81, 0x7d, 0x79, 0x77, 0x78, 0x7b, 0x7d, 0x80, - 0x81, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7c, 0x77, 0x75, 0x77, 0x7a, 0x7c, 0x7e, 0x80, 0x84, 0x88, - 0x88, 0x85, 0x7c, 0x77, 0x76, 0x79, 0x81, 0x89, 0x8a, 0x85, 0x7d, 0x77, 0x78, 0x80, 0x86, 0x8a, - 0x87, 0x7d, 0x79, 0x7a, 0x82, 0x8a, 0x8a, 0x85, 0x7a, 0x72, 0x71, 0x76, 0x80, 0x86, 0x86, 0x82, - 0x7a, 0x79, 0x80, 0x85, 0x88, 0x85, 0x7c, 0x76, 0x74, 0x77, 0x7e, 0x86, 0x89, 0x87, 0x80, 0x78, - 0x77, 0x7b, 0x81, 0x82, 0x7d, 0x7b, 0x7c, 0x80, 0x83, 0x85, 0x82, 0x7b, 0x76, 0x75, 0x78, 0x80, - 0x85, 0x87, 0x84, 0x80, 0x7c, 0x79, 0x7b, 0x7d, 0x82, 0x83, 0x80, 0x7c, 0x7b, 0x7e, 0x81, 0x80, - 0x7e, 0x7d, 0x7d, 0x80, 0x83, 0x86, 0x86, 0x83, 0x7d, 0x7b, 0x78, 0x78, 0x7a, 0x7c, 0x83, 0x87, - 0x8a, 0x8b, 0x87, 0x82, 0x7d, 0x7a, 0x79, 0x77, 0x77, 0x7b, 0x82, 0x87, 0x87, 0x84, 0x82, 0x7e, - 0x7a, 0x78, 0x77, 0x77, 0x79, 0x7b, 0x80, 0x86, 0x8b, 0x8c, 0x88, 0x83, 0x7d, 0x79, 0x76, 0x72, - 0x71, 0x75, 0x7b, 0x85, 0x8d, 0x90, 0x8c, 0x84, 0x7b, 0x77, 0x78, 0x7b, 0x7e, 0x80, 0x80, 0x7d, - 0x7d, 0x81, 0x85, 0x88, 0x88, 0x86, 0x82, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7c, 0x7b, 0x7d, 0x82, - 0x88, 0x8b, 0x89, 0x83, 0x7b, 0x76, 0x74, 0x75, 0x79, 0x80, 0x83, 0x84, 0x84, 0x85, 0x87, 0x85, - 0x82, 0x7c, 0x78, 0x76, 0x77, 0x7a, 0x80, 0x85, 0x85, 0x82, 0x7e, 0x7c, 0x7c, 0x7e, 0x7d, 0x7b, - 0x79, 0x78, 0x7a, 0x7e, 0x84, 0x88, 0x88, 0x85, 0x81, 0x7b, 0x78, 0x7a, 0x7c, 0x7e, 0x7e, 0x7e, - 0x7d, 0x7c, 0x7c, 0x7e, 0x83, 0x86, 0x88, 0x8a, 0x87, 0x82, 0x7b, 0x77, 0x77, 0x77, 0x78, 0x7c, - 0x84, 0x8a, 0x8e, 0x8e, 0x89, 0x81, 0x77, 0x72, 0x71, 0x74, 0x7b, 0x83, 0x89, 0x8a, 0x88, 0x83, - 0x7d, 0x7b, 0x7a, 0x78, 0x76, 0x77, 0x7c, 0x82, 0x86, 0x87, 0x86, 0x83, 0x7d, 0x79, 0x78, 0x7a, - 0x7e, 0x82, 0x84, 0x84, 0x86, 0x86, 0x84, 0x82, 0x7d, 0x7a, 0x77, 0x78, 0x7d, 0x84, 0x89, 0x89, - 0x84, 0x7e, 0x7a, 0x79, 0x7c, 0x82, 0x85, 0x83, 0x7b, 0x77, 0x77, 0x7d, 0x83, 0x85, 0x86, 0x82, - 0x80, 0x80, 0x81, 0x84, 0x83, 0x7e, 0x79, 0x74, 0x74, 0x7a, 0x84, 0x8a, 0x8b, 0x87, 0x7e, 0x79, - 0x77, 0x7a, 0x7e, 0x81, 0x81, 0x7e, 0x7c, 0x7c, 0x82, 0x87, 0x87, 0x85, 0x80, 0x7a, 0x78, 0x79, - 0x7d, 0x81, 0x81, 0x7d, 0x7b, 0x7b, 0x7e, 0x82, 0x84, 0x83, 0x82, 0x7e, 0x7b, 0x7b, 0x7d, 0x82, - 0x84, 0x83, 0x7e, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x81, 0x80, 0x81, 0x80, 0x81, 0x82, 0x83, - 0x81, 0x81, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7c, 0x7a, 0x79, 0x7d, 0x82, 0x84, 0x84, 0x82, 0x81, - 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x80, 0x82, 0x83, 0x82, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7c, 0x7b, 0x7a, 0x7b, 0x7e, 0x84, 0x88, 0x88, 0x84, 0x7c, 0x74, 0x6f, 0x70, 0x77, - 0x80, 0x87, 0x88, 0x87, 0x83, 0x80, 0x7d, 0x7c, 0x7b, 0x79, 0x77, 0x78, 0x7d, 0x86, 0x8b, 0x8d, - 0x8b, 0x83, 0x79, 0x72, 0x74, 0x78, 0x7d, 0x82, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x80, 0x7a, - 0x76, 0x74, 0x76, 0x7d, 0x85, 0x8b, 0x8b, 0x88, 0x82, 0x7b, 0x78, 0x78, 0x79, 0x7c, 0x7e, 0x80, - 0x81, 0x83, 0x83, 0x81, 0x7e, 0x7c, 0x79, 0x77, 0x79, 0x7d, 0x83, 0x86, 0x84, 0x80, 0x7d, 0x7b, - 0x7b, 0x7e, 0x82, 0x82, 0x81, 0x7e, 0x7b, 0x7b, 0x7c, 0x7e, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x7b, 0x7a, 0x7a, 0x7c, 0x81, 0x84, - 0x85, 0x85, 0x84, 0x80, 0x7c, 0x79, 0x77, 0x77, 0x7a, 0x7c, 0x80, 0x83, 0x83, 0x82, 0x7d, 0x7b, - 0x7a, 0x79, 0x7a, 0x7c, 0x7e, 0x80, 0x7e, 0x7c, 0x7b, 0x7d, 0x80, 0x82, 0x80, 0x7c, 0x7c, 0x7c, - 0x7e, 0x81, 0x84, 0x84, 0x82, 0x80, 0x7d, 0x7c, 0x7a, 0x77, 0x77, 0x7b, 0x83, 0x86, 0x85, 0x82, - 0x7d, 0x7b, 0x7c, 0x7d, 0x7d, 0x7c, 0x79, 0x78, 0x7b, 0x80, 0x85, 0x87, 0x87, 0x84, 0x80, 0x7b, - 0x78, 0x7a, 0x7e, 0x83, 0x85, 0x82, 0x80, 0x7e, 0x7e, 0x81, 0x84, 0x84, 0x81, 0x7e, 0x7b, 0x7b, - 0x80, 0x84, 0x84, 0x83, 0x80, 0x7d, 0x7d, 0x7e, 0x82, 0x84, 0x84, 0x83, 0x7e, 0x7a, 0x79, 0x7a, - 0x7d, 0x80, 0x82, 0x84, 0x84, 0x84, 0x82, 0x7e, 0x7a, 0x75, 0x72, 0x73, 0x78, 0x80, 0x86, 0x89, - 0x86, 0x81, 0x7c, 0x7b, 0x7a, 0x7a, 0x7c, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7d, 0x7c, - 0x7c, 0x7e, 0x81, 0x83, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7b, 0x7d, 0x80, 0x82, 0x83, 0x83, 0x83, - 0x82, 0x81, 0x80, 0x7c, 0x7a, 0x7a, 0x7b, 0x7e, 0x81, 0x83, 0x83, 0x82, 0x82, 0x82, 0x81, 0x7c, - 0x76, 0x71, 0x72, 0x78, 0x81, 0x87, 0x88, 0x86, 0x80, 0x78, 0x74, 0x76, 0x7c, 0x81, 0x83, 0x83, - 0x81, 0x7e, 0x7d, 0x7c, 0x7d, 0x7b, 0x7a, 0x7c, 0x80, 0x86, 0x8c, 0x90, 0x8e, 0x85, 0x7a, 0x72, - 0x6f, 0x71, 0x77, 0x80, 0x89, 0x8d, 0x8e, 0x8e, 0x8b, 0x85, 0x78, 0x68, 0x67, 0x75, 0x95, 0xae, - 0xaa, 0x8c, 0x5f, 0x3f, 0x41, 0x66, 0x95, 0xb2, 0xb9, 0xad, 0x99, 0x87, 0x78, 0x6c, 0x5e, 0x53, - 0x51, 0x60, 0x79, 0x92, 0xa0, 0x9e, 0x92, 0x86, 0x7b, 0x79, 0x7a, 0x79, 0x75, 0x6c, 0x65, 0x67, - 0x73, 0x88, 0x9d, 0xa8, 0xa6, 0x97, 0x7b, 0x63, 0x53, 0x54, 0x63, 0x7b, 0x93, 0xa3, 0xa7, 0x9d, - 0x8a, 0x75, 0x64, 0x5e, 0x63, 0x73, 0x88, 0x98, 0x9f, 0x9a, 0x8f, 0x80, 0x70, 0x64, 0x60, 0x66, - 0x72, 0x87, 0x97, 0x9d, 0x9a, 0x8a, 0x78, 0x6c, 0x69, 0x71, 0x7d, 0x86, 0x88, 0x84, 0x7e, 0x7b, - 0x7c, 0x7d, 0x7c, 0x7b, 0x7a, 0x7b, 0x7d, 0x80, 0x82, 0x84, 0x84, 0x82, 0x7e, 0x7b, 0x79, 0x7a, - 0x7a, 0x79, 0x79, 0x7a, 0x7c, 0x80, 0x87, 0x90, 0x93, 0x8d, 0x81, 0x71, 0x6c, 0x6f, 0x79, 0x88, - 0x91, 0x92, 0x8c, 0x83, 0x7d, 0x7c, 0x7d, 0x7b, 0x77, 0x75, 0x76, 0x7b, 0x84, 0x89, 0x89, 0x84, - 0x7b, 0x75, 0x74, 0x77, 0x80, 0x87, 0x8a, 0x89, 0x82, 0x7a, 0x76, 0x74, 0x76, 0x7b, 0x80, 0x82, - 0x80, 0x7e, 0x83, 0x89, 0x89, 0x85, 0x7c, 0x71, 0x6b, 0x6f, 0x7a, 0x87, 0x8c, 0x8a, 0x84, 0x7e, - 0x7a, 0x78, 0x78, 0x78, 0x7b, 0x81, 0x85, 0x86, 0x86, 0x83, 0x80, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, - 0x7c, 0x7c, 0x7c, 0x7d, 0x80, 0x85, 0x87, 0x86, 0x7e, 0x72, 0x6d, 0x73, 0x7e, 0x8a, 0x8b, 0x88, - 0x84, 0x84, 0x8a, 0x8a, 0x7e, 0x6f, 0x61, 0x60, 0x6f, 0x86, 0x96, 0x95, 0x87, 0x79, 0x73, 0x7b, - 0x8a, 0x91, 0x8b, 0x7d, 0x72, 0x72, 0x78, 0x7b, 0x71, 0x5a, 0x47, 0x4a, 0x6e, 0xa4, 0xd5, 0xe1, - 0xbd, 0x7e, 0x42, 0x25, 0x2e, 0x53, 0x7d, 0x9d, 0xab, 0xaf, 0xb0, 0xaa, 0x9a, 0x82, 0x62, 0x47, - 0x42, 0x55, 0x7c, 0xa6, 0xc0, 0xc6, 0xb4, 0x8c, 0x5e, 0x3d, 0x32, 0x3e, 0x5d, 0x87, 0xad, 0xc1, - 0xbc, 0xa5, 0x86, 0x67, 0x51, 0x48, 0x4e, 0x62, 0x80, 0x9a, 0xb0, 0xb7, 0xaa, 0x8f, 0x6d, 0x53, - 0x4a, 0x50, 0x63, 0x81, 0x99, 0xa8, 0xab, 0xa1, 0x8d, 0x74, 0x5f, 0x54, 0x56, 0x63, 0x77, 0x8b, - 0x9a, 0xa1, 0x9e, 0x96, 0x8b, 0x7e, 0x74, 0x68, 0x5f, 0x60, 0x69, 0x7d, 0x94, 0xa3, 0xa7, 0x97, - 0x7c, 0x63, 0x55, 0x59, 0x6c, 0x8c, 0xa8, 0xb3, 0xac, 0x96, 0x76, 0x5e, 0x58, 0x61, 0x72, 0x81, - 0x89, 0x8b, 0x8b, 0x88, 0x83, 0x7a, 0x72, 0x70, 0x76, 0x7d, 0x81, 0x81, 0x80, 0x81, 0x87, 0x8d, - 0x8c, 0x83, 0x75, 0x6c, 0x6b, 0x74, 0x84, 0x92, 0x97, 0x8f, 0x83, 0x79, 0x74, 0x75, 0x79, 0x80, - 0x84, 0x85, 0x88, 0x89, 0x88, 0x85, 0x81, 0x7a, 0x74, 0x6c, 0x65, 0x63, 0x6e, 0x89, 0xa5, 0xb7, - 0xb1, 0x90, 0x66, 0x47, 0x41, 0x5a, 0x81, 0xa1, 0xab, 0xa0, 0x91, 0x84, 0x7c, 0x7a, 0x74, 0x6b, - 0x65, 0x66, 0x72, 0x86, 0x96, 0x9d, 0x9b, 0x92, 0x85, 0x72, 0x64, 0x5d, 0x60, 0x6f, 0x86, 0x99, - 0x9f, 0x97, 0x87, 0x76, 0x6e, 0x6e, 0x73, 0x78, 0x7d, 0x7e, 0x82, 0x86, 0x8a, 0x8b, 0x88, 0x81, - 0x7a, 0x78, 0x79, 0x7c, 0x80, 0x84, 0x87, 0x88, 0x86, 0x82, 0x7b, 0x76, 0x76, 0x79, 0x81, 0x88, - 0x8a, 0x86, 0x80, 0x79, 0x76, 0x76, 0x77, 0x7b, 0x81, 0x84, 0x88, 0x89, 0x87, 0x82, 0x7c, 0x77, - 0x77, 0x7a, 0x7e, 0x82, 0x86, 0x86, 0x86, 0x86, 0x85, 0x80, 0x78, 0x73, 0x74, 0x7b, 0x85, 0x89, - 0x8a, 0x87, 0x82, 0x81, 0x83, 0x88, 0x89, 0x81, 0x6d, 0x54, 0x3f, 0x42, 0x65, 0x9d, 0xd1, 0xec, - 0xda, 0xa0, 0x55, 0x20, 0x13, 0x32, 0x6a, 0xa0, 0xc8, 0xd6, 0xc6, 0xa8, 0x82, 0x60, 0x4b, 0x46, - 0x55, 0x6a, 0x81, 0x93, 0xa1, 0xa9, 0xa9, 0x9f, 0x8b, 0x6c, 0x4e, 0x3b, 0x3f, 0x5e, 0x87, 0xaa, - 0xbd, 0xb9, 0xa2, 0x80, 0x5e, 0x4b, 0x49, 0x57, 0x72, 0x92, 0xa8, 0xaf, 0xa7, 0x94, 0x7e, 0x6c, - 0x62, 0x62, 0x68, 0x73, 0x80, 0x8e, 0x9c, 0xa3, 0x9e, 0x8f, 0x79, 0x65, 0x5b, 0x5b, 0x65, 0x77, - 0x88, 0x95, 0x9c, 0x9a, 0x90, 0x80, 0x71, 0x6b, 0x6d, 0x76, 0x80, 0x85, 0x82, 0x7b, 0x78, 0x7a, - 0x83, 0x89, 0x89, 0x85, 0x82, 0x81, 0x83, 0x87, 0x89, 0x87, 0x82, 0x7c, 0x78, 0x76, 0x74, 0x73, - 0x72, 0x76, 0x7d, 0x86, 0x8a, 0x89, 0x82, 0x7a, 0x76, 0x74, 0x75, 0x79, 0x81, 0x89, 0x8b, 0x8a, - 0x85, 0x7c, 0x76, 0x74, 0x79, 0x82, 0x89, 0x8b, 0x89, 0x85, 0x81, 0x7e, 0x7c, 0x7d, 0x7d, 0x7d, - 0x80, 0x81, 0x82, 0x81, 0x7d, 0x7b, 0x7d, 0x81, 0x84, 0x87, 0x87, 0x82, 0x74, 0x68, 0x5f, 0x5f, - 0x6e, 0x8a, 0xa6, 0xb9, 0xb1, 0x92, 0x67, 0x46, 0x40, 0x57, 0x7b, 0x9d, 0xb0, 0xb2, 0xa3, 0x8c, - 0x74, 0x60, 0x57, 0x5b, 0x6d, 0x88, 0x9e, 0xa4, 0x98, 0x86, 0x77, 0x6f, 0x70, 0x76, 0x78, 0x77, - 0x77, 0x7a, 0x83, 0x8a, 0x8d, 0x8c, 0x86, 0x7e, 0x78, 0x71, 0x6c, 0x6d, 0x73, 0x7e, 0x8e, 0x99, - 0x98, 0x8e, 0x80, 0x73, 0x6c, 0x6e, 0x76, 0x80, 0x88, 0x8d, 0x8f, 0x8b, 0x84, 0x78, 0x70, 0x6f, - 0x76, 0x80, 0x89, 0x8d, 0x8b, 0x86, 0x81, 0x7c, 0x7a, 0x76, 0x75, 0x77, 0x7b, 0x82, 0x88, 0x8a, - 0x88, 0x84, 0x80, 0x7c, 0x78, 0x77, 0x78, 0x7c, 0x84, 0x8c, 0x91, 0x8e, 0x86, 0x7a, 0x71, 0x6d, - 0x72, 0x7a, 0x84, 0x8d, 0x93, 0x93, 0x8e, 0x83, 0x70, 0x58, 0x42, 0x3d, 0x51, 0x7b, 0xae, 0xd1, - 0xdd, 0xc6, 0x92, 0x5a, 0x2e, 0x1d, 0x2a, 0x56, 0x94, 0xcb, 0xeb, 0xe7, 0xc1, 0x83, 0x48, 0x24, - 0x23, 0x40, 0x6f, 0x9d, 0xbc, 0xc7, 0xbb, 0x9e, 0x7a, 0x5b, 0x47, 0x45, 0x55, 0x6d, 0x84, 0x96, - 0x9f, 0xa1, 0x9c, 0x92, 0x84, 0x71, 0x5f, 0x56, 0x5a, 0x66, 0x7b, 0x92, 0xa2, 0xad, 0xa9, 0x98, - 0x80, 0x66, 0x57, 0x53, 0x5e, 0x76, 0x93, 0xa7, 0xad, 0xa5, 0x91, 0x77, 0x61, 0x55, 0x56, 0x64, - 0x7a, 0x90, 0x9f, 0xa0, 0x95, 0x86, 0x78, 0x70, 0x6f, 0x71, 0x75, 0x79, 0x7c, 0x80, 0x82, 0x83, - 0x86, 0x8a, 0x8d, 0x8d, 0x88, 0x7d, 0x74, 0x6e, 0x6f, 0x7a, 0x8d, 0x9a, 0x9e, 0x97, 0x87, 0x72, - 0x5f, 0x58, 0x5e, 0x70, 0x88, 0x9c, 0xa8, 0xa2, 0x8c, 0x6f, 0x5a, 0x55, 0x5f, 0x74, 0x8d, 0xa2, - 0xa8, 0x9d, 0x88, 0x70, 0x60, 0x5c, 0x65, 0x7a, 0x90, 0x9e, 0xa2, 0x99, 0x8a, 0x7a, 0x6e, 0x69, - 0x6f, 0x79, 0x84, 0x8c, 0x8d, 0x89, 0x83, 0x7d, 0x7c, 0x7c, 0x80, 0x81, 0x80, 0x79, 0x6f, 0x67, - 0x65, 0x6c, 0x7e, 0x94, 0xa5, 0xa9, 0x9b, 0x81, 0x64, 0x50, 0x4e, 0x61, 0x80, 0x9f, 0xb2, 0xb2, - 0xa5, 0x8d, 0x6e, 0x56, 0x4e, 0x56, 0x6e, 0x8e, 0xa7, 0xb0, 0xa7, 0x92, 0x78, 0x65, 0x5b, 0x5d, - 0x69, 0x78, 0x89, 0x95, 0x9a, 0x93, 0x86, 0x77, 0x70, 0x6f, 0x73, 0x78, 0x7b, 0x7d, 0x7e, 0x81, - 0x84, 0x86, 0x88, 0x89, 0x87, 0x84, 0x7d, 0x76, 0x72, 0x72, 0x77, 0x7e, 0x8a, 0x90, 0x90, 0x8b, - 0x80, 0x76, 0x71, 0x6e, 0x72, 0x7a, 0x85, 0x8e, 0x90, 0x8c, 0x83, 0x76, 0x6e, 0x6c, 0x71, 0x79, - 0x84, 0x8c, 0x90, 0x8e, 0x88, 0x7e, 0x76, 0x71, 0x72, 0x78, 0x81, 0x87, 0x88, 0x87, 0x83, 0x80, - 0x7e, 0x7c, 0x7c, 0x7c, 0x7d, 0x81, 0x86, 0x87, 0x7e, 0x6e, 0x5d, 0x54, 0x5a, 0x71, 0x92, 0xb0, - 0xc0, 0xba, 0xa0, 0x7c, 0x56, 0x3b, 0x37, 0x48, 0x72, 0xa5, 0xcd, 0xdd, 0xcd, 0xa2, 0x6d, 0x40, - 0x29, 0x2e, 0x4c, 0x7c, 0xab, 0xcc, 0xd3, 0xbc, 0x93, 0x63, 0x41, 0x35, 0x3e, 0x5c, 0x81, 0xa0, - 0xb3, 0xb5, 0xa7, 0x8d, 0x72, 0x5f, 0x56, 0x5c, 0x6a, 0x7b, 0x8b, 0x94, 0x98, 0x97, 0x91, 0x88, - 0x7e, 0x75, 0x6f, 0x6e, 0x73, 0x78, 0x80, 0x88, 0x90, 0x96, 0x96, 0x8e, 0x82, 0x73, 0x67, 0x62, - 0x65, 0x71, 0x80, 0x8d, 0x9a, 0x9e, 0x97, 0x8a, 0x76, 0x67, 0x5f, 0x60, 0x6b, 0x7a, 0x89, 0x93, - 0x98, 0x95, 0x8e, 0x83, 0x78, 0x71, 0x6d, 0x6d, 0x73, 0x7c, 0x87, 0x90, 0x97, 0x99, 0x93, 0x88, - 0x77, 0x69, 0x62, 0x61, 0x6a, 0x77, 0x86, 0x92, 0x97, 0x94, 0x8a, 0x7a, 0x6e, 0x69, 0x6b, 0x74, - 0x80, 0x89, 0x8e, 0x8d, 0x8a, 0x83, 0x7b, 0x78, 0x76, 0x79, 0x7e, 0x83, 0x87, 0x88, 0x85, 0x82, - 0x7e, 0x7e, 0x82, 0x83, 0x83, 0x83, 0x82, 0x7e, 0x7a, 0x76, 0x73, 0x73, 0x75, 0x7c, 0x85, 0x8e, - 0x94, 0x92, 0x87, 0x77, 0x69, 0x63, 0x66, 0x71, 0x82, 0x92, 0x9c, 0x9b, 0x92, 0x85, 0x73, 0x66, - 0x62, 0x68, 0x78, 0x8a, 0x96, 0x9c, 0x98, 0x8c, 0x7d, 0x6e, 0x66, 0x67, 0x6f, 0x7c, 0x8b, 0x94, - 0x95, 0x90, 0x85, 0x78, 0x70, 0x6d, 0x70, 0x76, 0x7d, 0x83, 0x86, 0x86, 0x85, 0x84, 0x83, 0x82, - 0x82, 0x81, 0x7e, 0x7c, 0x79, 0x78, 0x79, 0x79, 0x7c, 0x81, 0x85, 0x88, 0x88, 0x86, 0x82, 0x7c, - 0x78, 0x76, 0x77, 0x7a, 0x80, 0x83, 0x84, 0x84, 0x82, 0x80, 0x7d, 0x7c, 0x7b, 0x7d, 0x7e, 0x80, - 0x81, 0x7e, 0x7c, 0x7a, 0x7b, 0x7d, 0x81, 0x85, 0x86, 0x85, 0x82, 0x7c, 0x78, 0x77, 0x7a, 0x82, - 0x8a, 0x8e, 0x89, 0x79, 0x65, 0x54, 0x4e, 0x5c, 0x78, 0x9d, 0xbd, 0xcb, 0xc2, 0xa1, 0x74, 0x46, - 0x24, 0x23, 0x3f, 0x74, 0xb2, 0xde, 0xf0, 0xdc, 0xa9, 0x6c, 0x35, 0x13, 0x10, 0x35, 0x70, 0xac, - 0xdc, 0xee, 0xd7, 0xa6, 0x6b, 0x39, 0x1b, 0x1d, 0x3c, 0x6e, 0xa5, 0xca, 0xd6, 0xc8, 0xa3, 0x74, - 0x51, 0x3b, 0x3b, 0x51, 0x72, 0x94, 0xad, 0xb8, 0xad, 0x96, 0x7c, 0x65, 0x5c, 0x5e, 0x68, 0x78, - 0x88, 0x94, 0x9a, 0x97, 0x8d, 0x80, 0x74, 0x6e, 0x6d, 0x6d, 0x6f, 0x70, 0x72, 0x79, 0x84, 0x8c, - 0x93, 0x94, 0x90, 0x86, 0x77, 0x69, 0x5d, 0x5a, 0x5f, 0x70, 0x87, 0x9c, 0xa9, 0xaa, 0x9e, 0x8b, - 0x73, 0x5e, 0x55, 0x58, 0x68, 0x83, 0x9c, 0xad, 0xb0, 0xa1, 0x89, 0x6d, 0x57, 0x4c, 0x52, 0x65, - 0x81, 0x9b, 0xac, 0xae, 0x9f, 0x87, 0x6c, 0x58, 0x51, 0x59, 0x6b, 0x83, 0x9a, 0xa7, 0xa7, 0x9c, - 0x87, 0x70, 0x60, 0x59, 0x5b, 0x64, 0x74, 0x88, 0x9b, 0xaa, 0xaf, 0xa7, 0x94, 0x7b, 0x65, 0x56, - 0x4f, 0x55, 0x69, 0x86, 0xa3, 0xb8, 0xbc, 0xaf, 0x93, 0x73, 0x56, 0x44, 0x43, 0x52, 0x6e, 0x92, - 0xaf, 0xbd, 0xb8, 0xa2, 0x82, 0x61, 0x4b, 0x43, 0x4d, 0x65, 0x83, 0xa0, 0xb3, 0xb4, 0xa6, 0x8c, - 0x6f, 0x5a, 0x52, 0x57, 0x65, 0x7c, 0x95, 0xa6, 0xac, 0xa4, 0x91, 0x79, 0x66, 0x5c, 0x5f, 0x6b, - 0x7a, 0x8b, 0x98, 0x9c, 0x99, 0x8e, 0x7e, 0x72, 0x6a, 0x6a, 0x6f, 0x77, 0x7e, 0x86, 0x8b, 0x8c, - 0x8a, 0x85, 0x7e, 0x79, 0x76, 0x75, 0x76, 0x78, 0x7b, 0x82, 0x87, 0x8a, 0x8b, 0x88, 0x84, 0x7e, - 0x79, 0x74, 0x71, 0x72, 0x77, 0x81, 0x8a, 0x8f, 0x90, 0x8b, 0x82, 0x78, 0x72, 0x71, 0x74, 0x7b, - 0x84, 0x88, 0x85, 0x79, 0x69, 0x5c, 0x5a, 0x66, 0x80, 0x9d, 0xb4, 0xbf, 0xb5, 0x9b, 0x75, 0x4d, - 0x33, 0x2f, 0x47, 0x75, 0xa8, 0xd4, 0xe7, 0xdb, 0xb7, 0x7e, 0x44, 0x1e, 0x14, 0x29, 0x5d, 0x9b, - 0xd2, 0xed, 0xe5, 0xc0, 0x87, 0x4b, 0x20, 0x10, 0x22, 0x4f, 0x88, 0xbc, 0xdb, 0xdc, 0xc0, 0x90, - 0x5e, 0x39, 0x26, 0x33, 0x53, 0x7e, 0xac, 0xc7, 0xcc, 0xbb, 0x99, 0x74, 0x56, 0x47, 0x49, 0x5b, - 0x76, 0x93, 0xa8, 0xaf, 0xa8, 0x96, 0x81, 0x6c, 0x5f, 0x5b, 0x5f, 0x6b, 0x7b, 0x8c, 0x97, 0x9a, - 0x97, 0x8f, 0x85, 0x78, 0x6e, 0x66, 0x64, 0x67, 0x70, 0x7d, 0x8c, 0x96, 0x9b, 0x99, 0x91, 0x83, - 0x73, 0x66, 0x5e, 0x61, 0x6e, 0x83, 0x96, 0xa5, 0xa8, 0xa0, 0x8e, 0x76, 0x60, 0x51, 0x51, 0x5e, - 0x75, 0x93, 0xaa, 0xb1, 0xa8, 0x94, 0x74, 0x58, 0x48, 0x49, 0x5c, 0x7c, 0x9d, 0xb5, 0xba, 0xa8, - 0x86, 0x5d, 0x42, 0x38, 0x47, 0x6b, 0x9a, 0xc3, 0xd8, 0xcf, 0xad, 0x78, 0x47, 0x28, 0x22, 0x3d, - 0x6b, 0xa4, 0xd3, 0xe6, 0xda, 0xb5, 0x7b, 0x43, 0x1e, 0x17, 0x30, 0x61, 0x99, 0xc9, 0xe0, 0xd9, - 0xb8, 0x85, 0x4d, 0x29, 0x20, 0x34, 0x5e, 0x8f, 0xba, 0xd1, 0xd0, 0xb6, 0x8c, 0x61, 0x40, 0x35, - 0x41, 0x5f, 0x85, 0xa5, 0xba, 0xbb, 0xa9, 0x8c, 0x6f, 0x58, 0x4e, 0x53, 0x65, 0x7e, 0x97, 0xa2, - 0xa4, 0x9a, 0x88, 0x77, 0x68, 0x63, 0x68, 0x72, 0x81, 0x8c, 0x90, 0x8e, 0x86, 0x7b, 0x75, 0x73, - 0x75, 0x7b, 0x84, 0x89, 0x8a, 0x86, 0x7d, 0x74, 0x6f, 0x6f, 0x76, 0x82, 0x8e, 0x97, 0x9a, 0x94, - 0x89, 0x7a, 0x6e, 0x66, 0x66, 0x6f, 0x7e, 0x8d, 0x99, 0x9d, 0x99, 0x8e, 0x81, 0x70, 0x60, 0x53, - 0x4d, 0x53, 0x64, 0x7e, 0x9b, 0xb2, 0xbe, 0xba, 0xa7, 0x89, 0x63, 0x42, 0x2f, 0x34, 0x50, 0x78, - 0xa8, 0xcf, 0xe0, 0xdb, 0xbb, 0x8c, 0x56, 0x2c, 0x1a, 0x22, 0x46, 0x79, 0xac, 0xd2, 0xe4, 0xd7, - 0xb2, 0x80, 0x4c, 0x28, 0x1a, 0x27, 0x4b, 0x7b, 0xab, 0xcb, 0xd5, 0xc5, 0xa3, 0x78, 0x50, 0x36, - 0x30, 0x41, 0x60, 0x87, 0xa7, 0xbc, 0xbf, 0xb0, 0x95, 0x76, 0x5d, 0x51, 0x51, 0x5e, 0x72, 0x86, - 0x97, 0xa0, 0xa0, 0x98, 0x8a, 0x7b, 0x6f, 0x66, 0x65, 0x69, 0x71, 0x7b, 0x85, 0x8e, 0x93, 0x93, - 0x90, 0x89, 0x80, 0x76, 0x6f, 0x6b, 0x6b, 0x6f, 0x76, 0x81, 0x8a, 0x91, 0x95, 0x94, 0x8e, 0x85, - 0x7a, 0x71, 0x6d, 0x6e, 0x72, 0x79, 0x81, 0x86, 0x88, 0x87, 0x83, 0x7e, 0x7b, 0x78, 0x79, 0x7b, - 0x7e, 0x81, 0x82, 0x81, 0x80, 0x7d, 0x7b, 0x7b, 0x7c, 0x80, 0x83, 0x83, 0x81, 0x7a, 0x74, 0x70, - 0x72, 0x78, 0x82, 0x8c, 0x94, 0x99, 0x97, 0x8e, 0x7e, 0x6f, 0x62, 0x5e, 0x64, 0x72, 0x87, 0x98, - 0xa4, 0xa7, 0x9e, 0x8d, 0x77, 0x63, 0x56, 0x55, 0x5f, 0x72, 0x87, 0x9a, 0xa7, 0xa8, 0x9f, 0x8d, - 0x76, 0x62, 0x57, 0x58, 0x62, 0x72, 0x88, 0x97, 0xa0, 0xa0, 0x97, 0x88, 0x78, 0x6b, 0x64, 0x64, - 0x6b, 0x75, 0x83, 0x8c, 0x92, 0x95, 0x91, 0x8a, 0x82, 0x79, 0x74, 0x72, 0x73, 0x75, 0x7a, 0x7d, - 0x83, 0x86, 0x87, 0x88, 0x89, 0x89, 0x89, 0x88, 0x84, 0x7d, 0x77, 0x72, 0x70, 0x71, 0x77, 0x80, - 0x8a, 0x91, 0x96, 0x95, 0x8d, 0x82, 0x76, 0x6c, 0x66, 0x67, 0x70, 0x7c, 0x8a, 0x96, 0x9b, 0x99, - 0x90, 0x84, 0x75, 0x69, 0x64, 0x65, 0x6d, 0x7b, 0x8c, 0x98, 0x9b, 0x93, 0x80, 0x67, 0x52, 0x47, - 0x4b, 0x61, 0x82, 0xa5, 0xc2, 0xcb, 0xc1, 0xa4, 0x7b, 0x51, 0x35, 0x2e, 0x3b, 0x5b, 0x87, 0xb1, - 0xd1, 0xdc, 0xcf, 0xae, 0x84, 0x5a, 0x3b, 0x2f, 0x36, 0x50, 0x75, 0x9a, 0xb8, 0xc5, 0xbe, 0xa9, - 0x8b, 0x6b, 0x54, 0x48, 0x49, 0x57, 0x6b, 0x83, 0x95, 0x9d, 0x9c, 0x96, 0x8b, 0x80, 0x78, 0x74, - 0x72, 0x74, 0x76, 0x79, 0x7a, 0x7a, 0x7b, 0x7d, 0x82, 0x88, 0x8e, 0x92, 0x93, 0x91, 0x8b, 0x81, - 0x73, 0x67, 0x5f, 0x5f, 0x68, 0x79, 0x8d, 0x9e, 0xa9, 0xaa, 0x9f, 0x8a, 0x72, 0x5d, 0x52, 0x52, - 0x5e, 0x71, 0x84, 0x94, 0x9e, 0xa0, 0x9b, 0x8e, 0x7e, 0x71, 0x6b, 0x6d, 0x74, 0x7e, 0x89, 0x91, - 0x93, 0x8f, 0x84, 0x75, 0x68, 0x64, 0x68, 0x72, 0x80, 0x8d, 0x94, 0x94, 0x8e, 0x82, 0x73, 0x68, - 0x63, 0x68, 0x72, 0x80, 0x8d, 0x95, 0x98, 0x95, 0x8d, 0x80, 0x6f, 0x60, 0x58, 0x59, 0x62, 0x71, - 0x85, 0x96, 0xa2, 0xaa, 0xa9, 0xa0, 0x90, 0x7d, 0x6c, 0x5f, 0x5b, 0x5f, 0x6a, 0x78, 0x88, 0x95, - 0x9e, 0x9f, 0x9a, 0x91, 0x84, 0x79, 0x71, 0x6d, 0x6d, 0x71, 0x76, 0x7a, 0x7c, 0x7d, 0x7d, 0x7e, - 0x83, 0x87, 0x89, 0x8a, 0x88, 0x84, 0x7e, 0x79, 0x73, 0x6e, 0x6e, 0x71, 0x77, 0x7d, 0x84, 0x89, - 0x8d, 0x8d, 0x8b, 0x86, 0x81, 0x7c, 0x7a, 0x7a, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x82, - 0x84, 0x82, 0x80, 0x7b, 0x77, 0x75, 0x74, 0x77, 0x80, 0x8a, 0x93, 0x98, 0x95, 0x8d, 0x81, 0x73, - 0x68, 0x63, 0x64, 0x6b, 0x78, 0x87, 0x92, 0x97, 0x95, 0x90, 0x87, 0x7d, 0x76, 0x72, 0x74, 0x79, - 0x80, 0x85, 0x87, 0x86, 0x84, 0x81, 0x7b, 0x7a, 0x7b, 0x80, 0x84, 0x85, 0x7e, 0x72, 0x66, 0x5f, - 0x5e, 0x67, 0x76, 0x88, 0x99, 0xa5, 0xa9, 0xa3, 0x94, 0x81, 0x6f, 0x63, 0x5f, 0x62, 0x6b, 0x76, - 0x82, 0x8a, 0x8d, 0x8b, 0x88, 0x82, 0x7d, 0x7c, 0x7e, 0x82, 0x86, 0x89, 0x89, 0x84, 0x7d, 0x76, - 0x71, 0x6f, 0x70, 0x75, 0x7b, 0x83, 0x88, 0x8b, 0x8b, 0x88, 0x83, 0x7d, 0x79, 0x76, 0x75, 0x77, - 0x7a, 0x7d, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x80, 0x7e, 0x7c, 0x7a, 0x79, 0x7a, 0x7b, 0x7d, - 0x80, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7c, 0x79, 0x78, 0x78, 0x7b, 0x7e, 0x83, 0x86, 0x86, 0x85, - 0x82, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, 0x81, 0x83, 0x85, 0x85, 0x85, 0x83, 0x81, 0x7d, 0x7c, - 0x7c, 0x7c, 0x7d, 0x7e, 0x81, 0x83, 0x83, 0x83, 0x82, 0x81, 0x7f, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, - 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7a, 0x79, 0x79, - 0x7a, 0x7c, 0x80, 0x82, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7e, 0x80, 0x80, 0x80, - 0x7e, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x82, 0x83, 0x82, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x82, 0x82, 0x81, 0x7e, - 0x7d, 0x7c, 0x7d, 0x7e, 0x81, 0x83, 0x83, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x7b, 0x7c, 0x7e, - 0x81, 0x84, 0x85, 0x85, 0x84, 0x82, 0x7e, 0x7c, 0x7a, 0x7a, 0x7b, 0x7e, 0x82, 0x85, 0x86, 0x84, - 0x81, 0x7c, 0x79, 0x79, 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7e, 0x81, - 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7b, 0x7c, 0x7d, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7c, 0x7b, 0x7b, - 0x7b, 0x7c, 0x80, 0x83, 0x84, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, - 0x81, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x82, 0x82, 0x82, 0x81, 0x7e, - 0x7c, 0x7b, 0x7b, 0x7b, 0x7d, 0x7e, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x7c, 0x7e, - 0x80, 0x82, 0x84, 0x85, 0x84, 0x83, 0x82, 0x7e, 0x7c, 0x7b, 0x7c, 0x7e, 0x81, 0x83, 0x84, 0x84, - 0x83, 0x80, 0x7d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7e, 0x82, 0x84, 0x84, 0x84, 0x82, 0x7e, 0x7c, 0x7a, - 0x7a, 0x7a, 0x7b, 0x7e, 0x82, 0x84, 0x85, 0x85, 0x83, 0x82, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, - 0x7e, 0x80, 0x82, 0x84, 0x85, 0x84, 0x83, 0x81, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x80, 0x84, 0x86, - 0x85, 0x83, 0x7e, 0x7c, 0x7b, 0x7a, 0x7a, 0x7d, 0x81, 0x84, 0x86, 0x88, 0x87, 0x83, 0x7e, 0x79, - 0x77, 0x77, 0x7a, 0x7e, 0x82, 0x84, 0x85, 0x85, 0x83, 0x80, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x80, - 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, - 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x82, 0x83, 0x84, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x7a, - 0x7a, 0x7b, 0x7d, 0x81, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x7a, 0x7b, 0x80, 0x83, 0x84, 0x85, - 0x84, 0x81, 0x7d, 0x7b, 0x7a, 0x7b, 0x7e, 0x82, 0x85, 0x85, 0x83, 0x80, 0x7b, 0x78, 0x77, 0x78, - 0x7c, 0x80, 0x84, 0x86, 0x85, 0x84, 0x80, 0x7c, 0x7a, 0x7b, 0x7c, 0x7e, 0x82, 0x82, 0x83, 0x83, - 0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7d, 0x80, - 0x81, 0x83, 0x84, 0x83, 0x81, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x83, 0x83, 0x81, - 0x7d, 0x7b, 0x7b, 0x7b, 0x7c, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, - 0x80, 0x82, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x81, 0x82, 0x82, 0x82, 0x82, - 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x80, 0x7d, - 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x80, 0x82, 0x82, 0x83, 0x82, 0x7f, 0x7c, 0x7a, 0x78, 0x79, 0x7b, - 0x7d, 0x80, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7d, 0x7b, 0x79, 0x78, 0x79, 0x7b, 0x7e, 0x82, 0x84, - 0x84, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7c, 0x7e, 0x81, 0x83, 0x84, 0x84, 0x84, 0x82, 0x7e, 0x7d, - 0x7c, 0x7c, 0x7d, 0x80, 0x83, 0x84, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, - 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7c, - 0x7b, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, - 0x7d, 0x80, 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7b, 0x7a, 0x79, 0x79, 0x7b, 0x7d, 0x80, 0x81, 0x82, - 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, - 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x80, - 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x80, 0x7d, 0x7c, 0x7b, 0x7a, 0x7b, 0x7d, 0x7e, 0x80, - 0x82, 0x83, 0x85, 0x85, 0x83, 0x80, 0x7c, 0x7a, 0x7a, 0x7b, 0x7c, 0x7e, 0x81, 0x83, 0x84, 0x84, - 0x83, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, - 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x83, 0x83, 0x83, 0x82, 0x7e, 0x7c, 0x7a, 0x79, 0x7b, - 0x7d, 0x82, 0x84, 0x84, 0x82, 0x7e, 0x7b, 0x7a, 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x84, 0x84, 0x82, - 0x80, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x83, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, - 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7e, 0x80, 0x82, 0x83, 0x83, 0x82, 0x81, 0x80, 0x80, 0x7e, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, - 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x7e, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x85, 0x88, 0x86, 0x82, 0x7c, 0x78, - 0x77, 0x7a, 0x7d, 0x81, 0x84, 0x87, 0x89, 0x87, 0x82, 0x7b, 0x79, 0x79, 0x7b, 0x7d, 0x7e, 0x80, - 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, - 0x81, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, - 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, - 0x82, 0x82, 0x81, 0x7e, 0x7c, 0x7b, 0x7c, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x7e, - 0x7d, 0x7c, 0x7c, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, - 0x7d, 0x7e, 0x81, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x80, - 0x81, 0x82, 0x82, 0x80, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, 0x80, 0x82, 0x83, 0x83, 0x81, 0x7d, - 0x7b, 0x7a, 0x7b, 0x7c, 0x80, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x7b, 0x7b, 0x7c, 0x7e, - 0x81, 0x83, 0x83, 0x83, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x83, 0x83, 0x82, 0x80, - 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, - 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7d, 0x7c, - 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x82, 0x83, - 0x83, 0x80, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7d, - 0x7e, 0x80, 0x81, 0x81, 0x82, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, - 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, - 0x7c, 0x7d, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, - 0x81, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x83, 0x82, 0x81, 0x80, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x82, 0x83, - 0x83, 0x83, 0x82, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x83, 0x84, 0x83, 0x81, 0x7e, - 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x80, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, - 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, - 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x7e, - 0x7c, 0x7a, 0x78, 0x79, 0x80, 0x88, 0x8d, 0x8d, 0x86, 0x7b, 0x71, 0x6c, 0x6d, 0x73, 0x7b, 0x85, - 0x8c, 0x8e, 0x8d, 0x87, 0x80, 0x77, 0x71, 0x70, 0x72, 0x77, 0x7e, 0x86, 0x8a, 0x8c, 0x8b, 0x86, - 0x80, 0x79, 0x77, 0x75, 0x77, 0x7b, 0x7e, 0x83, 0x86, 0x87, 0x87, 0x85, 0x83, 0x7e, 0x78, 0x75, - 0x76, 0x7a, 0x81, 0x85, 0x88, 0x89, 0x86, 0x83, 0x7e, 0x7b, 0x78, 0x78, 0x7a, 0x7c, 0x80, 0x83, - 0x85, 0x85, 0x84, 0x82, 0x7e, 0x7c, 0x7c, 0x7b, 0x7c, 0x7e, 0x81, 0x83, 0x83, 0x82, 0x80, 0x7c, - 0x7a, 0x79, 0x79, 0x7a, 0x7d, 0x81, 0x85, 0x87, 0x88, 0x85, 0x80, 0x7a, 0x74, 0x71, 0x73, 0x79, - 0x80, 0x85, 0x88, 0x8a, 0x88, 0x84, 0x80, 0x7b, 0x78, 0x75, 0x75, 0x76, 0x7b, 0x81, 0x86, 0x89, - 0x89, 0x86, 0x81, 0x7b, 0x76, 0x73, 0x74, 0x79, 0x7e, 0x86, 0x8a, 0x8c, 0x88, 0x83, 0x7d, 0x79, - 0x78, 0x7c, 0x80, 0x82, 0x82, 0x80, 0x7c, 0x7b, 0x7a, 0x7c, 0x80, 0x83, 0x85, 0x85, 0x82, 0x7c, - 0x78, 0x76, 0x79, 0x7c, 0x80, 0x83, 0x83, 0x83, 0x82, 0x80, 0x7c, 0x7a, 0x7a, 0x7b, 0x7e, 0x81, - 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x82, 0x84, 0x84, 0x83, 0x80, 0x7d, - 0x7b, 0x7b, 0x7e, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7d, 0x80, 0x83, 0x85, 0x84, 0x82, - 0x7e, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x81, 0x81, 0x80, 0x81, 0x7e, 0x7b, - 0x79, 0x77, 0x78, 0x7a, 0x7d, 0x82, 0x85, 0x86, 0x85, 0x83, 0x80, 0x7c, 0x79, 0x77, 0x79, 0x7c, - 0x82, 0x85, 0x86, 0x85, 0x82, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, - 0x7d, 0x7e, 0x80, 0x83, 0x85, 0x84, 0x82, 0x7e, 0x7b, 0x7a, 0x79, 0x7a, 0x7c, 0x80, 0x83, 0x85, - 0x85, 0x84, 0x82, 0x7e, 0x7c, 0x7a, 0x7a, 0x7b, 0x7d, 0x81, 0x82, 0x82, 0x83, 0x83, 0x82, 0x80, - 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x84, 0x83, 0x81, 0x7d, 0x7c, 0x7c, - 0x7b, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7b, 0x79, 0x7a, 0x7b, 0x7c, - 0x80, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x80, 0x7e, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, - 0x80, 0x81, 0x82, 0x82, 0x80, 0x7c, 0x7b, 0x7a, 0x7b, 0x7c, 0x80, 0x83, 0x83, 0x83, 0x82, 0x80, - 0x7d, 0x7b, 0x7a, 0x79, 0x7b, 0x7c, 0x7d, 0x80, 0x82, 0x83, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x7a, - 0x79, 0x7a, 0x7b, 0x7d, 0x81, 0x83, 0x84, 0x84, 0x83, 0x81, 0x7c, 0x7a, 0x78, 0x78, 0x7a, 0x7d, - 0x81, 0x84, 0x85, 0x85, 0x84, 0x81, 0x7d, 0x7a, 0x79, 0x7a, 0x7b, 0x7e, 0x82, 0x83, 0x85, 0x85, - 0x83, 0x81, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x81, - 0x81, 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, - 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, - 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, - 0x7d, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, - 0x80, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, - 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x80, - 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, - 0x7e, 0x81, 0x82, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, - 0x80, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, - 0x81, 0x82, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, - 0x81, 0x82, 0x81, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, - 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, - 0x7d, 0x7e, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x82, 0x82, - 0x82, 0x81, 0x80, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7d, - 0x7d, 0x7d, 0x80, 0x82, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x81, 0x82, 0x82, - 0x81, 0x80, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7c, - 0x7c, 0x7d, 0x80, 0x80, 0x81, 0x82, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, - 0x7d, 0x7d, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7c, 0x7b, 0x7b, 0x7d, 0x81, 0x83, - 0x84, 0x84, 0x83, 0x7e, 0x7c, 0x7a, 0x7a, 0x7e, 0x82, 0x84, 0x85, 0x83, 0x81, 0x7e, 0x7d, 0x7d, - 0x7e, 0x80, 0x82, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x83, - 0x83, 0x81, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x82, 0x82, 0x81, 0x7e, 0x7c, 0x7b, 0x7c, 0x7c, - 0x7e, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7a, 0x7b, 0x7d, 0x82, 0x85, - 0x87, 0x87, 0x84, 0x81, 0x7d, 0x7a, 0x78, 0x78, 0x79, 0x7e, 0x83, 0x87, 0x89, 0x88, 0x84, 0x80, - 0x7a, 0x77, 0x76, 0x77, 0x7a, 0x7e, 0x83, 0x86, 0x87, 0x86, 0x83, 0x7d, 0x7a, 0x78, 0x78, 0x7a, - 0x7d, 0x81, 0x83, 0x84, 0x84, 0x84, 0x82, 0x7e, 0x7b, 0x79, 0x77, 0x78, 0x7c, 0x80, 0x84, 0x86, - 0x86, 0x83, 0x7e, 0x7a, 0x78, 0x78, 0x7a, 0x7d, 0x82, 0x85, 0x86, 0x84, 0x82, 0x80, 0x7d, 0x7c, - 0x7d, 0x7d, 0x7e, 0x81, 0x83, 0x82, 0x82, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7e, 0x81, 0x81, 0x81, - 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7e, 0x82, 0x83, 0x84, 0x83, 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7e, - 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, - 0x81, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x80, 0x81, - 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, - 0x7e, 0x7e, 0x7d, 0x7e, 0x81, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, - 0x7e, 0x81, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x79, 0x76, 0x76, 0x79, 0x7e, 0x84, 0x87, 0x86, 0x83, - 0x7e, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x81, 0x83, 0x84, 0x84, 0x82, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, - 0x7d, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7e, - 0x81, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7c, 0x7c, - 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, - 0x7e, 0x7d, 0x7e, 0x80, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x81, - 0x81, 0x82, 0x81, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, - 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x80, - 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x82, - 0x81, 0x81, 0x7e, 0x7b, 0x78, 0x77, 0x78, 0x7c, 0x82, 0x87, 0x88, 0x86, 0x81, 0x79, 0x74, 0x71, - 0x73, 0x7a, 0x83, 0x89, 0x8e, 0x8e, 0x87, 0x7e, 0x76, 0x72, 0x73, 0x78, 0x7e, 0x86, 0x88, 0x88, - 0x84, 0x81, 0x7d, 0x7a, 0x7a, 0x7a, 0x7c, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x82, 0x82, 0x82, 0x81, - 0x7e, 0x7b, 0x79, 0x77, 0x79, 0x7c, 0x81, 0x85, 0x87, 0x86, 0x82, 0x7c, 0x78, 0x78, 0x7b, 0x81, - 0x85, 0x87, 0x85, 0x81, 0x7b, 0x77, 0x76, 0x78, 0x7b, 0x82, 0x86, 0x88, 0x87, 0x83, 0x7c, 0x78, - 0x76, 0x76, 0x7b, 0x81, 0x86, 0x8a, 0x8a, 0x87, 0x81, 0x7a, 0x75, 0x72, 0x73, 0x78, 0x80, 0x87, - 0x8a, 0x89, 0x84, 0x7c, 0x77, 0x75, 0x76, 0x7a, 0x80, 0x84, 0x86, 0x85, 0x82, 0x7d, 0x7c, 0x7b, - 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x83, 0x80, 0x7b, 0x78, 0x76, 0x77, 0x7b, 0x82, - 0x87, 0x89, 0x86, 0x81, 0x7a, 0x77, 0x76, 0x78, 0x7d, 0x82, 0x84, 0x83, 0x80, 0x7d, 0x7a, 0x7a, - 0x7c, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, - 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, - 0x7c, 0x7c, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x80, 0x80, - 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x82, 0x81, 0x7d, 0x79, 0x77, 0x77, 0x7c, 0x82, 0x83, 0x83, - 0x81, 0x7e, 0x7d, 0x7a, 0x78, 0x78, 0x7a, 0x7d, 0x83, 0x86, 0x86, 0x87, 0x85, 0x81, 0x7c, 0x79, - 0x75, 0x75, 0x78, 0x80, 0x86, 0x8a, 0x88, 0x81, 0x78, 0x74, 0x77, 0x7d, 0x84, 0x87, 0x86, 0x83, - 0x7d, 0x79, 0x74, 0x72, 0x74, 0x78, 0x80, 0x85, 0x89, 0x8b, 0x8a, 0x85, 0x7d, 0x74, 0x70, 0x71, - 0x77, 0x82, 0x8c, 0x8f, 0x8d, 0x8a, 0x85, 0x7e, 0x75, 0x6e, 0x6d, 0x76, 0x83, 0x8f, 0x95, 0x93, - 0x8c, 0x7d, 0x6c, 0x61, 0x65, 0x77, 0x8b, 0x95, 0x91, 0x87, 0x80, 0x80, 0x81, 0x7c, 0x74, 0x6e, - 0x72, 0x7e, 0x8c, 0x96, 0x93, 0x88, 0x7e, 0x79, 0x7a, 0x7e, 0x82, 0x80, 0x7d, 0x7b, 0x7c, 0x81, - 0x84, 0x83, 0x80, 0x7b, 0x7c, 0x81, 0x83, 0x85, 0x84, 0x81, 0x7b, 0x7a, 0x7d, 0x82, 0x85, 0x85, - 0x80, 0x7c, 0x7b, 0x7b, 0x7d, 0x7b, 0x78, 0x77, 0x7b, 0x84, 0x8a, 0x8a, 0x85, 0x7d, 0x78, 0x75, - 0x76, 0x77, 0x7a, 0x7b, 0x7d, 0x81, 0x82, 0x84, 0x86, 0x85, 0x80, 0x79, 0x75, 0x75, 0x79, 0x7d, - 0x81, 0x82, 0x7e, 0x7d, 0x7e, 0x81, 0x83, 0x81, 0x7e, 0x80, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7a, - 0x7a, 0x7b, 0x80, 0x85, 0x85, 0x85, 0x83, 0x81, 0x7e, 0x78, 0x75, 0x74, 0x76, 0x7b, 0x83, 0x88, - 0x89, 0x86, 0x84, 0x82, 0x7e, 0x7a, 0x74, 0x72, 0x76, 0x7e, 0x85, 0x87, 0x86, 0x86, 0x85, 0x84, - 0x81, 0x7c, 0x79, 0x7a, 0x7c, 0x7e, 0x82, 0x82, 0x84, 0x85, 0x85, 0x83, 0x81, 0x80, 0x7c, 0x79, - 0x78, 0x7a, 0x80, 0x84, 0x87, 0x89, 0x85, 0x80, 0x7c, 0x7b, 0x7d, 0x80, 0x7d, 0x7a, 0x79, 0x7c, - 0x83, 0x8a, 0x8c, 0x8b, 0x85, 0x7c, 0x77, 0x77, 0x79, 0x79, 0x7c, 0x81, 0x86, 0x8d, 0x8e, 0x88, - 0x81, 0x78, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7c, 0x81, 0x84, 0x86, 0x84, 0x81, 0x7d, 0x7b, 0x7b, - 0x7d, 0x7c, 0x7a, 0x78, 0x7a, 0x7c, 0x83, 0x86, 0x85, 0x85, 0x81, 0x7b, 0x76, 0x73, 0x75, 0x79, - 0x7e, 0x83, 0x86, 0x88, 0x86, 0x81, 0x7b, 0x77, 0x7a, 0x81, 0x84, 0x82, 0x80, 0x7d, 0x7b, 0x7d, - 0x81, 0x83, 0x84, 0x84, 0x84, 0x85, 0x86, 0x85, 0x81, 0x7d, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x7b, - 0x7e, 0x85, 0x8b, 0x8e, 0x8e, 0x89, 0x7e, 0x72, 0x6b, 0x67, 0x6c, 0x74, 0x7d, 0x89, 0x92, 0x97, - 0x94, 0x8c, 0x81, 0x75, 0x6c, 0x6a, 0x6c, 0x73, 0x7c, 0x87, 0x8f, 0x92, 0x90, 0x8b, 0x82, 0x75, - 0x71, 0x73, 0x78, 0x7d, 0x7e, 0x81, 0x85, 0x88, 0x89, 0x88, 0x81, 0x79, 0x75, 0x78, 0x81, 0x8c, - 0x92, 0x8f, 0x84, 0x75, 0x6d, 0x6d, 0x72, 0x7b, 0x88, 0x91, 0x93, 0x8e, 0x83, 0x78, 0x74, 0x74, - 0x77, 0x7b, 0x7e, 0x7e, 0x7e, 0x7e, 0x81, 0x89, 0x8d, 0x8a, 0x83, 0x7b, 0x76, 0x75, 0x75, 0x7a, - 0x80, 0x82, 0x81, 0x81, 0x85, 0x89, 0x8b, 0x87, 0x7d, 0x76, 0x74, 0x76, 0x79, 0x7d, 0x80, 0x82, - 0x83, 0x85, 0x8a, 0x8b, 0x84, 0x7b, 0x72, 0x70, 0x74, 0x78, 0x7e, 0x83, 0x84, 0x85, 0x85, 0x85, - 0x87, 0x85, 0x7d, 0x75, 0x71, 0x74, 0x79, 0x80, 0x85, 0x86, 0x83, 0x7d, 0x7c, 0x7c, 0x80, 0x82, - 0x83, 0x81, 0x7b, 0x78, 0x76, 0x76, 0x7b, 0x81, 0x85, 0x8a, 0x8e, 0x8e, 0x8a, 0x7c, 0x6d, 0x63, - 0x60, 0x6d, 0x81, 0x91, 0x9c, 0x9c, 0x92, 0x85, 0x75, 0x69, 0x66, 0x68, 0x70, 0x7e, 0x8f, 0x98, - 0x99, 0x93, 0x87, 0x79, 0x6c, 0x65, 0x68, 0x72, 0x81, 0x8f, 0x95, 0x93, 0x8a, 0x7c, 0x71, 0x6d, - 0x6e, 0x76, 0x7e, 0x86, 0x8b, 0x89, 0x87, 0x81, 0x77, 0x74, 0x74, 0x7a, 0x83, 0x88, 0x89, 0x85, - 0x80, 0x7c, 0x77, 0x78, 0x7b, 0x7d, 0x80, 0x84, 0x88, 0x8a, 0x89, 0x82, 0x7a, 0x75, 0x70, 0x6c, - 0x71, 0x7b, 0x86, 0x90, 0x96, 0x98, 0x92, 0x85, 0x75, 0x67, 0x61, 0x69, 0x77, 0x84, 0x8e, 0x96, - 0x9a, 0x97, 0x8b, 0x80, 0x75, 0x6b, 0x65, 0x64, 0x6c, 0x7a, 0x8a, 0x99, 0xa0, 0x9c, 0x8f, 0x7b, - 0x6b, 0x63, 0x60, 0x69, 0x75, 0x84, 0x90, 0x99, 0x9d, 0x98, 0x8a, 0x76, 0x67, 0x5f, 0x60, 0x69, - 0x7a, 0x8c, 0x96, 0x9a, 0x98, 0x91, 0x83, 0x77, 0x73, 0x6d, 0x66, 0x68, 0x71, 0x7d, 0x8c, 0x98, - 0xa0, 0xa3, 0x9b, 0x89, 0x75, 0x63, 0x57, 0x59, 0x67, 0x76, 0x8a, 0xa0, 0xaa, 0xa7, 0x9b, 0x89, - 0x73, 0x60, 0x55, 0x52, 0x58, 0x67, 0x7e, 0x97, 0xa9, 0xb0, 0xaa, 0x98, 0x80, 0x67, 0x58, 0x54, - 0x59, 0x62, 0x72, 0x88, 0x9b, 0xa6, 0xaa, 0xa0, 0x8c, 0x76, 0x65, 0x5a, 0x5c, 0x6c, 0x7d, 0x8d, - 0x9a, 0x9f, 0x9c, 0x90, 0x78, 0x65, 0x5c, 0x5b, 0x65, 0x77, 0x8f, 0xa0, 0xa7, 0xa3, 0x93, 0x7b, - 0x68, 0x5b, 0x58, 0x60, 0x70, 0x82, 0x91, 0x9a, 0x9c, 0x99, 0x91, 0x84, 0x76, 0x6d, 0x69, 0x6a, - 0x73, 0x7b, 0x86, 0x8e, 0x92, 0x94, 0x90, 0x88, 0x7e, 0x76, 0x6f, 0x6d, 0x6d, 0x75, 0x83, 0x8d, - 0x95, 0x98, 0x93, 0x88, 0x7a, 0x6b, 0x66, 0x69, 0x6e, 0x7b, 0x84, 0x8b, 0x92, 0x8e, 0x8a, 0x87, - 0x84, 0x7c, 0x74, 0x75, 0x76, 0x74, 0x77, 0x7c, 0x80, 0x81, 0x86, 0x8c, 0x8b, 0x8a, 0x88, 0x80, - 0x7a, 0x7b, 0x7b, 0x75, 0x76, 0x80, 0x83, 0x81, 0x81, 0x82, 0x81, 0x7d, 0x81, 0x82, 0x7d, 0x81, - 0x85, 0x85, 0x7d, 0x78, 0x7a, 0x7c, 0x7c, 0x7b, 0x7b, 0x83, 0x85, 0x82, 0x84, 0x89, 0x8a, 0x85, - 0x7d, 0x79, 0x73, 0x72, 0x73, 0x79, 0x82, 0x8a, 0x93, 0x96, 0x90, 0x87, 0x79, 0x6a, 0x62, 0x65, - 0x73, 0x84, 0x93, 0x9a, 0x99, 0x94, 0x86, 0x75, 0x6a, 0x67, 0x69, 0x6d, 0x79, 0x88, 0x8e, 0x8e, - 0x8f, 0x8b, 0x86, 0x80, 0x77, 0x72, 0x70, 0x6d, 0x6f, 0x77, 0x82, 0x8a, 0x8f, 0x94, 0x91, 0x89, - 0x7e, 0x75, 0x6f, 0x6a, 0x6b, 0x74, 0x80, 0x8e, 0x99, 0xa0, 0xa0, 0x91, 0x7c, 0x6b, 0x5c, 0x55, - 0x5b, 0x6f, 0x87, 0x9b, 0xab, 0xaf, 0xa7, 0x92, 0x73, 0x5a, 0x52, 0x54, 0x62, 0x78, 0x8e, 0x9f, - 0xa8, 0xa6, 0x9d, 0x89, 0x73, 0x67, 0x61, 0x5f, 0x68, 0x78, 0x87, 0x91, 0x96, 0x95, 0x91, 0x85, - 0x79, 0x71, 0x6a, 0x6e, 0x77, 0x82, 0x8d, 0x94, 0x92, 0x88, 0x7c, 0x74, 0x6d, 0x6b, 0x74, 0x82, - 0x8c, 0x93, 0x93, 0x8b, 0x7d, 0x73, 0x6b, 0x6d, 0x78, 0x84, 0x8a, 0x8a, 0x8a, 0x85, 0x78, 0x74, - 0x75, 0x73, 0x75, 0x7e, 0x8b, 0x91, 0x8f, 0x8f, 0x8a, 0x7b, 0x6f, 0x6b, 0x6d, 0x74, 0x76, 0x79, - 0x88, 0x96, 0x93, 0x8e, 0x8f, 0x8c, 0x80, 0x70, 0x69, 0x65, 0x61, 0x66, 0x75, 0x86, 0x95, 0x9c, - 0xa2, 0xa4, 0x94, 0x7c, 0x6a, 0x63, 0x5d, 0x59, 0x69, 0x86, 0x99, 0x9e, 0xa2, 0xa3, 0x8e, 0x72, - 0x63, 0x5f, 0x66, 0x70, 0x7c, 0x8f, 0x9d, 0x9a, 0x8e, 0x84, 0x7b, 0x6d, 0x61, 0x6b, 0x7d, 0x86, - 0x87, 0x91, 0x9a, 0x8f, 0x7d, 0x79, 0x78, 0x6f, 0x6a, 0x72, 0x7b, 0x80, 0x83, 0x8a, 0x90, 0x8e, - 0x88, 0x84, 0x7e, 0x78, 0x74, 0x75, 0x79, 0x7e, 0x7d, 0x7c, 0x80, 0x82, 0x83, 0x82, 0x83, 0x84, - 0x80, 0x7c, 0x7e, 0x82, 0x82, 0x86, 0x88, 0x81, 0x77, 0x74, 0x74, 0x76, 0x7c, 0x86, 0x8f, 0x8f, - 0x8b, 0x89, 0x80, 0x71, 0x6c, 0x6d, 0x71, 0x7a, 0x86, 0x90, 0x96, 0x94, 0x8c, 0x7e, 0x73, 0x6e, - 0x6e, 0x70, 0x7a, 0x86, 0x8c, 0x90, 0x91, 0x89, 0x7c, 0x76, 0x76, 0x75, 0x75, 0x7d, 0x87, 0x8b, - 0x8c, 0x8a, 0x85, 0x7c, 0x72, 0x70, 0x7a, 0x7e, 0x84, 0x8c, 0x8f, 0x8b, 0x7d, 0x74, 0x70, 0x68, - 0x65, 0x75, 0x89, 0x91, 0x97, 0x9b, 0x99, 0x88, 0x6e, 0x60, 0x5e, 0x61, 0x6d, 0x83, 0x96, 0x9f, - 0x9f, 0x96, 0x8a, 0x75, 0x61, 0x5f, 0x67, 0x70, 0x7d, 0x8d, 0x9a, 0xa2, 0x95, 0x85, 0x80, 0x74, - 0x65, 0x5e, 0x68, 0x77, 0x7a, 0x82, 0x96, 0xa1, 0x9c, 0x91, 0x8a, 0x80, 0x6d, 0x5e, 0x5d, 0x64, - 0x6a, 0x71, 0x83, 0x9b, 0xa5, 0xa4, 0x9e, 0x93, 0x83, 0x65, 0x50, 0x55, 0x64, 0x6a, 0x76, 0x94, - 0xa8, 0xa4, 0x99, 0x96, 0x8a, 0x6b, 0x5c, 0x65, 0x70, 0x75, 0x7a, 0x89, 0x9a, 0x95, 0x89, 0x8a, - 0x8c, 0x7b, 0x66, 0x68, 0x7a, 0x7d, 0x7a, 0x8a, 0x9d, 0x98, 0x87, 0x83, 0x7c, 0x6e, 0x60, 0x64, - 0x7a, 0x8c, 0x8a, 0x8b, 0x98, 0x99, 0x87, 0x77, 0x78, 0x77, 0x66, 0x5e, 0x6d, 0x7e, 0x83, 0x8a, - 0x97, 0xa1, 0x9b, 0x8b, 0x83, 0x74, 0x61, 0x55, 0x5f, 0x6f, 0x76, 0x85, 0x9f, 0xaa, 0x9f, 0x95, - 0x90, 0x7c, 0x60, 0x57, 0x61, 0x69, 0x6b, 0x7d, 0x9f, 0xab, 0x9e, 0x94, 0x91, 0x82, 0x61, 0x4f, - 0x59, 0x6c, 0x71, 0x7b, 0x9f, 0xb4, 0xa5, 0x90, 0x8e, 0x83, 0x5e, 0x48, 0x55, 0x69, 0x6d, 0x72, - 0x96, 0xb4, 0xa8, 0x94, 0x99, 0x95, 0x70, 0x53, 0x5e, 0x70, 0x68, 0x64, 0x83, 0xa1, 0x9a, 0x8d, - 0x94, 0x96, 0x7d, 0x66, 0x6b, 0x80, 0x7d, 0x6d, 0x7d, 0x99, 0x8f, 0x76, 0x79, 0x89, 0x7b, 0x68, - 0x75, 0x8e, 0x90, 0x87, 0x8c, 0x96, 0x88, 0x68, 0x5f, 0x6a, 0x6f, 0x73, 0x80, 0x92, 0x9c, 0x99, - 0x93, 0x87, 0x75, 0x6c, 0x67, 0x60, 0x68, 0x78, 0x84, 0x91, 0x9a, 0x9a, 0x94, 0x86, 0x7b, 0x70, - 0x63, 0x64, 0x69, 0x70, 0x7d, 0x8c, 0x94, 0x93, 0x8e, 0x8b, 0x89, 0x7d, 0x72, 0x6d, 0x6d, 0x67, - 0x64, 0x6c, 0x7c, 0x90, 0xa0, 0xaa, 0xa7, 0x9b, 0x86, 0x69, 0x54, 0x4c, 0x4d, 0x59, 0x73, 0x8f, - 0xa8, 0xae, 0xac, 0xab, 0x9a, 0x7c, 0x67, 0x59, 0x54, 0x57, 0x64, 0x7a, 0x8c, 0x99, 0xa8, 0xac, - 0xa0, 0x89, 0x6f, 0x5e, 0x56, 0x54, 0x5c, 0x77, 0x98, 0xa7, 0xa4, 0xa1, 0x9f, 0x87, 0x61, 0x52, - 0x55, 0x5b, 0x68, 0x7c, 0x97, 0xb0, 0xb3, 0xa2, 0x8f, 0x7c, 0x67, 0x52, 0x52, 0x5d, 0x66, 0x7d, - 0x9c, 0xa7, 0xa0, 0x9f, 0x9f, 0x89, 0x6f, 0x63, 0x62, 0x67, 0x6d, 0x74, 0x83, 0x94, 0x9e, 0x97, - 0x95, 0x98, 0x85, 0x69, 0x65, 0x75, 0x77, 0x6d, 0x74, 0x8a, 0x92, 0x8b, 0x87, 0x88, 0x7e, 0x73, - 0x73, 0x7a, 0x7a, 0x79, 0x7c, 0x85, 0x8a, 0x81, 0x77, 0x7c, 0x89, 0x8e, 0x8d, 0x8b, 0x84, 0x7b, - 0x6e, 0x66, 0x69, 0x6f, 0x74, 0x7e, 0x91, 0xa7, 0xaa, 0x9b, 0x8c, 0x76, 0x65, 0x5a, 0x54, 0x5c, - 0x6e, 0x85, 0x9a, 0xa3, 0xa5, 0xa9, 0x9c, 0x80, 0x6f, 0x63, 0x57, 0x58, 0x65, 0x75, 0x7b, 0x80, - 0x96, 0xab, 0xa3, 0x91, 0x86, 0x7a, 0x6d, 0x64, 0x60, 0x60, 0x62, 0x6d, 0x86, 0x9a, 0x9a, 0x93, - 0x99, 0x9b, 0x88, 0x74, 0x6c, 0x68, 0x63, 0x67, 0x72, 0x7b, 0x7d, 0x85, 0x9b, 0xa2, 0x94, 0x87, - 0x84, 0x7e, 0x6e, 0x66, 0x6d, 0x73, 0x77, 0x81, 0x8d, 0x8f, 0x82, 0x76, 0x80, 0x88, 0x84, 0x80, - 0x80, 0x84, 0x89, 0x7d, 0x71, 0x77, 0x77, 0x73, 0x7c, 0x89, 0x8a, 0x80, 0x7e, 0x8a, 0x89, 0x78, - 0x70, 0x7a, 0x83, 0x85, 0x88, 0x8b, 0x88, 0x7a, 0x73, 0x75, 0x6f, 0x6a, 0x75, 0x83, 0x93, 0x98, - 0x92, 0x92, 0x88, 0x7b, 0x75, 0x6f, 0x68, 0x68, 0x72, 0x83, 0x8f, 0x8f, 0x90, 0x92, 0x98, 0x8a, - 0x71, 0x6e, 0x72, 0x72, 0x6d, 0x72, 0x80, 0x85, 0x85, 0x90, 0x98, 0x8b, 0x82, 0x84, 0x80, 0x74, - 0x66, 0x69, 0x72, 0x6f, 0x75, 0x8b, 0x9b, 0x98, 0x8d, 0x8b, 0x8f, 0x7d, 0x65, 0x64, 0x69, 0x6b, - 0x6f, 0x76, 0x8c, 0xa3, 0xa0, 0x98, 0x90, 0x84, 0x73, 0x63, 0x62, 0x6b, 0x6e, 0x75, 0x8b, 0x99, - 0x96, 0x95, 0x95, 0x8d, 0x75, 0x62, 0x67, 0x6a, 0x6e, 0x7d, 0x87, 0x95, 0x9d, 0x8b, 0x88, 0x87, - 0x77, 0x6b, 0x68, 0x74, 0x7a, 0x78, 0x81, 0x8b, 0x8e, 0x8a, 0x8b, 0x88, 0x7b, 0x75, 0x74, 0x6e, - 0x71, 0x7d, 0x84, 0x87, 0x92, 0x99, 0x8c, 0x81, 0x7e, 0x73, 0x6f, 0x72, 0x71, 0x75, 0x7b, 0x89, - 0x91, 0x8a, 0x87, 0x90, 0x88, 0x7c, 0x80, 0x77, 0x71, 0x6e, 0x6f, 0x79, 0x7e, 0x7d, 0x86, 0x90, - 0x93, 0x95, 0x94, 0x89, 0x82, 0x76, 0x66, 0x62, 0x63, 0x67, 0x75, 0x8f, 0x9b, 0x9b, 0x99, 0x9c, - 0x94, 0x7e, 0x6e, 0x6e, 0x67, 0x5e, 0x65, 0x70, 0x7d, 0x85, 0x8e, 0x99, 0x99, 0x93, 0x8c, 0x7d, - 0x74, 0x70, 0x6e, 0x71, 0x70, 0x74, 0x86, 0x8a, 0x88, 0x86, 0x8b, 0x8c, 0x7b, 0x73, 0x7c, 0x7b, - 0x7a, 0x7a, 0x7b, 0x82, 0x85, 0x81, 0x7d, 0x79, 0x7b, 0x7b, 0x78, 0x80, 0x85, 0x87, 0x89, 0x89, - 0x85, 0x7c, 0x7a, 0x7b, 0x71, 0x6d, 0x7b, 0x83, 0x84, 0x86, 0x90, 0x97, 0x86, 0x80, 0x82, 0x76, - 0x6a, 0x65, 0x73, 0x80, 0x7c, 0x7c, 0x8e, 0x9b, 0x8e, 0x7a, 0x7a, 0x7d, 0x71, 0x5e, 0x65, 0x87, - 0x8a, 0x7d, 0x8d, 0xa4, 0x94, 0x7a, 0x7b, 0x7a, 0x6d, 0x63, 0x70, 0x7e, 0x81, 0x8c, 0x94, 0x8b, - 0x7c, 0x7d, 0x84, 0x7d, 0x76, 0x7d, 0x83, 0x7b, 0x7c, 0x7b, 0x78, 0x79, 0x78, 0x77, 0x82, 0x8f, - 0x89, 0x7c, 0x85, 0x8e, 0x80, 0x6c, 0x75, 0x82, 0x7b, 0x76, 0x7a, 0x84, 0x85, 0x80, 0x7a, 0x84, - 0x8b, 0x83, 0x7e, 0x7d, 0x87, 0x86, 0x72, 0x70, 0x72, 0x75, 0x78, 0x75, 0x80, 0x90, 0x94, 0x8a, - 0x89, 0x87, 0x84, 0x7b, 0x6e, 0x72, 0x76, 0x6f, 0x74, 0x85, 0x88, 0x84, 0x91, 0x94, 0x83, 0x82, - 0x7e, 0x76, 0x6b, 0x68, 0x7b, 0x7e, 0x7d, 0x8c, 0x91, 0x91, 0x84, 0x78, 0x7d, 0x7a, 0x70, 0x6e, - 0x75, 0x7c, 0x85, 0x87, 0x86, 0x91, 0x8d, 0x78, 0x76, 0x7c, 0x76, 0x69, 0x6e, 0x82, 0x93, 0x82, - 0x75, 0x92, 0x9b, 0x78, 0x64, 0x87, 0x8f, 0x6f, 0x69, 0x8b, 0x8f, 0x76, 0x7a, 0x81, 0x88, 0x86, - 0x7b, 0x6e, 0x76, 0x90, 0x83, 0x71, 0x7e, 0x91, 0x8a, 0x6f, 0x7a, 0x8e, 0x7e, 0x6a, 0x77, 0x8a, - 0x7b, 0x73, 0x83, 0x86, 0x7c, 0x81, 0x85, 0x7c, 0x7a, 0x83, 0x7e, 0x78, 0x7d, 0x80, 0x7c, 0x83, - 0x88, 0x83, 0x7c, 0x7c, 0x85, 0x83, 0x85, 0x84, 0x87, 0x86, 0x7a, 0x82, 0x80, 0x72, 0x71, 0x79, - 0x80, 0x84, 0x81, 0x84, 0x8d, 0x88, 0x80, 0x78, 0x77, 0x79, 0x7c, 0x82, 0x7c, 0x7c, 0x85, 0x87, - 0x7c, 0x78, 0x81, 0x7d, 0x75, 0x7d, 0x8c, 0x85, 0x7c, 0x81, 0x86, 0x82, 0x76, 0x77, 0x86, 0x83, - 0x7b, 0x80, 0x84, 0x85, 0x7e, 0x74, 0x77, 0x82, 0x80, 0x7e, 0x82, 0x8c, 0x8f, 0x84, 0x7d, 0x7e, - 0x7a, 0x6f, 0x73, 0x7c, 0x7e, 0x7e, 0x83, 0x8c, 0x89, 0x7d, 0x80, 0x86, 0x82, 0x7a, 0x77, 0x7b, - 0x7c, 0x78, 0x79, 0x80, 0x83, 0x82, 0x88, 0x89, 0x7e, 0x7e, 0x82, 0x7a, 0x76, 0x7e, 0x83, 0x7b, - 0x75, 0x82, 0x8d, 0x81, 0x75, 0x80, 0x88, 0x80, 0x77, 0x7a, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, - 0x82, 0x82, 0x7a, 0x78, 0x7e, 0x82, 0x7d, 0x78, 0x7b, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x7e, 0x7d, - 0x83, 0x80, 0x78, 0x79, 0x7e, 0x81, 0x7c, 0x7c, 0x84, 0x85, 0x7d, 0x7c, 0x84, 0x87, 0x80, 0x7a, - 0x7a, 0x7d, 0x79, 0x75, 0x7a, 0x7e, 0x81, 0x82, 0x83, 0x88, 0x87, 0x81, 0x7d, 0x7b, 0x7b, 0x77, - 0x75, 0x79, 0x80, 0x82, 0x84, 0x86, 0x86, 0x85, 0x83, 0x80, 0x7d, 0x7b, 0x79, 0x79, 0x7d, 0x7e, - 0x80, 0x82, 0x84, 0x82, 0x84, 0x82, 0x80, 0x80, 0x81, 0x81, 0x7d, 0x80, 0x7e, 0x7b, 0x7b, 0x7d, - 0x7e, 0x7e, 0x7e, 0x80, 0x7d, 0x7c, 0x7c, 0x7c, 0x7e, 0x82, 0x84, 0x83, 0x84, 0x82, 0x7e, 0x7b, - 0x78, 0x79, 0x7a, 0x7b, 0x80, 0x7e, 0x7d, 0x81, 0x85, 0x88, 0x8b, 0x8a, 0x86, 0x80, 0x7a, 0x74, - 0x70, 0x70, 0x74, 0x7a, 0x82, 0x8b, 0x91, 0x91, 0x8e, 0x89, 0x82, 0x7c, 0x75, 0x71, 0x74, 0x74, - 0x78, 0x7e, 0x81, 0x84, 0x88, 0x89, 0x87, 0x84, 0x81, 0x7e, 0x7d, 0x80, 0x80, 0x7d, 0x7d, 0x81, - 0x82, 0x83, 0x83, 0x7e, 0x7d, 0x7b, 0x7a, 0x7c, 0x7d, 0x84, 0x88, 0x87, 0x88, 0x86, 0x80, 0x7b, - 0x76, 0x73, 0x73, 0x75, 0x78, 0x7e, 0x82, 0x85, 0x87, 0x85, 0x82, 0x7e, 0x7d, 0x7b, 0x7b, 0x7e, - 0x7d, 0x7e, 0x82, 0x82, 0x84, 0x84, 0x81, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7e, 0x81, 0x82, 0x82, - 0x80, 0x7d, 0x7c, 0x7b, 0x79, 0x77, 0x7a, 0x7c, 0x7e, 0x83, 0x83, 0x83, 0x83, 0x82, 0x7e, 0x78, - 0x77, 0x78, 0x7b, 0x82, 0x83, 0x84, 0x85, 0x81, 0x7e, 0x7e, 0x7a, 0x76, 0x79, 0x7e, 0x84, 0x86, - 0x86, 0x83, 0x81, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x81, 0x83, 0x82, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, - 0x7b, 0x7e, 0x82, 0x81, 0x84, 0x84, 0x81, 0x81, 0x7e, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x81, 0x82, - 0x81, 0x81, 0x82, 0x83, 0x80, 0x7e, 0x81, 0x7e, 0x7d, 0x7e, 0x80, 0x7d, 0x7e, 0x80, 0x7d, 0x7e, - 0x81, 0x81, 0x80, 0x81, 0x80, 0x81, 0x7e, 0x7a, 0x77, 0x76, 0x79, 0x80, 0x84, 0x89, 0x8a, 0x89, - 0x86, 0x7e, 0x7b, 0x77, 0x74, 0x76, 0x7b, 0x7e, 0x82, 0x89, 0x88, 0x85, 0x83, 0x7b, 0x78, 0x78, - 0x7a, 0x7b, 0x82, 0x87, 0x8a, 0x87, 0x84, 0x82, 0x79, 0x78, 0x76, 0x74, 0x78, 0x7b, 0x82, 0x88, - 0x89, 0x8c, 0x87, 0x7e, 0x7b, 0x78, 0x75, 0x77, 0x7a, 0x7a, 0x7e, 0x83, 0x85, 0x85, 0x87, 0x83, - 0x81, 0x83, 0x7d, 0x7c, 0x7a, 0x77, 0x7a, 0x7b, 0x7a, 0x7c, 0x7e, 0x80, 0x81, 0x83, 0x81, 0x7e, - 0x81, 0x81, 0x80, 0x81, 0x84, 0x80, 0x7e, 0x81, 0x7c, 0x7a, 0x79, 0x78, 0x7c, 0x82, 0x88, 0x8b, - 0x8a, 0x87, 0x84, 0x81, 0x7b, 0x79, 0x76, 0x76, 0x7d, 0x84, 0x86, 0x89, 0x8a, 0x84, 0x81, 0x7d, - 0x79, 0x78, 0x78, 0x7a, 0x7d, 0x82, 0x85, 0x87, 0x88, 0x86, 0x81, 0x7c, 0x7c, 0x79, 0x78, 0x78, - 0x79, 0x7e, 0x84, 0x84, 0x86, 0x86, 0x83, 0x82, 0x81, 0x7a, 0x79, 0x79, 0x79, 0x7d, 0x7e, 0x83, - 0x85, 0x86, 0x85, 0x82, 0x81, 0x7b, 0x79, 0x7a, 0x79, 0x7c, 0x81, 0x83, 0x84, 0x83, 0x83, 0x7d, - 0x7c, 0x7d, 0x79, 0x78, 0x7c, 0x7c, 0x7c, 0x80, 0x82, 0x84, 0x88, 0x89, 0x88, 0x83, 0x81, 0x80, - 0x7a, 0x7a, 0x78, 0x76, 0x7d, 0x83, 0x84, 0x87, 0x89, 0x86, 0x83, 0x82, 0x7e, 0x7d, 0x7b, 0x79, - 0x7b, 0x7d, 0x81, 0x81, 0x82, 0x86, 0x85, 0x84, 0x82, 0x7e, 0x7d, 0x79, 0x79, 0x7c, 0x7b, 0x7d, - 0x80, 0x7e, 0x81, 0x80, 0x7e, 0x81, 0x7d, 0x7d, 0x7d, 0x7a, 0x7d, 0x82, 0x82, 0x82, 0x84, 0x83, - 0x81, 0x7e, 0x79, 0x77, 0x78, 0x7b, 0x7b, 0x7e, 0x82, 0x85, 0x86, 0x83, 0x84, 0x83, 0x80, 0x7d, - 0x7c, 0x79, 0x78, 0x78, 0x77, 0x7b, 0x7d, 0x82, 0x85, 0x86, 0x87, 0x86, 0x84, 0x82, 0x7d, 0x79, - 0x77, 0x75, 0x76, 0x7a, 0x7d, 0x81, 0x83, 0x83, 0x82, 0x82, 0x82, 0x80, 0x7d, 0x7e, 0x82, 0x82, - 0x81, 0x7e, 0x7b, 0x7c, 0x80, 0x80, 0x82, 0x82, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x80, - 0x81, 0x82, 0x84, 0x82, 0x7d, 0x7e, 0x7b, 0x7c, 0x7e, 0x7c, 0x82, 0x84, 0x82, 0x84, 0x81, 0x7e, - 0x7e, 0x7b, 0x7b, 0x7d, 0x80, 0x83, 0x87, 0x89, 0x88, 0x86, 0x81, 0x7d, 0x7b, 0x7b, 0x7c, 0x7b, - 0x7d, 0x7e, 0x81, 0x83, 0x85, 0x81, 0x7c, 0x7a, 0x77, 0x77, 0x7c, 0x81, 0x83, 0x84, 0x80, 0x7e, - 0x81, 0x7d, 0x79, 0x78, 0x77, 0x78, 0x7c, 0x82, 0x88, 0x89, 0x89, 0x89, 0x86, 0x80, 0x78, 0x76, - 0x73, 0x76, 0x79, 0x7c, 0x81, 0x87, 0x8a, 0x87, 0x86, 0x82, 0x7b, 0x79, 0x7b, 0x7a, 0x7b, 0x7e, - 0x81, 0x81, 0x83, 0x83, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7b, 0x7b, 0x80, 0x7e, 0x80, 0x82, 0x81, - 0x81, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7d, 0x82, 0x85, 0x87, 0x85, 0x82, 0x80, 0x7a, - 0x75, 0x74, 0x76, 0x79, 0x7b, 0x82, 0x88, 0x88, 0x88, 0x87, 0x82, 0x7b, 0x79, 0x76, 0x73, 0x78, - 0x80, 0x83, 0x88, 0x8a, 0x89, 0x87, 0x83, 0x7c, 0x78, 0x75, 0x75, 0x79, 0x7b, 0x7e, 0x81, 0x84, - 0x84, 0x82, 0x84, 0x82, 0x7e, 0x80, 0x80, 0x7e, 0x81, 0x7e, 0x7c, 0x7d, 0x7a, 0x79, 0x7d, 0x82, - 0x83, 0x86, 0x85, 0x85, 0x86, 0x83, 0x7c, 0x7c, 0x7d, 0x7a, 0x7a, 0x7d, 0x7e, 0x83, 0x87, 0x86, - 0x84, 0x82, 0x81, 0x7c, 0x7b, 0x7b, 0x79, 0x7e, 0x83, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x7b, 0x78, - 0x77, 0x78, 0x7a, 0x80, 0x83, 0x85, 0x84, 0x80, 0x7e, 0x80, 0x7e, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, - 0x7c, 0x7b, 0x7b, 0x7d, 0x7d, 0x7d, 0x82, 0x83, 0x82, 0x83, 0x80, 0x7e, 0x7e, 0x7a, 0x7b, 0x7b, - 0x7b, 0x7d, 0x7e, 0x84, 0x85, 0x82, 0x85, 0x83, 0x80, 0x7e, 0x7a, 0x79, 0x7d, 0x7d, 0x7c, 0x7e, - 0x81, 0x83, 0x82, 0x82, 0x83, 0x82, 0x82, 0x80, 0x7e, 0x81, 0x82, 0x82, 0x7e, 0x7b, 0x7c, 0x80, - 0x81, 0x81, 0x85, 0x85, 0x80, 0x7d, 0x7c, 0x7a, 0x7c, 0x7e, 0x7d, 0x7e, 0x81, 0x83, 0x83, 0x81, - 0x7e, 0x7b, 0x7a, 0x7c, 0x7c, 0x7c, 0x7e, 0x82, 0x83, 0x83, 0x81, 0x81, 0x80, 0x7c, 0x7a, 0x7b, - 0x7e, 0x81, 0x83, 0x83, 0x7d, 0x7c, 0x7a, 0x79, 0x7a, 0x7b, 0x81, 0x84, 0x86, 0x87, 0x84, 0x81, - 0x7b, 0x78, 0x75, 0x76, 0x7c, 0x81, 0x84, 0x86, 0x84, 0x85, 0x86, 0x82, 0x7e, 0x7d, 0x7b, 0x7a, - 0x7c, 0x7a, 0x78, 0x7a, 0x7c, 0x80, 0x82, 0x83, 0x86, 0x86, 0x83, 0x82, 0x7e, 0x7d, 0x7e, 0x7e, - 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x82, 0x86, 0x86, 0x85, 0x84, 0x82, 0x81, 0x7e, 0x7c, 0x7c, 0x7c, - 0x7e, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x80, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x81, 0x83, 0x81, - 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x81, 0x81, 0x82, 0x84, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, 0x7b, 0x7e, - 0x80, 0x82, 0x83, 0x82, 0x82, 0x80, 0x80, 0x80, 0x81, 0x83, 0x81, 0x80, 0x82, 0x81, 0x83, 0x84, - 0x81, 0x7e, 0x7d, 0x80, 0x80, 0x7c, 0x7e, 0x80, 0x7e, 0x80, 0x82, 0x7e, 0x7e, 0x7e, 0x7d, 0x7a, - 0x7b, 0x7e, 0x7d, 0x81, 0x82, 0x82, 0x83, 0x7e, 0x80, 0x80, 0x79, 0x78, 0x79, 0x78, 0x7b, 0x7d, - 0x82, 0x87, 0x84, 0x84, 0x83, 0x7d, 0x7d, 0x7b, 0x7c, 0x7d, 0x7c, 0x80, 0x83, 0x84, 0x86, 0x85, - 0x84, 0x84, 0x82, 0x80, 0x7e, 0x7d, 0x80, 0x80, 0x7b, 0x7e, 0x81, 0x80, 0x82, 0x82, 0x7e, 0x7d, - 0x80, 0x7d, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x7e, 0x7e, 0x7e, 0x7b, - 0x7b, 0x7a, 0x7a, 0x75, 0x70, 0x7d, 0x8a, 0x83, 0x82, 0x89, 0x80, 0x6b, 0x63, 0x75, 0x91, 0x9c, - 0x91, 0x75, 0x6f, 0x7e, 0x81, 0x79, 0x74, 0x75, 0x7b, 0x80, 0x90, 0x9c, 0x8a, 0x74, 0x71, 0x7b, - 0x7c, 0x72, 0x76, 0x89, 0x8d, 0x84, 0x7d, 0x81, 0x83, 0x72, 0x68, 0x78, 0x90, 0x96, 0x83, 0x70, - 0x7a, 0x8e, 0x8c, 0x73, 0x70, 0x7e, 0x7c, 0x71, 0x75, 0x88, 0x89, 0x78, 0x76, 0x8a, 0x99, 0x8e, - 0x7b, 0x74, 0x77, 0x73, 0x6e, 0x70, 0x72, 0x72, 0x85, 0xa2, 0xa9, 0x8e, 0x77, 0x7e, 0x7e, 0x6f, - 0x6a, 0x73, 0x79, 0x7c, 0x82, 0x87, 0x82, 0x76, 0x76, 0x83, 0x8f, 0x8d, 0x85, 0x7e, 0x79, 0x70, - 0x6d, 0x77, 0x82, 0x82, 0x86, 0x8f, 0x90, 0x85, 0x79, 0x79, 0x7b, 0x73, 0x6e, 0x76, 0x81, 0x88, - 0x8a, 0x85, 0x79, 0x73, 0x7b, 0x83, 0x82, 0x86, 0x8a, 0x7d, 0x71, 0x76, 0x83, 0x86, 0x7c, 0x78, - 0x78, 0x7b, 0x81, 0x89, 0x90, 0x86, 0x7a, 0x7d, 0x81, 0x7a, 0x77, 0x80, 0x88, 0x82, 0x73, 0x77, - 0x8a, 0x8a, 0x81, 0x81, 0x84, 0x82, 0x7b, 0x7a, 0x7d, 0x7a, 0x75, 0x74, 0x7b, 0x86, 0x8e, 0x8b, - 0x83, 0x80, 0x7c, 0x78, 0x78, 0x76, 0x7b, 0x85, 0x85, 0x83, 0x85, 0x89, 0x88, 0x7c, 0x75, 0x7d, - 0x83, 0x7c, 0x79, 0x7b, 0x81, 0x7e, 0x79, 0x80, 0x87, 0x83, 0x80, 0x7c, 0x7a, 0x7e, 0x7e, 0x80, - 0x83, 0x82, 0x81, 0x82, 0x83, 0x84, 0x82, 0x80, 0x7d, 0x7c, 0x83, 0x84, 0x81, 0x80, 0x82, 0x85, - 0x83, 0x80, 0x7e, 0x80, 0x80, 0x7c, 0x7d, 0x82, 0x86, 0x88, 0x87, 0x86, 0x82, 0x7c, 0x79, 0x79, - 0x80, 0x82, 0x7e, 0x80, 0x85, 0x86, 0x87, 0x87, 0x84, 0x81, 0x7e, 0x7c, 0x79, 0x7c, 0x83, 0x85, - 0x86, 0x84, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7a, 0x7c, 0x7e, 0x81, 0x82, 0x84, 0x86, 0x84, 0x81, - 0x7e, 0x7d, 0x7d, 0x81, 0x82, 0x80, 0x7d, 0x7c, 0x7d, 0x80, 0x83, 0x88, 0x88, 0x88, 0x87, 0x87, - 0x86, 0x7d, 0x72, 0x69, 0x64, 0x68, 0x76, 0x8e, 0x9e, 0x9f, 0x91, 0x7b, 0x70, 0x71, 0x75, 0x7e, - 0x82, 0x80, 0x80, 0x7d, 0x7c, 0x7e, 0x82, 0x85, 0x87, 0x89, 0x8e, 0x8f, 0x84, 0x73, 0x68, 0x60, - 0x63, 0x74, 0x89, 0x97, 0x9a, 0x92, 0x88, 0x7b, 0x6e, 0x6b, 0x6d, 0x6e, 0x71, 0x7d, 0x8e, 0x90, - 0x8f, 0x91, 0x8c, 0x85, 0x81, 0x82, 0x7b, 0x71, 0x6d, 0x6c, 0x6f, 0x76, 0x85, 0x96, 0x9c, 0x99, - 0x8e, 0x7a, 0x6b, 0x60, 0x5f, 0x66, 0x70, 0x83, 0x91, 0x95, 0x91, 0x89, 0x7d, 0x73, 0x70, 0x75, - 0x7b, 0x82, 0x86, 0x84, 0x82, 0x86, 0x87, 0x86, 0x84, 0x7e, 0x7c, 0x7d, 0x7d, 0x81, 0x81, 0x7c, - 0x7e, 0x81, 0x7c, 0x79, 0x76, 0x77, 0x76, 0x76, 0x7d, 0x88, 0x8a, 0x84, 0x7a, 0x75, 0x78, 0x7e, - 0x83, 0x89, 0x8e, 0x8d, 0x8b, 0x83, 0x79, 0x77, 0x7b, 0x83, 0x8b, 0x8f, 0x8d, 0x87, 0x7e, 0x75, - 0x73, 0x75, 0x7a, 0x82, 0x87, 0x89, 0x89, 0x84, 0x7b, 0x71, 0x6a, 0x6c, 0x73, 0x7b, 0x85, 0x8a, - 0x8b, 0x84, 0x7e, 0x80, 0x81, 0x83, 0x83, 0x7e, 0x7b, 0x78, 0x75, 0x6c, 0x60, 0x5d, 0x73, 0xa3, - 0xcd, 0xd0, 0xa2, 0x54, 0x1d, 0x23, 0x62, 0xb0, 0xcd, 0xb6, 0x89, 0x68, 0x67, 0x77, 0x78, 0x6c, - 0x69, 0x78, 0x94, 0xa5, 0xa3, 0x8b, 0x66, 0x4b, 0x50, 0x75, 0xa8, 0xc2, 0xac, 0x80, 0x60, 0x56, - 0x5a, 0x6c, 0x8a, 0x9d, 0x9c, 0x93, 0x8f, 0x8b, 0x73, 0x5a, 0x5d, 0x70, 0x7c, 0x8b, 0xa4, 0xa5, - 0x7c, 0x5d, 0x5f, 0x6d, 0x76, 0x8b, 0xa3, 0x9b, 0x7d, 0x70, 0x70, 0x6c, 0x6e, 0x81, 0x90, 0x8c, - 0x8b, 0x92, 0x8a, 0x77, 0x72, 0x78, 0x7e, 0x84, 0x8d, 0x8d, 0x7a, 0x6c, 0x6d, 0x72, 0x78, 0x87, - 0x96, 0x92, 0x85, 0x79, 0x70, 0x66, 0x61, 0x6a, 0x7b, 0x8c, 0x99, 0xa0, 0x9a, 0x88, 0x79, 0x69, - 0x5c, 0x5e, 0x6d, 0x84, 0x94, 0x94, 0x92, 0x8b, 0x80, 0x75, 0x71, 0x79, 0x83, 0x88, 0x89, 0x84, - 0x7e, 0x7b, 0x7a, 0x78, 0x7b, 0x82, 0x82, 0x82, 0x81, 0x7d, 0x7c, 0x7c, 0x7e, 0x82, 0x83, 0x82, - 0x82, 0x7a, 0x76, 0x79, 0x7e, 0x86, 0x8b, 0x8c, 0x86, 0x75, 0x60, 0x56, 0x60, 0x82, 0xb3, 0xcd, - 0xb5, 0x7a, 0x40, 0x27, 0x44, 0x86, 0xc0, 0xcf, 0xad, 0x73, 0x4e, 0x4d, 0x69, 0x85, 0x89, 0x81, - 0x7e, 0x8d, 0x9e, 0x9c, 0x81, 0x58, 0x42, 0x52, 0x7e, 0xac, 0xba, 0xab, 0x87, 0x62, 0x58, 0x63, - 0x7d, 0x97, 0x98, 0x88, 0x78, 0x70, 0x73, 0x76, 0x7c, 0x87, 0x8d, 0x93, 0x93, 0x88, 0x71, 0x5c, - 0x55, 0x5e, 0x75, 0x92, 0xab, 0xb1, 0x99, 0x74, 0x5c, 0x52, 0x59, 0x6c, 0x84, 0x97, 0x9d, 0x9c, - 0x97, 0x8a, 0x77, 0x6d, 0x68, 0x66, 0x69, 0x75, 0x83, 0x8a, 0x91, 0x95, 0x96, 0x92, 0x8b, 0x80, - 0x6e, 0x5e, 0x56, 0x5d, 0x6d, 0x88, 0xa6, 0xb1, 0xa9, 0x9c, 0x88, 0x6b, 0x54, 0x4c, 0x54, 0x65, - 0x7b, 0x97, 0xae, 0xb3, 0xa9, 0x91, 0x75, 0x64, 0x5b, 0x5a, 0x62, 0x6f, 0x83, 0x9a, 0xa8, 0xa7, - 0x9e, 0x8d, 0x76, 0x64, 0x5b, 0x5a, 0x61, 0x73, 0x8f, 0xa6, 0xa3, 0x80, 0x5b, 0x5e, 0x88, 0xb3, - 0xb6, 0x7d, 0x36, 0x1e, 0x53, 0xb6, 0xef, 0xdf, 0x9f, 0x5d, 0x3a, 0x3d, 0x55, 0x67, 0x74, 0x8a, - 0xaa, 0xc0, 0xbb, 0x9d, 0x6d, 0x40, 0x27, 0x33, 0x61, 0xa2, 0xca, 0xca, 0xac, 0x82, 0x64, 0x5a, - 0x5f, 0x6c, 0x81, 0x91, 0x91, 0x88, 0x88, 0x88, 0x7e, 0x71, 0x72, 0x7d, 0x83, 0x89, 0x92, 0x89, - 0x6b, 0x57, 0x65, 0x7c, 0x87, 0x90, 0x9a, 0x94, 0x7d, 0x71, 0x74, 0x79, 0x7c, 0x84, 0x8b, 0x87, - 0x7c, 0x7c, 0x81, 0x81, 0x86, 0x90, 0x94, 0x8c, 0x80, 0x76, 0x6e, 0x63, 0x64, 0x77, 0x8b, 0x98, - 0x9f, 0x99, 0x86, 0x6a, 0x5b, 0x5f, 0x69, 0x7a, 0x91, 0x9c, 0x96, 0x89, 0x7a, 0x6c, 0x6d, 0x77, - 0x87, 0x9b, 0x9a, 0x8b, 0x77, 0x6e, 0x73, 0x7c, 0x83, 0x85, 0x88, 0x8a, 0x7d, 0x71, 0x72, 0x79, - 0x81, 0x84, 0x88, 0x8b, 0x88, 0x80, 0x75, 0x71, 0x76, 0x7e, 0x86, 0x8c, 0x93, 0x92, 0x85, 0x71, - 0x5f, 0x55, 0x5b, 0x6f, 0x83, 0x91, 0x9d, 0xa6, 0x9e, 0x83, 0x6c, 0x63, 0x6c, 0x85, 0x99, 0x9b, - 0x8a, 0x76, 0x6b, 0x69, 0x6f, 0x7e, 0x90, 0x99, 0x95, 0x87, 0x73, 0x61, 0x5a, 0x5b, 0x65, 0x79, - 0x91, 0x9f, 0xa3, 0x98, 0x84, 0x73, 0x6a, 0x6b, 0x7a, 0x8f, 0x96, 0x93, 0x8a, 0x7e, 0x72, 0x6e, - 0x78, 0x87, 0x8b, 0x86, 0x82, 0x79, 0x6a, 0x60, 0x6a, 0x7a, 0x86, 0x92, 0x9c, 0x96, 0x83, 0x74, - 0x6f, 0x6c, 0x6a, 0x75, 0x8a, 0x93, 0x95, 0x99, 0x95, 0x84, 0x7a, 0x78, 0x76, 0x77, 0x77, 0x7a, - 0x7b, 0x7a, 0x7d, 0x87, 0x8b, 0x88, 0x85, 0x80, 0x78, 0x74, 0x73, 0x74, 0x77, 0x7d, 0x88, 0x90, - 0x90, 0x8f, 0x86, 0x78, 0x6d, 0x6d, 0x76, 0x80, 0x82, 0x82, 0x80, 0x7b, 0x7d, 0x81, 0x84, 0x8a, - 0x88, 0x80, 0x7c, 0x7b, 0x7a, 0x7b, 0x83, 0x8a, 0x8c, 0x8b, 0x89, 0x81, 0x74, 0x70, 0x75, 0x7a, - 0x81, 0x86, 0x86, 0x83, 0x7c, 0x76, 0x74, 0x77, 0x7d, 0x84, 0x89, 0x8a, 0x88, 0x80, 0x7a, 0x78, - 0x79, 0x7b, 0x7b, 0x79, 0x75, 0x76, 0x89, 0x9d, 0xa3, 0x98, 0x7a, 0x57, 0x49, 0x61, 0x8b, 0xb3, - 0xc0, 0xa4, 0x74, 0x50, 0x4b, 0x5c, 0x75, 0x8b, 0x93, 0x90, 0x8b, 0x86, 0x7e, 0x75, 0x6d, 0x68, - 0x6a, 0x78, 0x8e, 0x9d, 0xa0, 0x96, 0x7d, 0x65, 0x5c, 0x66, 0x79, 0x8c, 0x94, 0x8a, 0x7c, 0x7a, - 0x7b, 0x82, 0x87, 0x84, 0x81, 0x7a, 0x74, 0x74, 0x73, 0x76, 0x7d, 0x87, 0x90, 0x91, 0x8f, 0x86, - 0x77, 0x69, 0x61, 0x64, 0x71, 0x83, 0x92, 0x99, 0x95, 0x88, 0x79, 0x6f, 0x71, 0x77, 0x7b, 0x7c, - 0x78, 0x78, 0x80, 0x86, 0x87, 0x83, 0x7d, 0x7c, 0x81, 0x84, 0x80, 0x7c, 0x7b, 0x7b, 0x7d, 0x7e, - 0x7e, 0x83, 0x88, 0x87, 0x82, 0x78, 0x74, 0x75, 0x7b, 0x89, 0x8c, 0x83, 0x7d, 0x7a, 0x7a, 0x80, - 0x83, 0x85, 0x85, 0x80, 0x7a, 0x74, 0x61, 0x3f, 0x2b, 0x51, 0xa5, 0xe5, 0xee, 0xcc, 0x8f, 0x47, - 0x26, 0x48, 0x8d, 0xbb, 0xc4, 0xb2, 0x92, 0x64, 0x43, 0x49, 0x68, 0x89, 0x97, 0x90, 0x82, 0x7a, - 0x71, 0x58, 0x4b, 0x5f, 0x81, 0x9a, 0xb6, 0xcf, 0xbb, 0x7a, 0x45, 0x3d, 0x4c, 0x66, 0x97, 0xcf, - 0xdc, 0xb4, 0x81, 0x5f, 0x4a, 0x41, 0x55, 0x84, 0xa2, 0xa3, 0xa3, 0x9e, 0x81, 0x5b, 0x4f, 0x5a, - 0x64, 0x75, 0x93, 0xab, 0xa5, 0x8d, 0x79, 0x6c, 0x62, 0x6e, 0x8c, 0xa3, 0xa2, 0x93, 0x86, 0x74, - 0x68, 0x6d, 0x82, 0x91, 0x8b, 0x81, 0x78, 0x67, 0x5f, 0x6b, 0x7d, 0x8a, 0x90, 0x95, 0x94, 0x87, - 0x77, 0x6f, 0x6b, 0x6c, 0x7e, 0x94, 0x9f, 0x9d, 0x8d, 0x7b, 0x69, 0x5d, 0x66, 0x7d, 0x8d, 0x90, - 0x8b, 0x84, 0x7e, 0x84, 0x8c, 0x8d, 0x84, 0x72, 0x69, 0x6d, 0x7a, 0x8a, 0x99, 0x9b, 0x8d, 0x7c, - 0x71, 0x6b, 0x6b, 0x76, 0x80, 0x82, 0x81, 0x80, 0x82, 0x83, 0x83, 0x81, 0x7c, 0x76, 0x77, 0x7d, - 0x83, 0x85, 0x84, 0x7a, 0x6b, 0x62, 0x67, 0x78, 0x94, 0xaf, 0xb8, 0xa4, 0x79, 0x4c, 0x38, 0x4a, - 0x79, 0xae, 0xc5, 0xb8, 0x8d, 0x61, 0x51, 0x5b, 0x71, 0x85, 0x87, 0x84, 0x83, 0x86, 0x8c, 0x87, - 0x76, 0x6c, 0x70, 0x7d, 0x92, 0xa0, 0x9c, 0x8c, 0x70, 0x58, 0x54, 0x66, 0x86, 0xa2, 0xb0, 0xa6, - 0x8b, 0x6d, 0x59, 0x59, 0x68, 0x7a, 0x8e, 0x9a, 0x99, 0x8b, 0x7c, 0x75, 0x71, 0x6f, 0x71, 0x77, - 0x79, 0x7c, 0x83, 0x85, 0x83, 0x80, 0x84, 0x89, 0x89, 0x85, 0x7a, 0x6c, 0x63, 0x64, 0x72, 0x87, - 0x98, 0xa3, 0xa2, 0x90, 0x75, 0x5e, 0x56, 0x62, 0x78, 0x92, 0xa0, 0x9e, 0x92, 0x7b, 0x65, 0x5d, - 0x5e, 0x6a, 0x7c, 0x92, 0x9d, 0x97, 0x8a, 0x80, 0x77, 0x78, 0x87, 0x93, 0x8d, 0x78, 0x5f, 0x4e, - 0x52, 0x60, 0x5e, 0x56, 0x73, 0xb5, 0xe4, 0xd9, 0xb9, 0x87, 0x42, 0x22, 0x4d, 0xa4, 0xd3, 0xd5, - 0xc9, 0x9f, 0x52, 0x1a, 0x27, 0x59, 0x85, 0x99, 0x9d, 0x95, 0x82, 0x68, 0x55, 0x5d, 0x71, 0x78, - 0x87, 0xa9, 0xc2, 0xaa, 0x78, 0x62, 0x5f, 0x50, 0x5b, 0x97, 0xc7, 0xc0, 0xa1, 0x8c, 0x6c, 0x45, - 0x40, 0x68, 0x91, 0x98, 0x95, 0x97, 0x82, 0x58, 0x45, 0x57, 0x6a, 0x7b, 0x96, 0xa8, 0xa0, 0x86, - 0x74, 0x6d, 0x6d, 0x76, 0x89, 0x9d, 0xa2, 0x97, 0x89, 0x77, 0x66, 0x61, 0x70, 0x85, 0x95, 0x9b, - 0x94, 0x82, 0x67, 0x58, 0x59, 0x69, 0x7e, 0x93, 0x9c, 0x96, 0x89, 0x7d, 0x78, 0x77, 0x7b, 0x84, - 0x8a, 0x86, 0x7d, 0x74, 0x69, 0x63, 0x6f, 0x89, 0x9e, 0xa7, 0x9d, 0x83, 0x5e, 0x41, 0x41, 0x61, - 0x95, 0xc1, 0xd7, 0xc4, 0x8b, 0x49, 0x22, 0x28, 0x5b, 0x9d, 0xcf, 0xda, 0xba, 0x86, 0x55, 0x3c, - 0x42, 0x5d, 0x85, 0xa9, 0xb9, 0xb3, 0x98, 0x73, 0x57, 0x46, 0x45, 0x53, 0x6b, 0x8e, 0xb5, 0xce, - 0xcd, 0xa9, 0x68, 0x2a, 0x1f, 0x52, 0xa0, 0xde, 0xe5, 0xb4, 0x6d, 0x3a, 0x37, 0x55, 0x75, 0x8f, - 0x9d, 0xa1, 0x97, 0x7e, 0x67, 0x5b, 0x5f, 0x6f, 0x83, 0x91, 0x9e, 0xa7, 0x9d, 0x7d, 0x5a, 0x4c, - 0x5a, 0x7e, 0xa9, 0xbf, 0xb8, 0x9c, 0x75, 0x56, 0x49, 0x51, 0x6f, 0x99, 0xb1, 0xb0, 0x9d, 0x82, - 0x68, 0x5b, 0x5e, 0x6c, 0x7c, 0x8a, 0x92, 0x8f, 0x7c, 0x6c, 0x68, 0x6f, 0x7c, 0x8f, 0x9c, 0x9b, - 0x90, 0x81, 0x72, 0x66, 0x65, 0x74, 0x89, 0x93, 0x8e, 0x86, 0x7c, 0x79, 0x78, 0x79, 0x84, 0x8f, - 0x95, 0x8f, 0x7e, 0x6f, 0x6b, 0x6c, 0x70, 0x7d, 0x8f, 0x9a, 0x99, 0x91, 0x87, 0x7a, 0x74, 0x6f, - 0x68, 0x5c, 0x53, 0x56, 0x55, 0x4e, 0x5f, 0x9b, 0xd7, 0xe9, 0xcf, 0x99, 0x56, 0x2b, 0x3d, 0x85, - 0xc3, 0xd5, 0xcb, 0xae, 0x72, 0x33, 0x23, 0x44, 0x6f, 0x8e, 0x9e, 0xa1, 0x91, 0x75, 0x5c, 0x55, - 0x59, 0x5f, 0x72, 0x96, 0xb9, 0xb9, 0x9a, 0x80, 0x6d, 0x57, 0x4f, 0x73, 0xa3, 0xb2, 0xaa, 0x9e, - 0x89, 0x62, 0x4c, 0x5c, 0x7a, 0x86, 0x89, 0x92, 0x89, 0x6c, 0x5a, 0x61, 0x6b, 0x6f, 0x82, 0x9c, - 0xa4, 0x98, 0x87, 0x7a, 0x6b, 0x60, 0x6d, 0x8c, 0x9d, 0xa1, 0x9f, 0x91, 0x79, 0x65, 0x63, 0x6e, - 0x7a, 0x86, 0x90, 0x8c, 0x7b, 0x6f, 0x6a, 0x68, 0x6c, 0x7b, 0x8d, 0x93, 0x8f, 0x88, 0x7b, 0x6f, - 0x6e, 0x7b, 0x8d, 0x94, 0x92, 0x88, 0x77, 0x6c, 0x6c, 0x76, 0x7d, 0x83, 0x83, 0x82, 0x80, 0x7c, - 0x7c, 0x7d, 0x80, 0x82, 0x86, 0x88, 0x84, 0x81, 0x7d, 0x79, 0x79, 0x7d, 0x88, 0x93, 0x95, 0x8e, - 0x80, 0x72, 0x6b, 0x6b, 0x6f, 0x71, 0x6d, 0x71, 0x84, 0x9f, 0xb4, 0xac, 0x86, 0x56, 0x3d, 0x4b, - 0x7e, 0xac, 0xbe, 0xb4, 0x94, 0x73, 0x5c, 0x54, 0x5b, 0x6e, 0x8b, 0x9f, 0xa2, 0x98, 0x88, 0x76, - 0x6a, 0x5e, 0x5b, 0x66, 0x7d, 0x98, 0xa7, 0xa2, 0x8b, 0x71, 0x60, 0x61, 0x6f, 0x80, 0x8c, 0x93, - 0x8f, 0x7e, 0x72, 0x72, 0x79, 0x82, 0x8c, 0x93, 0x8a, 0x78, 0x71, 0x6f, 0x6b, 0x6b, 0x7a, 0x8d, - 0x93, 0x90, 0x86, 0x78, 0x68, 0x65, 0x71, 0x80, 0x87, 0x8e, 0x91, 0x8a, 0x7e, 0x7c, 0x81, 0x85, - 0x8b, 0x8f, 0x8d, 0x83, 0x7b, 0x76, 0x72, 0x71, 0x76, 0x7c, 0x80, 0x83, 0x84, 0x7e, 0x74, 0x75, - 0x7a, 0x79, 0x75, 0x7e, 0x90, 0x9c, 0x9d, 0x91, 0x7c, 0x67, 0x5d, 0x61, 0x60, 0x51, 0x4b, 0x73, - 0xbb, 0xe5, 0xdc, 0xb0, 0x6a, 0x29, 0x1a, 0x49, 0x98, 0xc8, 0xd1, 0xc2, 0x90, 0x53, 0x2b, 0x34, - 0x5e, 0x83, 0x9a, 0xa1, 0x9e, 0x8f, 0x73, 0x60, 0x5d, 0x66, 0x6d, 0x81, 0xa9, 0xc3, 0xb0, 0x86, - 0x68, 0x54, 0x3f, 0x4c, 0x88, 0xbb, 0xbd, 0xa9, 0x96, 0x72, 0x47, 0x42, 0x6b, 0x8a, 0x8a, 0x92, - 0xa1, 0x8d, 0x66, 0x5b, 0x67, 0x67, 0x67, 0x84, 0xa3, 0xa1, 0x90, 0x89, 0x7c, 0x62, 0x5e, 0x76, - 0x8f, 0x98, 0x9a, 0x99, 0x88, 0x6f, 0x66, 0x6b, 0x6f, 0x75, 0x87, 0x94, 0x8f, 0x87, 0x82, 0x77, - 0x69, 0x68, 0x75, 0x83, 0x8a, 0x8d, 0x8b, 0x82, 0x78, 0x7b, 0x86, 0x8c, 0x89, 0x82, 0x76, 0x6a, - 0x67, 0x74, 0x89, 0x96, 0x95, 0x89, 0x76, 0x67, 0x62, 0x6b, 0x7b, 0x89, 0x8f, 0x90, 0x8f, 0x90, - 0x96, 0x99, 0x8f, 0x80, 0x70, 0x64, 0x60, 0x5e, 0x63, 0x6e, 0x7a, 0x92, 0xac, 0xb7, 0xad, 0x8d, - 0x68, 0x50, 0x4d, 0x61, 0x7c, 0x91, 0x9d, 0x9d, 0x95, 0x88, 0x79, 0x70, 0x71, 0x76, 0x7c, 0x7e, - 0x7c, 0x7d, 0x7d, 0x7b, 0x79, 0x79, 0x7b, 0x81, 0x88, 0x8c, 0x8d, 0x83, 0x74, 0x6d, 0x6b, 0x71, - 0x7d, 0x8b, 0x95, 0x92, 0x88, 0x7c, 0x6e, 0x66, 0x6b, 0x7a, 0x8c, 0x99, 0x9f, 0x99, 0x85, 0x6e, - 0x5d, 0x59, 0x64, 0x79, 0x8d, 0x95, 0x91, 0x87, 0x7b, 0x76, 0x76, 0x7e, 0x87, 0x88, 0x86, 0x7e, - 0x79, 0x74, 0x73, 0x79, 0x87, 0x95, 0x98, 0x92, 0x86, 0x79, 0x6e, 0x66, 0x69, 0x72, 0x84, 0x92, - 0x97, 0x92, 0x84, 0x73, 0x68, 0x68, 0x74, 0x86, 0x94, 0x96, 0x92, 0x85, 0x6a, 0x40, 0x22, 0x3c, - 0x8c, 0xd5, 0xf1, 0xdd, 0x9e, 0x53, 0x24, 0x30, 0x68, 0xa3, 0xc6, 0xc8, 0xa7, 0x74, 0x4a, 0x3b, - 0x45, 0x5e, 0x81, 0x9c, 0xae, 0xaf, 0x9e, 0x7e, 0x5b, 0x45, 0x43, 0x56, 0x81, 0xb7, 0xd4, 0xc1, - 0x9a, 0x72, 0x50, 0x40, 0x51, 0x7d, 0x9d, 0xa4, 0xa2, 0x95, 0x7c, 0x63, 0x62, 0x70, 0x79, 0x83, - 0x93, 0x99, 0x8d, 0x78, 0x6e, 0x68, 0x5d, 0x60, 0x78, 0x96, 0xa1, 0xa3, 0x9f, 0x8b, 0x6f, 0x5f, - 0x66, 0x77, 0x8a, 0x9c, 0xa1, 0x93, 0x7e, 0x6e, 0x6b, 0x6c, 0x75, 0x86, 0x91, 0x92, 0x8a, 0x7b, - 0x6d, 0x63, 0x61, 0x6f, 0x86, 0x99, 0xa4, 0xa4, 0x98, 0x7d, 0x66, 0x5d, 0x5d, 0x6b, 0x81, 0x92, - 0x99, 0x92, 0x85, 0x7a, 0x77, 0x7b, 0x86, 0x8d, 0x8c, 0x86, 0x81, 0x7a, 0x78, 0x7a, 0x81, 0x86, - 0x8b, 0x8d, 0x8a, 0x7c, 0x69, 0x59, 0x59, 0x72, 0x96, 0xb3, 0xb6, 0x9b, 0x73, 0x55, 0x55, 0x6e, - 0x8c, 0x9a, 0x95, 0x86, 0x78, 0x75, 0x77, 0x79, 0x7c, 0x82, 0x85, 0x86, 0x86, 0x87, 0x83, 0x7c, - 0x71, 0x67, 0x69, 0x75, 0x89, 0x9a, 0x9c, 0x8f, 0x7a, 0x69, 0x65, 0x6e, 0x7e, 0x8c, 0x91, 0x8b, - 0x82, 0x7b, 0x7b, 0x7a, 0x7b, 0x7d, 0x7c, 0x78, 0x77, 0x79, 0x84, 0x89, 0x85, 0x7c, 0x6f, 0x68, - 0x6e, 0x80, 0x93, 0x9d, 0x98, 0x89, 0x73, 0x65, 0x66, 0x70, 0x7d, 0x8b, 0x93, 0x91, 0x89, 0x81, - 0x7d, 0x79, 0x77, 0x78, 0x7b, 0x7e, 0x83, 0x88, 0x8b, 0x87, 0x83, 0x80, 0x7b, 0x78, 0x74, 0x73, - 0x73, 0x77, 0x7e, 0x8d, 0x9b, 0xa1, 0x97, 0x77, 0x4a, 0x28, 0x32, 0x6f, 0xc3, 0xf7, 0xee, 0xb2, - 0x63, 0x2f, 0x2b, 0x4e, 0x7e, 0xa6, 0xb8, 0xaf, 0x95, 0x7a, 0x6d, 0x67, 0x5f, 0x5e, 0x6a, 0x7e, - 0x90, 0x99, 0x97, 0x84, 0x67, 0x53, 0x56, 0x74, 0x99, 0xb6, 0xbc, 0xa0, 0x74, 0x50, 0x4a, 0x5a, - 0x77, 0x98, 0xaf, 0xb0, 0x9c, 0x87, 0x73, 0x63, 0x56, 0x57, 0x68, 0x82, 0x99, 0xa9, 0xa9, 0x95, - 0x74, 0x59, 0x4c, 0x52, 0x6b, 0x8e, 0xa6, 0xa8, 0x9b, 0x85, 0x72, 0x66, 0x65, 0x6f, 0x83, 0x95, - 0xa0, 0xa2, 0x96, 0x83, 0x6f, 0x64, 0x66, 0x73, 0x87, 0x92, 0x92, 0x85, 0x74, 0x69, 0x68, 0x74, - 0x88, 0x98, 0x9c, 0x95, 0x86, 0x75, 0x6c, 0x68, 0x69, 0x73, 0x7e, 0x89, 0x8f, 0x92, 0x92, 0x8e, - 0x87, 0x78, 0x70, 0x6b, 0x71, 0x80, 0x93, 0x9e, 0x94, 0x77, 0x58, 0x54, 0x72, 0xa0, 0xc0, 0xb3, - 0x83, 0x4c, 0x35, 0x50, 0x85, 0xb1, 0xbd, 0xa6, 0x7c, 0x60, 0x61, 0x6c, 0x76, 0x79, 0x74, 0x72, - 0x7d, 0x92, 0xa2, 0xa1, 0x8b, 0x68, 0x51, 0x52, 0x6b, 0x91, 0xad, 0xb2, 0x9e, 0x7e, 0x65, 0x5e, - 0x69, 0x7b, 0x88, 0x8a, 0x86, 0x84, 0x86, 0x8a, 0x8a, 0x82, 0x74, 0x6d, 0x70, 0x7d, 0x8e, 0x94, - 0x8d, 0x7c, 0x6c, 0x69, 0x70, 0x7c, 0x8c, 0x90, 0x8b, 0x81, 0x77, 0x72, 0x71, 0x77, 0x80, 0x83, - 0x83, 0x84, 0x87, 0x89, 0x89, 0x86, 0x7b, 0x73, 0x71, 0x74, 0x7d, 0x86, 0x8a, 0x88, 0x84, 0x84, - 0x80, 0x7a, 0x74, 0x73, 0x76, 0x79, 0x80, 0x8a, 0x92, 0x94, 0x8e, 0x81, 0x67, 0x45, 0x2b, 0x35, - 0x6d, 0xb5, 0xe1, 0xdf, 0xb9, 0x77, 0x38, 0x25, 0x4c, 0x8b, 0xb6, 0xc7, 0xbf, 0xa1, 0x74, 0x59, - 0x54, 0x54, 0x57, 0x67, 0x86, 0x9f, 0xa8, 0xa8, 0x9a, 0x77, 0x4f, 0x3e, 0x4d, 0x6b, 0x8c, 0xab, - 0xb8, 0xa2, 0x7d, 0x66, 0x5b, 0x5a, 0x64, 0x7c, 0x8e, 0x91, 0x96, 0x9d, 0x98, 0x88, 0x78, 0x6b, - 0x63, 0x66, 0x76, 0x8e, 0x99, 0x96, 0x8e, 0x82, 0x71, 0x6a, 0x6b, 0x73, 0x7a, 0x82, 0x8b, 0x8d, - 0x89, 0x82, 0x7a, 0x74, 0x72, 0x78, 0x82, 0x8c, 0x90, 0x91, 0x8b, 0x80, 0x73, 0x6b, 0x6a, 0x72, - 0x83, 0x91, 0x9d, 0x9e, 0x91, 0x7b, 0x66, 0x5e, 0x60, 0x6b, 0x80, 0x96, 0xa3, 0x9f, 0x8e, 0x7a, - 0x6b, 0x66, 0x66, 0x6e, 0x7b, 0x8b, 0x98, 0x9c, 0x99, 0x8e, 0x81, 0x6d, 0x55, 0x4b, 0x57, 0x81, - 0xaf, 0xc9, 0xc3, 0x98, 0x61, 0x3d, 0x41, 0x68, 0x94, 0xae, 0xad, 0x97, 0x7d, 0x70, 0x70, 0x74, - 0x77, 0x77, 0x77, 0x7a, 0x82, 0x8e, 0x93, 0x8f, 0x83, 0x72, 0x66, 0x66, 0x73, 0x89, 0x9a, 0x9d, - 0x92, 0x7e, 0x6b, 0x5f, 0x62, 0x72, 0x84, 0x90, 0x91, 0x8b, 0x87, 0x86, 0x87, 0x86, 0x7d, 0x72, - 0x6a, 0x6d, 0x78, 0x89, 0x94, 0x98, 0x94, 0x87, 0x77, 0x6b, 0x67, 0x6e, 0x76, 0x7e, 0x87, 0x8c, - 0x8c, 0x87, 0x82, 0x7d, 0x76, 0x70, 0x6e, 0x75, 0x80, 0x88, 0x8c, 0x8a, 0x85, 0x7e, 0x7a, 0x75, - 0x77, 0x7c, 0x82, 0x83, 0x82, 0x7e, 0x7a, 0x77, 0x78, 0x7c, 0x7e, 0x82, 0x86, 0x8a, 0x88, 0x7e, - 0x71, 0x65, 0x62, 0x67, 0x75, 0x88, 0x94, 0x92, 0x82, 0x72, 0x6d, 0x74, 0x85, 0x97, 0x99, 0x8a, - 0x77, 0x6d, 0x73, 0x7e, 0x8f, 0x97, 0x8b, 0x73, 0x63, 0x65, 0x75, 0x8a, 0x9b, 0x9c, 0x90, 0x7e, - 0x73, 0x72, 0x78, 0x86, 0x8d, 0x86, 0x78, 0x74, 0x74, 0x78, 0x83, 0x89, 0x85, 0x7c, 0x79, 0x7e, - 0x85, 0x89, 0x8e, 0x89, 0x7b, 0x74, 0x71, 0x73, 0x77, 0x82, 0x8a, 0x86, 0x7c, 0x77, 0x75, 0x73, - 0x75, 0x7e, 0x88, 0x88, 0x86, 0x86, 0x83, 0x7e, 0x7c, 0x7a, 0x75, 0x75, 0x7c, 0x86, 0x8b, 0x8a, - 0x8a, 0x87, 0x7c, 0x74, 0x71, 0x77, 0x83, 0x8c, 0x90, 0x8b, 0x81, 0x75, 0x71, 0x72, 0x76, 0x80, - 0x84, 0x84, 0x80, 0x7d, 0x7d, 0x7c, 0x80, 0x83, 0x86, 0x88, 0x82, 0x7a, 0x6e, 0x67, 0x67, 0x6d, - 0x7e, 0x8d, 0x93, 0x8d, 0x82, 0x77, 0x72, 0x78, 0x85, 0x90, 0x8f, 0x82, 0x75, 0x6d, 0x73, 0x83, - 0x91, 0x96, 0x8a, 0x7c, 0x76, 0x76, 0x80, 0x88, 0x88, 0x83, 0x7c, 0x7a, 0x7d, 0x86, 0x90, 0x93, - 0x88, 0x76, 0x67, 0x61, 0x66, 0x74, 0x85, 0x91, 0x96, 0x93, 0x89, 0x82, 0x7d, 0x7c, 0x7a, 0x74, - 0x6f, 0x71, 0x78, 0x86, 0x91, 0x95, 0x91, 0x86, 0x7a, 0x73, 0x73, 0x77, 0x7a, 0x7c, 0x7c, 0x7b, - 0x7d, 0x83, 0x8b, 0x90, 0x8f, 0x8a, 0x81, 0x78, 0x75, 0x78, 0x7c, 0x80, 0x81, 0x80, 0x83, 0x86, - 0x8b, 0x8d, 0x89, 0x82, 0x78, 0x72, 0x6f, 0x71, 0x78, 0x83, 0x8a, 0x8d, 0x8b, 0x82, 0x76, 0x69, - 0x65, 0x6b, 0x76, 0x85, 0x8d, 0x89, 0x81, 0x7b, 0x79, 0x7b, 0x85, 0x8d, 0x8d, 0x84, 0x79, 0x73, - 0x71, 0x74, 0x7e, 0x85, 0x81, 0x7a, 0x7c, 0x85, 0x8e, 0x94, 0x94, 0x8b, 0x77, 0x69, 0x6a, 0x77, - 0x86, 0x8e, 0x8f, 0x86, 0x76, 0x6f, 0x79, 0x85, 0x88, 0x87, 0x81, 0x73, 0x6d, 0x75, 0x83, 0x89, - 0x8b, 0x8c, 0x87, 0x7d, 0x7b, 0x83, 0x84, 0x7c, 0x75, 0x71, 0x6e, 0x71, 0x83, 0x95, 0x95, 0x8d, - 0x84, 0x79, 0x71, 0x6f, 0x77, 0x81, 0x84, 0x84, 0x85, 0x82, 0x81, 0x88, 0x8c, 0x86, 0x7c, 0x77, - 0x77, 0x79, 0x82, 0x8d, 0x92, 0x8b, 0x82, 0x7b, 0x76, 0x76, 0x7c, 0x80, 0x7e, 0x7b, 0x78, 0x7a, - 0x7d, 0x84, 0x89, 0x87, 0x7e, 0x78, 0x78, 0x79, 0x7d, 0x83, 0x83, 0x7c, 0x73, 0x6e, 0x75, 0x82, - 0x8e, 0x91, 0x88, 0x79, 0x6e, 0x6d, 0x77, 0x84, 0x8c, 0x8c, 0x86, 0x7e, 0x7c, 0x82, 0x88, 0x89, - 0x80, 0x74, 0x6b, 0x6d, 0x7a, 0x8d, 0x97, 0x94, 0x8b, 0x7e, 0x73, 0x76, 0x80, 0x8b, 0x8e, 0x88, - 0x7c, 0x73, 0x70, 0x73, 0x7a, 0x82, 0x84, 0x81, 0x7c, 0x7d, 0x84, 0x8a, 0x8a, 0x85, 0x7a, 0x74, - 0x75, 0x79, 0x82, 0x8a, 0x8e, 0x88, 0x7d, 0x77, 0x77, 0x79, 0x7e, 0x82, 0x7e, 0x7b, 0x7d, 0x84, - 0x8b, 0x8e, 0x8d, 0x87, 0x7d, 0x77, 0x78, 0x80, 0x85, 0x87, 0x85, 0x7e, 0x78, 0x76, 0x7d, 0x85, - 0x89, 0x87, 0x81, 0x79, 0x73, 0x76, 0x7d, 0x86, 0x8a, 0x88, 0x80, 0x70, 0x68, 0x6d, 0x77, 0x82, - 0x89, 0x8c, 0x85, 0x79, 0x73, 0x76, 0x7e, 0x89, 0x94, 0x91, 0x81, 0x73, 0x6a, 0x67, 0x6d, 0x7c, - 0x87, 0x88, 0x84, 0x81, 0x82, 0x84, 0x89, 0x8a, 0x83, 0x77, 0x6e, 0x6e, 0x7a, 0x8b, 0x94, 0x95, - 0x8e, 0x7b, 0x6e, 0x6f, 0x7a, 0x83, 0x86, 0x85, 0x7d, 0x75, 0x79, 0x85, 0x89, 0x88, 0x83, 0x77, - 0x6c, 0x68, 0x73, 0x82, 0x89, 0x8c, 0x8c, 0x86, 0x7d, 0x7e, 0x84, 0x81, 0x79, 0x77, 0x76, 0x73, - 0x79, 0x87, 0x8c, 0x85, 0x7c, 0x78, 0x72, 0x70, 0x7c, 0x89, 0x8e, 0x8b, 0x84, 0x7c, 0x77, 0x7a, - 0x85, 0x8a, 0x88, 0x84, 0x7d, 0x77, 0x74, 0x79, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x83, 0x87, - 0x85, 0x80, 0x7a, 0x7a, 0x7d, 0x84, 0x86, 0x82, 0x7b, 0x75, 0x76, 0x7a, 0x7d, 0x81, 0x82, 0x81, - 0x7c, 0x7b, 0x80, 0x85, 0x87, 0x83, 0x7a, 0x71, 0x71, 0x77, 0x80, 0x86, 0x87, 0x85, 0x7e, 0x79, - 0x7a, 0x7e, 0x83, 0x83, 0x80, 0x7a, 0x75, 0x75, 0x7e, 0x8b, 0x90, 0x8d, 0x83, 0x75, 0x70, 0x72, - 0x7c, 0x86, 0x8b, 0x89, 0x83, 0x7d, 0x7b, 0x80, 0x80, 0x7a, 0x73, 0x71, 0x75, 0x7c, 0x86, 0x8d, - 0x8e, 0x88, 0x7e, 0x76, 0x6f, 0x6f, 0x73, 0x79, 0x81, 0x84, 0x85, 0x85, 0x84, 0x84, 0x84, 0x7e, - 0x76, 0x72, 0x73, 0x79, 0x82, 0x8a, 0x8d, 0x8b, 0x85, 0x81, 0x7e, 0x7e, 0x81, 0x81, 0x7b, 0x75, - 0x76, 0x7b, 0x83, 0x8e, 0x93, 0x93, 0x8e, 0x84, 0x7b, 0x73, 0x70, 0x71, 0x73, 0x76, 0x79, 0x7d, - 0x81, 0x81, 0x81, 0x82, 0x81, 0x82, 0x87, 0x86, 0x81, 0x7b, 0x76, 0x74, 0x75, 0x7b, 0x83, 0x84, - 0x83, 0x7d, 0x7a, 0x7c, 0x80, 0x81, 0x80, 0x7e, 0x7b, 0x7b, 0x80, 0x85, 0x89, 0x8b, 0x88, 0x7e, - 0x79, 0x78, 0x7a, 0x7e, 0x81, 0x84, 0x82, 0x7b, 0x7a, 0x7b, 0x80, 0x83, 0x84, 0x82, 0x7c, 0x7b, - 0x7e, 0x84, 0x85, 0x83, 0x7d, 0x76, 0x71, 0x75, 0x7d, 0x83, 0x86, 0x86, 0x84, 0x82, 0x81, 0x81, - 0x7c, 0x76, 0x73, 0x72, 0x73, 0x79, 0x84, 0x8c, 0x8e, 0x8a, 0x81, 0x79, 0x75, 0x78, 0x80, 0x86, - 0x88, 0x85, 0x7c, 0x74, 0x75, 0x7a, 0x81, 0x85, 0x85, 0x81, 0x7e, 0x83, 0x88, 0x87, 0x84, 0x7c, - 0x70, 0x64, 0x64, 0x75, 0x90, 0x9e, 0x9d, 0x94, 0x89, 0x82, 0x74, 0x5f, 0x5b, 0x72, 0x94, 0x96, - 0x7b, 0x6b, 0x78, 0x92, 0x97, 0x89, 0x77, 0x6d, 0x6f, 0x77, 0x8a, 0xa2, 0xad, 0x97, 0x6c, 0x4d, - 0x4e, 0x69, 0x8b, 0xa2, 0xa6, 0x95, 0x7a, 0x68, 0x69, 0x7b, 0x8a, 0x86, 0x79, 0x74, 0x78, 0x84, - 0x8f, 0x94, 0x8c, 0x74, 0x5f, 0x60, 0x74, 0x93, 0xa2, 0x9a, 0x87, 0x71, 0x64, 0x63, 0x70, 0x84, - 0x8e, 0x88, 0x7a, 0x76, 0x7c, 0x86, 0x8c, 0x8a, 0x82, 0x77, 0x70, 0x76, 0x84, 0x8c, 0x85, 0x72, - 0x64, 0x6b, 0x84, 0x97, 0x9b, 0x90, 0x83, 0x81, 0x7c, 0x74, 0x6f, 0x79, 0x88, 0x8a, 0x83, 0x84, - 0x8d, 0x89, 0x67, 0x3c, 0x2f, 0x57, 0x9b, 0xce, 0xdf, 0xc9, 0x92, 0x4a, 0x19, 0x17, 0x48, 0x90, - 0xbf, 0xc5, 0xad, 0x91, 0x7d, 0x70, 0x66, 0x60, 0x5d, 0x67, 0x81, 0x9b, 0xba, 0xc9, 0xb2, 0x75, - 0x3a, 0x2c, 0x4a, 0x7c, 0xb4, 0xce, 0xc3, 0x97, 0x63, 0x46, 0x46, 0x5b, 0x74, 0x82, 0x86, 0x91, - 0x9b, 0x9a, 0x8f, 0x7c, 0x67, 0x56, 0x5b, 0x79, 0x97, 0xa5, 0x9e, 0x84, 0x65, 0x58, 0x63, 0x79, - 0x8f, 0x9c, 0x9c, 0x8f, 0x7c, 0x73, 0x6d, 0x6a, 0x6e, 0x76, 0x80, 0x88, 0x91, 0x94, 0x8c, 0x7e, - 0x71, 0x69, 0x6b, 0x77, 0x88, 0x94, 0x94, 0x8c, 0x80, 0x73, 0x70, 0x77, 0x7a, 0x7b, 0x7b, 0x7d, - 0x83, 0x87, 0x89, 0x85, 0x7a, 0x70, 0x6b, 0x72, 0x82, 0x91, 0x99, 0x96, 0x85, 0x65, 0x40, 0x37, - 0x58, 0x9b, 0xd2, 0xd5, 0xa5, 0x68, 0x42, 0x3f, 0x54, 0x6b, 0x8a, 0xa7, 0xb4, 0xa9, 0x90, 0x7a, - 0x72, 0x69, 0x58, 0x4f, 0x62, 0x94, 0xbd, 0xbf, 0x9c, 0x6f, 0x52, 0x46, 0x4a, 0x66, 0x96, 0xb8, - 0xb3, 0x8e, 0x6a, 0x60, 0x6b, 0x74, 0x70, 0x70, 0x7a, 0x89, 0x93, 0x93, 0x8f, 0x86, 0x73, 0x60, - 0x61, 0x7a, 0x98, 0xa4, 0x9b, 0x85, 0x71, 0x68, 0x6b, 0x78, 0x84, 0x89, 0x85, 0x7c, 0x7b, 0x84, - 0x8b, 0x87, 0x79, 0x6c, 0x65, 0x69, 0x78, 0x8e, 0x98, 0x92, 0x85, 0x75, 0x6f, 0x71, 0x7c, 0x87, - 0x8d, 0x8d, 0x86, 0x81, 0x7d, 0x7e, 0x80, 0x7e, 0x80, 0x85, 0x8c, 0x8e, 0x87, 0x6f, 0x45, 0x27, - 0x38, 0x77, 0xc1, 0xe1, 0xcc, 0x94, 0x58, 0x2f, 0x29, 0x51, 0x8f, 0xb9, 0xbe, 0xab, 0x94, 0x81, - 0x70, 0x65, 0x5d, 0x5f, 0x70, 0x93, 0xba, 0xc4, 0xae, 0x88, 0x58, 0x35, 0x38, 0x64, 0x99, 0xb5, - 0xb2, 0x99, 0x79, 0x5e, 0x54, 0x5f, 0x70, 0x81, 0x8e, 0x92, 0x8d, 0x88, 0x83, 0x78, 0x6c, 0x68, - 0x6d, 0x7c, 0x96, 0xac, 0xa8, 0x8f, 0x71, 0x60, 0x5e, 0x6c, 0x87, 0x9c, 0xa0, 0x97, 0x89, 0x79, - 0x6f, 0x6d, 0x72, 0x79, 0x7d, 0x83, 0x85, 0x84, 0x83, 0x80, 0x7a, 0x75, 0x77, 0x7e, 0x84, 0x87, - 0x86, 0x81, 0x7e, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7d, 0x7c, 0x7d, 0x82, 0x82, 0x81, 0x7d, 0x80, - 0x89, 0x91, 0x8e, 0x6f, 0x3d, 0x23, 0x47, 0x9b, 0xe2, 0xea, 0xb9, 0x75, 0x43, 0x2e, 0x36, 0x5c, - 0x95, 0xc0, 0xc1, 0xa2, 0x87, 0x82, 0x80, 0x6c, 0x50, 0x49, 0x69, 0x9a, 0xb9, 0xba, 0xa7, 0x85, - 0x5a, 0x3d, 0x46, 0x73, 0xa1, 0xb4, 0xa6, 0x85, 0x69, 0x5e, 0x60, 0x67, 0x74, 0x8a, 0x9b, 0x9d, - 0x93, 0x88, 0x79, 0x66, 0x58, 0x5c, 0x75, 0x9a, 0xb4, 0xb4, 0x9b, 0x7a, 0x60, 0x56, 0x5e, 0x78, - 0x94, 0xa0, 0x9c, 0x8b, 0x79, 0x6c, 0x69, 0x6e, 0x76, 0x80, 0x8c, 0x94, 0x8e, 0x83, 0x75, 0x6b, - 0x6b, 0x76, 0x8a, 0x99, 0x9c, 0x94, 0x81, 0x6c, 0x63, 0x67, 0x76, 0x89, 0x95, 0x96, 0x8d, 0x86, - 0x7c, 0x75, 0x70, 0x71, 0x76, 0x82, 0x93, 0xa1, 0x9a, 0x72, 0x3d, 0x29, 0x51, 0xa2, 0xe2, 0xe7, - 0xa9, 0x4e, 0x1d, 0x2d, 0x64, 0x9d, 0xb4, 0xab, 0x9a, 0x8e, 0x86, 0x7e, 0x72, 0x65, 0x58, 0x57, - 0x6d, 0x95, 0xbc, 0xc6, 0xa5, 0x6a, 0x3a, 0x34, 0x59, 0x8d, 0xae, 0xb0, 0x9c, 0x81, 0x6a, 0x61, - 0x67, 0x77, 0x83, 0x85, 0x84, 0x87, 0x92, 0x95, 0x88, 0x71, 0x60, 0x63, 0x7b, 0x96, 0xa5, 0xa3, - 0x8e, 0x70, 0x5c, 0x5a, 0x6b, 0x86, 0x9a, 0x9e, 0x92, 0x84, 0x77, 0x70, 0x6d, 0x6c, 0x70, 0x77, - 0x83, 0x8e, 0x91, 0x8c, 0x83, 0x76, 0x71, 0x76, 0x83, 0x90, 0x94, 0x8f, 0x84, 0x78, 0x71, 0x72, - 0x78, 0x82, 0x8b, 0x8c, 0x87, 0x7d, 0x73, 0x63, 0x4f, 0x4a, 0x65, 0x94, 0xba, 0xc1, 0xab, 0x85, - 0x58, 0x3f, 0x49, 0x6b, 0x91, 0xae, 0xb7, 0xa8, 0x8c, 0x76, 0x6e, 0x69, 0x65, 0x6f, 0x85, 0x99, - 0xa5, 0xa1, 0x8e, 0x6f, 0x54, 0x4d, 0x5c, 0x7b, 0x9d, 0xae, 0xa8, 0x8e, 0x6f, 0x5a, 0x53, 0x5c, - 0x72, 0x86, 0x94, 0x9b, 0x98, 0x8b, 0x7a, 0x71, 0x6e, 0x6f, 0x79, 0x8a, 0x99, 0x9e, 0x94, 0x82, - 0x70, 0x66, 0x69, 0x75, 0x88, 0x97, 0x9d, 0x94, 0x82, 0x71, 0x6a, 0x68, 0x6d, 0x79, 0x86, 0x8d, - 0x90, 0x8c, 0x83, 0x75, 0x6b, 0x69, 0x6f, 0x7d, 0x90, 0x9a, 0x9a, 0x8d, 0x77, 0x67, 0x64, 0x6f, - 0x81, 0x91, 0x9a, 0x94, 0x85, 0x76, 0x74, 0x7d, 0x84, 0x76, 0x55, 0x3a, 0x4d, 0x8f, 0xcf, 0xdd, - 0xb2, 0x73, 0x45, 0x36, 0x48, 0x70, 0xa5, 0xc4, 0xb8, 0x91, 0x71, 0x6f, 0x78, 0x75, 0x6b, 0x68, - 0x74, 0x8e, 0xa8, 0xae, 0x9b, 0x76, 0x54, 0x47, 0x54, 0x7b, 0xa8, 0xbe, 0xae, 0x84, 0x5f, 0x51, - 0x5a, 0x6a, 0x7a, 0x8b, 0x96, 0x9c, 0x9a, 0x8f, 0x7c, 0x68, 0x5a, 0x5c, 0x70, 0x91, 0xac, 0xb0, - 0x9d, 0x79, 0x5b, 0x53, 0x61, 0x78, 0x8e, 0x9b, 0x98, 0x8a, 0x7a, 0x71, 0x72, 0x76, 0x79, 0x7a, - 0x7e, 0x88, 0x8f, 0x90, 0x88, 0x7a, 0x71, 0x6f, 0x77, 0x85, 0x8c, 0x8b, 0x82, 0x75, 0x6e, 0x73, - 0x80, 0x8b, 0x91, 0x8e, 0x87, 0x82, 0x83, 0x80, 0x69, 0x44, 0x2e, 0x4a, 0x8f, 0xd4, 0xec, 0xc6, - 0x81, 0x45, 0x27, 0x30, 0x5c, 0x9a, 0xc7, 0xc5, 0xa5, 0x83, 0x71, 0x6d, 0x67, 0x61, 0x61, 0x75, - 0x97, 0xb7, 0xc0, 0xa8, 0x76, 0x48, 0x32, 0x40, 0x6f, 0xa7, 0xc6, 0xbf, 0x9d, 0x71, 0x54, 0x4f, - 0x5c, 0x6e, 0x7d, 0x8a, 0x95, 0x9b, 0x98, 0x8b, 0x77, 0x66, 0x60, 0x6a, 0x82, 0x9b, 0xab, 0xa7, - 0x8e, 0x6e, 0x5a, 0x5b, 0x6d, 0x89, 0x9f, 0xa3, 0x96, 0x81, 0x71, 0x6c, 0x6e, 0x76, 0x7d, 0x84, - 0x89, 0x8a, 0x87, 0x7d, 0x74, 0x6d, 0x6a, 0x74, 0x87, 0x97, 0x9d, 0x94, 0x85, 0x74, 0x69, 0x69, - 0x73, 0x82, 0x8b, 0x8d, 0x89, 0x83, 0x7d, 0x7b, 0x81, 0x85, 0x87, 0x81, 0x6e, 0x58, 0x53, 0x6e, - 0x9a, 0xb6, 0xac, 0x87, 0x65, 0x56, 0x59, 0x6f, 0x8a, 0x9e, 0xa3, 0x97, 0x85, 0x7a, 0x76, 0x75, - 0x73, 0x71, 0x71, 0x78, 0x89, 0x9a, 0xa0, 0x97, 0x82, 0x6b, 0x60, 0x65, 0x79, 0x90, 0x99, 0x94, - 0x87, 0x75, 0x6e, 0x72, 0x7b, 0x81, 0x81, 0x81, 0x83, 0x87, 0x88, 0x84, 0x7c, 0x76, 0x72, 0x74, - 0x7b, 0x84, 0x8c, 0x8d, 0x87, 0x7d, 0x77, 0x73, 0x77, 0x7d, 0x80, 0x7e, 0x7d, 0x7e, 0x81, 0x82, - 0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x7e, 0x81, 0x84, 0x83, 0x81, 0x81, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7e, 0x84, 0x86, 0x86, 0x83, 0x7d, 0x79, 0x77, 0x79, 0x7c, 0x80, 0x81, 0x81, 0x80, 0x7e, - 0x7e, 0x80, 0x81, 0x81, 0x7d, 0x7b, 0x7c, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x84, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7b, 0x7a, 0x7b, 0x7d, - 0x7e, 0x80, 0x82, 0x84, 0x84, 0x84, 0x84, 0x81, 0x7d, 0x7c, 0x7c, 0x7c, 0x7a, 0x7b, 0x80, 0x82, - 0x84, 0x86, 0x85, 0x82, 0x80, 0x80, 0x7e, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7e, 0x82, 0x84, 0x84, - 0x83, 0x80, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, - 0x7e, 0x80, 0x80, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x7d, 0x7c, 0x7a, 0x78, 0x7a, 0x7d, 0x82, 0x84, - 0x83, 0x7e, 0x7b, 0x7b, 0x7d, 0x80, 0x80, 0x7d, 0x7a, 0x79, 0x7a, 0x7d, 0x83, 0x86, 0x87, 0x86, - 0x81, 0x7c, 0x79, 0x78, 0x77, 0x78, 0x7b, 0x80, 0x84, 0x88, 0x89, 0x87, 0x83, 0x7e, 0x7a, 0x7a, - 0x7a, 0x7c, 0x80, 0x82, 0x83, 0x83, 0x83, 0x84, 0x82, 0x80, 0x7d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7e, - 0x80, 0x83, 0x86, 0x86, 0x83, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x80, 0x7e, 0x80, - 0x82, 0x82, 0x82, 0x80, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7c, 0x80, 0x82, 0x81, - 0x82, 0x82, 0x83, 0x81, 0x7c, 0x7b, 0x7b, 0x7b, 0x7d, 0x7e, 0x82, 0x84, 0x85, 0x84, 0x83, 0x7e, - 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7c, 0x7a, 0x7a, 0x7d, 0x84, 0x88, - 0x8b, 0x88, 0x80, 0x78, 0x73, 0x72, 0x75, 0x78, 0x7c, 0x80, 0x83, 0x84, 0x85, 0x85, 0x85, 0x82, - 0x7d, 0x77, 0x75, 0x76, 0x7a, 0x80, 0x84, 0x86, 0x86, 0x86, 0x85, 0x83, 0x7e, 0x7b, 0x78, 0x76, - 0x78, 0x7b, 0x80, 0x83, 0x85, 0x84, 0x80, 0x7d, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x82, 0x83, 0x84, - 0x84, 0x82, 0x7e, 0x7c, 0x7c, 0x7d, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, - 0x81, 0x81, 0x80, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7a, - 0x7b, 0x7e, 0x81, 0x82, 0x84, 0x83, 0x80, 0x7b, 0x78, 0x77, 0x79, 0x7b, 0x81, 0x88, 0x8b, 0x8a, - 0x86, 0x7d, 0x77, 0x75, 0x76, 0x7a, 0x7d, 0x81, 0x81, 0x81, 0x81, 0x82, 0x83, 0x83, 0x80, 0x7c, - 0x7c, 0x7d, 0x7d, 0x7e, 0x7b, 0x78, 0x76, 0x78, 0x7c, 0x82, 0x85, 0x83, 0x81, 0x7d, 0x79, 0x77, - 0x76, 0x76, 0x79, 0x7a, 0x7d, 0x81, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x7b, 0x79, 0x79, 0x7b, 0x81, - 0x82, 0x82, 0x82, 0x80, 0x7d, 0x7b, 0x7b, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x7e, - 0x7b, 0x7c, 0x7e, 0x81, 0x82, 0x83, 0x80, 0x7b, 0x7a, 0x7c, 0x80, 0x83, 0x87, 0x87, 0x82, 0x7e, - 0x7c, 0x7c, 0x7e, 0x82, 0x84, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7c, 0x7a, 0x77, 0x76, - 0x77, 0x7a, 0x81, 0x85, 0x87, 0x87, 0x83, 0x7e, 0x7c, 0x7b, 0x7a, 0x7c, 0x7d, 0x7c, 0x7e, 0x83, - 0x87, 0x89, 0x87, 0x82, 0x7c, 0x79, 0x79, 0x7b, 0x84, 0x88, 0x87, 0x82, 0x7e, 0x7c, 0x7b, 0x7d, - 0x7e, 0x7e, 0x81, 0x82, 0x81, 0x82, 0x84, 0x83, 0x81, 0x7d, 0x7b, 0x7b, 0x7d, 0x82, 0x85, 0x85, - 0x83, 0x80, 0x80, 0x81, 0x82, 0x83, 0x80, 0x7a, 0x79, 0x7a, 0x7d, 0x81, 0x82, 0x80, 0x7b, 0x79, - 0x7b, 0x7d, 0x80, 0x82, 0x83, 0x81, 0x7e, 0x80, 0x80, 0x83, 0x83, 0x80, 0x7c, 0x79, 0x78, 0x7a, - 0x7e, 0x80, 0x81, 0x80, 0x80, 0x83, 0x84, 0x84, 0x84, 0x81, 0x7b, 0x76, 0x76, 0x78, 0x7c, 0x82, - 0x86, 0x87, 0x84, 0x81, 0x79, 0x74, 0x75, 0x79, 0x81, 0x86, 0x88, 0x83, 0x7c, 0x7a, 0x7d, 0x83, - 0x87, 0x86, 0x80, 0x79, 0x78, 0x7a, 0x7e, 0x83, 0x81, 0x7a, 0x76, 0x77, 0x7e, 0x89, 0x8f, 0x8d, - 0x85, 0x7c, 0x79, 0x7a, 0x80, 0x84, 0x83, 0x80, 0x7c, 0x7c, 0x80, 0x84, 0x85, 0x7e, 0x78, 0x74, - 0x76, 0x7e, 0x86, 0x8c, 0x8b, 0x82, 0x78, 0x78, 0x7c, 0x80, 0x83, 0x84, 0x7e, 0x79, 0x7a, 0x7d, - 0x81, 0x83, 0x82, 0x7c, 0x7c, 0x82, 0x87, 0x89, 0x86, 0x7e, 0x74, 0x6f, 0x72, 0x79, 0x7e, 0x82, - 0x82, 0x82, 0x84, 0x87, 0x89, 0x89, 0x85, 0x7e, 0x78, 0x77, 0x7a, 0x7e, 0x82, 0x82, 0x80, 0x7e, - 0x7e, 0x80, 0x7e, 0x76, 0x6e, 0x6b, 0x70, 0x7b, 0x85, 0x8d, 0x89, 0x80, 0x7a, 0x7c, 0x82, 0x86, - 0x87, 0x81, 0x77, 0x74, 0x79, 0x83, 0x8a, 0x8a, 0x80, 0x74, 0x70, 0x73, 0x80, 0x8c, 0x8f, 0x8a, - 0x85, 0x82, 0x83, 0x88, 0x89, 0x82, 0x76, 0x70, 0x70, 0x77, 0x86, 0x8f, 0x8d, 0x85, 0x7b, 0x77, - 0x79, 0x81, 0x86, 0x83, 0x7a, 0x76, 0x79, 0x82, 0x89, 0x8a, 0x84, 0x79, 0x72, 0x74, 0x7a, 0x82, - 0x87, 0x84, 0x7b, 0x78, 0x7d, 0x86, 0x8d, 0x8e, 0x87, 0x7d, 0x75, 0x75, 0x77, 0x7b, 0x7d, 0x7c, - 0x7b, 0x7e, 0x86, 0x8c, 0x8f, 0x8b, 0x81, 0x76, 0x72, 0x76, 0x7a, 0x7e, 0x80, 0x7e, 0x81, 0x82, - 0x86, 0x87, 0x82, 0x79, 0x6b, 0x64, 0x65, 0x72, 0x85, 0x8d, 0x8e, 0x87, 0x7b, 0x78, 0x7d, 0x84, - 0x84, 0x80, 0x77, 0x6f, 0x73, 0x7d, 0x89, 0x8e, 0x89, 0x7d, 0x74, 0x77, 0x80, 0x8c, 0x90, 0x8a, - 0x80, 0x79, 0x80, 0x87, 0x8c, 0x8c, 0x84, 0x77, 0x6f, 0x73, 0x7e, 0x88, 0x8a, 0x86, 0x7e, 0x78, - 0x7b, 0x84, 0x87, 0x83, 0x7a, 0x72, 0x70, 0x75, 0x80, 0x86, 0x82, 0x7d, 0x7a, 0x7a, 0x82, 0x88, - 0x89, 0x85, 0x7e, 0x7a, 0x79, 0x7d, 0x82, 0x81, 0x79, 0x75, 0x73, 0x77, 0x80, 0x86, 0x89, 0x87, - 0x84, 0x85, 0x84, 0x85, 0x83, 0x7e, 0x79, 0x75, 0x76, 0x78, 0x7b, 0x7e, 0x80, 0x81, 0x82, 0x83, - 0x82, 0x7a, 0x70, 0x68, 0x68, 0x72, 0x7e, 0x86, 0x86, 0x7e, 0x78, 0x7c, 0x85, 0x8e, 0x8f, 0x84, - 0x72, 0x65, 0x69, 0x76, 0x85, 0x8d, 0x88, 0x7b, 0x75, 0x7a, 0x85, 0x90, 0x91, 0x84, 0x76, 0x73, - 0x79, 0x84, 0x8e, 0x8e, 0x81, 0x74, 0x73, 0x79, 0x83, 0x88, 0x86, 0x7c, 0x75, 0x79, 0x84, 0x8b, - 0x8d, 0x85, 0x79, 0x71, 0x71, 0x79, 0x82, 0x82, 0x7d, 0x77, 0x74, 0x7b, 0x86, 0x87, 0x83, 0x7b, - 0x76, 0x75, 0x7d, 0x88, 0x8b, 0x85, 0x7c, 0x76, 0x75, 0x79, 0x83, 0x84, 0x81, 0x7e, 0x7d, 0x81, - 0x86, 0x8a, 0x88, 0x83, 0x7e, 0x7e, 0x81, 0x82, 0x82, 0x7e, 0x7a, 0x79, 0x7b, 0x84, 0x89, 0x86, - 0x7d, 0x6e, 0x64, 0x67, 0x75, 0x82, 0x88, 0x85, 0x7a, 0x75, 0x7b, 0x89, 0x91, 0x90, 0x87, 0x74, - 0x6a, 0x6e, 0x7a, 0x88, 0x8a, 0x82, 0x78, 0x75, 0x7d, 0x89, 0x92, 0x8f, 0x81, 0x74, 0x72, 0x7b, - 0x87, 0x8d, 0x8b, 0x7d, 0x74, 0x76, 0x80, 0x89, 0x8b, 0x85, 0x7b, 0x76, 0x78, 0x83, 0x89, 0x86, - 0x80, 0x7a, 0x78, 0x80, 0x89, 0x8b, 0x86, 0x7d, 0x76, 0x74, 0x78, 0x80, 0x82, 0x80, 0x80, 0x83, - 0x85, 0x89, 0x8d, 0x89, 0x7e, 0x78, 0x76, 0x78, 0x79, 0x7c, 0x80, 0x7e, 0x81, 0x86, 0x89, 0x89, - 0x88, 0x85, 0x81, 0x80, 0x81, 0x81, 0x7e, 0x7c, 0x7b, 0x7a, 0x7d, 0x83, 0x85, 0x81, 0x76, 0x6c, - 0x65, 0x6a, 0x77, 0x82, 0x87, 0x86, 0x7c, 0x77, 0x80, 0x8b, 0x91, 0x8e, 0x82, 0x73, 0x6b, 0x6f, - 0x7b, 0x85, 0x87, 0x80, 0x77, 0x78, 0x82, 0x8a, 0x90, 0x8a, 0x7b, 0x73, 0x76, 0x81, 0x8a, 0x8f, - 0x8b, 0x7e, 0x77, 0x78, 0x7c, 0x82, 0x82, 0x7c, 0x78, 0x78, 0x7e, 0x89, 0x8b, 0x88, 0x82, 0x7b, - 0x79, 0x7c, 0x81, 0x80, 0x7a, 0x77, 0x76, 0x78, 0x80, 0x86, 0x86, 0x83, 0x82, 0x82, 0x83, 0x85, - 0x84, 0x7c, 0x77, 0x78, 0x7a, 0x7e, 0x82, 0x82, 0x7c, 0x7a, 0x7b, 0x7d, 0x82, 0x84, 0x83, 0x83, - 0x84, 0x86, 0x88, 0x87, 0x82, 0x7d, 0x7b, 0x7b, 0x7e, 0x81, 0x81, 0x7e, 0x78, 0x6f, 0x6d, 0x73, - 0x7c, 0x85, 0x87, 0x82, 0x79, 0x77, 0x80, 0x89, 0x8e, 0x8c, 0x81, 0x73, 0x6e, 0x72, 0x7c, 0x83, - 0x81, 0x7b, 0x77, 0x7a, 0x85, 0x8e, 0x91, 0x89, 0x7c, 0x77, 0x79, 0x81, 0x8a, 0x8b, 0x85, 0x7b, - 0x79, 0x7d, 0x82, 0x84, 0x82, 0x7b, 0x75, 0x78, 0x81, 0x84, 0x86, 0x82, 0x7c, 0x79, 0x7c, 0x83, - 0x84, 0x7e, 0x7a, 0x77, 0x75, 0x7a, 0x81, 0x82, 0x80, 0x80, 0x7e, 0x7e, 0x82, 0x85, 0x84, 0x82, - 0x81, 0x80, 0x7e, 0x7d, 0x7b, 0x79, 0x78, 0x7b, 0x81, 0x85, 0x89, 0x88, 0x86, 0x84, 0x81, 0x81, - 0x81, 0x80, 0x81, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7a, 0x74, 0x6e, 0x6d, 0x73, 0x7c, 0x85, - 0x88, 0x87, 0x83, 0x82, 0x84, 0x85, 0x83, 0x7a, 0x73, 0x70, 0x73, 0x7c, 0x83, 0x84, 0x80, 0x7b, - 0x7a, 0x7e, 0x84, 0x87, 0x84, 0x7c, 0x7a, 0x7c, 0x80, 0x85, 0x86, 0x85, 0x83, 0x83, 0x85, 0x84, - 0x80, 0x7b, 0x79, 0x78, 0x7c, 0x83, 0x85, 0x85, 0x83, 0x80, 0x7c, 0x7c, 0x7e, 0x7c, 0x7a, 0x7c, - 0x7e, 0x81, 0x83, 0x82, 0x80, 0x7d, 0x7d, 0x80, 0x7d, 0x7a, 0x7a, 0x7a, 0x7c, 0x81, 0x84, 0x84, - 0x81, 0x7d, 0x7a, 0x78, 0x79, 0x79, 0x7b, 0x80, 0x83, 0x87, 0x88, 0x87, 0x85, 0x82, 0x80, 0x7e, - 0x7d, 0x7c, 0x79, 0x76, 0x76, 0x7a, 0x7d, 0x7e, 0x7c, 0x74, 0x6e, 0x6f, 0x75, 0x7e, 0x85, 0x8a, - 0x8a, 0x86, 0x84, 0x81, 0x79, 0x76, 0x76, 0x76, 0x79, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x81, 0x83, - 0x83, 0x7e, 0x7a, 0x76, 0x77, 0x7e, 0x85, 0x8a, 0x8d, 0x8b, 0x86, 0x7e, 0x79, 0x76, 0x76, 0x79, - 0x81, 0x84, 0x84, 0x84, 0x83, 0x83, 0x85, 0x8a, 0x89, 0x83, 0x7c, 0x78, 0x76, 0x77, 0x7b, 0x82, - 0x85, 0x86, 0x87, 0x83, 0x7c, 0x7a, 0x79, 0x79, 0x7b, 0x7e, 0x7d, 0x7d, 0x80, 0x83, 0x86, 0x88, - 0x87, 0x83, 0x7d, 0x7a, 0x79, 0x7a, 0x7d, 0x83, 0x85, 0x87, 0x86, 0x83, 0x81, 0x7e, 0x7c, 0x7c, - 0x7b, 0x78, 0x77, 0x77, 0x77, 0x7a, 0x7e, 0x82, 0x82, 0x80, 0x7b, 0x77, 0x77, 0x7c, 0x84, 0x8b, - 0x8e, 0x8b, 0x83, 0x79, 0x73, 0x70, 0x70, 0x74, 0x79, 0x7c, 0x7e, 0x7d, 0x7c, 0x7e, 0x85, 0x8a, - 0x8d, 0x8b, 0x84, 0x7b, 0x77, 0x79, 0x80, 0x86, 0x89, 0x88, 0x83, 0x7d, 0x7b, 0x7a, 0x7c, 0x7e, - 0x80, 0x80, 0x7e, 0x7c, 0x7c, 0x82, 0x89, 0x8e, 0x8d, 0x88, 0x80, 0x77, 0x76, 0x78, 0x7d, 0x83, - 0x86, 0x86, 0x84, 0x82, 0x81, 0x82, 0x83, 0x83, 0x81, 0x7b, 0x77, 0x76, 0x7b, 0x82, 0x88, 0x89, - 0x86, 0x81, 0x7b, 0x79, 0x79, 0x7c, 0x80, 0x80, 0x7e, 0x7c, 0x7b, 0x7c, 0x7c, 0x7e, 0x80, 0x81, - 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x82, 0x83, 0x82, 0x81, 0x7b, 0x73, 0x6e, 0x6e, - 0x72, 0x79, 0x83, 0x89, 0x89, 0x86, 0x80, 0x7b, 0x78, 0x78, 0x7c, 0x80, 0x83, 0x83, 0x81, 0x80, - 0x82, 0x85, 0x86, 0x83, 0x7d, 0x77, 0x74, 0x75, 0x79, 0x81, 0x88, 0x8c, 0x8a, 0x86, 0x82, 0x7e, - 0x7e, 0x80, 0x81, 0x7e, 0x7c, 0x7a, 0x7a, 0x7d, 0x83, 0x86, 0x86, 0x85, 0x81, 0x7d, 0x7b, 0x7c, - 0x80, 0x82, 0x84, 0x84, 0x81, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x7d, 0x7a, 0x79, 0x7c, 0x81, 0x87, - 0x89, 0x88, 0x85, 0x7e, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x7d, 0x7a, 0x7a, 0x7b, 0x7e, 0x83, 0x84, - 0x84, 0x80, 0x7b, 0x7b, 0x7d, 0x81, 0x83, 0x84, 0x85, 0x86, 0x85, 0x85, 0x85, 0x84, 0x83, 0x81, - 0x7d, 0x79, 0x77, 0x78, 0x7c, 0x81, 0x84, 0x86, 0x85, 0x82, 0x7d, 0x7a, 0x78, 0x7a, 0x80, 0x82, - 0x81, 0x7d, 0x7a, 0x7b, 0x80, 0x84, 0x87, 0x87, 0x83, 0x7d, 0x79, 0x79, 0x7d, 0x82, 0x85, 0x85, - 0x83, 0x82, 0x81, 0x82, 0x82, 0x82, 0x7e, 0x7b, 0x78, 0x76, 0x77, 0x7d, 0x84, 0x88, 0x88, 0x84, - 0x80, 0x7b, 0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, 0x7e, 0x82, 0x84, 0x84, 0x82, 0x80, 0x7c, 0x7a, - 0x79, 0x79, 0x7a, 0x7c, 0x7d, 0x7e, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, - 0x7d, 0x80, 0x83, 0x85, 0x86, 0x85, 0x83, 0x7e, 0x7c, 0x7a, 0x7a, 0x7b, 0x7c, 0x7e, 0x81, 0x83, - 0x83, 0x82, 0x81, 0x7e, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x79, 0x7b, 0x7e, 0x83, 0x85, 0x85, 0x83, - 0x80, 0x7c, 0x78, 0x77, 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x83, 0x84, 0x84, 0x83, 0x81, 0x7d, 0x7a, - 0x78, 0x77, 0x79, 0x7c, 0x80, 0x83, 0x84, 0x84, 0x84, 0x85, 0x84, 0x83, 0x83, 0x7e, 0x7c, 0x7c, - 0x7c, 0x7d, 0x81, 0x83, 0x84, 0x85, 0x84, 0x83, 0x82, 0x80, 0x7e, 0x7c, 0x7c, 0x7b, 0x7d, 0x81, - 0x82, 0x85, 0x87, 0x87, 0x85, 0x82, 0x7e, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x83, 0x85, 0x85, 0x84, - 0x81, 0x7e, 0x7c, 0x79, 0x78, 0x78, 0x7a, 0x7e, 0x81, 0x83, 0x83, 0x82, 0x7e, 0x7b, 0x78, 0x77, - 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x82, - 0x7e, 0x7b, 0x7b, 0x7c, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x78, 0x77, - 0x79, 0x7c, 0x82, 0x86, 0x87, 0x87, 0x85, 0x80, 0x7c, 0x79, 0x75, 0x75, 0x77, 0x7a, 0x80, 0x84, - 0x87, 0x89, 0x87, 0x85, 0x81, 0x7a, 0x76, 0x75, 0x76, 0x79, 0x7d, 0x82, 0x85, 0x86, 0x85, 0x83, - 0x81, 0x7c, 0x7a, 0x7a, 0x7b, 0x7d, 0x80, 0x82, 0x85, 0x86, 0x85, 0x84, 0x82, 0x80, 0x7d, 0x7d, - 0x7c, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x83, 0x84, 0x85, 0x83, 0x81, 0x7e, 0x7d, 0x7a, 0x7a, - 0x7b, 0x7b, 0x7c, 0x80, 0x83, 0x84, 0x84, 0x83, 0x82, 0x7e, 0x7a, 0x78, 0x78, 0x79, 0x7b, 0x7e, - 0x82, 0x84, 0x85, 0x84, 0x80, 0x7c, 0x7a, 0x78, 0x77, 0x75, 0x75, 0x77, 0x7b, 0x7e, 0x82, 0x84, - 0x83, 0x81, 0x7d, 0x7b, 0x77, 0x76, 0x78, 0x79, 0x79, 0x79, 0x7b, 0x7e, 0x82, 0x85, 0x87, 0x86, - 0x82, 0x7c, 0x77, 0x76, 0x76, 0x77, 0x79, 0x7b, 0x80, 0x83, 0x86, 0x88, 0x87, 0x83, 0x7d, 0x77, - 0x74, 0x75, 0x79, 0x7e, 0x85, 0x87, 0x87, 0x84, 0x80, 0x7c, 0x7a, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, - 0x7e, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7e, - 0x81, 0x83, 0x84, 0x83, 0x83, 0x81, 0x7e, 0x7d, 0x7b, 0x7a, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x84, - 0x85, 0x86, 0x85, 0x82, 0x80, 0x7d, 0x7a, 0x79, 0x7b, 0x7d, 0x81, 0x84, 0x85, 0x85, 0x84, 0x83, - 0x81, 0x7e, 0x7b, 0x79, 0x78, 0x76, 0x78, 0x7a, 0x7e, 0x82, 0x83, 0x82, 0x81, 0x80, 0x7d, 0x7a, - 0x79, 0x7b, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x82, 0x83, 0x83, 0x80, 0x7d, 0x7d, 0x7e, 0x80, 0x81, - 0x81, 0x80, 0x7d, 0x7d, 0x80, 0x84, 0x87, 0x89, 0x88, 0x85, 0x81, 0x7c, 0x79, 0x77, 0x78, 0x7d, - 0x84, 0x88, 0x8a, 0x89, 0x87, 0x85, 0x83, 0x82, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, - 0x80, 0x81, 0x83, 0x83, 0x83, 0x81, 0x7e, 0x7a, 0x77, 0x77, 0x78, 0x7b, 0x7e, 0x83, 0x86, 0x86, - 0x85, 0x84, 0x82, 0x7e, 0x7b, 0x78, 0x75, 0x76, 0x7b, 0x7e, 0x84, 0x8a, 0x8c, 0x8b, 0x87, 0x80, - 0x7a, 0x76, 0x75, 0x76, 0x79, 0x7d, 0x83, 0x86, 0x87, 0x87, 0x85, 0x82, 0x80, 0x7e, 0x7d, 0x7b, - 0x7a, 0x79, 0x78, 0x79, 0x7d, 0x81, 0x83, 0x85, 0x85, 0x84, 0x82, 0x7e, 0x7d, 0x7c, 0x7a, 0x7a, - 0x7c, 0x7d, 0x81, 0x84, 0x87, 0x88, 0x87, 0x84, 0x7e, 0x7b, 0x7a, 0x78, 0x79, 0x7b, 0x7d, 0x81, - 0x84, 0x87, 0x88, 0x88, 0x86, 0x82, 0x7c, 0x79, 0x78, 0x79, 0x7b, 0x7d, 0x81, 0x83, 0x84, 0x84, - 0x85, 0x84, 0x82, 0x80, 0x7c, 0x7b, 0x79, 0x79, 0x78, 0x7b, 0x88, 0x90, 0x8e, 0x89, 0x82, 0x7a, - 0x76, 0x77, 0x79, 0x7b, 0x81, 0x86, 0x89, 0x89, 0x82, 0x7b, 0x79, 0x7a, 0x7d, 0x80, 0x81, 0x82, - 0x81, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, 0x78, 0x78, 0x87, 0x94, 0x92, 0x83, 0x7a, 0x78, 0x75, 0x74, - 0x73, 0x7c, 0x8b, 0x90, 0x8f, 0x8e, 0x89, 0x81, 0x7a, 0x77, 0x78, 0x77, 0x6e, 0x63, 0x60, 0x66, - 0x77, 0x8f, 0xa3, 0xa9, 0xa3, 0x95, 0x83, 0x70, 0x64, 0x60, 0x5e, 0x58, 0x53, 0x5c, 0x74, 0x95, - 0xb6, 0xc8, 0xc1, 0xa5, 0x85, 0x66, 0x51, 0x4f, 0x5c, 0x6f, 0x80, 0x8a, 0x97, 0xa9, 0xb6, 0xb8, - 0xaa, 0x85, 0x54, 0x33, 0x30, 0x3e, 0x59, 0x80, 0xa0, 0xaf, 0xae, 0xa9, 0xa2, 0x96, 0x89, 0x74, - 0x56, 0x3b, 0x3b, 0x56, 0x78, 0x9e, 0xbb, 0xbe, 0xaa, 0x93, 0x7c, 0x67, 0x60, 0x63, 0x63, 0x61, - 0x68, 0x83, 0xa8, 0xc1, 0xc5, 0xae, 0x81, 0x52, 0x38, 0x33, 0x43, 0x64, 0x8a, 0xa4, 0xb0, 0xb0, - 0xaa, 0x9c, 0x87, 0x71, 0x5f, 0x57, 0x5d, 0x6c, 0x7d, 0x8c, 0x96, 0x97, 0x90, 0x84, 0x77, 0x72, - 0x70, 0x71, 0x72, 0x73, 0x7b, 0x8e, 0xa3, 0xa9, 0x92, 0x64, 0x33, 0x1e, 0x39, 0x79, 0xb4, 0xd1, - 0xd3, 0xbe, 0xa1, 0x88, 0x71, 0x65, 0x61, 0x5c, 0x53, 0x53, 0x6d, 0xa1, 0xd2, 0xdd, 0xbf, 0x87, - 0x53, 0x35, 0x32, 0x43, 0x5d, 0x79, 0x8d, 0x97, 0x9e, 0xa7, 0xb0, 0xb0, 0x95, 0x67, 0x3f, 0x33, - 0x4b, 0x78, 0xa3, 0xba, 0xbb, 0xb0, 0xa0, 0x8b, 0x77, 0x6d, 0x63, 0x54, 0x4b, 0x53, 0x6f, 0x97, - 0xb8, 0xbc, 0xa2, 0x7c, 0x5c, 0x4d, 0x4d, 0x5b, 0x72, 0x8a, 0x9b, 0xa1, 0xa2, 0xa3, 0x9f, 0x92, - 0x79, 0x5e, 0x52, 0x5e, 0x78, 0x94, 0xa3, 0xa2, 0x92, 0x79, 0x69, 0x65, 0x6c, 0x75, 0x76, 0x73, - 0x76, 0x83, 0x91, 0x9d, 0x9c, 0x8b, 0x75, 0x67, 0x63, 0x6d, 0x81, 0x99, 0xae, 0xb5, 0xa1, 0x66, - 0x1f, 0x8, 0x2d, 0x74, 0xbb, 0xda, 0xce, 0xb5, 0x9f, 0x88, 0x6e, 0x5d, 0x55, 0x51, 0x4d, 0x54, - 0x72, 0xa6, 0xd0, 0xd6, 0xb5, 0x7b, 0x4a, 0x34, 0x35, 0x4b, 0x66, 0x7e, 0x90, 0x9d, 0xa8, 0xb2, - 0xb6, 0xa6, 0x81, 0x53, 0x39, 0x3f, 0x5c, 0x84, 0xaa, 0xc0, 0xb7, 0x9a, 0x84, 0x77, 0x6b, 0x5e, - 0x55, 0x54, 0x58, 0x6c, 0x91, 0xab, 0xb4, 0xad, 0x94, 0x6f, 0x52, 0x50, 0x61, 0x75, 0x86, 0x93, - 0x9c, 0xa1, 0xa4, 0x9f, 0x8d, 0x70, 0x5b, 0x50, 0x55, 0x68, 0x84, 0x9a, 0x9e, 0x93, 0x84, 0x76, - 0x6f, 0x6f, 0x75, 0x79, 0x7c, 0x85, 0x8d, 0x90, 0x8d, 0x88, 0x7e, 0x71, 0x67, 0x68, 0x73, 0x84, - 0x93, 0x9f, 0xa0, 0x93, 0x6c, 0x35, 0x17, 0x26, 0x57, 0x9b, 0xd4, 0xf0, 0xe9, 0xc5, 0x98, 0x6c, - 0x4d, 0x3f, 0x3b, 0x40, 0x56, 0x7c, 0xaf, 0xdb, 0xe1, 0xba, 0x76, 0x3d, 0x1e, 0x1e, 0x39, 0x60, - 0x91, 0xb9, 0xc6, 0xc2, 0xc0, 0xb9, 0x9a, 0x6a, 0x44, 0x38, 0x42, 0x69, 0xa0, 0xc2, 0xc5, 0xb5, - 0x9b, 0x71, 0x4a, 0x3f, 0x46, 0x4a, 0x54, 0x6d, 0x90, 0xaf, 0xc1, 0xc0, 0xa7, 0x7e, 0x5f, 0x55, - 0x56, 0x66, 0x83, 0x9e, 0xa8, 0xa6, 0xa2, 0x9a, 0x88, 0x6c, 0x54, 0x40, 0x3d, 0x4e, 0x6e, 0x8e, - 0xa5, 0xb1, 0xab, 0x9a, 0x86, 0x79, 0x75, 0x72, 0x70, 0x70, 0x71, 0x79, 0x86, 0x90, 0x91, 0x89, - 0x7d, 0x72, 0x67, 0x64, 0x6b, 0x75, 0x7b, 0x82, 0x8a, 0x93, 0x98, 0x99, 0x94, 0x89, 0x79, 0x61, - 0x40, 0x2a, 0x3c, 0x7a, 0xc5, 0xf6, 0xed, 0xb9, 0x7d, 0x56, 0x49, 0x46, 0x41, 0x45, 0x5a, 0x7e, - 0xa8, 0xc4, 0xcd, 0xbe, 0x97, 0x61, 0x33, 0x21, 0x3a, 0x6d, 0x9e, 0xb3, 0xb5, 0xb3, 0xad, 0x9d, - 0x81, 0x5d, 0x41, 0x3b, 0x4b, 0x6e, 0x9a, 0xbf, 0xc9, 0xad, 0x80, 0x54, 0x3f, 0x47, 0x59, 0x6b, - 0x7c, 0x94, 0xac, 0xb7, 0xb0, 0xa0, 0x89, 0x6c, 0x52, 0x49, 0x54, 0x6d, 0x8a, 0x99, 0x99, 0x94, - 0x90, 0x8b, 0x80, 0x71, 0x68, 0x67, 0x6a, 0x74, 0x85, 0x93, 0x9b, 0x99, 0x91, 0x85, 0x7b, 0x78, - 0x76, 0x72, 0x72, 0x77, 0x82, 0x89, 0x8b, 0x89, 0x83, 0x7a, 0x74, 0x6f, 0x6f, 0x76, 0x85, 0x91, - 0x91, 0x89, 0x82, 0x7c, 0x7c, 0x80, 0x8a, 0x94, 0x99, 0x8c, 0x54, 0x20, 0x1c, 0x43, 0x92, 0xda, - 0xef, 0xd6, 0xb0, 0x90, 0x71, 0x53, 0x3f, 0x44, 0x56, 0x61, 0x71, 0x9a, 0xca, 0xd8, 0xb0, 0x66, - 0x2c, 0x25, 0x3f, 0x63, 0x83, 0x9f, 0xb7, 0xc2, 0xb8, 0xa3, 0x8f, 0x7b, 0x61, 0x41, 0x32, 0x4b, - 0x8a, 0xc0, 0xc3, 0xa9, 0x8d, 0x73, 0x57, 0x43, 0x49, 0x5f, 0x74, 0x84, 0x96, 0xa7, 0xb4, 0xbb, - 0xad, 0x85, 0x5c, 0x53, 0x5d, 0x63, 0x6b, 0x81, 0x94, 0x9a, 0x96, 0x92, 0x8c, 0x80, 0x6f, 0x5b, - 0x4d, 0x53, 0x74, 0x95, 0xa1, 0xa0, 0x9d, 0x94, 0x83, 0x73, 0x6d, 0x6f, 0x71, 0x78, 0x83, 0x8a, - 0x91, 0x96, 0x8b, 0x74, 0x63, 0x61, 0x69, 0x72, 0x7d, 0x8b, 0x91, 0x8e, 0x87, 0x7e, 0x7e, 0x84, - 0x87, 0x84, 0x81, 0x81, 0x84, 0x85, 0x86, 0x89, 0x8b, 0x85, 0x6b, 0x47, 0x31, 0x40, 0x77, 0xbc, - 0xe3, 0xda, 0xae, 0x7e, 0x64, 0x5f, 0x62, 0x5a, 0x50, 0x57, 0x73, 0x9b, 0xba, 0xc3, 0xb0, 0x89, - 0x5a, 0x39, 0x34, 0x4f, 0x7a, 0x9a, 0xa3, 0x9f, 0xa0, 0xa4, 0x9e, 0x88, 0x6a, 0x57, 0x51, 0x58, - 0x6d, 0x8b, 0xa0, 0xa4, 0x95, 0x7e, 0x6d, 0x68, 0x6f, 0x72, 0x6d, 0x6b, 0x77, 0x8e, 0x9e, 0xa2, - 0x9e, 0x93, 0x7e, 0x6e, 0x69, 0x6f, 0x78, 0x7e, 0x81, 0x7b, 0x7a, 0x85, 0x8d, 0x8b, 0x83, 0x7a, - 0x75, 0x73, 0x75, 0x7d, 0x87, 0x87, 0x84, 0x81, 0x81, 0x84, 0x88, 0x88, 0x81, 0x7a, 0x7b, 0x80, - 0x82, 0x7e, 0x7a, 0x75, 0x72, 0x74, 0x7a, 0x83, 0x89, 0x8b, 0x86, 0x81, 0x7c, 0x7b, 0x7a, 0x76, - 0x71, 0x74, 0x82, 0x92, 0x9e, 0x9f, 0x92, 0x7b, 0x6b, 0x6a, 0x75, 0x7e, 0x75, 0x56, 0x3f, 0x4b, - 0x81, 0xc9, 0xf2, 0xe0, 0xa2, 0x61, 0x44, 0x51, 0x6a, 0x72, 0x6b, 0x65, 0x72, 0x92, 0xab, 0xaf, - 0x9e, 0x7a, 0x55, 0x3c, 0x41, 0x60, 0x92, 0xb3, 0xb4, 0xa1, 0x8e, 0x8d, 0x8f, 0x84, 0x6a, 0x55, - 0x53, 0x63, 0x7d, 0x99, 0xa8, 0xa5, 0x8d, 0x70, 0x5f, 0x5f, 0x6b, 0x78, 0x80, 0x80, 0x83, 0x92, - 0xa2, 0xa2, 0x91, 0x7c, 0x6d, 0x64, 0x65, 0x72, 0x82, 0x87, 0x83, 0x78, 0x72, 0x74, 0x7d, 0x84, - 0x82, 0x7c, 0x7c, 0x85, 0x8c, 0x8d, 0x8b, 0x86, 0x7a, 0x72, 0x72, 0x78, 0x7e, 0x81, 0x80, 0x7a, - 0x77, 0x7d, 0x87, 0x8a, 0x86, 0x7d, 0x77, 0x73, 0x73, 0x7a, 0x82, 0x86, 0x84, 0x82, 0x80, 0x7b, - 0x79, 0x78, 0x76, 0x76, 0x7d, 0x84, 0x87, 0x86, 0x83, 0x7e, 0x7d, 0x80, 0x84, 0x85, 0x82, 0x7b, - 0x76, 0x75, 0x79, 0x80, 0x87, 0x8a, 0x84, 0x73, 0x61, 0x58, 0x60, 0x7b, 0x9e, 0xb5, 0xb5, 0xa0, - 0x83, 0x6a, 0x60, 0x65, 0x6f, 0x74, 0x73, 0x74, 0x80, 0x91, 0xa0, 0x9f, 0x8a, 0x6c, 0x5a, 0x5b, - 0x6b, 0x83, 0x95, 0x9e, 0x9a, 0x92, 0x8b, 0x85, 0x80, 0x78, 0x6d, 0x66, 0x67, 0x75, 0x8c, 0x9c, - 0x9f, 0x94, 0x81, 0x71, 0x6a, 0x6c, 0x74, 0x7b, 0x82, 0x87, 0x8d, 0x92, 0x95, 0x91, 0x87, 0x76, - 0x6a, 0x68, 0x6f, 0x79, 0x81, 0x83, 0x81, 0x7c, 0x7b, 0x80, 0x85, 0x89, 0x8a, 0x88, 0x85, 0x82, - 0x81, 0x80, 0x7a, 0x75, 0x73, 0x74, 0x7a, 0x83, 0x88, 0x87, 0x82, 0x7d, 0x79, 0x78, 0x7a, 0x7d, - 0x7d, 0x7e, 0x83, 0x85, 0x84, 0x80, 0x7c, 0x7c, 0x7b, 0x78, 0x76, 0x7b, 0x84, 0x89, 0x8b, 0x86, - 0x81, 0x7e, 0x81, 0x83, 0x84, 0x85, 0x8b, 0x91, 0x92, 0x8d, 0x81, 0x5e, 0x30, 0x25, 0x3e, 0x65, - 0xa8, 0xe9, 0xf8, 0xda, 0xac, 0x83, 0x5b, 0x3a, 0x28, 0x30, 0x4a, 0x6a, 0x91, 0xbd, 0xdc, 0xd4, - 0x9a, 0x52, 0x24, 0x1f, 0x3c, 0x69, 0x93, 0xb0, 0xc4, 0xc7, 0xbb, 0xa5, 0x85, 0x5f, 0x40, 0x32, - 0x3a, 0x58, 0x8a, 0xb8, 0xc3, 0xa8, 0x88, 0x77, 0x66, 0x52, 0x4f, 0x61, 0x75, 0x86, 0x9a, 0xb3, - 0xbd, 0xb1, 0x98, 0x77, 0x55, 0x46, 0x52, 0x69, 0x79, 0x87, 0x94, 0x9d, 0x95, 0x85, 0x7b, 0x71, - 0x63, 0x5d, 0x68, 0x7e, 0x96, 0xa8, 0xb2, 0xa5, 0x8d, 0x79, 0x6b, 0x5f, 0x58, 0x61, 0x71, 0x7c, - 0x85, 0x90, 0x96, 0x91, 0x85, 0x78, 0x6f, 0x6e, 0x77, 0x86, 0x8e, 0x8c, 0x89, 0x86, 0x80, 0x78, - 0x76, 0x75, 0x72, 0x71, 0x75, 0x7c, 0x84, 0x88, 0x88, 0x83, 0x7d, 0x7d, 0x86, 0x8c, 0x8e, 0x8c, - 0x89, 0x82, 0x78, 0x72, 0x6f, 0x70, 0x72, 0x76, 0x80, 0x86, 0x8a, 0x8c, 0x89, 0x82, 0x7a, 0x73, - 0x67, 0x5a, 0x57, 0x65, 0x85, 0xb0, 0xcf, 0xcf, 0xaf, 0x7a, 0x4f, 0x3f, 0x47, 0x5f, 0x76, 0x81, - 0x85, 0x8f, 0x9e, 0xa9, 0xa2, 0x86, 0x63, 0x4b, 0x4c, 0x66, 0x8a, 0xa5, 0xb0, 0xaa, 0x97, 0x83, - 0x76, 0x71, 0x6c, 0x63, 0x5e, 0x63, 0x75, 0x8f, 0xa3, 0xa5, 0x96, 0x80, 0x6b, 0x63, 0x69, 0x76, - 0x84, 0x8a, 0x8e, 0x91, 0x93, 0x92, 0x8c, 0x81, 0x6e, 0x60, 0x62, 0x6d, 0x79, 0x82, 0x85, 0x83, - 0x80, 0x80, 0x84, 0x87, 0x84, 0x7c, 0x79, 0x7c, 0x84, 0x8d, 0x91, 0x8c, 0x80, 0x74, 0x6f, 0x6f, - 0x72, 0x78, 0x7d, 0x81, 0x83, 0x85, 0x87, 0x86, 0x83, 0x80, 0x7e, 0x80, 0x84, 0x88, 0x8a, 0x88, - 0x82, 0x77, 0x6f, 0x6c, 0x6f, 0x77, 0x82, 0x8a, 0x8c, 0x8d, 0x8d, 0x88, 0x7c, 0x72, 0x6f, 0x73, - 0x7c, 0x87, 0x8e, 0x91, 0x8e, 0x87, 0x80, 0x7a, 0x76, 0x76, 0x76, 0x76, 0x79, 0x81, 0x88, 0x88, - 0x7c, 0x6a, 0x5c, 0x5b, 0x6f, 0x93, 0xb4, 0xc5, 0xb9, 0x97, 0x6d, 0x55, 0x55, 0x64, 0x73, 0x79, - 0x77, 0x78, 0x84, 0x97, 0xa3, 0x9c, 0x83, 0x61, 0x50, 0x58, 0x71, 0x92, 0xa5, 0xa4, 0x98, 0x8b, - 0x85, 0x83, 0x7b, 0x6f, 0x63, 0x5d, 0x66, 0x7d, 0x96, 0xa4, 0xa2, 0x8e, 0x74, 0x64, 0x65, 0x71, - 0x81, 0x89, 0x8e, 0x8f, 0x90, 0x92, 0x91, 0x8a, 0x7a, 0x6b, 0x66, 0x6b, 0x78, 0x87, 0x92, 0x94, - 0x8b, 0x7d, 0x73, 0x6f, 0x70, 0x73, 0x7a, 0x85, 0x90, 0x95, 0x93, 0x8b, 0x7e, 0x73, 0x6d, 0x6e, - 0x75, 0x80, 0x86, 0x88, 0x85, 0x82, 0x81, 0x80, 0x7d, 0x7a, 0x77, 0x77, 0x78, 0x7e, 0x85, 0x8c, - 0x8e, 0x8b, 0x85, 0x82, 0x83, 0x82, 0x7d, 0x76, 0x73, 0x78, 0x7e, 0x82, 0x82, 0x84, 0x87, 0x86, - 0x82, 0x7b, 0x77, 0x79, 0x7b, 0x79, 0x79, 0x83, 0x92, 0x9b, 0x98, 0x87, 0x65, 0x38, 0x24, 0x38, - 0x66, 0xb3, 0xf1, 0xfe, 0xd9, 0xa3, 0x78, 0x56, 0x37, 0x21, 0x24, 0x41, 0x68, 0x95, 0xc5, 0xe6, - 0xdd, 0xa3, 0x51, 0x1b, 0x17, 0x3b, 0x73, 0xa4, 0xc6, 0xd2, 0xcc, 0xb9, 0x9a, 0x73, 0x4b, 0x30, - 0x2e, 0x41, 0x64, 0x99, 0xc9, 0xcd, 0xa8, 0x7e, 0x67, 0x5c, 0x51, 0x55, 0x71, 0x8d, 0x9d, 0xa9, - 0xb2, 0xab, 0x93, 0x76, 0x5c, 0x49, 0x49, 0x62, 0x82, 0x8f, 0x8f, 0x92, 0x92, 0x88, 0x77, 0x6f, - 0x6f, 0x6d, 0x6c, 0x7a, 0x90, 0x9e, 0xa3, 0xa1, 0x90, 0x75, 0x68, 0x6a, 0x6c, 0x6c, 0x74, 0x82, - 0x8a, 0x8b, 0x8b, 0x8b, 0x87, 0x7d, 0x76, 0x76, 0x7d, 0x86, 0x8f, 0x93, 0x8e, 0x85, 0x80, 0x7d, - 0x78, 0x74, 0x76, 0x78, 0x77, 0x79, 0x7e, 0x82, 0x85, 0x87, 0x89, 0x88, 0x86, 0x83, 0x80, 0x7b, - 0x78, 0x78, 0x7a, 0x7d, 0x82, 0x87, 0x8d, 0x8d, 0x86, 0x7e, 0x74, 0x6c, 0x6c, 0x71, 0x78, 0x81, - 0x89, 0x8c, 0x89, 0x86, 0x85, 0x84, 0x81, 0x7a, 0x78, 0x7a, 0x80, 0x87, 0x8c, 0x8e, 0x88, 0x7e, - 0x75, 0x70, 0x6f, 0x72, 0x71, 0x68, 0x5f, 0x64, 0x7d, 0xa7, 0xcc, 0xd9, 0xc0, 0x8a, 0x51, 0x2d, - 0x2f, 0x53, 0x80, 0x9f, 0xa9, 0xa0, 0x92, 0x88, 0x7e, 0x72, 0x61, 0x52, 0x52, 0x66, 0x8b, 0xae, - 0xbf, 0xb8, 0x9b, 0x77, 0x5f, 0x5a, 0x62, 0x6f, 0x79, 0x81, 0x86, 0x8e, 0x97, 0x98, 0x8e, 0x78, - 0x63, 0x59, 0x60, 0x74, 0x8e, 0x9d, 0xa0, 0x99, 0x8c, 0x81, 0x77, 0x6f, 0x69, 0x65, 0x68, 0x73, - 0x84, 0x92, 0x97, 0x92, 0x83, 0x71, 0x68, 0x68, 0x70, 0x7c, 0x88, 0x8f, 0x91, 0x8e, 0x87, 0x7d, - 0x74, 0x6c, 0x6a, 0x73, 0x83, 0x92, 0x9a, 0x98, 0x8b, 0x79, 0x6b, 0x65, 0x67, 0x6f, 0x7b, 0x87, - 0x8f, 0x92, 0x92, 0x8f, 0x86, 0x79, 0x6c, 0x65, 0x67, 0x72, 0x83, 0x90, 0x97, 0x96, 0x8e, 0x7e, - 0x6e, 0x67, 0x66, 0x6a, 0x73, 0x7e, 0x8c, 0x99, 0xa1, 0x9f, 0x94, 0x82, 0x6e, 0x5f, 0x5a, 0x63, - 0x78, 0x92, 0x9e, 0x9b, 0x8f, 0x82, 0x75, 0x6b, 0x68, 0x6a, 0x72, 0x82, 0x92, 0x9b, 0x97, 0x81, - 0x5c, 0x3d, 0x44, 0x76, 0xbf, 0xef, 0xe6, 0xa9, 0x61, 0x38, 0x3d, 0x5c, 0x74, 0x72, 0x64, 0x65, - 0x82, 0xaf, 0xcb, 0xbb, 0x87, 0x50, 0x37, 0x48, 0x74, 0x9d, 0xb2, 0xb0, 0xa0, 0x8c, 0x7c, 0x78, - 0x77, 0x70, 0x5e, 0x4e, 0x53, 0x71, 0x9a, 0xb0, 0xa9, 0x92, 0x77, 0x66, 0x62, 0x6a, 0x78, 0x80, - 0x81, 0x85, 0x91, 0x9b, 0x9e, 0x94, 0x81, 0x64, 0x4c, 0x50, 0x70, 0x8d, 0x96, 0x99, 0x93, 0x84, - 0x74, 0x72, 0x79, 0x79, 0x78, 0x7b, 0x84, 0x8c, 0x91, 0x94, 0x8c, 0x78, 0x68, 0x68, 0x74, 0x7d, - 0x83, 0x87, 0x83, 0x79, 0x75, 0x7b, 0x82, 0x87, 0x8a, 0x86, 0x7e, 0x78, 0x7b, 0x7e, 0x81, 0x83, - 0x84, 0x84, 0x81, 0x7b, 0x76, 0x74, 0x76, 0x7a, 0x83, 0x8c, 0x91, 0x8f, 0x85, 0x76, 0x68, 0x65, - 0x6c, 0x76, 0x81, 0x8b, 0x92, 0x95, 0x93, 0x8e, 0x85, 0x79, 0x6e, 0x66, 0x65, 0x6e, 0x7e, 0x90, - 0x98, 0x95, 0x8b, 0x7c, 0x70, 0x6c, 0x6d, 0x74, 0x7b, 0x82, 0x88, 0x8a, 0x88, 0x85, 0x82, 0x7c, - 0x78, 0x76, 0x78, 0x7a, 0x7d, 0x81, 0x86, 0x89, 0x8a, 0x86, 0x80, 0x77, 0x6f, 0x6e, 0x73, 0x7e, - 0x8c, 0x94, 0x93, 0x87, 0x75, 0x65, 0x5b, 0x5c, 0x6b, 0x86, 0xa0, 0xad, 0xaa, 0x98, 0x7c, 0x62, - 0x57, 0x59, 0x63, 0x72, 0x81, 0x8d, 0x95, 0x97, 0x93, 0x88, 0x78, 0x6a, 0x64, 0x69, 0x75, 0x87, - 0x95, 0x9b, 0x98, 0x90, 0x85, 0x78, 0x6f, 0x6c, 0x6c, 0x71, 0x7a, 0x85, 0x8d, 0x91, 0x8b, 0x81, - 0x75, 0x6d, 0x6d, 0x74, 0x7d, 0x87, 0x8d, 0x8d, 0x8a, 0x85, 0x7d, 0x77, 0x74, 0x73, 0x74, 0x78, - 0x7e, 0x85, 0x89, 0x89, 0x86, 0x81, 0x7a, 0x76, 0x76, 0x77, 0x7c, 0x83, 0x88, 0x89, 0x88, 0x84, - 0x7d, 0x7a, 0x78, 0x77, 0x7a, 0x7e, 0x82, 0x84, 0x85, 0x83, 0x7e, 0x79, 0x74, 0x72, 0x76, 0x80, - 0x8a, 0x92, 0x95, 0x93, 0x8b, 0x81, 0x79, 0x73, 0x6f, 0x6e, 0x70, 0x76, 0x7d, 0x88, 0x8f, 0x8f, - 0x8a, 0x82, 0x7b, 0x79, 0x79, 0x7d, 0x83, 0x85, 0x86, 0x88, 0x83, 0x7a, 0x78, 0x7e, 0x81, 0x80, - 0x82, 0x86, 0x86, 0x83, 0x7d, 0x76, 0x6f, 0x6d, 0x74, 0x81, 0x8e, 0x99, 0x9e, 0x99, 0x86, 0x73, - 0x69, 0x66, 0x6a, 0x75, 0x88, 0x99, 0x9f, 0x95, 0x72, 0x3e, 0x20, 0x3f, 0x90, 0xdb, 0xf9, 0xe4, - 0xad, 0x78, 0x57, 0x48, 0x3d, 0x3e, 0x50, 0x71, 0x8f, 0x9f, 0xaf, 0xb5, 0xa4, 0x76, 0x47, 0x3c, - 0x55, 0x80, 0xa5, 0xb3, 0xad, 0xa0, 0x90, 0x7a, 0x6a, 0x64, 0x61, 0x5d, 0x61, 0x76, 0x92, 0xa4, - 0xa8, 0x9e, 0x82, 0x5d, 0x4e, 0x5f, 0x79, 0x88, 0x92, 0xa4, 0xaa, 0x9a, 0x87, 0x7d, 0x74, 0x62, - 0x57, 0x62, 0x76, 0x87, 0x97, 0xa0, 0x98, 0x81, 0x71, 0x6c, 0x67, 0x63, 0x6b, 0x83, 0x94, 0x9b, - 0xa0, 0xa2, 0x95, 0x79, 0x64, 0x5c, 0x5e, 0x66, 0x77, 0x88, 0x8e, 0x8d, 0x8e, 0x8c, 0x81, 0x73, - 0x71, 0x73, 0x72, 0x76, 0x85, 0x93, 0x96, 0x91, 0x89, 0x7e, 0x74, 0x72, 0x74, 0x75, 0x75, 0x79, - 0x7c, 0x7e, 0x80, 0x82, 0x86, 0x85, 0x82, 0x7e, 0x7b, 0x78, 0x79, 0x7c, 0x81, 0x85, 0x85, 0x82, - 0x7d, 0x76, 0x72, 0x75, 0x7a, 0x82, 0x89, 0x8b, 0x87, 0x81, 0x7a, 0x76, 0x76, 0x79, 0x7c, 0x7d, - 0x7d, 0x7d, 0x7e, 0x81, 0x83, 0x85, 0x85, 0x85, 0x84, 0x81, 0x7d, 0x79, 0x77, 0x75, 0x74, 0x77, - 0x7c, 0x82, 0x87, 0x88, 0x84, 0x7d, 0x77, 0x73, 0x73, 0x7a, 0x84, 0x8b, 0x90, 0x8f, 0x8b, 0x85, - 0x7d, 0x79, 0x76, 0x74, 0x74, 0x78, 0x7d, 0x84, 0x88, 0x8b, 0x89, 0x84, 0x7e, 0x7b, 0x7a, 0x77, - 0x6e, 0x62, 0x5a, 0x62, 0x7a, 0xa2, 0xc5, 0xcb, 0xae, 0x77, 0x45, 0x31, 0x42, 0x6a, 0x8f, 0x9a, - 0x94, 0x87, 0x84, 0x8c, 0x93, 0x88, 0x6a, 0x50, 0x4f, 0x6a, 0x97, 0xb9, 0xbf, 0xa8, 0x85, 0x65, - 0x57, 0x5c, 0x69, 0x77, 0x80, 0x82, 0x86, 0x92, 0x9e, 0x9e, 0x8b, 0x6d, 0x58, 0x56, 0x67, 0x83, - 0x9a, 0xa6, 0xa3, 0x91, 0x81, 0x77, 0x71, 0x6b, 0x68, 0x6c, 0x76, 0x82, 0x8e, 0x97, 0x97, 0x86, - 0x71, 0x68, 0x6b, 0x73, 0x7d, 0x88, 0x8d, 0x88, 0x84, 0x84, 0x85, 0x81, 0x7a, 0x75, 0x72, 0x74, - 0x7a, 0x84, 0x8b, 0x89, 0x81, 0x7b, 0x79, 0x78, 0x79, 0x81, 0x87, 0x88, 0x87, 0x87, 0x86, 0x81, - 0x7b, 0x78, 0x77, 0x7a, 0x81, 0x87, 0x8a, 0x85, 0x7c, 0x77, 0x74, 0x75, 0x7b, 0x84, 0x88, 0x86, - 0x83, 0x7e, 0x7b, 0x79, 0x77, 0x78, 0x7d, 0x87, 0x8f, 0x91, 0x89, 0x7b, 0x71, 0x6a, 0x69, 0x6f, - 0x7d, 0x8e, 0x96, 0x95, 0x8f, 0x87, 0x7c, 0x72, 0x6d, 0x6c, 0x71, 0x7d, 0x88, 0x8b, 0x88, 0x85, - 0x82, 0x7b, 0x74, 0x73, 0x7c, 0x88, 0x8e, 0x8e, 0x8a, 0x84, 0x7a, 0x74, 0x73, 0x78, 0x83, 0x8c, - 0x8e, 0x7e, 0x60, 0x45, 0x45, 0x6b, 0xac, 0xe2, 0xec, 0xc1, 0x77, 0x3e, 0x34, 0x52, 0x72, 0x7d, - 0x75, 0x70, 0x7e, 0x9d, 0xb2, 0xa9, 0x85, 0x59, 0x44, 0x49, 0x67, 0x91, 0xb2, 0xbc, 0xad, 0x8e, - 0x71, 0x67, 0x69, 0x6c, 0x68, 0x60, 0x67, 0x81, 0x9f, 0xae, 0xa5, 0x8d, 0x6e, 0x57, 0x51, 0x66, - 0x89, 0x9d, 0x9c, 0x91, 0x8a, 0x86, 0x81, 0x81, 0x80, 0x72, 0x63, 0x63, 0x76, 0x88, 0x8c, 0x8e, - 0x8b, 0x7b, 0x6c, 0x6f, 0x7e, 0x89, 0x8a, 0x88, 0x85, 0x80, 0x7d, 0x84, 0x8a, 0x86, 0x7b, 0x76, - 0x7a, 0x7c, 0x7e, 0x87, 0x8b, 0x83, 0x78, 0x78, 0x7d, 0x82, 0x85, 0x87, 0x84, 0x7b, 0x76, 0x78, - 0x7d, 0x7e, 0x80, 0x83, 0x86, 0x86, 0x88, 0x8b, 0x87, 0x79, 0x6b, 0x66, 0x66, 0x6b, 0x76, 0x84, - 0x8f, 0x93, 0x94, 0x93, 0x8d, 0x81, 0x74, 0x6a, 0x63, 0x63, 0x6d, 0x7c, 0x8c, 0x97, 0x9b, 0x96, - 0x87, 0x75, 0x6b, 0x69, 0x6e, 0x77, 0x81, 0x86, 0x86, 0x87, 0x89, 0x8a, 0x88, 0x83, 0x7c, 0x76, - 0x73, 0x75, 0x7b, 0x82, 0x85, 0x84, 0x81, 0x80, 0x80, 0x81, 0x84, 0x84, 0x82, 0x80, 0x7e, 0x7c, - 0x79, 0x77, 0x75, 0x77, 0x7e, 0x87, 0x90, 0x94, 0x90, 0x89, 0x7d, 0x73, 0x6b, 0x68, 0x6a, 0x71, - 0x79, 0x86, 0x90, 0x97, 0x96, 0x8f, 0x82, 0x74, 0x6d, 0x6f, 0x77, 0x82, 0x8b, 0x8f, 0x8c, 0x84, - 0x7b, 0x76, 0x76, 0x76, 0x77, 0x79, 0x7c, 0x81, 0x87, 0x8a, 0x8a, 0x87, 0x81, 0x75, 0x63, 0x53, - 0x51, 0x68, 0x99, 0xcc, 0xe8, 0xd5, 0x98, 0x51, 0x29, 0x2b, 0x4e, 0x7b, 0x93, 0x92, 0x86, 0x84, - 0x90, 0x98, 0x8d, 0x6f, 0x54, 0x4d, 0x64, 0x90, 0xb5, 0xc4, 0xb0, 0x8a, 0x66, 0x4e, 0x50, 0x62, - 0x79, 0x89, 0x8a, 0x89, 0x8e, 0x93, 0x91, 0x82, 0x6b, 0x5a, 0x59, 0x69, 0x86, 0xa3, 0xb2, 0xad, - 0x94, 0x77, 0x67, 0x61, 0x62, 0x69, 0x75, 0x80, 0x85, 0x8c, 0x96, 0x98, 0x89, 0x75, 0x6b, 0x69, - 0x6d, 0x7b, 0x8e, 0x96, 0x91, 0x87, 0x7e, 0x7a, 0x79, 0x7a, 0x7c, 0x7c, 0x7b, 0x7d, 0x84, 0x88, - 0x84, 0x7c, 0x77, 0x75, 0x77, 0x7e, 0x8a, 0x90, 0x8d, 0x86, 0x7d, 0x78, 0x75, 0x76, 0x79, 0x7c, - 0x7e, 0x80, 0x83, 0x86, 0x84, 0x7d, 0x77, 0x72, 0x70, 0x74, 0x7c, 0x84, 0x87, 0x89, 0x8a, 0x8a, - 0x89, 0x87, 0x82, 0x79, 0x70, 0x6a, 0x6b, 0x71, 0x79, 0x80, 0x86, 0x87, 0x85, 0x84, 0x83, 0x81, - 0x7e, 0x7d, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x78, 0x73, 0x73, 0x77, 0x7e, 0x85, 0x8c, 0x8f, 0x8d, - 0x86, 0x7c, 0x76, 0x77, 0x7b, 0x83, 0x88, 0x87, 0x82, 0x7b, 0x77, 0x76, 0x79, 0x7e, 0x82, 0x82, - 0x81, 0x82, 0x86, 0x88, 0x86, 0x80, 0x78, 0x74, 0x74, 0x77, 0x7d, 0x85, 0x88, 0x86, 0x80, 0x78, - 0x75, 0x78, 0x7d, 0x83, 0x88, 0x8d, 0x91, 0x94, 0x91, 0x87, 0x73, 0x58, 0x40, 0x3e, 0x5c, 0x94, - 0xcf, 0xe9, 0xd4, 0x99, 0x54, 0x30, 0x34, 0x54, 0x78, 0x90, 0x9a, 0x9a, 0x9d, 0x9e, 0x93, 0x74, - 0x4f, 0x38, 0x3c, 0x5f, 0x92, 0xbe, 0xcc, 0xbc, 0x98, 0x6e, 0x53, 0x4c, 0x58, 0x6c, 0x7b, 0x87, - 0x90, 0x9a, 0x9e, 0x98, 0x83, 0x68, 0x57, 0x55, 0x62, 0x7e, 0x9b, 0xab, 0xa5, 0x90, 0x7c, 0x6f, - 0x6b, 0x6c, 0x73, 0x7b, 0x7d, 0x7e, 0x85, 0x8c, 0x8a, 0x82, 0x79, 0x72, 0x6d, 0x6f, 0x7d, 0x8d, - 0x92, 0x8d, 0x86, 0x7d, 0x77, 0x76, 0x78, 0x7d, 0x7e, 0x7d, 0x80, 0x85, 0x86, 0x82, 0x7d, 0x78, - 0x72, 0x70, 0x78, 0x85, 0x8e, 0x90, 0x8c, 0x84, 0x7c, 0x78, 0x77, 0x7a, 0x7a, 0x79, 0x7b, 0x82, - 0x86, 0x88, 0x88, 0x83, 0x79, 0x72, 0x73, 0x7a, 0x82, 0x87, 0x88, 0x86, 0x82, 0x7c, 0x79, 0x7a, - 0x7a, 0x7c, 0x81, 0x85, 0x87, 0x87, 0x83, 0x7c, 0x78, 0x76, 0x77, 0x7c, 0x82, 0x83, 0x83, 0x83, - 0x84, 0x85, 0x87, 0x89, 0x88, 0x86, 0x82, 0x7b, 0x76, 0x71, 0x6f, 0x73, 0x7b, 0x84, 0x8c, 0x91, - 0x8e, 0x88, 0x82, 0x7c, 0x79, 0x76, 0x71, 0x6d, 0x6a, 0x6f, 0x7b, 0x8b, 0x9a, 0xa0, 0x9a, 0x8c, - 0x77, 0x67, 0x5f, 0x61, 0x6c, 0x7b, 0x8c, 0x99, 0x9d, 0x98, 0x8b, 0x79, 0x6c, 0x66, 0x69, 0x76, - 0x88, 0x95, 0x97, 0x90, 0x84, 0x75, 0x6b, 0x6a, 0x6e, 0x76, 0x81, 0x89, 0x8d, 0x8c, 0x8c, 0x88, - 0x81, 0x7a, 0x78, 0x7a, 0x7e, 0x82, 0x84, 0x80, 0x78, 0x74, 0x76, 0x7c, 0x86, 0x8d, 0x8f, 0x85, - 0x6e, 0x51, 0x44, 0x54, 0x85, 0xbf, 0xdf, 0xda, 0xab, 0x6a, 0x3d, 0x37, 0x4e, 0x69, 0x7c, 0x86, - 0x8a, 0x96, 0xa3, 0xa7, 0x95, 0x72, 0x53, 0x4a, 0x5b, 0x7e, 0xa5, 0xbd, 0xbd, 0xa2, 0x7c, 0x60, - 0x59, 0x64, 0x74, 0x7e, 0x80, 0x7e, 0x84, 0x8a, 0x8a, 0x84, 0x79, 0x70, 0x6d, 0x73, 0x87, 0x9c, - 0xa2, 0x97, 0x83, 0x70, 0x65, 0x65, 0x6c, 0x7b, 0x8a, 0x8e, 0x8a, 0x88, 0x85, 0x7b, 0x73, 0x70, - 0x71, 0x73, 0x79, 0x89, 0x96, 0x97, 0x8d, 0x81, 0x75, 0x71, 0x70, 0x76, 0x81, 0x84, 0x83, 0x83, - 0x86, 0x85, 0x7d, 0x78, 0x76, 0x74, 0x78, 0x81, 0x8c, 0x93, 0x8e, 0x83, 0x7a, 0x75, 0x72, 0x76, - 0x81, 0x87, 0x86, 0x85, 0x85, 0x81, 0x7a, 0x74, 0x70, 0x70, 0x74, 0x7c, 0x89, 0x90, 0x8f, 0x8a, - 0x82, 0x79, 0x75, 0x74, 0x78, 0x7e, 0x81, 0x82, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x7b, 0x7b, 0x7a, - 0x79, 0x7b, 0x7b, 0x7e, 0x85, 0x89, 0x89, 0x87, 0x81, 0x7d, 0x7e, 0x7c, 0x7d, 0x80, 0x7d, 0x79, - 0x78, 0x7c, 0x80, 0x82, 0x84, 0x86, 0x84, 0x81, 0x81, 0x81, 0x81, 0x80, 0x79, 0x70, 0x65, 0x62, - 0x6a, 0x7b, 0x91, 0xa4, 0xaa, 0xa0, 0x8d, 0x71, 0x5e, 0x59, 0x61, 0x74, 0x89, 0x96, 0x9c, 0x99, - 0x8d, 0x7b, 0x6b, 0x60, 0x5f, 0x69, 0x7c, 0x95, 0xa6, 0xa6, 0x98, 0x81, 0x6d, 0x63, 0x62, 0x6c, - 0x7b, 0x86, 0x8a, 0x8c, 0x8b, 0x84, 0x7b, 0x74, 0x71, 0x75, 0x7e, 0x88, 0x8d, 0x8b, 0x82, 0x75, - 0x6b, 0x6c, 0x77, 0x88, 0x94, 0x94, 0x84, 0x64, 0x45, 0x3b, 0x59, 0x90, 0xc3, 0xdd, 0xca, 0x92, - 0x5a, 0x47, 0x53, 0x6f, 0x82, 0x81, 0x76, 0x71, 0x7c, 0x8e, 0x95, 0x8c, 0x79, 0x68, 0x69, 0x7b, - 0x95, 0xa9, 0xab, 0x97, 0x74, 0x57, 0x53, 0x64, 0x7e, 0x95, 0x9b, 0x93, 0x89, 0x82, 0x78, 0x6b, - 0x61, 0x5f, 0x65, 0x73, 0x8c, 0xa7, 0xb6, 0xad, 0x91, 0x72, 0x60, 0x5e, 0x65, 0x73, 0x85, 0x8b, - 0x8b, 0x89, 0x88, 0x89, 0x83, 0x78, 0x71, 0x6e, 0x6d, 0x77, 0x87, 0x93, 0x94, 0x8b, 0x82, 0x7d, - 0x79, 0x7a, 0x80, 0x85, 0x86, 0x82, 0x7d, 0x7b, 0x79, 0x77, 0x7a, 0x80, 0x84, 0x86, 0x87, 0x87, - 0x83, 0x7b, 0x76, 0x76, 0x78, 0x7b, 0x81, 0x87, 0x8a, 0x8a, 0x87, 0x83, 0x7b, 0x74, 0x71, 0x73, - 0x78, 0x7e, 0x84, 0x87, 0x89, 0x86, 0x81, 0x7d, 0x7b, 0x79, 0x7a, 0x7e, 0x84, 0x86, 0x86, 0x85, - 0x83, 0x7d, 0x7a, 0x7b, 0x7d, 0x80, 0x81, 0x81, 0x81, 0x7c, 0x79, 0x79, 0x7a, 0x78, 0x78, 0x81, - 0x8b, 0x92, 0x93, 0x8d, 0x82, 0x74, 0x68, 0x63, 0x68, 0x75, 0x84, 0x90, 0x98, 0x96, 0x8b, 0x7b, - 0x70, 0x67, 0x63, 0x6c, 0x7b, 0x8a, 0x96, 0x9f, 0x9e, 0x93, 0x7e, 0x66, 0x4e, 0x41, 0x48, 0x60, - 0x88, 0xae, 0xc4, 0xc4, 0xb0, 0x90, 0x6b, 0x54, 0x4e, 0x57, 0x68, 0x7d, 0x95, 0xa3, 0xa4, 0x98, - 0x83, 0x68, 0x57, 0x58, 0x66, 0x7a, 0x8f, 0x9b, 0x99, 0x8d, 0x7d, 0x75, 0x75, 0x7a, 0x83, 0x86, - 0x84, 0x7e, 0x76, 0x6f, 0x6b, 0x6b, 0x70, 0x7d, 0x8c, 0x97, 0x9e, 0x9a, 0x8b, 0x76, 0x63, 0x56, - 0x59, 0x68, 0x7c, 0x92, 0xa1, 0xa7, 0xa1, 0x94, 0x7d, 0x60, 0x44, 0x35, 0x41, 0x6d, 0xa8, 0xd7, - 0xe2, 0xbf, 0x81, 0x45, 0x29, 0x3a, 0x67, 0x93, 0xa7, 0xa6, 0x99, 0x8c, 0x82, 0x78, 0x69, 0x58, - 0x54, 0x64, 0x84, 0xa7, 0xbe, 0xb9, 0x9c, 0x71, 0x4d, 0x43, 0x57, 0x78, 0x97, 0xa2, 0x9b, 0x8f, - 0x84, 0x77, 0x6c, 0x64, 0x64, 0x6a, 0x78, 0x8c, 0x9d, 0xa2, 0x96, 0x7d, 0x65, 0x5e, 0x66, 0x77, - 0x8b, 0x97, 0x94, 0x89, 0x7a, 0x71, 0x6e, 0x70, 0x73, 0x7b, 0x85, 0x8a, 0x8f, 0x91, 0x8d, 0x80, - 0x71, 0x66, 0x67, 0x72, 0x85, 0x95, 0x9d, 0x9a, 0x8e, 0x7d, 0x70, 0x69, 0x65, 0x68, 0x71, 0x7c, - 0x87, 0x90, 0x96, 0x97, 0x8f, 0x82, 0x73, 0x69, 0x66, 0x6b, 0x76, 0x81, 0x87, 0x8a, 0x8c, 0x8a, - 0x88, 0x84, 0x7e, 0x77, 0x72, 0x6e, 0x70, 0x75, 0x7c, 0x84, 0x89, 0x8b, 0x8b, 0x88, 0x82, 0x7b, - 0x74, 0x6f, 0x70, 0x78, 0x83, 0x8c, 0x91, 0x90, 0x88, 0x7b, 0x71, 0x6c, 0x6d, 0x73, 0x7d, 0x89, - 0x8f, 0x91, 0x8d, 0x87, 0x80, 0x78, 0x6f, 0x66, 0x68, 0x7a, 0x91, 0xa1, 0xa9, 0xa3, 0x8b, 0x6a, - 0x56, 0x53, 0x60, 0x78, 0x91, 0xa0, 0x9f, 0x95, 0x86, 0x79, 0x70, 0x68, 0x6a, 0x73, 0x83, 0x93, - 0x9b, 0x9a, 0x8f, 0x7a, 0x6a, 0x63, 0x63, 0x69, 0x70, 0x77, 0x82, 0x8c, 0x95, 0x9a, 0x93, 0x80, - 0x6a, 0x5f, 0x63, 0x76, 0x94, 0xae, 0xb6, 0xaa, 0x8f, 0x6f, 0x55, 0x47, 0x47, 0x52, 0x66, 0x7e, - 0x97, 0xab, 0xb3, 0xac, 0x98, 0x7e, 0x69, 0x5e, 0x5d, 0x68, 0x78, 0x86, 0x8f, 0x95, 0x92, 0x8d, - 0x87, 0x7e, 0x76, 0x72, 0x72, 0x72, 0x75, 0x79, 0x7e, 0x84, 0x89, 0x8c, 0x90, 0x95, 0x96, 0x94, - 0x8b, 0x77, 0x5f, 0x45, 0x34, 0x3b, 0x5f, 0x9b, 0xd2, 0xed, 0xdc, 0xab, 0x6e, 0x3e, 0x30, 0x43, - 0x68, 0x89, 0x9b, 0x9e, 0x99, 0x91, 0x87, 0x7a, 0x68, 0x59, 0x58, 0x67, 0x82, 0x98, 0xa3, 0x9e, - 0x8d, 0x78, 0x6e, 0x71, 0x7e, 0x90, 0x97, 0x8f, 0x7d, 0x69, 0x5d, 0x5b, 0x63, 0x74, 0x89, 0x9d, - 0xab, 0xad, 0xa4, 0x90, 0x71, 0x53, 0x42, 0x47, 0x61, 0x8a, 0xb0, 0xc7, 0xc1, 0xa1, 0x7c, 0x5b, - 0x4a, 0x48, 0x57, 0x70, 0x8a, 0x9f, 0xab, 0xab, 0xa0, 0x89, 0x6a, 0x55, 0x53, 0x65, 0x7e, 0x98, - 0xa6, 0xa4, 0x93, 0x7c, 0x6c, 0x66, 0x67, 0x6e, 0x79, 0x84, 0x89, 0x8d, 0x8c, 0x87, 0x7c, 0x71, - 0x6d, 0x71, 0x7b, 0x8b, 0x96, 0x98, 0x93, 0x83, 0x72, 0x68, 0x66, 0x6c, 0x75, 0x80, 0x8a, 0x90, - 0x94, 0x94, 0x8d, 0x81, 0x74, 0x6c, 0x69, 0x6d, 0x76, 0x80, 0x89, 0x8f, 0x93, 0x92, 0x8c, 0x83, - 0x79, 0x71, 0x6d, 0x6e, 0x73, 0x7b, 0x85, 0x8c, 0x91, 0x92, 0x8d, 0x85, 0x79, 0x72, 0x70, 0x73, - 0x79, 0x80, 0x85, 0x87, 0x85, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7a, 0x77, 0x75, 0x6f, 0x66, - 0x6f, 0x8f, 0xaf, 0xbe, 0xb9, 0x9c, 0x72, 0x47, 0x33, 0x3f, 0x5d, 0x83, 0xa7, 0xb9, 0xb9, 0xa9, - 0x8c, 0x70, 0x58, 0x49, 0x4d, 0x65, 0x87, 0xa3, 0xb0, 0xac, 0x94, 0x75, 0x5f, 0x5a, 0x65, 0x7a, - 0x91, 0x99, 0x90, 0x78, 0x64, 0x5d, 0x60, 0x6d, 0x7e, 0x92, 0xa0, 0xa5, 0xa2, 0x96, 0x86, 0x72, - 0x63, 0x61, 0x6a, 0x7a, 0x8a, 0x92, 0x8e, 0x7b, 0x6a, 0x61, 0x62, 0x6d, 0x81, 0x96, 0xa4, 0xa7, - 0x9d, 0x8c, 0x76, 0x66, 0x5d, 0x5b, 0x65, 0x78, 0x8e, 0xa1, 0xa7, 0x9e, 0x8d, 0x7a, 0x6c, 0x66, - 0x68, 0x73, 0x80, 0x86, 0x85, 0x7d, 0x76, 0x73, 0x75, 0x7d, 0x87, 0x8d, 0x8f, 0x8e, 0x89, 0x83, - 0x7b, 0x73, 0x67, 0x59, 0x57, 0x6d, 0x94, 0xb4, 0xbe, 0xac, 0x89, 0x67, 0x58, 0x59, 0x65, 0x77, - 0x8a, 0x99, 0x9d, 0x93, 0x82, 0x70, 0x64, 0x5e, 0x5f, 0x6b, 0x80, 0x98, 0xa9, 0xaa, 0x98, 0x7c, - 0x6a, 0x64, 0x69, 0x74, 0x82, 0x8f, 0x94, 0x8f, 0x82, 0x77, 0x72, 0x71, 0x70, 0x72, 0x7c, 0x8b, - 0x93, 0x93, 0x88, 0x78, 0x6d, 0x66, 0x68, 0x73, 0x86, 0x96, 0x9e, 0x9b, 0x91, 0x7d, 0x6e, 0x68, - 0x69, 0x6c, 0x71, 0x7d, 0x8d, 0x96, 0x95, 0x90, 0x88, 0x7d, 0x73, 0x6f, 0x71, 0x78, 0x82, 0x87, - 0x87, 0x83, 0x7d, 0x7c, 0x80, 0x83, 0x85, 0x85, 0x84, 0x81, 0x7b, 0x76, 0x74, 0x74, 0x76, 0x7b, - 0x84, 0x8b, 0x90, 0x90, 0x8a, 0x81, 0x78, 0x74, 0x73, 0x77, 0x7d, 0x84, 0x89, 0x8c, 0x89, 0x81, - 0x79, 0x75, 0x74, 0x77, 0x7e, 0x84, 0x88, 0x88, 0x84, 0x7e, 0x7b, 0x79, 0x78, 0x7c, 0x81, 0x86, - 0x89, 0x88, 0x85, 0x7e, 0x76, 0x72, 0x73, 0x77, 0x7d, 0x83, 0x87, 0x87, 0x85, 0x82, 0x80, 0x7d, - 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7e, 0x81, 0x83, 0x85, 0x84, 0x81, 0x7b, 0x77, 0x76, - 0x78, 0x7c, 0x81, 0x86, 0x88, 0x82, 0x75, 0x6f, 0x74, 0x80, 0x8b, 0x92, 0x92, 0x8a, 0x7b, 0x72, - 0x72, 0x76, 0x79, 0x7b, 0x7e, 0x7e, 0x7e, 0x83, 0x86, 0x83, 0x7a, 0x74, 0x7a, 0x87, 0x90, 0x92, - 0x8e, 0x81, 0x70, 0x67, 0x6c, 0x77, 0x87, 0x92, 0x93, 0x8a, 0x7a, 0x71, 0x70, 0x73, 0x78, 0x7d, - 0x82, 0x85, 0x89, 0x8c, 0x8c, 0x86, 0x79, 0x6e, 0x6a, 0x6f, 0x7b, 0x8a, 0x94, 0x95, 0x8b, 0x7e, - 0x75, 0x70, 0x6b, 0x68, 0x68, 0x6b, 0x71, 0x7d, 0x8f, 0x9e, 0xa4, 0xa0, 0x93, 0x82, 0x73, 0x6c, - 0x6d, 0x76, 0x80, 0x87, 0x8a, 0x88, 0x82, 0x7b, 0x76, 0x73, 0x72, 0x74, 0x7a, 0x84, 0x8c, 0x8f, - 0x8d, 0x88, 0x81, 0x7a, 0x78, 0x7c, 0x84, 0x8b, 0x8d, 0x8a, 0x82, 0x78, 0x71, 0x70, 0x73, 0x77, - 0x7d, 0x86, 0x8a, 0x8a, 0x88, 0x82, 0x7a, 0x76, 0x78, 0x7d, 0x86, 0x8d, 0x8f, 0x8c, 0x85, 0x7e, - 0x7b, 0x7a, 0x79, 0x79, 0x7c, 0x81, 0x84, 0x83, 0x81, 0x7c, 0x77, 0x77, 0x7a, 0x7d, 0x80, 0x7d, - 0x7a, 0x79, 0x80, 0x8b, 0x91, 0x90, 0x88, 0x7c, 0x75, 0x75, 0x77, 0x79, 0x7c, 0x80, 0x82, 0x82, - 0x7e, 0x7b, 0x77, 0x76, 0x76, 0x78, 0x7c, 0x83, 0x89, 0x8b, 0x87, 0x7e, 0x75, 0x6f, 0x70, 0x78, - 0x85, 0x92, 0x9a, 0x97, 0x8b, 0x7b, 0x6d, 0x65, 0x63, 0x69, 0x74, 0x84, 0x93, 0x9e, 0xa1, 0x9a, - 0x8b, 0x78, 0x69, 0x63, 0x68, 0x73, 0x7e, 0x8a, 0x91, 0x93, 0x91, 0x8d, 0x85, 0x7a, 0x70, 0x6c, - 0x6d, 0x74, 0x7e, 0x88, 0x8d, 0x8f, 0x8b, 0x83, 0x7c, 0x77, 0x74, 0x73, 0x75, 0x79, 0x7b, 0x82, - 0x8d, 0x95, 0x94, 0x8b, 0x7c, 0x6d, 0x62, 0x64, 0x74, 0x89, 0x96, 0x9b, 0x97, 0x88, 0x76, 0x6b, - 0x68, 0x69, 0x6f, 0x7a, 0x86, 0x8f, 0x93, 0x91, 0x8c, 0x83, 0x77, 0x6e, 0x6d, 0x73, 0x7c, 0x87, - 0x8d, 0x8c, 0x85, 0x7a, 0x75, 0x72, 0x72, 0x74, 0x79, 0x7d, 0x82, 0x87, 0x8a, 0x89, 0x84, 0x7c, - 0x77, 0x76, 0x7b, 0x80, 0x84, 0x85, 0x82, 0x7d, 0x7c, 0x81, 0x85, 0x86, 0x84, 0x80, 0x79, 0x75, - 0x77, 0x7b, 0x82, 0x87, 0x89, 0x8a, 0x89, 0x86, 0x84, 0x80, 0x7a, 0x74, 0x70, 0x72, 0x76, 0x79, - 0x7d, 0x82, 0x85, 0x86, 0x84, 0x83, 0x84, 0x82, 0x81, 0x78, 0x68, 0x5d, 0x65, 0x85, 0xa9, 0xc3, - 0xca, 0xb2, 0x84, 0x54, 0x37, 0x35, 0x47, 0x68, 0x8a, 0x9e, 0xa2, 0x9d, 0x92, 0x85, 0x74, 0x6b, - 0x6e, 0x7d, 0x92, 0x9f, 0xa1, 0x95, 0x7d, 0x66, 0x5b, 0x5f, 0x6f, 0x83, 0x94, 0x9c, 0x95, 0x87, - 0x78, 0x6e, 0x68, 0x6c, 0x77, 0x87, 0x92, 0x97, 0x95, 0x89, 0x7a, 0x6f, 0x69, 0x71, 0x80, 0x91, - 0x9d, 0x9e, 0x90, 0x76, 0x60, 0x54, 0x58, 0x6a, 0x86, 0x9d, 0xaa, 0xa7, 0x98, 0x81, 0x68, 0x59, - 0x55, 0x5e, 0x72, 0x8b, 0xa1, 0xad, 0xa9, 0x97, 0x80, 0x68, 0x5a, 0x57, 0x5f, 0x6d, 0x7d, 0x8c, - 0x94, 0x96, 0x92, 0x88, 0x7d, 0x76, 0x73, 0x76, 0x7c, 0x83, 0x86, 0x85, 0x81, 0x7a, 0x78, 0x79, - 0x7b, 0x82, 0x85, 0x84, 0x81, 0x7d, 0x7b, 0x7b, 0x7d, 0x7e, 0x7e, 0x80, 0x82, 0x84, 0x87, 0x86, - 0x82, 0x7e, 0x7c, 0x7e, 0x80, 0x7e, 0x7c, 0x78, 0x78, 0x7a, 0x81, 0x86, 0x88, 0x8a, 0x88, 0x85, - 0x80, 0x7b, 0x77, 0x74, 0x75, 0x77, 0x7b, 0x80, 0x85, 0x87, 0x88, 0x89, 0x88, 0x86, 0x84, 0x80, - 0x79, 0x75, 0x72, 0x72, 0x77, 0x7e, 0x86, 0x8a, 0x8d, 0x8d, 0x88, 0x81, 0x7b, 0x74, 0x6f, 0x70, - 0x74, 0x7b, 0x81, 0x87, 0x8a, 0x8a, 0x88, 0x85, 0x82, 0x7e, 0x7c, 0x76, 0x72, 0x72, 0x77, 0x83, - 0x8e, 0x92, 0x8d, 0x81, 0x75, 0x71, 0x74, 0x7b, 0x82, 0x86, 0x86, 0x88, 0x89, 0x8a, 0x87, 0x81, - 0x7a, 0x76, 0x77, 0x7b, 0x80, 0x81, 0x81, 0x81, 0x82, 0x83, 0x81, 0x7e, 0x7d, 0x7e, 0x81, 0x83, - 0x82, 0x7e, 0x7a, 0x78, 0x7b, 0x82, 0x88, 0x8a, 0x89, 0x85, 0x80, 0x7d, 0x7c, 0x7a, 0x74, 0x6e, - 0x6a, 0x6e, 0x7c, 0x8d, 0x9b, 0xa2, 0x9e, 0x93, 0x83, 0x70, 0x64, 0x5e, 0x60, 0x6d, 0x7d, 0x8d, - 0x98, 0x9a, 0x94, 0x87, 0x7a, 0x73, 0x70, 0x71, 0x75, 0x7b, 0x81, 0x85, 0x85, 0x84, 0x81, 0x7b, - 0x78, 0x76, 0x79, 0x80, 0x88, 0x8d, 0x8c, 0x86, 0x7d, 0x76, 0x74, 0x76, 0x7c, 0x85, 0x8b, 0x8d, - 0x8b, 0x84, 0x7a, 0x70, 0x6d, 0x72, 0x7c, 0x89, 0x93, 0x96, 0x91, 0x87, 0x7a, 0x6e, 0x69, 0x6c, - 0x77, 0x86, 0x91, 0x95, 0x90, 0x88, 0x7e, 0x76, 0x73, 0x75, 0x78, 0x7d, 0x83, 0x87, 0x89, 0x87, - 0x82, 0x7b, 0x79, 0x78, 0x78, 0x7a, 0x7e, 0x7d, 0x7b, 0x7c, 0x7e, 0x82, 0x88, 0x8d, 0x8e, 0x8a, - 0x83, 0x7a, 0x71, 0x6d, 0x6e, 0x75, 0x81, 0x8d, 0x95, 0x99, 0x95, 0x89, 0x78, 0x6a, 0x65, 0x69, - 0x76, 0x88, 0x95, 0x9b, 0x97, 0x8c, 0x7d, 0x6f, 0x67, 0x67, 0x6d, 0x77, 0x84, 0x8e, 0x93, 0x93, - 0x8e, 0x85, 0x7b, 0x73, 0x6f, 0x6f, 0x73, 0x7a, 0x81, 0x85, 0x87, 0x88, 0x87, 0x86, 0x82, 0x7e, - 0x7c, 0x7a, 0x7a, 0x79, 0x79, 0x7b, 0x7d, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x82, 0x84, - 0x85, 0x83, 0x80, 0x7b, 0x79, 0x7a, 0x7a, 0x7a, 0x7c, 0x80, 0x85, 0x8a, 0x8c, 0x88, 0x7e, 0x75, - 0x6f, 0x6d, 0x71, 0x7a, 0x84, 0x8b, 0x8f, 0x8e, 0x8a, 0x84, 0x7a, 0x71, 0x6b, 0x69, 0x6e, 0x7b, - 0x8a, 0x95, 0x98, 0x94, 0x8c, 0x80, 0x75, 0x6e, 0x6c, 0x6f, 0x76, 0x7e, 0x86, 0x89, 0x8a, 0x89, - 0x86, 0x80, 0x78, 0x71, 0x6d, 0x6e, 0x78, 0x89, 0x98, 0xa1, 0x9d, 0x8f, 0x7e, 0x6f, 0x67, 0x66, - 0x6b, 0x74, 0x7a, 0x7d, 0x7e, 0x7e, 0x81, 0x86, 0x8c, 0x91, 0x92, 0x90, 0x8c, 0x83, 0x77, 0x69, - 0x5f, 0x5f, 0x69, 0x7d, 0x92, 0xa0, 0xa0, 0x95, 0x83, 0x6f, 0x62, 0x5c, 0x5f, 0x69, 0x78, 0x8b, - 0x9a, 0xa2, 0x9e, 0x90, 0x7b, 0x69, 0x60, 0x64, 0x70, 0x80, 0x8c, 0x90, 0x8d, 0x87, 0x80, 0x79, - 0x76, 0x78, 0x80, 0x89, 0x8f, 0x8f, 0x86, 0x79, 0x6e, 0x6a, 0x6e, 0x77, 0x82, 0x89, 0x8d, 0x8c, - 0x87, 0x7e, 0x75, 0x71, 0x73, 0x7b, 0x86, 0x8b, 0x89, 0x84, 0x80, 0x7e, 0x7d, 0x7b, 0x7a, 0x7b, - 0x7c, 0x7e, 0x7e, 0x7a, 0x78, 0x7a, 0x7e, 0x84, 0x88, 0x89, 0x88, 0x81, 0x74, 0x69, 0x68, 0x70, - 0x80, 0x8e, 0x95, 0x93, 0x8c, 0x83, 0x79, 0x70, 0x6c, 0x6c, 0x73, 0x7c, 0x88, 0x94, 0x99, 0x96, - 0x89, 0x79, 0x6b, 0x65, 0x66, 0x6e, 0x7a, 0x86, 0x90, 0x97, 0x96, 0x8f, 0x83, 0x75, 0x6f, 0x6c, - 0x6f, 0x77, 0x82, 0x8d, 0x94, 0x93, 0x8b, 0x7b, 0x6d, 0x67, 0x6a, 0x74, 0x82, 0x90, 0x97, 0x95, - 0x8c, 0x7e, 0x73, 0x6d, 0x6e, 0x73, 0x7d, 0x88, 0x8f, 0x8f, 0x88, 0x7d, 0x78, 0x79, 0x7b, 0x7b, - 0x79, 0x78, 0x7a, 0x7e, 0x85, 0x89, 0x8c, 0x8c, 0x89, 0x83, 0x79, 0x73, 0x71, 0x70, 0x72, 0x78, - 0x81, 0x8a, 0x8e, 0x8e, 0x88, 0x80, 0x78, 0x74, 0x76, 0x7c, 0x82, 0x84, 0x82, 0x7c, 0x7b, 0x80, - 0x86, 0x87, 0x85, 0x81, 0x78, 0x71, 0x6d, 0x70, 0x7a, 0x88, 0x92, 0x97, 0x94, 0x8a, 0x7c, 0x6d, - 0x61, 0x5e, 0x66, 0x77, 0x8a, 0x98, 0x9d, 0x99, 0x8d, 0x7d, 0x6e, 0x64, 0x64, 0x6c, 0x78, 0x84, - 0x8d, 0x92, 0x91, 0x8b, 0x83, 0x7a, 0x74, 0x73, 0x76, 0x7a, 0x81, 0x89, 0x8d, 0x88, 0x7d, 0x77, - 0x77, 0x7d, 0x85, 0x89, 0x86, 0x80, 0x7a, 0x77, 0x79, 0x7c, 0x81, 0x84, 0x83, 0x81, 0x7c, 0x7a, - 0x76, 0x72, 0x6f, 0x73, 0x7c, 0x8a, 0x93, 0x95, 0x8e, 0x81, 0x72, 0x6a, 0x6b, 0x71, 0x7c, 0x87, - 0x8f, 0x91, 0x8c, 0x84, 0x7a, 0x73, 0x70, 0x74, 0x7b, 0x83, 0x89, 0x8d, 0x8d, 0x88, 0x81, 0x77, - 0x71, 0x71, 0x74, 0x7b, 0x83, 0x87, 0x87, 0x82, 0x7d, 0x7c, 0x7d, 0x80, 0x81, 0x80, 0x81, 0x83, - 0x85, 0x84, 0x80, 0x7a, 0x76, 0x75, 0x78, 0x7c, 0x82, 0x88, 0x8b, 0x8b, 0x8a, 0x85, 0x81, 0x7e, - 0x7c, 0x7b, 0x7a, 0x79, 0x77, 0x77, 0x7c, 0x82, 0x85, 0x88, 0x89, 0x86, 0x83, 0x7e, 0x78, 0x75, - 0x77, 0x7c, 0x85, 0x8c, 0x8e, 0x89, 0x7e, 0x77, 0x73, 0x74, 0x7a, 0x83, 0x88, 0x88, 0x89, 0x88, - 0x87, 0x85, 0x80, 0x79, 0x72, 0x6d, 0x70, 0x7a, 0x85, 0x90, 0x95, 0x94, 0x8d, 0x82, 0x76, 0x69, - 0x5f, 0x5f, 0x68, 0x79, 0x8e, 0x9f, 0xa6, 0xa1, 0x92, 0x7d, 0x6a, 0x5e, 0x5b, 0x60, 0x6d, 0x7c, - 0x8b, 0x95, 0x97, 0x94, 0x8d, 0x84, 0x79, 0x71, 0x6e, 0x6e, 0x71, 0x76, 0x7d, 0x85, 0x8b, 0x8d, - 0x8f, 0x8c, 0x86, 0x7e, 0x77, 0x71, 0x70, 0x73, 0x7a, 0x84, 0x8c, 0x90, 0x91, 0x90, 0x88, 0x7c, - 0x70, 0x67, 0x66, 0x6f, 0x7e, 0x8f, 0x9a, 0x9c, 0x93, 0x84, 0x73, 0x66, 0x62, 0x68, 0x74, 0x87, - 0x96, 0x9c, 0x9b, 0x92, 0x85, 0x78, 0x6f, 0x6c, 0x6e, 0x74, 0x7c, 0x85, 0x8b, 0x8d, 0x89, 0x82, - 0x7c, 0x7a, 0x7c, 0x7d, 0x7e, 0x7d, 0x7a, 0x79, 0x7a, 0x7d, 0x81, 0x84, 0x85, 0x85, 0x83, 0x80, - 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x7a, 0x7b, 0x7d, 0x80, 0x83, 0x84, 0x83, 0x80, 0x7d, 0x7e, - 0x83, 0x86, 0x86, 0x83, 0x80, 0x7a, 0x74, 0x6e, 0x6b, 0x6f, 0x7c, 0x8c, 0x9a, 0xa0, 0x9b, 0x8c, - 0x79, 0x6b, 0x67, 0x69, 0x71, 0x7b, 0x82, 0x87, 0x8a, 0x8b, 0x88, 0x80, 0x77, 0x74, 0x76, 0x7a, - 0x81, 0x84, 0x83, 0x7e, 0x79, 0x78, 0x7a, 0x7d, 0x83, 0x87, 0x8a, 0x88, 0x82, 0x7a, 0x75, 0x73, - 0x76, 0x7a, 0x7e, 0x82, 0x84, 0x85, 0x83, 0x81, 0x80, 0x7d, 0x7b, 0x78, 0x77, 0x77, 0x7a, 0x7c, - 0x80, 0x81, 0x83, 0x86, 0x87, 0x87, 0x85, 0x81, 0x7c, 0x7a, 0x79, 0x7b, 0x7c, 0x7e, 0x81, 0x83, - 0x85, 0x87, 0x84, 0x7e, 0x7a, 0x7a, 0x7d, 0x80, 0x81, 0x7d, 0x78, 0x75, 0x76, 0x7c, 0x86, 0x8b, - 0x8a, 0x85, 0x7e, 0x7b, 0x7b, 0x7d, 0x7d, 0x7d, 0x7d, 0x80, 0x84, 0x88, 0x89, 0x86, 0x81, 0x7b, - 0x78, 0x77, 0x78, 0x7c, 0x80, 0x83, 0x85, 0x85, 0x83, 0x82, 0x7e, 0x7b, 0x7a, 0x7d, 0x82, 0x87, - 0x89, 0x88, 0x86, 0x82, 0x7d, 0x7a, 0x78, 0x78, 0x79, 0x7e, 0x83, 0x86, 0x86, 0x85, 0x84, 0x82, - 0x7d, 0x7a, 0x76, 0x74, 0x76, 0x7a, 0x80, 0x83, 0x83, 0x82, 0x81, 0x80, 0x82, 0x85, 0x85, 0x82, - 0x7d, 0x7a, 0x79, 0x7a, 0x7d, 0x80, 0x82, 0x84, 0x85, 0x83, 0x81, 0x7d, 0x79, 0x77, 0x77, 0x7a, - 0x80, 0x86, 0x89, 0x8a, 0x88, 0x84, 0x7e, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, 0x82, 0x85, 0x87, - 0x87, 0x83, 0x7d, 0x78, 0x75, 0x75, 0x78, 0x7e, 0x86, 0x8d, 0x90, 0x8d, 0x85, 0x7b, 0x73, 0x6f, - 0x70, 0x76, 0x7e, 0x87, 0x8d, 0x8e, 0x8a, 0x82, 0x79, 0x73, 0x70, 0x70, 0x74, 0x7b, 0x84, 0x8b, - 0x8f, 0x8d, 0x86, 0x7c, 0x75, 0x72, 0x73, 0x78, 0x7d, 0x83, 0x87, 0x8a, 0x8b, 0x88, 0x83, 0x7b, - 0x73, 0x70, 0x70, 0x72, 0x77, 0x7e, 0x85, 0x8c, 0x8f, 0x8f, 0x8a, 0x82, 0x79, 0x71, 0x6e, 0x6f, - 0x75, 0x7c, 0x84, 0x89, 0x8b, 0x8b, 0x88, 0x83, 0x7e, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7a, 0x78, - 0x78, 0x78, 0x7b, 0x80, 0x84, 0x87, 0x8a, 0x8a, 0x89, 0x84, 0x7c, 0x75, 0x70, 0x71, 0x76, 0x7c, - 0x84, 0x88, 0x88, 0x86, 0x83, 0x80, 0x7c, 0x7b, 0x7a, 0x7a, 0x7b, 0x7c, 0x7e, 0x82, 0x85, 0x86, - 0x85, 0x81, 0x7c, 0x79, 0x77, 0x77, 0x7a, 0x7e, 0x83, 0x88, 0x8a, 0x89, 0x85, 0x7e, 0x79, 0x77, - 0x77, 0x7a, 0x7d, 0x7e, 0x81, 0x81, 0x80, 0x80, 0x80, 0x84, 0x88, 0x89, 0x88, 0x83, 0x7a, 0x75, - 0x73, 0x73, 0x77, 0x7c, 0x82, 0x87, 0x8a, 0x89, 0x85, 0x7e, 0x79, 0x75, 0x71, 0x72, 0x77, 0x7d, - 0x86, 0x8c, 0x90, 0x8e, 0x89, 0x82, 0x79, 0x74, 0x73, 0x75, 0x7a, 0x81, 0x87, 0x8b, 0x8a, 0x85, - 0x80, 0x79, 0x75, 0x73, 0x76, 0x7c, 0x82, 0x88, 0x8d, 0x8f, 0x8d, 0x86, 0x7c, 0x73, 0x6d, 0x6d, - 0x72, 0x7a, 0x83, 0x8a, 0x90, 0x92, 0x8f, 0x87, 0x7d, 0x75, 0x70, 0x6f, 0x72, 0x77, 0x7d, 0x84, - 0x88, 0x89, 0x88, 0x86, 0x84, 0x81, 0x7d, 0x7a, 0x78, 0x77, 0x78, 0x7b, 0x7e, 0x82, 0x84, 0x84, - 0x82, 0x81, 0x81, 0x82, 0x83, 0x83, 0x80, 0x7b, 0x77, 0x77, 0x78, 0x7b, 0x80, 0x80, 0x7d, 0x7b, - 0x7b, 0x80, 0x86, 0x8c, 0x8d, 0x8b, 0x83, 0x79, 0x72, 0x6e, 0x6f, 0x73, 0x79, 0x7e, 0x86, 0x8d, - 0x92, 0x94, 0x8f, 0x87, 0x7d, 0x74, 0x6e, 0x6c, 0x6d, 0x72, 0x7a, 0x83, 0x8a, 0x90, 0x91, 0x8d, - 0x86, 0x7d, 0x76, 0x72, 0x72, 0x74, 0x78, 0x7b, 0x7d, 0x82, 0x87, 0x8b, 0x8b, 0x86, 0x7e, 0x78, - 0x75, 0x76, 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x83, 0x83, 0x80, 0x7c, 0x7b, 0x7a, 0x7a, 0x7e, 0x83, - 0x85, 0x86, 0x85, 0x81, 0x7c, 0x78, 0x75, 0x77, 0x7b, 0x82, 0x87, 0x89, 0x87, 0x81, 0x79, 0x75, - 0x75, 0x78, 0x7e, 0x84, 0x88, 0x88, 0x85, 0x83, 0x80, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, - 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7d, 0x7b, 0x78, 0x78, 0x7a, 0x7e, 0x86, - 0x8c, 0x8d, 0x89, 0x81, 0x79, 0x74, 0x72, 0x75, 0x7a, 0x80, 0x84, 0x88, 0x88, 0x86, 0x83, 0x7b, - 0x74, 0x71, 0x71, 0x76, 0x80, 0x87, 0x8b, 0x8c, 0x8b, 0x87, 0x80, 0x79, 0x74, 0x72, 0x73, 0x77, - 0x7d, 0x83, 0x87, 0x88, 0x85, 0x82, 0x7e, 0x7b, 0x7b, 0x7a, 0x78, 0x79, 0x7d, 0x81, 0x84, 0x85, - 0x84, 0x82, 0x7e, 0x7c, 0x7a, 0x79, 0x78, 0x79, 0x7d, 0x81, 0x83, 0x84, 0x82, 0x7d, 0x7b, 0x7a, - 0x7c, 0x80, 0x83, 0x84, 0x83, 0x80, 0x7d, 0x7b, 0x7a, 0x7b, 0x7e, 0x82, 0x84, 0x87, 0x88, 0x86, - 0x84, 0x7d, 0x78, 0x75, 0x73, 0x75, 0x7a, 0x82, 0x88, 0x8c, 0x8e, 0x8b, 0x85, 0x7d, 0x74, 0x70, - 0x6e, 0x70, 0x79, 0x83, 0x8b, 0x8f, 0x8b, 0x86, 0x83, 0x7e, 0x7d, 0x7a, 0x78, 0x76, 0x74, 0x74, - 0x77, 0x7d, 0x86, 0x8d, 0x8f, 0x8f, 0x8b, 0x86, 0x7e, 0x75, 0x6e, 0x6a, 0x6a, 0x71, 0x7b, 0x88, - 0x92, 0x98, 0x97, 0x8f, 0x83, 0x76, 0x6e, 0x6c, 0x6f, 0x78, 0x82, 0x8a, 0x8f, 0x8e, 0x8a, 0x83, - 0x7c, 0x75, 0x72, 0x72, 0x78, 0x81, 0x8a, 0x91, 0x92, 0x8d, 0x84, 0x78, 0x71, 0x6c, 0x6b, 0x70, - 0x79, 0x85, 0x8c, 0x90, 0x8e, 0x86, 0x7d, 0x77, 0x74, 0x75, 0x76, 0x78, 0x7c, 0x84, 0x8a, 0x8d, - 0x8a, 0x85, 0x7d, 0x76, 0x74, 0x75, 0x77, 0x7a, 0x7e, 0x82, 0x85, 0x85, 0x84, 0x83, 0x82, 0x7d, - 0x7a, 0x78, 0x76, 0x77, 0x79, 0x7c, 0x80, 0x81, 0x84, 0x85, 0x82, 0x80, 0x7c, 0x7b, 0x7b, 0x7b, - 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x82, 0x81, 0x7d, 0x79, 0x76, - 0x75, 0x78, 0x7b, 0x7d, 0x81, 0x84, 0x86, 0x8a, 0x8c, 0x8c, 0x84, 0x7a, 0x70, 0x6a, 0x6b, 0x70, - 0x78, 0x83, 0x8b, 0x91, 0x94, 0x90, 0x88, 0x7d, 0x71, 0x6a, 0x69, 0x6e, 0x77, 0x81, 0x8a, 0x8e, - 0x8c, 0x88, 0x84, 0x80, 0x7a, 0x76, 0x75, 0x77, 0x7d, 0x83, 0x86, 0x85, 0x81, 0x7c, 0x7b, 0x7d, - 0x82, 0x84, 0x83, 0x81, 0x7c, 0x7a, 0x7a, 0x7c, 0x7c, 0x7d, 0x80, 0x84, 0x88, 0x89, 0x84, 0x7a, - 0x73, 0x70, 0x73, 0x78, 0x7e, 0x84, 0x86, 0x87, 0x87, 0x86, 0x83, 0x7e, 0x7a, 0x7a, 0x7b, 0x7c, - 0x7b, 0x78, 0x78, 0x78, 0x7b, 0x81, 0x85, 0x87, 0x88, 0x87, 0x85, 0x80, 0x79, 0x75, 0x73, 0x74, - 0x77, 0x7b, 0x81, 0x86, 0x88, 0x89, 0x86, 0x81, 0x7b, 0x77, 0x75, 0x77, 0x79, 0x7b, 0x7e, 0x84, - 0x89, 0x8c, 0x8c, 0x88, 0x81, 0x79, 0x74, 0x72, 0x73, 0x78, 0x7d, 0x83, 0x88, 0x8a, 0x88, 0x84, - 0x80, 0x7a, 0x77, 0x76, 0x79, 0x7c, 0x7d, 0x80, 0x83, 0x86, 0x88, 0x87, 0x85, 0x81, 0x7b, 0x78, - 0x75, 0x75, 0x78, 0x7c, 0x82, 0x88, 0x8b, 0x8b, 0x87, 0x7e, 0x76, 0x72, 0x70, 0x72, 0x77, 0x7c, - 0x82, 0x86, 0x88, 0x87, 0x83, 0x7c, 0x78, 0x77, 0x78, 0x79, 0x7a, 0x7c, 0x7e, 0x83, 0x88, 0x8c, - 0x8b, 0x86, 0x7d, 0x74, 0x71, 0x74, 0x77, 0x7b, 0x80, 0x82, 0x82, 0x83, 0x86, 0x87, 0x85, 0x83, - 0x81, 0x80, 0x7e, 0x7c, 0x7b, 0x79, 0x79, 0x7d, 0x82, 0x86, 0x88, 0x87, 0x85, 0x82, 0x7e, 0x7b, - 0x78, 0x78, 0x7a, 0x7d, 0x81, 0x84, 0x85, 0x84, 0x82, 0x83, 0x84, 0x84, 0x82, 0x7b, 0x75, 0x71, - 0x71, 0x77, 0x80, 0x87, 0x8c, 0x8f, 0x90, 0x8b, 0x83, 0x77, 0x6d, 0x67, 0x67, 0x6c, 0x78, 0x86, - 0x91, 0x98, 0x99, 0x94, 0x8a, 0x7b, 0x6e, 0x66, 0x64, 0x6b, 0x76, 0x84, 0x8d, 0x94, 0x96, 0x93, - 0x8d, 0x83, 0x78, 0x70, 0x6d, 0x6e, 0x74, 0x7a, 0x82, 0x88, 0x8d, 0x8e, 0x8a, 0x84, 0x7b, 0x77, - 0x76, 0x77, 0x78, 0x7a, 0x7d, 0x81, 0x83, 0x84, 0x83, 0x81, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7b, - 0x7b, 0x7b, 0x7c, 0x7e, 0x82, 0x84, 0x85, 0x85, 0x81, 0x7c, 0x79, 0x79, 0x7c, 0x7d, 0x7e, 0x81, - 0x83, 0x83, 0x85, 0x84, 0x82, 0x7c, 0x78, 0x79, 0x7c, 0x80, 0x83, 0x83, 0x82, 0x83, 0x83, 0x82, - 0x7d, 0x78, 0x74, 0x73, 0x76, 0x7b, 0x80, 0x84, 0x87, 0x89, 0x8a, 0x89, 0x83, 0x7b, 0x76, 0x75, - 0x78, 0x7a, 0x7c, 0x7e, 0x81, 0x84, 0x88, 0x8a, 0x8a, 0x85, 0x80, 0x7a, 0x77, 0x76, 0x75, 0x77, - 0x7b, 0x83, 0x8a, 0x8e, 0x8c, 0x87, 0x80, 0x79, 0x76, 0x74, 0x73, 0x74, 0x78, 0x7d, 0x84, 0x89, - 0x8d, 0x8d, 0x8a, 0x87, 0x81, 0x7a, 0x72, 0x6e, 0x70, 0x76, 0x80, 0x88, 0x8f, 0x91, 0x8e, 0x88, - 0x81, 0x77, 0x70, 0x6f, 0x72, 0x78, 0x7e, 0x84, 0x88, 0x8b, 0x8e, 0x8e, 0x8b, 0x81, 0x73, 0x69, - 0x63, 0x67, 0x75, 0x84, 0x92, 0x9a, 0x9a, 0x96, 0x8c, 0x80, 0x72, 0x67, 0x62, 0x64, 0x6c, 0x79, - 0x88, 0x94, 0x99, 0x98, 0x92, 0x87, 0x7b, 0x70, 0x68, 0x67, 0x6d, 0x76, 0x80, 0x89, 0x8d, 0x8e, - 0x8c, 0x8a, 0x86, 0x82, 0x7d, 0x78, 0x75, 0x73, 0x73, 0x74, 0x77, 0x7e, 0x87, 0x8d, 0x8f, 0x8e, - 0x89, 0x83, 0x7b, 0x74, 0x71, 0x70, 0x72, 0x78, 0x80, 0x86, 0x88, 0x86, 0x85, 0x84, 0x82, 0x80, - 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7b, 0x7b, 0x7c, 0x7e, 0x83, 0x85, 0x84, 0x83, 0x80, 0x7e, - 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x82, 0x86, 0x88, 0x86, - 0x82, 0x7e, 0x7a, 0x79, 0x7a, 0x7b, 0x7d, 0x81, 0x82, 0x82, 0x81, 0x7c, 0x7a, 0x7b, 0x81, 0x87, - 0x8a, 0x89, 0x85, 0x7d, 0x78, 0x75, 0x76, 0x79, 0x7d, 0x82, 0x85, 0x89, 0x8b, 0x89, 0x84, 0x7d, - 0x78, 0x76, 0x75, 0x77, 0x79, 0x7b, 0x7d, 0x80, 0x85, 0x89, 0x89, 0x88, 0x86, 0x82, 0x7c, 0x78, - 0x74, 0x73, 0x75, 0x7a, 0x82, 0x88, 0x8a, 0x8a, 0x88, 0x83, 0x7d, 0x7a, 0x78, 0x77, 0x77, 0x79, - 0x7d, 0x83, 0x89, 0x8b, 0x89, 0x84, 0x7c, 0x75, 0x71, 0x71, 0x77, 0x82, 0x8a, 0x8f, 0x8d, 0x86, - 0x7d, 0x77, 0x74, 0x75, 0x78, 0x7d, 0x84, 0x87, 0x89, 0x86, 0x82, 0x7d, 0x7b, 0x78, 0x79, 0x7b, - 0x7c, 0x7b, 0x7b, 0x7d, 0x7e, 0x81, 0x83, 0x85, 0x85, 0x83, 0x80, 0x7b, 0x78, 0x77, 0x79, 0x79, - 0x80, 0x86, 0x84, 0x86, 0x87, 0x81, 0x7c, 0x7a, 0x7b, 0x7e, 0x7c, 0x7e, 0x80, 0x7b, 0x7b, 0x7b, - 0x7c, 0x82, 0x82, 0x81, 0x82, 0x82, 0x83, 0x82, 0x7c, 0x7a, 0x78, 0x77, 0x7a, 0x80, 0x83, 0x81, - 0x80, 0x7e, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x7e, 0x7e, 0x81, 0x80, 0x7d, 0x7d, 0x80, 0x81, 0x80, - 0x7e, 0x7d, 0x7c, 0x7c, 0x7e, 0x81, 0x81, 0x7d, 0x7b, 0x7b, 0x7d, 0x80, 0x82, 0x83, 0x86, 0x86, - 0x85, 0x81, 0x7b, 0x77, 0x72, 0x73, 0x75, 0x7a, 0x80, 0x84, 0x8a, 0x8e, 0x90, 0x8b, 0x81, 0x75, - 0x6d, 0x68, 0x69, 0x71, 0x7b, 0x86, 0x8f, 0x91, 0x90, 0x89, 0x7d, 0x72, 0x6c, 0x6e, 0x73, 0x7a, - 0x82, 0x87, 0x89, 0x87, 0x85, 0x83, 0x80, 0x7d, 0x7b, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x83, 0x84, - 0x84, 0x84, 0x84, 0x82, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7d, 0x7d, - 0x7e, 0x7d, 0x7d, 0x7c, 0x7d, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7c, 0x7e, 0x81, 0x82, 0x82, 0x81, - 0x80, 0x7e, 0x7c, 0x7b, 0x7a, 0x7b, 0x7b, 0x7e, 0x84, 0x87, 0x87, 0x85, 0x82, 0x7e, 0x79, 0x76, - 0x75, 0x77, 0x79, 0x7d, 0x83, 0x88, 0x8b, 0x8b, 0x8a, 0x86, 0x7d, 0x75, 0x72, 0x73, 0x76, 0x7c, - 0x84, 0x89, 0x8b, 0x87, 0x84, 0x80, 0x7a, 0x75, 0x74, 0x79, 0x7e, 0x83, 0x86, 0x88, 0x86, 0x81, - 0x7d, 0x7a, 0x76, 0x75, 0x78, 0x7c, 0x82, 0x86, 0x88, 0x86, 0x81, 0x7e, 0x7c, 0x79, 0x78, 0x7b, - 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x81, 0x83, 0x82, 0x81, 0x80, 0x7e, 0x7b, 0x77, 0x75, 0x75, - 0x77, 0x7d, 0x85, 0x8a, 0x8c, 0x8b, 0x88, 0x82, 0x79, 0x72, 0x6f, 0x71, 0x75, 0x7d, 0x86, 0x8a, - 0x8c, 0x8d, 0x8b, 0x86, 0x7e, 0x77, 0x72, 0x70, 0x72, 0x79, 0x81, 0x85, 0x89, 0x8c, 0x8c, 0x89, - 0x86, 0x82, 0x7c, 0x77, 0x73, 0x73, 0x74, 0x78, 0x80, 0x86, 0x88, 0x87, 0x85, 0x82, 0x7d, 0x7a, - 0x79, 0x79, 0x7a, 0x7e, 0x84, 0x86, 0x85, 0x82, 0x80, 0x80, 0x81, 0x82, 0x80, 0x7c, 0x79, 0x7a, - 0x7e, 0x82, 0x84, 0x85, 0x86, 0x85, 0x84, 0x81, 0x7d, 0x78, 0x75, 0x78, 0x7e, 0x84, 0x88, 0x8b, - 0x8c, 0x88, 0x83, 0x7e, 0x77, 0x72, 0x72, 0x74, 0x78, 0x81, 0x88, 0x8b, 0x8c, 0x8b, 0x86, 0x82, - 0x7d, 0x77, 0x73, 0x71, 0x70, 0x72, 0x79, 0x82, 0x8c, 0x93, 0x94, 0x90, 0x89, 0x7d, 0x75, 0x70, - 0x6e, 0x70, 0x74, 0x7a, 0x84, 0x8d, 0x92, 0x93, 0x8f, 0x88, 0x7e, 0x75, 0x6f, 0x6e, 0x72, 0x79, - 0x82, 0x89, 0x8e, 0x8f, 0x8c, 0x84, 0x7b, 0x74, 0x70, 0x6f, 0x74, 0x7a, 0x82, 0x88, 0x8b, 0x89, - 0x85, 0x81, 0x7b, 0x76, 0x73, 0x72, 0x74, 0x79, 0x80, 0x86, 0x8b, 0x8d, 0x8b, 0x89, 0x83, 0x7b, - 0x75, 0x72, 0x71, 0x73, 0x78, 0x80, 0x87, 0x8d, 0x91, 0x90, 0x8c, 0x86, 0x7b, 0x72, 0x6f, 0x6f, - 0x72, 0x76, 0x7c, 0x82, 0x86, 0x88, 0x88, 0x86, 0x84, 0x82, 0x80, 0x7c, 0x78, 0x76, 0x74, 0x75, - 0x79, 0x7d, 0x83, 0x87, 0x8b, 0x8b, 0x88, 0x84, 0x7d, 0x75, 0x70, 0x6f, 0x71, 0x78, 0x80, 0x88, - 0x8d, 0x8d, 0x8b, 0x86, 0x82, 0x7c, 0x7a, 0x7a, 0x79, 0x79, 0x7a, 0x7a, 0x7d, 0x84, 0x89, 0x8b, - 0x8c, 0x89, 0x84, 0x7d, 0x77, 0x73, 0x72, 0x74, 0x78, 0x7c, 0x82, 0x87, 0x8c, 0x90, 0x91, 0x8d, - 0x85, 0x79, 0x6f, 0x69, 0x69, 0x6d, 0x75, 0x80, 0x8a, 0x92, 0x97, 0x95, 0x8d, 0x82, 0x75, 0x6e, - 0x6c, 0x6e, 0x75, 0x7c, 0x84, 0x89, 0x8d, 0x8f, 0x8c, 0x85, 0x7c, 0x73, 0x6d, 0x6d, 0x72, 0x7b, - 0x86, 0x8f, 0x92, 0x91, 0x8c, 0x84, 0x79, 0x71, 0x6f, 0x70, 0x75, 0x7d, 0x86, 0x8b, 0x8c, 0x88, - 0x82, 0x7d, 0x7a, 0x78, 0x77, 0x76, 0x77, 0x7b, 0x80, 0x83, 0x83, 0x82, 0x81, 0x82, 0x83, 0x82, - 0x83, 0x82, 0x7e, 0x7b, 0x7a, 0x79, 0x7a, 0x7b, 0x7e, 0x82, 0x86, 0x89, 0x89, 0x85, 0x80, 0x78, - 0x74, 0x73, 0x75, 0x79, 0x7e, 0x84, 0x88, 0x8b, 0x8b, 0x89, 0x83, 0x7b, 0x76, 0x73, 0x73, 0x76, - 0x7b, 0x81, 0x84, 0x87, 0x88, 0x89, 0x87, 0x83, 0x7e, 0x7a, 0x77, 0x78, 0x7a, 0x7d, 0x80, 0x82, - 0x82, 0x82, 0x81, 0x7f, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, - 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7d, - 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x79, 0x7a, 0x7b, 0x7a, 0x79, 0x78, - 0x78, 0x79, 0x7a, 0x7a, 0x78, 0x77, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x7c, 0x7b, 0x7b, - 0x7d, 0x81, 0x83, 0x85, 0x85, 0x84, 0x83, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x83, - 0x84, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x85, 0x87, 0x87, 0x85, 0x80, 0x75, 0x77, 0x80, 0x85, - 0x88, 0x87, 0x85, 0x82, 0x7e, 0x7e, 0x7e, 0x81, 0x84, 0x86, 0x84, 0x83, 0x85, 0x88, 0x89, 0x8a, - 0x8a, 0x87, 0x81, 0x7a, 0x78, 0x77, 0x77, 0x79, 0x79, 0x75, 0x70, 0x6d, 0x6b, 0x6f, 0x73, 0x77, - 0x79, 0x77, 0x75, 0x74, 0x71, 0x70, 0x71, 0x7a, 0x83, 0x7d, 0x76, 0x76, 0x7c, 0x7d, 0x7c, 0x7a, - 0x77, 0x75, 0x72, 0x77, 0x7a, 0x83, 0x8b, 0x8a, 0x8b, 0x87, 0x85, 0x87, 0x8c, 0x94, 0x9e, 0xa8, - 0xac, 0xa8, 0xa3, 0x9d, 0x98, 0x92, 0x89, 0x87, 0x86, 0x7e, 0x79, 0x7e, 0x81, 0x7d, 0x72, 0x6a, - 0x67, 0x61, 0x66, 0x6c, 0x70, 0x74, 0x71, 0x6a, 0x67, 0x69, 0x6a, 0x6c, 0x6e, 0x71, 0x70, 0x6b, - 0x68, 0x69, 0x6b, 0x6e, 0x6f, 0x6f, 0x6a, 0x64, 0x61, 0x5e, 0x6c, 0x7a, 0x82, 0x84, 0x86, 0x89, - 0x8a, 0x8e, 0x97, 0x9f, 0xa6, 0xa4, 0xa5, 0xa7, 0xa3, 0x9d, 0xa0, 0xa2, 0xa3, 0xb1, 0xb1, 0xab, - 0xa8, 0xa4, 0xa0, 0x9a, 0x93, 0x8a, 0x83, 0x7e, 0x76, 0x7b, 0x86, 0x8c, 0x8b, 0x83, 0x7d, 0x7d, - 0x7e, 0x82, 0x86, 0x89, 0x85, 0x7d, 0x7e, 0x7c, 0x79, 0x7c, 0x78, 0x71, 0x6f, 0x69, 0x68, 0x66, - 0x62, 0x63, 0x63, 0x5f, 0x5a, 0x4c, 0x49, 0x5e, 0x64, 0x6c, 0x74, 0x74, 0x6d, 0x6e, 0x76, 0x81, - 0x89, 0x8e, 0x90, 0x8e, 0x88, 0x87, 0x86, 0x86, 0x88, 0x86, 0x7b, 0x7e, 0x84, 0x8a, 0x92, 0x99, - 0xa2, 0xa5, 0x9c, 0x91, 0x88, 0x7c, 0x7e, 0x81, 0x73, 0x70, 0x69, 0x61, 0x5e, 0x5c, 0x58, 0x5e, - 0x5b, 0x5f, 0x67, 0x6a, 0x71, 0x76, 0x83, 0x8a, 0x8d, 0x8a, 0x81, 0x84, 0x89, 0x8c, 0x90, 0x8f, - 0x8d, 0x85, 0x79, 0x75, 0x70, 0x72, 0x7e, 0x70, 0x68, 0x6d, 0x6e, 0x72, 0x7c, 0x87, 0x8b, 0x8a, - 0x87, 0x7d, 0x72, 0x78, 0x82, 0x8a, 0x8d, 0x86, 0x77, 0x69, 0x67, 0x7a, 0x8c, 0x92, 0x98, 0xa3, - 0xa2, 0x97, 0x89, 0x80, 0x7b, 0x88, 0x95, 0x8e, 0x92, 0x96, 0x98, 0x9b, 0x9c, 0x9a, 0x9e, 0x9b, - 0x95, 0x93, 0x94, 0x94, 0x96, 0x93, 0x8c, 0x83, 0x78, 0x6d, 0x6f, 0x72, 0x6d, 0x68, 0x67, 0x66, - 0x63, 0x5f, 0x59, 0x5a, 0x63, 0x6b, 0x67, 0x68, 0x70, 0x7a, 0x7a, 0x7c, 0x7a, 0x79, 0x7b, 0x7a, - 0x76, 0x6c, 0x68, 0x70, 0x6a, 0x67, 0x6e, 0x74, 0x71, 0x78, 0x8e, 0x91, 0x87, 0x86, 0x8d, 0x8c, - 0x84, 0x7b, 0x7e, 0x80, 0x72, 0x5f, 0x63, 0x71, 0x7e, 0x85, 0x88, 0x83, 0x74, 0x72, 0x70, 0x74, - 0x82, 0x8d, 0x8f, 0x89, 0x82, 0x7b, 0x7a, 0x80, 0x88, 0x95, 0x96, 0x90, 0x90, 0x91, 0x8d, 0x8a, - 0x8c, 0x8b, 0x8f, 0x93, 0x90, 0x98, 0xa9, 0xa6, 0x9a, 0x8f, 0x89, 0x83, 0x74, 0x6a, 0x68, 0x6e, - 0x7a, 0x7a, 0x76, 0x6c, 0x67, 0x80, 0x88, 0x80, 0x83, 0x8d, 0x91, 0x91, 0x8d, 0x8b, 0x89, 0x8b, - 0x8b, 0x83, 0x7a, 0x72, 0x6c, 0x76, 0x7c, 0x7b, 0x81, 0x87, 0x86, 0x89, 0x8e, 0x94, 0xa2, 0xb7, - 0xb1, 0x97, 0x86, 0x81, 0x8a, 0x82, 0x7a, 0x80, 0x7d, 0x77, 0x78, 0x6d, 0x66, 0x6e, 0x75, 0x7b, - 0x6a, 0x5c, 0x5d, 0x69, 0x79, 0x80, 0x7b, 0x77, 0x77, 0x76, 0x73, 0x74, 0x72, 0x77, 0x7a, 0x72, - 0x63, 0x60, 0x62, 0x64, 0x6b, 0x6d, 0x69, 0x68, 0x6d, 0x82, 0x80, 0x75, 0x6e, 0x74, 0x7a, 0x67, - 0x66, 0x6d, 0x67, 0x74, 0x8d, 0x8f, 0x8d, 0x8e, 0x89, 0x84, 0x78, 0x73, 0x78, 0x87, 0x85, 0x77, - 0x74, 0x76, 0x76, 0x7c, 0x83, 0x7a, 0x71, 0x70, 0x72, 0x73, 0x78, 0x83, 0x9d, 0xa6, 0x91, 0x86, - 0x86, 0x87, 0x9e, 0xad, 0xa6, 0xa2, 0xa2, 0xa0, 0x95, 0x90, 0x8d, 0x81, 0x7d, 0x94, 0x90, 0x83, - 0x8a, 0x94, 0x9f, 0x9c, 0x88, 0x7d, 0x8c, 0x8f, 0x83, 0x89, 0x93, 0x8a, 0x7d, 0x73, 0x72, 0x78, - 0x70, 0x6b, 0x75, 0x72, 0x6f, 0x71, 0x79, 0x83, 0x8a, 0x82, 0x91, 0x9a, 0x82, 0x6d, 0x63, 0x70, - 0x77, 0x6a, 0x6b, 0x6a, 0x69, 0x71, 0x72, 0x6c, 0x78, 0x89, 0x88, 0x7b, 0x74, 0x6e, 0x6a, 0x6a, - 0x80, 0x95, 0x8a, 0x7a, 0x6e, 0x5f, 0x5b, 0x64, 0x65, 0x65, 0x69, 0x6b, 0x67, 0x68, 0x6f, 0x78, - 0x82, 0x86, 0x7d, 0x85, 0x89, 0x79, 0x76, 0x82, 0x79, 0x70, 0x64, 0x5e, 0x61, 0x6b, 0x73, 0x65, - 0x6e, 0x85, 0x87, 0x87, 0x88, 0x8a, 0x8b, 0x8d, 0x99, 0xac, 0xbc, 0xba, 0xaf, 0xa4, 0x9d, 0xa0, - 0x9a, 0x7e, 0x75, 0x7c, 0x77, 0x81, 0x9b, 0x9d, 0x95, 0x8b, 0x89, 0x85, 0x8f, 0x96, 0x86, 0x80, - 0x7e, 0x77, 0x6b, 0x68, 0x6b, 0x65, 0x61, 0x70, 0x7b, 0x83, 0x8e, 0x90, 0x91, 0x8e, 0x85, 0x7d, - 0x7a, 0x7c, 0x82, 0x8e, 0xa8, 0x9c, 0x91, 0x9b, 0x93, 0x88, 0x7b, 0x78, 0x74, 0x68, 0x74, 0x74, - 0x63, 0x5d, 0x68, 0x69, 0x6a, 0x82, 0x86, 0x78, 0x77, 0x77, 0x77, 0x73, 0x70, 0x7b, 0x85, 0x83, - 0x81, 0x87, 0x98, 0xac, 0xab, 0xad, 0xa0, 0x98, 0x99, 0x96, 0x97, 0x87, 0x71, 0x77, 0x6f, 0x6c, - 0x75, 0x7c, 0x79, 0x71, 0x7e, 0x84, 0x83, 0x82, 0x81, 0x7e, 0x7a, 0x6f, 0x5e, 0x61, 0x68, 0x5f, - 0x5f, 0x73, 0x76, 0x5f, 0x48, 0x4a, 0x53, 0x53, 0x55, 0x56, 0x48, 0x48, 0x62, 0x67, 0x62, 0x61, - 0x64, 0x68, 0x7d, 0x91, 0x87, 0x81, 0x95, 0xa3, 0x9d, 0x83, 0x6d, 0x64, 0x62, 0x65, 0x6e, 0x71, - 0x6e, 0x86, 0x8c, 0x8f, 0x8f, 0x89, 0x91, 0x9a, 0x92, 0x80, 0x73, 0x79, 0x78, 0x73, 0x82, 0x99, - 0xa7, 0xab, 0xa3, 0x95, 0xa6, 0xbc, 0xbe, 0xb9, 0xb3, 0xae, 0xab, 0xa4, 0xa6, 0xa7, 0xae, 0xb4, - 0xc5, 0xc8, 0xb6, 0xb3, 0xb6, 0xb1, 0xae, 0x9b, 0x7a, 0x73, 0x79, 0x83, 0x86, 0x82, 0x78, 0x81, - 0x86, 0x7d, 0x84, 0x8c, 0x88, 0x77, 0x6f, 0x65, 0x59, 0x57, 0x5a, 0x5c, 0x68, 0x83, 0x8a, 0x7a, - 0x68, 0x5f, 0x59, 0x57, 0x60, 0x6b, 0x6c, 0x5c, 0x4c, 0x54, 0x4d, 0x41, 0x3f, 0x40, 0x55, 0x6d, - 0x68, 0x6f, 0x76, 0x78, 0x79, 0x73, 0x6a, 0x74, 0x80, 0x7e, 0x7e, 0x84, 0x85, 0x84, 0x78, 0x78, - 0x81, 0x84, 0x83, 0x7e, 0x71, 0x62, 0x5c, 0x64, 0x6c, 0x7b, 0x8b, 0x90, 0x94, 0xa3, 0x9e, 0x98, - 0x99, 0x93, 0x95, 0x99, 0x93, 0x89, 0x92, 0x99, 0x9b, 0x90, 0x8f, 0xa1, 0xa0, 0xa3, 0xa1, 0xa2, - 0xaf, 0xb5, 0xa8, 0x99, 0x97, 0x8a, 0x7a, 0x73, 0x7a, 0x83, 0x83, 0x88, 0x88, 0x79, 0x70, 0x83, - 0x9e, 0x9a, 0x8a, 0x7d, 0x79, 0x6b, 0x65, 0x78, 0x78, 0x79, 0x73, 0x62, 0x5b, 0x5d, 0x5f, 0x6b, - 0x6e, 0x6b, 0x68, 0x67, 0x64, 0x64, 0x64, 0x66, 0x62, 0x77, 0x94, 0x8b, 0x84, 0x83, 0x87, 0x84, - 0x72, 0x66, 0x73, 0x7e, 0x81, 0x8b, 0x7c, 0x68, 0x70, 0x88, 0x92, 0x8d, 0x8c, 0x8a, 0x8a, 0x80, - 0x73, 0x72, 0x6c, 0x5a, 0x4d, 0x4f, 0x66, 0x6f, 0x72, 0x80, 0x8c, 0x8e, 0x86, 0x86, 0x92, 0x91, - 0x8c, 0x93, 0x98, 0x94, 0x91, 0x88, 0x85, 0x87, 0x6c, 0x5a, 0x69, 0x74, 0x79, 0x7c, 0x6e, 0x67, - 0x61, 0x64, 0x6d, 0x7b, 0x8b, 0x8e, 0x88, 0x9b, 0xa4, 0xa3, 0xa4, 0xac, 0xad, 0xa0, 0x94, 0x9f, - 0xa1, 0x99, 0x9f, 0x9d, 0xa3, 0xad, 0xa5, 0x90, 0x9c, 0xae, 0xb3, 0xb5, 0x9d, 0x97, 0x94, 0x84, - 0x6d, 0x5a, 0x67, 0x79, 0x83, 0x90, 0x9a, 0x91, 0x7b, 0x6c, 0x83, 0x97, 0x93, 0xa0, 0xaf, 0xa6, - 0xa1, 0x9a, 0x90, 0x8d, 0x86, 0x87, 0x6e, 0x5a, 0x60, 0x61, 0x58, 0x59, 0x6b, 0x6a, 0x57, 0x46, - 0x49, 0x56, 0x62, 0x7a, 0x86, 0x79, 0x71, 0x66, 0x5d, 0x54, 0x43, 0x3e, 0x46, 0x46, 0x4b, 0x43, - 0x39, 0x3d, 0x46, 0x62, 0x68, 0x5d, 0x5b, 0x6f, 0x67, 0x4f, 0x48, 0x57, 0x68, 0x6b, 0x72, 0x82, - 0x7a, 0x6d, 0x68, 0x80, 0x97, 0x94, 0x88, 0x81, 0x89, 0x86, 0x89, 0x9a, 0xb7, 0xbb, 0xae, 0xa5, - 0x91, 0x8b, 0x84, 0x78, 0x86, 0x8f, 0x90, 0x89, 0x72, 0x68, 0x65, 0x60, 0x68, 0x7b, 0x90, 0x9c, - 0xa1, 0x9c, 0x92, 0x8d, 0x92, 0x9d, 0x9e, 0x94, 0x8d, 0x81, 0x78, 0x92, 0xaf, 0xc4, 0xc1, 0xaa, - 0x98, 0x9b, 0xa3, 0xa5, 0x99, 0xa7, 0xa2, 0x91, 0x8b, 0x84, 0x7d, 0x70, 0x6b, 0x6d, 0x72, 0x70, - 0x7b, 0x85, 0x7b, 0x6e, 0x64, 0x69, 0x6d, 0x75, 0x77, 0x78, 0x73, 0x74, 0x94, 0xa5, 0xa2, 0x94, - 0x81, 0x76, 0x67, 0x55, 0x5c, 0x70, 0x7a, 0x7a, 0x8a, 0x9d, 0xa2, 0xa2, 0x98, 0x9b, 0x9c, 0x9a, - 0x99, 0x90, 0x8c, 0x83, 0x6e, 0x6a, 0x75, 0x79, 0x75, 0x6a, 0x6d, 0x71, 0x68, 0x55, 0x5c, 0x80, - 0x8d, 0x84, 0x78, 0x64, 0x66, 0x74, 0x81, 0x8d, 0x9a, 0xa3, 0xa8, 0xa1, 0x9f, 0x8c, 0x81, 0x89, - 0x91, 0x99, 0x99, 0x8a, 0x8e, 0x9c, 0xb4, 0xb4, 0xb1, 0xb4, 0x9b, 0x77, 0x5e, 0x5c, 0x60, 0x5b, - 0x53, 0x4c, 0x42, 0x3b, 0x37, 0x33, 0x2f, 0x41, 0x61, 0x78, 0x83, 0x76, 0x6c, 0x75, 0x89, 0x96, - 0x95, 0x88, 0x84, 0x84, 0x85, 0x7e, 0x77, 0x8f, 0xad, 0xb4, 0xab, 0x91, 0x7e, 0x79, 0x84, 0x89, - 0x70, 0x5c, 0x68, 0x6b, 0x6e, 0x6f, 0x6b, 0x66, 0x64, 0x6b, 0x6f, 0x74, 0x76, 0x6f, 0x6b, 0x69, - 0x74, 0x89, 0x9d, 0x97, 0x7e, 0x76, 0x77, 0x80, 0x87, 0x83, 0x76, 0x6f, 0x6f, 0x68, 0x56, 0x4c, - 0x50, 0x67, 0x75, 0x7b, 0x80, 0x8b, 0x97, 0xb7, 0xc5, 0x9b, 0x77, 0x6f, 0x74, 0x6c, 0x4d, 0x37, - 0x3f, 0x5f, 0x6d, 0x78, 0x79, 0x65, 0x50, 0x3b, 0x39, 0x5c, 0x81, 0x84, 0x75, 0x71, 0x6e, 0x6a, - 0x73, 0x79, 0x8e, 0x90, 0x90, 0xa0, 0xa6, 0x9b, 0x8a, 0x80, 0x98, 0xb4, 0xb5, 0xa8, 0xa7, 0xc4, - 0xda, 0xd4, 0xc6, 0xb8, 0xa9, 0xa9, 0x8b, 0x6e, 0x6c, 0x6e, 0x76, 0x78, 0x7e, 0x84, 0x80, 0x79, - 0x7b, 0x8c, 0x9f, 0xa3, 0xa8, 0xa9, 0x99, 0x8f, 0x96, 0xa5, 0xab, 0xad, 0xa2, 0x9f, 0xa4, 0x93, - 0x8a, 0x8c, 0x90, 0x93, 0x91, 0x88, 0x7b, 0x77, 0x86, 0x96, 0x83, 0x6e, 0x65, 0x64, 0x6d, 0x74, - 0x74, 0x70, 0x81, 0x97, 0x90, 0x84, 0x79, 0x78, 0x6e, 0x57, 0x4a, 0x5a, 0x81, 0x92, 0x8d, 0x8a, - 0x83, 0x7b, 0x79, 0x77, 0x71, 0x74, 0x7a, 0x72, 0x5b, 0x59, 0x66, 0x66, 0x67, 0x76, 0x8a, 0x86, - 0x85, 0xa1, 0xbb, 0xa4, 0x7d, 0x68, 0x5d, 0x53, 0x50, 0x4d, 0x5b, 0x75, 0x80, 0x87, 0x8f, 0x93, - 0x94, 0x79, 0x4d, 0x3c, 0x4c, 0x5f, 0x64, 0x59, 0x62, 0x62, 0x5b, 0x67, 0x83, 0x95, 0x80, 0x6a, - 0x6d, 0x77, 0x6d, 0x69, 0x7b, 0x7d, 0x7c, 0x8a, 0x8e, 0xad, 0xd1, 0xcd, 0xaf, 0x9b, 0x86, 0x70, - 0x4f, 0x3b, 0x38, 0x2e, 0x21, 0x16, 0x2a, 0x49, 0x56, 0x57, 0x59, 0x64, 0x63, 0x71, 0x9f, 0xab, - 0xac, 0xa0, 0x95, 0x99, 0x9b, 0xa0, 0xa4, 0xa9, 0xb4, 0xb8, 0xc1, 0xc6, 0xbc, 0xb1, 0xa3, 0x8b, - 0x86, 0x96, 0xb1, 0xc2, 0xb3, 0xa8, 0x9e, 0x94, 0x86, 0x7c, 0x8f, 0x8b, 0x87, 0x89, 0x8d, 0x96, - 0x9b, 0x93, 0x75, 0x5a, 0x4d, 0x5e, 0x82, 0xa0, 0xae, 0xb2, 0xa1, 0x91, 0x95, 0x86, 0x6a, 0x5f, - 0x5a, 0x5e, 0x56, 0x53, 0x6e, 0x80, 0x8d, 0x95, 0x9d, 0x9f, 0x9e, 0xb8, 0xbc, 0xaf, 0xb0, 0xa7, - 0x9b, 0x84, 0x6f, 0x67, 0x6a, 0x68, 0x64, 0x64, 0x67, 0x75, 0x78, 0x63, 0x43, 0x2b, 0x27, 0x27, - 0x37, 0x3b, 0x40, 0x54, 0x5a, 0x5b, 0x5e, 0x65, 0x5c, 0x60, 0x6f, 0x6c, 0x70, 0x75, 0x77, 0x75, - 0x73, 0x6d, 0x71, 0x8a, 0xac, 0xaf, 0xa6, 0xa2, 0x93, 0x83, 0x6b, 0x4f, 0x46, 0x4f, 0x57, 0x5b, - 0x68, 0x86, 0xa3, 0xac, 0xad, 0xa6, 0x9c, 0x99, 0xa3, 0xac, 0xb9, 0xb6, 0xa8, 0x95, 0x82, 0x7c, - 0x77, 0x84, 0x91, 0x91, 0x8e, 0x91, 0x9e, 0xaf, 0xa8, 0x90, 0x79, 0x75, 0x85, 0x96, 0x7e, 0x7c, - 0x88, 0x89, 0x84, 0x82, 0x92, 0x88, 0x7b, 0x74, 0x6a, 0x6a, 0x68, 0x73, 0x74, 0x69, 0x62, 0x65, - 0x6f, 0x6e, 0x71, 0x7b, 0x81, 0x7a, 0x74, 0x6e, 0x59, 0x3e, 0x39, 0x37, 0x2c, 0x2e, 0x4c, 0x68, - 0x83, 0x93, 0x9c, 0x94, 0x98, 0xb7, 0xac, 0x9f, 0x9d, 0x97, 0x91, 0x77, 0x6d, 0x7d, 0x8c, 0x91, - 0x95, 0x9b, 0xa8, 0xb4, 0xb7, 0xa0, 0x81, 0x5e, 0x4c, 0x5a, 0x72, 0x74, 0x84, 0x8f, 0x91, 0x92, - 0x85, 0x82, 0x6f, 0x6d, 0x7d, 0x84, 0x93, 0x9f, 0xa5, 0xa2, 0xa4, 0xa5, 0xac, 0xbd, 0xc7, 0xc4, - 0xbe, 0xb7, 0xc2, 0xb4, 0x88, 0x65, 0x55, 0x4f, 0x3e, 0x34, 0x2a, 0x34, 0x4d, 0x57, 0x5c, 0x6e, - 0x71, 0x6e, 0x89, 0x92, 0x97, 0xa2, 0x9a, 0x96, 0xa4, 0xa3, 0x98, 0xa1, 0xa0, 0x96, 0x91, 0x9b, - 0xae, 0xb0, 0xa2, 0x97, 0x81, 0x7a, 0x8e, 0x8b, 0x79, 0x79, 0x90, 0xa5, 0xa0, 0xa9, 0xb9, 0xb5, - 0xae, 0xa6, 0x8e, 0x7e, 0x84, 0x83, 0x70, 0x60, 0x5c, 0x67, 0x80, 0x80, 0x7a, 0x80, 0x88, 0x8b, - 0x71, 0x54, 0x3c, 0x1b, 0x1b, 0x2e, 0x42, 0x53, 0x57, 0x60, 0x5f, 0x57, 0x56, 0x55, 0x53, 0x65, - 0x62, 0x4c, 0x53, 0x5f, 0x53, 0x3b, 0x36, 0x42, 0x54, 0x4c, 0x3a, 0x36, 0x45, 0x6a, 0x7b, 0x6d, - 0x59, 0x3c, 0x37, 0x4e, 0x51, 0x52, 0x5c, 0x66, 0x72, 0x80, 0x97, 0x95, 0x82, 0x7c, 0x82, 0x82, - 0x82, 0x8c, 0x95, 0x96, 0x98, 0xa7, 0xbb, 0xd5, 0xce, 0xb1, 0x9a, 0x9c, 0xbc, 0xc3, 0xb6, 0xac, - 0x97, 0x90, 0x89, 0x80, 0x7c, 0x7a, 0x87, 0x99, 0xa4, 0x9f, 0x9b, 0xaf, 0xb1, 0xa9, 0xa4, 0xad, - 0xb2, 0x9c, 0x84, 0x81, 0x7c, 0x7d, 0x84, 0x8d, 0x9f, 0xab, 0xbd, 0xcd, 0xbd, 0x9f, 0x86, 0x7a, - 0x8a, 0x87, 0x7e, 0x80, 0x81, 0x8c, 0x94, 0x98, 0x95, 0x8b, 0x88, 0x8a, 0x8e, 0x8e, 0x99, 0x9a, - 0x91, 0x8e, 0x86, 0x85, 0x92, 0x89, 0x7c, 0x79, 0x89, 0xa3, 0x9f, 0x7e, 0x64, 0x4b, 0x3a, 0x35, - 0x34, 0x3e, 0x47, 0x55, 0x69, 0x83, 0x97, 0xa1, 0xab, 0xac, 0x90, 0x75, 0x70, 0x78, 0x7e, 0x7e, - 0x80, 0x86, 0x8e, 0x82, 0x67, 0x53, 0x47, 0x44, 0x57, 0x6b, 0x6f, 0x63, 0x4f, 0x52, 0x59, 0x55, - 0x52, 0x57, 0x59, 0x68, 0x73, 0x7e, 0x84, 0x80, 0x82, 0x77, 0x74, 0x89, 0x95, 0x8f, 0x93, 0x97, - 0xa1, 0xbc, 0xbd, 0xa8, 0x9d, 0x99, 0x9b, 0xab, 0xac, 0xa0, 0x86, 0x75, 0x7a, 0x76, 0x5e, 0x5e, - 0x6a, 0x5f, 0x61, 0x6a, 0x61, 0x55, 0x5d, 0x66, 0x66, 0x69, 0x72, 0x7e, 0x80, 0x76, 0x76, 0x7d, - 0x82, 0x8c, 0x8a, 0x9b, 0xa4, 0xa8, 0xb2, 0xa8, 0x9c, 0x98, 0x9e, 0x93, 0x83, 0x78, 0x7c, 0x76, - 0x80, 0xa2, 0xaa, 0xa0, 0x95, 0x91, 0x7d, 0x6e, 0x73, 0x7e, 0x83, 0x80, 0x78, 0x80, 0x88, 0x7d, - 0x6a, 0x5e, 0x50, 0x4c, 0x62, 0x71, 0x6c, 0x5e, 0x47, 0x42, 0x45, 0x45, 0x45, 0x4e, 0x56, 0x67, - 0x83, 0x98, 0x9c, 0x90, 0x7a, 0x6f, 0x73, 0x7a, 0x74, 0x74, 0x8a, 0x95, 0x92, 0x87, 0x87, 0x79, - 0x71, 0x75, 0x77, 0x78, 0x72, 0x62, 0x54, 0x57, 0x5e, 0x60, 0x5f, 0x66, 0x69, 0x6c, 0x66, 0x68, - 0x69, 0x64, 0x6e, 0x7b, 0x87, 0x8d, 0x99, 0xa8, 0xa9, 0xab, 0xaf, 0xc0, 0xc2, 0xb5, 0xb7, 0xbf, - 0xb3, 0xa8, 0xac, 0xb8, 0xb2, 0x99, 0x83, 0x86, 0x8e, 0x99, 0xa6, 0xaa, 0xae, 0xb4, 0xb7, 0xb5, - 0xb4, 0xaa, 0x9b, 0x94, 0x8f, 0x90, 0x94, 0x91, 0x88, 0x8d, 0x8f, 0x80, 0x6c, 0x68, 0x65, 0x6a, - 0x7c, 0x81, 0x7d, 0x75, 0x76, 0x6f, 0x62, 0x5b, 0x5b, 0x63, 0x6b, 0x7c, 0x9c, 0x99, 0x76, 0x5b, - 0x49, 0x53, 0x6d, 0x71, 0x72, 0x78, 0x7a, 0x84, 0x90, 0x8b, 0x89, 0x84, 0x78, 0x67, 0x61, 0x63, - 0x5a, 0x48, 0x46, 0x47, 0x40, 0x41, 0x48, 0x56, 0x5b, 0x56, 0x55, 0x62, 0x6d, 0x77, 0x74, 0x6d, - 0x75, 0x88, 0x90, 0x8e, 0x8d, 0x90, 0x8c, 0x7d, 0x75, 0x81, 0x8f, 0x8e, 0x86, 0x80, 0x74, 0x7a, - 0x82, 0x82, 0x72, 0x72, 0x77, 0x71, 0x6a, 0x66, 0x73, 0x73, 0x6f, 0x7b, 0x87, 0x85, 0x7e, 0x85, - 0x98, 0xa0, 0xa8, 0xb1, 0xc0, 0xce, 0xc6, 0xab, 0x92, 0x91, 0x97, 0x9b, 0x9d, 0x9a, 0x9b, 0x99, - 0x86, 0x6c, 0x6a, 0x65, 0x6c, 0x7d, 0x8b, 0x9d, 0x8c, 0x73, 0x6c, 0x6b, 0x6a, 0x71, 0x78, 0x74, - 0x77, 0x8a, 0x9a, 0xaa, 0xbf, 0xbc, 0xa5, 0x9f, 0xa3, 0xa3, 0x9e, 0x9f, 0xa0, 0xa5, 0xb3, 0xa9, - 0x9b, 0x97, 0x91, 0x96, 0x93, 0x8e, 0x84, 0x83, 0x88, 0x84, 0x7c, 0x7a, 0x7e, 0x8c, 0x8a, 0x87, - 0x77, 0x6b, 0x73, 0x78, 0x84, 0x90, 0x83, 0x5f, 0x45, 0x40, 0x44, 0x3d, 0x3d, 0x4b, 0x44, 0x39, - 0x3b, 0x4a, 0x5d, 0x60, 0x64, 0x6b, 0x71, 0x81, 0x7e, 0x70, 0x61, 0x68, 0x73, 0x6e, 0x74, 0x78, - 0x7e, 0x7e, 0x6f, 0x5e, 0x53, 0x56, 0x65, 0x6c, 0x71, 0x69, 0x63, 0x6e, 0x6b, 0x64, 0x5c, 0x58, - 0x5c, 0x5f, 0x77, 0x91, 0x77, 0x5e, 0x73, 0x7d, 0x74, 0x6b, 0x80, 0x93, 0x95, 0x9c, 0xa8, 0xc0, - 0xc8, 0xb1, 0xa6, 0xaa, 0xb8, 0xb7, 0xad, 0x9d, 0x8b, 0x9e, 0xa5, 0x93, 0x79, 0x66, 0x65, 0x71, - 0x82, 0x8c, 0x7e, 0x6a, 0x75, 0x83, 0x89, 0x86, 0x84, 0x77, 0x5a, 0x5a, 0x75, 0x8d, 0x99, 0xa4, - 0xac, 0xa0, 0x8c, 0x88, 0x87, 0x84, 0x79, 0x6a, 0x81, 0x96, 0x8d, 0x76, 0x73, 0x8a, 0x8c, 0x89, - 0x95, 0x8c, 0x82, 0x8b, 0x88, 0x75, 0x6e, 0x80, 0x93, 0x91, 0x91, 0x8e, 0x8b, 0x89, 0x83, 0x76, - 0x62, 0x53, 0x47, 0x3e, 0x3c, 0x48, 0x53, 0x4c, 0x52, 0x55, 0x44, 0x50, 0x67, 0x7d, 0x90, 0x8e, - 0x78, 0x7e, 0xa0, 0xa4, 0x8f, 0x76, 0x7d, 0x82, 0x80, 0x8f, 0x9c, 0xad, 0xa9, 0x98, 0x8d, 0x87, - 0x8c, 0x91, 0x8c, 0x77, 0x79, 0x8f, 0x9d, 0x9e, 0x8d, 0x7c, 0x7c, 0x77, 0x81, 0x89, 0x84, 0x74, - 0x6f, 0x8e, 0xa3, 0x9f, 0x9b, 0x93, 0x92, 0x9d, 0xaf, 0xc5, 0xd9, 0xe3, 0xd1, 0xb2, 0x9d, 0x9b, - 0x98, 0x82, 0x6b, 0x62, 0x77, 0x93, 0x93, 0x74, 0x6a, 0x6f, 0x6c, 0x75, 0x77, 0x68, 0x63, 0x6b, - 0x71, 0x6d, 0x72, 0x73, 0x69, 0x5f, 0x60, 0x6b, 0x7c, 0x85, 0x8c, 0x8b, 0x7e, 0x77, 0x7b, 0x87, - 0x7e, 0x7d, 0x80, 0x87, 0x92, 0x82, 0x78, 0x7b, 0x7b, 0x7e, 0x6d, 0x54, 0x45, 0x4d, 0x6d, 0x77, - 0x5e, 0x53, 0x58, 0x65, 0x6f, 0x70, 0x78, 0x8f, 0x8f, 0x81, 0x78, 0x70, 0x62, 0x4f, 0x37, 0x2e, - 0x42, 0x4f, 0x51, 0x54, 0x4a, 0x43, 0x3e, 0x49, 0x61, 0x62, 0x53, 0x54, 0x74, 0x97, 0x96, 0x96, - 0x95, 0x91, 0x88, 0x82, 0x8a, 0x92, 0xa3, 0xae, 0xa4, 0x96, 0x93, 0x94, 0x92, 0x87, 0x74, 0x75, - 0x84, 0x94, 0x86, 0x79, 0x7b, 0x78, 0x74, 0x6e, 0x71, 0x7a, 0x82, 0x86, 0x99, 0xa4, 0xa9, 0xa9, - 0xa8, 0xaa, 0xb2, 0xb1, 0xb3, 0xc4, 0xc3, 0xac, 0x96, 0x93, 0x9b, 0x89, 0x6d, 0x6a, 0x6d, 0x7b, - 0x92, 0x92, 0x94, 0x96, 0x92, 0x8e, 0x87, 0x7b, 0x79, 0x84, 0x95, 0x95, 0x82, 0x6c, 0x62, 0x5c, - 0x5a, 0x64, 0x74, 0x8f, 0x88, 0x82, 0x8f, 0x88, 0x7d, 0x77, 0x79, 0x85, 0x95, 0x93, 0x90, 0x8a, - 0x77, 0x6f, 0x6a, 0x6c, 0x67, 0x56, 0x45, 0x50, 0x7b, 0x9c, 0xa2, 0x95, 0x8f, 0x8d, 0x86, 0x92, - 0xa0, 0xa7, 0xb3, 0xb1, 0xa5, 0x98, 0x89, 0x7e, 0x6a, 0x54, 0x4b, 0x51, 0x52, 0x4b, 0x4d, 0x5f, - 0x68, 0x63, 0x62, 0x6c, 0x72, 0x75, 0x7d, 0x8f, 0x9a, 0x9e, 0x9d, 0x9a, 0x8b, 0x7a, 0x76, 0x71, - 0x73, 0x7d, 0x8c, 0x95, 0x7e, 0x73, 0x7e, 0x7a, 0x79, 0x7c, 0x7d, 0x76, 0x78, 0x82, 0x89, 0x90, - 0x92, 0x7b, 0x61, 0x5d, 0x6c, 0x80, 0x7b, 0x7c, 0x84, 0x81, 0x74, 0x70, 0x80, 0x91, 0x9f, 0xa4, - 0xa6, 0xa8, 0xa3, 0x9b, 0x9b, 0x99, 0x93, 0x92, 0x8f, 0x82, 0x73, 0x75, 0x82, 0x7a, 0x75, 0x6c, - 0x63, 0x6b, 0x6b, 0x70, 0x77, 0x73, 0x6c, 0x5f, 0x57, 0x57, 0x4e, 0x5c, 0x76, 0x98, 0xac, 0x9b, - 0x91, 0x94, 0x94, 0x93, 0x8f, 0x8f, 0x8e, 0x89, 0x75, 0x6f, 0x7d, 0x90, 0x9a, 0x97, 0x85, 0x6d, - 0x69, 0x73, 0x7e, 0x8f, 0xae, 0xc6, 0xb8, 0xac, 0x9e, 0x8e, 0x8d, 0x89, 0x8b, 0x79, 0x76, 0x7a, - 0x69, 0x58, 0x4c, 0x37, 0x2f, 0x37, 0x3f, 0x3d, 0x2c, 0x3b, 0x57, 0x64, 0x68, 0x59, 0x53, 0x60, - 0x6e, 0x85, 0x95, 0x99, 0x95, 0x91, 0x8e, 0x8a, 0x8c, 0x88, 0x8f, 0x93, 0x8c, 0x9d, 0xa6, 0x98, - 0x95, 0x91, 0x93, 0xa5, 0xa5, 0x92, 0x75, 0x62, 0x64, 0x66, 0x67, 0x5d, 0x48, 0x4d, 0x5d, 0x6c, - 0x7c, 0x78, 0x7d, 0x81, 0x83, 0x87, 0x86, 0x94, 0x9e, 0xb6, 0xc3, 0xb6, 0xa3, 0x94, 0x94, 0x9d, - 0x95, 0x86, 0x7a, 0x6f, 0x5f, 0x64, 0x80, 0x99, 0x92, 0x86, 0x7d, 0x6e, 0x82, 0x96, 0x9f, 0xa5, - 0xad, 0xb4, 0xa8, 0x9f, 0x86, 0x5f, 0x49, 0x56, 0x78, 0x72, 0x61, 0x62, 0x55, 0x49, 0x49, 0x4e, - 0x5a, 0x5a, 0x5a, 0x62, 0x69, 0x76, 0x83, 0x86, 0x8f, 0x88, 0x6b, 0x67, 0x76, 0x8d, 0xa3, 0xbb, - 0xbd, 0xa5, 0x98, 0x90, 0x92, 0x9b, 0xae, 0xb4, 0x9d, 0x8a, 0x8a, 0x91, 0x8b, 0x74, 0x61, 0x61, - 0x61, 0x5c, 0x4c, 0x34, 0x36, 0x3e, 0x44, 0x50, 0x5e, 0x65, 0x5e, 0x66, 0x84, 0x94, 0x9c, 0x8f, - 0x8c, 0x98, 0x91, 0x7b, 0x73, 0x8b, 0x9a, 0x9b, 0x9f, 0xa2, 0x9b, 0x94, 0x91, 0x96, 0xa2, 0x9b, - 0x82, 0x6f, 0x72, 0x7e, 0x82, 0x7d, 0x73, 0x5e, 0x63, 0x83, 0xa1, 0xa5, 0x97, 0xa0, 0x9b, 0x9a, - 0x97, 0x8c, 0x82, 0x92, 0xb4, 0xbc, 0xc0, 0xb3, 0x99, 0x8a, 0x8e, 0x90, 0x87, 0x75, 0x6d, 0x7a, - 0x8b, 0x9d, 0xa3, 0x9c, 0xa4, 0x9f, 0x90, 0x92, 0x9d, 0xa0, 0x91, 0x83, 0x7e, 0x78, 0x72, 0x63, - 0x55, 0x55, 0x78, 0x85, 0x7a, 0x6a, 0x75, 0x89, 0x87, 0x84, 0x85, 0x87, 0x7b, 0x74, 0x74, 0x72, - 0x67, 0x60, 0x6a, 0x78, 0x7d, 0x69, 0x4e, 0x53, 0x6b, 0x7a, 0x90, 0x8a, 0x82, 0x8a, 0x88, 0x77, - 0x82, 0x96, 0x93, 0x7b, 0x61, 0x5c, 0x5e, 0x51, 0x3b, 0x24, 0x29, 0x34, 0x33, 0x31, 0x38, 0x46, - 0x4b, 0x45, 0x4a, 0x54, 0x5e, 0x68, 0x81, 0x94, 0x9e, 0x9a, 0x93, 0x99, 0x9a, 0x8a, 0x6b, 0x6e, - 0x8a, 0x94, 0xa2, 0xa8, 0x92, 0x76, 0x75, 0x7a, 0x7a, 0x78, 0x72, 0x6a, 0x5a, 0x57, 0x5c, 0x64, - 0x6c, 0x60, 0x50, 0x5c, 0x77, 0x8a, 0x85, 0x77, 0x77, 0x82, 0x84, 0x87, 0x91, 0x98, 0xa6, 0xa0, - 0xa1, 0xad, 0xa3, 0x9a, 0x9b, 0x9e, 0x8f, 0x89, 0x89, 0x87, 0x8a, 0x8d, 0x9a, 0x95, 0x8a, 0x92, - 0xa2, 0x9f, 0x96, 0x91, 0x95, 0x92, 0x94, 0x93, 0x9c, 0xa0, 0x93, 0x7e, 0x8b, 0xa1, 0x9e, 0x8c, - 0x79, 0x76, 0x77, 0x75, 0x6d, 0x6b, 0x72, 0x76, 0x74, 0x79, 0x89, 0x8e, 0x84, 0x80, 0x8d, 0x8a, - 0x7e, 0x81, 0x93, 0xa1, 0xa2, 0xa2, 0x98, 0x8c, 0x84, 0x86, 0x8a, 0x9d, 0xa2, 0x99, 0x99, 0x8e, - 0x76, 0x66, 0x67, 0x60, 0x60, 0x63, 0x64, 0x61, 0x54, 0x59, 0x69, 0x6e, 0x77, 0x81, 0x82, 0x88, - 0x92, 0x9a, 0x9f, 0x9d, 0x8d, 0x8d, 0x91, 0x95, 0x93, 0x8a, 0x8c, 0x8a, 0x8c, 0x95, 0x9a, 0x90, - 0x89, 0x7e, 0x78, 0x79, 0x76, 0x74, 0x69, 0x69, 0x75, 0x75, 0x71, 0x7a, 0x7e, 0x6d, 0x62, 0x61, - 0x6a, 0x73, 0x75, 0x75, 0x87, 0x8a, 0x85, 0x87, 0x99, 0xa5, 0xa2, 0xa2, 0xa2, 0x92, 0x88, 0x86, - 0x7c, 0x73, 0x66, 0x65, 0x6b, 0x6c, 0x84, 0x9f, 0x93, 0x86, 0x90, 0x96, 0x90, 0xa2, 0xab, 0x95, - 0x80, 0x6c, 0x64, 0x62, 0x59, 0x4d, 0x4c, 0x5c, 0x5f, 0x5f, 0x64, 0x5c, 0x4a, 0x44, 0x4d, 0x56, - 0x63, 0x68, 0x6c, 0x6c, 0x72, 0x84, 0x82, 0x82, 0x8d, 0x89, 0x72, 0x60, 0x6f, 0x74, 0x72, 0x76, - 0x79, 0x7a, 0x76, 0x7a, 0x87, 0x9b, 0xa9, 0x9f, 0x99, 0x96, 0x90, 0x94, 0x8e, 0x76, 0x62, 0x5a, - 0x59, 0x56, 0x51, 0x54, 0x52, 0x48, 0x4e, 0x5c, 0x69, 0x64, 0x65, 0x70, 0x79, 0x96, 0x9f, 0x91, - 0x92, 0x9b, 0xa0, 0x9e, 0xa2, 0xac, 0xaf, 0xa3, 0x99, 0x8e, 0x8a, 0x83, 0x7c, 0x71, 0x68, 0x69, - 0x66, 0x60, 0x6c, 0x77, 0x79, 0x7b, 0x78, 0x73, 0x7a, 0x98, 0xa3, 0x9c, 0x99, 0x90, 0x92, 0x9a, - 0xa6, 0xad, 0xad, 0xaa, 0xa6, 0xa1, 0xac, 0x9e, 0x86, 0x85, 0x93, 0x9f, 0x90, 0x7b, 0x76, 0x73, - 0x6a, 0x6f, 0x7c, 0x88, 0x95, 0x92, 0x88, 0x86, 0x93, 0x97, 0x95, 0x8a, 0x89, 0x8d, 0x8a, 0x86, - 0x91, 0x9f, 0x9e, 0x87, 0x77, 0x64, 0x4d, 0x59, 0x61, 0x55, 0x50, 0x4d, 0x50, 0x51, 0x54, 0x60, - 0x5b, 0x50, 0x5d, 0x68, 0x6f, 0x68, 0x6a, 0x72, 0x7c, 0x84, 0x8e, 0x99, 0x9c, 0x9c, 0xa1, 0xa9, - 0xb4, 0xb8, 0xb1, 0x9e, 0x88, 0x77, 0x7d, 0x8a, 0x83, 0x72, 0x74, 0x74, 0x6e, 0x6d, 0x6b, 0x64, - 0x6e, 0x77, 0x72, 0x6f, 0x7b, 0x87, 0x87, 0x83, 0x87, 0x86, 0x85, 0x8b, 0x96, 0xa2, 0x9d, 0x94, - 0x89, 0x7c, 0x72, 0x67, 0x63, 0x65, 0x6c, 0x74, 0x75, 0x7a, 0x7a, 0x72, 0x6a, 0x6b, 0x75, 0x8b, - 0x94, 0x7d, 0x6a, 0x6a, 0x6f, 0x82, 0x85, 0x73, 0x6e, 0x74, 0x78, 0x7e, 0x96, 0xa5, 0x9d, 0x8a, - 0x7d, 0x84, 0x81, 0x87, 0x96, 0x98, 0x93, 0x90, 0x97, 0x97, 0x8d, 0x83, 0x7c, 0x7d, 0x83, 0x83, - 0x84, 0x84, 0x82, 0x80, 0x89, 0x88, 0x89, 0x8b, 0x87, 0x84, 0x85, 0x92, 0x9e, 0xa4, 0xa9, 0x92, - 0x68, 0x55, 0x65, 0x7d, 0x7d, 0x7b, 0x80, 0x80, 0x74, 0x70, 0x8f, 0x9a, 0xa1, 0xa2, 0x9d, 0x96, - 0x89, 0x86, 0x89, 0x7a, 0x6c, 0x77, 0x82, 0x84, 0x88, 0x95, 0x9b, 0x88, 0x79, 0x6f, 0x5f, 0x53, - 0x52, 0x54, 0x53, 0x4d, 0x50, 0x54, 0x4f, 0x48, 0x42, 0x3b, 0x48, 0x6e, 0x84, 0x72, 0x60, 0x5f, - 0x69, 0x7e, 0x84, 0x95, 0xa1, 0xa2, 0xa0, 0xa1, 0xae, 0xae, 0xa2, 0x90, 0x74, 0x62, 0x63, 0x6b, - 0x6b, 0x5f, 0x64, 0x6e, 0x71, 0x71, 0x66, 0x63, 0x65, 0x6f, 0x79, 0x7b, 0x72, 0x6a, 0x64, 0x68, - 0x76, 0x73, 0x6d, 0x6b, 0x71, 0x71, 0x74, 0x84, 0x8d, 0x92, 0x91, 0x78, 0x76, 0x82, 0x8f, 0x93, - 0x8d, 0x89, 0x81, 0x81, 0x73, 0x63, 0x75, 0x93, 0xa3, 0x9d, 0x98, 0x94, 0x88, 0x8b, 0x98, 0x90, - 0x8d, 0xa0, 0xad, 0xae, 0xab, 0xb3, 0xb8, 0xa5, 0x97, 0x8e, 0x7b, 0x6e, 0x6b, 0x73, 0x75, 0x70, - 0x6e, 0x6a, 0x61, 0x56, 0x5c, 0x72, 0x8b, 0x9e, 0x9e, 0x83, 0x6c, 0x60, 0x71, 0x7c, 0x74, 0x80, - 0x94, 0x96, 0x8d, 0x96, 0xb5, 0xc3, 0xb2, 0x9b, 0x80, 0x72, 0x73, 0x77, 0x77, 0x6f, 0x71, 0x75, - 0x78, 0x70, 0x5e, 0x56, 0x4f, 0x53, 0x64, 0x67, 0x5f, 0x5a, 0x60, 0x6e, 0x7c, 0x90, 0xa4, 0xa7, - 0x9d, 0x97, 0xa6, 0xb7, 0xb5, 0xb3, 0xa0, 0x78, 0x71, 0x72, 0x70, 0x71, 0x76, 0x77, 0x75, 0x76, - 0x6c, 0x62, 0x7e, 0xa1, 0xa9, 0xa2, 0x93, 0x88, 0x7c, 0x85, 0x93, 0x9b, 0x9f, 0x90, 0x91, 0x95, - 0x8e, 0x8e, 0x8e, 0x80, 0x77, 0x76, 0x7e, 0x92, 0x90, 0x89, 0x8f, 0x98, 0x9b, 0x97, 0x90, 0x7c, - 0x7c, 0x97, 0xad, 0xb2, 0xa8, 0x90, 0x75, 0x6b, 0x7d, 0x85, 0x83, 0x85, 0x86, 0x7c, 0x6e, 0x70, - 0x8d, 0x97, 0x85, 0x79, 0x72, 0x64, 0x54, 0x53, 0x5b, 0x64, 0x63, 0x64, 0x67, 0x64, 0x5c, 0x69, - 0x82, 0x87, 0x81, 0x75, 0x6d, 0x5e, 0x60, 0x6b, 0x6a, 0x7b, 0x89, 0x82, 0x72, 0x6b, 0x7b, 0x82, - 0x77, 0x77, 0x69, 0x52, 0x4c, 0x52, 0x51, 0x4e, 0x4d, 0x4c, 0x4e, 0x4d, 0x4b, 0x4e, 0x62, 0x6f, - 0x72, 0x6e, 0x66, 0x57, 0x4b, 0x59, 0x6a, 0x7e, 0xa5, 0xb0, 0x9f, 0x90, 0x8c, 0x90, 0x85, 0x7b, - 0x77, 0x72, 0x7b, 0x8a, 0x8d, 0x7e, 0x84, 0x8f, 0x8b, 0x86, 0x77, 0x62, 0x65, 0x7e, 0x9b, 0xaa, - 0x9e, 0x82, 0x71, 0x6e, 0x7a, 0x8c, 0x99, 0x9a, 0x83, 0x7c, 0x8c, 0x9c, 0xa8, 0xaf, 0xa5, 0x95, - 0x99, 0xa2, 0x9a, 0x84, 0x77, 0x81, 0x8c, 0x8d, 0x8a, 0x78, 0x68, 0x73, 0x87, 0x92, 0x90, 0x92, - 0x93, 0x96, 0x9d, 0x9d, 0x99, 0xaa, 0xb3, 0xaa, 0xa2, 0x9f, 0xa0, 0x9d, 0x96, 0x97, 0x9b, 0x8e, - 0x74, 0x60, 0x5a, 0x62, 0x60, 0x5a, 0x58, 0x57, 0x57, 0x72, 0xa1, 0xb5, 0x9f, 0x82, 0x6b, 0x5f, - 0x56, 0x5e, 0x6a, 0x76, 0x8d, 0x8f, 0x81, 0x7c, 0x86, 0x87, 0x82, 0x7e, 0x7b, 0x7d, 0x86, 0x91, - 0x8e, 0x79, 0x76, 0x73, 0x69, 0x61, 0x57, 0x5b, 0x6c, 0x75, 0x7a, 0x8a, 0x8a, 0x6e, 0x5b, 0x57, - 0x67, 0x7a, 0x88, 0x9a, 0x92, 0x84, 0x8b, 0x9f, 0xad, 0xa7, 0x97, 0x88, 0x82, 0x81, 0x73, 0x63, - 0x6d, 0x89, 0x91, 0x90, 0x8d, 0x81, 0x77, 0x80, 0x96, 0xa2, 0x9d, 0x90, 0x8d, 0x94, 0x93, 0x90, - 0x98, 0xa0, 0x89, 0x6a, 0x6d, 0x81, 0x84, 0x80, 0x7d, 0x90, 0x9e, 0x9f, 0xa6, 0x99, 0x89, 0x88, - 0x7b, 0x77, 0x76, 0x73, 0x6e, 0x80, 0x9d, 0xaa, 0xa2, 0x94, 0x86, 0x7b, 0x72, 0x72, 0x7b, 0x88, - 0x93, 0x8d, 0x81, 0x80, 0x77, 0x66, 0x5e, 0x58, 0x5c, 0x6a, 0x70, 0x66, 0x50, 0x4a, 0x5d, 0x66, - 0x5a, 0x52, 0x4e, 0x58, 0x73, 0x96, 0x9c, 0x9a, 0x87, 0x68, 0x5b, 0x53, 0x59, 0x58, 0x57, 0x5f, - 0x55, 0x52, 0x65, 0x7b, 0x82, 0x7d, 0x75, 0x70, 0x6b, 0x68, 0x62, 0x63, 0x70, 0x7c, 0x7e, 0x78, - 0x6d, 0x5f, 0x61, 0x69, 0x6e, 0x73, 0x75, 0x72, 0x7a, 0x82, 0x80, 0x84, 0x9d, 0xb7, 0xbb, 0x9f, - 0x94, 0x9d, 0xa6, 0xa7, 0x9c, 0xaa, 0xae, 0xa3, 0x9b, 0x87, 0x7d, 0x76, 0x71, 0x72, 0x73, 0x70, - 0x72, 0x84, 0x9f, 0xb1, 0xa8, 0x91, 0x7c, 0x75, 0x76, 0x81, 0x8e, 0xa5, 0xa8, 0x95, 0x84, 0x8c, - 0x92, 0x85, 0x70, 0x67, 0x6f, 0x7a, 0x88, 0x8c, 0x6d, 0x59, 0x5d, 0x67, 0x64, 0x4f, 0x4b, 0x5b, - 0x75, 0x93, 0xa2, 0xa7, 0x94, 0x84, 0x82, 0x83, 0x86, 0x83, 0x83, 0x88, 0x90, 0x91, 0xa1, 0xa8, - 0x9f, 0x8f, 0x83, 0x83, 0x80, 0x73, 0x5d, 0x5d, 0x6b, 0x7a, 0x83, 0x7e, 0x6e, 0x67, 0x70, 0x88, - 0x9f, 0x98, 0x80, 0x76, 0x86, 0x8a, 0x75, 0x6d, 0x81, 0x91, 0x8b, 0x80, 0x7e, 0x87, 0x8b, 0x8c, - 0x8a, 0x96, 0x92, 0x7e, 0x6b, 0x5f, 0x5e, 0x5a, 0x51, 0x56, 0x54, 0x49, 0x54, 0x6f, 0x82, 0x81, - 0x78, 0x6c, 0x6a, 0x72, 0x79, 0x82, 0x91, 0xa8, 0xb6, 0xbf, 0xaa, 0x94, 0x97, 0x99, 0x89, 0x7c, - 0x87, 0x90, 0x97, 0x8f, 0x77, 0x68, 0x6b, 0x76, 0x77, 0x6e, 0x72, 0x7e, 0x95, 0xad, 0xbd, 0xc7, - 0xbb, 0xac, 0x9e, 0x9c, 0x98, 0x94, 0x95, 0x97, 0x91, 0x8b, 0x9e, 0xb2, 0xac, 0x9c, 0x97, 0x94, - 0x8f, 0x93, 0x95, 0x81, 0x78, 0x85, 0x92, 0x80, 0x61, 0x62, 0x6f, 0x85, 0x91, 0x90, 0x7a, 0x6e, - 0x77, 0x7d, 0x75, 0x6d, 0x72, 0x6f, 0x67, 0x61, 0x5f, 0x6b, 0x6a, 0x62, 0x6f, 0x89, 0x87, 0x76, - 0x63, 0x43, 0x34, 0x3b, 0x46, 0x52, 0x49, 0x41, 0x4f, 0x6e, 0x8d, 0x98, 0x7d, 0x62, 0x64, 0x70, - 0x71, 0x69, 0x6c, 0x79, 0x7c, 0x7b, 0x76, 0x69, 0x68, 0x67, 0x6b, 0x76, 0x82, 0x89, 0x85, 0x76, - 0x61, 0x61, 0x6f, 0x72, 0x68, 0x60, 0x65, 0x73, 0x88, 0x92, 0x8f, 0x8c, 0x80, 0x7a, 0x79, 0x7c, - 0x77, 0x75, 0x7d, 0x98, 0xa4, 0x91, 0x9b, 0xaf, 0xa6, 0x8e, 0x88, 0x89, 0x87, 0x89, 0x86, 0x7e, - 0x76, 0x72, 0x72, 0x6b, 0x61, 0x64, 0x6f, 0x7a, 0x87, 0x8c, 0x86, 0x8a, 0x8f, 0x90, 0x8a, 0x84, - 0x8b, 0x90, 0x8e, 0x84, 0x7a, 0x85, 0x8c, 0x8d, 0x9c, 0xa8, 0x9b, 0x89, 0x82, 0x71, 0x58, 0x57, - 0x60, 0x61, 0x4d, 0x48, 0x5e, 0x77, 0x8b, 0x90, 0x8b, 0x78, 0x75, 0x83, 0x98, 0xa2, 0xa1, 0x9d, - 0x97, 0x97, 0x95, 0x98, 0x98, 0x86, 0x81, 0x8b, 0x8f, 0x8d, 0x84, 0x6c, 0x48, 0x47, 0x5d, 0x67, - 0x66, 0x6a, 0x6b, 0x78, 0x8b, 0xa6, 0xbb, 0xac, 0x92, 0x8b, 0x81, 0x71, 0x70, 0x68, 0x73, 0x86, - 0x8b, 0x98, 0xa0, 0x96, 0x8f, 0x91, 0x9b, 0xa8, 0x9f, 0x92, 0x8c, 0x87, 0x90, 0x8f, 0x82, 0x7d, - 0x78, 0x77, 0x81, 0x84, 0x85, 0x7a, 0x75, 0x7c, 0x82, 0x83, 0x82, 0x7e, 0x7d, 0x82, 0x8e, 0x8d, - 0x89, 0x8b, 0x8a, 0x85, 0x88, 0x92, 0x82, 0x6e, 0x5f, 0x50, 0x51, 0x52, 0x55, 0x5e, 0x6a, 0x7b, - 0x91, 0x98, 0x98, 0x98, 0x9f, 0xaa, 0xa4, 0x9c, 0xa4, 0xa4, 0x9b, 0x97, 0x98, 0x8e, 0x7c, 0x80, - 0x7d, 0x76, 0x76, 0x7b, 0x83, 0x7e, 0x74, 0x72, 0x60, 0x5a, 0x68, 0x6d, 0x64, 0x5b, 0x5c, 0x67, - 0x75, 0x90, 0xa7, 0xa3, 0x8b, 0x75, 0x6a, 0x6c, 0x71, 0x6c, 0x66, 0x67, 0x65, 0x7d, 0x97, 0x86, - 0x73, 0x6c, 0x77, 0x82, 0x7b, 0x72, 0x62, 0x52, 0x57, 0x5f, 0x5e, 0x62, 0x60, 0x5d, 0x63, 0x6b, - 0x84, 0x7d, 0x70, 0x74, 0x74, 0x75, 0x6d, 0x6c, 0x6e, 0x75, 0x86, 0x92, 0x9d, 0x95, 0x8b, 0x95, - 0xab, 0xba, 0xaa, 0x8d, 0x72, 0x69, 0x73, 0x79, 0x6f, 0x68, 0x6a, 0x72, 0x7e, 0x83, 0x84, 0x7e, - 0x75, 0x7c, 0x85, 0x87, 0x8f, 0x92, 0x92, 0x90, 0x97, 0xa9, 0xa8, 0xa9, 0x99, 0x8b, 0x86, 0x7c, - 0x72, 0x68, 0x62, 0x60, 0x61, 0x66, 0x61, 0x56, 0x5c, 0x6a, 0x6f, 0x76, 0x7a, 0x84, 0x92, 0x98, - 0x8e, 0x7e, 0x71, 0x74, 0x80, 0x79, 0x70, 0x74, 0x72, 0x87, 0x99, 0x8a, 0x82, 0x7b, 0x84, 0x88, - 0x83, 0x7e, 0x87, 0x86, 0x87, 0x86, 0x83, 0x85, 0x76, 0x6d, 0x6c, 0x79, 0x90, 0x96, 0x90, 0x8e, - 0x8d, 0x94, 0x9e, 0xa9, 0xa3, 0x96, 0x96, 0xa1, 0xb8, 0xaf, 0xa0, 0xa0, 0xa0, 0x9b, 0x85, 0x6e, - 0x55, 0x4b, 0x51, 0x54, 0x4c, 0x4f, 0x59, 0x64, 0x6c, 0x73, 0x83, 0x8e, 0x87, 0x90, 0x97, 0x91, - 0x8f, 0x89, 0x82, 0x72, 0x7a, 0x8a, 0x96, 0x93, 0x76, 0x6f, 0x78, 0x82, 0x84, 0x82, 0x73, 0x67, - 0x71, 0x88, 0x87, 0x75, 0x6e, 0x69, 0x67, 0x69, 0x76, 0x7e, 0x7b, 0x76, 0x6f, 0x69, 0x68, 0x6a, - 0x6c, 0x5d, 0x57, 0x71, 0x8c, 0xa7, 0xb0, 0xa1, 0x9a, 0x92, 0x88, 0x82, 0x7e, 0x80, 0x87, 0x92, - 0x8f, 0x7d, 0x76, 0x7e, 0x82, 0x85, 0x8b, 0x8f, 0x96, 0xa5, 0xb1, 0xb2, 0xad, 0xa6, 0x9f, 0x97, - 0x82, 0x7b, 0x7b, 0x83, 0x98, 0x98, 0x98, 0x9e, 0xa2, 0x95, 0x79, 0x6b, 0x68, 0x70, 0x71, 0x65, - 0x5b, 0x65, 0x6f, 0x76, 0x7a, 0x7a, 0x84, 0x86, 0x83, 0x81, 0x7b, 0x79, 0x83, 0x8f, 0x8c, 0x83, - 0x80, 0x85, 0x9c, 0xa3, 0x92, 0x84, 0x82, 0x7b, 0x6b, 0x64, 0x61, 0x5b, 0x5c, 0x66, 0x60, 0x5d, - 0x62, 0x63, 0x68, 0x72, 0x83, 0x8a, 0x8d, 0x88, 0x7d, 0x79, 0x81, 0x87, 0x77, 0x5a, 0x55, 0x6f, - 0x90, 0xa5, 0x98, 0x88, 0x7b, 0x78, 0x7c, 0x7d, 0x7b, 0x6f, 0x74, 0x8b, 0x90, 0x85, 0x7b, 0x73, - 0x6b, 0x6a, 0x68, 0x6b, 0x6c, 0x63, 0x6a, 0x74, 0x7e, 0x8a, 0x8b, 0x81, 0x76, 0x78, 0x81, 0x96, - 0xa0, 0xa1, 0xa4, 0x9c, 0x91, 0x76, 0x58, 0x51, 0x5e, 0x67, 0x61, 0x48, 0x3f, 0x49, 0x5e, 0x71, - 0x7e, 0x80, 0x75, 0x73, 0x81, 0x90, 0x97, 0x99, 0x99, 0x91, 0x85, 0x78, 0x74, 0x74, 0x7a, 0x80, - 0x7a, 0x7e, 0x86, 0x7c, 0x6f, 0x6c, 0x6f, 0x73, 0x7c, 0x80, 0x7c, 0x7d, 0x7d, 0x78, 0x7d, 0x8c, - 0x9b, 0xa3, 0xa1, 0x9a, 0x8f, 0x89, 0x8b, 0x8c, 0x7e, 0x6e, 0x71, 0x83, 0xa4, 0xb7, 0xb0, 0xa9, - 0x98, 0x82, 0x72, 0x6e, 0x6e, 0x6a, 0x6e, 0x76, 0x7b, 0x77, 0x79, 0x7c, 0x7a, 0x7e, 0x80, 0x7d, - 0x81, 0x86, 0x8f, 0x98, 0xa1, 0x9f, 0x8e, 0x7b, 0x73, 0x80, 0x8a, 0x92, 0x97, 0x99, 0x96, 0x86, - 0x80, 0x70, 0x69, 0x6a, 0x6d, 0x79, 0x78, 0x6c, 0x6c, 0x72, 0x7a, 0x7e, 0x85, 0x81, 0x75, 0x69, - 0x6e, 0x81, 0x8c, 0x93, 0xa0, 0xa0, 0x96, 0x8e, 0x8e, 0x97, 0xa6, 0xa5, 0xa4, 0xa6, 0x9d, 0x86, - 0x73, 0x79, 0x8c, 0x91, 0x86, 0x7e, 0x7d, 0x71, 0x69, 0x72, 0x81, 0x94, 0x94, 0x90, 0x9c, 0xa5, - 0xa0, 0x9b, 0x96, 0x8d, 0x79, 0x66, 0x70, 0x7e, 0x87, 0x8f, 0x8c, 0x8e, 0x8b, 0x79, 0x69, 0x65, - 0x67, 0x66, 0x73, 0x81, 0x7d, 0x77, 0x76, 0x76, 0x6c, 0x65, 0x6f, 0x7b, 0x7e, 0x7a, 0x84, 0x87, - 0x86, 0x83, 0x77, 0x6e, 0x6d, 0x71, 0x6f, 0x7c, 0x8c, 0x8d, 0x89, 0x79, 0x70, 0x5e, 0x4a, 0x48, - 0x49, 0x45, 0x3a, 0x3c, 0x4c, 0x5f, 0x6f, 0x78, 0x7e, 0x7b, 0x6d, 0x70, 0x7d, 0x89, 0x8d, 0x8e, - 0x91, 0x88, 0x75, 0x76, 0x8b, 0x92, 0x91, 0x8e, 0x8a, 0x8a, 0x7e, 0x70, 0x68, 0x6f, 0x76, 0x77, - 0x74, 0x75, 0x7a, 0x76, 0x74, 0x7e, 0x8e, 0x95, 0x8d, 0x84, 0x8d, 0x87, 0x79, 0x78, 0x81, 0x83, - 0x7a, 0x72, 0x78, 0x77, 0x85, 0x97, 0x94, 0x97, 0x8d, 0x6c, 0x4f, 0x4e, 0x60, 0x6f, 0x77, 0x75, - 0x72, 0x69, 0x66, 0x70, 0x70, 0x70, 0x72, 0x70, 0x73, 0x7d, 0x8f, 0x9a, 0x97, 0x8d, 0x82, 0x7a, - 0x77, 0x7a, 0x7b, 0x83, 0x84, 0x88, 0x92, 0x98, 0x9f, 0x91, 0x82, 0x83, 0x83, 0x92, 0x9b, 0x99, - 0x9c, 0x99, 0x92, 0x8c, 0x93, 0xa0, 0x9e, 0x99, 0x9d, 0xa2, 0x99, 0x95, 0x9b, 0x9b, 0x91, 0x8d, - 0x92, 0x98, 0x98, 0x96, 0x9b, 0x98, 0x88, 0x76, 0x74, 0x78, 0x7a, 0x71, 0x5f, 0x50, 0x4c, 0x51, - 0x61, 0x69, 0x6b, 0x68, 0x5e, 0x5e, 0x85, 0x8a, 0x77, 0x6f, 0x6c, 0x68, 0x5c, 0x5b, 0x71, 0x76, - 0x7b, 0x88, 0x95, 0x98, 0x89, 0x79, 0x6d, 0x6c, 0x71, 0x77, 0x80, 0x83, 0x84, 0x84, 0x8a, 0x95, - 0x90, 0x8d, 0x89, 0x87, 0x89, 0x8c, 0x8c, 0x91, 0x97, 0x97, 0x91, 0x88, 0x86, 0x88, 0x88, 0x9c, - 0xa1, 0x9f, 0x9d, 0x95, 0x89, 0x6c, 0x63, 0x6a, 0x6d, 0x75, 0x7c, 0x78, 0x76, 0x7b, 0x83, 0x89, - 0x8d, 0x8c, 0x86, 0x87, 0x8f, 0x95, 0x97, 0x91, 0x95, 0x94, 0x88, 0x84, 0x85, 0x8a, 0x7d, 0x6c, - 0x71, 0x73, 0x6f, 0x63, 0x61, 0x65, 0x69, 0x63, 0x6a, 0x6f, 0x6d, 0x73, 0x74, 0x66, 0x5f, 0x61, - 0x6a, 0x76, 0x8d, 0x93, 0x8a, 0x7d, 0x7b, 0x85, 0x7e, 0x6d, 0x6f, 0x74, 0x7c, 0x82, 0x8b, 0x8f, - 0x82, 0x74, 0x68, 0x67, 0x67, 0x69, 0x6f, 0x6b, 0x6a, 0x77, 0x89, 0x92, 0x88, 0x80, 0x82, 0x85, - 0x8a, 0xa5, 0xb2, 0xad, 0xa2, 0x8f, 0x80, 0x78, 0x7e, 0x8a, 0x8a, 0x8d, 0x8e, 0x8b, 0x82, 0x7d, - 0x7e, 0x69, 0x5c, 0x60, 0x66, 0x69, 0x6a, 0x68, 0x74, 0x7d, 0x80, 0x80, 0x80, 0x79, 0x73, 0x72, - 0x70, 0x6e, 0x72, 0x76, 0x86, 0x8b, 0x88, 0x8e, 0x8f, 0x96, 0xa3, 0x9e, 0x98, 0x8f, 0x7c, 0x69, - 0x66, 0x74, 0x74, 0x60, 0x57, 0x5e, 0x67, 0x6b, 0x69, 0x65, 0x60, 0x5a, 0x63, 0x73, 0x85, 0x87, - 0x89, 0x89, 0x87, 0x90, 0x8d, 0x82, 0x85, 0x87, 0x93, 0x8f, 0x8b, 0x8d, 0x81, 0x75, 0x67, 0x61, - 0x63, 0x65, 0x73, 0x91, 0x9b, 0x9d, 0xa0, 0x97, 0x84, 0x79, 0x84, 0x8e, 0x8d, 0x8d, 0x99, 0xa2, - 0x98, 0x89, 0x8c, 0x8a, 0x8a, 0x8f, 0x92, 0x96, 0x8d, 0x8c, 0x91, 0x8c, 0x8d, 0x7c, 0x71, 0x6d, - 0x69, 0x69, 0x5f, 0x5f, 0x70, 0x79, 0x7d, 0x7a, 0x73, 0x6d, 0x69, 0x6f, 0x85, 0x88, 0x7c, 0x74, - 0x79, 0x7c, 0x79, 0x8a, 0x93, 0x95, 0x8c, 0x87, 0x8c, 0x84, 0x7a, 0x7a, 0x78, 0x79, 0x7b, 0x6f, - 0x6a, 0x6f, 0x7c, 0x8a, 0x88, 0x82, 0x79, 0x75, 0x78, 0x7e, 0x8a, 0x7d, 0x76, 0x7b, 0x83, 0x8c, - 0x81, 0x73, 0x76, 0x7e, 0x9e, 0xb6, 0xb0, 0xa0, 0x84, 0x75, 0x6f, 0x66, 0x6f, 0x78, 0x79, 0x7e, - 0x8e, 0x97, 0x98, 0x90, 0x86, 0x7d, 0x7a, 0x88, 0x92, 0x96, 0x9f, 0xa8, 0xa6, 0x9c, 0x9b, 0x94, - 0x93, 0x92, 0x91, 0x8f, 0x79, 0x76, 0x80, 0x7e, 0x83, 0x75, 0x5f, 0x5a, 0x5e, 0x69, 0x7b, 0x7e, - 0x74, 0x6e, 0x76, 0x7e, 0x78, 0x79, 0x78, 0x73, 0x75, 0x7e, 0x84, 0x8a, 0x96, 0x99, 0x90, 0x93, - 0x9f, 0xa2, 0x97, 0x8f, 0x94, 0x8f, 0x83, 0x83, 0x82, 0x79, 0x6f, 0x61, 0x5f, 0x63, 0x71, 0x7c, - 0x79, 0x70, 0x69, 0x62, 0x67, 0x76, 0x93, 0x9c, 0x8f, 0x82, 0x7c, 0x86, 0x7b, 0x6f, 0x74, 0x81, - 0x8c, 0x88, 0x80, 0x74, 0x64, 0x5a, 0x5d, 0x57, 0x5f, 0x71, 0x73, 0x77, 0x88, 0x94, 0x93, 0x83, - 0x79, 0x72, 0x6a, 0x66, 0x69, 0x6e, 0x6e, 0x76, 0x77, 0x76, 0x7c, 0x78, 0x76, 0x7a, 0x83, 0x8d, - 0x8f, 0x86, 0x79, 0x6e, 0x74, 0x6a, 0x57, 0x5c, 0x5b, 0x52, 0x51, 0x57, 0x62, 0x6e, 0x75, 0x79, - 0x6c, 0x68, 0x6c, 0x6d, 0x7b, 0x92, 0x9d, 0xa0, 0xa6, 0xa6, 0xa6, 0xa5, 0xa1, 0xa6, 0x9d, 0x8a, - 0x87, 0x8a, 0x8a, 0x8d, 0x8a, 0x82, 0x7e, 0x77, 0x85, 0x9c, 0x99, 0x88, 0x74, 0x6e, 0x6b, 0x68, - 0x73, 0x7c, 0x88, 0x86, 0x83, 0x86, 0x8b, 0x91, 0x85, 0x73, 0x7d, 0x9b, 0xa3, 0x9e, 0x96, 0x8f, - 0x80, 0x6e, 0x71, 0x75, 0x72, 0x71, 0x6f, 0x72, 0x77, 0x81, 0x85, 0x7b, 0x77, 0x6e, 0x67, 0x69, - 0x7d, 0x9a, 0xab, 0xa0, 0x8c, 0x87, 0x8d, 0x88, 0x81, 0x80, 0x7e, 0x78, 0x71, 0x71, 0x74, 0x70, - 0x74, 0x71, 0x65, 0x6b, 0x6e, 0x67, 0x69, 0x6f, 0x84, 0x93, 0x90, 0x8e, 0x83, 0x74, 0x6a, 0x73, - 0x83, 0x84, 0x89, 0x96, 0xa3, 0xa0, 0xa0, 0xa1, 0xa5, 0xb3, 0xb8, 0xb5, 0x9f, 0x8b, 0x88, 0x8c, - 0x8c, 0x89, 0x84, 0x73, 0x74, 0x7b, 0x7d, 0x82, 0x78, 0x73, 0x75, 0x72, 0x79, 0x83, 0x94, 0x9a, - 0x9b, 0xa3, 0xa7, 0xa3, 0x94, 0x89, 0x8b, 0x99, 0x9d, 0x8c, 0x77, 0x6c, 0x61, 0x5c, 0x65, 0x6c, - 0x6c, 0x69, 0x6e, 0x84, 0x9b, 0x97, 0x91, 0x88, 0x82, 0x79, 0x74, 0x77, 0x82, 0x8d, 0x8f, 0x8f, - 0x8f, 0x8b, 0x88, 0x7b, 0x70, 0x78, 0x81, 0x7b, 0x7c, 0x80, 0x7c, 0x76, 0x78, 0x72, 0x6c, 0x5f, - 0x4f, 0x4f, 0x54, 0x52, 0x68, 0x77, 0x74, 0x6e, 0x64, 0x5a, 0x59, 0x70, 0x8d, 0x9a, 0x8e, 0x88, - 0x88, 0x86, 0x89, 0x8a, 0x8e, 0x8d, 0x7a, 0x70, 0x6b, 0x61, 0x61, 0x68, 0x6d, 0x6c, 0x65, 0x59, - 0x5b, 0x64, 0x6d, 0x7b, 0x70, 0x64, 0x63, 0x60, 0x5b, 0x6a, 0x89, 0x8c, 0x7b, 0x79, 0x7b, 0x79, - 0x71, 0x6f, 0x7b, 0x92, 0x9c, 0x99, 0x9a, 0x84, 0x6d, 0x6b, 0x74, 0x7e, 0x7c, 0x70, 0x69, 0x73, - 0x82, 0x90, 0x93, 0x87, 0x82, 0x78, 0x70, 0x7b, 0x95, 0xa8, 0xad, 0xac, 0xaf, 0xa3, 0x92, 0x83, - 0x80, 0x8b, 0x92, 0x91, 0x8f, 0x8c, 0x83, 0x84, 0x97, 0x97, 0x8f, 0x76, 0x62, 0x69, 0x77, 0x80, - 0x84, 0x7e, 0x6b, 0x63, 0x5f, 0x5b, 0x64, 0x73, 0x82, 0x8b, 0x8f, 0x96, 0x96, 0x95, 0x93, 0x96, - 0x9f, 0x9f, 0x92, 0x8b, 0x8c, 0x89, 0x85, 0x85, 0x84, 0x80, 0x6c, 0x55, 0x57, 0x5a, 0x58, 0x63, - 0x60, 0x5e, 0x5d, 0x58, 0x59, 0x74, 0x9a, 0xa3, 0xa0, 0x8f, 0x87, 0x7e, 0x77, 0x78, 0x89, 0x99, - 0x8e, 0x7e, 0x84, 0x83, 0x76, 0x7a, 0x86, 0x8b, 0x85, 0x75, 0x78, 0x88, 0x91, 0x9f, 0xa0, 0x8f, - 0x7c, 0x6a, 0x65, 0x77, 0x8a, 0x95, 0x99, 0x95, 0x9b, 0x94, 0x8c, 0x88, 0x8d, 0x98, 0x9f, 0xa0, - 0xa0, 0xa9, 0x98, 0x90, 0xa1, 0xa0, 0x91, 0x76, 0x5f, 0x61, 0x65, 0x6f, 0x82, 0x83, 0x6f, 0x63, - 0x5c, 0x5d, 0x6e, 0x84, 0x8f, 0x94, 0x9c, 0xa6, 0x9d, 0x91, 0x8a, 0x8f, 0x97, 0x8e, 0x7a, 0x6d, - 0x66, 0x64, 0x65, 0x6c, 0x6b, 0x66, 0x53, 0x46, 0x54, 0x65, 0x7c, 0x7d, 0x6d, 0x63, 0x60, 0x60, - 0x61, 0x76, 0x8e, 0x88, 0x7e, 0x7b, 0x79, 0x73, 0x71, 0x74, 0x86, 0x92, 0x84, 0x79, 0x78, 0x77, - 0x71, 0x70, 0x76, 0x79, 0x73, 0x6a, 0x6c, 0x77, 0x81, 0x86, 0x89, 0x83, 0x77, 0x6c, 0x6f, 0x80, - 0x9b, 0xa7, 0xac, 0xb8, 0xa9, 0x90, 0x88, 0x8e, 0x97, 0x9e, 0x98, 0x86, 0x7e, 0x85, 0x82, 0x85, - 0x94, 0x90, 0x82, 0x72, 0x68, 0x74, 0x7c, 0x83, 0x92, 0x8d, 0x78, 0x6a, 0x62, 0x65, 0x6e, 0x79, - 0x7d, 0x7d, 0x7a, 0x82, 0x83, 0x80, 0x84, 0x8e, 0x99, 0x98, 0x8b, 0x8e, 0xa0, 0x94, 0x83, 0x81, - 0x82, 0x7d, 0x63, 0x4a, 0x50, 0x60, 0x72, 0x7b, 0x70, 0x64, 0x5c, 0x5b, 0x62, 0x87, 0xad, 0xa5, - 0x92, 0x8d, 0x89, 0x80, 0x77, 0x76, 0x86, 0x88, 0x78, 0x72, 0x6f, 0x66, 0x60, 0x5e, 0x65, 0x70, - 0x6e, 0x66, 0x68, 0x74, 0x8c, 0x9d, 0x90, 0x79, 0x67, 0x61, 0x65, 0x6d, 0x79, 0x7c, 0x7b, 0x88, - 0x8c, 0x7e, 0x79, 0x80, 0x87, 0x90, 0x97, 0x99, 0x98, 0x91, 0x88, 0x8c, 0x95, 0x8c, 0x81, 0x6f, - 0x5c, 0x5f, 0x69, 0x6e, 0x6d, 0x68, 0x5e, 0x52, 0x53, 0x5a, 0x69, 0x7a, 0x84, 0x9c, 0xa9, 0x9a, - 0x8c, 0x89, 0x90, 0x95, 0x95, 0x8d, 0x80, 0x7e, 0x89, 0x8b, 0x7d, 0x74, 0x75, 0x79, 0x68, 0x5d, - 0x72, 0x82, 0x83, 0x82, 0x7b, 0x75, 0x6f, 0x6e, 0x75, 0x8c, 0x9f, 0x9b, 0x95, 0x8b, 0x8b, 0x94, - 0x98, 0x9b, 0xa7, 0xa9, 0xa0, 0x9e, 0xb0, 0xb0, 0x95, 0x7d, 0x78, 0x8a, 0x83, 0x6b, 0x6b, 0x73, - 0x7d, 0x8d, 0x96, 0x8b, 0x76, 0x6e, 0x76, 0x85, 0x98, 0xa1, 0x9c, 0x9e, 0xa0, 0x96, 0x9a, 0x9a, - 0x94, 0x93, 0x8a, 0x83, 0x84, 0x79, 0x68, 0x72, 0x80, 0x81, 0x80, 0x6e, 0x69, 0x73, 0x81, 0x98, - 0x9e, 0x86, 0x69, 0x5d, 0x63, 0x6a, 0x6f, 0x72, 0x74, 0x83, 0x93, 0x9d, 0x9b, 0x97, 0x92, 0x9a, - 0xa2, 0xa2, 0xa3, 0xa1, 0x98, 0x91, 0x88, 0x7c, 0x7b, 0x78, 0x65, 0x58, 0x63, 0x6e, 0x6d, 0x65, - 0x64, 0x65, 0x66, 0x63, 0x6d, 0x8a, 0x9c, 0x9b, 0xa1, 0x98, 0x7d, 0x73, 0x6f, 0x6d, 0x72, 0x6a, - 0x5d, 0x55, 0x5d, 0x65, 0x66, 0x5d, 0x60, 0x72, 0x6e, 0x66, 0x76, 0x84, 0x87, 0x87, 0x88, 0x7e, - 0x76, 0x70, 0x70, 0x79, 0x79, 0x73, 0x71, 0x74, 0x6d, 0x64, 0x70, 0x71, 0x6b, 0x73, 0x79, 0x7e, - 0x89, 0x91, 0x8c, 0x89, 0x85, 0x7e, 0x81, 0x68, 0x56, 0x55, 0x4f, 0x56, 0x64, 0x62, 0x53, 0x4f, - 0x57, 0x63, 0x6c, 0x7c, 0x92, 0x94, 0x8c, 0x91, 0x95, 0x94, 0x8b, 0x92, 0x9a, 0x8f, 0x86, 0x87, - 0x83, 0x78, 0x73, 0x6d, 0x75, 0x78, 0x6a, 0x68, 0x77, 0x8a, 0x95, 0x8e, 0x76, 0x68, 0x66, 0x6b, - 0x75, 0x89, 0x98, 0x8d, 0x87, 0x8e, 0x93, 0x90, 0x8c, 0x89, 0x95, 0x92, 0x8e, 0x96, 0x94, 0x8a, - 0x8c, 0x8c, 0x8b, 0x91, 0x87, 0x80, 0x7b, 0x74, 0x79, 0x7d, 0x74, 0x6c, 0x6e, 0x70, 0x72, 0x7a, - 0x84, 0x94, 0xa3, 0xae, 0xa7, 0x8f, 0x8d, 0x90, 0x95, 0x99, 0x93, 0x86, 0x75, 0x75, 0x88, 0x9d, - 0x9f, 0x92, 0x8d, 0x7e, 0x76, 0x7b, 0x82, 0x84, 0x80, 0x7b, 0x7c, 0x85, 0x84, 0x86, 0x8a, 0x86, - 0x8e, 0x95, 0x8f, 0x91, 0x93, 0x92, 0x92, 0x98, 0xa0, 0xa0, 0xa2, 0xa8, 0xaf, 0xa2, 0x89, 0x78, - 0x82, 0x89, 0x74, 0x66, 0x65, 0x63, 0x6b, 0x74, 0x72, 0x67, 0x60, 0x6c, 0x86, 0x9b, 0xb0, 0xac, - 0x98, 0x90, 0x98, 0x9a, 0x93, 0x8b, 0x8a, 0x7e, 0x6c, 0x6b, 0x6c, 0x6b, 0x64, 0x5b, 0x5f, 0x68, - 0x5e, 0x63, 0x73, 0x7a, 0x86, 0x97, 0x8c, 0x75, 0x6b, 0x6f, 0x75, 0x72, 0x6d, 0x6b, 0x69, 0x69, - 0x70, 0x72, 0x6e, 0x6f, 0x82, 0x89, 0x82, 0x79, 0x7a, 0x7d, 0x87, 0x98, 0xa3, 0x96, 0x86, 0x76, - 0x69, 0x5f, 0x5b, 0x5c, 0x5d, 0x53, 0x4f, 0x54, 0x52, 0x5a, 0x6b, 0x7a, 0x89, 0x92, 0x98, 0x96, - 0x88, 0x77, 0x80, 0x8f, 0x85, 0x74, 0x6d, 0x6c, 0x70, 0x75, 0x73, 0x6e, 0x74, 0x7a, 0x79, 0x76, - 0x7c, 0x83, 0x7e, 0x79, 0x7a, 0x79, 0x75, 0x7b, 0x8d, 0x93, 0x96, 0x91, 0x8d, 0x8a, 0x80, 0x78, - 0x75, 0x7b, 0x82, 0x84, 0x8a, 0x90, 0x96, 0xa3, 0x9c, 0x8c, 0x89, 0x8a, 0x7d, 0x74, 0x71, 0x6b, - 0x66, 0x6b, 0x71, 0x72, 0x6b, 0x6f, 0x82, 0x8c, 0x8d, 0x98, 0x9e, 0x92, 0x8a, 0x90, 0x97, 0x97, - 0x9c, 0x90, 0x78, 0x65, 0x67, 0x78, 0x83, 0x85, 0x8a, 0x85, 0x78, 0x6d, 0x6e, 0x79, 0x7b, 0x7a, - 0x86, 0x7d, 0x6c, 0x67, 0x6f, 0x7c, 0x7c, 0x7c, 0x81, 0x7e, 0x7e, 0x89, 0x8d, 0x84, 0x92, 0xa5, - 0x9e, 0x92, 0x8b, 0x8e, 0x88, 0x81, 0x89, 0x92, 0x8d, 0x7b, 0x6f, 0x66, 0x67, 0x6b, 0x6a, 0x68, - 0x5c, 0x51, 0x56, 0x6a, 0x80, 0x9a, 0xb0, 0xab, 0xa8, 0xaa, 0x99, 0x8d, 0x87, 0x90, 0x8e, 0x79, - 0x6d, 0x6b, 0x70, 0x79, 0x84, 0x85, 0x83, 0x84, 0x83, 0x87, 0x88, 0x84, 0x7d, 0x76, 0x71, 0x77, - 0x7b, 0x7b, 0x84, 0x83, 0x7c, 0x7d, 0x83, 0x87, 0x8b, 0x89, 0x86, 0x86, 0x8a, 0x7e, 0x7d, 0x7d, - 0x85, 0x98, 0xaa, 0xaa, 0xa9, 0x97, 0x84, 0x74, 0x65, 0x66, 0x64, 0x56, 0x59, 0x5a, 0x54, 0x57, - 0x6d, 0x87, 0x90, 0x8f, 0x8e, 0x8b, 0x81, 0x81, 0x92, 0x96, 0x99, 0x93, 0x7c, 0x6d, 0x65, 0x70, - 0x74, 0x70, 0x6b, 0x68, 0x64, 0x5a, 0x66, 0x77, 0x85, 0x7e, 0x7c, 0x8b, 0x80, 0x71, 0x6f, 0x84, - 0x94, 0x99, 0xa4, 0x9b, 0x8b, 0x84, 0x84, 0x89, 0x8d, 0x9c, 0x9d, 0x90, 0x85, 0x87, 0x91, 0x8f, - 0x97, 0xa3, 0xa3, 0x96, 0x87, 0x83, 0x80, 0x7b, 0x77, 0x76, 0x73, 0x67, 0x63, 0x6c, 0x76, 0x7a, - 0x82, 0x8a, 0x89, 0x92, 0xa6, 0xa1, 0x94, 0x85, 0x84, 0x75, 0x66, 0x61, 0x65, 0x6e, 0x79, 0x89, - 0x92, 0x8b, 0x7e, 0x77, 0x73, 0x75, 0x70, 0x63, 0x5d, 0x59, 0x5e, 0x67, 0x72, 0x79, 0x7a, 0x75, - 0x75, 0x7b, 0x7b, 0x78, 0x79, 0x77, 0x81, 0x7e, 0x76, 0x7b, 0x83, 0x8a, 0x93, 0x9a, 0x8e, 0x84, - 0x74, 0x6e, 0x77, 0x74, 0x73, 0x62, 0x53, 0x57, 0x5a, 0x5a, 0x66, 0x83, 0x95, 0x9c, 0xa6, 0xa0, - 0x90, 0x7b, 0x79, 0x86, 0x89, 0x85, 0x72, 0x5c, 0x56, 0x60, 0x6e, 0x73, 0x76, 0x77, 0x75, 0x70, - 0x69, 0x72, 0x82, 0x87, 0x81, 0x86, 0x8e, 0x81, 0x78, 0x75, 0x7a, 0x77, 0x71, 0x73, 0x70, 0x71, - 0x7b, 0x7e, 0x81, 0x86, 0x8c, 0x84, 0x7a, 0x73, 0x77, 0x80, 0x82, 0x89, 0x9e, 0x9a, 0x82, 0x6d, - 0x69, 0x6f, 0x6c, 0x62, 0x5c, 0x56, 0x55, 0x5c, 0x6c, 0x7b, 0x8a, 0x91, 0x96, 0x9a, 0xa1, 0xaa, - 0xa2, 0xa0, 0x9f, 0x98, 0x88, 0x80, 0x84, 0x81, 0x7d, 0x7b, 0x84, 0x8c, 0x8c, 0x95, 0x9e, 0x99, - 0x91, 0x82, 0x76, 0x72, 0x74, 0x76, 0x86, 0x98, 0x9d, 0xa1, 0xaa, 0xa6, 0x9d, 0x8c, 0x86, 0x8b, - 0x8e, 0x86, 0x7c, 0x7b, 0x81, 0x8d, 0x93, 0xa1, 0xad, 0xa3, 0x95, 0x86, 0x81, 0x7e, 0x80, 0x7d, - 0x6f, 0x67, 0x6e, 0x77, 0x7e, 0x8c, 0x9b, 0x9c, 0x9c, 0x9b, 0x9a, 0x9d, 0x99, 0x90, 0x96, 0xa2, - 0x9d, 0x8f, 0x81, 0x76, 0x7d, 0x86, 0x86, 0x8d, 0x9a, 0x85, 0x6e, 0x67, 0x73, 0x81, 0x7b, 0x6c, - 0x6e, 0x71, 0x62, 0x5e, 0x66, 0x74, 0x78, 0x72, 0x6f, 0x6d, 0x66, 0x66, 0x6d, 0x7e, 0x90, 0x95, - 0x90, 0x8b, 0x89, 0x84, 0x7d, 0x78, 0x80, 0x86, 0x85, 0x84, 0x77, 0x67, 0x5f, 0x59, 0x55, 0x54, - 0x52, 0x4d, 0x50, 0x5c, 0x6e, 0x8e, 0xa4, 0x9e, 0x90, 0x88, 0x8c, 0x87, 0x8a, 0x7e, 0x74, 0x67, - 0x5d, 0x63, 0x69, 0x6f, 0x75, 0x77, 0x73, 0x73, 0x74, 0x73, 0x79, 0x79, 0x71, 0x6b, 0x65, 0x6b, - 0x76, 0x7c, 0x79, 0x72, 0x73, 0x74, 0x81, 0x86, 0x7c, 0x6c, 0x6c, 0x6f, 0x6a, 0x6d, 0x73, 0x75, - 0x7e, 0x82, 0x94, 0xb0, 0xad, 0x93, 0x7e, 0x71, 0x6f, 0x6f, 0x67, 0x5a, 0x54, 0x4f, 0x53, 0x61, - 0x77, 0x89, 0x91, 0x90, 0x92, 0x90, 0x80, 0x74, 0x77, 0x8e, 0x98, 0x88, 0x75, 0x6e, 0x70, 0x76, - 0x77, 0x77, 0x79, 0x77, 0x73, 0x7a, 0x7e, 0x82, 0x81, 0x82, 0x80, 0x84, 0x8b, 0x7b, 0x78, 0x7d, - 0x90, 0xa6, 0xa8, 0x99, 0x88, 0x79, 0x78, 0x85, 0x96, 0x96, 0x94, 0x89, 0x81, 0x88, 0x8d, 0x90, - 0x90, 0x8f, 0x90, 0x93, 0x88, 0x78, 0x7e, 0x81, 0x83, 0x7e, 0x73, 0x77, 0x79, 0x76, 0x80, 0x8f, - 0x9f, 0xa3, 0xa7, 0xa5, 0xa8, 0x9e, 0x91, 0x96, 0x88, 0x82, 0x75, 0x6b, 0x6d, 0x72, 0x86, 0x99, - 0x9d, 0x92, 0x8e, 0x88, 0x8b, 0x8f, 0x87, 0x7a, 0x69, 0x5f, 0x68, 0x7a, 0x8e, 0x93, 0x8f, 0x88, - 0x84, 0x87, 0x80, 0x75, 0x78, 0x86, 0x86, 0x84, 0x89, 0x8d, 0x8f, 0x8f, 0x8e, 0x9d, 0xa6, 0x95, - 0x8e, 0x89, 0x83, 0x79, 0x6d, 0x67, 0x61, 0x5b, 0x5a, 0x5d, 0x6d, 0x83, 0x9e, 0xb3, 0xb3, 0xa0, - 0x8a, 0x77, 0x77, 0x88, 0x9a, 0x95, 0x83, 0x70, 0x66, 0x6b, 0x76, 0x7c, 0x77, 0x6a, 0x60, 0x5f, - 0x5f, 0x62, 0x71, 0x74, 0x73, 0x69, 0x6a, 0x73, 0x6a, 0x69, 0x6b, 0x77, 0x79, 0x75, 0x71, 0x6a, - 0x6c, 0x6b, 0x7a, 0x8e, 0x8b, 0x89, 0x82, 0x7d, 0x83, 0x8a, 0x93, 0x9e, 0x9e, 0x92, 0x89, 0x70, - 0x6c, 0x70, 0x67, 0x62, 0x56, 0x49, 0x48, 0x53, 0x62, 0x75, 0x82, 0x85, 0x89, 0x88, 0x7e, 0x84, - 0x8f, 0x95, 0x93, 0x85, 0x81, 0x7c, 0x7b, 0x7b, 0x7e, 0x86, 0x88, 0x86, 0x8c, 0x8d, 0x8e, 0x92, - 0x90, 0x8a, 0x79, 0x67, 0x65, 0x6b, 0x7d, 0x92, 0x9a, 0xa0, 0xa0, 0x91, 0x80, 0x71, 0x6a, 0x74, - 0x7e, 0x75, 0x72, 0x76, 0x79, 0x82, 0x8f, 0x94, 0x9c, 0x97, 0x88, 0x87, 0x7b, 0x76, 0x79, 0x74, - 0x6d, 0x66, 0x63, 0x69, 0x74, 0x80, 0x89, 0x90, 0x91, 0x95, 0x92, 0x82, 0x78, 0x7b, 0x8b, 0x91, - 0x85, 0x73, 0x63, 0x5d, 0x69, 0x7d, 0x84, 0x87, 0x7e, 0x71, 0x6b, 0x65, 0x75, 0x80, 0x74, 0x6c, - 0x62, 0x69, 0x6d, 0x6e, 0x77, 0x7b, 0x7b, 0x78, 0x7b, 0x75, 0x71, 0x72, 0x82, 0x98, 0x99, 0x90, - 0x8c, 0x8b, 0x8c, 0x8e, 0x89, 0x83, 0x85, 0x81, 0x83, 0x84, 0x81, 0x86, 0x7e, 0x76, 0x73, 0x63, - 0x59, 0x5d, 0x75, 0x8a, 0x96, 0xab, 0xb1, 0xa5, 0x91, 0x83, 0x92, 0x9f, 0x96, 0x86, 0x7d, 0x78, - 0x72, 0x78, 0x85, 0x8c, 0x88, 0x86, 0x88, 0x8c, 0x87, 0x87, 0x90, 0x8c, 0x85, 0x71, 0x68, 0x76, - 0x84, 0x90, 0x95, 0x8e, 0x8b, 0x86, 0x7b, 0x78, 0x7a, 0x7c, 0x82, 0x87, 0x7d, 0x76, 0x76, 0x7a, - 0x8c, 0x94, 0x95, 0xa7, 0x9f, 0x8c, 0x7c, 0x6d, 0x73, 0x72, 0x63, 0x5e, 0x5c, 0x5a, 0x67, 0x79, - 0x8a, 0x90, 0x90, 0x97, 0x9b, 0x90, 0x80, 0x79, 0x8e, 0x9e, 0xa0, 0x96, 0x8f, 0x8e, 0x8e, 0x90, - 0x90, 0x87, 0x77, 0x6a, 0x6f, 0x70, 0x79, 0x8b, 0x84, 0x77, 0x6c, 0x5e, 0x64, 0x6e, 0x80, 0x87, - 0x88, 0x95, 0x97, 0x8a, 0x76, 0x71, 0x7b, 0x90, 0x90, 0x86, 0x82, 0x7d, 0x83, 0x8c, 0x90, 0x87, - 0x7d, 0x82, 0x82, 0x87, 0x80, 0x79, 0x7b, 0x76, 0x73, 0x6b, 0x5e, 0x5f, 0x6a, 0x7b, 0x7d, 0x80, - 0x8b, 0x8d, 0x87, 0x82, 0x8f, 0xa6, 0x9e, 0x8f, 0x7a, 0x6a, 0x64, 0x6d, 0x7e, 0x85, 0x87, 0x93, - 0x95, 0x8a, 0x7e, 0x78, 0x80, 0x84, 0x75, 0x6c, 0x5d, 0x54, 0x62, 0x72, 0x80, 0x82, 0x7d, 0x80, - 0x7e, 0x78, 0x71, 0x65, 0x68, 0x75, 0x7c, 0x6c, 0x6a, 0x77, 0x80, 0x83, 0x83, 0x85, 0x89, 0x77, - 0x6f, 0x6e, 0x75, 0x7b, 0x6c, 0x5d, 0x51, 0x43, 0x47, 0x63, 0x76, 0x7c, 0x82, 0x94, 0x9a, 0x8c, - 0x7c, 0x70, 0x74, 0x7e, 0x7a, 0x77, 0x6e, 0x67, 0x6a, 0x6e, 0x76, 0x75, 0x69, 0x65, 0x6c, 0x77, - 0x6e, 0x6d, 0x7a, 0x81, 0x81, 0x76, 0x7b, 0x8f, 0x90, 0x8d, 0x84, 0x81, 0x7c, 0x73, 0x71, 0x78, - 0x84, 0x93, 0x95, 0x8b, 0x7c, 0x74, 0x82, 0x97, 0x9f, 0x9a, 0x92, 0x9c, 0xa0, 0x9c, 0x95, 0x8d, - 0x8e, 0x8a, 0x7d, 0x7b, 0x74, 0x6a, 0x71, 0x83, 0x90, 0x86, 0x85, 0x91, 0x92, 0x92, 0x8c, 0x93, - 0xa2, 0xa0, 0x94, 0x82, 0x83, 0x8f, 0x91, 0x91, 0x90, 0x8a, 0x86, 0x85, 0x88, 0x8f, 0x9c, 0xa5, - 0x99, 0x85, 0x6f, 0x5c, 0x65, 0x82, 0x93, 0x94, 0x93, 0x9d, 0x98, 0x8a, 0x7e, 0x72, 0x71, 0x76, - 0x79, 0x7b, 0x6a, 0x6d, 0x81, 0x8a, 0x8e, 0x8c, 0x96, 0x97, 0x8c, 0x82, 0x71, 0x6b, 0x6b, 0x6b, - 0x6b, 0x67, 0x67, 0x75, 0x82, 0x84, 0x83, 0x84, 0x86, 0x83, 0x83, 0x84, 0x87, 0x8d, 0x8b, 0x84, - 0x72, 0x66, 0x74, 0x86, 0x8a, 0x88, 0x83, 0x84, 0x7d, 0x7d, 0x73, 0x60, 0x63, 0x67, 0x63, 0x65, - 0x63, 0x71, 0x7e, 0x81, 0x80, 0x7a, 0x7c, 0x7b, 0x74, 0x79, 0x78, 0x78, 0x86, 0x8a, 0x83, 0x7e, - 0x86, 0x99, 0xa1, 0x99, 0x8e, 0x83, 0x79, 0x7e, 0x89, 0x8a, 0x91, 0x8d, 0x7e, 0x72, 0x65, 0x5a, - 0x66, 0x7e, 0x8d, 0x89, 0x84, 0x93, 0x8f, 0x88, 0x82, 0x7c, 0x91, 0x8c, 0x77, 0x6b, 0x60, 0x67, - 0x71, 0x71, 0x75, 0x74, 0x73, 0x74, 0x77, 0x76, 0x73, 0x73, 0x79, 0x7e, 0x77, 0x6d, 0x68, 0x70, - 0x80, 0x80, 0x7b, 0x78, 0x73, 0x6e, 0x6f, 0x75, 0x7b, 0x81, 0x77, 0x6d, 0x5e, 0x53, 0x67, 0x7c, - 0x83, 0x82, 0x8d, 0xa6, 0x98, 0x8d, 0x79, 0x6a, 0x6d, 0x63, 0x5b, 0x5a, 0x57, 0x60, 0x73, 0x80, - 0x85, 0x8a, 0x8f, 0x93, 0x8e, 0x8f, 0x8e, 0x83, 0x81, 0x88, 0x88, 0x84, 0x88, 0x94, 0x95, 0x8d, - 0x88, 0x82, 0x7d, 0x84, 0x8c, 0x88, 0x86, 0x81, 0x79, 0x76, 0x6e, 0x79, 0x99, 0x9f, 0x9d, 0x92, - 0x95, 0xa4, 0x94, 0x86, 0x7d, 0x77, 0x80, 0x81, 0x77, 0x74, 0x78, 0x86, 0x97, 0x9b, 0x9c, 0x9a, - 0x91, 0x89, 0x92, 0x94, 0x8a, 0x81, 0x7c, 0x81, 0x7d, 0x72, 0x78, 0x86, 0x91, 0x8d, 0x7e, 0x71, - 0x6b, 0x6b, 0x72, 0x81, 0x94, 0x9b, 0x80, 0x6b, 0x61, 0x69, 0x7c, 0x81, 0x80, 0x7e, 0x86, 0x95, - 0x94, 0x8f, 0x7c, 0x72, 0x71, 0x6c, 0x68, 0x65, 0x63, 0x68, 0x73, 0x87, 0x90, 0x94, 0x94, 0x8d, - 0x83, 0x7c, 0x7a, 0x7a, 0x83, 0x88, 0x86, 0x80, 0x7b, 0x86, 0x8b, 0x8c, 0x8a, 0x8e, 0x90, 0x87, - 0x85, 0x83, 0x84, 0x79, 0x67, 0x60, 0x5c, 0x68, 0x7d, 0x92, 0x96, 0x92, 0x9d, 0xac, 0xa4, 0x95, - 0x8e, 0x8d, 0x84, 0x76, 0x72, 0x77, 0x7e, 0x86, 0x8c, 0x8c, 0x8c, 0x8c, 0x8f, 0x8e, 0x8e, 0x87, - 0x73, 0x5f, 0x5d, 0x6b, 0x71, 0x6a, 0x7b, 0x8d, 0x8a, 0x81, 0x76, 0x75, 0x6f, 0x65, 0x67, 0x76, - 0x81, 0x7e, 0x72, 0x66, 0x69, 0x76, 0x85, 0x8f, 0x94, 0x95, 0x98, 0x9a, 0x8e, 0x8c, 0x81, 0x79, - 0x73, 0x6a, 0x65, 0x5e, 0x65, 0x7a, 0x8b, 0x97, 0x97, 0x90, 0x87, 0x7f, 0x7d, 0x80, 0x82, 0x8a, - 0x8c, 0x7e, 0x79, 0x78, 0x80, 0x84, 0x7b, 0x77, 0x72, 0x6c, 0x6c, 0x79, 0x81, 0x85, 0x82, 0x78, - 0x6e, 0x6b, 0x6a, 0x6f, 0x75, 0x83, 0x90, 0x8f, 0x99, 0xa0, 0x8b, 0x74, 0x66, 0x6e, 0x73, 0x68, - 0x61, 0x64, 0x68, 0x69, 0x6e, 0x7a, 0x84, 0x81, 0x8b, 0x87, 0x79, 0x71, 0x69, 0x63, 0x61, 0x62, - 0x60, 0x60, 0x6b, 0x79, 0x88, 0x82, 0x7c, 0x78, 0x75, 0x77, 0x7d, 0x8d, 0x8e, 0x7c, 0x6b, 0x71, - 0x7e, 0x86, 0x87, 0x87, 0x86, 0x84, 0x93, 0x9d, 0x90, 0x85, 0x77, 0x6b, 0x5d, 0x56, 0x62, 0x65, - 0x70, 0x8f, 0x99, 0x96, 0x91, 0x8f, 0x8f, 0x81, 0x74, 0x72, 0x74, 0x72, 0x77, 0x82, 0x87, 0x8e, - 0x8f, 0x93, 0x93, 0x93, 0x90, 0x87, 0x7e, 0x8c, 0x9a, 0x9e, 0x95, 0x83, 0x75, 0x73, 0x75, 0x8d, - 0x9c, 0xa4, 0xa4, 0x99, 0x9d, 0x9a, 0x85, 0x83, 0x81, 0x86, 0x8e, 0x79, 0x6c, 0x70, 0x7c, 0x88, - 0x87, 0x86, 0x8a, 0x86, 0x7e, 0x83, 0x89, 0x82, 0x7b, 0x6d, 0x6d, 0x77, 0x79, 0x7a, 0x84, 0x84, - 0x89, 0x8c, 0x8a, 0x88, 0x7e, 0x7c, 0x7d, 0x85, 0x8a, 0x84, 0x79, 0x7e, 0x87, 0x85, 0x80, 0x86, - 0x94, 0x94, 0xa2, 0xab, 0x94, 0x82, 0x76, 0x75, 0x6b, 0x5d, 0x5b, 0x5c, 0x6f, 0x84, 0x94, 0x9e, - 0x9b, 0x98, 0x93, 0x8e, 0x8c, 0x8f, 0x8a, 0x7c, 0x77, 0x81, 0x8f, 0x94, 0x93, 0x8a, 0x80, 0x79, - 0x7b, 0x7b, 0x78, 0x81, 0x82, 0x78, 0x68, 0x56, 0x55, 0x61, 0x6a, 0x86, 0x96, 0x91, 0x8a, 0x83, - 0x91, 0x8c, 0x74, 0x6b, 0x67, 0x66, 0x64, 0x63, 0x66, 0x6f, 0x7d, 0x88, 0x8f, 0x95, 0x99, 0x94, - 0x88, 0x82, 0x84, 0x84, 0x81, 0x74, 0x6e, 0x74, 0x76, 0x88, 0x9a, 0x97, 0x92, 0x8b, 0x7d, 0x74, - 0x6e, 0x72, 0x84, 0x85, 0x87, 0x88, 0x75, 0x6e, 0x74, 0x7b, 0x7b, 0x7a, 0x7b, 0x77, 0x7e, 0x7b, - 0x7a, 0x71, 0x66, 0x67, 0x5c, 0x56, 0x57, 0x5e, 0x74, 0x81, 0x85, 0x8a, 0x88, 0x86, 0x80, 0x74, - 0x70, 0x74, 0x6f, 0x69, 0x6a, 0x70, 0x76, 0x72, 0x6e, 0x68, 0x6a, 0x73, 0x75, 0x7d, 0x80, 0x77, - 0x6d, 0x6d, 0x6b, 0x63, 0x5b, 0x56, 0x62, 0x71, 0x7a, 0x8a, 0x89, 0x83, 0x91, 0x8d, 0x7e, 0x7e, - 0x7d, 0x76, 0x73, 0x6d, 0x6e, 0x78, 0x87, 0x8d, 0x8c, 0x8c, 0x90, 0x93, 0x8d, 0x8b, 0x87, 0x7d, - 0x6f, 0x63, 0x61, 0x70, 0x83, 0x99, 0xaf, 0xaa, 0x9c, 0x93, 0x8e, 0x8f, 0x8b, 0x89, 0x8e, 0x85, - 0x7c, 0x85, 0x89, 0x89, 0x92, 0x9a, 0x9b, 0x9c, 0x99, 0x9c, 0xa6, 0x9c, 0x93, 0x8a, 0x85, 0x82, - 0x74, 0x66, 0x63, 0x78, 0x97, 0xa2, 0xa2, 0xa2, 0x97, 0x83, 0x7c, 0x76, 0x7e, 0x89, 0x80, 0x88, - 0x88, 0x82, 0x82, 0x89, 0x8d, 0x84, 0x7d, 0x78, 0x74, 0x73, 0x79, 0x85, 0x84, 0x82, 0x7c, 0x79, - 0x70, 0x6d, 0x7e, 0x8c, 0x92, 0x94, 0x92, 0x95, 0x9f, 0x94, 0x86, 0x86, 0x84, 0x7c, 0x75, 0x6b, - 0x6d, 0x72, 0x76, 0x7c, 0x7a, 0x82, 0x8a, 0x8f, 0x96, 0x8d, 0x7c, 0x71, 0x6a, 0x64, 0x61, 0x66, - 0x6e, 0x7c, 0x83, 0x85, 0x89, 0x87, 0x83, 0x81, 0x81, 0x86, 0x8e, 0x8a, 0x88, 0x91, 0x89, 0x83, - 0x8a, 0x8f, 0x89, 0x80, 0x7d, 0x85, 0x89, 0x82, 0x7c, 0x77, 0x6a, 0x5d, 0x56, 0x4c, 0x52, 0x6c, - 0x89, 0x9d, 0x91, 0x85, 0x7b, 0x78, 0x77, 0x70, 0x73, 0x6a, 0x5d, 0x5f, 0x67, 0x73, 0x80, 0x88, - 0x88, 0x80, 0x78, 0x7a, 0x80, 0x7e, 0x80, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x78, 0x7b, 0x91, 0x9f, - 0xa1, 0x9a, 0x91, 0x82, 0x75, 0x71, 0x76, 0x89, 0x89, 0x8a, 0x89, 0x71, 0x68, 0x6d, 0x81, 0x83, - 0x78, 0x76, 0x71, 0x6e, 0x6d, 0x71, 0x72, 0x6f, 0x68, 0x66, 0x64, 0x61, 0x74, 0x86, 0x8b, 0x86, - 0x78, 0x75, 0x73, 0x6f, 0x69, 0x72, 0x7e, 0x82, 0x8c, 0x8c, 0x85, 0x7c, 0x78, 0x7a, 0x75, 0x73, - 0x7c, 0x82, 0x88, 0x8a, 0x80, 0x7a, 0x73, 0x74, 0x70, 0x61, 0x60, 0x72, 0x83, 0x8d, 0x8f, 0x8d, - 0x8c, 0x88, 0x87, 0x87, 0x8a, 0x89, 0x86, 0x84, 0x82, 0x83, 0x8d, 0x94, 0x8e, 0x7a, 0x74, 0x79, - 0x7e, 0x84, 0x88, 0x85, 0x7d, 0x75, 0x79, 0x7d, 0x72, 0x7c, 0x92, 0xa5, 0xa8, 0x97, 0x8c, 0x85, - 0x87, 0x82, 0x89, 0x8c, 0x80, 0x78, 0x6e, 0x6b, 0x75, 0x84, 0x92, 0x90, 0x85, 0x82, 0x87, 0x88, - 0x88, 0x84, 0x78, 0x75, 0x6f, 0x6c, 0x68, 0x6a, 0x83, 0x94, 0x9d, 0x99, 0x89, 0x7c, 0x74, 0x74, - 0x77, 0x82, 0x87, 0x91, 0xa0, 0x90, 0x7e, 0x7a, 0x82, 0x90, 0x85, 0x80, 0x7b, 0x71, 0x6c, 0x72, - 0x78, 0x7a, 0x78, 0x70, 0x6f, 0x63, 0x65, 0x82, 0x90, 0x98, 0x91, 0x85, 0x87, 0x86, 0x7e, 0x80, - 0x86, 0x86, 0x85, 0x7e, 0x78, 0x7d, 0x81, 0x83, 0x81, 0x73, 0x71, 0x77, 0x80, 0x8e, 0x87, 0x77, - 0x74, 0x7d, 0x8d, 0x85, 0x77, 0x7b, 0x82, 0x8a, 0x94, 0x92, 0x90, 0x8c, 0x87, 0x8d, 0x96, 0x97, - 0x98, 0x95, 0x87, 0x7a, 0x7c, 0x89, 0x90, 0x84, 0x79, 0x7d, 0x81, 0x83, 0x88, 0x81, 0x73, 0x68, - 0x5d, 0x5f, 0x61, 0x6a, 0x80, 0x91, 0x96, 0x81, 0x6e, 0x66, 0x6d, 0x77, 0x71, 0x73, 0x74, 0x78, - 0x7d, 0x75, 0x72, 0x76, 0x7a, 0x82, 0x87, 0x86, 0x85, 0x84, 0x86, 0x8c, 0x8b, 0x87, 0x89, 0x87, - 0x80, 0x7b, 0x85, 0x92, 0x9a, 0x9d, 0x97, 0x8d, 0x86, 0x85, 0x85, 0x85, 0x86, 0x87, 0x8d, 0x8e, - 0x7d, 0x79, 0x79, 0x81, 0x80, 0x6f, 0x6d, 0x6c, 0x6b, 0x6e, 0x6c, 0x69, 0x73, 0x81, 0x8f, 0x90, - 0x84, 0x7b, 0x7a, 0x7c, 0x81, 0x83, 0x7c, 0x75, 0x6f, 0x67, 0x6b, 0x76, 0x7c, 0x7c, 0x78, 0x70, - 0x6c, 0x6a, 0x6d, 0x6f, 0x6f, 0x70, 0x77, 0x86, 0x85, 0x73, 0x67, 0x60, 0x67, 0x6d, 0x67, 0x6c, - 0x6d, 0x6a, 0x68, 0x62, 0x63, 0x68, 0x6f, 0x76, 0x76, 0x78, 0x84, 0x91, 0x97, 0x91, 0x8a, 0x85, - 0x83, 0x7b, 0x79, 0x81, 0x85, 0x82, 0x83, 0x83, 0x7d, 0x79, 0x78, 0x7e, 0x83, 0x81, 0x83, 0x88, - 0x96, 0x95, 0x8c, 0x89, 0x89, 0x91, 0x8b, 0x81, 0x81, 0x7e, 0x7b, 0x79, 0x76, 0x78, 0x7e, 0x83, - 0x82, 0x7c, 0x79, 0x7a, 0x7e, 0x7e, 0x7a, 0x7a, 0x80, 0x89, 0x8b, 0x86, 0x86, 0x86, 0x85, 0x88, - 0x90, 0x90, 0x87, 0x80, 0x81, 0x81, 0x86, 0x8a, 0x93, 0x9b, 0x91, 0x82, 0x7a, 0x7b, 0x86, 0x7e, - 0x7a, 0x81, 0x84, 0x83, 0x7c, 0x73, 0x70, 0x74, 0x7d, 0x8a, 0x8d, 0x8d, 0x8a, 0x8a, 0x87, 0x83, - 0x83, 0x82, 0x83, 0x7b, 0x7c, 0x8d, 0x9d, 0xa7, 0xa9, 0xa3, 0x94, 0x86, 0x84, 0x85, 0x8b, 0x90, - 0x8d, 0x8f, 0x95, 0x8a, 0x7e, 0x79, 0x7b, 0x8a, 0x84, 0x7d, 0x81, 0x81, 0x7e, 0x7b, 0x7b, 0x82, - 0x8b, 0x8e, 0x8c, 0x8a, 0x88, 0x88, 0x89, 0x88, 0x88, 0x86, 0x81, 0x7b, 0x71, 0x6d, 0x70, 0x73, - 0x73, 0x74, 0x76, 0x78, 0x78, 0x7e, 0x87, 0x84, 0x80, 0x78, 0x78, 0x80, 0x81, 0x81, 0x7c, 0x75, - 0x74, 0x71, 0x73, 0x78, 0x78, 0x74, 0x6d, 0x68, 0x68, 0x70, 0x74, 0x76, 0x7c, 0x83, 0x87, 0x86, - 0x80, 0x78, 0x74, 0x76, 0x7d, 0x83, 0x84, 0x85, 0x82, 0x7d, 0x7d, 0x7c, 0x7b, 0x78, 0x77, 0x76, - 0x7a, 0x84, 0x88, 0x8a, 0x8a, 0x85, 0x7a, 0x70, 0x6e, 0x6e, 0x71, 0x70, 0x6e, 0x6a, 0x69, 0x67, - 0x65, 0x6a, 0x73, 0x7b, 0x7d, 0x7c, 0x7c, 0x79, 0x77, 0x75, 0x78, 0x7d, 0x7b, 0x74, 0x6d, 0x6c, - 0x6c, 0x6c, 0x6b, 0x6d, 0x71, 0x6c, 0x65, 0x66, 0x67, 0x6b, 0x71, 0x73, 0x74, 0x74, 0x73, 0x75, - 0x7a, 0x82, 0x8a, 0x89, 0x85, 0x82, 0x7d, 0x7c, 0x7d, 0x7b, 0x7e, 0x7e, 0x81, 0x87, 0x8c, 0x91, - 0x8f, 0x8d, 0x8c, 0x8a, 0x86, 0x87, 0x89, 0x88, 0x8c, 0x8e, 0x8d, 0x87, 0x80, 0x7c, 0x7a, 0x7d, - 0x85, 0x88, 0x8c, 0x91, 0x8d, 0x87, 0x84, 0x80, 0x81, 0x82, 0x82, 0x85, 0x89, 0x8b, 0x8d, 0x90, - 0x92, 0x90, 0x8b, 0x87, 0x89, 0x89, 0x8c, 0x8e, 0x8e, 0x89, 0x87, 0x84, 0x83, 0x84, 0x84, 0x85, - 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x82, 0x8a, 0x8e, 0x8b, 0x88, 0x86, 0x88, 0x8b, 0x8a, 0x87, 0x84, - 0x84, 0x81, 0x7b, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7b, 0x7b, 0x79, 0x7b, 0x84, 0x8d, 0x90, 0x8f, - 0x90, 0x8d, 0x85, 0x82, 0x84, 0x85, 0x81, 0x7d, 0x82, 0x85, 0x89, 0x8b, 0x89, 0x86, 0x85, 0x85, - 0x7c, 0x78, 0x7b, 0x82, 0x8a, 0x8e, 0x8b, 0x80, 0x72, 0x6d, 0x6e, 0x71, 0x71, 0x72, 0x76, 0x79, - 0x76, 0x75, 0x76, 0x74, 0x74, 0x7a, 0x81, 0x85, 0x86, 0x8c, 0x90, 0x90, 0x93, 0x92, 0x8c, 0x81, - 0x7a, 0x79, 0x7a, 0x79, 0x76, 0x72, 0x70, 0x6e, 0x70, 0x70, 0x70, 0x72, 0x73, 0x77, 0x77, 0x76, - 0x75, 0x75, 0x76, 0x76, 0x74, 0x6e, 0x6d, 0x70, 0x71, 0x6f, 0x70, 0x72, 0x73, 0x72, 0x71, 0x75, - 0x78, 0x78, 0x7b, 0x7e, 0x7e, 0x80, 0x81, 0x86, 0x8c, 0x93, 0x97, 0x98, 0x99, 0x94, 0x8e, 0x8a, - 0x8c, 0x8e, 0x8a, 0x88, 0x8b, 0x8c, 0x90, 0x93, 0x8f, 0x8a, 0x85, 0x7d, 0x78, 0x78, 0x79, 0x7e, - 0x80, 0x7b, 0x77, 0x71, 0x6b, 0x6a, 0x6c, 0x73, 0x79, 0x7b, 0x80, 0x83, 0x7e, 0x78, 0x78, 0x74, - 0x73, 0x72, 0x72, 0x73, 0x74, 0x78, 0x7a, 0x7a, 0x7b, 0x7e, 0x7c, 0x74, 0x72, 0x76, 0x7b, 0x7d, - 0x7b, 0x79, 0x76, 0x71, 0x71, 0x75, 0x79, 0x77, 0x79, 0x7d, 0x80, 0x82, 0x83, 0x85, 0x84, 0x82, - 0x83, 0x83, 0x83, 0x83, 0x87, 0x86, 0x84, 0x88, 0x8a, 0x85, 0x7e, 0x82, 0x87, 0x82, 0x7d, 0x7a, - 0x78, 0x74, 0x75, 0x7c, 0x83, 0x8a, 0x8f, 0x94, 0x97, 0x94, 0x8f, 0x8a, 0x88, 0x84, 0x81, 0x7d, - 0x7c, 0x7d, 0x80, 0x82, 0x7e, 0x7d, 0x7c, 0x78, 0x76, 0x7d, 0x86, 0x89, 0x86, 0x84, 0x7e, 0x76, - 0x72, 0x71, 0x73, 0x75, 0x79, 0x7c, 0x7e, 0x7c, 0x78, 0x78, 0x76, 0x74, 0x76, 0x78, 0x7a, 0x80, - 0x87, 0x90, 0x94, 0x91, 0x92, 0x91, 0x8b, 0x85, 0x7e, 0x7e, 0x81, 0x7d, 0x7b, 0x78, 0x75, 0x72, - 0x71, 0x76, 0x7e, 0x82, 0x82, 0x83, 0x84, 0x86, 0x87, 0x89, 0x88, 0x82, 0x7b, 0x78, 0x7b, 0x7e, - 0x80, 0x7c, 0x7b, 0x7e, 0x80, 0x7e, 0x7a, 0x7b, 0x7b, 0x78, 0x7a, 0x7d, 0x7a, 0x76, 0x76, 0x78, - 0x7e, 0x7d, 0x7e, 0x86, 0x8b, 0x8c, 0x8a, 0x8a, 0x8a, 0x86, 0x84, 0x88, 0x8e, 0x8f, 0x90, 0x91, - 0x8c, 0x8a, 0x8b, 0x87, 0x85, 0x86, 0x8a, 0x88, 0x7e, 0x78, 0x74, 0x6c, 0x66, 0x6a, 0x72, 0x74, - 0x76, 0x78, 0x7d, 0x81, 0x7e, 0x7b, 0x78, 0x73, 0x6f, 0x6e, 0x6e, 0x72, 0x78, 0x80, 0x84, 0x84, - 0x8b, 0x90, 0x8d, 0x8f, 0x93, 0x96, 0x91, 0x89, 0x88, 0x85, 0x82, 0x81, 0x83, 0x87, 0x86, 0x89, - 0x8b, 0x8a, 0x8a, 0x8c, 0x8a, 0x86, 0x83, 0x80, 0x7c, 0x7b, 0x80, 0x87, 0x88, 0x84, 0x80, 0x7e, - 0x7b, 0x77, 0x76, 0x72, 0x6e, 0x68, 0x68, 0x6c, 0x68, 0x67, 0x68, 0x6c, 0x77, 0x84, 0x8d, 0x90, - 0x8d, 0x8e, 0x8b, 0x89, 0x86, 0x80, 0x78, 0x76, 0x7e, 0x82, 0x83, 0x82, 0x7c, 0x7a, 0x77, 0x75, - 0x78, 0x7c, 0x7e, 0x80, 0x7e, 0x7d, 0x78, 0x70, 0x6e, 0x71, 0x71, 0x73, 0x71, 0x71, 0x72, 0x77, - 0x7a, 0x78, 0x77, 0x6f, 0x6a, 0x6d, 0x76, 0x82, 0x85, 0x89, 0x8e, 0x8d, 0x8f, 0x8e, 0x8b, 0x86, - 0x82, 0x84, 0x81, 0x7b, 0x77, 0x74, 0x73, 0x70, 0x71, 0x74, 0x75, 0x76, 0x79, 0x7d, 0x82, 0x85, - 0x84, 0x81, 0x7b, 0x76, 0x70, 0x6c, 0x6f, 0x76, 0x7c, 0x7a, 0x76, 0x76, 0x70, 0x70, 0x75, 0x7b, - 0x7d, 0x74, 0x71, 0x72, 0x70, 0x70, 0x75, 0x80, 0x87, 0x8a, 0x91, 0x91, 0x8d, 0x8e, 0x8f, 0x8e, - 0x87, 0x81, 0x7c, 0x7e, 0x8a, 0x94, 0x9a, 0x99, 0x94, 0x91, 0x8e, 0x8e, 0x92, 0x92, 0x8c, 0x87, - 0x83, 0x84, 0x80, 0x7b, 0x7d, 0x80, 0x82, 0x86, 0x8b, 0x8c, 0x86, 0x85, 0x87, 0x86, 0x84, 0x7e, - 0x7d, 0x79, 0x78, 0x80, 0x84, 0x8b, 0x8f, 0x92, 0x94, 0x90, 0x8d, 0x8c, 0x8c, 0x8d, 0x8a, 0x84, - 0x7d, 0x7c, 0x82, 0x82, 0x82, 0x82, 0x7e, 0x7a, 0x77, 0x7b, 0x86, 0x8a, 0x87, 0x85, 0x7c, 0x78, - 0x7b, 0x85, 0x8d, 0x92, 0x93, 0x8e, 0x85, 0x7e, 0x7d, 0x82, 0x7d, 0x7b, 0x7a, 0x6f, 0x69, 0x68, - 0x6a, 0x6d, 0x6e, 0x73, 0x7b, 0x82, 0x88, 0x8b, 0x8a, 0x88, 0x86, 0x84, 0x7d, 0x75, 0x72, 0x72, - 0x77, 0x7b, 0x80, 0x84, 0x80, 0x7c, 0x7c, 0x7c, 0x83, 0x8a, 0x93, 0x92, 0x89, 0x83, 0x81, 0x82, - 0x82, 0x86, 0x89, 0x87, 0x85, 0x85, 0x83, 0x86, 0x87, 0x87, 0x83, 0x78, 0x72, 0x72, 0x75, 0x7e, - 0x8b, 0x93, 0x92, 0x90, 0x8f, 0x8a, 0x86, 0x82, 0x7d, 0x78, 0x6d, 0x66, 0x6a, 0x6d, 0x74, 0x72, - 0x6d, 0x70, 0x75, 0x77, 0x76, 0x75, 0x78, 0x78, 0x74, 0x70, 0x6d, 0x6a, 0x66, 0x67, 0x6d, 0x71, - 0x70, 0x6d, 0x6c, 0x67, 0x64, 0x67, 0x69, 0x69, 0x69, 0x64, 0x63, 0x65, 0x68, 0x6c, 0x6f, 0x72, - 0x79, 0x79, 0x77, 0x75, 0x76, 0x79, 0x7b, 0x7e, 0x7a, 0x74, 0x77, 0x81, 0x8d, 0x91, 0x91, 0x90, - 0x8b, 0x84, 0x82, 0x87, 0x8a, 0x85, 0x82, 0x7e, 0x75, 0x74, 0x79, 0x83, 0x84, 0x7d, 0x7b, 0x7e, - 0x80, 0x80, 0x84, 0x89, 0x8a, 0x8a, 0x87, 0x7e, 0x79, 0x78, 0x79, 0x80, 0x89, 0x8f, 0x91, 0x90, - 0x91, 0x8f, 0x8c, 0x8c, 0x8e, 0x91, 0x88, 0x7e, 0x82, 0x89, 0x8d, 0x89, 0x8a, 0x8e, 0x8d, 0x89, - 0x8a, 0x8a, 0x8d, 0x8f, 0x90, 0x8d, 0x85, 0x7d, 0x7e, 0x86, 0x8f, 0x97, 0x98, 0x93, 0x8d, 0x89, - 0x88, 0x8b, 0x88, 0x83, 0x7b, 0x6f, 0x6e, 0x75, 0x7a, 0x83, 0x84, 0x86, 0x8d, 0x92, 0x91, 0x8c, - 0x88, 0x87, 0x88, 0x87, 0x82, 0x81, 0x81, 0x81, 0x86, 0x88, 0x87, 0x82, 0x7b, 0x7c, 0x80, 0x7e, - 0x80, 0x81, 0x82, 0x80, 0x79, 0x7a, 0x7c, 0x7b, 0x77, 0x72, 0x75, 0x7c, 0x79, 0x74, 0x74, 0x79, - 0x7a, 0x79, 0x76, 0x70, 0x6f, 0x75, 0x80, 0x8c, 0x8f, 0x8f, 0x8c, 0x8a, 0x88, 0x87, 0x87, 0x84, - 0x7c, 0x78, 0x70, 0x6d, 0x72, 0x78, 0x7b, 0x76, 0x70, 0x71, 0x75, 0x78, 0x7d, 0x81, 0x83, 0x82, - 0x7c, 0x76, 0x6f, 0x6d, 0x6d, 0x70, 0x74, 0x79, 0x7d, 0x7d, 0x7a, 0x7a, 0x7d, 0x82, 0x82, 0x83, - 0x7e, 0x75, 0x78, 0x84, 0x8d, 0x91, 0x91, 0x93, 0x96, 0x92, 0x8f, 0x8d, 0x87, 0x85, 0x86, 0x86, - 0x83, 0x7c, 0x7b, 0x82, 0x89, 0x8c, 0x8d, 0x88, 0x82, 0x80, 0x80, 0x7e, 0x7e, 0x7a, 0x74, 0x6e, - 0x69, 0x6c, 0x6f, 0x6e, 0x6c, 0x6c, 0x72, 0x79, 0x79, 0x77, 0x75, 0x77, 0x77, 0x75, 0x6f, 0x6a, - 0x6c, 0x6f, 0x75, 0x7e, 0x83, 0x81, 0x7e, 0x7e, 0x83, 0x83, 0x7a, 0x76, 0x79, 0x7b, 0x7b, 0x7c, - 0x80, 0x7e, 0x79, 0x71, 0x70, 0x75, 0x74, 0x73, 0x75, 0x75, 0x79, 0x7a, 0x79, 0x78, 0x76, 0x78, - 0x7b, 0x82, 0x87, 0x8b, 0x8b, 0x8b, 0x8a, 0x89, 0x88, 0x88, 0x84, 0x7b, 0x72, 0x6e, 0x70, 0x78, - 0x83, 0x8b, 0x88, 0x84, 0x87, 0x8c, 0x90, 0x91, 0x8f, 0x8c, 0x89, 0x85, 0x82, 0x81, 0x81, 0x80, - 0x81, 0x83, 0x83, 0x82, 0x81, 0x83, 0x84, 0x85, 0x86, 0x84, 0x81, 0x7c, 0x7a, 0x79, 0x7c, 0x7e, - 0x7c, 0x80, 0x86, 0x89, 0x87, 0x85, 0x82, 0x82, 0x80, 0x7b, 0x78, 0x74, 0x73, 0x7b, 0x89, 0x94, - 0x96, 0x93, 0x91, 0x8e, 0x8e, 0x8b, 0x86, 0x83, 0x82, 0x80, 0x81, 0x83, 0x84, 0x84, 0x81, 0x7d, - 0x80, 0x83, 0x84, 0x86, 0x85, 0x85, 0x87, 0x84, 0x80, 0x7c, 0x79, 0x76, 0x75, 0x77, 0x7c, 0x7e, - 0x7d, 0x7e, 0x80, 0x82, 0x7c, 0x77, 0x78, 0x78, 0x76, 0x76, 0x78, 0x7b, 0x7a, 0x77, 0x76, 0x79, - 0x7c, 0x7e, 0x82, 0x84, 0x83, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x83, 0x87, 0x8a, 0x8a, 0x8a, - 0x8b, 0x8a, 0x88, 0x87, 0x86, 0x81, 0x77, 0x73, 0x72, 0x71, 0x74, 0x78, 0x79, 0x76, 0x79, 0x7e, - 0x83, 0x84, 0x83, 0x82, 0x7c, 0x71, 0x6b, 0x6a, 0x6e, 0x76, 0x7d, 0x86, 0x88, 0x87, 0x89, 0x8b, - 0x8d, 0x8d, 0x89, 0x88, 0x8a, 0x8c, 0x8d, 0x8f, 0x8f, 0x92, 0x93, 0x92, 0x96, 0x99, 0x96, 0x90, - 0x8c, 0x8a, 0x89, 0x84, 0x81, 0x80, 0x79, 0x77, 0x7d, 0x85, 0x8a, 0x8c, 0x8b, 0x89, 0x82, 0x7b, - 0x77, 0x77, 0x73, 0x6c, 0x6a, 0x6e, 0x73, 0x79, 0x7c, 0x7a, 0x76, 0x77, 0x7a, 0x7d, 0x81, 0x80, - 0x7c, 0x79, 0x78, 0x76, 0x75, 0x73, 0x73, 0x73, 0x74, 0x76, 0x77, 0x79, 0x7b, 0x7c, 0x7a, 0x74, - 0x71, 0x71, 0x70, 0x70, 0x6f, 0x6d, 0x69, 0x63, 0x66, 0x6e, 0x74, 0x73, 0x70, 0x6d, 0x6d, 0x70, - 0x6c, 0x65, 0x62, 0x65, 0x6e, 0x7b, 0x84, 0x89, 0x89, 0x86, 0x86, 0x87, 0x89, 0x88, 0x84, 0x81, - 0x81, 0x7a, 0x78, 0x78, 0x76, 0x79, 0x80, 0x81, 0x82, 0x85, 0x86, 0x86, 0x83, 0x82, 0x7e, 0x72, - 0x6a, 0x6a, 0x74, 0x7a, 0x7b, 0x7e, 0x85, 0x88, 0x89, 0x89, 0x87, 0x80, 0x78, 0x7b, 0x7e, 0x7b, - 0x79, 0x7d, 0x84, 0x88, 0x8a, 0x89, 0x8c, 0x91, 0x94, 0x93, 0x8f, 0x8f, 0x8e, 0x8b, 0x8b, 0x8d, - 0x8b, 0x87, 0x89, 0x91, 0x98, 0x9c, 0x9c, 0x99, 0x94, 0x8a, 0x87, 0x81, 0x78, 0x7d, 0x7c, 0x79, - 0x7a, 0x7c, 0x7e, 0x7d, 0x79, 0x7a, 0x83, 0x87, 0x86, 0x84, 0x82, 0x82, 0x78, 0x6d, 0x6c, 0x74, - 0x7c, 0x82, 0x84, 0x84, 0x89, 0x87, 0x85, 0x87, 0x8e, 0x91, 0x8d, 0x88, 0x8f, 0x91, 0x8d, 0x87, - 0x84, 0x86, 0x81, 0x7a, 0x7a, 0x7d, 0x79, 0x81, 0x89, 0x89, 0x84, 0x7b, 0x75, 0x70, 0x70, 0x79, - 0x82, 0x85, 0x89, 0x8c, 0x8e, 0x8e, 0x88, 0x81, 0x7c, 0x79, 0x71, 0x6e, 0x70, 0x79, 0x7c, 0x7b, - 0x7d, 0x7e, 0x78, 0x72, 0x72, 0x76, 0x78, 0x81, 0x86, 0x82, 0x7a, 0x76, 0x74, 0x70, 0x71, 0x76, - 0x77, 0x7d, 0x8d, 0x92, 0x95, 0x98, 0x93, 0x8d, 0x8c, 0x83, 0x7e, 0x86, 0x8c, 0x92, 0x97, 0x98, - 0x96, 0x96, 0x98, 0x95, 0x8c, 0x86, 0x8a, 0x87, 0x7d, 0x79, 0x7b, 0x7c, 0x7a, 0x83, 0x89, 0x8a, - 0x88, 0x83, 0x85, 0x85, 0x86, 0x84, 0x78, 0x76, 0x72, 0x60, 0x5e, 0x5d, 0x67, 0x71, 0x75, 0x76, - 0x76, 0x72, 0x6e, 0x6f, 0x6e, 0x6c, 0x6a, 0x64, 0x60, 0x61, 0x62, 0x62, 0x69, 0x6c, 0x6b, 0x73, - 0x77, 0x7a, 0x81, 0x7d, 0x79, 0x79, 0x73, 0x75, 0x7a, 0x6e, 0x6e, 0x6f, 0x6b, 0x6c, 0x72, 0x70, - 0x6c, 0x68, 0x67, 0x66, 0x6c, 0x67, 0x6e, 0x7b, 0x77, 0x7b, 0x80, 0x7d, 0x84, 0x8a, 0x8c, 0x8b, - 0x8a, 0x8b, 0x8b, 0x89, 0x8b, 0x85, 0x7b, 0x80, 0x75, 0x6f, 0x81, 0x86, 0x88, 0x8b, 0x87, 0x84, - 0x87, 0x8e, 0x91, 0x8a, 0x7b, 0x71, 0x70, 0x73, 0x76, 0x78, 0x75, 0x76, 0x84, 0x89, 0x8a, 0x8b, - 0x9a, 0xa1, 0x9a, 0x93, 0x8e, 0x7e, 0x89, 0x93, 0x8b, 0x94, 0x9a, 0x98, 0x93, 0x8c, 0x88, 0x87, - 0x84, 0x87, 0x86, 0x85, 0x89, 0x8d, 0x8b, 0x8d, 0x94, 0x9c, 0x99, 0x91, 0x8f, 0x8b, 0x86, 0x84, - 0x88, 0x8a, 0x87, 0x7d, 0x78, 0x85, 0x85, 0x74, 0x7e, 0x86, 0x8d, 0x8b, 0x87, 0x88, 0x8a, 0x89, - 0x87, 0x81, 0x74, 0x6a, 0x66, 0x63, 0x75, 0x86, 0x8a, 0x82, 0x7b, 0x7c, 0x7a, 0x75, 0x76, 0x7c, - 0x84, 0x8d, 0x7e, 0x74, 0x76, 0x6f, 0x65, 0x62, 0x6b, 0x6f, 0x6b, 0x67, 0x6b, 0x6e, 0x6a, 0x73, - 0x82, 0x7e, 0x79, 0x79, 0x87, 0x8e, 0x91, 0x8f, 0x86, 0x7d, 0x86, 0x89, 0x84, 0x85, 0x89, 0x89, - 0x83, 0x78, 0x72, 0x77, 0x77, 0x7a, 0x7e, 0x88, 0x85, 0x85, 0x8b, 0x86, 0x80, 0x7b, 0x78, 0x72, - 0x65, 0x68, 0x6d, 0x6f, 0x78, 0x7b, 0x71, 0x7a, 0x86, 0x89, 0x89, 0x81, 0x82, 0x89, 0x93, 0x8f, - 0x8b, 0x8c, 0x88, 0x8e, 0x91, 0x86, 0x8b, 0x8f, 0x8a, 0x87, 0x86, 0x8a, 0x8e, 0x8e, 0x8b, 0x87, - 0x87, 0x80, 0x81, 0x8c, 0x9e, 0x9c, 0x8f, 0x7d, 0x7a, 0x74, 0x6f, 0x7a, 0x7a, 0x71, 0x66, 0x62, - 0x70, 0x7c, 0x80, 0x81, 0x75, 0x6e, 0x6c, 0x70, 0x79, 0x76, 0x7a, 0x7d, 0x78, 0x6d, 0x6a, 0x71, - 0x78, 0x7e, 0x7c, 0x75, 0x6f, 0x72, 0x72, 0x71, 0x74, 0x74, 0x7c, 0x7d, 0x83, 0x80, 0x74, 0x76, - 0x71, 0x70, 0x6c, 0x65, 0x67, 0x6b, 0x64, 0x5a, 0x5e, 0x62, 0x70, 0x7d, 0x7a, 0x75, 0x72, 0x6e, - 0x72, 0x84, 0x8d, 0x8b, 0x8d, 0x8f, 0x80, 0x77, 0x7e, 0x8e, 0x8f, 0x84, 0x7e, 0x92, 0x98, 0x8c, - 0x87, 0x83, 0x7b, 0x73, 0x7b, 0x8a, 0x85, 0x82, 0x87, 0x8a, 0x89, 0x74, 0x66, 0x76, 0x8f, 0x90, - 0x84, 0x71, 0x79, 0x96, 0x9c, 0x8d, 0x83, 0x89, 0x88, 0x7e, 0x89, 0x9d, 0x98, 0x93, 0x8e, 0x89, - 0x83, 0x7b, 0x7c, 0x88, 0x84, 0x83, 0x84, 0x87, 0x92, 0x91, 0x8a, 0x99, 0x97, 0x93, 0x99, 0x85, - 0x7f, 0x85, 0x80, 0x80, 0x76, 0x79, 0x87, 0x89, 0x7d, 0x6a, 0x6b, 0x81, 0x91, 0x93, 0x8a, 0x7e, - 0x6f, 0x6e, 0x74, 0x70, 0x7d, 0x88, 0x82, 0x80, 0x79, 0x6a, 0x6f, 0x72, 0x76, 0x7d, 0x7a, 0x75, - 0x7c, 0x84, 0x83, 0x7d, 0x7a, 0x81, 0x81, 0x89, 0x8c, 0x85, 0x8a, 0x81, 0x73, 0x67, 0x65, 0x66, - 0x5b, 0x5d, 0x6a, 0x72, 0x7e, 0x8d, 0x92, 0x88, 0x82, 0x8b, 0x92, 0x94, 0x8c, 0x86, 0x8a, 0x88, - 0x91, 0x93, 0x85, 0x7c, 0x83, 0x7b, 0x75, 0x7c, 0x80, 0x86, 0x84, 0x86, 0x85, 0x81, 0x7c, 0x77, - 0x83, 0x88, 0x88, 0x85, 0x85, 0x80, 0x6d, 0x77, 0x8d, 0x88, 0x7e, 0x79, 0x74, 0x79, 0x85, 0x8e, - 0x91, 0x8c, 0x8d, 0x97, 0x94, 0x96, 0x8b, 0x93, 0xa9, 0xa3, 0x99, 0x92, 0x83, 0x76, 0x6d, 0x7b, - 0x85, 0x89, 0x88, 0x8e, 0x89, 0x7e, 0x82, 0x81, 0x8d, 0x94, 0x85, 0x80, 0x7c, 0x73, 0x6f, 0x72, - 0x7a, 0x78, 0x79, 0x7b, 0x7a, 0x76, 0x7d, 0x7d, 0x76, 0x6f, 0x6c, 0x6c, 0x67, 0x63, 0x72, 0x71, - 0x72, 0x7e, 0x7b, 0x66, 0x5d, 0x75, 0x86, 0x80, 0x73, 0x72, 0x6c, 0x67, 0x64, 0x69, 0x78, 0x78, - 0x71, 0x7d, 0x7e, 0x6e, 0x59, 0x54, 0x5c, 0x5b, 0x5e, 0x64, 0x5f, 0x54, 0x53, 0x5f, 0x67, 0x7a, - 0x7e, 0x76, 0x70, 0x81, 0x87, 0x80, 0x7e, 0x83, 0x80, 0x77, 0x78, 0x88, 0x84, 0x85, 0x92, 0x97, - 0x8e, 0x81, 0x8d, 0x89, 0x8b, 0x8a, 0x8e, 0x8c, 0x85, 0x83, 0x84, 0x7e, 0x8b, 0x8c, 0x84, 0x7a, - 0x72, 0x6d, 0x6e, 0x73, 0x6e, 0x6e, 0x79, 0x87, 0x94, 0x95, 0x93, 0x90, 0x89, 0x8f, 0x96, 0xa1, - 0xa3, 0xa1, 0x92, 0x84, 0x86, 0x81, 0x81, 0x88, 0x88, 0x82, 0x88, 0x93, 0x93, 0x8a, 0x7c, 0x78, - 0x8b, 0x97, 0xa4, 0xae, 0xa3, 0x98, 0x8c, 0x83, 0x7c, 0x74, 0x7d, 0x89, 0x82, 0x7d, 0x83, 0x83, - 0x7e, 0x87, 0x8b, 0x83, 0x76, 0x78, 0x81, 0x87, 0x81, 0x80, 0x84, 0x76, 0x6a, 0x6f, 0x71, 0x75, - 0x80, 0x82, 0x81, 0x79, 0x7b, 0x80, 0x7c, 0x7c, 0x80, 0x80, 0x83, 0x8e, 0x8e, 0x79, 0x7c, 0x78, - 0x7c, 0x73, 0x68, 0x6d, 0x6c, 0x6e, 0x6e, 0x66, 0x5d, 0x6b, 0x8b, 0x8e, 0x7e, 0x76, 0x80, 0x81, - 0x87, 0x91, 0x8d, 0x84, 0x80, 0x7c, 0x83, 0x95, 0x97, 0x9f, 0x9c, 0x84, 0x85, 0x81, 0x7a, 0x82, - 0x80, 0x85, 0x84, 0x7c, 0x88, 0x99, 0x96, 0x8f, 0x8b, 0x84, 0x76, 0x6b, 0x77, 0x83, 0x86, 0x87, - 0x83, 0x7c, 0x79, 0x8a, 0x91, 0x90, 0x87, 0x84, 0x9a, 0x96, 0x88, 0x85, 0x7a, 0x6f, 0x70, 0x74, - 0x84, 0x8c, 0x80, 0x7e, 0x85, 0x7b, 0x81, 0x85, 0x81, 0x77, 0x80, 0x83, 0x7b, 0x7c, 0x6e, 0x6e, - 0x75, 0x72, 0x70, 0x72, 0x7d, 0x84, 0x8d, 0x8c, 0x69, 0x5c, 0x68, 0x6f, 0x77, 0x76, 0x75, 0x76, - 0x70, 0x6d, 0x7b, 0x7e, 0x6b, 0x5c, 0x5c, 0x66, 0x5c, 0x56, 0x63, 0x69, 0x6a, 0x60, 0x5b, 0x68, - 0x6b, 0x6a, 0x70, 0x77, 0x82, 0x9c, 0x91, 0x74, 0x73, 0x5b, 0x50, 0x59, 0x5b, 0x66, 0x6e, 0x69, - 0x73, 0x7c, 0x79, 0x73, 0x7b, 0x89, 0x84, 0x83, 0x93, 0x9b, 0x9b, 0x9a, 0x94, 0x88, 0x8c, 0x93, - 0x9d, 0x9e, 0x94, 0x97, 0x93, 0x88, 0x83, 0x87, 0x77, 0x7c, 0x8e, 0x90, 0x95, 0x91, 0xa7, 0xb1, - 0xa2, 0x8e, 0x82, 0x87, 0x7a, 0x77, 0x87, 0x86, 0x83, 0x7e, 0x72, 0x74, 0x7b, 0x78, 0x8f, 0xa0, - 0xa4, 0xb2, 0xb4, 0xa1, 0x91, 0x88, 0x8c, 0x82, 0x77, 0x83, 0x88, 0x78, 0x77, 0x90, 0x95, 0x8e, - 0x81, 0x75, 0x72, 0x76, 0x77, 0x73, 0x82, 0x9b, 0x95, 0x85, 0x7c, 0x74, 0x6a, 0x69, 0x6f, 0x81, - 0x89, 0x7d, 0x71, 0x65, 0x6c, 0x6b, 0x63, 0x64, 0x6f, 0x7c, 0x78, 0x7c, 0x8b, 0x93, 0x90, 0x87, - 0x85, 0x85, 0x84, 0x75, 0x6c, 0x72, 0x7b, 0x7b, 0x6d, 0x6f, 0x77, 0x7c, 0x88, 0x95, 0x9a, 0x97, - 0x96, 0x83, 0x74, 0x71, 0x72, 0x72, 0x66, 0x6a, 0x74, 0x6f, 0x74, 0x7b, 0x81, 0x81, 0x77, 0x78, - 0x84, 0x85, 0x7d, 0x88, 0x90, 0x8b, 0x8a, 0x89, 0x83, 0x81, 0x88, 0x92, 0xa1, 0xa1, 0x95, 0x8e, - 0x81, 0x72, 0x73, 0x7a, 0x7d, 0x71, 0x75, 0x82, 0x8a, 0x93, 0x92, 0x8f, 0x7e, 0x70, 0x6f, 0x70, - 0x6d, 0x71, 0x78, 0x76, 0x74, 0x75, 0x75, 0x6e, 0x6e, 0x72, 0x7d, 0x8b, 0x89, 0x85, 0x7e, 0x76, - 0x73, 0x79, 0x7a, 0x75, 0x75, 0x81, 0x8b, 0x90, 0x91, 0x95, 0x9b, 0x96, 0x92, 0x94, 0x8d, 0x85, - 0x86, 0x8b, 0x8f, 0x8c, 0x83, 0x7b, 0x77, 0x7b, 0x7d, 0x82, 0x7d, 0x71, 0x68, 0x65, 0x65, 0x6d, - 0x74, 0x71, 0x6c, 0x6e, 0x73, 0x78, 0x80, 0x81, 0x84, 0x85, 0x7d, 0x76, 0x73, 0x72, 0x75, 0x79, - 0x7a, 0x7a, 0x7a, 0x7b, 0x7c, 0x7e, 0x83, 0x87, 0x88, 0x84, 0x81, 0x82, 0x7c, 0x75, 0x6e, 0x69, - 0x69, 0x68, 0x69, 0x6e, 0x71, 0x70, 0x70, 0x75, 0x75, 0x6d, 0x69, 0x68, 0x6b, 0x72, 0x7a, 0x7e, - 0x82, 0x84, 0x84, 0x84, 0x83, 0x83, 0x84, 0x84, 0x83, 0x79, 0x76, 0x7a, 0x82, 0x88, 0x8a, 0x8c, - 0x8f, 0x90, 0x90, 0x93, 0x96, 0x9e, 0xa0, 0x94, 0x8a, 0x85, 0x7c, 0x7c, 0x7e, 0x7a, 0x75, 0x70, - 0x74, 0x7e, 0x80, 0x7a, 0x78, 0x78, 0x77, 0x76, 0x77, 0x7a, 0x82, 0x84, 0x85, 0x83, 0x84, 0x89, - 0x8d, 0x90, 0x8e, 0x8c, 0x8d, 0x8c, 0x89, 0x85, 0x84, 0x85, 0x89, 0x8a, 0x8d, 0x8f, 0x90, 0x8d, - 0x85, 0x7e, 0x7d, 0x7e, 0x81, 0x7e, 0x7b, 0x76, 0x74, 0x7c, 0x80, 0x7b, 0x76, 0x70, 0x71, 0x78, - 0x7b, 0x7d, 0x81, 0x81, 0x7b, 0x74, 0x70, 0x72, 0x76, 0x7a, 0x7e, 0x80, 0x7d, 0x80, 0x84, 0x87, - 0x89, 0x88, 0x83, 0x81, 0x7d, 0x76, 0x77, 0x7d, 0x80, 0x7a, 0x78, 0x7b, 0x7c, 0x80, 0x81, 0x81, - 0x81, 0x85, 0x8d, 0x91, 0x90, 0x89, 0x84, 0x83, 0x84, 0x89, 0x89, 0x89, 0x8b, 0x8b, 0x8a, 0x87, - 0x85, 0x83, 0x82, 0x7c, 0x77, 0x79, 0x7e, 0x85, 0x86, 0x86, 0x8b, 0x8f, 0x91, 0x93, 0x91, 0x8f, - 0x8c, 0x83, 0x7a, 0x76, 0x75, 0x7a, 0x7d, 0x7d, 0x79, 0x74, 0x77, 0x7d, 0x83, 0x83, 0x80, 0x7c, - 0x7c, 0x80, 0x81, 0x85, 0x89, 0x8b, 0x89, 0x86, 0x83, 0x86, 0x8b, 0x8e, 0x90, 0x8d, 0x89, 0x87, - 0x86, 0x85, 0x85, 0x87, 0x8b, 0x8a, 0x87, 0x87, 0x87, 0x86, 0x80, 0x7c, 0x7d, 0x7b, 0x76, 0x72, - 0x6b, 0x62, 0x64, 0x6b, 0x75, 0x79, 0x75, 0x73, 0x72, 0x71, 0x76, 0x79, 0x7b, 0x82, 0x82, 0x7d, - 0x78, 0x74, 0x74, 0x74, 0x70, 0x6c, 0x67, 0x66, 0x66, 0x69, 0x6d, 0x6d, 0x6a, 0x66, 0x61, 0x5b, - 0x5d, 0x61, 0x62, 0x61, 0x5f, 0x63, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x61, 0x66, 0x6a, 0x6e, 0x6e, - 0x70, 0x72, 0x75, 0x79, 0x7d, 0x80, 0x85, 0x8a, 0x8b, 0x8c, 0x8b, 0x8f, 0x92, 0x91, 0x90, 0x8f, - 0x8f, 0x90, 0x8e, 0x8c, 0x8d, 0x8f, 0x8f, 0x91, 0x92, 0x8f, 0x8b, 0x86, 0x7e, 0x7d, 0x81, 0x83, - 0x85, 0x87, 0x84, 0x81, 0x81, 0x84, 0x8a, 0x8b, 0x89, 0x83, 0x7c, 0x7a, 0x7c, 0x81, 0x8a, 0x92, - 0x93, 0x91, 0x8d, 0x8f, 0x94, 0x96, 0x9b, 0x9b, 0x98, 0x98, 0x98, 0x99, 0x9b, 0x9b, 0x99, 0x98, - 0x95, 0x91, 0x8a, 0x83, 0x7d, 0x78, 0x7a, 0x7b, 0x78, 0x73, 0x71, 0x6f, 0x6f, 0x72, 0x79, 0x7c, - 0x7c, 0x80, 0x81, 0x80, 0x7d, 0x82, 0x83, 0x83, 0x81, 0x7d, 0x7c, 0x7b, 0x7c, 0x83, 0x86, 0x84, - 0x82, 0x81, 0x82, 0x86, 0x87, 0x89, 0x8a, 0x8b, 0x8b, 0x88, 0x88, 0x89, 0x85, 0x80, 0x77, 0x74, - 0x76, 0x78, 0x78, 0x79, 0x79, 0x75, 0x74, 0x74, 0x79, 0x7c, 0x7a, 0x7b, 0x7c, 0x7e, 0x83, 0x86, - 0x88, 0x87, 0x84, 0x81, 0x80, 0x7a, 0x77, 0x78, 0x78, 0x7b, 0x80, 0x84, 0x86, 0x85, 0x85, 0x85, - 0x88, 0x89, 0x87, 0x86, 0x89, 0x8d, 0x88, 0x83, 0x81, 0x82, 0x81, 0x7c, 0x75, 0x71, 0x6f, 0x6c, - 0x6c, 0x6d, 0x6f, 0x6b, 0x63, 0x60, 0x64, 0x6a, 0x72, 0x78, 0x7c, 0x80, 0x80, 0x7e, 0x7e, 0x83, - 0x87, 0x8b, 0x87, 0x85, 0x82, 0x83, 0x86, 0x87, 0x8a, 0x8a, 0x89, 0x88, 0x85, 0x85, 0x82, 0x7c, - 0x76, 0x77, 0x7a, 0x7a, 0x7a, 0x78, 0x75, 0x72, 0x72, 0x73, 0x72, 0x73, 0x70, 0x69, 0x68, 0x6c, - 0x71, 0x74, 0x75, 0x74, 0x73, 0x70, 0x6e, 0x72, 0x75, 0x76, 0x7a, 0x79, 0x76, 0x75, 0x76, 0x79, - 0x79, 0x74, 0x6f, 0x6d, 0x6b, 0x6f, 0x71, 0x72, 0x72, 0x70, 0x76, 0x7a, 0x79, 0x7c, 0x7a, 0x78, - 0x7d, 0x83, 0x8a, 0x8f, 0x8e, 0x8a, 0x86, 0x80, 0x82, 0x8a, 0x8c, 0x8c, 0x89, 0x88, 0x89, 0x89, - 0x89, 0x8b, 0x8b, 0x88, 0x8b, 0x8f, 0x94, 0x9a, 0x9c, 0x9f, 0x9d, 0x9a, 0x98, 0x94, 0x92, 0x90, - 0x8a, 0x87, 0x84, 0x82, 0x88, 0x8b, 0x88, 0x84, 0x81, 0x80, 0x82, 0x85, 0x85, 0x84, 0x7c, 0x73, - 0x79, 0x81, 0x86, 0x88, 0x86, 0x82, 0x7e, 0x7b, 0x78, 0x76, 0x79, 0x7d, 0x7c, 0x7c, 0x7d, 0x7c, - 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x7e, 0x82, 0x85, 0x87, 0x86, 0x81, 0x7c, 0x7c, 0x7a, 0x78, 0x75, - 0x71, 0x71, 0x73, 0x81, 0x8a, 0x8b, 0x86, 0x81, 0x7e, 0x81, 0x8e, 0x95, 0x93, 0x90, 0x8f, 0x8b, - 0x87, 0x87, 0x86, 0x84, 0x82, 0x80, 0x79, 0x77, 0x78, 0x78, 0x77, 0x75, 0x75, 0x74, 0x70, 0x6c, - 0x6e, 0x6f, 0x6e, 0x6d, 0x6f, 0x73, 0x73, 0x75, 0x79, 0x77, 0x76, 0x75, 0x78, 0x7b, 0x7c, 0x7c, - 0x7e, 0x7b, 0x7a, 0x86, 0x8b, 0x8f, 0x8f, 0x8d, 0x8a, 0x83, 0x82, 0x85, 0x85, 0x83, 0x83, 0x84, - 0x85, 0x86, 0x88, 0x88, 0x80, 0x7d, 0x7e, 0x7d, 0x7c, 0x7e, 0x80, 0x7d, 0x7a, 0x79, 0x7d, 0x81, - 0x80, 0x7d, 0x7d, 0x78, 0x70, 0x72, 0x75, 0x74, 0x71, 0x6d, 0x6d, 0x6d, 0x6c, 0x73, 0x74, 0x78, - 0x82, 0x83, 0x82, 0x8d, 0x91, 0x95, 0x94, 0x92, 0x92, 0x91, 0x95, 0x9a, 0x9e, 0x9d, 0x9b, 0x96, - 0x92, 0x91, 0x8d, 0x83, 0x7d, 0x80, 0x87, 0x87, 0x85, 0x85, 0x76, 0x6d, 0x6f, 0x73, 0x7a, 0x7d, - 0x80, 0x7c, 0x7b, 0x7c, 0x7a, 0x77, 0x6f, 0x6f, 0x6f, 0x73, 0x7e, 0x83, 0x85, 0x89, 0x89, 0x85, - 0x81, 0x74, 0x71, 0x77, 0x81, 0x86, 0x88, 0x85, 0x81, 0x7a, 0x78, 0x77, 0x71, 0x6c, 0x6e, 0x70, - 0x71, 0x73, 0x74, 0x71, 0x69, 0x63, 0x6a, 0x69, 0x65, 0x68, 0x6f, 0x78, 0x82, 0x89, 0x8e, 0x8d, - 0x81, 0x78, 0x70, 0x66, 0x70, 0x75, 0x77, 0x7c, 0x84, 0x83, 0x7e, 0x83, 0x89, 0x87, 0x7d, 0x7b, - 0x7d, 0x76, 0x7e, 0x86, 0x82, 0x7e, 0x7e, 0x81, 0x8c, 0x90, 0x8d, 0x8b, 0x8a, 0x89, 0x85, 0x81, - 0x80, 0x81, 0x74, 0x73, 0x73, 0x6e, 0x68, 0x6b, 0x6e, 0x71, 0x77, 0x7a, 0x7c, 0x7c, 0x86, 0x8e, - 0x8f, 0x91, 0x93, 0x8b, 0x82, 0x84, 0x8c, 0x91, 0x91, 0x8e, 0x91, 0x95, 0x92, 0x90, 0x85, 0x7c, - 0x83, 0x88, 0x85, 0x8c, 0x89, 0x86, 0x84, 0x80, 0x7a, 0x80, 0x83, 0x7d, 0x76, 0x75, 0x7c, 0x7e, - 0x7e, 0x80, 0x81, 0x79, 0x6e, 0x6f, 0x75, 0x76, 0x86, 0x96, 0x9f, 0x9d, 0x95, 0x89, 0x86, 0x8f, - 0x94, 0x88, 0x84, 0x7c, 0x77, 0x76, 0x76, 0x75, 0x75, 0x79, 0x82, 0x85, 0x86, 0x87, 0x83, 0x7b, - 0x85, 0x93, 0x90, 0x81, 0x80, 0x82, 0x79, 0x77, 0x7c, 0x87, 0x8d, 0x8c, 0x85, 0x7d, 0x78, 0x73, - 0x6f, 0x71, 0x78, 0x78, 0x72, 0x74, 0x7b, 0x82, 0x89, 0x8b, 0x89, 0x81, 0x78, 0x7b, 0x82, 0x7b, - 0x75, 0x72, 0x70, 0x6f, 0x76, 0x78, 0x7a, 0x82, 0x8f, 0x9a, 0x90, 0x7a, 0x6e, 0x73, 0x6d, 0x67, - 0x71, 0x7b, 0x7e, 0x80, 0x7d, 0x77, 0x6e, 0x76, 0x8e, 0x8e, 0x84, 0x7e, 0x86, 0x86, 0x83, 0x83, - 0x80, 0x7e, 0x84, 0x8e, 0x91, 0x90, 0x9c, 0xa0, 0x9c, 0x9c, 0x98, 0x92, 0x87, 0x7b, 0x72, 0x6b, - 0x6a, 0x6d, 0x7d, 0x73, 0x71, 0x74, 0x77, 0x73, 0x61, 0x67, 0x7b, 0x78, 0x75, 0x6f, 0x66, 0x70, - 0x83, 0x80, 0x7b, 0x72, 0x66, 0x70, 0x7d, 0x7d, 0x77, 0x75, 0x6f, 0x68, 0x67, 0x5f, 0x50, 0x5a, - 0x69, 0x6a, 0x63, 0x66, 0x74, 0x7e, 0x82, 0x86, 0x7e, 0x73, 0x6d, 0x6f, 0x7b, 0x74, 0x67, 0x6f, - 0x73, 0x71, 0x77, 0x86, 0x8e, 0x80, 0x87, 0x8d, 0x8d, 0xa1, 0x9e, 0x93, 0x88, 0x7e, 0x7d, 0x88, - 0x8e, 0x85, 0x81, 0x87, 0x8d, 0x8e, 0x89, 0x86, 0x89, 0x87, 0x7d, 0x71, 0x6e, 0x75, 0x86, 0x96, - 0x9a, 0x96, 0x8f, 0x8c, 0x8d, 0x93, 0x92, 0x85, 0x85, 0x83, 0x7d, 0x7b, 0x6f, 0x6e, 0x7c, 0x77, - 0x75, 0x72, 0x83, 0x94, 0x97, 0x9a, 0x9a, 0x98, 0x94, 0x99, 0x96, 0x8d, 0x95, 0x9b, 0x94, 0x85, - 0x87, 0x91, 0x99, 0x91, 0x86, 0x83, 0x88, 0x8b, 0x8a, 0x83, 0x7c, 0x6d, 0x64, 0x82, 0x88, 0x7c, - 0x74, 0x75, 0x75, 0x76, 0x81, 0x82, 0x83, 0x87, 0x7e, 0x6b, 0x66, 0x7e, 0x92, 0x94, 0x8f, 0x8a, - 0x88, 0x81, 0x7c, 0x93, 0xa4, 0x98, 0x8e, 0x84, 0x70, 0x63, 0x5d, 0x63, 0x6e, 0x69, 0x6a, 0x72, - 0x80, 0x81, 0x79, 0x6e, 0x68, 0x70, 0x7e, 0x73, 0x5d, 0x64, 0x77, 0x7b, 0x7c, 0x7c, 0x83, 0x89, - 0x82, 0x7c, 0x7c, 0x85, 0x87, 0x85, 0x85, 0x85, 0x76, 0x68, 0x65, 0x6e, 0x81, 0x8d, 0x89, 0x83, - 0x81, 0x87, 0x88, 0x86, 0x83, 0x87, 0x82, 0x71, 0x6e, 0x83, 0x8c, 0x85, 0x7c, 0x7e, 0x8b, 0x88, - 0x76, 0x6c, 0x65, 0x61, 0x60, 0x5c, 0x5c, 0x62, 0x6b, 0x6e, 0x70, 0x75, 0x81, 0x8b, 0x92, 0xa1, - 0x9d, 0x8e, 0x8a, 0x8b, 0x8b, 0x89, 0x8e, 0x92, 0x94, 0x99, 0x9a, 0x93, 0x86, 0x82, 0x88, 0x94, - 0xa9, 0xa8, 0x9e, 0x97, 0x8e, 0x7c, 0x6b, 0x66, 0x74, 0x7a, 0x72, 0x6e, 0x72, 0x75, 0x6a, 0x5f, - 0x5f, 0x63, 0x68, 0x70, 0x68, 0x6b, 0x7e, 0x82, 0x84, 0x85, 0x7d, 0x78, 0x79, 0x81, 0x8e, 0x8f, - 0x88, 0x81, 0x7b, 0x7b, 0x69, 0x5e, 0x60, 0x5c, 0x61, 0x6c, 0x6e, 0x6f, 0x7b, 0x87, 0x87, 0x88, - 0x93, 0x94, 0x7d, 0x6e, 0x6b, 0x6c, 0x6b, 0x78, 0x8d, 0x8d, 0x87, 0x8b, 0x8f, 0x89, 0x7d, 0x7c, - 0x7c, 0x7e, 0x82, 0x85, 0x87, 0x87, 0x81, 0x7a, 0x76, 0x81, 0x89, 0x92, 0x97, 0x95, 0x97, 0x93, - 0x89, 0x86, 0x81, 0x85, 0x8e, 0x8c, 0x8d, 0x93, 0x94, 0x92, 0x95, 0x9d, 0x9d, 0x91, 0x87, 0x7e, - 0x78, 0x76, 0x75, 0x74, 0x6e, 0x6a, 0x7c, 0x8d, 0x8b, 0x89, 0x86, 0x7a, 0x78, 0x80, 0x80, 0x72, - 0x72, 0x7b, 0x87, 0x91, 0x87, 0x80, 0x84, 0x84, 0x87, 0x9a, 0x98, 0x8d, 0x7b, 0x74, 0x77, 0x75, - 0x69, 0x6d, 0x7b, 0x71, 0x6a, 0x6c, 0x6d, 0x63, 0x6a, 0x80, 0x85, 0x87, 0x85, 0x7d, 0x74, 0x79, - 0x8e, 0x91, 0x87, 0x85, 0x8f, 0x8f, 0x8f, 0x86, 0x89, 0x8a, 0x79, 0x6d, 0x72, 0x70, 0x6c, 0x6f, - 0x7a, 0x7d, 0x71, 0x6a, 0x6d, 0x6b, 0x6e, 0x73, 0x78, 0x75, 0x7a, 0x83, 0x7c, 0x73, 0x73, 0x78, - 0x75, 0x75, 0x7d, 0x82, 0x76, 0x6e, 0x82, 0x9a, 0x9c, 0x9c, 0x9a, 0x8f, 0x85, 0x84, 0x88, 0x8a, - 0x82, 0x70, 0x66, 0x6f, 0x6d, 0x6b, 0x75, 0x77, 0x79, 0x83, 0x81, 0x7e, 0x7c, 0x7e, 0x81, 0x85, - 0x84, 0x7c, 0x7a, 0x89, 0x9a, 0x8c, 0x82, 0x81, 0x71, 0x69, 0x67, 0x73, 0x7a, 0x84, 0x8c, 0x8c, - 0x79, 0x72, 0x8a, 0x9b, 0xa5, 0xa6, 0xa2, 0xa5, 0xa1, 0x97, 0x9b, 0x9e, 0x99, 0x91, 0x91, 0x93, - 0x92, 0x9b, 0x9e, 0x8b, 0x7c, 0x86, 0x7b, 0x72, 0x76, 0x74, 0x77, 0x6d, 0x6f, 0x6b, 0x63, 0x57, - 0x51, 0x5e, 0x6a, 0x6e, 0x71, 0x77, 0x6d, 0x68, 0x65, 0x5c, 0x69, 0x7b, 0x83, 0x82, 0x7e, 0x79, - 0x79, 0x83, 0x86, 0x86, 0x84, 0x6e, 0x58, 0x52, 0x67, 0x7c, 0x7c, 0x70, 0x6c, 0x62, 0x51, 0x52, - 0x5e, 0x60, 0x63, 0x6a, 0x79, 0x75, 0x60, 0x5b, 0x63, 0x6e, 0x75, 0x6d, 0x6e, 0x79, 0x87, 0xa8, - 0xb8, 0x9c, 0x92, 0x8c, 0x8f, 0x8a, 0x8c, 0x91, 0x9d, 0xa0, 0xa4, 0xaf, 0xa8, 0x8f, 0x87, 0x8d, - 0x9d, 0xa5, 0xa8, 0x9c, 0x8e, 0x8a, 0x88, 0x89, 0x97, 0x99, 0x93, 0x95, 0x86, 0x8d, 0xa3, 0x92, - 0x82, 0x80, 0x71, 0x62, 0x66, 0x70, 0x79, 0x83, 0x84, 0x88, 0x80, 0x6e, 0x68, 0x86, 0x9a, 0x9c, - 0x94, 0x8b, 0x83, 0x7b, 0x73, 0x6f, 0x71, 0x81, 0x89, 0x8f, 0x95, 0x8f, 0x90, 0x8f, 0x91, 0x94, - 0x8d, 0x70, 0x68, 0x78, 0x7c, 0x7e, 0x7d, 0x81, 0x7e, 0x6c, 0x5a, 0x55, 0x5a, 0x64, 0x6c, 0x6e, - 0x6e, 0x6f, 0x6b, 0x63, 0x68, 0x72, 0x74, 0x7b, 0x8c, 0x92, 0x9f, 0xab, 0xa0, 0x92, 0x89, 0x80, - 0x6e, 0x64, 0x72, 0x7b, 0x79, 0x7c, 0x8a, 0x90, 0x85, 0x71, 0x75, 0x82, 0x8c, 0x8a, 0x7e, 0x7d, - 0x80, 0x7c, 0x7a, 0x85, 0x8a, 0x82, 0x81, 0x84, 0x8c, 0x92, 0x8e, 0x85, 0x7b, 0x75, 0x6d, 0x6b, - 0x6d, 0x75, 0x82, 0x7d, 0x7c, 0x82, 0x87, 0x85, 0x82, 0x89, 0x8c, 0x8e, 0x87, 0x80, 0x80, 0x81, - 0x80, 0x7c, 0x7a, 0x7a, 0x7d, 0x7d, 0x7d, 0x7d, 0x7a, 0x7a, 0x79, 0x7a, 0x79, 0x75, 0x72, 0x72, - 0x76, 0x7a, 0x7b, 0x80, 0x7d, 0x79, 0x75, 0x74, 0x79, 0x7d, 0x82, 0x7e, 0x7a, 0x79, 0x7d, 0x84, - 0x88, 0x86, 0x82, 0x7e, 0x7e, 0x87, 0x95, 0x99, 0x97, 0x93, 0x8e, 0x8b, 0x89, 0x89, 0x85, 0x7b, - 0x74, 0x72, 0x72, 0x73, 0x77, 0x78, 0x77, 0x78, 0x79, 0x7a, 0x76, 0x75, 0x77, 0x77, 0x74, 0x71, - 0x71, 0x72, 0x70, 0x6f, 0x6e, 0x6e, 0x6f, 0x72, 0x73, 0x71, 0x70, 0x6e, 0x6e, 0x6f, 0x72, 0x76, - 0x7d, 0x7e, 0x80, 0x86, 0x87, 0x87, 0x84, 0x85, 0x85, 0x7c, 0x79, 0x79, 0x7b, 0x82, 0x82, 0x80, - 0x82, 0x80, 0x7d, 0x81, 0x85, 0x8b, 0x90, 0x8e, 0x89, 0x8b, 0x90, 0x91, 0x91, 0x8f, 0x8c, 0x8d, - 0x8f, 0x92, 0x92, 0x8c, 0x86, 0x83, 0x83, 0x83, 0x82, 0x81, 0x80, 0x81, 0x83, 0x86, 0x87, 0x87, - 0x87, 0x86, 0x84, 0x7d, 0x7a, 0x83, 0x8c, 0x8f, 0x90, 0x8b, 0x83, 0x7e, 0x7c, 0x7e, 0x83, 0x84, - 0x84, 0x80, 0x7d, 0x80, 0x84, 0x82, 0x7c, 0x79, 0x79, 0x7b, 0x7e, 0x81, 0x7d, 0x79, 0x78, 0x76, - 0x74, 0x78, 0x7c, 0x80, 0x80, 0x7b, 0x79, 0x79, 0x77, 0x77, 0x74, 0x70, 0x70, 0x73, 0x7c, 0x82, - 0x81, 0x7b, 0x77, 0x7a, 0x7a, 0x7a, 0x7e, 0x7c, 0x7b, 0x79, 0x7a, 0x7c, 0x80, 0x82, 0x7e, 0x7d, - 0x82, 0x87, 0x8c, 0x8c, 0x89, 0x86, 0x81, 0x7b, 0x7b, 0x7a, 0x7c, 0x86, 0x8a, 0x89, 0x80, 0x77, - 0x76, 0x76, 0x76, 0x72, 0x6f, 0x6f, 0x6f, 0x6f, 0x75, 0x7a, 0x79, 0x7a, 0x80, 0x81, 0x7b, 0x78, - 0x7d, 0x83, 0x84, 0x83, 0x84, 0x84, 0x81, 0x80, 0x7e, 0x7d, 0x86, 0x8d, 0x8d, 0x89, 0x88, 0x88, - 0x85, 0x83, 0x83, 0x85, 0x87, 0x87, 0x87, 0x85, 0x82, 0x80, 0x7e, 0x7c, 0x77, 0x71, 0x6f, 0x72, - 0x74, 0x75, 0x72, 0x74, 0x75, 0x74, 0x75, 0x78, 0x7e, 0x88, 0x91, 0x8e, 0x89, 0x86, 0x86, 0x8c, - 0x90, 0x91, 0x94, 0x97, 0x9a, 0x9a, 0x9a, 0x98, 0x96, 0x94, 0x93, 0x93, 0x98, 0x97, 0x95, 0x92, - 0x8c, 0x86, 0x84, 0x83, 0x82, 0x7d, 0x77, 0x76, 0x78, 0x76, 0x72, 0x70, 0x71, 0x6f, 0x6b, 0x63, - 0x5f, 0x64, 0x6a, 0x6b, 0x6a, 0x6b, 0x6d, 0x70, 0x73, 0x72, 0x6e, 0x6d, 0x6f, 0x72, 0x75, 0x75, - 0x74, 0x72, 0x75, 0x78, 0x79, 0x7c, 0x84, 0x85, 0x82, 0x7e, 0x7d, 0x7a, 0x7a, 0x7a, 0x73, 0x6c, - 0x6b, 0x70, 0x73, 0x75, 0x7b, 0x80, 0x80, 0x7b, 0x75, 0x74, 0x7a, 0x7d, 0x79, 0x76, 0x7c, 0x81, - 0x82, 0x86, 0x89, 0x8a, 0x90, 0x96, 0x99, 0x95, 0x8d, 0x89, 0x8a, 0x8c, 0x8b, 0x8a, 0x8b, 0x8c, - 0x8c, 0x8d, 0x8a, 0x85, 0x83, 0x82, 0x81, 0x7e, 0x79, 0x74, 0x70, 0x71, 0x78, 0x7a, 0x7b, 0x7b, - 0x7a, 0x77, 0x78, 0x7e, 0x85, 0x81, 0x79, 0x78, 0x78, 0x78, 0x77, 0x76, 0x76, 0x75, 0x7a, 0x80, - 0x82, 0x84, 0x86, 0x89, 0x88, 0x84, 0x86, 0x8d, 0x8f, 0x8d, 0x8a, 0x8a, 0x8c, 0x8b, 0x8c, 0x8a, - 0x87, 0x86, 0x81, 0x7c, 0x7d, 0x82, 0x84, 0x83, 0x82, 0x7e, 0x79, 0x76, 0x79, 0x81, 0x83, 0x81, - 0x84, 0x8a, 0x88, 0x85, 0x82, 0x81, 0x82, 0x82, 0x81, 0x7d, 0x7c, 0x80, 0x82, 0x83, 0x80, 0x85, - 0x8a, 0x8b, 0x86, 0x7e, 0x7b, 0x7d, 0x7e, 0x80, 0x7e, 0x79, 0x74, 0x74, 0x73, 0x74, 0x7b, 0x81, - 0x86, 0x85, 0x84, 0x87, 0x87, 0x86, 0x83, 0x7a, 0x79, 0x7d, 0x82, 0x86, 0x89, 0x8a, 0x8a, 0x8d, - 0x8d, 0x87, 0x83, 0x81, 0x7d, 0x7d, 0x80, 0x81, 0x83, 0x85, 0x85, 0x82, 0x7e, 0x7e, 0x7e, 0x7c, - 0x78, 0x73, 0x6d, 0x6b, 0x6b, 0x67, 0x65, 0x69, 0x70, 0x77, 0x7a, 0x7c, 0x7b, 0x7b, 0x83, 0x87, - 0x85, 0x84, 0x84, 0x82, 0x82, 0x85, 0x86, 0x8a, 0x8d, 0x92, 0x93, 0x93, 0x92, 0x8c, 0x88, 0x86, - 0x86, 0x89, 0x88, 0x84, 0x80, 0x7c, 0x7a, 0x7b, 0x7c, 0x7a, 0x7a, 0x77, 0x73, 0x6f, 0x6b, 0x69, - 0x6c, 0x72, 0x75, 0x71, 0x6a, 0x66, 0x6a, 0x70, 0x71, 0x71, 0x71, 0x6e, 0x6c, 0x6a, 0x6c, 0x6f, - 0x6f, 0x6d, 0x6c, 0x6c, 0x6a, 0x6c, 0x71, 0x73, 0x78, 0x81, 0x83, 0x81, 0x7e, 0x79, 0x75, 0x73, - 0x72, 0x77, 0x78, 0x75, 0x75, 0x76, 0x75, 0x76, 0x7e, 0x89, 0x8c, 0x8b, 0x88, 0x84, 0x85, 0x88, - 0x8c, 0x8c, 0x8a, 0x8b, 0x8c, 0x8f, 0x93, 0x96, 0x95, 0x94, 0x92, 0x94, 0x94, 0x93, 0x91, 0x90, - 0x90, 0x8d, 0x8c, 0x90, 0x90, 0x91, 0x93, 0x93, 0x92, 0x8c, 0x87, 0x83, 0x7b, 0x74, 0x71, 0x72, - 0x73, 0x78, 0x7e, 0x8a, 0x90, 0x8c, 0x8a, 0x8b, 0x8d, 0x8e, 0x8e, 0x8d, 0x90, 0x91, 0x8d, 0x8c, - 0x8c, 0x85, 0x81, 0x81, 0x84, 0x85, 0x82, 0x7d, 0x7a, 0x79, 0x76, 0x75, 0x78, 0x75, 0x72, 0x70, - 0x6e, 0x6d, 0x70, 0x70, 0x69, 0x6b, 0x74, 0x73, 0x6b, 0x68, 0x6c, 0x72, 0x76, 0x78, 0x74, 0x6b, - 0x68, 0x6e, 0x76, 0x7b, 0x79, 0x77, 0x78, 0x7b, 0x81, 0x82, 0x7d, 0x7c, 0x7d, 0x84, 0x87, 0x87, - 0x8a, 0x8f, 0x91, 0x92, 0x97, 0x9a, 0x96, 0x91, 0x8f, 0x8b, 0x87, 0x84, 0x81, 0x79, 0x73, 0x73, - 0x76, 0x74, 0x77, 0x7b, 0x7d, 0x81, 0x82, 0x7d, 0x77, 0x77, 0x79, 0x7d, 0x80, 0x80, 0x80, 0x83, - 0x87, 0x8a, 0x8c, 0x8a, 0x82, 0x7c, 0x86, 0x8b, 0x87, 0x84, 0x83, 0x81, 0x80, 0x82, 0x83, 0x82, - 0x84, 0x80, 0x79, 0x71, 0x6e, 0x6f, 0x6a, 0x64, 0x64, 0x5c, 0x5b, 0x60, 0x68, 0x71, 0x76, 0x77, - 0x78, 0x79, 0x7d, 0x83, 0x86, 0x84, 0x84, 0x84, 0x86, 0x8c, 0x90, 0x91, 0x91, 0x95, 0x9c, 0xa1, - 0xa2, 0x9d, 0x98, 0x98, 0x96, 0x90, 0x8d, 0x8d, 0x92, 0x8f, 0x87, 0x81, 0x84, 0x81, 0x7e, 0x7c, - 0x77, 0x6e, 0x66, 0x62, 0x65, 0x76, 0x82, 0x84, 0x81, 0x79, 0x6e, 0x6d, 0x6f, 0x70, 0x6f, 0x6e, - 0x72, 0x74, 0x76, 0x78, 0x72, 0x6d, 0x6d, 0x6b, 0x6e, 0x70, 0x71, 0x7b, 0x83, 0x87, 0x88, 0x85, - 0x85, 0x86, 0x82, 0x82, 0x80, 0x79, 0x75, 0x77, 0x7b, 0x78, 0x76, 0x7a, 0x79, 0x7b, 0x79, 0x87, - 0x8b, 0x80, 0x7d, 0x84, 0x8b, 0x8e, 0x92, 0x95, 0x90, 0x87, 0x8d, 0x99, 0x9c, 0x97, 0x93, 0x91, - 0x8f, 0x8e, 0x8f, 0x93, 0x96, 0x91, 0x8b, 0x89, 0x8b, 0x8d, 0x8b, 0x84, 0x79, 0x79, 0x77, 0x70, - 0x69, 0x68, 0x6b, 0x6a, 0x6a, 0x70, 0x71, 0x70, 0x61, 0x5c, 0x74, 0x7d, 0x74, 0x7e, 0x85, 0x7d, - 0x7a, 0x79, 0x78, 0x7c, 0x80, 0x79, 0x76, 0x75, 0x76, 0x7a, 0x76, 0x71, 0x75, 0x79, 0x74, 0x70, - 0x75, 0x81, 0x89, 0x88, 0x88, 0x88, 0x82, 0x82, 0x7e, 0x81, 0x84, 0x81, 0x80, 0x7c, 0x7b, 0x78, - 0x74, 0x74, 0x75, 0x7c, 0x85, 0x87, 0x8f, 0x98, 0x9b, 0x94, 0x8a, 0x87, 0x82, 0x84, 0x81, 0x82, - 0x8f, 0x99, 0x9b, 0x9a, 0x9a, 0x8d, 0x89, 0x8e, 0x83, 0x87, 0x8b, 0x82, 0x74, 0x6c, 0x6c, 0x74, - 0x7a, 0x76, 0x71, 0x69, 0x65, 0x68, 0x6a, 0x72, 0x7b, 0x7d, 0x75, 0x76, 0x7a, 0x7c, 0x8c, 0x8f, - 0x91, 0x9a, 0x99, 0x93, 0x8d, 0x8c, 0x9d, 0x95, 0x85, 0x8c, 0x8f, 0x89, 0x89, 0x88, 0x83, 0x86, - 0x83, 0x79, 0x84, 0x8e, 0x8f, 0x8c, 0x8a, 0x8e, 0x88, 0x70, 0x62, 0x63, 0x5f, 0x5b, 0x5a, 0x60, - 0x70, 0x77, 0x75, 0x71, 0x6d, 0x79, 0x80, 0x74, 0x85, 0x89, 0x7b, 0x72, 0x72, 0x79, 0x7e, 0x88, - 0x8e, 0x89, 0x88, 0x91, 0x9c, 0x9c, 0x95, 0x8d, 0x88, 0x82, 0x86, 0x91, 0x93, 0x8f, 0x90, 0x90, - 0x82, 0x75, 0x6e, 0x64, 0x74, 0x7c, 0x6f, 0x70, 0x7b, 0x7a, 0x70, 0x69, 0x60, 0x6e, 0x76, 0x70, - 0x6c, 0x73, 0x78, 0x72, 0x72, 0x71, 0x6d, 0x71, 0x6b, 0x60, 0x68, 0x72, 0x76, 0x7d, 0x88, 0x85, - 0x81, 0x86, 0x8a, 0x92, 0x93, 0x87, 0x83, 0x8b, 0x84, 0x75, 0x71, 0x6b, 0x67, 0x64, 0x64, 0x6d, - 0x71, 0x72, 0x78, 0x73, 0x6c, 0x76, 0x8c, 0x92, 0x88, 0x86, 0x87, 0x89, 0x8a, 0x85, 0x81, 0x83, - 0x8d, 0x92, 0x8f, 0x8c, 0x89, 0x85, 0x86, 0x84, 0x7c, 0x79, 0x88, 0x93, 0x9a, 0x9c, 0x99, 0x94, - 0x8b, 0x8c, 0x88, 0x80, 0x7c, 0x7d, 0x79, 0x6b, 0x6d, 0x73, 0x72, 0x70, 0x6e, 0x69, 0x75, 0x91, - 0x99, 0x95, 0x8d, 0x79, 0x61, 0x6f, 0x7b, 0x75, 0x81, 0x8b, 0x8a, 0x84, 0x7d, 0x77, 0x74, 0x77, - 0x72, 0x6d, 0x72, 0x75, 0x79, 0x84, 0x84, 0x83, 0x83, 0x7e, 0x8c, 0x89, 0x7c, 0x76, 0x75, 0x85, - 0x81, 0x7a, 0x82, 0x8a, 0x8d, 0x8d, 0x81, 0x77, 0x8c, 0x98, 0x96, 0x8e, 0x81, 0x77, 0x81, 0x91, - 0x8e, 0x8c, 0x91, 0x88, 0x8d, 0x9c, 0x99, 0x96, 0x91, 0x92, 0x94, 0x8d, 0x83, 0x85, 0x97, 0x92, - 0x86, 0x78, 0x6d, 0x6e, 0x6c, 0x66, 0x60, 0x65, 0x6a, 0x65, 0x63, 0x64, 0x6c, 0x70, 0x6c, 0x5e, - 0x68, 0x87, 0x94, 0x9c, 0xa9, 0x9a, 0x83, 0x78, 0x87, 0x88, 0x84, 0x81, 0x8b, 0x8b, 0x7c, 0x7a, - 0x7a, 0x6d, 0x60, 0x67, 0x7e, 0x8b, 0x96, 0x95, 0x91, 0x87, 0x72, 0x7c, 0x8a, 0x79, 0x69, 0x5e, - 0x5c, 0x60, 0x65, 0x6e, 0x6f, 0x6d, 0x70, 0x65, 0x61, 0x7e, 0x98, 0x92, 0x88, 0x82, 0x81, 0x7c, - 0x6e, 0x70, 0x87, 0x8c, 0x8c, 0x98, 0xa3, 0x9f, 0x96, 0x86, 0x87, 0x8c, 0x89, 0x84, 0x84, 0x91, - 0x9c, 0x98, 0x92, 0x88, 0x84, 0x96, 0x94, 0x89, 0x8d, 0x92, 0x7a, 0x63, 0x5d, 0x65, 0x63, 0x54, - 0x4c, 0x60, 0x78, 0x82, 0x85, 0x8c, 0x89, 0x7e, 0x6f, 0x68, 0x64, 0x68, 0x72, 0x6f, 0x74, 0x87, - 0x88, 0x80, 0x74, 0x6b, 0x6e, 0x73, 0x88, 0x9f, 0x99, 0x8a, 0x7b, 0x74, 0x6e, 0x70, 0x72, 0x69, - 0x6f, 0x75, 0x71, 0x70, 0x77, 0x79, 0x7a, 0x86, 0x8d, 0x8c, 0x86, 0x89, 0x86, 0x7c, 0x7e, 0x8d, - 0x8c, 0x83, 0x84, 0x90, 0x8f, 0x9a, 0xa8, 0xa0, 0x96, 0x8d, 0x82, 0x7c, 0x7d, 0x77, 0x70, 0x7d, - 0x8d, 0x90, 0x8d, 0x91, 0x8b, 0x7b, 0x8d, 0x96, 0x83, 0x7a, 0x73, 0x71, 0x6f, 0x67, 0x67, 0x69, - 0x68, 0x6b, 0x76, 0x7c, 0x96, 0x97, 0x89, 0x90, 0x8f, 0x85, 0x75, 0x71, 0x6a, 0x57, 0x61, 0x72, - 0x81, 0x80, 0x81, 0x85, 0x85, 0x85, 0x80, 0x70, 0x6b, 0x7b, 0x87, 0x89, 0x82, 0x7a, 0x83, 0x83, - 0x7a, 0x7e, 0x8b, 0x99, 0x8c, 0x78, 0x7d, 0x8c, 0x8a, 0x80, 0x78, 0x71, 0x7b, 0x8e, 0x86, 0x7d, - 0x82, 0x86, 0x89, 0x88, 0x8c, 0x7d, 0x6f, 0x80, 0x9b, 0xa7, 0xa0, 0x9a, 0x96, 0x92, 0x8d, 0x88, - 0x80, 0x8d, 0x9b, 0x92, 0x88, 0x82, 0x79, 0x76, 0x72, 0x61, 0x4f, 0x51, 0x60, 0x5b, 0x56, 0x5a, - 0x63, 0x62, 0x5e, 0x63, 0x64, 0x71, 0x80, 0x8b, 0x9a, 0x9a, 0x8e, 0x85, 0x82, 0x88, 0x8c, 0x86, - 0x7a, 0x8a, 0x86, 0x7a, 0x75, 0x78, 0x77, 0x7c, 0x86, 0x88, 0x8f, 0x98, 0x8e, 0x88, 0x84, 0x80, - 0x81, 0x78, 0x70, 0x7a, 0x7e, 0x7c, 0x78, 0x7c, 0x80, 0x76, 0x6a, 0x5f, 0x61, 0x66, 0x87, 0xa6, - 0xa6, 0x93, 0x8b, 0x8b, 0x87, 0x85, 0x90, 0x92, 0x8f, 0x93, 0x96, 0x99, 0x96, 0x8f, 0x93, 0x90, - 0x7a, 0x75, 0x79, 0x82, 0x8d, 0x8d, 0x83, 0x76, 0x87, 0xa4, 0x9c, 0x89, 0x86, 0x8b, 0x7c, 0x62, - 0x5c, 0x62, 0x62, 0x60, 0x6d, 0x73, 0x6d, 0x79, 0x8b, 0x88, 0x75, 0x74, 0x77, 0x6c, 0x61, 0x60, - 0x61, 0x62, 0x63, 0x66, 0x77, 0x83, 0x82, 0x89, 0x8c, 0x90, 0x87, 0x80, 0x84, 0x86, 0x74, 0x6b, - 0x5f, 0x5f, 0x6e, 0x72, 0x73, 0x74, 0x6f, 0x65, 0x5c, 0x69, 0x7c, 0x89, 0x84, 0x85, 0x78, 0x6e, - 0x82, 0x95, 0x9a, 0x99, 0x90, 0x94, 0xa4, 0xa3, 0xa2, 0x9d, 0x8e, 0x92, 0x83, 0x77, 0x87, 0x8c, - 0x8a, 0x7c, 0x7b, 0x84, 0x92, 0x90, 0x8c, 0x8d, 0x91, 0xa0, 0xa1, 0x89, 0x6b, 0x60, 0x62, 0x64, - 0x5c, 0x5a, 0x6c, 0x7a, 0x8a, 0x96, 0x90, 0x8d, 0x7a, 0x87, 0xa4, 0xa3, 0x99, 0x93, 0x90, 0x8a, - 0x80, 0x74, 0x76, 0x82, 0x7a, 0x71, 0x6d, 0x87, 0x98, 0x88, 0x75, 0x72, 0x74, 0x76, 0x78, 0x80, - 0x86, 0x7c, 0x7e, 0x8b, 0x87, 0x84, 0x82, 0x74, 0x70, 0x74, 0x77, 0x6d, 0x68, 0x6c, 0x73, 0x70, - 0x62, 0x61, 0x77, 0x84, 0x8a, 0x96, 0x96, 0x90, 0x84, 0x7c, 0x85, 0x87, 0x8c, 0x8d, 0x8b, 0x81, - 0x7c, 0x8b, 0x8d, 0x88, 0x92, 0x95, 0x8a, 0x7e, 0x83, 0x87, 0x81, 0x84, 0x8d, 0x82, 0x76, 0x72, - 0x67, 0x5a, 0x54, 0x5f, 0x6c, 0x6f, 0x71, 0x70, 0x6d, 0x72, 0x81, 0x8a, 0x90, 0x8e, 0x91, 0x98, - 0x95, 0x8c, 0x87, 0x87, 0x8b, 0x92, 0x95, 0x93, 0x81, 0x6f, 0x71, 0x7d, 0x85, 0x86, 0x86, 0x81, - 0x7d, 0x7c, 0x81, 0x88, 0x99, 0x98, 0x83, 0x79, 0x71, 0x6b, 0x67, 0x60, 0x63, 0x6b, 0x73, 0x77, - 0x74, 0x6b, 0x6b, 0x6b, 0x76, 0x83, 0x81, 0x7d, 0x7e, 0x80, 0x82, 0x85, 0x87, 0x89, 0x8b, 0x8d, - 0x8f, 0x8e, 0x84, 0x7e, 0x87, 0x8d, 0x8b, 0x86, 0x84, 0x88, 0x8e, 0x8d, 0x8b, 0x8c, 0x89, 0x84, - 0x83, 0x7b, 0x77, 0x77, 0x74, 0x71, 0x70, 0x6c, 0x6d, 0x6f, 0x71, 0x73, 0x72, 0x73, 0x77, 0x81, - 0x87, 0x84, 0x7a, 0x6d, 0x64, 0x65, 0x67, 0x68, 0x6d, 0x73, 0x78, 0x79, 0x75, 0x78, 0x83, 0x86, - 0x82, 0x82, 0x87, 0x8b, 0x8a, 0x8a, 0x89, 0x87, 0x86, 0x88, 0x86, 0x84, 0x84, 0x87, 0x8c, 0x8b, - 0x86, 0x84, 0x82, 0x80, 0x80, 0x7e, 0x81, 0x85, 0x8c, 0x8f, 0x91, 0x8d, 0x89, 0x87, 0x85, 0x81, - 0x80, 0x7c, 0x78, 0x74, 0x72, 0x75, 0x7c, 0x80, 0x80, 0x7d, 0x7c, 0x80, 0x86, 0x8d, 0x8d, 0x84, - 0x7c, 0x78, 0x72, 0x70, 0x70, 0x72, 0x7b, 0x82, 0x7d, 0x7c, 0x7b, 0x80, 0x81, 0x7b, 0x7b, 0x81, - 0x84, 0x84, 0x80, 0x7e, 0x81, 0x81, 0x80, 0x7b, 0x78, 0x7a, 0x7e, 0x81, 0x82, 0x7d, 0x7a, 0x7a, - 0x79, 0x75, 0x73, 0x75, 0x7a, 0x83, 0x8b, 0x8f, 0x8c, 0x85, 0x83, 0x83, 0x81, 0x83, 0x87, 0x8b, - 0x8d, 0x86, 0x81, 0x82, 0x88, 0x90, 0x91, 0x8f, 0x91, 0x8e, 0x8b, 0x8b, 0x88, 0x85, 0x82, 0x7e, - 0x7d, 0x7b, 0x7c, 0x7e, 0x80, 0x7c, 0x7c, 0x7d, 0x7d, 0x80, 0x82, 0x7e, 0x7b, 0x79, 0x79, 0x79, - 0x79, 0x74, 0x6c, 0x68, 0x66, 0x65, 0x6a, 0x76, 0x7a, 0x78, 0x75, 0x71, 0x71, 0x77, 0x7a, 0x7a, - 0x7a, 0x7e, 0x85, 0x87, 0x8c, 0x93, 0x93, 0x90, 0x8f, 0x8b, 0x88, 0x87, 0x87, 0x85, 0x7e, 0x7b, - 0x7d, 0x82, 0x84, 0x85, 0x80, 0x7e, 0x84, 0x88, 0x8c, 0x8b, 0x88, 0x81, 0x78, 0x71, 0x6e, 0x70, - 0x72, 0x70, 0x6c, 0x69, 0x68, 0x6b, 0x76, 0x7e, 0x7a, 0x75, 0x71, 0x6e, 0x6f, 0x76, 0x80, 0x83, - 0x85, 0x89, 0x8a, 0x8a, 0x92, 0x9a, 0x9a, 0x98, 0x92, 0x8d, 0x8d, 0x8c, 0x87, 0x84, 0x84, 0x89, - 0x8d, 0x8e, 0x8b, 0x86, 0x82, 0x80, 0x7d, 0x79, 0x78, 0x76, 0x74, 0x74, 0x73, 0x77, 0x7a, 0x78, - 0x79, 0x77, 0x75, 0x79, 0x81, 0x85, 0x85, 0x87, 0x85, 0x7e, 0x77, 0x6d, 0x69, 0x6b, 0x70, 0x79, - 0x80, 0x7e, 0x7e, 0x82, 0x82, 0x84, 0x87, 0x8a, 0x89, 0x86, 0x88, 0x86, 0x82, 0x7c, 0x77, 0x74, - 0x74, 0x77, 0x7d, 0x7e, 0x79, 0x71, 0x6b, 0x68, 0x6a, 0x69, 0x68, 0x67, 0x6c, 0x70, 0x73, 0x7a, - 0x7d, 0x81, 0x85, 0x83, 0x84, 0x87, 0x85, 0x82, 0x85, 0x87, 0x86, 0x83, 0x83, 0x86, 0x8c, 0x90, - 0x93, 0x95, 0x99, 0x97, 0x92, 0x8b, 0x84, 0x80, 0x79, 0x75, 0x75, 0x79, 0x7d, 0x7d, 0x7a, 0x7b, - 0x81, 0x87, 0x86, 0x80, 0x77, 0x71, 0x70, 0x74, 0x78, 0x79, 0x77, 0x74, 0x73, 0x75, 0x79, 0x7c, - 0x7e, 0x83, 0x82, 0x81, 0x83, 0x83, 0x85, 0x87, 0x8a, 0x8c, 0x8b, 0x8c, 0x8e, 0x8c, 0x89, 0x8c, - 0x90, 0x8d, 0x89, 0x88, 0x88, 0x87, 0x86, 0x85, 0x87, 0x8b, 0x89, 0x85, 0x84, 0x84, 0x82, 0x82, - 0x87, 0x86, 0x80, 0x7c, 0x79, 0x77, 0x7a, 0x7b, 0x7b, 0x7a, 0x78, 0x79, 0x7c, 0x83, 0x8c, 0x91, - 0x8f, 0x8a, 0x87, 0x84, 0x85, 0x86, 0x85, 0x83, 0x7c, 0x74, 0x70, 0x71, 0x73, 0x75, 0x75, 0x76, - 0x78, 0x79, 0x7b, 0x79, 0x74, 0x73, 0x78, 0x7c, 0x7d, 0x84, 0x8b, 0x89, 0x88, 0x88, 0x86, 0x7e, - 0x79, 0x77, 0x76, 0x76, 0x77, 0x76, 0x72, 0x72, 0x77, 0x7e, 0x89, 0x8b, 0x8b, 0x8d, 0x8c, 0x8a, - 0x83, 0x75, 0x6d, 0x6b, 0x72, 0x7c, 0x80, 0x7d, 0x7a, 0x77, 0x75, 0x75, 0x74, 0x70, 0x65, 0x62, - 0x6a, 0x6f, 0x76, 0x7e, 0x82, 0x7e, 0x7a, 0x7b, 0x81, 0x87, 0x8a, 0x8a, 0x87, 0x81, 0x7c, 0x7b, - 0x78, 0x78, 0x7d, 0x83, 0x84, 0x84, 0x86, 0x86, 0x87, 0x87, 0x86, 0x82, 0x7d, 0x7e, 0x83, 0x87, - 0x86, 0x85, 0x85, 0x89, 0x8d, 0x8e, 0x8e, 0x8e, 0x8b, 0x8a, 0x88, 0x86, 0x82, 0x7a, 0x73, 0x6b, - 0x65, 0x66, 0x69, 0x69, 0x6b, 0x6a, 0x68, 0x6e, 0x76, 0x7c, 0x81, 0x83, 0x81, 0x82, 0x81, 0x80, - 0x82, 0x7c, 0x76, 0x71, 0x6e, 0x72, 0x76, 0x79, 0x7a, 0x77, 0x72, 0x6b, 0x67, 0x67, 0x65, 0x66, - 0x6a, 0x6c, 0x70, 0x7a, 0x87, 0x90, 0x9b, 0xa0, 0x9e, 0x9a, 0x97, 0x95, 0x93, 0x8f, 0x8f, 0x91, - 0x92, 0x96, 0x9d, 0xa4, 0xa3, 0x9f, 0x9f, 0x9e, 0x9a, 0x92, 0x8b, 0x84, 0x79, 0x73, 0x71, 0x71, - 0x75, 0x7b, 0x7d, 0x81, 0x8a, 0x94, 0x95, 0x90, 0x8a, 0x84, 0x81, 0x7c, 0x7b, 0x80, 0x88, 0x8a, - 0x84, 0x83, 0x81, 0x7d, 0x7b, 0x7a, 0x73, 0x6d, 0x6c, 0x6c, 0x71, 0x78, 0x7a, 0x79, 0x7a, 0x7c, - 0x80, 0x85, 0x87, 0x88, 0x86, 0x84, 0x85, 0x86, 0x87, 0x88, 0x86, 0x80, 0x7c, 0x7b, 0x78, 0x76, - 0x77, 0x7b, 0x7e, 0x84, 0x89, 0x8a, 0x8a, 0x85, 0x7e, 0x78, 0x72, 0x6d, 0x6b, 0x69, 0x67, 0x69, - 0x6e, 0x70, 0x73, 0x74, 0x7c, 0x84, 0x85, 0x86, 0x81, 0x81, 0x80, 0x7e, 0x7b, 0x73, 0x6e, 0x71, - 0x75, 0x79, 0x80, 0x80, 0x78, 0x74, 0x6f, 0x6d, 0x6f, 0x6c, 0x68, 0x66, 0x68, 0x6c, 0x74, 0x83, - 0x88, 0x88, 0x8b, 0x8e, 0x90, 0x91, 0x8e, 0x88, 0x83, 0x7d, 0x78, 0x7a, 0x7d, 0x7e, 0x87, 0x90, - 0x92, 0x94, 0x91, 0x8a, 0x8a, 0x88, 0x83, 0x80, 0x7b, 0x7a, 0x7a, 0x7a, 0x7c, 0x80, 0x80, 0x7c, - 0x7c, 0x7e, 0x7e, 0x7b, 0x78, 0x77, 0x7b, 0x83, 0x89, 0x88, 0x88, 0x8d, 0x92, 0x91, 0x8c, 0x87, - 0x84, 0x7c, 0x77, 0x7b, 0x81, 0x83, 0x87, 0x84, 0x80, 0x79, 0x77, 0x7d, 0x81, 0x83, 0x81, 0x7c, - 0x79, 0x7b, 0x80, 0x83, 0x85, 0x83, 0x82, 0x80, 0x7b, 0x7c, 0x7d, 0x7e, 0x7c, 0x79, 0x77, 0x79, - 0x7b, 0x7a, 0x7c, 0x7b, 0x79, 0x76, 0x73, 0x6e, 0x69, 0x69, 0x70, 0x78, 0x7e, 0x87, 0x8b, 0x8c, - 0x8a, 0x87, 0x89, 0x8e, 0x91, 0x93, 0x93, 0x8d, 0x84, 0x80, 0x79, 0x7a, 0x7c, 0x77, 0x6e, 0x6d, - 0x72, 0x73, 0x74, 0x72, 0x71, 0x71, 0x71, 0x76, 0x80, 0x8b, 0x90, 0x90, 0x90, 0x90, 0x8d, 0x87, - 0x80, 0x79, 0x75, 0x73, 0x79, 0x80, 0x86, 0x8c, 0x8c, 0x8b, 0x8d, 0x8f, 0x8f, 0x8e, 0x8f, 0x8b, - 0x7e, 0x74, 0x72, 0x79, 0x80, 0x80, 0x80, 0x7c, 0x79, 0x79, 0x77, 0x76, 0x76, 0x75, 0x75, 0x73, - 0x76, 0x7c, 0x86, 0x8c, 0x89, 0x8a, 0x8d, 0x8d, 0x8d, 0x87, 0x7d, 0x76, 0x71, 0x74, 0x7a, 0x7c, - 0x7a, 0x78, 0x78, 0x7a, 0x80, 0x8a, 0x8d, 0x8c, 0x8d, 0x86, 0x7e, 0x7e, 0x84, 0x88, 0x88, 0x80, - 0x77, 0x75, 0x73, 0x76, 0x7c, 0x7d, 0x7d, 0x7b, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x79, 0x79, 0x78, - 0x75, 0x77, 0x7a, 0x7a, 0x7b, 0x7a, 0x7d, 0x84, 0x89, 0x8a, 0x86, 0x83, 0x89, 0x8d, 0x8a, 0x86, - 0x87, 0x84, 0x7a, 0x78, 0x7c, 0x83, 0x85, 0x81, 0x7c, 0x75, 0x70, 0x6d, 0x6f, 0x74, 0x78, 0x77, - 0x76, 0x77, 0x7d, 0x89, 0x90, 0x95, 0x94, 0x90, 0x8f, 0x8c, 0x86, 0x86, 0x80, 0x74, 0x72, 0x74, - 0x77, 0x81, 0x87, 0x87, 0x83, 0x83, 0x85, 0x8a, 0x8c, 0x8b, 0x86, 0x7d, 0x76, 0x76, 0x79, 0x79, - 0x7b, 0x7c, 0x77, 0x75, 0x77, 0x76, 0x73, 0x72, 0x72, 0x6f, 0x6e, 0x75, 0x7d, 0x84, 0x86, 0x85, - 0x87, 0x89, 0x85, 0x80, 0x7b, 0x7a, 0x7a, 0x7b, 0x80, 0x84, 0x85, 0x82, 0x79, 0x75, 0x79, 0x82, - 0x86, 0x88, 0x8c, 0x8d, 0x87, 0x85, 0x84, 0x82, 0x83, 0x83, 0x80, 0x77, 0x75, 0x74, 0x77, 0x81, - 0x86, 0x84, 0x7b, 0x76, 0x7d, 0x85, 0x85, 0x82, 0x80, 0x7d, 0x77, 0x72, 0x71, 0x73, 0x73, 0x73, - 0x71, 0x6d, 0x6d, 0x71, 0x76, 0x7b, 0x7d, 0x83, 0x8d, 0x8d, 0x85, 0x82, 0x80, 0x7c, 0x80, 0x84, - 0x7c, 0x75, 0x77, 0x79, 0x75, 0x72, 0x72, 0x6f, 0x6e, 0x6e, 0x6c, 0x6f, 0x78, 0x84, 0x8f, 0x97, - 0x98, 0x95, 0x93, 0x92, 0x91, 0x8f, 0x8e, 0x91, 0x93, 0x91, 0x8e, 0x8d, 0x92, 0x97, 0x95, 0x8f, - 0x89, 0x87, 0x87, 0x83, 0x83, 0x84, 0x83, 0x86, 0x85, 0x83, 0x84, 0x83, 0x7e, 0x77, 0x74, 0x73, - 0x74, 0x7b, 0x82, 0x80, 0x7b, 0x7d, 0x82, 0x7e, 0x7b, 0x7c, 0x7e, 0x82, 0x86, 0x88, 0x88, 0x88, - 0x85, 0x82, 0x80, 0x7c, 0x79, 0x7e, 0x82, 0x83, 0x84, 0x87, 0x89, 0x87, 0x83, 0x82, 0x7d, 0x79, - 0x7b, 0x7b, 0x74, 0x72, 0x77, 0x76, 0x6f, 0x6d, 0x72, 0x79, 0x7e, 0x7d, 0x7a, 0x74, 0x72, 0x78, - 0x7c, 0x7e, 0x80, 0x7e, 0x7c, 0x7b, 0x7b, 0x81, 0x87, 0x88, 0x87, 0x86, 0x83, 0x82, 0x85, 0x8a, - 0x8b, 0x8a, 0x8a, 0x8b, 0x89, 0x84, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x77, 0x6f, 0x6c, 0x69, 0x67, - 0x67, 0x66, 0x66, 0x67, 0x69, 0x6e, 0x71, 0x78, 0x85, 0x89, 0x88, 0x87, 0x83, 0x7d, 0x76, 0x6f, - 0x73, 0x7b, 0x7d, 0x7c, 0x78, 0x75, 0x7a, 0x83, 0x88, 0x8d, 0x8b, 0x89, 0x8c, 0x88, 0x85, 0x85, - 0x84, 0x85, 0x87, 0x87, 0x88, 0x86, 0x81, 0x7a, 0x74, 0x72, 0x70, 0x6c, 0x6c, 0x69, 0x69, 0x6d, - 0x77, 0x7d, 0x7d, 0x7c, 0x7c, 0x80, 0x81, 0x80, 0x80, 0x80, 0x83, 0x86, 0x86, 0x80, 0x77, 0x75, - 0x7a, 0x83, 0x89, 0x8e, 0x92, 0x91, 0x8d, 0x89, 0x89, 0x8d, 0x8e, 0x88, 0x82, 0x7e, 0x7e, 0x80, - 0x7e, 0x7c, 0x80, 0x82, 0x84, 0x89, 0x8a, 0x81, 0x7d, 0x82, 0x8b, 0x8c, 0x86, 0x85, 0x84, 0x84, - 0x85, 0x86, 0x87, 0x87, 0x87, 0x83, 0x7c, 0x7c, 0x83, 0x83, 0x80, 0x83, 0x89, 0x8b, 0x87, 0x82, - 0x7e, 0x81, 0x85, 0x88, 0x8a, 0x81, 0x76, 0x72, 0x6e, 0x69, 0x6a, 0x6b, 0x6b, 0x6b, 0x6c, 0x6f, - 0x77, 0x7a, 0x7c, 0x84, 0x88, 0x8a, 0x8a, 0x87, 0x81, 0x7b, 0x80, 0x86, 0x8a, 0x89, 0x89, 0x87, - 0x86, 0x8a, 0x8e, 0x8e, 0x8b, 0x8a, 0x8a, 0x88, 0x86, 0x82, 0x81, 0x84, 0x85, 0x83, 0x7b, 0x77, - 0x73, 0x6f, 0x6f, 0x74, 0x79, 0x7c, 0x76, 0x6e, 0x70, 0x73, 0x77, 0x7e, 0x81, 0x80, 0x81, 0x84, - 0x88, 0x8a, 0x89, 0x88, 0x8d, 0x94, 0x95, 0x90, 0x85, 0x7e, 0x83, 0x88, 0x89, 0x8e, 0x91, 0x8f, - 0x8a, 0x89, 0x88, 0x83, 0x7c, 0x78, 0x70, 0x6a, 0x69, 0x6b, 0x6c, 0x68, 0x65, 0x6a, 0x6d, 0x66, - 0x60, 0x60, 0x63, 0x67, 0x6d, 0x6e, 0x6a, 0x68, 0x68, 0x6a, 0x70, 0x73, 0x72, 0x72, 0x76, 0x7a, - 0x80, 0x85, 0x89, 0x8d, 0x90, 0x92, 0x98, 0x9c, 0x9c, 0x9b, 0x97, 0x90, 0x92, 0x99, 0x97, 0x8f, - 0x89, 0x83, 0x7c, 0x77, 0x73, 0x6d, 0x68, 0x67, 0x6b, 0x71, 0x78, 0x7d, 0x83, 0x88, 0x87, 0x85, - 0x83, 0x83, 0x84, 0x83, 0x83, 0x84, 0x89, 0x90, 0x94, 0x90, 0x8c, 0x93, 0x9b, 0x97, 0x94, 0x93, - 0x92, 0x92, 0x92, 0x91, 0x8d, 0x8d, 0x8e, 0x8c, 0x87, 0x7d, 0x73, 0x6c, 0x6a, 0x6a, 0x68, 0x64, - 0x5c, 0x56, 0x53, 0x56, 0x5e, 0x62, 0x64, 0x62, 0x62, 0x65, 0x6f, 0x79, 0x77, 0x74, 0x73, 0x71, - 0x71, 0x72, 0x72, 0x72, 0x76, 0x79, 0x7e, 0x81, 0x81, 0x80, 0x81, 0x83, 0x83, 0x82, 0x7c, 0x77, - 0x77, 0x75, 0x75, 0x77, 0x7c, 0x82, 0x83, 0x83, 0x84, 0x84, 0x81, 0x82, 0x88, 0x8a, 0x8d, 0x96, - 0x97, 0x94, 0x93, 0x94, 0x97, 0x98, 0x96, 0x91, 0x90, 0x93, 0x97, 0x99, 0x97, 0x94, 0x8f, 0x8b, - 0x8d, 0x90, 0x95, 0x97, 0x97, 0x95, 0x96, 0x9b, 0x9e, 0x99, 0x8e, 0x84, 0x7c, 0x7b, 0x79, 0x75, - 0x72, 0x6f, 0x6c, 0x6d, 0x72, 0x75, 0x76, 0x7c, 0x84, 0x82, 0x7b, 0x77, 0x7a, 0x7c, 0x7e, 0x82, - 0x85, 0x88, 0x88, 0x88, 0x89, 0x8e, 0x90, 0x8d, 0x87, 0x84, 0x85, 0x84, 0x82, 0x82, 0x7e, 0x79, - 0x76, 0x74, 0x73, 0x6f, 0x6a, 0x66, 0x6a, 0x70, 0x71, 0x6b, 0x64, 0x5e, 0x5c, 0x5d, 0x64, 0x6e, - 0x76, 0x79, 0x7b, 0x79, 0x7c, 0x85, 0x8b, 0x88, 0x80, 0x7c, 0x80, 0x85, 0x8a, 0x8d, 0x8f, 0x8f, - 0x8c, 0x8a, 0x8d, 0x91, 0x90, 0x8f, 0x8a, 0x84, 0x81, 0x7b, 0x76, 0x74, 0x72, 0x6f, 0x71, 0x75, - 0x77, 0x7a, 0x7c, 0x7d, 0x80, 0x80, 0x7a, 0x7b, 0x82, 0x86, 0x87, 0x82, 0x7e, 0x80, 0x84, 0x85, - 0x84, 0x80, 0x7b, 0x7d, 0x85, 0x89, 0x89, 0x86, 0x82, 0x7c, 0x79, 0x7d, 0x84, 0x88, 0x8a, 0x87, - 0x86, 0x8b, 0x8d, 0x8b, 0x85, 0x7c, 0x72, 0x66, 0x62, 0x64, 0x67, 0x69, 0x6a, 0x69, 0x69, 0x6a, - 0x6c, 0x71, 0x78, 0x7b, 0x75, 0x6d, 0x70, 0x78, 0x79, 0x76, 0x72, 0x6e, 0x70, 0x79, 0x7e, 0x7e, - 0x7e, 0x84, 0x85, 0x83, 0x86, 0x8b, 0x8b, 0x8b, 0x8d, 0x90, 0x8f, 0x8c, 0x8d, 0x8d, 0x8a, 0x86, - 0x83, 0x83, 0x81, 0x7a, 0x72, 0x6c, 0x67, 0x62, 0x5e, 0x5f, 0x66, 0x6e, 0x72, 0x70, 0x70, 0x7a, - 0x83, 0x81, 0x79, 0x78, 0x7a, 0x7c, 0x83, 0x8c, 0x92, 0x8e, 0x88, 0x87, 0x8a, 0x8f, 0x96, 0x98, - 0x92, 0x8f, 0x8b, 0x85, 0x87, 0x8d, 0x8f, 0x91, 0x93, 0x94, 0x96, 0x97, 0x98, 0x9c, 0xa0, 0x9f, - 0x9c, 0x9b, 0x9b, 0x9c, 0x9d, 0x98, 0x90, 0x8a, 0x85, 0x82, 0x83, 0x7e, 0x7d, 0x82, 0x82, 0x81, - 0x7e, 0x76, 0x6a, 0x66, 0x6a, 0x72, 0x78, 0x7e, 0x82, 0x80, 0x78, 0x73, 0x74, 0x77, 0x76, 0x76, - 0x73, 0x70, 0x6e, 0x6d, 0x72, 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x7c, 0x7c, 0x78, 0x73, - 0x6f, 0x71, 0x78, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x82, 0x81, 0x83, 0x8a, 0x8e, - 0x8a, 0x82, 0x7c, 0x7a, 0x7a, 0x79, 0x7c, 0x81, 0x83, 0x7d, 0x75, 0x6f, 0x6a, 0x66, 0x66, 0x67, - 0x68, 0x6e, 0x74, 0x7c, 0x87, 0x8d, 0x91, 0x90, 0x8e, 0x8f, 0x92, 0x92, 0x90, 0x92, 0x92, 0x93, - 0x93, 0x95, 0x96, 0x90, 0x8a, 0x87, 0x86, 0x86, 0x86, 0x80, 0x76, 0x74, 0x76, 0x78, 0x75, 0x71, - 0x74, 0x74, 0x71, 0x6e, 0x6c, 0x6b, 0x6b, 0x6d, 0x75, 0x76, 0x76, 0x76, 0x74, 0x76, 0x7c, 0x7e, - 0x7c, 0x7a, 0x7b, 0x82, 0x8a, 0x8d, 0x89, 0x85, 0x83, 0x85, 0x86, 0x81, 0x7b, 0x78, 0x79, 0x80, - 0x8a, 0x93, 0x96, 0x91, 0x8d, 0x8f, 0x91, 0x8e, 0x86, 0x85, 0x87, 0x84, 0x7e, 0x79, 0x77, 0x77, - 0x73, 0x70, 0x70, 0x71, 0x70, 0x6e, 0x70, 0x77, 0x80, 0x7e, 0x76, 0x72, 0x71, 0x72, 0x75, 0x7a, - 0x7d, 0x7e, 0x7a, 0x7a, 0x81, 0x85, 0x85, 0x85, 0x8b, 0x91, 0x94, 0x93, 0x90, 0x8d, 0x8b, 0x8a, - 0x8b, 0x8d, 0x8d, 0x8a, 0x82, 0x79, 0x71, 0x6a, 0x66, 0x61, 0x5d, 0x5b, 0x5c, 0x63, 0x69, 0x6e, - 0x70, 0x6e, 0x69, 0x6a, 0x6d, 0x6f, 0x75, 0x7b, 0x85, 0x8c, 0x8a, 0x85, 0x82, 0x84, 0x82, 0x83, - 0x8a, 0x92, 0x97, 0x9a, 0x9d, 0x9c, 0x97, 0x8f, 0x8b, 0x88, 0x85, 0x89, 0x8d, 0x8d, 0x87, 0x82, - 0x7d, 0x81, 0x88, 0x87, 0x86, 0x8c, 0x91, 0x90, 0x8d, 0x8b, 0x89, 0x87, 0x89, 0x8b, 0x89, 0x88, - 0x83, 0x7a, 0x71, 0x6c, 0x69, 0x65, 0x62, 0x62, 0x64, 0x69, 0x71, 0x77, 0x7c, 0x7c, 0x79, 0x76, - 0x76, 0x7a, 0x7e, 0x85, 0x8e, 0x90, 0x87, 0x7b, 0x74, 0x70, 0x73, 0x7c, 0x7e, 0x7e, 0x7c, 0x7a, - 0x77, 0x76, 0x7a, 0x7b, 0x7c, 0x7c, 0x7a, 0x7a, 0x7d, 0x81, 0x83, 0x88, 0x8c, 0x8a, 0x8b, 0x8e, - 0x8e, 0x8d, 0x90, 0x94, 0x95, 0x93, 0x92, 0x91, 0x8e, 0x8f, 0x93, 0x92, 0x92, 0x8e, 0x88, 0x7e, - 0x76, 0x72, 0x72, 0x76, 0x77, 0x77, 0x77, 0x78, 0x79, 0x7c, 0x83, 0x81, 0x7a, 0x7c, 0x80, 0x80, - 0x80, 0x84, 0x88, 0x89, 0x89, 0x8c, 0x8d, 0x8e, 0x93, 0x92, 0x8c, 0x8a, 0x88, 0x85, 0x85, 0x85, - 0x84, 0x7c, 0x71, 0x69, 0x68, 0x6b, 0x6c, 0x6d, 0x6f, 0x6e, 0x6c, 0x6c, 0x6d, 0x6d, 0x72, 0x74, - 0x75, 0x76, 0x79, 0x80, 0x84, 0x83, 0x83, 0x85, 0x85, 0x85, 0x87, 0x83, 0x7d, 0x7a, 0x7c, 0x80, - 0x7e, 0x7c, 0x7c, 0x80, 0x85, 0x8d, 0x93, 0x96, 0x95, 0x91, 0x8c, 0x89, 0x89, 0x8d, 0x8f, 0x8e, - 0x85, 0x77, 0x6b, 0x62, 0x5a, 0x5a, 0x59, 0x57, 0x58, 0x5f, 0x65, 0x6a, 0x6f, 0x71, 0x70, 0x69, - 0x65, 0x69, 0x6f, 0x75, 0x7b, 0x80, 0x80, 0x7b, 0x7a, 0x7c, 0x7d, 0x7c, 0x7e, 0x82, 0x87, 0x8d, - 0x90, 0x90, 0x8c, 0x8c, 0x8e, 0x8d, 0x8c, 0x8f, 0x8c, 0x83, 0x78, 0x73, 0x70, 0x69, 0x63, 0x61, - 0x61, 0x5f, 0x5e, 0x60, 0x62, 0x62, 0x5f, 0x5d, 0x5e, 0x61, 0x69, 0x75, 0x81, 0x84, 0x83, 0x7e, - 0x80, 0x89, 0x93, 0x98, 0x96, 0x94, 0x9b, 0x9e, 0x9e, 0xa2, 0xa6, 0xa2, 0x9a, 0x95, 0x94, 0x9a, - 0x9e, 0x9c, 0x9a, 0x95, 0x91, 0x90, 0x92, 0x91, 0x92, 0x98, 0x9b, 0x9e, 0x9e, 0xa0, 0xa2, 0xa0, - 0xa2, 0xa1, 0x9b, 0x95, 0x92, 0x91, 0x88, 0x7d, 0x7b, 0x7d, 0x7d, 0x7e, 0x7d, 0x76, 0x72, 0x71, - 0x71, 0x76, 0x7e, 0x82, 0x7e, 0x7a, 0x78, 0x7a, 0x7e, 0x80, 0x7c, 0x74, 0x6b, 0x67, 0x6b, 0x72, - 0x71, 0x6f, 0x6d, 0x6c, 0x6e, 0x70, 0x6f, 0x71, 0x74, 0x70, 0x6c, 0x6d, 0x71, 0x75, 0x77, 0x7b, - 0x7e, 0x82, 0x85, 0x87, 0x88, 0x86, 0x82, 0x7e, 0x7d, 0x80, 0x86, 0x8d, 0x91, 0x8a, 0x83, 0x84, - 0x81, 0x7c, 0x7c, 0x7c, 0x76, 0x71, 0x6e, 0x6e, 0x6e, 0x6d, 0x6e, 0x6d, 0x6d, 0x6f, 0x73, 0x7c, - 0x81, 0x82, 0x7d, 0x7c, 0x82, 0x8a, 0x93, 0x94, 0x8e, 0x8b, 0x8c, 0x90, 0x97, 0x9c, 0x99, 0x94, - 0x90, 0x8d, 0x90, 0x91, 0x8a, 0x7d, 0x70, 0x5e, 0x5c, 0x6d, 0x71, 0x71, 0x72, 0x6f, 0x64, 0x60, - 0x61, 0x5f, 0x5e, 0x61, 0x69, 0x70, 0x6f, 0x6d, 0x71, 0x79, 0x7c, 0x79, 0x77, 0x77, 0x79, 0x80, - 0x82, 0x80, 0x80, 0x7e, 0x81, 0x88, 0x8d, 0x8d, 0x8a, 0x8b, 0x91, 0x9a, 0xa1, 0xa4, 0x9d, 0x96, - 0x97, 0x99, 0x93, 0x95, 0x96, 0x8b, 0x7a, 0x6f, 0x6a, 0x67, 0x6b, 0x6f, 0x68, 0x65, 0x67, 0x64, - 0x60, 0x62, 0x61, 0x5e, 0x60, 0x65, 0x6a, 0x71, 0x77, 0x7a, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x87, - 0x8c, 0x88, 0x85, 0x87, 0x8a, 0x8d, 0x92, 0x97, 0x95, 0x8f, 0x86, 0x84, 0x86, 0x83, 0x8b, 0x89, - 0x7d, 0x77, 0x74, 0x71, 0x70, 0x6b, 0x6a, 0x69, 0x67, 0x6a, 0x73, 0x7b, 0x76, 0x7a, 0x8b, 0x93, - 0x97, 0x97, 0x95, 0x93, 0x97, 0xa1, 0xaa, 0xaf, 0xab, 0x9f, 0x9a, 0x9a, 0x99, 0x99, 0x99, 0x99, - 0x97, 0x98, 0x98, 0x94, 0x90, 0x90, 0x93, 0x8e, 0x93, 0x94, 0x8e, 0x8a, 0x88, 0x8f, 0x91, 0x8f, - 0x8b, 0x84, 0x81, 0x80, 0x80, 0x79, 0x6f, 0x64, 0x5c, 0x5a, 0x5b, 0x57, 0x55, 0x5d, 0x5a, 0x57, - 0x66, 0x6b, 0x66, 0x64, 0x70, 0x7e, 0x89, 0x90, 0x90, 0x8e, 0x8e, 0x8c, 0x84, 0x86, 0x83, 0x75, - 0x6d, 0x67, 0x63, 0x6d, 0x70, 0x71, 0x74, 0x75, 0x73, 0x71, 0x78, 0x7e, 0x7e, 0x74, 0x6e, 0x71, - 0x70, 0x6f, 0x6c, 0x6e, 0x74, 0x77, 0x7a, 0x80, 0x85, 0x86, 0x90, 0x8f, 0x87, 0x8f, 0x90, 0x8b, - 0x89, 0x85, 0x8c, 0x8e, 0x8b, 0x8d, 0x94, 0x94, 0x89, 0x7d, 0x73, 0x6b, 0x66, 0x66, 0x60, 0x65, - 0x71, 0x75, 0x72, 0x76, 0x87, 0x8a, 0x88, 0x8f, 0x92, 0x9a, 0xa0, 0x91, 0x91, 0x95, 0x90, 0x92, - 0x9d, 0xa2, 0x9e, 0x9a, 0x95, 0x94, 0x92, 0x8d, 0x8c, 0x84, 0x77, 0x73, 0x6f, 0x62, 0x61, 0x6d, - 0x70, 0x6b, 0x6f, 0x6d, 0x6c, 0x7a, 0x87, 0x9b, 0xa0, 0xa0, 0x92, 0x81, 0x80, 0x7e, 0x7e, 0x7c, - 0x78, 0x76, 0x76, 0x74, 0x78, 0x7d, 0x7b, 0x7b, 0x7c, 0x7b, 0x7d, 0x86, 0x83, 0x74, 0x7d, 0x8d, - 0x92, 0x95, 0x99, 0x96, 0x92, 0x8c, 0x81, 0x76, 0x7a, 0x73, 0x60, 0x5c, 0x59, 0x4f, 0x4e, 0x50, - 0x51, 0x5a, 0x54, 0x50, 0x54, 0x57, 0x60, 0x6e, 0x6f, 0x72, 0x72, 0x6e, 0x62, 0x66, 0x73, 0x72, - 0x74, 0x84, 0x95, 0x9a, 0x9a, 0x95, 0x92, 0x9a, 0x9a, 0x88, 0x8a, 0x88, 0x87, 0x82, 0x7a, 0x7e, - 0x8d, 0x9c, 0xa4, 0xa0, 0x8e, 0x79, 0x84, 0x8d, 0x87, 0x7a, 0x70, 0x6a, 0x62, 0x5f, 0x5d, 0x5d, - 0x65, 0x6b, 0x73, 0x7c, 0x7b, 0x71, 0x72, 0x75, 0x72, 0x89, 0x9d, 0xa0, 0x94, 0x8e, 0x92, 0x96, - 0xa9, 0xb8, 0xae, 0xa2, 0x98, 0x8e, 0x8c, 0x8a, 0x8a, 0x8d, 0x8d, 0x8b, 0x83, 0x71, 0x85, 0x9e, - 0xa7, 0xaa, 0xa8, 0x9a, 0x93, 0x8c, 0x85, 0x83, 0x80, 0x85, 0x86, 0x7a, 0x70, 0x71, 0x6f, 0x6d, - 0x70, 0x69, 0x6b, 0x70, 0x6f, 0x6c, 0x6a, 0x66, 0x75, 0x81, 0x8f, 0x97, 0x89, 0x85, 0x84, 0x80, - 0x77, 0x77, 0x80, 0x7d, 0x6f, 0x6b, 0x64, 0x60, 0x75, 0x81, 0x7c, 0x71, 0x67, 0x68, 0x7a, 0x80, - 0x79, 0x81, 0x85, 0x80, 0x79, 0x7e, 0x85, 0x7e, 0x80, 0x75, 0x6c, 0x76, 0x86, 0x90, 0x96, 0x98, - 0x91, 0x95, 0x9a, 0x9e, 0x9b, 0x8b, 0x75, 0x8a, 0x99, 0x8c, 0x82, 0x85, 0x91, 0x8d, 0x7c, 0x6a, - 0x61, 0x74, 0x7e, 0x78, 0x6f, 0x68, 0x67, 0x74, 0x83, 0x81, 0x8b, 0x9d, 0xa0, 0x94, 0x90, 0x8f, - 0x93, 0x8f, 0x87, 0x88, 0x8a, 0x83, 0x90, 0x9d, 0x8a, 0x7e, 0x7c, 0x8c, 0x9c, 0x89, 0x73, 0x71, - 0x75, 0x73, 0x64, 0x61, 0x68, 0x63, 0x65, 0x67, 0x5b, 0x72, 0x93, 0x93, 0x82, 0x78, 0x75, 0x5e, - 0x4e, 0x58, 0x69, 0x6c, 0x66, 0x70, 0x71, 0x65, 0x6c, 0x79, 0x82, 0x87, 0x81, 0x77, 0x73, 0x7a, - 0x82, 0x81, 0x80, 0x8b, 0x97, 0x98, 0x8d, 0x86, 0x9b, 0xa4, 0x92, 0x86, 0x8e, 0x83, 0x6b, 0x5b, - 0x4c, 0x51, 0x66, 0x66, 0x63, 0x5e, 0x51, 0x4f, 0x61, 0x6c, 0x75, 0x7e, 0x79, 0x6f, 0x67, 0x66, - 0x64, 0x5d, 0x5c, 0x6b, 0x76, 0x75, 0x75, 0x8b, 0x9d, 0x9e, 0x9e, 0x99, 0x88, 0x84, 0x8c, 0x8f, - 0x93, 0x9e, 0xa2, 0x9c, 0x97, 0x96, 0x95, 0x92, 0x92, 0x92, 0x8c, 0x93, 0x94, 0x90, 0x89, 0x7a, - 0x6f, 0x66, 0x66, 0x66, 0x6d, 0x73, 0x7e, 0x88, 0x86, 0x90, 0x93, 0x88, 0x85, 0x83, 0x83, 0x87, - 0x8a, 0x91, 0x93, 0x94, 0x96, 0x95, 0xa1, 0xae, 0xa9, 0xa1, 0x9f, 0xa1, 0x9e, 0x95, 0x95, 0x92, - 0x87, 0x84, 0x8b, 0x8e, 0x98, 0xa5, 0xaa, 0x9e, 0x94, 0x8b, 0x79, 0x6d, 0x68, 0x6e, 0x83, 0x8c, - 0x78, 0x69, 0x70, 0x6f, 0x6e, 0x6c, 0x64, 0x57, 0x56, 0x6f, 0x8a, 0x8b, 0x81, 0x7c, 0x7a, 0x7c, - 0x6e, 0x62, 0x6c, 0x76, 0x7c, 0x82, 0x8a, 0x8c, 0x75, 0x67, 0x61, 0x63, 0x6d, 0x7c, 0x85, 0x75, - 0x67, 0x6d, 0x70, 0x71, 0x71, 0x72, 0x69, 0x6f, 0x7b, 0x84, 0x7d, 0x75, 0x7c, 0x84, 0x83, 0x79, - 0x70, 0x70, 0x81, 0x8e, 0x93, 0x94, 0x82, 0x6e, 0x6d, 0x83, 0x98, 0xa5, 0xa7, 0x9a, 0x85, 0x84, - 0x85, 0x74, 0x67, 0x60, 0x60, 0x6f, 0x84, 0x8a, 0x85, 0x7a, 0x79, 0x7d, 0x7c, 0x79, 0x78, 0x6f, - 0x73, 0x87, 0x9a, 0x9d, 0x99, 0x92, 0x83, 0x7d, 0x7e, 0x7c, 0x87, 0x92, 0x8c, 0x86, 0x8d, 0x91, - 0x99, 0x9b, 0x88, 0x7b, 0x71, 0x72, 0x6c, 0x5f, 0x65, 0x73, 0x87, 0x8b, 0x81, 0x77, 0x80, 0x8b, - 0x85, 0x7d, 0x81, 0x73, 0x67, 0x6a, 0x7a, 0x81, 0x7a, 0x75, 0x83, 0x81, 0x70, 0x74, 0x7c, 0x75, - 0x6f, 0x70, 0x74, 0x79, 0x7b, 0x77, 0x78, 0x81, 0x89, 0x98, 0x96, 0x92, 0x90, 0x88, 0x81, 0x78, - 0x7d, 0x87, 0x73, 0x5d, 0x55, 0x56, 0x57, 0x5c, 0x68, 0x6a, 0x62, 0x6a, 0x75, 0x79, 0x74, 0x70, - 0x65, 0x52, 0x48, 0x4d, 0x5c, 0x66, 0x6d, 0x88, 0x99, 0x8f, 0x88, 0x96, 0x9c, 0x9e, 0x9f, 0x92, - 0x8d, 0x8b, 0x9b, 0xac, 0xaa, 0xa9, 0x9f, 0x96, 0x89, 0x86, 0x84, 0x94, 0xa1, 0x9a, 0x8d, 0x7d, - 0x87, 0xa2, 0x9e, 0x91, 0x93, 0x97, 0x94, 0x8c, 0x7b, 0x74, 0x71, 0x6c, 0x81, 0x80, 0x80, 0x79, - 0x64, 0x5e, 0x61, 0x6a, 0x78, 0x80, 0x79, 0x78, 0x87, 0x81, 0x88, 0x99, 0x99, 0x93, 0x8d, 0x85, - 0x72, 0x69, 0x6e, 0x7b, 0x8e, 0x98, 0x92, 0x7e, 0x76, 0x81, 0x96, 0xa1, 0x95, 0x88, 0x7d, 0x6f, - 0x68, 0x76, 0x7e, 0x75, 0x6a, 0x62, 0x68, 0x6d, 0x66, 0x5d, 0x50, 0x50, 0x61, 0x6a, 0x6c, 0x62, - 0x5b, 0x5a, 0x64, 0x79, 0x7b, 0x74, 0x7d, 0x7b, 0x74, 0x80, 0x86, 0x85, 0x83, 0x85, 0x8d, 0x86, - 0x86, 0x8c, 0x9d, 0x9f, 0x9b, 0x9f, 0x8e, 0x83, 0x88, 0x89, 0x81, 0x76, 0x80, 0x87, 0x84, 0x82, - 0x8d, 0x9a, 0x9a, 0x8e, 0x8d, 0x9b, 0x9c, 0xa3, 0xa5, 0x93, 0x8b, 0x85, 0x92, 0xa1, 0xaa, 0xa3, - 0x9c, 0x98, 0x8a, 0x8a, 0x8d, 0x89, 0x8c, 0x93, 0x86, 0x69, 0x62, 0x7e, 0x8d, 0x8b, 0x8c, 0x91, - 0x91, 0x8c, 0x89, 0x85, 0x82, 0x84, 0x8e, 0x88, 0x74, 0x73, 0x76, 0x6a, 0x73, 0x8e, 0x95, 0x93, - 0x8f, 0x89, 0x89, 0x83, 0x80, 0x8c, 0x86, 0x7b, 0x71, 0x65, 0x57, 0x4a, 0x4e, 0x5d, 0x72, 0x74, - 0x64, 0x53, 0x4c, 0x4a, 0x56, 0x69, 0x6c, 0x69, 0x68, 0x5f, 0x57, 0x5b, 0x6e, 0x84, 0x86, 0x83, - 0x89, 0x8a, 0x79, 0x6e, 0x6e, 0x6a, 0x6b, 0x6c, 0x70, 0x72, 0x6a, 0x6b, 0x81, 0xac, 0xb8, 0xa4, - 0x9d, 0x93, 0x89, 0x82, 0x72, 0x6f, 0x7c, 0x85, 0x86, 0x82, 0x75, 0x72, 0x6c, 0x6c, 0x86, 0x90, - 0x87, 0x75, 0x65, 0x61, 0x5d, 0x5e, 0x65, 0x69, 0x6b, 0x6a, 0x64, 0x56, 0x54, 0x68, 0x76, 0x75, - 0x7c, 0x8c, 0x90, 0x91, 0x93, 0x8f, 0x9f, 0xa9, 0xa2, 0xa1, 0xa0, 0x9e, 0x94, 0x9f, 0xab, 0xa8, - 0xa1, 0x94, 0x85, 0x78, 0x6f, 0x64, 0x6b, 0x77, 0x7d, 0x7e, 0x7a, 0x73, 0x62, 0x58, 0x5d, 0x65, - 0x6d, 0x70, 0x70, 0x72, 0x66, 0x5d, 0x6b, 0x78, 0x7b, 0x86, 0x91, 0x92, 0x92, 0x95, 0xa1, 0xb0, - 0xa6, 0x9d, 0x98, 0x93, 0x8e, 0x88, 0x8c, 0x93, 0x92, 0x8b, 0x82, 0x7c, 0x82, 0x8d, 0x94, 0x93, - 0x9a, 0x99, 0x93, 0x8f, 0x87, 0x84, 0x86, 0x8c, 0x8d, 0x8c, 0x89, 0x89, 0x84, 0x72, 0x61, 0x59, - 0x61, 0x69, 0x6e, 0x78, 0x7c, 0x7d, 0x86, 0x96, 0x9c, 0x90, 0x86, 0x7d, 0x7e, 0x85, 0x8c, 0x94, - 0x96, 0x92, 0x89, 0x83, 0x7b, 0x82, 0x91, 0x8f, 0x8c, 0x92, 0x8e, 0x8a, 0x7d, 0x74, 0x7a, 0x83, - 0x82, 0x7c, 0x73, 0x6e, 0x6d, 0x6d, 0x6b, 0x60, 0x53, 0x5d, 0x6a, 0x73, 0x7c, 0x88, 0x8d, 0x8f, - 0x98, 0x94, 0x8c, 0x8a, 0x8a, 0x8f, 0x8d, 0x8d, 0x92, 0x94, 0x8e, 0x81, 0x73, 0x6d, 0x73, 0x7b, - 0x78, 0x6f, 0x74, 0x72, 0x6f, 0x6e, 0x6e, 0x6b, 0x6e, 0x73, 0x70, 0x6e, 0x6f, 0x72, 0x77, 0x77, - 0x72, 0x69, 0x68, 0x75, 0x80, 0x87, 0x92, 0x98, 0x9b, 0xa3, 0x93, 0x81, 0x7b, 0x7e, 0x84, 0x76, - 0x6f, 0x6f, 0x70, 0x71, 0x6e, 0x62, 0x5f, 0x67, 0x64, 0x63, 0x66, 0x6c, 0x6a, 0x65, 0x6b, 0x73, - 0x78, 0x80, 0x82, 0x85, 0x86, 0x87, 0x8e, 0x89, 0x78, 0x69, 0x5c, 0x58, 0x68, 0x7a, 0x84, 0x89, - 0x8c, 0x96, 0x9e, 0x8f, 0x82, 0x7c, 0x84, 0x88, 0x85, 0x89, 0x8d, 0x8e, 0x92, 0x95, 0x93, 0x8f, - 0x8b, 0x7c, 0x6c, 0x6d, 0x73, 0x6c, 0x66, 0x62, 0x64, 0x67, 0x67, 0x65, 0x64, 0x62, 0x68, 0x75, - 0x7e, 0x7a, 0x72, 0x6d, 0x70, 0x7a, 0x8d, 0x9b, 0x9f, 0xa0, 0xa5, 0xa5, 0x9f, 0xa2, 0xa6, 0xa7, - 0xa6, 0xa3, 0xa4, 0xa7, 0xa6, 0xa1, 0x9f, 0x9b, 0x99, 0x96, 0x8b, 0x7e, 0x79, 0x79, 0x7d, 0x7b, - 0x74, 0x6d, 0x6a, 0x6a, 0x6a, 0x6a, 0x6e, 0x76, 0x7d, 0x83, 0x83, 0x7e, 0x78, 0x76, 0x79, 0x83, - 0x8c, 0x8f, 0x8a, 0x85, 0x80, 0x7c, 0x7e, 0x85, 0x87, 0x83, 0x80, 0x83, 0x89, 0x8d, 0x8c, 0x8d, - 0x8c, 0x8d, 0x91, 0x8e, 0x8a, 0x87, 0x87, 0x8c, 0x91, 0x91, 0x91, 0x90, 0x8a, 0x85, 0x81, 0x81, - 0x84, 0x82, 0x78, 0x6e, 0x65, 0x61, 0x63, 0x68, 0x6a, 0x6c, 0x6f, 0x72, 0x6b, 0x5f, 0x5c, 0x61, - 0x6a, 0x6d, 0x6a, 0x6a, 0x70, 0x75, 0x7a, 0x7d, 0x7e, 0x7d, 0x7c, 0x78, 0x75, 0x76, 0x7b, 0x81, - 0x7c, 0x77, 0x72, 0x6f, 0x73, 0x72, 0x6e, 0x6a, 0x6e, 0x79, 0x83, 0x81, 0x78, 0x73, 0x72, 0x74, - 0x79, 0x7e, 0x83, 0x83, 0x80, 0x80, 0x84, 0x8a, 0x91, 0x96, 0x98, 0x96, 0x93, 0x93, 0x94, 0x93, - 0x90, 0x8b, 0x84, 0x80, 0x7b, 0x79, 0x78, 0x7e, 0x84, 0x83, 0x7b, 0x77, 0x78, 0x7d, 0x83, 0x84, - 0x80, 0x82, 0x8c, 0x93, 0x9a, 0x9f, 0x9e, 0x9e, 0x9f, 0xa4, 0xab, 0xa9, 0xa3, 0x9a, 0x90, 0x87, - 0x85, 0x83, 0x7d, 0x77, 0x6f, 0x6c, 0x70, 0x72, 0x6f, 0x6b, 0x66, 0x64, 0x65, 0x63, 0x62, 0x66, - 0x70, 0x78, 0x76, 0x73, 0x77, 0x7d, 0x86, 0x8a, 0x85, 0x82, 0x85, 0x88, 0x89, 0x88, 0x84, 0x82, - 0x7c, 0x79, 0x79, 0x7e, 0x88, 0x8f, 0x8f, 0x88, 0x83, 0x84, 0x88, 0x8c, 0x8c, 0x87, 0x84, 0x84, - 0x86, 0x8d, 0x8d, 0x87, 0x7d, 0x76, 0x73, 0x71, 0x71, 0x74, 0x71, 0x6c, 0x65, 0x61, 0x61, 0x60, - 0x60, 0x5e, 0x5c, 0x60, 0x65, 0x67, 0x69, 0x6a, 0x6a, 0x6b, 0x6d, 0x6f, 0x78, 0x86, 0x8f, 0x92, - 0x91, 0x8e, 0x8d, 0x94, 0x9e, 0xa5, 0xa7, 0xa7, 0xa5, 0xa4, 0xa1, 0x9b, 0x92, 0x88, 0x7d, 0x74, - 0x6e, 0x70, 0x75, 0x71, 0x65, 0x5d, 0x5b, 0x5d, 0x5d, 0x5b, 0x57, 0x58, 0x5f, 0x66, 0x6a, 0x6c, - 0x70, 0x73, 0x73, 0x6f, 0x6d, 0x74, 0x7e, 0x82, 0x80, 0x7c, 0x7a, 0x7d, 0x84, 0x8d, 0x93, 0x95, - 0x97, 0x93, 0x8c, 0x8b, 0x8e, 0x94, 0x97, 0x96, 0x98, 0x98, 0x97, 0x97, 0x94, 0x8b, 0x82, 0x7e, - 0x7a, 0x77, 0x75, 0x72, 0x72, 0x6f, 0x70, 0x75, 0x76, 0x72, 0x6d, 0x6e, 0x6c, 0x6b, 0x6f, 0x73, - 0x75, 0x73, 0x6f, 0x6f, 0x71, 0x75, 0x7a, 0x81, 0x88, 0x8a, 0x8a, 0x8a, 0x8c, 0x92, 0x97, 0x95, - 0x93, 0x92, 0x8d, 0x8e, 0x8e, 0x93, 0x99, 0x9a, 0x9a, 0x9a, 0x9b, 0x96, 0x92, 0x94, 0x93, 0x93, - 0x92, 0x90, 0x92, 0x93, 0x93, 0x8f, 0x8f, 0x95, 0x9c, 0x9c, 0x96, 0x92, 0x94, 0x98, 0x90, 0x8a, - 0x8e, 0x92, 0x93, 0x91, 0x92, 0x95, 0x96, 0x93, 0x90, 0x90, 0x8c, 0x86, 0x84, 0x84, 0x86, 0x84, - 0x7c, 0x79, 0x74, 0x6c, 0x67, 0x68, 0x6e, 0x75, 0x78, 0x75, 0x70, 0x6d, 0x69, 0x64, 0x63, 0x66, - 0x68, 0x67, 0x67, 0x66, 0x6b, 0x6f, 0x71, 0x73, 0x74, 0x73, 0x75, 0x75, 0x72, 0x6f, 0x6a, 0x63, - 0x5d, 0x5d, 0x5f, 0x60, 0x62, 0x66, 0x69, 0x6a, 0x6c, 0x6f, 0x71, 0x71, 0x71, 0x73, 0x78, 0x79, - 0x79, 0x7b, 0x76, 0x71, 0x72, 0x73, 0x77, 0x79, 0x79, 0x7c, 0x7e, 0x7c, 0x7c, 0x81, 0x83, 0x83, - 0x80, 0x81, 0x84, 0x8a, 0x8d, 0x8b, 0x86, 0x85, 0x87, 0x81, 0x79, 0x74, 0x73, 0x72, 0x6a, 0x65, - 0x65, 0x63, 0x64, 0x6b, 0x70, 0x71, 0x6d, 0x6d, 0x70, 0x74, 0x79, 0x7d, 0x80, 0x7d, 0x7e, 0x84, - 0x88, 0x89, 0x89, 0x85, 0x81, 0x85, 0x90, 0x99, 0x99, 0x97, 0x96, 0x97, 0x96, 0x93, 0x94, 0x96, - 0x94, 0x92, 0x95, 0x99, 0x98, 0x97, 0x94, 0x8e, 0x88, 0x87, 0x88, 0x84, 0x7a, 0x78, 0x78, 0x72, - 0x70, 0x74, 0x76, 0x73, 0x74, 0x78, 0x77, 0x73, 0x77, 0x7c, 0x7e, 0x7e, 0x80, 0x87, 0x91, 0x9b, - 0xa4, 0xa5, 0xa1, 0x99, 0x94, 0x93, 0x96, 0x98, 0x99, 0x97, 0x90, 0x84, 0x7e, 0x81, 0x84, 0x85, - 0x7d, 0x73, 0x6d, 0x72, 0x7b, 0x82, 0x83, 0x82, 0x81, 0x82, 0x81, 0x85, 0x8a, 0x8e, 0x8e, 0x8b, - 0x88, 0x83, 0x82, 0x81, 0x7c, 0x79, 0x76, 0x78, 0x7b, 0x78, 0x75, 0x74, 0x79, 0x80, 0x86, 0x8b, - 0x8b, 0x88, 0x85, 0x80, 0x7c, 0x82, 0x88, 0x8e, 0x8e, 0x86, 0x7d, 0x7a, 0x79, 0x7a, 0x7e, 0x7d, - 0x77, 0x70, 0x6d, 0x6e, 0x6f, 0x74, 0x78, 0x75, 0x6c, 0x68, 0x6e, 0x77, 0x7e, 0x7d, 0x78, 0x75, - 0x7b, 0x86, 0x88, 0x89, 0x8c, 0x89, 0x83, 0x7e, 0x80, 0x84, 0x84, 0x81, 0x81, 0x80, 0x7d, 0x81, - 0x84, 0x80, 0x7a, 0x73, 0x6c, 0x6b, 0x6d, 0x71, 0x78, 0x7c, 0x7c, 0x78, 0x71, 0x6b, 0x6e, 0x79, - 0x7b, 0x75, 0x74, 0x7b, 0x82, 0x84, 0x83, 0x81, 0x7e, 0x80, 0x87, 0x90, 0x94, 0x8b, 0x7e, 0x75, - 0x75, 0x7d, 0x83, 0x82, 0x7c, 0x72, 0x6a, 0x68, 0x69, 0x6d, 0x6c, 0x64, 0x5d, 0x5f, 0x64, 0x67, - 0x6d, 0x74, 0x78, 0x75, 0x6f, 0x6d, 0x6f, 0x76, 0x81, 0x88, 0x8c, 0x88, 0x82, 0x80, 0x86, 0x8e, - 0x93, 0x94, 0x96, 0x9d, 0xa1, 0x9f, 0x9a, 0x94, 0x8d, 0x8a, 0x8a, 0x8d, 0x94, 0x93, 0x86, 0x79, - 0x7a, 0x7e, 0x7d, 0x7a, 0x73, 0x69, 0x61, 0x63, 0x6e, 0x75, 0x77, 0x75, 0x76, 0x7c, 0x82, 0x85, - 0x8b, 0x92, 0x92, 0x8b, 0x82, 0x7a, 0x7a, 0x7e, 0x84, 0x89, 0x8e, 0x92, 0x91, 0x8c, 0x8d, 0x91, - 0x91, 0x8d, 0x8c, 0x8e, 0x90, 0x94, 0x9d, 0xa4, 0xa1, 0x99, 0x92, 0x90, 0x8f, 0x8a, 0x82, 0x78, - 0x73, 0x72, 0x74, 0x73, 0x6e, 0x67, 0x60, 0x5c, 0x5f, 0x63, 0x65, 0x65, 0x6a, 0x74, 0x7b, 0x7c, - 0x81, 0x87, 0x85, 0x7e, 0x7d, 0x84, 0x8c, 0x8f, 0x8d, 0x89, 0x8a, 0x8f, 0x8e, 0x8c, 0x8c, 0x89, - 0x83, 0x80, 0x7e, 0x7b, 0x78, 0x76, 0x74, 0x6e, 0x6a, 0x68, 0x68, 0x6f, 0x7a, 0x81, 0x7b, 0x71, - 0x66, 0x60, 0x5f, 0x67, 0x72, 0x73, 0x6c, 0x61, 0x5e, 0x64, 0x68, 0x6c, 0x74, 0x7e, 0x83, 0x7d, - 0x7c, 0x82, 0x82, 0x82, 0x87, 0x8c, 0x8e, 0x8f, 0x90, 0x90, 0x92, 0x96, 0x97, 0x93, 0x88, 0x7b, - 0x74, 0x76, 0x86, 0x94, 0x98, 0x96, 0x93, 0x91, 0x8e, 0x88, 0x89, 0x90, 0x96, 0x95, 0x8f, 0x87, - 0x7e, 0x78, 0x7a, 0x84, 0x8a, 0x89, 0x83, 0x81, 0x89, 0x90, 0x90, 0x91, 0x93, 0x93, 0x90, 0x8d, - 0x91, 0x9a, 0x9d, 0x98, 0x90, 0x8a, 0x88, 0x84, 0x7c, 0x7b, 0x80, 0x81, 0x80, 0x79, 0x70, 0x6c, - 0x6c, 0x70, 0x79, 0x7d, 0x7d, 0x7b, 0x7d, 0x83, 0x84, 0x7e, 0x7d, 0x80, 0x80, 0x80, 0x82, 0x85, - 0x84, 0x7e, 0x7a, 0x74, 0x6e, 0x6c, 0x6e, 0x73, 0x7d, 0x86, 0x84, 0x79, 0x74, 0x75, 0x75, 0x75, - 0x74, 0x70, 0x6a, 0x63, 0x65, 0x6c, 0x71, 0x73, 0x75, 0x79, 0x77, 0x70, 0x71, 0x7a, 0x7c, 0x7b, - 0x7a, 0x76, 0x72, 0x75, 0x7a, 0x81, 0x87, 0x8b, 0x89, 0x82, 0x7a, 0x7a, 0x7e, 0x82, 0x83, 0x86, - 0x84, 0x7c, 0x74, 0x72, 0x78, 0x7b, 0x7d, 0x7c, 0x76, 0x6b, 0x62, 0x62, 0x6a, 0x72, 0x78, 0x77, - 0x6f, 0x69, 0x6d, 0x6e, 0x71, 0x78, 0x81, 0x87, 0x83, 0x80, 0x82, 0x84, 0x84, 0x8b, 0x8d, 0x86, - 0x81, 0x80, 0x87, 0x93, 0x99, 0x9a, 0x9b, 0x97, 0x8f, 0x8d, 0x91, 0x99, 0x9e, 0x9f, 0x99, 0x8e, - 0x88, 0x86, 0x81, 0x7c, 0x80, 0x80, 0x7b, 0x73, 0x6c, 0x6b, 0x6c, 0x6e, 0x71, 0x74, 0x72, 0x6f, - 0x6f, 0x73, 0x79, 0x80, 0x85, 0x84, 0x82, 0x80, 0x82, 0x82, 0x81, 0x82, 0x7e, 0x78, 0x72, 0x70, - 0x70, 0x73, 0x78, 0x80, 0x81, 0x7a, 0x75, 0x75, 0x77, 0x75, 0x71, 0x6e, 0x6f, 0x73, 0x74, 0x77, - 0x7d, 0x84, 0x88, 0x87, 0x85, 0x80, 0x7d, 0x7d, 0x7a, 0x78, 0x79, 0x7b, 0x7d, 0x85, 0x8d, 0x92, - 0x95, 0x9b, 0x9d, 0x99, 0x96, 0x96, 0x9a, 0x9f, 0xa1, 0xa0, 0x9b, 0x95, 0x92, 0x95, 0x99, 0x97, - 0x95, 0x97, 0x92, 0x8c, 0x89, 0x8b, 0x8a, 0x88, 0x85, 0x83, 0x81, 0x7e, 0x83, 0x8a, 0x8e, 0x8f, - 0x8b, 0x7a, 0x6a, 0x62, 0x69, 0x77, 0x80, 0x83, 0x81, 0x7a, 0x79, 0x78, 0x80, 0x8e, 0x94, 0x91, - 0x90, 0x8c, 0x89, 0x87, 0x86, 0x87, 0x8b, 0x91, 0x92, 0x8d, 0x87, 0x82, 0x7e, 0x7d, 0x7b, 0x78, - 0x6f, 0x67, 0x68, 0x72, 0x7c, 0x7b, 0x78, 0x75, 0x70, 0x68, 0x5e, 0x5b, 0x60, 0x69, 0x70, 0x72, - 0x71, 0x6e, 0x6c, 0x6a, 0x6b, 0x71, 0x72, 0x6c, 0x61, 0x5d, 0x60, 0x64, 0x68, 0x6d, 0x6f, 0x6a, - 0x63, 0x63, 0x67, 0x66, 0x61, 0x5c, 0x5b, 0x5f, 0x64, 0x6b, 0x6f, 0x6c, 0x69, 0x68, 0x69, 0x6a, - 0x6e, 0x72, 0x75, 0x7b, 0x82, 0x83, 0x84, 0x89, 0x8e, 0x92, 0x95, 0x99, 0x9a, 0x94, 0x93, 0x95, - 0x97, 0x99, 0x95, 0x95, 0x93, 0x93, 0x98, 0x99, 0x99, 0x94, 0x92, 0x96, 0x97, 0x93, 0x8e, 0x8e, - 0x8c, 0x89, 0x88, 0x85, 0x7b, 0x6f, 0x6e, 0x78, 0x83, 0x8a, 0x8b, 0x82, 0x6f, 0x64, 0x61, 0x6a, - 0x70, 0x6f, 0x6f, 0x72, 0x7c, 0x83, 0x85, 0x87, 0x88, 0x85, 0x84, 0x86, 0x86, 0x85, 0x89, 0x8f, - 0x92, 0x8f, 0x87, 0x7d, 0x77, 0x76, 0x77, 0x77, 0x76, 0x6d, 0x62, 0x5d, 0x60, 0x68, 0x6e, 0x70, - 0x70, 0x6f, 0x6c, 0x6a, 0x65, 0x5f, 0x5c, 0x5f, 0x68, 0x74, 0x79, 0x77, 0x76, 0x7a, 0x7d, 0x7e, - 0x7e, 0x80, 0x81, 0x87, 0x93, 0xa0, 0xa7, 0xac, 0xac, 0xa9, 0xa8, 0xa8, 0xaa, 0xa8, 0xa2, 0x9c, - 0x9a, 0x9c, 0x9a, 0x97, 0x97, 0x97, 0x95, 0x94, 0x96, 0x93, 0x90, 0x8e, 0x90, 0x94, 0x94, 0x8e, - 0x88, 0x86, 0x86, 0x88, 0x86, 0x84, 0x88, 0x8b, 0x8d, 0x91, 0x96, 0x9b, 0x9a, 0x97, 0x92, 0x8e, - 0x8e, 0x8c, 0x8b, 0x8c, 0x8c, 0x8a, 0x87, 0x83, 0x7d, 0x7a, 0x79, 0x7c, 0x7e, 0x79, 0x75, 0x74, - 0x73, 0x73, 0x74, 0x77, 0x75, 0x6d, 0x66, 0x63, 0x62, 0x5f, 0x5a, 0x59, 0x59, 0x5c, 0x66, 0x70, - 0x71, 0x6d, 0x68, 0x65, 0x66, 0x6a, 0x6d, 0x6e, 0x74, 0x7c, 0x83, 0x86, 0x85, 0x83, 0x7e, 0x75, - 0x6e, 0x6c, 0x6d, 0x6f, 0x73, 0x76, 0x78, 0x7a, 0x78, 0x76, 0x73, 0x75, 0x7e, 0x86, 0x85, 0x7e, - 0x7a, 0x78, 0x78, 0x7a, 0x78, 0x74, 0x75, 0x7e, 0x87, 0x85, 0x7b, 0x74, 0x77, 0x7d, 0x85, 0x8c, - 0x8d, 0x89, 0x80, 0x7a, 0x7b, 0x7d, 0x80, 0x7b, 0x75, 0x72, 0x74, 0x77, 0x7b, 0x79, 0x73, 0x6d, - 0x6a, 0x6a, 0x6c, 0x6c, 0x6f, 0x76, 0x7d, 0x84, 0x85, 0x83, 0x84, 0x88, 0x8c, 0x8b, 0x88, 0x8a, - 0x8f, 0x92, 0x91, 0x8e, 0x8d, 0x8c, 0x8a, 0x8a, 0x8c, 0x86, 0x7d, 0x78, 0x76, 0x79, 0x7e, 0x82, - 0x80, 0x76, 0x6b, 0x68, 0x6a, 0x6b, 0x67, 0x62, 0x62, 0x6a, 0x73, 0x77, 0x7a, 0x81, 0x85, 0x82, - 0x7c, 0x7a, 0x7a, 0x80, 0x83, 0x82, 0x81, 0x87, 0x92, 0x9e, 0xa3, 0xa1, 0x9c, 0x9b, 0x9b, 0x9a, - 0x9a, 0x99, 0x95, 0x94, 0x95, 0x96, 0x93, 0x93, 0x93, 0x8a, 0x7d, 0x71, 0x71, 0x75, 0x77, 0x7a, - 0x7a, 0x79, 0x77, 0x77, 0x76, 0x78, 0x7d, 0x7e, 0x7d, 0x80, 0x83, 0x85, 0x87, 0x8c, 0x8b, 0x85, - 0x80, 0x83, 0x8a, 0x8d, 0x8c, 0x87, 0x84, 0x88, 0x8c, 0x90, 0x94, 0x93, 0x8f, 0x8e, 0x93, 0x96, - 0x95, 0x8f, 0x85, 0x77, 0x72, 0x74, 0x75, 0x72, 0x6c, 0x64, 0x5b, 0x54, 0x51, 0x52, 0x59, 0x61, - 0x65, 0x6a, 0x6f, 0x73, 0x78, 0x7e, 0x85, 0x85, 0x84, 0x87, 0x8e, 0x95, 0x98, 0x95, 0x93, 0x8f, - 0x8a, 0x89, 0x88, 0x89, 0x8a, 0x84, 0x7c, 0x79, 0x7b, 0x82, 0x86, 0x80, 0x72, 0x6b, 0x6e, 0x70, - 0x73, 0x71, 0x6b, 0x67, 0x67, 0x69, 0x6b, 0x71, 0x74, 0x6e, 0x63, 0x5c, 0x61, 0x6d, 0x75, 0x7a, - 0x7e, 0x80, 0x85, 0x8e, 0x95, 0x97, 0x94, 0x8f, 0x8e, 0x94, 0x9b, 0x9c, 0x99, 0x96, 0x96, 0x96, - 0x94, 0x92, 0x91, 0x90, 0x8b, 0x82, 0x7a, 0x78, 0x78, 0x7a, 0x7d, 0x80, 0x7d, 0x7c, 0x7e, 0x84, - 0x8b, 0x8c, 0x86, 0x7a, 0x74, 0x78, 0x81, 0x85, 0x83, 0x7a, 0x6e, 0x6a, 0x6f, 0x79, 0x86, 0x87, - 0x82, 0x82, 0x86, 0x8a, 0x8c, 0x89, 0x80, 0x7a, 0x78, 0x78, 0x7a, 0x7d, 0x82, 0x82, 0x80, 0x80, - 0x80, 0x7d, 0x79, 0x74, 0x71, 0x6d, 0x6b, 0x69, 0x66, 0x69, 0x6e, 0x70, 0x72, 0x77, 0x7d, 0x87, - 0x91, 0x94, 0x8d, 0x86, 0x84, 0x85, 0x8b, 0x8f, 0x8e, 0x86, 0x79, 0x78, 0x7e, 0x87, 0x8c, 0x88, - 0x84, 0x7e, 0x7c, 0x80, 0x84, 0x88, 0x85, 0x79, 0x74, 0x78, 0x7c, 0x7e, 0x7e, 0x7a, 0x75, 0x76, - 0x77, 0x79, 0x7a, 0x75, 0x70, 0x6c, 0x6c, 0x71, 0x77, 0x7b, 0x80, 0x81, 0x7e, 0x83, 0x89, 0x8d, - 0x8c, 0x87, 0x82, 0x7a, 0x74, 0x70, 0x6b, 0x6b, 0x70, 0x72, 0x6f, 0x6a, 0x67, 0x6f, 0x7e, 0x86, - 0x82, 0x79, 0x77, 0x7d, 0x86, 0x8d, 0x8b, 0x83, 0x7d, 0x7e, 0x89, 0x90, 0x8f, 0x86, 0x7a, 0x74, - 0x74, 0x79, 0x7e, 0x7c, 0x70, 0x68, 0x69, 0x74, 0x7b, 0x7c, 0x7b, 0x78, 0x77, 0x7c, 0x80, 0x80, - 0x7d, 0x7e, 0x83, 0x88, 0x8a, 0x87, 0x86, 0x85, 0x87, 0x85, 0x7d, 0x74, 0x6c, 0x6c, 0x71, 0x73, - 0x74, 0x72, 0x71, 0x74, 0x7b, 0x86, 0x88, 0x83, 0x80, 0x86, 0x91, 0x9d, 0xa4, 0x9e, 0x91, 0x8c, - 0x93, 0x9d, 0xa3, 0xa1, 0x99, 0x94, 0x90, 0x90, 0x93, 0x94, 0x94, 0x93, 0x8f, 0x8e, 0x92, 0x99, - 0x9b, 0x97, 0x8e, 0x8a, 0x88, 0x85, 0x84, 0x82, 0x7d, 0x7c, 0x7b, 0x77, 0x75, 0x77, 0x7c, 0x84, - 0x8c, 0x93, 0x98, 0x9d, 0xa2, 0xa8, 0xa2, 0x98, 0x93, 0x96, 0x9b, 0x9d, 0x99, 0x93, 0x89, 0x7e, - 0x73, 0x71, 0x77, 0x7a, 0x76, 0x71, 0x6e, 0x6e, 0x73, 0x73, 0x6e, 0x65, 0x5e, 0x60, 0x69, 0x74, - 0x78, 0x75, 0x72, 0x70, 0x74, 0x78, 0x78, 0x77, 0x73, 0x71, 0x6e, 0x6c, 0x70, 0x74, 0x72, 0x6e, - 0x6c, 0x6f, 0x75, 0x78, 0x7b, 0x81, 0x82, 0x80, 0x76, 0x6f, 0x70, 0x76, 0x7c, 0x7c, 0x79, 0x77, - 0x77, 0x78, 0x7d, 0x7e, 0x7a, 0x76, 0x75, 0x77, 0x75, 0x6d, 0x67, 0x65, 0x65, 0x67, 0x6c, 0x70, - 0x6f, 0x6c, 0x69, 0x69, 0x6e, 0x78, 0x80, 0x7b, 0x73, 0x72, 0x76, 0x79, 0x7c, 0x80, 0x84, 0x84, - 0x83, 0x81, 0x7e, 0x84, 0x8b, 0x8c, 0x86, 0x79, 0x6f, 0x6d, 0x70, 0x73, 0x72, 0x6c, 0x67, 0x69, - 0x6b, 0x6c, 0x6a, 0x69, 0x6a, 0x6a, 0x6d, 0x6e, 0x6d, 0x6b, 0x69, 0x6f, 0x7a, 0x82, 0x8a, 0x92, - 0x92, 0x8f, 0x94, 0x9a, 0x9a, 0x98, 0x92, 0x8a, 0x83, 0x7d, 0x78, 0x76, 0x76, 0x76, 0x78, 0x74, - 0x71, 0x77, 0x82, 0x88, 0x8d, 0x8e, 0x88, 0x84, 0x86, 0x8c, 0x93, 0x99, 0x9c, 0x98, 0x94, 0x92, - 0x93, 0x93, 0x92, 0x8f, 0x8c, 0x8e, 0x95, 0x98, 0x99, 0x93, 0x8d, 0x92, 0x9c, 0xa1, 0xa0, 0xa1, - 0xa1, 0x9e, 0x9b, 0x9b, 0x9f, 0xa1, 0x9e, 0x98, 0x94, 0x92, 0x95, 0x95, 0x8f, 0x8b, 0x84, 0x79, - 0x76, 0x77, 0x7b, 0x7d, 0x7e, 0x83, 0x84, 0x83, 0x7b, 0x74, 0x73, 0x78, 0x7b, 0x7c, 0x7e, 0x81, - 0x83, 0x83, 0x7d, 0x79, 0x7d, 0x82, 0x89, 0x92, 0x94, 0x8d, 0x80, 0x77, 0x7d, 0x86, 0x8d, 0x8f, - 0x8a, 0x86, 0x88, 0x8b, 0x8c, 0x8d, 0x88, 0x78, 0x6d, 0x69, 0x66, 0x63, 0x5f, 0x59, 0x53, 0x50, - 0x51, 0x51, 0x52, 0x54, 0x5e, 0x6f, 0x7e, 0x81, 0x7b, 0x75, 0x72, 0x77, 0x82, 0x8a, 0x8c, 0x8f, - 0x95, 0x94, 0x8b, 0x82, 0x80, 0x81, 0x83, 0x8a, 0x8c, 0x82, 0x74, 0x6d, 0x6e, 0x74, 0x77, 0x78, - 0x72, 0x6c, 0x6f, 0x76, 0x7d, 0x82, 0x7e, 0x76, 0x72, 0x73, 0x74, 0x78, 0x78, 0x76, 0x75, 0x74, - 0x72, 0x71, 0x73, 0x76, 0x78, 0x7d, 0x86, 0x86, 0x7c, 0x71, 0x6b, 0x67, 0x68, 0x6f, 0x73, 0x77, - 0x79, 0x79, 0x77, 0x73, 0x7b, 0x86, 0x8a, 0x90, 0x94, 0x95, 0x92, 0x8b, 0x87, 0x86, 0x81, 0x7a, - 0x75, 0x74, 0x75, 0x79, 0x7b, 0x80, 0x7e, 0x75, 0x69, 0x62, 0x61, 0x65, 0x68, 0x68, 0x6a, 0x6c, - 0x74, 0x84, 0x8c, 0x8a, 0x86, 0x88, 0x8d, 0x8f, 0x8e, 0x89, 0x81, 0x7a, 0x7a, 0x80, 0x8a, 0x91, - 0x93, 0x94, 0x90, 0x8b, 0x89, 0x87, 0x84, 0x83, 0x82, 0x7e, 0x82, 0x87, 0x8d, 0x97, 0xa0, 0xa2, - 0xa0, 0x9b, 0x95, 0x97, 0x9a, 0x9e, 0x9f, 0x98, 0x94, 0x91, 0x8c, 0x89, 0x81, 0x76, 0x6f, 0x6b, - 0x6a, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x63, 0x62, 0x58, 0x5a, 0x59, 0x59, 0x61, 0x6c, 0x71, 0x75, - 0x7a, 0x78, 0x71, 0x6b, 0x6c, 0x74, 0x7c, 0x82, 0x84, 0x85, 0x86, 0x88, 0x91, 0x9f, 0xa5, 0xa5, - 0xa7, 0xa8, 0xa7, 0xa7, 0xa7, 0xa3, 0x98, 0x8a, 0x82, 0x82, 0x89, 0x8f, 0x8e, 0x8b, 0x89, 0x83, - 0x78, 0x6e, 0x64, 0x68, 0x70, 0x7b, 0x83, 0x84, 0x84, 0x80, 0x79, 0x74, 0x78, 0x7d, 0x81, 0x87, - 0x89, 0x85, 0x7d, 0x74, 0x6c, 0x6c, 0x78, 0x80, 0x7a, 0x78, 0x7b, 0x80, 0x84, 0x89, 0x83, 0x74, - 0x68, 0x65, 0x6a, 0x73, 0x7d, 0x7e, 0x7c, 0x87, 0x8c, 0x8c, 0x86, 0x82, 0x7d, 0x7d, 0x87, 0x83, - 0x7d, 0x7b, 0x6e, 0x5a, 0x4f, 0x58, 0x63, 0x6e, 0x7e, 0x83, 0x87, 0x8b, 0x90, 0x99, 0xa2, 0xad, - 0xb5, 0xb3, 0xac, 0xa5, 0x9a, 0x8d, 0x97, 0xa6, 0xa7, 0x9e, 0x97, 0x96, 0x97, 0x96, 0x8f, 0x89, - 0x83, 0x77, 0x6f, 0x6f, 0x72, 0x76, 0x83, 0x7b, 0x77, 0x82, 0x81, 0x77, 0x6b, 0x62, 0x65, 0x6e, - 0x74, 0x73, 0x68, 0x5f, 0x61, 0x68, 0x7c, 0x8c, 0x92, 0x86, 0x85, 0x89, 0x88, 0x89, 0x8d, 0x8d, - 0x88, 0x81, 0x76, 0x73, 0x7b, 0x83, 0x81, 0x7b, 0x83, 0x87, 0x88, 0x86, 0x85, 0x87, 0x86, 0x7d, - 0x73, 0x6a, 0x6e, 0x80, 0x81, 0x7a, 0x86, 0x86, 0x84, 0x86, 0x85, 0x7d, 0x75, 0x70, 0x6c, 0x69, - 0x69, 0x70, 0x7a, 0x7a, 0x77, 0x78, 0x77, 0x77, 0x7b, 0x71, 0x66, 0x57, 0x55, 0x72, 0x81, 0x7e, - 0x7d, 0x80, 0x89, 0x8b, 0x73, 0x68, 0x6a, 0x67, 0x69, 0x6a, 0x65, 0x5b, 0x5c, 0x5e, 0x55, 0x4f, - 0x53, 0x5a, 0x62, 0x66, 0x69, 0x6a, 0x67, 0x6c, 0x78, 0x83, 0x94, 0x9a, 0x95, 0x8d, 0x86, 0x83, - 0x89, 0x99, 0xa2, 0x90, 0x7d, 0x83, 0x8b, 0x89, 0x7d, 0x71, 0x68, 0x5f, 0x5b, 0x5d, 0x65, 0x7b, - 0x89, 0x93, 0x94, 0x88, 0x80, 0x71, 0x67, 0x6c, 0x76, 0x7e, 0x82, 0x82, 0x80, 0x7a, 0x7e, 0x8a, - 0x99, 0xaa, 0xab, 0xa1, 0xa4, 0xa6, 0xa5, 0x9f, 0x9a, 0x96, 0x94, 0x8c, 0x86, 0x8b, 0x89, 0x8a, - 0x8b, 0x84, 0x77, 0x6e, 0x6d, 0x69, 0x76, 0x90, 0x92, 0x8b, 0x83, 0x8b, 0xa2, 0xa3, 0x9f, 0xa5, - 0xab, 0xa9, 0x91, 0x8b, 0x87, 0x7e, 0x74, 0x6f, 0x72, 0x79, 0x85, 0x94, 0xa1, 0xa6, 0xa6, 0xa9, - 0xa5, 0x9c, 0x99, 0x98, 0x94, 0x9d, 0xb6, 0xb1, 0x9f, 0x97, 0x91, 0x8e, 0x8b, 0x95, 0x9a, 0x92, - 0x83, 0x69, 0x57, 0x61, 0x75, 0x77, 0x6e, 0x65, 0x57, 0x54, 0x5f, 0x5c, 0x5d, 0x69, 0x62, 0x5b, - 0x65, 0x6a, 0x78, 0x8c, 0x92, 0x99, 0x8e, 0x83, 0x85, 0x8a, 0x91, 0x9a, 0xa5, 0xa4, 0x92, 0x86, - 0x82, 0x76, 0x78, 0x78, 0x70, 0x65, 0x64, 0x6c, 0x6d, 0x62, 0x5d, 0x6a, 0x6e, 0x77, 0x7b, 0x6d, - 0x60, 0x58, 0x56, 0x5e, 0x6e, 0x6b, 0x67, 0x6d, 0x6e, 0x72, 0x73, 0x80, 0x88, 0x74, 0x69, 0x7b, - 0x88, 0x92, 0x97, 0x90, 0x90, 0x8a, 0x7c, 0x6b, 0x64, 0x71, 0x77, 0x76, 0x6f, 0x63, 0x61, 0x62, - 0x6d, 0x7e, 0x83, 0x7b, 0x7b, 0x75, 0x82, 0x9a, 0x9e, 0x93, 0x92, 0x90, 0x76, 0x6d, 0x78, 0x70, - 0x66, 0x6b, 0x64, 0x5a, 0x5f, 0x65, 0x6a, 0x73, 0x7b, 0x87, 0x88, 0x78, 0x65, 0x52, 0x60, 0x7b, - 0x8d, 0xa3, 0x9d, 0x8b, 0x83, 0x82, 0x8c, 0x89, 0x83, 0x8a, 0x85, 0x73, 0x6a, 0x6a, 0x61, 0x77, - 0x8d, 0x83, 0x75, 0x6e, 0x69, 0x5d, 0x5c, 0x70, 0x7b, 0x76, 0x6c, 0x63, 0x5d, 0x67, 0x7d, 0x8e, - 0xa3, 0xa7, 0xa3, 0xa4, 0xa6, 0xa6, 0xad, 0xac, 0x9a, 0x8a, 0x7e, 0x6b, 0x53, 0x44, 0x4a, 0x57, - 0x5d, 0x69, 0x75, 0x7e, 0x80, 0x73, 0x65, 0x77, 0x8a, 0x84, 0x76, 0x78, 0x8c, 0x9a, 0xa2, 0xa7, - 0xae, 0xb9, 0xbd, 0xbe, 0xc6, 0xd1, 0xcb, 0xb6, 0xa5, 0xa2, 0xa7, 0xab, 0xaa, 0xaa, 0xa7, 0x98, - 0x8e, 0x92, 0x8f, 0x92, 0x8d, 0x83, 0x7b, 0x6f, 0x5d, 0x4f, 0x56, 0x6c, 0x7e, 0x82, 0x83, 0x82, - 0x8f, 0xaf, 0xba, 0xc4, 0xc8, 0xad, 0x87, 0x61, 0x47, 0x4a, 0x62, 0x66, 0x63, 0x71, 0x7a, 0x70, - 0x6c, 0x71, 0x76, 0x85, 0x95, 0x96, 0x84, 0x74, 0x6e, 0x6d, 0x73, 0x89, 0x9e, 0x9f, 0x8b, 0x7b, - 0x78, 0x83, 0x87, 0x85, 0x76, 0x63, 0x52, 0x4b, 0x3e, 0x40, 0x53, 0x5a, 0x61, 0x60, 0x56, 0x50, - 0x4e, 0x60, 0x74, 0x81, 0x82, 0x6d, 0x65, 0x66, 0x62, 0x65, 0x7d, 0x9f, 0xa6, 0xa8, 0xb4, 0xc0, - 0xc2, 0xc2, 0xaa, 0x8f, 0x8b, 0x86, 0x77, 0x6a, 0x65, 0x62, 0x62, 0x6b, 0x6e, 0x72, 0x76, 0x7a, - 0x75, 0x71, 0x7c, 0x75, 0x63, 0x5a, 0x5a, 0x5e, 0x63, 0x69, 0x7a, 0x78, 0x67, 0x74, 0x8a, 0x99, - 0x93, 0x91, 0x98, 0x9b, 0x99, 0x95, 0x8b, 0x8d, 0x8f, 0x83, 0x7c, 0x6f, 0x77, 0x8c, 0x93, 0x8c, - 0x83, 0x76, 0x61, 0x4c, 0x4e, 0x60, 0x7b, 0x97, 0xa1, 0x98, 0x91, 0x9e, 0xa9, 0xb5, 0xbf, 0xb2, - 0x8f, 0x73, 0x6c, 0x6f, 0x64, 0x5d, 0x69, 0x75, 0x7a, 0x77, 0x70, 0x76, 0x79, 0x81, 0x84, 0x82, - 0x81, 0x77, 0x87, 0x9a, 0xa0, 0xae, 0xc4, 0xc0, 0xa5, 0x90, 0x85, 0x82, 0x80, 0x89, 0x8d, 0x79, - 0x64, 0x52, 0x4f, 0x4e, 0x5b, 0x61, 0x59, 0x55, 0x4b, 0x3e, 0x45, 0x4f, 0x51, 0x52, 0x50, 0x46, - 0x42, 0x48, 0x52, 0x6d, 0x8e, 0xa3, 0xad, 0xa0, 0x95, 0x98, 0x98, 0x9e, 0x9c, 0x8c, 0x7c, 0x6f, - 0x68, 0x67, 0x63, 0x74, 0x7e, 0x7b, 0x78, 0x70, 0x66, 0x61, 0x5a, 0x50, 0x47, 0x41, 0x3b, 0x47, - 0x55, 0x64, 0x76, 0x94, 0xaa, 0xad, 0xa7, 0xa2, 0xa2, 0xaf, 0xc2, 0xc2, 0xb9, 0xb8, 0xb9, 0xbb, - 0xba, 0xb7, 0xb3, 0xb7, 0xaf, 0x96, 0x8a, 0x86, 0x88, 0x88, 0x7a, 0x71, 0x6c, 0x68, 0x75, 0x88, - 0x9b, 0xb0, 0xc0, 0xc4, 0xc1, 0xb0, 0xa8, 0x9f, 0x8f, 0x86, 0x71, 0x59, 0x51, 0x53, 0x56, 0x53, - 0x66, 0x7e, 0x87, 0x7a, 0x77, 0x84, 0x94, 0xa1, 0x9d, 0x90, 0x86, 0x71, 0x6e, 0x79, 0x86, 0x97, - 0xaa, 0xb1, 0xad, 0xa2, 0x9b, 0x9b, 0x8f, 0x90, 0x91, 0x73, 0x67, 0x60, 0x61, 0x66, 0x62, 0x68, - 0x72, 0x71, 0x5b, 0x4e, 0x55, 0x5b, 0x5b, 0x54, 0x4c, 0x3c, 0x2f, 0x32, 0x43, 0x5b, 0x79, 0x98, - 0xac, 0xb1, 0xa9, 0xb0, 0xb6, 0xac, 0xac, 0xaa, 0x98, 0x81, 0x81, 0x8c, 0x95, 0x99, 0x9e, 0xa9, - 0x9f, 0x84, 0x7a, 0x77, 0x7a, 0x7d, 0x7c, 0x70, 0x5d, 0x54, 0x57, 0x65, 0x7a, 0x94, 0xa3, 0xab, - 0xa8, 0xa9, 0xbb, 0xb7, 0xad, 0xa1, 0x8c, 0x7e, 0x75, 0x7c, 0x80, 0x81, 0x82, 0x88, 0x8d, 0x7d, - 0x69, 0x6a, 0x6c, 0x6c, 0x67, 0x61, 0x53, 0x4c, 0x54, 0x57, 0x5f, 0x76, 0x8a, 0x9c, 0xa9, 0xa1, - 0xa1, 0x9e, 0x85, 0x75, 0x61, 0x41, 0x38, 0x45, 0x4c, 0x4e, 0x57, 0x63, 0x69, 0x61, 0x4e, 0x47, - 0x53, 0x5e, 0x67, 0x64, 0x5a, 0x4c, 0x47, 0x4a, 0x4f, 0x5b, 0x6c, 0x78, 0x83, 0x83, 0x82, 0x88, - 0x85, 0x84, 0x87, 0x75, 0x52, 0x5a, 0x73, 0x7e, 0x85, 0x88, 0x90, 0x89, 0x70, 0x5a, 0x5e, 0x6d, - 0x76, 0x72, 0x66, 0x59, 0x50, 0x52, 0x58, 0x6a, 0x84, 0x9a, 0xb3, 0xbf, 0xbc, 0xc0, 0xbb, 0xb6, - 0xb3, 0xaa, 0x9b, 0x82, 0x7e, 0x92, 0x96, 0x92, 0x9c, 0xb0, 0xb2, 0x9b, 0x84, 0x86, 0x8e, 0x94, - 0x8b, 0x82, 0x81, 0x7c, 0x71, 0x71, 0x84, 0x8f, 0x98, 0xa2, 0x9f, 0xa0, 0xa0, 0x9f, 0xa0, 0xa0, - 0x9b, 0x8e, 0x81, 0x78, 0x8e, 0x99, 0x9c, 0xaa, 0xb5, 0xb3, 0xa0, 0x90, 0x8e, 0x8e, 0x88, 0x72, - 0x65, 0x5f, 0x61, 0x6a, 0x71, 0x7e, 0x89, 0x90, 0x96, 0x9e, 0xa0, 0x9b, 0x91, 0x82, 0x71, 0x65, - 0x58, 0x54, 0x56, 0x6a, 0x79, 0x81, 0x92, 0x97, 0x8d, 0x78, 0x6e, 0x6f, 0x76, 0x72, 0x6e, 0x75, - 0x78, 0x7c, 0x83, 0x80, 0x81, 0x89, 0x8d, 0x8d, 0x90, 0x90, 0x94, 0x97, 0x93, 0x89, 0x7d, 0x72, - 0x6d, 0x68, 0x79, 0x8a, 0x94, 0x9a, 0x91, 0x7a, 0x63, 0x60, 0x69, 0x6b, 0x61, 0x5c, 0x5a, 0x59, - 0x5d, 0x65, 0x71, 0x83, 0x97, 0x9e, 0xa3, 0xa7, 0xa3, 0xa2, 0x9a, 0x86, 0x76, 0x6a, 0x63, 0x61, - 0x6a, 0x77, 0x83, 0x88, 0x87, 0x81, 0x74, 0x6b, 0x6c, 0x6f, 0x6e, 0x67, 0x66, 0x63, 0x61, 0x61, - 0x65, 0x6a, 0x76, 0x85, 0x8d, 0x91, 0x91, 0x92, 0x93, 0x8c, 0x84, 0x81, 0x7c, 0x77, 0x71, 0x77, - 0x83, 0x91, 0x97, 0x94, 0x8b, 0x82, 0x7c, 0x82, 0x87, 0x86, 0x7d, 0x71, 0x6c, 0x6f, 0x79, 0x8c, - 0x9a, 0xa0, 0x9b, 0x8e, 0x82, 0x79, 0x76, 0x76, 0x6e, 0x5e, 0x55, 0x52, 0x53, 0x56, 0x60, 0x6c, - 0x75, 0x74, 0x6b, 0x66, 0x69, 0x70, 0x79, 0x7c, 0x79, 0x73, 0x6a, 0x67, 0x67, 0x6f, 0x7b, 0x85, - 0x88, 0x87, 0x85, 0x89, 0x8e, 0x91, 0x95, 0x96, 0x8f, 0x86, 0x81, 0x7e, 0x79, 0x7b, 0x82, 0x86, - 0x85, 0x77, 0x67, 0x5e, 0x5a, 0x5b, 0x5b, 0x5c, 0x59, 0x55, 0x57, 0x5e, 0x6e, 0x80, 0x8d, 0x94, - 0x93, 0x92, 0x97, 0x9f, 0xa7, 0xae, 0xad, 0xa6, 0xa5, 0xab, 0xaf, 0xb5, 0xbb, 0xbf, 0xba, 0xad, - 0xa1, 0x97, 0x8f, 0x8e, 0x8f, 0x8a, 0x81, 0x74, 0x6b, 0x64, 0x61, 0x65, 0x68, 0x61, 0x56, 0x4d, - 0x51, 0x56, 0x5b, 0x5f, 0x5c, 0x5a, 0x5c, 0x68, 0x77, 0x82, 0x93, 0xa3, 0xaa, 0xa7, 0x9b, 0x92, - 0x8a, 0x87, 0x89, 0x8b, 0x8b, 0x86, 0x80, 0x7d, 0x82, 0x8e, 0x9c, 0xa1, 0x9b, 0x8d, 0x7e, 0x7a, - 0x7c, 0x80, 0x7c, 0x70, 0x68, 0x62, 0x64, 0x66, 0x6f, 0x81, 0x89, 0x88, 0x81, 0x73, 0x6a, 0x6b, - 0x73, 0x7b, 0x80, 0x7e, 0x74, 0x6a, 0x69, 0x70, 0x80, 0x91, 0x96, 0x93, 0x8a, 0x85, 0x86, 0x91, - 0x9c, 0x99, 0x93, 0x91, 0x92, 0x96, 0x9c, 0xa5, 0xb0, 0xb5, 0xad, 0x9b, 0x84, 0x72, 0x66, 0x5f, - 0x60, 0x62, 0x5f, 0x57, 0x58, 0x5e, 0x66, 0x75, 0x82, 0x88, 0x84, 0x7d, 0x82, 0x8b, 0x94, 0x96, - 0x93, 0x8f, 0x8c, 0x8b, 0x8a, 0x89, 0x8d, 0x94, 0x9a, 0x97, 0x8d, 0x88, 0x87, 0x83, 0x82, 0x86, - 0x8a, 0x83, 0x79, 0x78, 0x7b, 0x88, 0x95, 0x98, 0x91, 0x87, 0x88, 0x92, 0x99, 0x9c, 0x94, 0x89, - 0x81, 0x7d, 0x81, 0x84, 0x8a, 0x94, 0x97, 0x90, 0x86, 0x7b, 0x79, 0x7a, 0x7b, 0x80, 0x80, 0x77, - 0x6c, 0x66, 0x64, 0x6e, 0x7d, 0x82, 0x78, 0x65, 0x56, 0x56, 0x5e, 0x63, 0x63, 0x5a, 0x4f, 0x48, - 0x49, 0x4f, 0x58, 0x6a, 0x82, 0x8f, 0x88, 0x77, 0x70, 0x6c, 0x6f, 0x77, 0x7e, 0x80, 0x73, 0x67, - 0x5e, 0x5c, 0x67, 0x76, 0x7d, 0x77, 0x69, 0x60, 0x64, 0x6d, 0x75, 0x7b, 0x79, 0x76, 0x75, 0x74, - 0x73, 0x74, 0x7b, 0x83, 0x80, 0x6c, 0x55, 0x4a, 0x45, 0x4c, 0x58, 0x65, 0x6c, 0x6c, 0x69, 0x66, - 0x69, 0x79, 0x89, 0x8f, 0x8d, 0x8d, 0x97, 0xa0, 0xa5, 0xa8, 0xa4, 0x9a, 0x95, 0x9a, 0xa0, 0x9f, - 0xa3, 0xab, 0xb3, 0xb1, 0xa7, 0x9b, 0x93, 0x8a, 0x87, 0x84, 0x7c, 0x70, 0x67, 0x62, 0x61, 0x65, - 0x6b, 0x6c, 0x62, 0x56, 0x54, 0x58, 0x5e, 0x64, 0x68, 0x6f, 0x78, 0x86, 0x97, 0xa0, 0xa9, 0xb6, - 0xbe, 0xbd, 0xad, 0x9c, 0x94, 0x97, 0xa0, 0xad, 0xb0, 0xa7, 0x9c, 0x94, 0x92, 0x99, 0xa5, 0xac, - 0xa4, 0x92, 0x82, 0x81, 0x83, 0x83, 0x82, 0x78, 0x6a, 0x63, 0x67, 0x6a, 0x6a, 0x75, 0x86, 0x8e, - 0x8a, 0x7c, 0x75, 0x76, 0x7a, 0x82, 0x88, 0x87, 0x7e, 0x79, 0x7c, 0x84, 0x90, 0x9e, 0xa4, 0xa0, - 0x99, 0x94, 0x8e, 0x87, 0x89, 0x92, 0x99, 0x97, 0x95, 0x97, 0x91, 0x8e, 0x96, 0x9e, 0x9d, 0x91, - 0x7e, 0x70, 0x64, 0x62, 0x6b, 0x71, 0x6c, 0x63, 0x61, 0x63, 0x67, 0x74, 0x80, 0x83, 0x7b, 0x75, - 0x72, 0x70, 0x70, 0x74, 0x74, 0x6e, 0x66, 0x66, 0x69, 0x69, 0x6f, 0x7e, 0x88, 0x87, 0x83, 0x82, - 0x7e, 0x78, 0x78, 0x79, 0x7a, 0x77, 0x7a, 0x81, 0x7d, 0x7e, 0x88, 0x8c, 0x87, 0x84, 0x88, 0x8e, - 0x92, 0x97, 0x97, 0x90, 0x89, 0x88, 0x8a, 0x83, 0x7c, 0x86, 0x94, 0x96, 0x8b, 0x7e, 0x79, 0x78, - 0x75, 0x75, 0x71, 0x68, 0x5c, 0x57, 0x5c, 0x61, 0x69, 0x70, 0x6d, 0x68, 0x66, 0x67, 0x64, 0x63, - 0x65, 0x5e, 0x4f, 0x45, 0x42, 0x47, 0x4f, 0x5a, 0x65, 0x6b, 0x66, 0x59, 0x54, 0x57, 0x63, 0x72, - 0x7c, 0x7d, 0x7a, 0x78, 0x7c, 0x88, 0x97, 0xa2, 0xa0, 0x9a, 0x98, 0x96, 0x94, 0x95, 0x9a, 0xa2, - 0xa5, 0x9d, 0x96, 0x96, 0x94, 0x96, 0x99, 0x98, 0x8e, 0x79, 0x63, 0x5e, 0x63, 0x6d, 0x76, 0x76, - 0x72, 0x6d, 0x6a, 0x66, 0x65, 0x6f, 0x80, 0x8c, 0x91, 0x92, 0x93, 0x91, 0x8d, 0x8b, 0x8a, 0x8b, - 0x8c, 0x88, 0x87, 0x86, 0x88, 0x90, 0x96, 0x94, 0x86, 0x7b, 0x7e, 0x84, 0x8d, 0x95, 0x98, 0x98, - 0x91, 0x8b, 0x86, 0x88, 0x94, 0x9a, 0x91, 0x7c, 0x6b, 0x64, 0x64, 0x6b, 0x70, 0x70, 0x6e, 0x6d, - 0x76, 0x85, 0x90, 0x98, 0x97, 0x8f, 0x84, 0x7c, 0x82, 0x8c, 0x92, 0x95, 0x94, 0x8f, 0x89, 0x89, - 0x91, 0x94, 0x97, 0x96, 0x8e, 0x87, 0x84, 0x88, 0x83, 0x74, 0x6d, 0x6a, 0x65, 0x60, 0x65, 0x6e, - 0x6f, 0x6d, 0x6e, 0x72, 0x78, 0x71, 0x63, 0x59, 0x5a, 0x62, 0x6b, 0x74, 0x75, 0x70, 0x6c, 0x71, - 0x7d, 0x8e, 0x99, 0x93, 0x80, 0x6e, 0x71, 0x7e, 0x8f, 0x9f, 0xa2, 0x96, 0x8a, 0x91, 0xa1, 0xb5, - 0xc6, 0xca, 0xbb, 0xa3, 0x84, 0x71, 0x73, 0x80, 0x87, 0x7b, 0x70, 0x6f, 0x74, 0x87, 0x96, 0xa0, - 0xa1, 0x9c, 0x95, 0x8e, 0x91, 0x98, 0x99, 0x94, 0x8e, 0x86, 0x7d, 0x7b, 0x83, 0x86, 0x82, 0x85, - 0x88, 0x87, 0x7e, 0x6a, 0x5a, 0x5a, 0x6b, 0x7e, 0x8e, 0x94, 0x8c, 0x81, 0x7c, 0x7e, 0x89, 0x94, - 0x95, 0x88, 0x72, 0x68, 0x69, 0x6f, 0x75, 0x71, 0x61, 0x4b, 0x47, 0x55, 0x6a, 0x83, 0x93, 0x94, - 0x89, 0x79, 0x6f, 0x71, 0x81, 0x90, 0x90, 0x84, 0x70, 0x62, 0x67, 0x71, 0x75, 0x75, 0x71, 0x6c, - 0x62, 0x64, 0x6f, 0x71, 0x6c, 0x62, 0x53, 0x4a, 0x54, 0x66, 0x72, 0x75, 0x7d, 0x89, 0x8b, 0x85, - 0x79, 0x6f, 0x6b, 0x70, 0x77, 0x7d, 0x7a, 0x6d, 0x65, 0x60, 0x60, 0x6b, 0x76, 0x7b, 0x76, 0x69, - 0x65, 0x6d, 0x79, 0x84, 0x88, 0x81, 0x73, 0x73, 0x82, 0x8d, 0x99, 0xa4, 0xa3, 0x8f, 0x73, 0x68, - 0x6b, 0x79, 0x89, 0x8a, 0x7b, 0x66, 0x5a, 0x5c, 0x67, 0x76, 0x85, 0x89, 0x88, 0x86, 0x8a, 0x96, - 0xa1, 0xa4, 0x9d, 0x95, 0x8c, 0x89, 0x93, 0x9c, 0xa0, 0x9f, 0x9d, 0x9b, 0x9a, 0x96, 0x92, 0x90, - 0x96, 0xa1, 0xa6, 0xa1, 0x93, 0x85, 0x79, 0x73, 0x78, 0x7e, 0x80, 0x75, 0x60, 0x54, 0x55, 0x5e, - 0x64, 0x63, 0x5a, 0x4e, 0x4a, 0x57, 0x69, 0x77, 0x7d, 0x80, 0x7c, 0x74, 0x77, 0x83, 0x95, 0xa9, - 0xb4, 0xad, 0x9a, 0x8d, 0x89, 0x8d, 0x97, 0x9c, 0x95, 0x89, 0x80, 0x77, 0x7e, 0x89, 0x87, 0x79, - 0x6b, 0x63, 0x64, 0x6f, 0x7a, 0x7c, 0x76, 0x75, 0x7a, 0x7a, 0x79, 0x7a, 0x76, 0x76, 0x7d, 0x86, - 0x87, 0x82, 0x7d, 0x7a, 0x7e, 0x8d, 0x9d, 0xa9, 0xab, 0xa1, 0x94, 0x91, 0x99, 0x9e, 0x9f, 0x9e, - 0x98, 0x93, 0x97, 0xa2, 0xaa, 0xb3, 0xb9, 0xb5, 0x9f, 0x8e, 0x8c, 0x92, 0x9b, 0x9d, 0x9a, 0x90, - 0x89, 0x87, 0x87, 0x8c, 0x8c, 0x80, 0x70, 0x6d, 0x6a, 0x6b, 0x74, 0x78, 0x6e, 0x63, 0x62, 0x6a, - 0x7a, 0x8d, 0x95, 0x8d, 0x83, 0x85, 0x8c, 0x94, 0x97, 0x94, 0x90, 0x8e, 0x93, 0x92, 0x8d, 0x89, - 0x7c, 0x6b, 0x67, 0x6b, 0x6b, 0x6e, 0x6d, 0x64, 0x5e, 0x5f, 0x5f, 0x5c, 0x5b, 0x5d, 0x5c, 0x5c, - 0x65, 0x6f, 0x74, 0x7a, 0x7d, 0x78, 0x70, 0x71, 0x74, 0x75, 0x71, 0x69, 0x59, 0x49, 0x49, 0x4f, - 0x58, 0x63, 0x64, 0x5b, 0x51, 0x51, 0x5c, 0x6c, 0x73, 0x66, 0x4c, 0x44, 0x52, 0x68, 0x7c, 0x89, - 0x8a, 0x81, 0x7b, 0x79, 0x7c, 0x87, 0x91, 0x8e, 0x85, 0x80, 0x7b, 0x7a, 0x81, 0x85, 0x81, 0x81, - 0x89, 0x8e, 0x92, 0x8f, 0x8b, 0x85, 0x7d, 0x7b, 0x7b, 0x7e, 0x84, 0x86, 0x88, 0x8d, 0x96, 0xa0, - 0xa8, 0xa5, 0x95, 0x7d, 0x75, 0x7a, 0x85, 0x94, 0x98, 0x8e, 0x7e, 0x76, 0x75, 0x7e, 0x8c, 0x92, - 0x86, 0x75, 0x6f, 0x6f, 0x71, 0x77, 0x79, 0x71, 0x6a, 0x6c, 0x73, 0x83, 0x8c, 0x8d, 0x86, 0x87, - 0x92, 0x9e, 0xab, 0xb4, 0xb5, 0xae, 0xa4, 0x99, 0x96, 0x98, 0x8e, 0x73, 0x5d, 0x56, 0x5b, 0x65, - 0x6c, 0x70, 0x6f, 0x65, 0x5e, 0x5d, 0x62, 0x6a, 0x6a, 0x5f, 0x5a, 0x5f, 0x69, 0x7b, 0x91, 0x9f, - 0x9f, 0x9c, 0x9e, 0xa4, 0xa9, 0xa3, 0x96, 0x8d, 0x89, 0x86, 0x84, 0x8d, 0x94, 0x90, 0x84, 0x7b, - 0x7e, 0x83, 0x86, 0x84, 0x74, 0x66, 0x68, 0x70, 0x80, 0x8e, 0x8f, 0x86, 0x7b, 0x79, 0x83, 0x93, - 0xa1, 0x9f, 0x8d, 0x7d, 0x74, 0x74, 0x83, 0x8e, 0x8d, 0x86, 0x83, 0x84, 0x86, 0x8a, 0x8b, 0x8a, - 0x86, 0x89, 0x8d, 0x92, 0x9c, 0xa3, 0xa6, 0xa5, 0xa7, 0xa8, 0xab, 0xae, 0xab, 0x9d, 0x94, 0x97, - 0x9c, 0xa0, 0xa4, 0xa2, 0x9b, 0x90, 0x87, 0x82, 0x83, 0x81, 0x6e, 0x51, 0x3e, 0x37, 0x3a, 0x4d, - 0x5d, 0x5c, 0x51, 0x4a, 0x4d, 0x5b, 0x6b, 0x73, 0x6f, 0x68, 0x6f, 0x7a, 0x87, 0x98, 0xa2, 0x9f, - 0x91, 0x87, 0x82, 0x84, 0x7d, 0x6d, 0x5c, 0x5b, 0x64, 0x69, 0x71, 0x74, 0x6f, 0x5e, 0x52, 0x53, - 0x5b, 0x60, 0x5d, 0x5a, 0x5a, 0x61, 0x69, 0x77, 0x8d, 0x9d, 0x9c, 0x8e, 0x89, 0x88, 0x89, 0x8b, - 0x8b, 0x87, 0x88, 0x8d, 0x90, 0x99, 0xa9, 0xad, 0x9f, 0x8b, 0x80, 0x74, 0x6f, 0x6f, 0x6a, 0x5f, - 0x54, 0x4f, 0x57, 0x6d, 0x79, 0x78, 0x6d, 0x6a, 0x71, 0x7e, 0x87, 0x83, 0x72, 0x61, 0x5c, 0x60, - 0x6f, 0x84, 0x8b, 0x84, 0x7b, 0x81, 0x8a, 0x8e, 0x8a, 0x7b, 0x64, 0x56, 0x54, 0x58, 0x60, 0x66, - 0x6f, 0x74, 0x78, 0x7c, 0x79, 0x7a, 0x7b, 0x73, 0x68, 0x64, 0x64, 0x68, 0x6f, 0x72, 0x6e, 0x64, - 0x62, 0x66, 0x72, 0x82, 0x81, 0x6e, 0x5f, 0x60, 0x69, 0x7c, 0x91, 0x98, 0x92, 0x89, 0x8b, 0x9a, - 0xb2, 0xbe, 0xb7, 0xaa, 0xa9, 0xb4, 0xc0, 0xd0, 0xdd, 0xda, 0xc8, 0xb7, 0xb0, 0xaf, 0xaf, 0xa8, - 0x9b, 0x92, 0x96, 0x9b, 0x9a, 0x9c, 0x97, 0x86, 0x6f, 0x65, 0x64, 0x67, 0x68, 0x5c, 0x50, 0x51, - 0x60, 0x71, 0x84, 0x95, 0x9f, 0x9a, 0x8f, 0x90, 0x9a, 0xa2, 0x9c, 0x8d, 0x80, 0x7c, 0x80, 0x88, - 0x9b, 0xab, 0xa7, 0x96, 0x89, 0x7e, 0x79, 0x76, 0x6f, 0x5f, 0x51, 0x4e, 0x51, 0x62, 0x75, 0x7a, - 0x72, 0x69, 0x6c, 0x76, 0x82, 0x7c, 0x6d, 0x5c, 0x55, 0x5a, 0x64, 0x73, 0x7e, 0x7e, 0x74, 0x71, - 0x78, 0x82, 0x88, 0x82, 0x73, 0x6b, 0x6f, 0x79, 0x8b, 0x9f, 0xab, 0xb2, 0xb5, 0xb8, 0xbc, 0xc1, - 0xc2, 0xbb, 0xaa, 0x9e, 0x9a, 0x9b, 0xa7, 0xb3, 0xaf, 0xa1, 0x93, 0x87, 0x83, 0x89, 0x89, 0x77, - 0x5e, 0x52, 0x54, 0x5f, 0x72, 0x7a, 0x71, 0x60, 0x55, 0x55, 0x62, 0x6e, 0x6a, 0x5c, 0x50, 0x53, - 0x5c, 0x6b, 0x79, 0x7e, 0x75, 0x67, 0x5f, 0x5e, 0x68, 0x71, 0x6a, 0x59, 0x52, 0x57, 0x61, 0x6f, - 0x7c, 0x7d, 0x73, 0x6e, 0x71, 0x79, 0x82, 0x7d, 0x6b, 0x5b, 0x5d, 0x6a, 0x7e, 0x95, 0x9e, 0x9b, - 0x90, 0x89, 0x87, 0x8a, 0x88, 0x7a, 0x6c, 0x63, 0x64, 0x69, 0x75, 0x83, 0x84, 0x77, 0x67, 0x5e, - 0x5d, 0x69, 0x72, 0x6c, 0x5d, 0x54, 0x58, 0x68, 0x83, 0x9b, 0xa6, 0x9d, 0x92, 0x8e, 0x96, 0xa1, - 0x9e, 0x8c, 0x78, 0x74, 0x7d, 0x98, 0xad, 0xb0, 0xa4, 0x97, 0x92, 0x90, 0x91, 0x90, 0x82, 0x6d, - 0x68, 0x6f, 0x75, 0x7e, 0x83, 0x7b, 0x72, 0x70, 0x73, 0x7b, 0x82, 0x7e, 0x76, 0x6c, 0x6c, 0x72, - 0x80, 0x97, 0xa6, 0xa7, 0xa1, 0x98, 0x90, 0x92, 0x99, 0x97, 0x87, 0x6f, 0x64, 0x66, 0x76, 0x8b, - 0x91, 0x84, 0x73, 0x6b, 0x6c, 0x7c, 0x90, 0x99, 0x92, 0x8a, 0x8a, 0x95, 0xa9, 0xb2, 0xa7, 0x93, - 0x87, 0x84, 0x88, 0x88, 0x79, 0x61, 0x4f, 0x4e, 0x5b, 0x6c, 0x77, 0x78, 0x72, 0x70, 0x70, 0x6b, - 0x6d, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x78, 0x89, 0x91, 0x94, 0x95, 0x91, 0x8a, 0x85, 0x89, 0x89, - 0x80, 0x71, 0x69, 0x6d, 0x7a, 0x8c, 0x98, 0x9a, 0x8e, 0x82, 0x77, 0x7d, 0x8c, 0x88, 0x6e, 0x56, - 0x4d, 0x52, 0x67, 0x7d, 0x89, 0x86, 0x80, 0x7b, 0x84, 0x97, 0x9d, 0x8d, 0x72, 0x67, 0x6a, 0x76, - 0x87, 0x93, 0x97, 0x97, 0x95, 0x96, 0x9a, 0x9b, 0x8e, 0x79, 0x71, 0x79, 0x81, 0x87, 0x8f, 0x94, - 0x94, 0x92, 0x9a, 0xa4, 0xac, 0xae, 0xa8, 0x9e, 0x95, 0x8d, 0x8b, 0x95, 0xa0, 0xa3, 0x9a, 0x8d, - 0x80, 0x78, 0x7c, 0x7a, 0x65, 0x47, 0x33, 0x34, 0x48, 0x64, 0x75, 0x74, 0x67, 0x60, 0x65, 0x6f, - 0x76, 0x77, 0x6f, 0x62, 0x63, 0x70, 0x89, 0x98, 0x96, 0x89, 0x83, 0x85, 0x85, 0x89, 0x8b, 0x87, - 0x7e, 0x78, 0x79, 0x83, 0x93, 0x99, 0x98, 0x9a, 0x9d, 0x9a, 0x96, 0x92, 0x8d, 0x84, 0x76, 0x75, - 0x7e, 0x8b, 0x99, 0x9e, 0x99, 0x8d, 0x83, 0x7d, 0x81, 0x82, 0x74, 0x63, 0x58, 0x5a, 0x68, 0x7c, - 0x88, 0x86, 0x7c, 0x76, 0x73, 0x79, 0x8b, 0x8f, 0x80, 0x68, 0x58, 0x57, 0x62, 0x75, 0x82, 0x81, - 0x78, 0x76, 0x77, 0x7e, 0x87, 0x82, 0x72, 0x62, 0x60, 0x6b, 0x7c, 0x8d, 0x93, 0x8e, 0x87, 0x82, - 0x7d, 0x7c, 0x76, 0x68, 0x59, 0x53, 0x52, 0x53, 0x58, 0x5f, 0x65, 0x67, 0x6a, 0x71, 0x78, 0x7d, - 0x7c, 0x6f, 0x60, 0x5e, 0x65, 0x75, 0x8a, 0x94, 0x95, 0x8c, 0x84, 0x84, 0x87, 0x89, 0x82, 0x6f, - 0x61, 0x5d, 0x65, 0x7b, 0x8e, 0x8d, 0x7e, 0x75, 0x74, 0x7d, 0x8b, 0x8f, 0x85, 0x74, 0x72, 0x7a, - 0x84, 0x8c, 0x91, 0x93, 0x91, 0x8f, 0x8f, 0x94, 0x93, 0x8a, 0x7c, 0x6c, 0x6b, 0x70, 0x7a, 0x86, - 0x87, 0x83, 0x79, 0x74, 0x72, 0x75, 0x7c, 0x7d, 0x75, 0x6d, 0x6c, 0x6f, 0x7c, 0x87, 0x88, 0x83, - 0x83, 0x8b, 0x94, 0x9d, 0x9a, 0x90, 0x84, 0x85, 0x90, 0xa0, 0xb0, 0xb9, 0xb8, 0xaf, 0xab, 0xab, - 0xb0, 0xb3, 0xa6, 0x8c, 0x79, 0x79, 0x84, 0x9b, 0xae, 0xb1, 0xa5, 0x9c, 0x9d, 0x9f, 0xa2, 0xa2, - 0x91, 0x75, 0x61, 0x59, 0x63, 0x72, 0x78, 0x78, 0x71, 0x6b, 0x6b, 0x68, 0x63, 0x5b, 0x50, 0x4c, - 0x52, 0x59, 0x65, 0x74, 0x7d, 0x85, 0x8f, 0x9e, 0xa9, 0xad, 0xb0, 0xaf, 0xa2, 0x98, 0x97, 0x9b, - 0xab, 0xb3, 0xae, 0xa2, 0x95, 0x8e, 0x8e, 0x90, 0x8b, 0x78, 0x5c, 0x4d, 0x4d, 0x5e, 0x74, 0x7c, - 0x74, 0x67, 0x62, 0x64, 0x6e, 0x78, 0x76, 0x6a, 0x61, 0x61, 0x68, 0x75, 0x7e, 0x82, 0x7c, 0x7a, - 0x88, 0x97, 0xa2, 0xa5, 0xa1, 0x97, 0x8d, 0x8d, 0x92, 0x95, 0x8f, 0x87, 0x7e, 0x79, 0x7b, 0x80, - 0x83, 0x80, 0x72, 0x64, 0x5f, 0x5f, 0x65, 0x6e, 0x6e, 0x67, 0x60, 0x5c, 0x5d, 0x64, 0x68, 0x66, - 0x5f, 0x53, 0x49, 0x45, 0x4c, 0x5a, 0x65, 0x65, 0x62, 0x67, 0x72, 0x79, 0x71, 0x5f, 0x4b, 0x43, - 0x48, 0x5e, 0x7a, 0x87, 0x85, 0x7b, 0x7e, 0x8b, 0x9b, 0xa2, 0x95, 0x7b, 0x6c, 0x6e, 0x7c, 0x92, - 0x9e, 0x9e, 0x94, 0x88, 0x85, 0x83, 0x7e, 0x77, 0x6a, 0x5a, 0x53, 0x4e, 0x4b, 0x59, 0x6a, 0x74, - 0x7d, 0x87, 0x8d, 0x8b, 0x87, 0x83, 0x7e, 0x7c, 0x80, 0x84, 0x8d, 0x9d, 0xa3, 0x9c, 0x90, 0x8d, - 0x93, 0x9c, 0x9f, 0x94, 0x80, 0x71, 0x74, 0x80, 0x91, 0x9e, 0x9c, 0x92, 0x92, 0x9c, 0xae, 0xbd, - 0xbe, 0xb3, 0xa0, 0x94, 0x92, 0x98, 0xa3, 0xa4, 0x9e, 0x97, 0x98, 0x9e, 0xa3, 0xa4, 0x9b, 0x8a, - 0x7a, 0x78, 0x76, 0x78, 0x7d, 0x7d, 0x74, 0x70, 0x74, 0x7d, 0x8c, 0x8f, 0x84, 0x72, 0x66, 0x66, - 0x6b, 0x75, 0x7e, 0x7d, 0x7a, 0x7b, 0x7e, 0x85, 0x8e, 0x93, 0x8c, 0x7e, 0x75, 0x71, 0x74, 0x80, - 0x80, 0x76, 0x6c, 0x68, 0x69, 0x6b, 0x66, 0x57, 0x43, 0x3a, 0x3d, 0x43, 0x52, 0x5a, 0x5a, 0x57, - 0x57, 0x5e, 0x70, 0x84, 0x85, 0x72, 0x62, 0x68, 0x78, 0x8b, 0x9d, 0xa4, 0x9d, 0x92, 0x8f, 0x8f, - 0x93, 0x9e, 0xa1, 0x91, 0x81, 0x7b, 0x77, 0x7a, 0x89, 0x95, 0x99, 0x9c, 0xa1, 0xa6, 0xb0, 0xb0, - 0xa6, 0x96, 0x8d, 0x8a, 0x8a, 0x93, 0x9f, 0xa1, 0x98, 0x94, 0x94, 0x95, 0x94, 0x84, 0x69, 0x54, - 0x55, 0x58, 0x5a, 0x63, 0x67, 0x5c, 0x50, 0x57, 0x69, 0x80, 0x8f, 0x8b, 0x75, 0x64, 0x5e, 0x5d, - 0x69, 0x7a, 0x81, 0x80, 0x82, 0x8d, 0x9e, 0xad, 0xb0, 0xa6, 0x99, 0x92, 0x8d, 0x8f, 0x9b, 0xa3, - 0x9c, 0x8d, 0x85, 0x81, 0x7e, 0x82, 0x7e, 0x71, 0x60, 0x5b, 0x5e, 0x64, 0x67, 0x66, 0x66, 0x6a, - 0x72, 0x7b, 0x88, 0x8c, 0x88, 0x7b, 0x6c, 0x61, 0x67, 0x7b, 0x86, 0x87, 0x81, 0x7e, 0x84, 0x8d, - 0x96, 0x92, 0x82, 0x73, 0x76, 0x83, 0x8e, 0x98, 0x9f, 0xa1, 0xa0, 0x9d, 0x9e, 0xa8, 0xac, 0xa1, - 0x8c, 0x7d, 0x7c, 0x7d, 0x80, 0x80, 0x7b, 0x77, 0x72, 0x6f, 0x76, 0x82, 0x7b, 0x68, 0x57, 0x50, - 0x4d, 0x4d, 0x5f, 0x70, 0x78, 0x75, 0x72, 0x74, 0x85, 0x92, 0x8f, 0x88, 0x7e, 0x79, 0x78, 0x7e, - 0x86, 0x89, 0x87, 0x80, 0x7d, 0x7c, 0x80, 0x78, 0x6c, 0x62, 0x5e, 0x60, 0x60, 0x68, 0x72, 0x72, - 0x6a, 0x6c, 0x76, 0x86, 0x90, 0x88, 0x78, 0x6b, 0x67, 0x63, 0x6b, 0x78, 0x82, 0x81, 0x7b, 0x84, - 0x94, 0xa0, 0xa8, 0xa4, 0x96, 0x8b, 0x89, 0x8b, 0x8d, 0x88, 0x83, 0x7b, 0x6f, 0x6c, 0x67, 0x63, - 0x60, 0x59, 0x51, 0x4a, 0x47, 0x47, 0x47, 0x44, 0x42, 0x48, 0x55, 0x68, 0x7d, 0x93, 0xa1, 0x9f, - 0x95, 0x93, 0x94, 0x91, 0x8c, 0x83, 0x72, 0x6d, 0x71, 0x77, 0x86, 0x8f, 0x83, 0x6a, 0x61, 0x6b, - 0x76, 0x81, 0x83, 0x81, 0x80, 0x82, 0x85, 0x8d, 0x9d, 0xaa, 0xab, 0xa6, 0xa6, 0xac, 0xac, 0xa6, - 0xae, 0xb0, 0xac, 0xb1, 0xc4, 0xdb, 0xe3, 0xd3, 0xb9, 0xa2, 0x97, 0x92, 0x94, 0x9b, 0x98, 0x92, - 0x8c, 0x94, 0xa6, 0xb5, 0xb1, 0x9b, 0x83, 0x7b, 0x84, 0x92, 0xa3, 0xa9, 0xa4, 0x9e, 0x9c, 0x9d, - 0xa3, 0x9d, 0x89, 0x6e, 0x58, 0x55, 0x55, 0x51, 0x4b, 0x3f, 0x37, 0x3b, 0x4b, 0x5f, 0x6b, 0x6a, - 0x60, 0x48, 0x4c, 0x60, 0x6a, 0x6d, 0x70, 0x75, 0x7a, 0x86, 0x91, 0x95, 0xa2, 0xa4, 0x9a, 0x9a, - 0xa8, 0xa9, 0x9f, 0x98, 0x97, 0x98, 0x9a, 0x9e, 0x96, 0x89, 0x87, 0x84, 0x7d, 0x76, 0x6a, 0x5a, - 0x52, 0x51, 0x51, 0x53, 0x4f, 0x4b, 0x51, 0x63, 0x72, 0x77, 0x7b, 0x75, 0x6d, 0x6c, 0x5f, 0x60, - 0x65, 0x57, 0x4b, 0x45, 0x4f, 0x5e, 0x72, 0x79, 0x69, 0x63, 0x66, 0x6d, 0x7c, 0x87, 0x8a, 0x84, - 0x80, 0x8a, 0x97, 0xa3, 0xa3, 0x8f, 0x7a, 0x78, 0x7a, 0x85, 0x8a, 0x83, 0x81, 0x73, 0x68, 0x78, - 0x84, 0x83, 0x78, 0x63, 0x54, 0x55, 0x5e, 0x6b, 0x6a, 0x5d, 0x58, 0x58, 0x5b, 0x6f, 0x86, 0x80, - 0x6f, 0x73, 0x79, 0x87, 0x9d, 0xa8, 0xa7, 0xac, 0xa7, 0xa3, 0xaf, 0xbc, 0xb8, 0x9a, 0x8a, 0x85, - 0x8f, 0x95, 0x8b, 0x78, 0x6a, 0x5e, 0x59, 0x62, 0x6f, 0x76, 0x70, 0x68, 0x6a, 0x77, 0x7c, 0x68, - 0x4f, 0x51, 0x58, 0x5b, 0x69, 0x77, 0x7d, 0x83, 0x83, 0x72, 0x7c, 0x8c, 0x77, 0x6d, 0x77, 0x7c, - 0x81, 0x83, 0x81, 0x7d, 0x85, 0x90, 0x92, 0x89, 0x82, 0x81, 0x77, 0x80, 0x90, 0x9d, 0x97, 0x8a, - 0x93, 0xa5, 0xb2, 0xbf, 0xce, 0xc3, 0xab, 0x9a, 0x8f, 0x8c, 0x89, 0x80, 0x7c, 0x86, 0x8e, 0x99, - 0x93, 0x87, 0x81, 0x74, 0x77, 0x85, 0x86, 0x86, 0x87, 0x7d, 0x76, 0x7c, 0x85, 0x8e, 0x93, 0x8c, - 0x79, 0x6f, 0x77, 0x81, 0x91, 0x9f, 0x99, 0x86, 0x7e, 0x7d, 0x8b, 0xaf, 0xbb, 0xa8, 0x98, 0x8e, - 0x8d, 0x99, 0x9d, 0x98, 0x99, 0x99, 0x90, 0x8d, 0x8b, 0x93, 0x9b, 0x87, 0x76, 0x77, 0x90, 0x9a, - 0x85, 0x73, 0x70, 0x73, 0x82, 0x97, 0xa4, 0x88, 0x66, 0x52, 0x48, 0x56, 0x60, 0x52, 0x3b, 0x3a, - 0x45, 0x56, 0x69, 0x71, 0x77, 0x6f, 0x5e, 0x6c, 0x82, 0x78, 0x5a, 0x4f, 0x5b, 0x6f, 0x88, 0x95, - 0x8f, 0x91, 0xa5, 0xa7, 0x9d, 0x9f, 0x91, 0x78, 0x7d, 0x78, 0x77, 0x85, 0x74, 0x5e, 0x5e, 0x6b, - 0x6d, 0x65, 0x5c, 0x56, 0x51, 0x4f, 0x61, 0x77, 0x79, 0x6f, 0x67, 0x60, 0x64, 0x6f, 0x7b, 0x85, - 0x83, 0x73, 0x64, 0x54, 0x58, 0x5d, 0x62, 0x72, 0x6e, 0x6b, 0x73, 0x7c, 0x81, 0x7e, 0x8e, 0x9f, - 0xaa, 0xb9, 0xd0, 0xc8, 0xaf, 0xa4, 0x9e, 0xa3, 0xb2, 0xb9, 0xb2, 0x9e, 0x9a, 0x98, 0xa0, 0xa3, - 0x93, 0x78, 0x6b, 0x67, 0x62, 0x61, 0x6b, 0x71, 0x68, 0x6a, 0x66, 0x63, 0x67, 0x65, 0x5d, 0x59, - 0x5e, 0x65, 0x74, 0x7b, 0x7b, 0x86, 0x8c, 0x94, 0xa5, 0xa7, 0x94, 0x81, 0x81, 0x77, 0x75, 0x88, - 0x9f, 0x94, 0x83, 0x80, 0x87, 0x8d, 0x8d, 0x81, 0x76, 0x6b, 0x6d, 0x7b, 0x8c, 0x8e, 0x81, 0x86, - 0x8a, 0x77, 0x6e, 0x69, 0x53, 0x3c, 0x3f, 0x48, 0x5c, 0x75, 0x72, 0x69, 0x6a, 0x88, 0x9e, 0xa1, - 0x8d, 0x73, 0x60, 0x57, 0x56, 0x60, 0x5f, 0x5e, 0x59, 0x6e, 0x80, 0x84, 0x8b, 0x8b, 0x78, 0x6b, - 0x66, 0x71, 0x85, 0x84, 0x7b, 0x82, 0x8d, 0x93, 0x9e, 0xa1, 0x9e, 0x90, 0x85, 0x83, 0x71, 0x6b, - 0x6d, 0x69, 0x6e, 0x78, 0x72, 0x76, 0x87, 0x8c, 0x85, 0x88, 0x87, 0x87, 0x8f, 0x8f, 0x97, 0xa1, - 0xa2, 0xa0, 0xa7, 0xa4, 0x99, 0x90, 0x88, 0x88, 0x88, 0x9e, 0xae, 0xb0, 0xaf, 0xa8, 0xa1, 0x9c, - 0x97, 0x9a, 0x9c, 0x9a, 0x84, 0x7d, 0x95, 0x9d, 0x8e, 0x85, 0x89, 0x91, 0x9d, 0xa7, 0xad, 0xa6, - 0x98, 0x8e, 0x8b, 0x88, 0x85, 0x7d, 0x72, 0x6c, 0x7b, 0x92, 0xa0, 0x92, 0x70, 0x59, 0x50, 0x58, - 0x60, 0x59, 0x51, 0x43, 0x46, 0x5e, 0x72, 0x6c, 0x57, 0x5f, 0x73, 0x86, 0x96, 0x9a, 0x91, 0x89, - 0x84, 0x7a, 0x76, 0x81, 0x94, 0x90, 0x79, 0x7e, 0xa3, 0xbe, 0xb6, 0x9d, 0x89, 0x7e, 0x84, 0x87, - 0x79, 0x65, 0x4f, 0x4f, 0x56, 0x58, 0x5d, 0x6a, 0x72, 0x6f, 0x7d, 0x8e, 0x8c, 0x89, 0x81, 0x71, - 0x68, 0x5e, 0x5c, 0x71, 0x74, 0x6a, 0x6e, 0x7a, 0x85, 0x7a, 0x7a, 0x7a, 0x73, 0x77, 0x80, 0x7b, - 0x76, 0x7a, 0x86, 0x93, 0x95, 0x99, 0xb1, 0xb8, 0xad, 0x9d, 0x90, 0x8e, 0x96, 0x9a, 0x96, 0x92, - 0x93, 0x8b, 0x80, 0x83, 0x7b, 0x7c, 0x82, 0x85, 0x81, 0x84, 0x87, 0x95, 0x92, 0x81, 0x6d, 0x58, - 0x5d, 0x6a, 0x5d, 0x4a, 0x47, 0x50, 0x61, 0x6d, 0x74, 0x7c, 0x79, 0x83, 0x90, 0x96, 0x8d, 0x79, - 0x68, 0x5d, 0x57, 0x52, 0x63, 0x73, 0x60, 0x56, 0x5b, 0x5f, 0x60, 0x5c, 0x48, 0x30, 0x2b, 0x39, - 0x57, 0x56, 0x4a, 0x4d, 0x5a, 0x53, 0x4b, 0x4b, 0x47, 0x3f, 0x34, 0x3d, 0x54, 0x5e, 0x59, 0x54, - 0x50, 0x4d, 0x5e, 0x70, 0x73, 0x69, 0x57, 0x55, 0x64, 0x74, 0x7c, 0x72, 0x6a, 0x6b, 0x83, 0x95, - 0x9f, 0xad, 0xb0, 0xaa, 0xad, 0xbd, 0xca, 0xd4, 0xe3, 0xe5, 0xec, 0xec, 0xea, 0xf4, 0xee, 0xd5, - 0xbc, 0xac, 0xac, 0xb6, 0xb3, 0xb1, 0xae, 0xb6, 0xb9, 0xb5, 0xaf, 0xb5, 0xb4, 0x9f, 0x9f, 0xaa, - 0xb9, 0xbf, 0xaf, 0xa0, 0x98, 0x87, 0x85, 0x8f, 0x98, 0x94, 0x8a, 0x8c, 0xae, 0xbd, 0xc0, 0xb4, - 0xa0, 0xa1, 0x8c, 0x72, 0x81, 0x95, 0xa0, 0x88, 0x71, 0x77, 0x95, 0x92, 0x72, 0x75, 0x84, 0x8e, - 0x95, 0x88, 0x68, 0x4a, 0x4e, 0x51, 0x57, 0x6f, 0x82, 0x81, 0x76, 0x72, 0x76, 0x7b, 0x61, 0x3c, - 0x36, 0x41, 0x46, 0x50, 0x63, 0x66, 0x5b, 0x50, 0x59, 0x64, 0x5f, 0x53, 0x57, 0x62, 0x70, 0x73, - 0x72, 0x72, 0x6d, 0x6b, 0x71, 0x81, 0x95, 0xa7, 0xa9, 0x9d, 0x90, 0x92, 0x97, 0x9a, 0x96, 0x8d, - 0x86, 0x84, 0x82, 0x80, 0x7b, 0x73, 0x5e, 0x50, 0x50, 0x5d, 0x7e, 0x9a, 0x9e, 0x9a, 0x8f, 0x85, - 0x88, 0x8c, 0x7c, 0x64, 0x58, 0x60, 0x71, 0x80, 0x71, 0x5c, 0x54, 0x54, 0x50, 0x5c, 0x76, 0x80, - 0x82, 0x83, 0x82, 0x7e, 0x8b, 0x99, 0xa7, 0xaf, 0xaf, 0xac, 0xa8, 0xa0, 0x97, 0x89, 0x7d, 0x77, - 0x7c, 0x7e, 0x73, 0x67, 0x6c, 0x68, 0x5e, 0x5b, 0x5b, 0x52, 0x3c, 0x2f, 0x35, 0x4c, 0x57, 0x53, - 0x4d, 0x3e, 0x31, 0x30, 0x34, 0x34, 0x38, 0x3b, 0x4b, 0x63, 0x7a, 0x84, 0x7d, 0x7b, 0x97, 0xab, - 0xa4, 0x96, 0x84, 0x72, 0x6a, 0x71, 0x86, 0x9d, 0xa3, 0x98, 0x8f, 0x8c, 0x88, 0x93, 0x9d, 0x95, - 0x86, 0x83, 0x84, 0x84, 0x81, 0x78, 0x76, 0x74, 0x78, 0x7a, 0x78, 0x75, 0x69, 0x62, 0x64, 0x5e, - 0x6c, 0x82, 0x87, 0x82, 0x7a, 0x7a, 0x85, 0x8f, 0x9a, 0xa2, 0xa4, 0xa3, 0x9f, 0xa4, 0xb0, 0xbd, - 0xbd, 0xbb, 0xbb, 0xbc, 0xc1, 0xcb, 0xcb, 0xc4, 0xc1, 0xc1, 0xcc, 0xce, 0xc4, 0xaf, 0xa0, 0xa3, - 0xa9, 0xa9, 0x98, 0x84, 0x6f, 0x67, 0x6b, 0x77, 0x81, 0x80, 0x7c, 0x82, 0x83, 0x86, 0x8f, 0x88, - 0x7a, 0x77, 0x7d, 0x85, 0x8d, 0x8c, 0x85, 0x81, 0x87, 0x94, 0x9b, 0x94, 0x80, 0x69, 0x68, 0x74, - 0x82, 0x8e, 0x8f, 0x84, 0x79, 0x79, 0x83, 0x8f, 0x8c, 0x77, 0x63, 0x55, 0x4d, 0x52, 0x62, 0x6f, - 0x71, 0x70, 0x75, 0x76, 0x74, 0x6a, 0x5b, 0x50, 0x4e, 0x4c, 0x51, 0x5a, 0x5c, 0x5b, 0x62, 0x6b, - 0x74, 0x7d, 0x82, 0x73, 0x5c, 0x56, 0x5e, 0x6e, 0x7b, 0x85, 0x89, 0x8e, 0x96, 0x9d, 0xa7, 0xaa, - 0x9e, 0x8b, 0x7b, 0x70, 0x6d, 0x72, 0x7c, 0x87, 0x90, 0x90, 0x92, 0x96, 0x92, 0x83, 0x77, 0x7c, - 0x84, 0x8e, 0x90, 0x89, 0x80, 0x7d, 0x7a, 0x7d, 0x85, 0x80, 0x71, 0x69, 0x68, 0x73, 0x8a, 0x94, - 0x8c, 0x7e, 0x7e, 0x81, 0x82, 0x7a, 0x69, 0x53, 0x46, 0x4b, 0x57, 0x62, 0x61, 0x55, 0x4c, 0x50, - 0x5c, 0x6d, 0x73, 0x69, 0x58, 0x55, 0x61, 0x7d, 0x9b, 0xb0, 0xbb, 0xc4, 0xce, 0xd4, 0xd8, 0xce, - 0xb8, 0xa1, 0x98, 0x96, 0x98, 0x9b, 0x93, 0x84, 0x7c, 0x7a, 0x7e, 0x88, 0x84, 0x71, 0x5f, 0x59, - 0x5c, 0x66, 0x73, 0x75, 0x69, 0x5f, 0x5a, 0x5c, 0x68, 0x70, 0x70, 0x71, 0x79, 0x7e, 0x84, 0x88, - 0x89, 0x8f, 0x97, 0x96, 0x91, 0x88, 0x7d, 0x71, 0x6e, 0x72, 0x7c, 0x8b, 0x91, 0x90, 0x8a, 0x8c, - 0x89, 0x86, 0x88, 0x81, 0x73, 0x68, 0x5e, 0x5e, 0x67, 0x6d, 0x6d, 0x69, 0x62, 0x57, 0x55, 0x5b, - 0x5a, 0x4f, 0x4d, 0x54, 0x60, 0x6c, 0x6d, 0x66, 0x65, 0x6e, 0x7c, 0x93, 0xa2, 0x9a, 0x84, 0x72, - 0x6a, 0x73, 0x81, 0x84, 0x7e, 0x7a, 0x82, 0x93, 0xa5, 0xaf, 0xaa, 0x98, 0x90, 0x93, 0xa2, 0xaa, - 0xa3, 0x97, 0x95, 0x95, 0x96, 0x95, 0x87, 0x6c, 0x54, 0x4d, 0x56, 0x69, 0x73, 0x6c, 0x62, 0x68, - 0x77, 0x86, 0x96, 0x9f, 0x98, 0x8f, 0x86, 0x82, 0x8c, 0x93, 0x8e, 0x87, 0x8c, 0x93, 0x98, 0x97, - 0x8a, 0x77, 0x6c, 0x6c, 0x76, 0x87, 0x90, 0x90, 0x94, 0x9a, 0x9d, 0xa4, 0xa6, 0x98, 0x82, 0x78, - 0x77, 0x7b, 0x87, 0x8e, 0x8e, 0x8b, 0x8c, 0x8f, 0x92, 0x90, 0x8b, 0x88, 0x8e, 0x95, 0x9e, 0xa2, - 0xa1, 0x9c, 0x9b, 0xa1, 0xa7, 0xac, 0xaa, 0x9b, 0x84, 0x73, 0x70, 0x75, 0x7a, 0x80, 0x84, 0x83, - 0x7c, 0x79, 0x80, 0x7e, 0x74, 0x6a, 0x65, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x73, 0x78, 0x7a, 0x7b, - 0x79, 0x6d, 0x62, 0x60, 0x6c, 0x87, 0x9a, 0x98, 0x87, 0x7a, 0x74, 0x7b, 0x8b, 0x91, 0x89, 0x7a, - 0x75, 0x7c, 0x8f, 0x9f, 0xa9, 0xa9, 0xa3, 0x99, 0x95, 0x93, 0x85, 0x6c, 0x5d, 0x5c, 0x67, 0x72, - 0x6e, 0x61, 0x57, 0x58, 0x63, 0x74, 0x7c, 0x75, 0x64, 0x5f, 0x6a, 0x83, 0x9c, 0xa8, 0xa5, 0xa0, - 0x9c, 0x99, 0x9d, 0x9f, 0x92, 0x7b, 0x6f, 0x6f, 0x78, 0x81, 0x80, 0x7d, 0x88, 0x8e, 0x8a, 0x85, - 0x7b, 0x6f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x57, 0x47, 0x42, 0x44, 0x45, 0x45, 0x44, 0x40, 0x39, - 0x35, 0x3c, 0x4b, 0x51, 0x4d, 0x4e, 0x5a, 0x66, 0x6e, 0x71, 0x6d, 0x66, 0x60, 0x5e, 0x61, 0x6f, - 0x7d, 0x85, 0x86, 0x86, 0x81, 0x81, 0x7d, 0x72, 0x63, 0x5d, 0x59, 0x5b, 0x69, 0x73, 0x71, 0x6b, - 0x6f, 0x74, 0x73, 0x6f, 0x69, 0x5e, 0x5b, 0x5b, 0x63, 0x75, 0x80, 0x82, 0x81, 0x82, 0x88, 0x96, - 0x9e, 0x95, 0x81, 0x73, 0x6b, 0x74, 0x8a, 0x9c, 0xa6, 0xb0, 0xb9, 0xc8, 0xd6, 0xdc, 0xd9, 0xd0, - 0xc7, 0xc5, 0xce, 0xd5, 0xd4, 0xc9, 0xbf, 0xbb, 0xbd, 0xbe, 0xb7, 0xa2, 0x8f, 0x88, 0x89, 0x93, - 0x99, 0x93, 0x8c, 0x8a, 0x8e, 0x9b, 0xa9, 0xa5, 0x93, 0x8a, 0x89, 0x8d, 0x9a, 0xa8, 0xa9, 0xa3, - 0xa0, 0xa0, 0xa4, 0xa5, 0x9b, 0x8e, 0x8c, 0x93, 0x9a, 0x9d, 0x96, 0x91, 0x91, 0x91, 0x90, 0x8c, - 0x84, 0x76, 0x62, 0x56, 0x51, 0x52, 0x54, 0x53, 0x50, 0x48, 0x42, 0x43, 0x4d, 0x54, 0x4a, 0x3d, - 0x39, 0x3d, 0x46, 0x52, 0x61, 0x6d, 0x7a, 0x80, 0x7d, 0x81, 0x8a, 0x8c, 0x88, 0x8a, 0x8f, 0x97, - 0x99, 0x91, 0x8a, 0x86, 0x82, 0x82, 0x8a, 0x8b, 0x84, 0x7c, 0x7b, 0x7d, 0x82, 0x85, 0x81, 0x76, - 0x71, 0x6d, 0x72, 0x80, 0x84, 0x79, 0x6d, 0x67, 0x68, 0x73, 0x75, 0x6e, 0x67, 0x63, 0x61, 0x5e, - 0x60, 0x5f, 0x51, 0x45, 0x43, 0x4e, 0x61, 0x6a, 0x72, 0x75, 0x77, 0x79, 0x86, 0x90, 0x8c, 0x85, - 0x81, 0x86, 0x94, 0xa2, 0xa8, 0xa2, 0x9d, 0x9e, 0xa4, 0xb4, 0xbe, 0xb5, 0xa1, 0x94, 0x91, 0x9f, - 0xa7, 0x98, 0x8a, 0x86, 0x80, 0x79, 0x7e, 0x81, 0x75, 0x65, 0x5b, 0x5b, 0x64, 0x67, 0x68, 0x69, - 0x77, 0x88, 0x91, 0x93, 0x90, 0x83, 0x71, 0x68, 0x62, 0x5f, 0x57, 0x4e, 0x4c, 0x51, 0x55, 0x53, - 0x4f, 0x4b, 0x42, 0x37, 0x38, 0x46, 0x59, 0x68, 0x72, 0x7b, 0x85, 0x86, 0x82, 0x86, 0x8f, 0x98, - 0x97, 0x91, 0x8e, 0x8d, 0x8c, 0x8d, 0x93, 0x9c, 0x9e, 0x9b, 0x92, 0x8a, 0x83, 0x7c, 0x7b, 0x7b, - 0x7d, 0x7e, 0x7c, 0x80, 0x86, 0x8a, 0x8a, 0x8a, 0x8a, 0x88, 0x7a, 0x6f, 0x75, 0x89, 0x99, 0xa5, - 0xaf, 0xb1, 0xaa, 0x9f, 0x98, 0x99, 0x97, 0x8d, 0x81, 0x7d, 0x83, 0x8a, 0x8a, 0x89, 0x8e, 0x96, - 0x9d, 0xac, 0xbb, 0xba, 0xad, 0xa1, 0xa0, 0xa6, 0xa3, 0x94, 0x84, 0x7a, 0x77, 0x80, 0x89, 0x81, - 0x70, 0x67, 0x63, 0x67, 0x6c, 0x66, 0x5b, 0x57, 0x5d, 0x64, 0x6b, 0x68, 0x5f, 0x58, 0x54, 0x55, - 0x5c, 0x5b, 0x53, 0x55, 0x64, 0x76, 0x8b, 0x93, 0x96, 0xa1, 0xac, 0xb4, 0xba, 0xb3, 0xa2, 0x9b, - 0x9f, 0xa0, 0xa3, 0xa0, 0x8e, 0x7c, 0x72, 0x71, 0x74, 0x6c, 0x5b, 0x4d, 0x46, 0x49, 0x50, 0x52, - 0x4e, 0x53, 0x62, 0x74, 0x84, 0x84, 0x78, 0x75, 0x80, 0x85, 0x88, 0x87, 0x80, 0x78, 0x74, 0x74, - 0x77, 0x79, 0x73, 0x6c, 0x6c, 0x69, 0x71, 0x83, 0x8a, 0x8a, 0x92, 0x9c, 0xa2, 0x9d, 0x91, 0x8a, - 0x94, 0xa2, 0xab, 0xb6, 0xb3, 0xa0, 0x93, 0x91, 0x95, 0x9d, 0x9d, 0x92, 0x88, 0x81, 0x7d, 0x7e, - 0x79, 0x73, 0x71, 0x6e, 0x6a, 0x71, 0x79, 0x78, 0x75, 0x75, 0x79, 0x86, 0x8d, 0x89, 0x84, 0x84, - 0x86, 0x91, 0x94, 0x89, 0x82, 0x7d, 0x78, 0x87, 0x99, 0xa1, 0xa1, 0x9f, 0x98, 0x97, 0x96, 0x8f, - 0x88, 0x87, 0x8c, 0x9a, 0xa3, 0xa0, 0x97, 0x95, 0x9b, 0xa2, 0xa4, 0x94, 0x7e, 0x73, 0x6c, 0x6c, - 0x70, 0x6a, 0x60, 0x60, 0x67, 0x78, 0x8a, 0x8b, 0x83, 0x7e, 0x79, 0x7a, 0x7d, 0x7a, 0x6e, 0x60, - 0x55, 0x56, 0x5b, 0x51, 0x3f, 0x35, 0x36, 0x40, 0x4f, 0x59, 0x5e, 0x68, 0x74, 0x7d, 0x85, 0x85, - 0x7e, 0x7b, 0x7d, 0x85, 0x8f, 0x90, 0x87, 0x80, 0x79, 0x70, 0x6b, 0x62, 0x55, 0x4e, 0x50, 0x55, - 0x5d, 0x5f, 0x57, 0x4e, 0x53, 0x5e, 0x6b, 0x70, 0x67, 0x5a, 0x5d, 0x63, 0x69, 0x6c, 0x63, 0x57, - 0x51, 0x50, 0x5e, 0x72, 0x83, 0x8b, 0x8b, 0x88, 0x8b, 0x93, 0x96, 0x91, 0x87, 0x7e, 0x83, 0x8c, - 0x89, 0x7c, 0x7b, 0x85, 0x96, 0xa5, 0xa6, 0xa2, 0xa8, 0xaa, 0xab, 0xab, 0xa3, 0x99, 0x97, 0x9d, - 0xa6, 0xb2, 0xb7, 0xb4, 0xb0, 0xac, 0xa8, 0xa5, 0x9b, 0x82, 0x71, 0x6c, 0x76, 0x8c, 0x93, 0x83, - 0x72, 0x76, 0x82, 0x8c, 0x8b, 0x7a, 0x6c, 0x6c, 0x7a, 0x92, 0xa5, 0xa3, 0x9a, 0x94, 0x92, 0xa0, - 0xb3, 0xb7, 0xaf, 0xac, 0xb0, 0xb5, 0xb0, 0xa2, 0x9b, 0x9a, 0x91, 0x8d, 0x8c, 0x7e, 0x70, 0x6e, - 0x71, 0x76, 0x75, 0x68, 0x5c, 0x60, 0x68, 0x71, 0x79, 0x71, 0x63, 0x65, 0x70, 0x80, 0x8b, 0x86, - 0x76, 0x71, 0x70, 0x70, 0x6f, 0x61, 0x4f, 0x4b, 0x53, 0x69, 0x85, 0x91, 0x89, 0x7c, 0x7b, 0x83, - 0x8d, 0x8e, 0x81, 0x77, 0x7c, 0x8b, 0x9d, 0xa6, 0x9e, 0x94, 0x8f, 0x8c, 0x89, 0x84, 0x7e, 0x83, - 0x8d, 0x94, 0x97, 0x97, 0x8c, 0x7c, 0x75, 0x73, 0x7b, 0x7e, 0x70, 0x60, 0x63, 0x70, 0x7a, 0x75, - 0x66, 0x5d, 0x65, 0x72, 0x7e, 0x84, 0x79, 0x69, 0x6b, 0x7a, 0x93, 0xa4, 0xa6, 0xa2, 0xa1, 0xa2, - 0xa7, 0xa3, 0x90, 0x78, 0x72, 0x7b, 0x8b, 0x9c, 0xa1, 0x96, 0x8c, 0x8a, 0x8e, 0x8f, 0x88, 0x76, - 0x6c, 0x6b, 0x6e, 0x73, 0x73, 0x6e, 0x6d, 0x70, 0x77, 0x7a, 0x75, 0x6e, 0x70, 0x79, 0x84, 0x82, - 0x6a, 0x4d, 0x3d, 0x3a, 0x3c, 0x40, 0x3f, 0x32, 0x28, 0x2f, 0x43, 0x52, 0x51, 0x4a, 0x44, 0x45, - 0x4f, 0x63, 0x6b, 0x61, 0x61, 0x72, 0x86, 0x8e, 0x84, 0x74, 0x6e, 0x6d, 0x6d, 0x75, 0x79, 0x72, - 0x6c, 0x6c, 0x6f, 0x77, 0x84, 0x83, 0x6f, 0x66, 0x6f, 0x7b, 0x76, 0x65, 0x5c, 0x62, 0x72, 0x82, - 0x85, 0x7b, 0x73, 0x77, 0x80, 0x8c, 0x93, 0x8b, 0x82, 0x8c, 0xa1, 0xba, 0xc0, 0xb1, 0xa0, 0x9a, - 0x9b, 0xa5, 0xb1, 0xb4, 0xaf, 0xaf, 0xb5, 0xc1, 0xc3, 0xb8, 0xac, 0xab, 0xb2, 0xbd, 0xc5, 0xbd, - 0xab, 0xa1, 0xa0, 0xa6, 0xb0, 0xaa, 0x96, 0x8c, 0x87, 0x8c, 0x95, 0x8c, 0x76, 0x71, 0x79, 0x84, - 0x87, 0x80, 0x78, 0x73, 0x6f, 0x72, 0x79, 0x77, 0x6d, 0x6a, 0x6f, 0x74, 0x7e, 0x86, 0x81, 0x78, - 0x7c, 0x8d, 0xa4, 0xa8, 0x97, 0x92, 0x9f, 0xa9, 0xaf, 0xa9, 0x91, 0x7b, 0x71, 0x6e, 0x6c, 0x68, - 0x66, 0x69, 0x69, 0x68, 0x70, 0x73, 0x65, 0x57, 0x55, 0x5d, 0x69, 0x6b, 0x65, 0x60, 0x65, 0x70, - 0x80, 0x84, 0x73, 0x5a, 0x4f, 0x4d, 0x51, 0x58, 0x52, 0x4b, 0x54, 0x5e, 0x69, 0x72, 0x7b, 0x84, - 0x86, 0x85, 0x8a, 0x8d, 0x86, 0x7e, 0x84, 0x8a, 0x8e, 0x89, 0x7c, 0x73, 0x71, 0x77, 0x86, 0x94, - 0x96, 0x8e, 0x8a, 0x89, 0x8f, 0x9a, 0x96, 0x85, 0x75, 0x75, 0x82, 0x85, 0x78, 0x70, 0x79, 0x89, - 0x95, 0x99, 0x96, 0x8b, 0x7e, 0x7a, 0x81, 0x86, 0x82, 0x80, 0x8a, 0x97, 0xa4, 0xb4, 0xc0, 0xbf, - 0xb7, 0xae, 0xa6, 0xa8, 0xa8, 0x9f, 0x97, 0x9a, 0x9d, 0x9b, 0x92, 0x87, 0x89, 0x92, 0x97, 0x98, - 0x8c, 0x73, 0x62, 0x5d, 0x5e, 0x5e, 0x58, 0x50, 0x4b, 0x4b, 0x4a, 0x52, 0x5d, 0x63, 0x67, 0x6d, - 0x6e, 0x6a, 0x65, 0x5b, 0x4b, 0x44, 0x43, 0x46, 0x45, 0x3d, 0x3d, 0x48, 0x4e, 0x51, 0x55, 0x54, - 0x4c, 0x4c, 0x52, 0x5a, 0x5b, 0x56, 0x5a, 0x68, 0x74, 0x77, 0x76, 0x73, 0x6f, 0x6f, 0x6e, 0x6c, - 0x69, 0x63, 0x54, 0x4a, 0x4a, 0x53, 0x5e, 0x66, 0x6a, 0x78, 0x8a, 0x99, 0xa0, 0x9d, 0x96, 0x97, - 0x9d, 0xa4, 0xa3, 0x9a, 0x92, 0x98, 0xa0, 0xa8, 0xb4, 0xba, 0xb9, 0xbb, 0xb9, 0xb6, 0xb7, 0xb6, - 0xb0, 0xaf, 0xb3, 0xba, 0xbd, 0xb7, 0xaf, 0xb2, 0xbd, 0xbd, 0xb3, 0xa5, 0x9b, 0x9a, 0x9f, 0xa4, - 0xa9, 0xa0, 0x8f, 0x89, 0x93, 0xa0, 0xa9, 0xaa, 0xa4, 0x9e, 0x9c, 0x98, 0x8f, 0x82, 0x74, 0x6d, - 0x6e, 0x73, 0x77, 0x6c, 0x58, 0x55, 0x66, 0x74, 0x7b, 0x77, 0x6d, 0x6c, 0x75, 0x79, 0x7a, 0x78, - 0x71, 0x64, 0x61, 0x6e, 0x82, 0x89, 0x7e, 0x73, 0x74, 0x70, 0x63, 0x52, 0x3f, 0x35, 0x3c, 0x4b, - 0x5c, 0x63, 0x57, 0x4c, 0x54, 0x62, 0x6f, 0x71, 0x6b, 0x60, 0x54, 0x50, 0x52, 0x53, 0x51, 0x55, - 0x64, 0x74, 0x84, 0x8d, 0x8e, 0x87, 0x86, 0x86, 0x82, 0x7a, 0x6a, 0x5e, 0x61, 0x6d, 0x83, 0x98, - 0x9f, 0x9f, 0xa6, 0xb3, 0xc0, 0xc4, 0xbc, 0xb5, 0xba, 0xc2, 0xc1, 0xb6, 0xa4, 0x92, 0x8d, 0x94, - 0x9f, 0xaa, 0xaa, 0xa2, 0x9c, 0x9b, 0x99, 0x99, 0x98, 0x90, 0x83, 0x76, 0x74, 0x7d, 0x7d, 0x76, - 0x79, 0x8d, 0xa0, 0xa7, 0xa1, 0x96, 0x8f, 0x90, 0x8e, 0x87, 0x77, 0x65, 0x5e, 0x61, 0x6d, 0x82, - 0x9a, 0xa7, 0xa8, 0xa8, 0xa4, 0xa1, 0x99, 0x88, 0x75, 0x6f, 0x6c, 0x6f, 0x6c, 0x60, 0x55, 0x5c, - 0x6d, 0x83, 0x8a, 0x7c, 0x6d, 0x6b, 0x6b, 0x70, 0x75, 0x71, 0x69, 0x66, 0x63, 0x67, 0x71, 0x79, - 0x7e, 0x88, 0x8e, 0x8e, 0x88, 0x7b, 0x6d, 0x65, 0x5d, 0x59, 0x57, 0x49, 0x39, 0x38, 0x41, 0x51, - 0x61, 0x62, 0x5b, 0x58, 0x59, 0x5e, 0x5e, 0x51, 0x42, 0x3f, 0x44, 0x49, 0x49, 0x4d, 0x55, 0x60, - 0x71, 0x85, 0x90, 0x8f, 0x85, 0x7e, 0x79, 0x7b, 0x8c, 0x99, 0x98, 0x94, 0x93, 0x96, 0xa0, 0xa1, - 0x9a, 0x98, 0x9a, 0x9c, 0x9c, 0x93, 0x85, 0x78, 0x75, 0x79, 0x80, 0x7c, 0x75, 0x77, 0x85, 0x92, - 0x9c, 0x9d, 0x95, 0x87, 0x7e, 0x7a, 0x7e, 0x83, 0x7b, 0x75, 0x80, 0x8e, 0x97, 0x96, 0x8c, 0x82, - 0x87, 0x97, 0xac, 0xb7, 0xac, 0x9e, 0x97, 0x8f, 0x8e, 0x91, 0x93, 0x8c, 0x80, 0x72, 0x6d, 0x66, - 0x5c, 0x5a, 0x64, 0x69, 0x67, 0x61, 0x58, 0x51, 0x51, 0x5a, 0x6b, 0x75, 0x6d, 0x66, 0x6a, 0x74, - 0x84, 0x91, 0x8f, 0x85, 0x7d, 0x78, 0x7b, 0x82, 0x82, 0x85, 0x99, 0xb0, 0xbf, 0xbd, 0xac, 0x99, - 0x8e, 0x8d, 0x92, 0x96, 0x8f, 0x85, 0x83, 0x82, 0x86, 0x93, 0x99, 0x91, 0x83, 0x75, 0x6c, 0x68, - 0x63, 0x5f, 0x64, 0x6f, 0x7a, 0x80, 0x7e, 0x7a, 0x73, 0x74, 0x7b, 0x85, 0x85, 0x77, 0x70, 0x78, - 0x83, 0x94, 0x9f, 0xa4, 0xad, 0xb8, 0xc0, 0xc6, 0xc3, 0xb2, 0xac, 0xb8, 0xc1, 0xc3, 0xb7, 0xa3, - 0x8c, 0x82, 0x85, 0x91, 0x96, 0x92, 0x90, 0x92, 0x98, 0xa3, 0xac, 0xad, 0xa2, 0x96, 0x8e, 0x85, - 0x7e, 0x73, 0x67, 0x6c, 0x79, 0x87, 0x8d, 0x87, 0x75, 0x6c, 0x6c, 0x79, 0x88, 0x88, 0x7b, 0x76, - 0x78, 0x7c, 0x80, 0x7b, 0x78, 0x7b, 0x80, 0x83, 0x7e, 0x6e, 0x5b, 0x58, 0x5f, 0x62, 0x5e, 0x4e, - 0x3a, 0x34, 0x40, 0x58, 0x71, 0x79, 0x74, 0x76, 0x7e, 0x84, 0x8a, 0x8c, 0x85, 0x7a, 0x6e, 0x65, - 0x64, 0x5d, 0x54, 0x5e, 0x74, 0x84, 0x8b, 0x83, 0x70, 0x5c, 0x51, 0x4f, 0x51, 0x4d, 0x40, 0x3a, - 0x44, 0x52, 0x5c, 0x5c, 0x59, 0x59, 0x5f, 0x63, 0x65, 0x66, 0x5f, 0x5b, 0x66, 0x71, 0x75, 0x71, - 0x67, 0x64, 0x69, 0x6d, 0x74, 0x78, 0x73, 0x6b, 0x6a, 0x69, 0x6c, 0x6a, 0x60, 0x54, 0x4f, 0x53, - 0x5e, 0x68, 0x68, 0x65, 0x6f, 0x7b, 0x87, 0x8c, 0x88, 0x7d, 0x75, 0x6e, 0x72, 0x7d, 0x82, 0x84, - 0x93, 0xa0, 0xa3, 0xa0, 0x99, 0x96, 0x9b, 0x9d, 0xa1, 0xa4, 0x9e, 0x92, 0x93, 0xa1, 0xb3, 0xc1, - 0xc1, 0xb7, 0xad, 0xa9, 0xad, 0xb4, 0xb8, 0xb6, 0xb7, 0xbd, 0xc4, 0xc7, 0xb9, 0xa4, 0x98, 0x95, - 0x93, 0x94, 0x8f, 0x83, 0x7a, 0x7c, 0x85, 0x8e, 0x89, 0x78, 0x6a, 0x66, 0x6c, 0x7e, 0x8f, 0x95, - 0x97, 0x9f, 0xa0, 0x9b, 0x92, 0x8b, 0x87, 0x8a, 0x8e, 0x98, 0x9c, 0x94, 0x8f, 0x9f, 0xb3, 0xbb, - 0xb4, 0xa4, 0x93, 0x8a, 0x82, 0x83, 0x80, 0x70, 0x66, 0x6b, 0x76, 0x80, 0x81, 0x78, 0x6c, 0x64, - 0x60, 0x62, 0x62, 0x5b, 0x53, 0x57, 0x61, 0x6e, 0x75, 0x6e, 0x63, 0x62, 0x69, 0x74, 0x7e, 0x80, - 0x7b, 0x80, 0x86, 0x87, 0x80, 0x6e, 0x65, 0x6a, 0x6f, 0x78, 0x82, 0x81, 0x77, 0x77, 0x7b, 0x80, - 0x7e, 0x72, 0x64, 0x62, 0x65, 0x6b, 0x79, 0x81, 0x7d, 0x82, 0x90, 0xa1, 0xaa, 0xa4, 0x96, 0x8e, - 0x8c, 0x90, 0x94, 0x8f, 0x83, 0x7d, 0x83, 0x8c, 0x93, 0x8f, 0x85, 0x80, 0x7c, 0x77, 0x79, 0x7a, - 0x74, 0x76, 0x85, 0x90, 0x99, 0x95, 0x8a, 0x83, 0x84, 0x88, 0x92, 0x91, 0x85, 0x7c, 0x80, 0x86, - 0x89, 0x7a, 0x63, 0x57, 0x57, 0x59, 0x61, 0x68, 0x68, 0x68, 0x6f, 0x78, 0x81, 0x7c, 0x6b, 0x56, - 0x4d, 0x4a, 0x50, 0x57, 0x53, 0x4a, 0x4d, 0x59, 0x69, 0x6f, 0x69, 0x60, 0x5c, 0x5d, 0x65, 0x6a, - 0x61, 0x54, 0x56, 0x61, 0x6b, 0x67, 0x5b, 0x54, 0x57, 0x5b, 0x60, 0x69, 0x6a, 0x64, 0x6a, 0x78, - 0x88, 0x91, 0x8d, 0x82, 0x7e, 0x81, 0x87, 0x93, 0x97, 0x94, 0x94, 0x9c, 0xa9, 0xaf, 0xa1, 0x88, - 0x7a, 0x79, 0x83, 0x91, 0x98, 0x9c, 0xa9, 0xb8, 0xc3, 0xc6, 0xb8, 0xa3, 0x98, 0x94, 0x97, 0x9f, - 0xa0, 0x9a, 0x98, 0x9f, 0xaa, 0xb5, 0xb2, 0xa3, 0x98, 0x92, 0x91, 0x9c, 0xa0, 0x92, 0x89, 0x90, - 0x9b, 0xa5, 0x9e, 0x8d, 0x84, 0x85, 0x87, 0x88, 0x8a, 0x84, 0x7e, 0x84, 0x8a, 0x91, 0x91, 0x85, - 0x74, 0x6d, 0x6b, 0x73, 0x7a, 0x77, 0x72, 0x74, 0x7a, 0x8d, 0x93, 0x88, 0x72, 0x66, 0x64, 0x6c, - 0x74, 0x6f, 0x69, 0x6f, 0x78, 0x7e, 0x7a, 0x67, 0x54, 0x4c, 0x46, 0x47, 0x4d, 0x49, 0x3e, 0x3c, - 0x44, 0x53, 0x5f, 0x5d, 0x50, 0x49, 0x46, 0x4d, 0x5d, 0x65, 0x61, 0x67, 0x74, 0x83, 0x8f, 0x8c, - 0x7e, 0x7a, 0x7d, 0x82, 0x8a, 0x8a, 0x82, 0x81, 0x86, 0x8d, 0x91, 0x86, 0x75, 0x69, 0x63, 0x69, - 0x78, 0x82, 0x86, 0x8a, 0x90, 0x9a, 0xa1, 0x9d, 0x91, 0x86, 0x89, 0x8e, 0x96, 0x9a, 0x92, 0x8d, - 0x97, 0xa5, 0xb2, 0xb3, 0xa6, 0x9a, 0x98, 0x98, 0x9c, 0xa1, 0x9f, 0x9e, 0xa6, 0xab, 0xb4, 0xb4, - 0xa3, 0x94, 0x92, 0x91, 0x94, 0x98, 0x92, 0x88, 0x88, 0x8e, 0x98, 0x97, 0x86, 0x71, 0x69, 0x6c, - 0x78, 0x83, 0x83, 0x81, 0x88, 0x8e, 0x96, 0x98, 0x90, 0x88, 0x83, 0x80, 0x86, 0x8f, 0x8e, 0x85, - 0x85, 0x8b, 0x93, 0x96, 0x8c, 0x79, 0x6d, 0x69, 0x6f, 0x7a, 0x7e, 0x7d, 0x86, 0x90, 0x9a, 0xa2, - 0x96, 0x80, 0x78, 0x7a, 0x7d, 0x80, 0x7b, 0x6f, 0x6c, 0x70, 0x77, 0x84, 0x83, 0x71, 0x63, 0x5c, - 0x5e, 0x6a, 0x70, 0x6e, 0x70, 0x74, 0x76, 0x78, 0x70, 0x5e, 0x4e, 0x47, 0x48, 0x4f, 0x52, 0x4a, - 0x47, 0x51, 0x62, 0x74, 0x76, 0x6c, 0x62, 0x5e, 0x5d, 0x65, 0x70, 0x70, 0x72, 0x7d, 0x81, 0x7d, - 0x74, 0x68, 0x5f, 0x5f, 0x65, 0x6f, 0x77, 0x73, 0x6e, 0x76, 0x86, 0x97, 0xa0, 0x98, 0x8a, 0x83, - 0x80, 0x85, 0x85, 0x7b, 0x73, 0x78, 0x7d, 0x83, 0x86, 0x7d, 0x72, 0x6e, 0x6f, 0x71, 0x72, 0x6d, - 0x6a, 0x6d, 0x71, 0x7a, 0x83, 0x7a, 0x6a, 0x59, 0x4b, 0x4a, 0x50, 0x54, 0x57, 0x69, 0x81, 0x90, - 0x96, 0x91, 0x87, 0x89, 0x92, 0x9a, 0xa4, 0xa4, 0x95, 0x8d, 0x8c, 0x89, 0x88, 0x82, 0x75, 0x6d, - 0x67, 0x6a, 0x79, 0x84, 0x82, 0x80, 0x83, 0x8a, 0x91, 0x8d, 0x82, 0x78, 0x74, 0x76, 0x7b, 0x7d, - 0x76, 0x79, 0x87, 0x97, 0xaa, 0xb3, 0xad, 0xa8, 0xa3, 0xa0, 0xa2, 0xa2, 0x9e, 0xa2, 0xad, 0xb2, - 0xb4, 0xae, 0x9d, 0x89, 0x81, 0x77, 0x83, 0x91, 0x8f, 0x8c, 0x90, 0x94, 0x98, 0x96, 0x8e, 0x7b, - 0x6d, 0x6c, 0x75, 0x80, 0x79, 0x6c, 0x77, 0x86, 0x8e, 0x8f, 0x84, 0x7b, 0x7c, 0x78, 0x7d, 0x8a, - 0x8b, 0x8e, 0x96, 0x9e, 0xa9, 0xb0, 0xa7, 0x90, 0x8a, 0x8a, 0x8c, 0x97, 0x90, 0x84, 0x93, 0x9e, - 0xa5, 0xac, 0xa8, 0x9e, 0x99, 0x9c, 0xa5, 0xa7, 0x9c, 0x88, 0x85, 0x8e, 0x99, 0x98, 0x8a, 0x74, - 0x68, 0x61, 0x65, 0x6c, 0x6e, 0x72, 0x79, 0x86, 0x97, 0xa9, 0xad, 0x9d, 0x92, 0x91, 0x8f, 0x93, - 0x8d, 0x80, 0x7e, 0x83, 0x8f, 0x8f, 0x7c, 0x6b, 0x60, 0x5f, 0x5f, 0x5f, 0x55, 0x49, 0x4d, 0x55, - 0x59, 0x5d, 0x53, 0x46, 0x3e, 0x3d, 0x49, 0x52, 0x4f, 0x42, 0x3c, 0x4a, 0x51, 0x57, 0x5f, 0x59, - 0x54, 0x57, 0x5e, 0x6c, 0x6b, 0x5d, 0x59, 0x66, 0x75, 0x73, 0x64, 0x5b, 0x58, 0x56, 0x4c, 0x3c, - 0x37, 0x39, 0x39, 0x44, 0x4c, 0x4d, 0x4c, 0x41, 0x31, 0x1d, 0xe, 0x14, 0x1f, 0x24, 0x31, 0x4a, - 0x5e, 0x6a, 0x77, 0x82, 0x7e, 0x7b, 0x88, 0x95, 0xa0, 0xae, 0xaa, 0xaa, 0xb9, 0xca, 0xd5, 0xc8, - 0xb0, 0xac, 0xa8, 0xb0, 0xc3, 0xbe, 0xaa, 0x9f, 0xa3, 0xba, 0xd2, 0xda, 0xcf, 0xbb, 0xb1, 0xb5, - 0xbc, 0xaf, 0x8d, 0x81, 0x95, 0xae, 0xc6, 0xc1, 0xa4, 0xa3, 0xa7, 0xa7, 0xb3, 0xa9, 0x9a, 0x9e, - 0xaa, 0xbd, 0xcb, 0xca, 0xb3, 0xaf, 0xbb, 0xb9, 0xac, 0x96, 0x81, 0x81, 0x9b, 0xb3, 0xb7, 0xa0, - 0x7d, 0x6b, 0x69, 0x6c, 0x69, 0x58, 0x46, 0x45, 0x55, 0x65, 0x59, 0x45, 0x3d, 0x46, 0x53, 0x51, - 0x44, 0x3f, 0x3e, 0x42, 0x4f, 0x50, 0x4d, 0x4c, 0x44, 0x45, 0x4e, 0x44, 0x41, 0x50, 0x55, 0x6c, - 0x89, 0x86, 0x86, 0x90, 0x99, 0xb2, 0xbf, 0xb8, 0xb2, 0xb1, 0xab, 0xa5, 0xad, 0xbb, 0xc9, 0xd1, - 0xd3, 0xd4, 0xc9, 0xb5, 0xa6, 0x9d, 0x9f, 0x91, 0x80, 0x81, 0x84, 0x89, 0x92, 0x88, 0x7a, 0x7a, - 0x7e, 0x87, 0x80, 0x66, 0x59, 0x60, 0x7c, 0x8d, 0x7e, 0x6c, 0x66, 0x67, 0x6d, 0x80, 0x8a, 0x7e, - 0x7a, 0x7b, 0x88, 0x8c, 0x7e, 0x73, 0x74, 0x78, 0x73, 0x77, 0x68, 0x57, 0x62, 0x6e, 0x7c, 0x85, - 0x73, 0x60, 0x63, 0x69, 0x83, 0x8f, 0x80, 0x6f, 0x6c, 0x8b, 0xa3, 0xad, 0xa9, 0x99, 0x9b, 0xb0, - 0xa9, 0x93, 0x7b, 0x69, 0x6b, 0x78, 0x7e, 0x72, 0x64, 0x58, 0x49, 0x4c, 0x4c, 0x3b, 0x38, 0x3c, - 0x34, 0x3f, 0x4b, 0x45, 0x48, 0x52, 0x68, 0x85, 0x79, 0x6e, 0x7c, 0x81, 0x94, 0x9d, 0x98, 0xa0, - 0x95, 0x8f, 0x8d, 0x81, 0x70, 0x63, 0x53, 0x54, 0x5f, 0x68, 0x77, 0x86, 0x88, 0x8e, 0x80, 0x70, - 0x68, 0x62, 0x6a, 0x6d, 0x72, 0x67, 0x61, 0x82, 0x96, 0xa6, 0xad, 0x99, 0x87, 0x84, 0x92, 0xa0, - 0x9c, 0x9a, 0xa7, 0xb3, 0xc6, 0xc3, 0xa7, 0xa7, 0xa5, 0x97, 0x9a, 0xa1, 0x8e, 0x7e, 0x87, 0xa1, - 0xb9, 0xba, 0xa8, 0x94, 0x85, 0x7d, 0x83, 0x82, 0x81, 0x84, 0x94, 0xa6, 0x9c, 0x82, 0x61, 0x59, - 0x69, 0x7d, 0x82, 0x72, 0x58, 0x5d, 0x66, 0x76, 0x8b, 0x7b, 0x6a, 0x5a, 0x53, 0x5e, 0x5a, 0x4d, - 0x52, 0x5f, 0x71, 0x83, 0x83, 0x77, 0x6c, 0x72, 0x7a, 0x70, 0x67, 0x66, 0x62, 0x5d, 0x64, 0x6e, - 0x6f, 0x67, 0x58, 0x5c, 0x64, 0x57, 0x49, 0x51, 0x67, 0x82, 0x88, 0x81, 0x7b, 0x6a, 0x6a, 0x6d, - 0x77, 0x74, 0x63, 0x72, 0x80, 0x88, 0x7d, 0x6c, 0x7a, 0x8f, 0x97, 0x9e, 0x93, 0x79, 0x6f, 0x72, - 0x81, 0x79, 0x6c, 0x6f, 0x87, 0x90, 0x8d, 0x8b, 0x84, 0x74, 0x6e, 0x79, 0x68, 0x58, 0x61, 0x68, - 0x7b, 0x97, 0xab, 0xaa, 0x9d, 0xa2, 0xa4, 0x9e, 0xa0, 0x96, 0x8a, 0xa2, 0xb6, 0xbb, 0xad, 0x98, - 0x94, 0x9e, 0xa8, 0xaa, 0x95, 0x8d, 0x82, 0x87, 0x99, 0x97, 0x85, 0x80, 0x9c, 0xb6, 0xb2, 0x9b, - 0x8e, 0x9a, 0xaf, 0xb2, 0xc6, 0xc6, 0xa2, 0x85, 0x8e, 0x9e, 0xa4, 0x9c, 0x7e, 0x7a, 0x88, 0x94, - 0xa2, 0xa4, 0xa5, 0xb3, 0xa4, 0xa2, 0x9d, 0x76, 0x73, 0x75, 0x77, 0x71, 0x6a, 0x62, 0x58, 0x66, - 0x8f, 0x90, 0x94, 0x85, 0x75, 0x81, 0x84, 0x8c, 0x83, 0x8b, 0x98, 0x9a, 0x92, 0x83, 0x73, 0x70, - 0x86, 0x90, 0x8f, 0x7e, 0x77, 0x75, 0x6c, 0x75, 0x73, 0x64, 0x58, 0x59, 0x5f, 0x58, 0x54, 0x53, - 0x5b, 0x61, 0x61, 0x5a, 0x45, 0x37, 0x16, 0x13, 0x3b, 0x4d, 0x49, 0x42, 0x43, 0x59, 0x76, 0x78, - 0x63, 0x57, 0x50, 0x57, 0x61, 0x61, 0x69, 0x86, 0x9f, 0xa5, 0xab, 0xa4, 0x94, 0x7d, 0x7b, 0x97, - 0xa2, 0x81, 0x6d, 0x59, 0x57, 0x5d, 0x5b, 0x54, 0x44, 0x38, 0x5d, 0x76, 0x76, 0x73, 0x7a, 0x87, - 0x93, 0x8b, 0x92, 0x95, 0x7b, 0x69, 0x7e, 0x70, 0x67, 0x66, 0x74, 0x76, 0x76, 0x84, 0x7c, 0x7b, - 0x89, 0x78, 0x7a, 0x86, 0x76, 0x83, 0x9d, 0xb1, 0xb0, 0x98, 0x7b, 0x82, 0x9e, 0xad, 0xa3, 0x83, - 0x66, 0x65, 0x6f, 0x64, 0x62, 0x63, 0x6b, 0x6b, 0x82, 0x88, 0x79, 0x7d, 0x76, 0x81, 0x94, 0x95, - 0x7e, 0x72, 0x69, 0x84, 0xa5, 0x95, 0x6c, 0x65, 0x6f, 0x73, 0x71, 0x7c, 0x7d, 0x7c, 0x80, 0x91, - 0xae, 0x9b, 0x8b, 0x9d, 0xb5, 0xd9, 0xd1, 0xb7, 0xa9, 0x9a, 0x97, 0x99, 0xb1, 0xbd, 0xab, 0x9f, - 0x87, 0x7b, 0x66, 0x4f, 0x45, 0x57, 0x6f, 0x75, 0x89, 0x87, 0x97, 0xb0, 0xb0, 0xa9, 0x9c, 0x92, - 0x9e, 0xa2, 0xa3, 0xa2, 0xac, 0xbb, 0xaa, 0xab, 0xab, 0xa3, 0xad, 0xa2, 0xa8, 0xbe, 0xc1, 0xa6, - 0x9b, 0xad, 0xb0, 0xb0, 0x9b, 0x7e, 0x84, 0x82, 0x91, 0x8c, 0x91, 0x97, 0x86, 0x77, 0x68, 0x5c, - 0x59, 0x46, 0x38, 0x51, 0x5a, 0x64, 0x56, 0x57, 0x69, 0x76, 0x70, 0x60, 0x3f, 0x49, 0x68, 0x7d, - 0xa1, 0x88, 0x7b, 0x7e, 0x73, 0x89, 0x84, 0x69, 0x6f, 0x68, 0x83, 0x8b, 0x6f, 0x66, 0x73, 0x88, - 0x88, 0x87, 0x6c, 0x54, 0x53, 0x59, 0x73, 0x74, 0x69, 0x75, 0x75, 0x6c, 0x75, 0x69, 0x4f, 0x2a, - 0x2a, 0x3f, 0x4f, 0x64, 0x62, 0x4b, 0x6b, 0x9c, 0xa1, 0x6e, 0x59, 0x4e, 0x50, 0x53, 0x6b, 0x85, - 0x80, 0x7a, 0x79, 0x86, 0x8c, 0x87, 0x69, 0x64, 0x85, 0x80, 0x67, 0x4d, 0x4e, 0x63, 0x6d, 0x71, - 0x69, 0x3c, 0x36, 0x4f, 0x71, 0x8f, 0x86, 0x95, 0x92, 0x81, 0x9b, 0xa7, 0x8a, 0x71, 0x82, 0x97, - 0x96, 0xac, 0x93, 0x99, 0xa6, 0xb0, 0xa7, 0x85, 0x82, 0x8a, 0x80, 0x88, 0x95, 0x94, 0x97, 0x99, - 0xa0, 0xa6, 0x96, 0x8e, 0x8f, 0xa2, 0xbf, 0xb6, 0x97, 0x8e, 0x7c, 0x90, 0xaf, 0xbe, 0xba, 0xa5, - 0xa9, 0xbb, 0xab, 0x9c, 0x86, 0x84, 0x9e, 0xa5, 0xa7, 0x95, 0x83, 0x8a, 0x96, 0x90, 0x96, 0x98, - 0x71, 0x69, 0x89, 0x8b, 0x69, 0x44, 0x42, 0x41, 0x3e, 0x54, 0x57, 0x44, 0x3c, 0x52, 0x6a, 0x83, - 0x7a, 0x70, 0x7d, 0x8e, 0xaa, 0xb1, 0x8c, 0x87, 0x97, 0x92, 0xad, 0xa5, 0x88, 0x60, 0x6d, 0x82, - 0x7c, 0x8f, 0x74, 0x6d, 0x82, 0x83, 0x73, 0x62, 0x3d, 0x47, 0x52, 0x5f, 0x76, 0x77, 0x62, 0x56, - 0x60, 0x7d, 0x8b, 0x6f, 0x66, 0x5a, 0x77, 0x8d, 0x6c, 0x65, 0x7b, 0x7a, 0x84, 0x85, 0x78, 0x8d, - 0x98, 0xb1, 0xc4, 0xb8, 0x9d, 0x94, 0x9a, 0xa7, 0xb3, 0x98, 0x78, 0x74, 0x73, 0x6e, 0x68, 0x68, - 0x63, 0x4f, 0x56, 0x5b, 0x5f, 0x63, 0x5d, 0x58, 0x7e, 0x9a, 0x8a, 0x77, 0x6a, 0x6c, 0x6a, 0x72, - 0x6c, 0x6a, 0x6d, 0x74, 0x8d, 0x8e, 0x6e, 0x8f, 0x90, 0x80, 0xa3, 0xa3, 0x8b, 0x89, 0x9d, 0x9f, - 0xa7, 0x9b, 0x92, 0x93, 0x95, 0x9f, 0xa5, 0x9e, 0x71, 0x6d, 0x6c, 0x70, 0x78, 0x8e, 0x8b, 0x8a, - 0x97, 0x7d, 0x6c, 0x68, 0x70, 0x82, 0x93, 0x96, 0x92, 0x88, 0x8f, 0x87, 0x7b, 0x91, 0x8d, 0x92, - 0xa8, 0xaf, 0xc5, 0xb3, 0x94, 0x8d, 0x80, 0x68, 0x5f, 0x54, 0x46, 0x4e, 0x67, 0x86, 0x94, 0xa7, - 0x99, 0x99, 0xba, 0xbb, 0xbc, 0xa8, 0x7b, 0x77, 0x9d, 0x97, 0x94, 0xa0, 0x82, 0x55, 0x5c, 0x61, - 0x51, 0x60, 0x61, 0x65, 0x83, 0x86, 0x75, 0x79, 0x72, 0x6b, 0x99, 0xa1, 0x7a, 0x83, 0x8f, 0x7c, - 0x98, 0xa2, 0x98, 0x9a, 0x95, 0x82, 0x94, 0x7a, 0x5d, 0x60, 0x84, 0x9d, 0xae, 0x9e, 0x83, 0x7c, - 0x91, 0xad, 0xa3, 0x90, 0x81, 0x7b, 0x8f, 0x83, 0x74, 0x84, 0x6b, 0x58, 0x5a, 0x48, 0x2f, 0x2b, - 0x38, 0x3b, 0x46, 0x45, 0x34, 0x22, 0x37, 0x3b, 0x4a, 0x52, 0x4b, 0x62, 0x8a, 0xa0, 0xa0, 0x9a, - 0x7d, 0x76, 0x84, 0x7b, 0x6b, 0x56, 0x46, 0x4d, 0x64, 0x63, 0x70, 0x88, 0x86, 0x82, 0x83, 0x84, - 0x87, 0x76, 0x61, 0x6c, 0x72, 0x62, 0x52, 0x5c, 0x5c, 0x5d, 0x74, 0x6e, 0x50, 0x55, 0x71, 0x83, - 0x86, 0x88, 0x83, 0x70, 0x71, 0x84, 0x86, 0x71, 0x77, 0x8a, 0x9a, 0xb0, 0xaf, 0xa2, 0x8e, 0x98, - 0x96, 0x8c, 0x7e, 0x67, 0x70, 0x8b, 0x9f, 0xb9, 0xaa, 0x98, 0xa1, 0x80, 0x81, 0x93, 0x7e, 0x6d, - 0x76, 0x97, 0xab, 0xa9, 0xa8, 0xad, 0x99, 0x92, 0x9d, 0x9e, 0x75, 0x64, 0x8d, 0xa2, 0x9a, 0xa0, - 0xab, 0x9e, 0x8a, 0x96, 0x9f, 0x96, 0x88, 0x8b, 0xb7, 0xd4, 0xc2, 0xc1, 0xb5, 0xa9, 0xae, 0x9e, - 0x84, 0x7c, 0x74, 0x87, 0xa2, 0x9f, 0x9c, 0x94, 0x95, 0x99, 0xab, 0xb0, 0xac, 0x93, 0x88, 0xa0, - 0x87, 0x85, 0x75, 0x67, 0x62, 0x6a, 0x7c, 0x92, 0x7d, 0x60, 0x6a, 0x76, 0x7b, 0x7a, 0x6c, 0x6a, - 0x6b, 0x6d, 0x5e, 0x4b, 0x57, 0x65, 0x76, 0x90, 0x9e, 0x8d, 0x88, 0x75, 0x84, 0x85, 0x4d, 0x34, - 0x46, 0x7a, 0x8b, 0x85, 0x79, 0x89, 0x8b, 0x77, 0xa7, 0x9a, 0x90, 0x84, 0x81, 0x93, 0x90, 0x8b, - 0x6f, 0x74, 0x72, 0x65, 0x6f, 0x5d, 0x3b, 0x32, 0x2c, 0x44, 0x68, 0x44, 0x29, 0x2f, 0x21, 0x39, - 0x51, 0x3d, 0x41, 0x64, 0x8b, 0xa2, 0x9c, 0x8a, 0x84, 0x7a, 0x8e, 0x94, 0x77, 0x53, 0x6c, 0x97, - 0xa3, 0xa4, 0xae, 0x97, 0x87, 0x90, 0x94, 0x82, 0x61, 0x5e, 0x6c, 0x6e, 0x4c, 0x49, 0x55, 0x4e, - 0x52, 0x6e, 0x81, 0x6e, 0x69, 0x6b, 0x76, 0x8b, 0x8e, 0x7a, 0x76, 0x6b, 0x67, 0x6e, 0x71, 0x6e, - 0x5d, 0x7b, 0xa3, 0xa2, 0x9a, 0x98, 0x9a, 0x86, 0x7a, 0x7a, 0x5a, 0x58, 0x70, 0x7b, 0x94, 0x90, - 0x8d, 0x89, 0x8f, 0x8c, 0x75, 0x57, 0x4a, 0x5e, 0x71, 0x8a, 0x8f, 0x91, 0x96, 0x90, 0x90, 0x8c, - 0x94, 0x72, 0x55, 0x62, 0x68, 0x70, 0x6f, 0x73, 0x86, 0x8e, 0x99, 0xa4, 0xa4, 0xa2, 0xb1, 0xcd, - 0xdf, 0xe2, 0xd6, 0xc4, 0xab, 0xa5, 0xa3, 0x95, 0x77, 0x8c, 0x87, 0x9b, 0xc4, 0xb0, 0xb1, 0xcb, - 0xcd, 0xb5, 0x8e, 0x87, 0x82, 0x7a, 0x7e, 0x81, 0x8c, 0x93, 0x8d, 0x81, 0xac, 0xd6, 0xb7, 0x93, - 0x82, 0x81, 0x87, 0x6c, 0x58, 0x6c, 0x7a, 0x7e, 0x8b, 0x90, 0x7d, 0x71, 0x74, 0x81, 0x8d, 0x8e, - 0x73, 0x74, 0x87, 0x84, 0x82, 0x7e, 0x68, 0x63, 0x78, 0x97, 0x98, 0x6e, 0x5a, 0x81, 0x91, 0x75, - 0x74, 0x7a, 0x65, 0x48, 0x4d, 0x69, 0x7d, 0x7b, 0x6e, 0x5f, 0x6e, 0x75, 0x57, 0x3e, 0x3a, 0x3c, - 0x3b, 0x46, 0x4d, 0x55, 0x58, 0x55, 0x5c, 0x53, 0x4b, 0x55, 0x71, 0x86, 0x8e, 0x98, 0x80, 0x73, - 0x6c, 0x66, 0x55, 0x60, 0x6f, 0x77, 0xa1, 0xc9, 0xbb, 0xb1, 0xad, 0xb2, 0x8f, 0x6c, 0x58, 0x54, - 0x52, 0x54, 0x46, 0x3e, 0x4c, 0x49, 0x5e, 0x74, 0x8f, 0x9e, 0x91, 0x8b, 0x8e, 0x92, 0x9f, 0x9a, - 0x71, 0x5f, 0x68, 0x6c, 0x7b, 0x6a, 0x5f, 0x7d, 0x9f, 0xb2, 0xb6, 0x9e, 0x83, 0x98, 0x9d, 0x97, - 0x8a, 0x7a, 0x6f, 0x6f, 0x8c, 0xb2, 0xa3, 0x8b, 0x8b, 0x8e, 0x91, 0x91, 0x7a, 0x62, 0x56, 0x61, - 0x72, 0x88, 0x82, 0x7a, 0x86, 0x9c, 0xa6, 0x97, 0x74, 0x60, 0x5d, 0x60, 0x6a, 0x79, 0x64, 0x4c, - 0x70, 0xa8, 0xbf, 0xac, 0xaa, 0xba, 0xd1, 0xf2, 0xd3, 0xa7, 0xa3, 0x86, 0x66, 0x6f, 0x79, 0x70, - 0x61, 0x6b, 0x88, 0x9c, 0x88, 0x8a, 0xa2, 0x97, 0x9d, 0x82, 0x60, 0x5f, 0x5c, 0x68, 0x7d, 0x9b, - 0x9e, 0x8d, 0xaf, 0xc8, 0xc1, 0xb8, 0x81, 0x78, 0x81, 0x75, 0x74, 0x6d, 0x66, 0x75, 0x7b, 0x81, - 0x7d, 0x75, 0x5d, 0x7d, 0xaf, 0xb6, 0xa6, 0x95, 0x8c, 0x71, 0x6f, 0x5a, 0x43, 0x41, 0x39, 0x58, - 0x7b, 0x8b, 0xae, 0xb9, 0xba, 0xc6, 0xbc, 0x84, 0x6c, 0x78, 0x87, 0x91, 0x88, 0x8e, 0x7b, 0x61, - 0x69, 0x79, 0x69, 0x3a, 0x1e, 0x2d, 0x31, 0x3d, 0x4d, 0x37, 0x40, 0x49, 0x3a, 0x4d, 0x5f, 0x57, - 0x69, 0x90, 0x8b, 0x83, 0x7c, 0x73, 0x6e, 0x4e, 0x5c, 0x6c, 0x55, 0x6a, 0x92, 0x9a, 0x9e, 0xae, - 0xb9, 0xb2, 0xb2, 0xa0, 0x81, 0x65, 0x5a, 0x59, 0x3e, 0x26, 0x46, 0x5c, 0x52, 0x7b, 0xa4, 0xb4, - 0xba, 0xa7, 0x9e, 0x9b, 0x79, 0x83, 0x8e, 0x7c, 0x76, 0x59, 0x69, 0x73, 0x6e, 0x8f, 0x98, 0x8e, - 0x88, 0x8b, 0x9c, 0x8e, 0x9c, 0xa4, 0x84, 0x7c, 0x66, 0x6d, 0x67, 0x5c, 0x74, 0x7d, 0x9c, 0xbc, - 0xc5, 0xb2, 0x8c, 0x78, 0x77, 0x7a, 0x82, 0x84, 0x84, 0x93, 0x96, 0x99, 0x9d, 0x94, 0x85, 0x71, - 0x59, 0x69, 0x72, 0x5f, 0x73, 0x74, 0x70, 0x6b, 0x78, 0x7a, 0x7c, 0xaf, 0xdc, 0xe4, 0xea, 0xf4, - 0xfe, 0xc0, 0xa9, 0xa7, 0x83, 0x6d, 0x6c, 0x86, 0x96, 0x96, 0xa3, 0xa4, 0xb0, 0xb2, 0xa1, 0x86, - 0x6a, 0x4a, 0x3d, 0x3c, 0x45, 0x4e, 0x5c, 0x74, 0x93, 0x98, 0x99, 0xa9, 0x96, 0x7a, 0x90, 0x9c, - 0x80, 0x6f, 0x67, 0x64, 0x75, 0x77, 0x78, 0x74, 0x70, 0x92, 0xac, 0x97, 0x7e, 0x6f, 0x88, 0x86, - 0x85, 0x78, 0x6e, 0x5a, 0x4d, 0x48, 0x53, 0x6f, 0x7e, 0x95, 0xbe, 0xd1, 0xdb, 0xdb, 0xa4, 0x81, - 0x6f, 0x5e, 0x6a, 0x71, 0x57, 0x60, 0x7b, 0x78, 0x79, 0x7c, 0x48, 0x33, 0x27, 0x25, 0x28, 0x2e, - 0x3b, 0x43, 0x47, 0x3f, 0x48, 0x51, 0x48, 0x49, 0x50, 0x4a, 0x3b, 0x5a, 0x65, 0x60, 0x5f, 0x59, - 0x64, 0x76, 0x7a, 0x77, 0x93, 0x98, 0x9f, 0xb0, 0xd6, 0xdb, 0xb4, 0x8e, 0x66, 0x58, 0x5a, 0x5c, - 0x55, 0x54, 0x52, 0x56, 0x6a, 0x82, 0x8e, 0x87, 0x7a, 0x8f, 0x91, 0x7d, 0x89, 0x9a, 0x9c, 0x8a, - 0x94, 0x91, 0x9a, 0xa2, 0x9e, 0xb3, 0xc8, 0xce, 0x98, 0x72, 0x9a, 0x9f, 0x84, 0x78, 0x72, 0x69, - 0x5c, 0x63, 0x87, 0x96, 0x99, 0xa9, 0xbb, 0xaf, 0xb9, 0xaf, 0x7e, 0x84, 0x7a, 0x6e, 0x87, 0x80, - 0x7d, 0x74, 0x80, 0x76, 0x66, 0x69, 0x4d, 0x49, 0x42, 0x51, 0x7a, 0x92, 0x9c, 0x91, 0x8e, 0x8d, - 0x71, 0x71, 0xaa, 0xbc, 0xb3, 0xbb, 0xbd, 0xd2, 0xdc, 0xbe, 0x9c, 0x9b, 0x93, 0x8c, 0x84, 0x76, - 0x90, 0xa6, 0xaa, 0xc1, 0xc6, 0x9d, 0xa2, 0x8c, 0x64, 0x6c, 0x55, 0x57, 0x6a, 0x67, 0x7a, 0x92, - 0x9c, 0x84, 0x67, 0x66, 0x68, 0x5c, 0x6e, 0x5d, 0x6d, 0x89, 0x76, 0x82, 0x8a, 0x7b, 0x79, 0x8a, - 0x90, 0x95, 0x87, 0x7a, 0x79, 0x7c, 0x81, 0x6b, 0x66, 0x68, 0x63, 0x57, 0x45, 0x48, 0x52, 0x63, - 0x87, 0x9f, 0xc2, 0xd1, 0xc7, 0xc8, 0xb2, 0x9d, 0x8e, 0x80, 0x80, 0x95, 0xa2, 0x91, 0x7c, 0x80, - 0x83, 0x75, 0x47, 0x28, 0x31, 0x3b, 0x4f, 0x4d, 0x45, 0x46, 0x41, 0x3d, 0x42, 0x6c, 0x73, 0x5b, - 0x4f, 0x3b, 0x42, 0x4f, 0x65, 0x76, 0x7b, 0x75, 0x84, 0x78, 0x83, 0x7e, 0x79, 0x9b, 0xbc, 0xcf, - 0xcc, 0xa6, 0x89, 0x7b, 0x5c, 0x5c, 0x4d, 0x3b, 0x3f, 0x3e, 0x3e, 0x3d, 0x4a, 0x6d, 0x67, 0x5c, - 0x58, 0x52, 0x76, 0x7b, 0x70, 0x6e, 0x6d, 0x74, 0x79, 0x79, 0x91, 0xae, 0xb7, 0xa0, 0x8e, 0x81, - 0x71, 0x63, 0x6d, 0x85, 0x94, 0xa2, 0x95, 0x72, 0x85, 0x9a, 0xa6, 0x9f, 0xa2, 0xaf, 0xb6, 0xa0, - 0x6c, 0x8b, 0x89, 0x75, 0x6d, 0x6b, 0x91, 0x96, 0x7d, 0x7c, 0x8f, 0xac, 0xa8, 0x85, 0x81, 0x7e, - 0x8a, 0xa5, 0x9b, 0x9c, 0x8c, 0x51, 0x60, 0x94, 0x8b, 0x99, 0x8f, 0x82, 0x97, 0x9d, 0xcb, 0xd7, - 0xd2, 0xc8, 0xae, 0xb1, 0xb2, 0xba, 0xc6, 0xb3, 0xaa, 0xab, 0xc2, 0xd5, 0xbf, 0x9b, 0x7a, 0x75, - 0x73, 0x61, 0x63, 0x6f, 0x73, 0x82, 0x90, 0x95, 0x8a, 0x82, 0x77, 0x6d, 0x60, 0x61, 0x69, 0x6b, - 0x69, 0x7e, 0x8c, 0x89, 0x86, 0x77, 0x7a, 0x7b, 0x88, 0x7c, 0x78, 0x6b, 0x4c, 0x55, 0x5b, 0x6b, - 0x7d, 0x68, 0x56, 0x51, 0x51, 0x5c, 0x6b, 0x83, 0x98, 0xaf, 0xc0, 0xa7, 0x93, 0x88, 0x7d, 0x8d, - 0x87, 0x79, 0x7d, 0x70, 0x5d, 0x74, 0x85, 0x72, 0x82, 0x65, 0x41, 0x36, 0x44, 0x67, 0x66, 0x62, - 0x59, 0x52, 0x45, 0x4b, 0x5d, 0x52, 0x48, 0x38, 0x32, 0x2a, 0x2a, 0x3c, 0x52, 0x5d, 0x64, 0x7e, - 0x89, 0x7e, 0x83, 0x92, 0xac, 0xbc, 0xda, 0xe1, 0xc4, 0xa0, 0x98, 0x95, 0x91, 0x6e, 0x4c, 0x4b, - 0x40, 0x4c, 0x62, 0x5e, 0x68, 0x56, 0x51, 0x5a, 0x63, 0x77, 0x80, 0x83, 0x8f, 0x93, 0x9f, 0xa2, - 0xa2, 0xb7, 0xbf, 0xc7, 0xc3, 0x9c, 0x97, 0x81, 0x6c, 0x85, 0x8e, 0x94, 0x8e, 0x82, 0x73, 0x56, - 0x68, 0x7a, 0x72, 0x8f, 0x99, 0x96, 0xa8, 0x93, 0x8b, 0x8c, 0x7d, 0x71, 0x7a, 0x7a, 0x78, 0x76, - 0x8c, 0x8b, 0x78, 0x7e, 0x85, 0x9d, 0x94, 0x7b, 0x84, 0x7b, 0x60, 0x6a, 0x75, 0x6f, 0x78, 0x85, - 0x7c, 0x87, 0x8f, 0x90, 0x9b, 0x99, 0x87, 0x8b, 0xa4, 0xa5, 0xa8, 0xc3, 0xc1, 0x98, 0x8c, 0x87, - 0x97, 0xb0, 0xaf, 0xba, 0xae, 0x95, 0x93, 0xb0, 0xb0, 0x9d, 0x92, 0x80, 0x86, 0x8b, 0x76, 0x61, - 0x63, 0x5d, 0x61, 0x75, 0x79, 0x76, 0x6f, 0x76, 0x78, 0x6c, 0x79, 0x82, 0x8b, 0x88, 0x8a, 0x93, - 0xaa, 0xa3, 0x89, 0x78, 0x5a, 0x59, 0x79, 0x75, 0x63, 0x5c, 0x5b, 0x48, 0x4e, 0x7c, 0x9f, 0x95, - 0x8c, 0x8f, 0x7b, 0x69, 0x81, 0x8b, 0x8c, 0x80, 0x86, 0x91, 0x91, 0x99, 0x91, 0x81, 0x6d, 0x5f, - 0x5e, 0x58, 0x5b, 0x4b, 0x50, 0x65, 0x5f, 0x49, 0x31, 0x40, 0x50, 0x5f, 0x58, 0x4f, 0x5e, 0x66, - 0x71, 0x81, 0x6d, 0x6f, 0x90, 0x96, 0x7a, 0x74, 0x79, 0x7d, 0x77, 0x85, 0x9b, 0x98, 0xb0, 0xb4, - 0x97, 0xa1, 0x9e, 0x76, 0x5f, 0x51, 0x53, 0x45, 0x52, 0x68, 0x57, 0x3f, 0x4c, 0x55, 0x65, 0x6e, - 0x6e, 0x5f, 0x68, 0x83, 0x89, 0x9f, 0xa5, 0x9a, 0xa1, 0x94, 0x88, 0x84, 0x85, 0x94, 0x97, 0x71, - 0x66, 0x78, 0x8e, 0x91, 0x88, 0x7b, 0x76, 0x6f, 0x79, 0x8e, 0x91, 0xa0, 0xa9, 0xa4, 0xa7, 0x8d, - 0x76, 0x6c, 0x77, 0x68, 0x56, 0x68, 0x7e, 0x8a, 0x88, 0x8d, 0xa9, 0xa7, 0xa5, 0xb0, 0xb8, 0xa7, - 0x9e, 0x99, 0x93, 0x93, 0x77, 0x70, 0x85, 0x9f, 0xa3, 0x97, 0x99, 0xab, 0x97, 0x80, 0x7b, 0x8d, - 0xa6, 0xb3, 0x9b, 0x8f, 0x9c, 0xa6, 0x9a, 0x98, 0xa4, 0xa9, 0xac, 0xaa, 0xb3, 0xac, 0xa8, 0xa1, - 0x94, 0x79, 0x61, 0x59, 0x5c, 0x4f, 0x52, 0x5f, 0x5a, 0x66, 0x72, 0x6f, 0x7c, 0x86, 0x97, 0xa3, - 0x94, 0x80, 0x8d, 0x93, 0xa6, 0xa2, 0x83, 0x75, 0x76, 0x6b, 0x68, 0x63, 0x55, 0x44, 0x50, 0x65, - 0x6c, 0x6c, 0x6d, 0x71, 0x62, 0x59, 0x71, 0x86, 0x77, 0x72, 0x69, 0x56, 0x5e, 0x52, 0x5a, 0x5f, - 0x56, 0x71, 0x78, 0x6d, 0x6d, 0x44, 0x50, 0x63, 0x68, 0x65, 0x5c, 0x71, 0x6a, 0x57, 0x4f, 0x51, - 0x55, 0x42, 0x48, 0x4f, 0x63, 0x75, 0x89, 0x95, 0x81, 0x72, 0x6c, 0x52, 0x5f, 0x7b, 0x70, 0x73, - 0x88, 0x93, 0xab, 0xc0, 0xc3, 0xcf, 0xdc, 0xdf, 0xc8, 0x88, 0x81, 0x9b, 0x90, 0x8b, 0x84, 0x74, - 0x5b, 0x46, 0x36, 0x34, 0x54, 0x57, 0x42, 0x50, 0x6c, 0x87, 0x9e, 0xa3, 0xa6, 0x97, 0x9f, 0xc1, - 0xce, 0xbb, 0xb5, 0xa8, 0x8f, 0xa1, 0xb1, 0x99, 0x8c, 0x81, 0x90, 0x93, 0x87, 0x91, 0x86, 0x81, - 0x7e, 0x72, 0x78, 0x96, 0x94, 0x8e, 0x93, 0x7a, 0x74, 0x83, 0x87, 0x8b, 0x80, 0x77, 0x92, 0xa1, - 0x91, 0x78, 0x62, 0x77, 0x82, 0x7d, 0x7e, 0x7c, 0x7c, 0x7e, 0x77, 0x5e, 0x79, 0x88, 0x83, 0x85, - 0x8b, 0x8b, 0x81, 0x76, 0x79, 0x90, 0x94, 0x90, 0x95, 0x88, 0x86, 0x78, 0x69, 0x7e, 0x8a, 0x90, - 0x94, 0xa3, 0xb7, 0xb5, 0xac, 0xb3, 0xa8, 0x9a, 0x9d, 0x9c, 0x86, 0x78, 0x65, 0x61, 0x68, 0x5c, - 0x4f, 0x60, 0x76, 0x72, 0x60, 0x54, 0x6e, 0x6e, 0x6b, 0x7d, 0x89, 0x84, 0x83, 0x9c, 0xa3, 0x91, - 0xa2, 0xa3, 0x97, 0x93, 0x95, 0x74, 0x80, 0x97, 0x95, 0x78, 0x66, 0x65, 0x5a, 0x54, 0x6a, 0x73, - 0x72, 0x67, 0x66, 0x76, 0x78, 0x7e, 0x96, 0x7c, 0x6c, 0x75, 0x6f, 0x75, 0x76, 0x6f, 0x6c, 0x6d, - 0x7c, 0x78, 0x67, 0x5c, 0x5a, 0x3d, 0x41, 0x5b, 0x54, 0x54, 0x62, 0x71, 0x6e, 0x6d, 0x65, 0x72, - 0x6d, 0x5b, 0x67, 0x55, 0x63, 0x74, 0x67, 0x70, 0x6c, 0x6e, 0x7b, 0x9c, 0x99, 0x96, 0x82, 0x86, - 0x9b, 0x81, 0x73, 0x7a, 0x7b, 0x65, 0x59, 0x49, 0x4f, 0x5e, 0x57, 0x59, 0x56, 0x6c, 0x75, 0x6c, - 0x7c, 0x89, 0x7b, 0x60, 0x6d, 0x82, 0x86, 0x94, 0x98, 0x93, 0x9f, 0x9d, 0x99, 0xa4, 0xaf, 0xae, - 0xa0, 0x99, 0xa3, 0xa5, 0x9c, 0x9c, 0x9c, 0x8a, 0x79, 0x9b, 0x9c, 0x89, 0x93, 0xa1, 0x7b, 0x76, - 0x8f, 0x9f, 0x9e, 0x9e, 0x94, 0x78, 0x8f, 0xa4, 0xa5, 0x96, 0x9d, 0xb0, 0xae, 0xad, 0xac, 0x8e, - 0x78, 0x8d, 0x8f, 0x94, 0x92, 0x8f, 0x94, 0x8e, 0x8e, 0xa4, 0xa6, 0x86, 0x8d, 0x9d, 0x92, 0x87, - 0x73, 0x70, 0x82, 0x85, 0x89, 0x99, 0x9b, 0xa1, 0x9d, 0x97, 0xaa, 0x9f, 0x84, 0x88, 0x84, 0x84, - 0x8a, 0x7e, 0x6b, 0x69, 0x5c, 0x5f, 0x74, 0x65, 0x5c, 0x5f, 0x66, 0x91, 0x7e, 0x66, 0x6b, 0x73, - 0x74, 0x5c, 0x5c, 0x82, 0x7a, 0x63, 0x6a, 0x65, 0x6b, 0x72, 0x63, 0x6e, 0x7c, 0x70, 0x5e, 0x6a, - 0x76, 0x70, 0x67, 0x76, 0x7a, 0x72, 0x71, 0x6a, 0x5e, 0x5a, 0x69, 0x81, 0x6c, 0x57, 0x67, 0x62, - 0x62, 0x52, 0x64, 0x7a, 0x71, 0x75, 0x71, 0x68, 0x6c, 0x72, 0x56, 0x55, 0x74, 0x7d, 0x72, 0x78, - 0x76, 0x80, 0x72, 0x62, 0x67, 0x5a, 0x56, 0x6a, 0x6b, 0x76, 0x7b, 0x65, 0x6e, 0x84, 0x8d, 0x8c, - 0x8d, 0x9d, 0x9b, 0x8e, 0xbc, 0xce, 0xbc, 0xb1, 0xac, 0x9c, 0x8a, 0x7d, 0x79, 0x7e, 0x75, 0x76, - 0x78, 0x6f, 0x6c, 0x72, 0x77, 0x81, 0x88, 0x80, 0x76, 0x72, 0x68, 0x62, 0x8a, 0x96, 0x98, 0xb1, - 0x9a, 0x8a, 0x8d, 0x95, 0xa2, 0x8e, 0x8d, 0x8e, 0x7d, 0x79, 0x76, 0x91, 0x91, 0x77, 0x8f, 0x98, - 0x7b, 0x64, 0x66, 0x74, 0x79, 0x8b, 0x8b, 0x9d, 0xa2, 0x97, 0x8a, 0x83, 0x7b, 0x6c, 0x70, 0x7a, - 0x7b, 0x85, 0x81, 0x8c, 0x93, 0x88, 0x85, 0x80, 0x83, 0x8a, 0x86, 0x8e, 0x8e, 0xa7, 0xae, 0x7e, - 0x86, 0x88, 0x78, 0x72, 0x6a, 0x6f, 0x72, 0x6d, 0x6e, 0x7c, 0x8f, 0x7b, 0x85, 0x8c, 0x81, 0x8e, - 0x93, 0xa0, 0xb3, 0xa7, 0x98, 0xb6, 0xa6, 0x9a, 0x96, 0x78, 0x6e, 0x6d, 0x70, 0x78, 0x6c, 0x67, - 0x79, 0x89, 0x8a, 0x81, 0x6e, 0x65, 0x75, 0x86, 0x75, 0x73, 0x87, 0x8b, 0x78, 0x6b, 0x7c, 0x8a, - 0x8f, 0x97, 0x7d, 0x83, 0x6b, 0x55, 0x5b, 0x67, 0x74, 0x73, 0x81, 0x77, 0x87, 0x79, 0x7a, 0x8b, - 0x70, 0x75, 0x7c, 0x74, 0x72, 0x78, 0x80, 0x88, 0x69, 0x6f, 0x83, 0x6d, 0x61, 0x60, 0x4b, 0x4f, - 0x6d, 0x6a, 0x73, 0x6a, 0x5f, 0x73, 0x70, 0x72, 0x6a, 0x67, 0x57, 0x59, 0x5a, 0x5f, 0x7c, 0x8d, - 0x71, 0x6e, 0x6b, 0x66, 0x74, 0x76, 0x87, 0x7e, 0x77, 0xa0, 0x96, 0x79, 0x85, 0xa4, 0xa4, 0x92, - 0x9d, 0xa1, 0x84, 0x7e, 0x77, 0x78, 0x64, 0x64, 0x77, 0x7e, 0x80, 0x75, 0x5c, 0x62, 0x7a, 0x6c, - 0x55, 0x62, 0x67, 0x69, 0x6d, 0x84, 0x95, 0x8e, 0x80, 0x70, 0x5d, 0x7d, 0x9a, 0x9d, 0x91, 0x94, - 0xae, 0x8d, 0x80, 0xa0, 0xa4, 0x92, 0x90, 0x8c, 0x81, 0x8e, 0xa1, 0xa5, 0xa5, 0xa6, 0x9f, 0x9b, - 0x95, 0x9a, 0xa1, 0x82, 0x7d, 0x95, 0x95, 0xaf, 0xa6, 0x93, 0x89, 0x9e, 0xaa, 0xa1, 0x99, 0x97, - 0x8b, 0x96, 0xa9, 0xb0, 0xa2, 0x8c, 0x92, 0x87, 0x87, 0x8e, 0x95, 0x7e, 0x6a, 0x5f, 0x62, 0x6c, - 0x7d, 0x90, 0x90, 0x8c, 0x83, 0x75, 0x70, 0x87, 0x8f, 0x97, 0x91, 0x9a, 0xa7, 0x93, 0x8e, 0x9c, - 0x89, 0x7d, 0x6e, 0x63, 0x75, 0x7b, 0x89, 0x71, 0x66, 0x80, 0x62, 0x4e, 0x5f, 0x5b, 0x49, 0x4e, - 0x5c, 0x62, 0x5d, 0x62, 0x6f, 0x73, 0x5e, 0x5c, 0x69, 0x73, 0x6b, 0x51, 0x42, 0x43, 0x4d, 0x66, - 0x7b, 0x71, 0x5b, 0x5b, 0x6b, 0x78, 0x7d, 0x74, 0x64, 0x70, 0x7d, 0x88, 0x85, 0x82, 0x71, 0x68, - 0x6d, 0x5e, 0x6f, 0x77, 0x59, 0x4f, 0x64, 0x73, 0x73, 0x6a, 0x76, 0x88, 0x80, 0x78, 0x7a, 0x90, - 0xa8, 0x9c, 0x8c, 0x7c, 0x85, 0x97, 0xa3, 0x97, 0x92, 0x8d, 0x6c, 0x63, 0x75, 0x8e, 0x96, 0x8c, - 0x81, 0x8e, 0x9d, 0x9c, 0x7a, 0x8b, 0xa9, 0x97, 0x81, 0x8b, 0x83, 0x74, 0x68, 0x7c, 0x86, 0x8a, - 0x8c, 0x88, 0x9c, 0x94, 0x8d, 0x8f, 0x7d, 0x7e, 0x84, 0x89, 0x84, 0x8b, 0x89, 0x8e, 0xa3, 0xa2, - 0x92, 0x85, 0x7b, 0x87, 0x9b, 0x97, 0x7d, 0x6e, 0x72, 0x73, 0x6d, 0x87, 0x87, 0x79, 0x62, 0x67, - 0x6d, 0x74, 0x84, 0x74, 0x72, 0x6a, 0x6f, 0x80, 0x79, 0x88, 0x8c, 0x8b, 0x83, 0x86, 0x84, 0x9f, - 0xaa, 0x95, 0x8e, 0x8c, 0x91, 0x98, 0x94, 0x93, 0x9a, 0x8a, 0x99, 0x9c, 0x8f, 0x95, 0x7a, 0x6a, - 0x7a, 0x7b, 0x73, 0x6d, 0x65, 0x71, 0x7b, 0x76, 0x8a, 0x97, 0x87, 0x9a, 0xa0, 0x90, 0x96, 0x95, - 0x96, 0x92, 0x9a, 0x91, 0x94, 0x87, 0x7b, 0x8a, 0x89, 0x82, 0x6c, 0x6a, 0x7c, 0x7b, 0x77, 0x63, - 0x51, 0x7b, 0x85, 0x77, 0x80, 0x87, 0x87, 0x62, 0x66, 0x76, 0x7a, 0x84, 0x71, 0x68, 0x6f, 0x79, - 0x6c, 0x65, 0x72, 0x7e, 0x6e, 0x5f, 0x75, 0x8e, 0x94, 0x93, 0x91, 0x7d, 0x6e, 0x6b, 0x7d, 0x6e, - 0x6f, 0x69, 0x5f, 0x74, 0x7a, 0x70, 0x68, 0x70, 0x6c, 0x5d, 0x64, 0x68, 0x58, 0x53, 0x58, 0x69, - 0x76, 0x7d, 0x84, 0x86, 0x8b, 0x89, 0x8d, 0x8f, 0x7e, 0x74, 0x72, 0x74, 0x70, 0x6c, 0x5f, 0x65, - 0x71, 0x6e, 0x73, 0x6f, 0x6b, 0x7a, 0x89, 0x8f, 0x86, 0x74, 0x80, 0x85, 0x83, 0x91, 0x87, 0x6e, - 0x6c, 0x6f, 0x67, 0x65, 0x71, 0x66, 0x6c, 0x7c, 0x78, 0x7c, 0x69, 0x6c, 0x76, 0x6d, 0x7b, 0x86, - 0x95, 0xa4, 0xa3, 0x9d, 0x9e, 0x87, 0x93, 0xa0, 0x83, 0x7b, 0x80, 0x7b, 0x83, 0x8b, 0x8d, 0x8a, - 0x88, 0x8e, 0x8a, 0x88, 0x9c, 0x9b, 0x89, 0x8a, 0x92, 0xaa, 0xad, 0xa9, 0xa0, 0xa2, 0xa5, 0xaf, - 0xaa, 0x9a, 0xaa, 0xae, 0x90, 0x8b, 0x90, 0x99, 0x7e, 0x84, 0x95, 0x8f, 0x8d, 0x83, 0x9b, 0x97, - 0x94, 0x8c, 0x82, 0x93, 0x94, 0x8e, 0x84, 0x88, 0x71, 0x6b, 0x6b, 0x61, 0x5d, 0x67, 0x7b, 0x73, - 0x79, 0x82, 0x84, 0x8a, 0x8b, 0x8b, 0x91, 0x91, 0x92, 0xa2, 0x8f, 0x8e, 0x93, 0x86, 0x83, 0x6d, - 0x6f, 0x7c, 0x65, 0x56, 0x58, 0x69, 0x63, 0x4d, 0x5d, 0x68, 0x71, 0x6a, 0x65, 0x6e, 0x71, 0x6b, - 0x67, 0x70, 0x7b, 0x87, 0x76, 0x66, 0x67, 0x67, 0x6e, 0x6a, 0x67, 0x71, 0x87, 0x6f, 0x6c, 0x78, - 0x77, 0x7e, 0x75, 0x71, 0x6b, 0x68, 0x6e, 0x67, 0x61, 0x5f, 0x68, 0x5e, 0x66, 0x69, 0x6f, 0x78, - 0x70, 0x6b, 0x61, 0x5a, 0x60, 0x5b, 0x48, 0x6c, 0x85, 0x81, 0x8a, 0x8b, 0x90, 0x92, 0x8c, 0x8e, - 0x94, 0x8a, 0x95, 0x90, 0x8d, 0x9f, 0x8c, 0x90, 0xa0, 0x97, 0x91, 0x8c, 0x89, 0x88, 0x8b, 0x92, - 0x9d, 0xa4, 0xa4, 0x8c, 0x8a, 0x8f, 0x8e, 0x80, 0x75, 0x82, 0x84, 0x7b, 0x7b, 0x7e, 0x82, 0x7e, - 0x83, 0x78, 0x6e, 0x76, 0x6b, 0x6e, 0x79, 0x92, 0x9e, 0x9c, 0x96, 0x9f, 0xa6, 0x9e, 0x9f, 0x91, - 0x94, 0x92, 0x8d, 0x81, 0x76, 0x82, 0x8d, 0x86, 0x80, 0x83, 0x87, 0x7c, 0x6c, 0x75, 0x84, 0x7a, - 0x71, 0x70, 0x7b, 0x77, 0x75, 0x6e, 0x6c, 0x76, 0x70, 0x71, 0x75, 0x85, 0x8a, 0x77, 0x85, 0x83, - 0x6f, 0x73, 0x81, 0x87, 0x77, 0x82, 0x8e, 0x87, 0x8c, 0x8b, 0x8b, 0x8e, 0x86, 0x83, 0x7e, 0x7a, - 0x76, 0x60, 0x65, 0x80, 0x96, 0x87, 0x7e, 0x84, 0x80, 0x85, 0x8d, 0x8d, 0x95, 0x94, 0x8e, 0x81, - 0x89, 0x8d, 0x8b, 0x8b, 0x94, 0x9c, 0x8b, 0x8a, 0x95, 0x8a, 0x85, 0x92, 0x93, 0x83, 0x7d, 0x87, - 0x7b, 0x75, 0x7c, 0x86, 0x87, 0x74, 0x7b, 0x6f, 0x77, 0x81, 0x70, 0x76, 0x80, 0x78, 0x69, 0x59, - 0x60, 0x67, 0x71, 0x7a, 0x83, 0x86, 0x78, 0x7b, 0x79, 0x70, 0x76, 0x71, 0x6a, 0x5f, 0x5c, 0x58, - 0x54, 0x62, 0x5c, 0x5e, 0x7b, 0x79, 0x7d, 0x6c, 0x69, 0x7b, 0x74, 0x6c, 0x70, 0x7b, 0x76, 0x78, - 0x86, 0x94, 0x95, 0x7e, 0x78, 0x7e, 0x86, 0x78, 0x73, 0x7b, 0x81, 0x75, 0x6c, 0x61, 0x77, 0x7e, - 0x69, 0x7e, 0x86, 0x73, 0x71, 0x72, 0x7e, 0x8f, 0x9c, 0x88, 0x81, 0x84, 0x7b, 0x72, 0x78, 0x83, - 0x77, 0x7b, 0x74, 0x72, 0x7e, 0x78, 0x77, 0x79, 0x77, 0x82, 0x8b, 0x7c, 0x83, 0x92, 0x99, 0x93, - 0x9a, 0x96, 0x96, 0x91, 0x90, 0x8b, 0x85, 0x92, 0x8f, 0x77, 0x71, 0x74, 0x6c, 0x6e, 0x80, 0x8d, - 0x8f, 0x8e, 0x97, 0x91, 0x9a, 0xa1, 0xa4, 0x98, 0x9d, 0x97, 0x88, 0x8d, 0x84, 0x84, 0x8b, 0x8d, - 0xa4, 0xa4, 0x96, 0x94, 0x92, 0x89, 0x86, 0x92, 0x95, 0x92, 0x95, 0x97, 0x98, 0x9a, 0x9d, 0x95, - 0x91, 0x89, 0x8e, 0x8e, 0x87, 0x80, 0x7d, 0x73, 0x79, 0x79, 0x73, 0x70, 0x7d, 0x77, 0x75, 0x84, - 0x84, 0x83, 0x7e, 0x89, 0x9d, 0x94, 0x8b, 0x87, 0x7d, 0x7a, 0x87, 0x83, 0x7e, 0x77, 0x82, 0x70, - 0x6b, 0x6b, 0x67, 0x59, 0x60, 0x5b, 0x6a, 0x73, 0x62, 0x55, 0x5e, 0x6c, 0x6a, 0x5b, 0x5c, 0x6a, - 0x63, 0x5e, 0x5c, 0x5f, 0x5c, 0x59, 0x5a, 0x4e, 0x58, 0x5e, 0x70, 0x6f, 0x7e, 0x81, 0x6d, 0x77, - 0x80, 0x77, 0x77, 0x75, 0x68, 0x6a, 0x6b, 0x6a, 0x73, 0x65, 0x68, 0x70, 0x71, 0x73, 0x77, 0x66, - 0x64, 0x68, 0x70, 0x79, 0x80, 0x83, 0x8b, 0x91, 0x95, 0x9d, 0x99, 0x95, 0x97, 0xa4, 0xa9, 0xa4, - 0xa2, 0xa6, 0xa1, 0xa1, 0xa4, 0x96, 0x9c, 0x8b, 0x87, 0x9a, 0x95, 0x8d, 0x8a, 0x8b, 0x91, 0x91, - 0x94, 0x88, 0x7e, 0x7a, 0x72, 0x78, 0x80, 0x7a, 0x82, 0x8d, 0x88, 0x83, 0x86, 0x77, 0x7d, 0x77, - 0x6e, 0x84, 0x82, 0x8e, 0x8c, 0x83, 0x8e, 0x8a, 0x8c, 0x8a, 0x7b, 0x7c, 0x7e, 0x7d, 0x78, 0x71, - 0x7b, 0x70, 0x79, 0x71, 0x67, 0x68, 0x79, 0x7b, 0x65, 0x6a, 0x84, 0x7c, 0x75, 0x6a, 0x7b, 0x7a, - 0x6e, 0x7d, 0x7d, 0x86, 0x80, 0x8a, 0x8f, 0x96, 0x9d, 0x98, 0x8e, 0x99, 0x9e, 0x82, 0x92, 0x91, - 0x95, 0x8e, 0x8b, 0x8b, 0x83, 0x90, 0x8b, 0x87, 0x82, 0x85, 0x85, 0x7d, 0x78, 0x7b, 0x76, 0x68, - 0x7a, 0x7d, 0x68, 0x6b, 0x6f, 0x68, 0x68, 0x78, 0x78, 0x79, 0x83, 0x83, 0x86, 0x83, 0x81, 0x7e, - 0x83, 0x82, 0x8c, 0x89, 0x8a, 0x88, 0x8f, 0x84, 0x87, 0x89, 0x79, 0x6f, 0x71, 0x88, 0x8a, 0x80, - 0x81, 0x7b, 0x7b, 0x7c, 0x92, 0x8f, 0x7a, 0x8f, 0x95, 0x88, 0x8e, 0x82, 0x84, 0x77, 0x6d, 0x7e, - 0x72, 0x77, 0x80, 0x74, 0x76, 0x81, 0x83, 0x75, 0x6f, 0x76, 0x6b, 0x66, 0x75, 0x79, 0x7c, 0x78, - 0x74, 0x79, 0x79, 0x73, 0x79, 0x7a, 0x77, 0x7b, 0x72, 0x68, 0x73, 0x73, 0x74, 0x74, 0x6e, 0x6e, - 0x6b, 0x78, 0x76, 0x7d, 0x85, 0x7d, 0x7c, 0x7b, 0x79, 0x75, 0x6e, 0x72, 0x6b, 0x60, 0x62, 0x68, - 0x6a, 0x6a, 0x74, 0x78, 0x83, 0x81, 0x7b, 0x7c, 0x76, 0x77, 0x71, 0x71, 0x80, 0x89, 0x84, 0x7b, - 0x83, 0x85, 0x81, 0x89, 0x7a, 0x7c, 0x7d, 0x79, 0x7b, 0x84, 0x8b, 0x8d, 0x8a, 0x87, 0x90, 0x8e, - 0x85, 0x90, 0x9b, 0x99, 0x8d, 0x8e, 0x90, 0x8c, 0x89, 0x8e, 0x8f, 0x93, 0x87, 0x84, 0x82, 0x7a, - 0x85, 0x8b, 0x8f, 0x9a, 0x8f, 0x78, 0x7a, 0x88, 0x8f, 0x82, 0x9a, 0xa2, 0x92, 0x9d, 0x9b, 0x8d, - 0x85, 0x89, 0x90, 0x95, 0x94, 0x8e, 0x84, 0x83, 0x82, 0x80, 0x8e, 0x8b, 0x85, 0x89, 0x7e, 0x93, - 0x91, 0x85, 0x92, 0x80, 0x72, 0x81, 0x75, 0x73, 0x6a, 0x6b, 0x76, 0x6c, 0x7c, 0x7a, 0x75, 0x83, - 0x7e, 0x7b, 0x77, 0x82, 0x80, 0x6f, 0x6c, 0x7d, 0x87, 0x74, 0x70, 0x6f, 0x6b, 0x66, 0x65, 0x5d, - 0x64, 0x67, 0x68, 0x66, 0x73, 0x77, 0x6d, 0x64, 0x6d, 0x78, 0x77, 0x75, 0x71, 0x7e, 0x89, 0x8d, - 0x83, 0x89, 0x7a, 0x79, 0x8c, 0x81, 0x87, 0x81, 0x7a, 0x81, 0x7a, 0x7a, 0x80, 0x83, 0x77, 0x6e, - 0x6c, 0x6b, 0x66, 0x5f, 0x6d, 0x7b, 0x87, 0x82, 0x7e, 0x85, 0x7b, 0x77, 0x80, 0x89, 0x88, 0x87, - 0x7a, 0x77, 0x73, 0x83, 0x75, 0x6f, 0x7e, 0x7d, 0x86, 0x80, 0x8b, 0x90, 0x92, 0x9b, 0x9b, 0xa4, - 0x9b, 0x90, 0x8b, 0x81, 0x7b, 0x79, 0x80, 0x87, 0x81, 0x75, 0x7c, 0x89, 0x79, 0x76, 0x84, 0x77, - 0x6a, 0x78, 0x7d, 0x7c, 0x85, 0x95, 0x8a, 0x83, 0x92, 0x8b, 0x7d, 0x77, 0x86, 0x97, 0x8b, 0x89, - 0x90, 0x89, 0x89, 0x92, 0x86, 0x8b, 0x8f, 0x89, 0x94, 0x94, 0x92, 0x94, 0x93, 0x8b, 0x88, 0x86, - 0x8f, 0x7c, 0x68, 0x68, 0x70, 0x71, 0x66, 0x5c, 0x61, 0x68, 0x60, 0x64, 0x7c, 0x77, 0x69, 0x6c, - 0x6d, 0x6f, 0x72, 0x73, 0x72, 0x75, 0x7b, 0x73, 0x72, 0x82, 0x82, 0x85, 0x8d, 0x8b, 0x81, 0x82, - 0x7e, 0x7d, 0x89, 0x83, 0x94, 0x94, 0x84, 0x84, 0x89, 0x89, 0x83, 0x8a, 0x81, 0x71, 0x82, 0x84, - 0x73, 0x79, 0x7a, 0x77, 0x77, 0x81, 0x8f, 0x8b, 0x8e, 0x88, 0x8d, 0x8d, 0x90, 0x8c, 0x84, 0x8b, - 0x97, 0x84, 0x7a, 0x8a, 0x7d, 0x75, 0x7e, 0x8b, 0x90, 0x91, 0x91, 0x8c, 0x84, 0x86, 0x8d, 0x79, - 0x7a, 0x7a, 0x73, 0x7b, 0x7c, 0x82, 0x80, 0x79, 0x8c, 0x8b, 0x74, 0x76, 0x76, 0x6d, 0x76, 0x74, - 0x77, 0x72, 0x71, 0x7c, 0x73, 0x74, 0x7a, 0x6d, 0x6f, 0x78, 0x7d, 0x79, 0x6e, 0x76, 0x87, 0x80, - 0x79, 0x75, 0x7b, 0x77, 0x6e, 0x75, 0x80, 0x85, 0x81, 0x78, 0x78, 0x71, 0x72, 0x67, 0x70, 0x72, - 0x74, 0x7e, 0x7c, 0x7a, 0x7b, 0x7e, 0x85, 0x7a, 0x7c, 0x80, 0x80, 0x71, 0x6c, 0x6c, 0x66, 0x75, - 0x86, 0x87, 0x7b, 0x76, 0x7c, 0x6d, 0x77, 0x87, 0x83, 0x70, 0x6f, 0x7c, 0x6e, 0x73, 0x7e, 0x6d, - 0x68, 0x82, 0x84, 0x83, 0x89, 0x90, 0x90, 0x89, 0x93, 0x89, 0x82, 0x82, 0x86, 0x83, 0x81, 0x87, - 0x8e, 0x85, 0x8c, 0x9d, 0x93, 0x8b, 0x99, 0x90, 0x8c, 0x8f, 0x80, 0x76, 0x7d, 0x74, 0x7c, 0x7c, - 0x82, 0x8a, 0x75, 0x78, 0x96, 0x9b, 0x92, 0x9d, 0x90, 0x96, 0x9d, 0x9b, 0x9a, 0x95, 0x9a, 0x93, - 0x8e, 0x9e, 0x9e, 0x93, 0x89, 0x87, 0x8f, 0x89, 0x85, 0x8b, 0x98, 0x88, 0x87, 0x89, 0x84, 0x89, - 0x83, 0x7c, 0x7d, 0x7a, 0x79, 0x6c, 0x6d, 0x75, 0x72, 0x77, 0x7d, 0x7d, 0x87, 0x7d, 0x87, 0x8d, - 0x84, 0x8b, 0x81, 0x7e, 0x88, 0x87, 0x77, 0x7a, 0x7a, 0x76, 0x73, 0x67, 0x6f, 0x5f, 0x55, 0x7c, - 0x84, 0x71, 0x71, 0x7a, 0x70, 0x60, 0x5f, 0x67, 0x62, 0x5c, 0x5e, 0x60, 0x5a, 0x68, 0x69, 0x60, - 0x74, 0x76, 0x6a, 0x75, 0x7a, 0x75, 0x71, 0x68, 0x71, 0x77, 0x77, 0x73, 0x6c, 0x63, 0x68, 0x80, - 0x7c, 0x7c, 0x83, 0x7b, 0x78, 0x71, 0x74, 0x7c, 0x86, 0x86, 0x7d, 0x82, 0x82, 0x8e, 0x85, 0x80, - 0x9a, 0x99, 0x8f, 0x8b, 0x8e, 0x98, 0x9b, 0xa5, 0x9f, 0x9a, 0xa1, 0xa0, 0x97, 0x9c, 0xa3, 0xa3, - 0x9a, 0x90, 0x88, 0x8a, 0x80, 0x77, 0x80, 0x7c, 0x84, 0x8e, 0x85, 0x71, 0x7b, 0x80, 0x71, 0x73, - 0x76, 0x72, 0x75, 0x65, 0x5f, 0x6c, 0x73, 0x77, 0x6d, 0x6a, 0x77, 0x7d, 0x86, 0x88, 0x86, 0x80, - 0x80, 0x86, 0x81, 0x7e, 0x82, 0x84, 0x76, 0x7e, 0x8d, 0x86, 0x7d, 0x7e, 0x8a, 0x7d, 0x76, 0x75, - 0x69, 0x67, 0x6b, 0x66, 0x6c, 0x64, 0x69, 0x6e, 0x6a, 0x71, 0x7c, 0x76, 0x79, 0x85, 0x86, 0x8b, - 0x8a, 0x87, 0x83, 0x7a, 0x8c, 0x8d, 0x7c, 0x7e, 0x84, 0x7c, 0x93, 0x80, 0x86, 0x8f, 0x88, 0x8e, - 0x87, 0x93, 0x99, 0x8b, 0x8c, 0x8c, 0x8a, 0x81, 0x83, 0x7a, 0x81, 0x86, 0x7d, 0x76, 0x76, 0x7e, - 0x83, 0x82, 0x84, 0x87, 0x83, 0x8c, 0x87, 0x85, 0x90, 0x8d, 0x95, 0x91, 0x8a, 0x82, 0x84, 0x7b, - 0x7e, 0x81, 0x83, 0x7b, 0x82, 0x89, 0x8c, 0x93, 0x95, 0x9a, 0x91, 0x91, 0x94, 0x89, 0x83, 0x7e, - 0x78, 0x77, 0x85, 0x85, 0x7d, 0x81, 0x8d, 0x85, 0x83, 0x86, 0x81, 0x7a, 0x6e, 0x78, 0x7b, 0x7a, - 0x80, 0x7c, 0x6e, 0x77, 0x76, 0x6e, 0x70, 0x72, 0x77, 0x6c, 0x6d, 0x72, 0x6f, 0x66, 0x6b, 0x6b, - 0x68, 0x6e, 0x77, 0x6b, 0x65, 0x6f, 0x76, 0x7a, 0x77, 0x72, 0x6b, 0x77, 0x84, 0x73, 0x69, 0x7b, - 0x76, 0x71, 0x72, 0x73, 0x7b, 0x85, 0x7c, 0x80, 0x8b, 0x8a, 0x7c, 0x74, 0x7b, 0x86, 0x82, 0x78, - 0x72, 0x7e, 0x78, 0x72, 0x76, 0x6f, 0x73, 0x70, 0x6c, 0x75, 0x76, 0x75, 0x7b, 0x77, 0x78, 0x87, - 0x86, 0x8d, 0x8c, 0x91, 0x94, 0x94, 0x9b, 0x8d, 0x84, 0x8a, 0x8b, 0x7d, 0x83, 0x8d, 0x82, 0x82, - 0x89, 0x8e, 0x95, 0x8f, 0x8f, 0x92, 0x8a, 0x80, 0x78, 0x7c, 0x81, 0x89, 0x80, 0x83, 0x88, 0x81, - 0x75, 0x81, 0x8a, 0x8a, 0x8e, 0x8b, 0x99, 0x8e, 0x89, 0x8e, 0x7d, 0x7e, 0x80, 0x84, 0x83, 0x8a, - 0x89, 0x83, 0x84, 0x87, 0x89, 0x7c, 0x85, 0x87, 0x83, 0x77, 0x83, 0x80, 0x78, 0x7c, 0x7d, 0x80, - 0x80, 0x79, 0x7a, 0x7e, 0x84, 0x73, 0x6d, 0x88, 0x92, 0x89, 0x83, 0x7c, 0x8c, 0x8b, 0x84, 0x90, - 0x90, 0x85, 0x7a, 0x73, 0x73, 0x6b, 0x6d, 0x6b, 0x61, 0x6d, 0x6c, 0x6e, 0x78, 0x78, 0x76, 0x77, - 0x84, 0x89, 0x7e, 0x79, 0x84, 0x7c, 0x77, 0x7d, 0x7a, 0x73, 0x79, 0x7d, 0x7d, 0x87, 0x88, 0x85, - 0x76, 0x7d, 0x86, 0x70, 0x6f, 0x75, 0x80, 0x87, 0x7d, 0x77, 0x83, 0x74, 0x79, 0x79, 0x66, 0x68, - 0x71, 0x6c, 0x5e, 0x64, 0x63, 0x59, 0x56, 0x67, 0x6c, 0x70, 0x79, 0x82, 0x87, 0x90, 0x9a, 0x94, - 0x93, 0x9d, 0x9d, 0x93, 0x8d, 0x97, 0x9c, 0x93, 0x9a, 0xa6, 0x98, 0x98, 0x93, 0x8c, 0x8d, 0x94, - 0x94, 0x85, 0x88, 0x8e, 0x8a, 0x8e, 0x8e, 0x7d, 0x8d, 0x8e, 0x8c, 0x92, 0x7e, 0x7e, 0x7b, 0x78, - 0x7a, 0x7b, 0x72, 0x71, 0x72, 0x70, 0x77, 0x7c, 0x8a, 0x7e, 0x7c, 0x8c, 0x8c, 0x88, 0x89, 0x76, - 0x6e, 0x81, 0x7d, 0x83, 0x84, 0x7d, 0x75, 0x7c, 0x7e, 0x7d, 0x7a, 0x72, 0x67, 0x6a, 0x67, 0x5f, - 0x68, 0x64, 0x69, 0x70, 0x79, 0x6c, 0x6a, 0x72, 0x67, 0x70, 0x77, 0x81, 0x78, 0x72, 0x7d, 0x7d, - 0x69, 0x69, 0x7e, 0x74, 0x73, 0x80, 0x8e, 0x92, 0x8d, 0x8a, 0x8c, 0x91, 0x97, 0x90, 0x7d, 0x8c, - 0x83, 0x87, 0x8e, 0x89, 0x8a, 0x83, 0x7b, 0x83, 0x7e, 0x7e, 0x77, 0x6e, 0x75, 0x74, 0x78, 0x83, - 0x85, 0x8c, 0x8a, 0x84, 0x97, 0xa0, 0x92, 0x8b, 0x95, 0x8f, 0x8a, 0x96, 0x95, 0x8d, 0x85, 0x83, - 0x8c, 0x90, 0x8c, 0x7b, 0x86, 0x8f, 0x88, 0x81, 0x88, 0x90, 0x8a, 0x82, 0x84, 0x86, 0x81, 0x7d, - 0x79, 0x79, 0x82, 0x84, 0x86, 0x79, 0x7e, 0x78, 0x6f, 0x6e, 0x6e, 0x6f, 0x6b, 0x6c, 0x6f, 0x6a, - 0x6d, 0x6f, 0x6f, 0x71, 0x6f, 0x79, 0x7b, 0x6d, 0x72, 0x7b, 0x73, 0x69, 0x62, 0x68, 0x65, 0x62, - 0x6e, 0x74, 0x7b, 0x84, 0x7c, 0x85, 0x86, 0x87, 0x89, 0x83, 0x87, 0x88, 0x77, 0x7d, 0x8f, 0x84, - 0x79, 0x84, 0x8d, 0x86, 0x87, 0x82, 0x84, 0x89, 0x8a, 0x8a, 0x90, 0x84, 0x89, 0x88, 0x73, 0x7b, - 0x7d, 0x78, 0x78, 0x7b, 0x77, 0x7c, 0x7a, 0x73, 0x6b, 0x76, 0x73, 0x67, 0x73, 0x71, 0x6a, 0x80, - 0x89, 0x7e, 0x7e, 0x8c, 0x80, 0x7b, 0x7d, 0x81, 0x7d, 0x79, 0x80, 0x80, 0x8e, 0x8d, 0x88, 0x93, - 0x92, 0x90, 0x90, 0x8a, 0x80, 0x87, 0x80, 0x7c, 0x84, 0x87, 0x8d, 0x83, 0x77, 0x82, 0x89, 0x8e, - 0x86, 0x7e, 0x8f, 0x98, 0x8d, 0x84, 0x8b, 0x8f, 0x82, 0x75, 0x80, 0x8c, 0x88, 0x91, 0x9a, 0x99, - 0x9a, 0x98, 0x8e, 0x94, 0x94, 0x87, 0x86, 0x81, 0x7b, 0x81, 0x85, 0x80, 0x8b, 0x8b, 0x7a, 0x81, - 0x82, 0x79, 0x78, 0x77, 0x79, 0x78, 0x7c, 0x82, 0x7e, 0x83, 0x73, 0x7c, 0x7d, 0x79, 0x7b, 0x6d, - 0x73, 0x73, 0x6a, 0x73, 0x6a, 0x63, 0x67, 0x62, 0x6c, 0x6f, 0x68, 0x6e, 0x81, 0x79, 0x7b, 0x7b, - 0x76, 0x7c, 0x7a, 0x78, 0x77, 0x76, 0x70, 0x75, 0x83, 0x7e, 0x76, 0x87, 0x83, 0x72, 0x77, 0x79, - 0x74, 0x73, 0x71, 0x78, 0x79, 0x86, 0x85, 0x82, 0x7e, 0x70, 0x73, 0x7b, 0x76, 0x77, 0x7d, 0x74, - 0x78, 0x75, 0x6c, 0x70, 0x71, 0x6b, 0x6d, 0x7a, 0x78, 0x8c, 0x98, 0x92, 0x90, 0x9c, 0x9f, 0xa0, - 0x92, 0x9b, 0x98, 0x7b, 0x84, 0x8e, 0x8f, 0x85, 0x86, 0x88, 0x8b, 0x90, 0x82, 0x7a, 0x7d, 0x81, - 0x7d, 0x84, 0x81, 0x8b, 0x8e, 0x82, 0x85, 0x89, 0x87, 0x7c, 0x7c, 0x7a, 0x7a, 0x81, 0x83, 0x7d, - 0x76, 0x7c, 0x78, 0x6e, 0x75, 0x84, 0x81, 0x81, 0x80, 0x8c, 0x81, 0x78, 0x7e, 0x85, 0x86, 0x8a, - 0x7e, 0x6e, 0x7c, 0x7c, 0x71, 0x79, 0x7d, 0x7e, 0x76, 0x68, 0x69, 0x78, 0x6f, 0x67, 0x6e, 0x6c, - 0x6c, 0x77, 0x73, 0x6f, 0x78, 0x7a, 0x81, 0x7d, 0x85, 0x88, 0x79, 0x7b, 0x81, 0x79, 0x81, 0x7d, - 0x7a, 0x7e, 0x7d, 0x90, 0x91, 0x82, 0x80, 0x85, 0x88, 0x84, 0x87, 0x93, 0x9a, 0x92, 0x8c, 0x85, - 0x8f, 0x96, 0x7a, 0x7e, 0x89, 0x81, 0x88, 0x80, 0x7a, 0x84, 0x73, 0x75, 0x88, 0x84, 0x7b, 0x80, - 0x87, 0x8d, 0x8d, 0x88, 0x8c, 0x91, 0x89, 0x8b, 0x8f, 0x8f, 0x8c, 0x7a, 0x76, 0x7a, 0x7a, 0x82, - 0x79, 0x80, 0x86, 0x81, 0x83, 0x82, 0x88, 0x88, 0x84, 0x81, 0x8b, 0x87, 0x81, 0x85, 0x90, 0x96, - 0x8d, 0x99, 0x95, 0x85, 0x86, 0x7e, 0x82, 0x80, 0x73, 0x87, 0x89, 0x80, 0x7d, 0x7d, 0x78, 0x74, - 0x6f, 0x70, 0x7e, 0x7a, 0x74, 0x75, 0x77, 0x71, 0x6c, 0x6c, 0x6d, 0x68, 0x62, 0x69, 0x63, 0x67, - 0x71, 0x6f, 0x74, 0x68, 0x66, 0x6a, 0x66, 0x65, 0x6d, 0x72, 0x70, 0x7e, 0x81, 0x7c, 0x89, 0x8b, - 0x81, 0x84, 0x80, 0x76, 0x7e, 0x75, 0x6a, 0x7d, 0x80, 0x79, 0x78, 0x78, 0x83, 0x86, 0x7e, 0x82, - 0x89, 0x83, 0x82, 0x86, 0x8d, 0x8a, 0x90, 0x94, 0x83, 0x7c, 0x7e, 0x80, 0x81, 0x7d, 0x7d, 0x7e, - 0x85, 0x80, 0x7e, 0x8c, 0x86, 0x87, 0x89, 0x86, 0x81, 0x7e, 0x83, 0x89, 0x8d, 0x8f, 0x8d, 0x8d, - 0x87, 0x7d, 0x83, 0x82, 0x78, 0x78, 0x7c, 0x84, 0x79, 0x79, 0x7e, 0x79, 0x77, 0x76, 0x76, 0x7e, - 0x7e, 0x7a, 0x83, 0x88, 0x7a, 0x79, 0x81, 0x7b, 0x88, 0x87, 0x7c, 0x86, 0x8b, 0x8a, 0x8e, 0x8e, - 0x8a, 0x8d, 0x8e, 0x88, 0x92, 0x96, 0x89, 0x89, 0x94, 0x91, 0x8e, 0x8b, 0x85, 0x88, 0x8a, 0x80, - 0x77, 0x7e, 0x80, 0x75, 0x75, 0x76, 0x7a, 0x75, 0x70, 0x77, 0x85, 0x82, 0x76, 0x81, 0x84, 0x75, - 0x72, 0x73, 0x73, 0x6d, 0x6f, 0x67, 0x6f, 0x81, 0x7d, 0x79, 0x7e, 0x7c, 0x7c, 0x77, 0x70, 0x7d, - 0x77, 0x76, 0x75, 0x81, 0x81, 0x7a, 0x78, 0x78, 0x82, 0x86, 0x79, 0x74, 0x7b, 0x75, 0x73, 0x6d, - 0x7d, 0x77, 0x6b, 0x6a, 0x6f, 0x74, 0x6f, 0x6f, 0x79, 0x6d, 0x6e, 0x85, 0x81, 0x76, 0x7c, 0x7c, - 0x7b, 0x77, 0x78, 0x80, 0x82, 0x7a, 0x80, 0x90, 0x91, 0x8e, 0x87, 0x88, 0x91, 0x8f, 0x8b, 0x8d, - 0x8e, 0x8e, 0x89, 0x90, 0x94, 0x8a, 0x8b, 0x8d, 0x8e, 0x8c, 0x87, 0x82, 0x7d, 0x80, 0x88, 0x87, - 0x88, 0x8c, 0x8b, 0x84, 0x86, 0x92, 0x8f, 0x83, 0x87, 0x8d, 0x8b, 0x88, 0x93, 0x8d, 0x84, 0x7c, - 0x7b, 0x86, 0x86, 0x7e, 0x7d, 0x83, 0x8d, 0x79, 0x7a, 0x88, 0x7c, 0x72, 0x6b, 0x7d, 0x85, 0x73, - 0x6f, 0x72, 0x7a, 0x75, 0x76, 0x7c, 0x82, 0x77, 0x6c, 0x6c, 0x71, 0x73, 0x6c, 0x65, 0x69, 0x74, - 0x75, 0x6b, 0x68, 0x6e, 0x68, 0x6c, 0x6b, 0x75, 0x7a, 0x72, 0x70, 0x72, 0x82, 0x7b, 0x77, 0x7c, - 0x78, 0x79, 0x81, 0x80, 0x7a, 0x78, 0x7e, 0x8d, 0x86, 0x83, 0x85, 0x89, 0x85, 0x7d, 0x8e, 0x8d, - 0x90, 0x87, 0x82, 0x8f, 0x91, 0x81, 0x7c, 0x82, 0x7d, 0x83, 0x86, 0x82, 0x86, 0x88, 0x85, 0x98, - 0x9e, 0x97, 0x99, 0x97, 0x9a, 0x93, 0x96, 0x98, 0x90, 0x8b, 0x88, 0x82, 0x8b, 0x8c, 0x79, 0x7b, - 0x7e, 0x83, 0x81, 0x73, 0x7a, 0x80, 0x73, 0x70, 0x79, 0x7e, 0x7b, 0x6a, 0x71, 0x70, 0x76, 0x7b, - 0x6c, 0x7a, 0x79, 0x71, 0x70, 0x78, 0x7c, 0x71, 0x76, 0x73, 0x7b, 0x79, 0x74, 0x7b, 0x77, 0x77, - 0x77, 0x79, 0x7c, 0x7d, 0x7b, 0x75, 0x86, 0x8c, 0x79, 0x7a, 0x8e, 0x84, 0x76, 0x79, 0x7c, 0x76, - 0x77, 0x75, 0x78, 0x80, 0x78, 0x70, 0x6e, 0x79, 0x7a, 0x71, 0x70, 0x76, 0x7c, 0x7a, 0x79, 0x7a, - 0x79, 0x75, 0x83, 0x7e, 0x76, 0x7c, 0x77, 0x77, 0x7d, 0x7e, 0x85, 0x86, 0x82, 0x7c, 0x7c, 0x7c, - 0x81, 0x81, 0x7d, 0x78, 0x7b, 0x82, 0x7a, 0x7c, 0x85, 0x80, 0x80, 0x7d, 0x80, 0x7e, 0x81, 0x83, - 0x76, 0x7e, 0x88, 0x88, 0x8b, 0x87, 0x93, 0x8e, 0x90, 0x8f, 0x8e, 0x8a, 0x8e, 0x90, 0x8c, 0x89, - 0x8a, 0x89, 0x85, 0x8e, 0x91, 0x88, 0x81, 0x84, 0x7e, 0x7b, 0x83, 0x87, 0x84, 0x7b, 0x83, 0x86, - 0x82, 0x87, 0x7d, 0x79, 0x7d, 0x8f, 0x8c, 0x7d, 0x85, 0x89, 0x84, 0x89, 0x92, 0x8b, 0x87, 0x95, - 0x91, 0x8c, 0x8d, 0x89, 0x87, 0x80, 0x7a, 0x81, 0x81, 0x79, 0x7b, 0x71, 0x73, 0x76, 0x76, 0x70, - 0x72, 0x80, 0x81, 0x83, 0x88, 0x8b, 0x83, 0x7a, 0x80, 0x82, 0x79, 0x77, 0x76, 0x77, 0x6f, 0x73, - 0x7e, 0x76, 0x70, 0x70, 0x71, 0x71, 0x73, 0x70, 0x6e, 0x74, 0x74, 0x77, 0x74, 0x79, 0x75, 0x65, - 0x6e, 0x76, 0x71, 0x74, 0x74, 0x76, 0x7a, 0x7e, 0x7b, 0x78, 0x77, 0x7c, 0x7c, 0x7b, 0x83, 0x82, - 0x7b, 0x75, 0x74, 0x81, 0x7b, 0x6f, 0x79, 0x74, 0x76, 0x81, 0x7a, 0x78, 0x87, 0x82, 0x79, 0x86, - 0x7e, 0x80, 0x85, 0x88, 0x7d, 0x7e, 0x86, 0x83, 0x86, 0x83, 0x85, 0x96, 0x98, 0x93, 0x95, 0x8c, - 0x94, 0x97, 0x85, 0x80, 0x8c, 0x8e, 0x77, 0x80, 0x8d, 0x86, 0x85, 0x7b, 0x76, 0x81, 0x84, 0x82, - 0x84, 0x81, 0x85, 0x8c, 0x89, 0x82, 0x7e, 0x7e, 0x74, 0x7d, 0x88, 0x81, 0x82, 0x84, 0x7e, 0x7e, - 0x87, 0x81, 0x7a, 0x7c, 0x77, 0x80, 0x85, 0x7e, 0x84, 0x81, 0x80, 0x85, 0x77, 0x73, 0x79, 0x76, - 0x6f, 0x6e, 0x79, 0x7e, 0x6e, 0x6e, 0x78, 0x77, 0x74, 0x6f, 0x76, 0x7a, 0x79, 0x77, 0x6e, 0x6c, - 0x71, 0x73, 0x72, 0x77, 0x84, 0x7b, 0x6f, 0x80, 0x7d, 0x80, 0x82, 0x80, 0x80, 0x82, 0x85, 0x7c, - 0x80, 0x7e, 0x80, 0x7e, 0x81, 0x81, 0x7a, 0x7e, 0x80, 0x88, 0x83, 0x87, 0x93, 0x93, 0x83, 0x82, - 0x7d, 0x7a, 0x81, 0x83, 0x7d, 0x82, 0x8a, 0x83, 0x83, 0x85, 0x86, 0x88, 0x92, 0x8d, 0x8d, 0x8f, - 0x93, 0x91, 0x8d, 0x92, 0x91, 0x95, 0x91, 0x88, 0x8c, 0x91, 0x8f, 0x8c, 0x88, 0x84, 0x86, 0x81, - 0x76, 0x7b, 0x81, 0x84, 0x7e, 0x7c, 0x80, 0x83, 0x75, 0x73, 0x7a, 0x85, 0x7b, 0x77, 0x83, 0x83, - 0x84, 0x85, 0x84, 0x82, 0x83, 0x85, 0x85, 0x8a, 0x83, 0x7e, 0x7a, 0x77, 0x79, 0x76, 0x70, 0x6f, - 0x6b, 0x67, 0x69, 0x6e, 0x71, 0x73, 0x71, 0x69, 0x73, 0x71, 0x6b, 0x6b, 0x6e, 0x6f, 0x6b, 0x74, - 0x78, 0x70, 0x6f, 0x76, 0x7d, 0x7a, 0x73, 0x74, 0x7c, 0x7c, 0x75, 0x76, 0x7d, 0x80, 0x79, 0x75, - 0x7c, 0x7d, 0x79, 0x78, 0x7d, 0x82, 0x82, 0x88, 0x86, 0x86, 0x8d, 0x90, 0x80, 0x87, 0x8a, 0x83, - 0x7b, 0x85, 0x90, 0x81, 0x7e, 0x85, 0x8e, 0x8b, 0x81, 0x80, 0x7c, 0x85, 0x7d, 0x7b, 0x8b, 0x8b, - 0x84, 0x81, 0x84, 0x8e, 0x8a, 0x85, 0x82, 0x83, 0x86, 0x85, 0x81, 0x82, 0x87, 0x87, 0x84, 0x88, - 0x88, 0x8c, 0x85, 0x7c, 0x85, 0x83, 0x7d, 0x86, 0x8a, 0x7e, 0x73, 0x78, 0x80, 0x79, 0x76, 0x76, - 0x7c, 0x7c, 0x83, 0x7d, 0x82, 0x82, 0x79, 0x83, 0x7e, 0x80, 0x85, 0x7e, 0x85, 0x88, 0x84, 0x8a, - 0x8e, 0x8b, 0x7e, 0x7c, 0x87, 0x7b, 0x78, 0x79, 0x80, 0x83, 0x7b, 0x80, 0x7d, 0x85, 0x88, 0x83, - 0x83, 0x7e, 0x85, 0x8a, 0x81, 0x86, 0x88, 0x80, 0x7d, 0x89, 0x87, 0x76, 0x81, 0x7c, 0x74, 0x7d, - 0x84, 0x7c, 0x7a, 0x7a, 0x72, 0x75, 0x7e, 0x78, 0x6f, 0x72, 0x7b, 0x7a, 0x73, 0x7a, 0x79, 0x78, - 0x71, 0x73, 0x78, 0x69, 0x6a, 0x75, 0x75, 0x6f, 0x72, 0x77, 0x72, 0x7c, 0x7e, 0x7d, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x85, 0x7c, 0x79, 0x7e, 0x80, 0x89, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7a, 0x82, - 0x85, 0x7c, 0x79, 0x7c, 0x81, 0x81, 0x79, 0x84, 0x8e, 0x88, 0x86, 0x87, 0x95, 0x96, 0x85, 0x82, - 0x8f, 0x83, 0x81, 0x83, 0x7e, 0x85, 0x81, 0x7a, 0x79, 0x80, 0x8e, 0x8a, 0x7e, 0x88, 0x91, 0x91, - 0x8b, 0x87, 0x84, 0x86, 0x8d, 0x85, 0x87, 0x8a, 0x8a, 0x86, 0x82, 0x8b, 0x87, 0x85, 0x88, 0x7d, - 0x7d, 0x82, 0x78, 0x7e, 0x86, 0x84, 0x84, 0x83, 0x7e, 0x80, 0x7c, 0x71, 0x6f, 0x73, 0x6a, 0x6e, - 0x73, 0x75, 0x73, 0x77, 0x6d, 0x74, 0x7b, 0x75, 0x78, 0x76, 0x79, 0x7b, 0x7e, 0x84, 0x81, 0x87, - 0x7d, 0x76, 0x7d, 0x74, 0x70, 0x70, 0x6d, 0x70, 0x75, 0x7a, 0x7b, 0x77, 0x73, 0x6d, 0x74, 0x6f, - 0x72, 0x7a, 0x75, 0x7b, 0x83, 0x83, 0x84, 0x89, 0x88, 0x7d, 0x80, 0x87, 0x83, 0x7b, 0x7d, 0x7b, - 0x82, 0x89, 0x86, 0x8e, 0x8d, 0x83, 0x81, 0x8c, 0x93, 0x8f, 0x8a, 0x8c, 0x99, 0x9e, 0x94, 0x8e, - 0x99, 0x97, 0x94, 0x93, 0x8e, 0x8e, 0x8e, 0x88, 0x87, 0x83, 0x87, 0x85, 0x7b, 0x73, 0x74, 0x80, - 0x7c, 0x75, 0x7a, 0x81, 0x83, 0x84, 0x87, 0x79, 0x83, 0x85, 0x84, 0x7d, 0x7d, 0x89, 0x84, 0x7c, - 0x7c, 0x80, 0x7b, 0x77, 0x7d, 0x82, 0x7b, 0x76, 0x78, 0x73, 0x7e, 0x82, 0x7d, 0x7c, 0x7a, 0x83, - 0x84, 0x7c, 0x73, 0x6a, 0x6f, 0x74, 0x70, 0x69, 0x6d, 0x73, 0x6c, 0x66, 0x73, 0x77, 0x6f, 0x70, - 0x70, 0x76, 0x7e, 0x77, 0x74, 0x72, 0x7a, 0x78, 0x71, 0x77, 0x77, 0x76, 0x79, 0x7d, 0x7a, 0x83, - 0x7e, 0x71, 0x75, 0x7b, 0x82, 0x7a, 0x7a, 0x78, 0x7b, 0x7d, 0x77, 0x7a, 0x7e, 0x78, 0x80, 0x83, - 0x84, 0x85, 0x8b, 0x8b, 0x84, 0x88, 0x8f, 0x8c, 0x86, 0x82, 0x7e, 0x89, 0x91, 0x8d, 0x8b, 0x88, - 0x84, 0x87, 0x83, 0x7c, 0x86, 0x85, 0x81, 0x8b, 0x8b, 0x8a, 0x8c, 0x90, 0x8c, 0x88, 0x84, 0x89, - 0x88, 0x7d, 0x86, 0x8c, 0x83, 0x82, 0x85, 0x83, 0x80, 0x81, 0x82, 0x7d, 0x87, 0x8a, 0x87, 0x88, - 0x8d, 0x86, 0x83, 0x88, 0x82, 0x7e, 0x82, 0x82, 0x81, 0x85, 0x81, 0x87, 0x90, 0x8e, 0x88, 0x84, - 0x84, 0x84, 0x7e, 0x7b, 0x7b, 0x81, 0x6f, 0x77, 0x84, 0x80, 0x81, 0x73, 0x70, 0x7b, 0x7a, 0x79, - 0x7c, 0x78, 0x7a, 0x78, 0x82, 0x84, 0x77, 0x75, 0x73, 0x79, 0x74, 0x79, 0x7b, 0x78, 0x78, 0x7a, - 0x83, 0x7e, 0x74, 0x71, 0x78, 0x73, 0x75, 0x75, 0x78, 0x7c, 0x79, 0x79, 0x78, 0x79, 0x75, 0x70, - 0x6f, 0x74, 0x73, 0x7e, 0x7b, 0x79, 0x86, 0x87, 0x7e, 0x79, 0x84, 0x7e, 0x7b, 0x82, 0x80, 0x78, - 0x81, 0x7b, 0x75, 0x74, 0x76, 0x7b, 0x7d, 0x80, 0x7a, 0x80, 0x85, 0x87, 0x87, 0x8e, 0x8c, 0x81, - 0x86, 0x8a, 0x8a, 0x89, 0x87, 0x8b, 0x8f, 0x8f, 0x8b, 0x8b, 0x88, 0x86, 0x87, 0x85, 0x81, 0x7e, - 0x7c, 0x86, 0x88, 0x85, 0x7c, 0x7e, 0x81, 0x7b, 0x7b, 0x7b, 0x7b, 0x84, 0x86, 0x85, 0x85, 0x85, - 0x81, 0x80, 0x80, 0x81, 0x80, 0x79, 0x78, 0x82, 0x86, 0x82, 0x87, 0x88, 0x7e, 0x81, 0x86, 0x87, - 0x84, 0x7a, 0x7c, 0x8a, 0x88, 0x84, 0x7e, 0x79, 0x78, 0x77, 0x71, 0x72, 0x6c, 0x6f, 0x6c, 0x6c, - 0x70, 0x73, 0x74, 0x73, 0x74, 0x78, 0x79, 0x75, 0x7b, 0x7d, 0x77, 0x81, 0x86, 0x81, 0x7d, 0x80, - 0x7d, 0x76, 0x74, 0x79, 0x78, 0x78, 0x72, 0x6d, 0x79, 0x76, 0x73, 0x78, 0x75, 0x76, 0x78, 0x73, - 0x78, 0x80, 0x83, 0x7b, 0x7b, 0x88, 0x84, 0x86, 0x82, 0x82, 0x7c, 0x82, 0x88, 0x84, 0x8e, 0x8b, - 0x8c, 0x8f, 0x8c, 0x89, 0x8f, 0x8d, 0x8c, 0x95, 0x95, 0x98, 0x93, 0x8e, 0x8f, 0x93, 0x93, 0x94, - 0x8f, 0x8b, 0x92, 0x8d, 0x83, 0x8a, 0x92, 0x8b, 0x84, 0x81, 0x7a, 0x85, 0x83, 0x7e, 0x85, 0x88, - 0x85, 0x82, 0x7e, 0x83, 0x7d, 0x7e, 0x81, 0x7b, 0x81, 0x7b, 0x7e, 0x88, 0x86, 0x80, 0x7e, 0x89, - 0x79, 0x70, 0x77, 0x78, 0x79, 0x78, 0x73, 0x7a, 0x79, 0x74, 0x7a, 0x76, 0x78, 0x7c, 0x77, 0x6f, - 0x70, 0x72, 0x6a, 0x66, 0x66, 0x68, 0x67, 0x64, 0x68, 0x69, 0x6b, 0x6e, 0x69, 0x74, 0x7b, 0x78, - 0x77, 0x79, 0x77, 0x7b, 0x7e, 0x78, 0x7b, 0x80, 0x7b, 0x7e, 0x80, 0x76, 0x79, 0x7d, 0x6b, 0x71, - 0x78, 0x77, 0x79, 0x7a, 0x7d, 0x89, 0x88, 0x82, 0x85, 0x8e, 0x8b, 0x80, 0x84, 0x8a, 0x88, 0x8b, - 0x88, 0x83, 0x8f, 0x8f, 0x81, 0x82, 0x87, 0x83, 0x89, 0x8e, 0x8e, 0x95, 0x8e, 0x8c, 0x8b, 0x82, - 0x85, 0x83, 0x81, 0x89, 0x86, 0x81, 0x86, 0x90, 0x8c, 0x87, 0x8b, 0x8c, 0x82, 0x7e, 0x7d, 0x7d, - 0x7e, 0x86, 0x83, 0x89, 0x84, 0x7c, 0x7e, 0x7d, 0x7d, 0x7c, 0x7e, 0x7c, 0x7c, 0x78, 0x78, 0x7e, - 0x82, 0x76, 0x73, 0x82, 0x83, 0x76, 0x6d, 0x79, 0x7a, 0x7c, 0x7b, 0x7d, 0x85, 0x87, 0x7b, 0x7b, - 0x85, 0x85, 0x84, 0x7c, 0x80, 0x88, 0x85, 0x81, 0x82, 0x7b, 0x7b, 0x7c, 0x7a, 0x82, 0x7d, 0x82, - 0x80, 0x80, 0x7e, 0x83, 0x89, 0x84, 0x7e, 0x83, 0x85, 0x7e, 0x81, 0x7d, 0x81, 0x82, 0x82, 0x81, - 0x7a, 0x7c, 0x7d, 0x74, 0x74, 0x80, 0x79, 0x7d, 0x79, 0x77, 0x7c, 0x76, 0x75, 0x77, 0x7c, 0x78, - 0x7d, 0x75, 0x72, 0x7a, 0x82, 0x82, 0x80, 0x77, 0x72, 0x7b, 0x7b, 0x7b, 0x76, 0x79, 0x7c, 0x77, - 0x79, 0x84, 0x79, 0x76, 0x7b, 0x77, 0x85, 0x83, 0x79, 0x7c, 0x78, 0x7b, 0x80, 0x7e, 0x81, 0x83, - 0x82, 0x7d, 0x7e, 0x86, 0x83, 0x89, 0x87, 0x84, 0x8b, 0x83, 0x87, 0x8f, 0x8b, 0x85, 0x86, 0x8c, - 0x88, 0x8a, 0x82, 0x79, 0x84, 0x88, 0x80, 0x84, 0x84, 0x84, 0x81, 0x80, 0x89, 0x81, 0x86, 0x81, - 0x77, 0x88, 0x89, 0x8a, 0x87, 0x7a, 0x88, 0x8e, 0x88, 0x84, 0x7d, 0x80, 0x81, 0x80, 0x81, 0x84, - 0x85, 0x7a, 0x79, 0x7e, 0x7d, 0x77, 0x75, 0x72, 0x73, 0x79, 0x76, 0x75, 0x6d, 0x76, 0x7a, 0x7a, - 0x77, 0x75, 0x7a, 0x7c, 0x71, 0x71, 0x74, 0x76, 0x7c, 0x73, 0x73, 0x79, 0x79, 0x74, 0x6e, 0x77, - 0x75, 0x6f, 0x75, 0x75, 0x82, 0x85, 0x7c, 0x78, 0x75, 0x7b, 0x83, 0x79, 0x7a, 0x7c, 0x7c, 0x7d, - 0x79, 0x7e, 0x86, 0x79, 0x79, 0x7d, 0x7b, 0x7b, 0x78, 0x7c, 0x7b, 0x85, 0x93, 0x8b, 0x8b, 0x90, - 0x8b, 0x90, 0x90, 0x8a, 0x8d, 0x91, 0x96, 0x95, 0x8f, 0x9a, 0x95, 0x90, 0x95, 0x95, 0x90, 0x8a, - 0x8d, 0x93, 0x90, 0x8e, 0x94, 0x92, 0x8d, 0x91, 0x90, 0x87, 0x80, 0x7d, 0x82, 0x82, 0x84, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7e, 0x77, 0x75, 0x7d, 0x78, 0x74, 0x80, 0x7d, 0x82, 0x81, 0x7b, 0x7d, 0x78, - 0x79, 0x72, 0x6d, 0x74, 0x71, 0x6e, 0x6e, 0x75, 0x74, 0x70, 0x72, 0x77, 0x73, 0x70, 0x74, 0x74, - 0x72, 0x69, 0x72, 0x72, 0x6e, 0x75, 0x72, 0x74, 0x77, 0x71, 0x77, 0x72, 0x72, 0x79, 0x72, 0x7b, - 0x83, 0x7a, 0x77, 0x75, 0x77, 0x7c, 0x7d, 0x80, 0x77, 0x77, 0x78, 0x79, 0x7c, 0x77, 0x7c, 0x7e, - 0x79, 0x7a, 0x80, 0x80, 0x7b, 0x7b, 0x7e, 0x79, 0x80, 0x83, 0x7d, 0x7d, 0x80, 0x82, 0x83, 0x80, - 0x83, 0x81, 0x83, 0x82, 0x82, 0x8d, 0x91, 0x8e, 0x8b, 0x83, 0x88, 0x8a, 0x83, 0x89, 0x84, 0x80, - 0x84, 0x82, 0x82, 0x87, 0x8e, 0x89, 0x87, 0x92, 0x92, 0x8d, 0x8b, 0x83, 0x87, 0x8d, 0x8e, 0x8b, - 0x86, 0x88, 0x87, 0x82, 0x88, 0x83, 0x80, 0x80, 0x83, 0x83, 0x82, 0x8a, 0x8d, 0x83, 0x81, 0x87, - 0x89, 0x85, 0x78, 0x79, 0x84, 0x80, 0x7e, 0x84, 0x84, 0x7a, 0x78, 0x7a, 0x77, 0x76, 0x7b, 0x74, - 0x71, 0x77, 0x7c, 0x7d, 0x77, 0x79, 0x75, 0x73, 0x74, 0x74, 0x71, 0x72, 0x76, 0x7c, 0x7d, 0x7d, - 0x7e, 0x7c, 0x78, 0x7c, 0x75, 0x71, 0x7c, 0x7c, 0x79, 0x7b, 0x7c, 0x88, 0x87, 0x83, 0x83, 0x89, - 0x85, 0x81, 0x80, 0x81, 0x85, 0x84, 0x7d, 0x79, 0x80, 0x80, 0x7a, 0x74, 0x6e, 0x7b, 0x78, 0x78, - 0x7d, 0x80, 0x7e, 0x7e, 0x84, 0x84, 0x7d, 0x88, 0x8b, 0x7c, 0x84, 0x86, 0x86, 0x8a, 0x88, 0x84, - 0x89, 0x85, 0x7e, 0x81, 0x7e, 0x81, 0x80, 0x7c, 0x7e, 0x83, 0x85, 0x80, 0x7d, 0x7b, 0x7b, 0x7d, - 0x79, 0x79, 0x80, 0x77, 0x7d, 0x83, 0x81, 0x86, 0x82, 0x7e, 0x7a, 0x7d, 0x82, 0x7d, 0x78, 0x78, - 0x7b, 0x82, 0x85, 0x7c, 0x75, 0x7b, 0x7c, 0x76, 0x7c, 0x86, 0x88, 0x84, 0x80, 0x88, 0x87, 0x81, - 0x7d, 0x7a, 0x7d, 0x81, 0x76, 0x72, 0x7c, 0x7e, 0x7b, 0x81, 0x82, 0x84, 0x8e, 0x85, 0x81, 0x81, - 0x7d, 0x7b, 0x7d, 0x80, 0x7c, 0x7b, 0x79, 0x7b, 0x7d, 0x7a, 0x76, 0x78, 0x77, 0x75, 0x77, 0x7d, - 0x7d, 0x73, 0x75, 0x83, 0x82, 0x7c, 0x7c, 0x81, 0x84, 0x7a, 0x7c, 0x7d, 0x77, 0x78, 0x7a, 0x80, - 0x7c, 0x7b, 0x7a, 0x74, 0x73, 0x7b, 0x73, 0x71, 0x7d, 0x7d, 0x7e, 0x7a, 0x81, 0x85, 0x82, 0x82, - 0x7e, 0x81, 0x7d, 0x7d, 0x83, 0x7c, 0x81, 0x81, 0x81, 0x86, 0x87, 0x83, 0x7b, 0x7b, 0x82, 0x85, - 0x8a, 0x8e, 0x88, 0x86, 0x8c, 0x95, 0x95, 0x92, 0x8e, 0x8a, 0x84, 0x85, 0x8c, 0x8a, 0x87, 0x86, - 0x8a, 0x8f, 0x8c, 0x88, 0x83, 0x86, 0x8e, 0x8d, 0x8a, 0x89, 0x8c, 0x87, 0x85, 0x88, 0x83, 0x8a, - 0x84, 0x79, 0x7d, 0x81, 0x81, 0x83, 0x87, 0x89, 0x88, 0x89, 0x83, 0x80, 0x7e, 0x82, 0x7c, 0x78, - 0x7c, 0x83, 0x80, 0x7c, 0x79, 0x79, 0x78, 0x79, 0x76, 0x6a, 0x66, 0x6c, 0x6b, 0x6e, 0x6a, 0x6a, - 0x70, 0x6a, 0x65, 0x69, 0x70, 0x69, 0x60, 0x66, 0x6a, 0x77, 0x78, 0x6c, 0x6f, 0x73, 0x75, 0x72, - 0x6f, 0x72, 0x74, 0x76, 0x79, 0x79, 0x78, 0x76, 0x7b, 0x7e, 0x7c, 0x80, 0x81, 0x7b, 0x77, 0x7d, - 0x7b, 0x7d, 0x80, 0x88, 0x8a, 0x85, 0x82, 0x7e, 0x82, 0x81, 0x85, 0x87, 0x86, 0x8b, 0x92, 0x8d, - 0x90, 0x94, 0x91, 0x94, 0x91, 0x8b, 0x8b, 0x90, 0x8c, 0x85, 0x8c, 0x91, 0x8e, 0x87, 0x8b, 0x91, - 0x88, 0x85, 0x88, 0x85, 0x89, 0x8b, 0x84, 0x88, 0x83, 0x82, 0x87, 0x86, 0x7e, 0x83, 0x80, 0x7d, - 0x83, 0x89, 0x8a, 0x88, 0x7e, 0x7b, 0x7d, 0x7e, 0x7e, 0x7d, 0x7a, 0x7a, 0x7a, 0x74, 0x78, 0x7c, - 0x7b, 0x80, 0x7d, 0x80, 0x7e, 0x7b, 0x7c, 0x7a, 0x75, 0x78, 0x6c, 0x70, 0x78, 0x71, 0x6d, 0x78, - 0x7a, 0x79, 0x78, 0x74, 0x79, 0x82, 0x7c, 0x81, 0x81, 0x85, 0x83, 0x85, 0x84, 0x80, 0x85, 0x85, - 0x80, 0x86, 0x80, 0x7c, 0x83, 0x84, 0x81, 0x82, 0x85, 0x80, 0x7e, 0x81, 0x7d, 0x82, 0x8c, 0x86, - 0x80, 0x83, 0x82, 0x7c, 0x74, 0x77, 0x70, 0x6d, 0x76, 0x75, 0x76, 0x7c, 0x83, 0x82, 0x83, 0x86, - 0x81, 0x85, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x7c, 0x80, 0x82, 0x7d, - 0x76, 0x75, 0x75, 0x76, 0x79, 0x73, 0x75, 0x75, 0x74, 0x79, 0x79, 0x77, 0x7c, 0x7e, 0x80, 0x82, - 0x88, 0x85, 0x8a, 0x88, 0x82, 0x7e, 0x82, 0x80, 0x7b, 0x7d, 0x81, 0x80, 0x83, 0x85, 0x83, 0x84, - 0x80, 0x7b, 0x82, 0x88, 0x85, 0x83, 0x82, 0x82, 0x82, 0x89, 0x8a, 0x8c, 0x89, 0x81, 0x7c, 0x84, - 0x83, 0x82, 0x82, 0x7d, 0x7e, 0x84, 0x85, 0x87, 0x81, 0x7c, 0x86, 0x85, 0x85, 0x81, 0x7a, 0x78, - 0x7e, 0x7c, 0x75, 0x77, 0x78, 0x74, 0x77, 0x77, 0x7b, 0x7c, 0x75, 0x76, 0x75, 0x7a, 0x7e, 0x72, - 0x77, 0x76, 0x75, 0x79, 0x79, 0x77, 0x79, 0x81, 0x84, 0x81, 0x7d, 0x84, 0x82, 0x78, 0x74, 0x79, - 0x7c, 0x79, 0x70, 0x78, 0x82, 0x7a, 0x79, 0x7d, 0x86, 0x85, 0x82, 0x85, 0x88, 0x8b, 0x86, 0x82, - 0x84, 0x7e, 0x7c, 0x86, 0x81, 0x82, 0x87, 0x81, 0x83, 0x8c, 0x87, 0x87, 0x8b, 0x88, 0x8a, 0x91, - 0x93, 0x92, 0x8f, 0x90, 0x92, 0x90, 0x92, 0x8d, 0x8c, 0x8c, 0x87, 0x87, 0x84, 0x88, 0x85, 0x7d, - 0x82, 0x86, 0x85, 0x7a, 0x77, 0x81, 0x84, 0x84, 0x7c, 0x7e, 0x85, 0x7c, 0x76, 0x80, 0x86, 0x80, - 0x80, 0x81, 0x84, 0x85, 0x7e, 0x7d, 0x80, 0x7c, 0x78, 0x77, 0x7c, 0x78, 0x78, 0x78, 0x79, 0x76, - 0x6e, 0x73, 0x76, 0x72, 0x74, 0x7a, 0x79, 0x73, 0x74, 0x76, 0x75, 0x76, 0x75, 0x72, 0x72, 0x74, - 0x73, 0x74, 0x77, 0x79, 0x76, 0x75, 0x75, 0x77, 0x7b, 0x71, 0x71, 0x76, 0x77, 0x79, 0x7a, 0x76, - 0x77, 0x77, 0x75, 0x76, 0x7a, 0x74, 0x6f, 0x79, 0x7e, 0x79, 0x79, 0x7a, 0x76, 0x76, 0x77, 0x78, - 0x7d, 0x78, 0x7a, 0x81, 0x82, 0x84, 0x86, 0x85, 0x88, 0x8e, 0x8c, 0x82, 0x85, 0x8a, 0x87, 0x82, - 0x7d, 0x84, 0x88, 0x89, 0x86, 0x88, 0x90, 0x89, 0x86, 0x87, 0x84, 0x88, 0x8b, 0x87, 0x86, 0x8e, - 0x8f, 0x85, 0x87, 0x88, 0x8a, 0x8b, 0x8b, 0x87, 0x88, 0x8c, 0x8d, 0x89, 0x8a, 0x8d, 0x8a, 0x84, - 0x87, 0x8e, 0x8c, 0x89, 0x87, 0x84, 0x86, 0x89, 0x83, 0x7c, 0x7b, 0x80, 0x7d, 0x79, 0x7b, 0x7c, - 0x7d, 0x81, 0x7b, 0x7d, 0x84, 0x81, 0x79, 0x7b, 0x7b, 0x7b, 0x7a, 0x76, 0x7a, 0x77, 0x70, 0x75, - 0x76, 0x79, 0x7b, 0x7c, 0x78, 0x7b, 0x82, 0x7a, 0x7a, 0x77, 0x75, 0x75, 0x77, 0x78, 0x77, 0x7c, - 0x7c, 0x73, 0x78, 0x7c, 0x7a, 0x7d, 0x79, 0x75, 0x7d, 0x83, 0x80, 0x7c, 0x7a, 0x79, 0x77, 0x7a, - 0x7c, 0x7e, 0x7d, 0x7e, 0x80, 0x7a, 0x81, 0x84, 0x7c, 0x7b, 0x85, 0x86, 0x85, 0x80, 0x82, 0x86, - 0x84, 0x83, 0x85, 0x8e, 0x87, 0x81, 0x83, 0x87, 0x8d, 0x85, 0x81, 0x84, 0x86, 0x86, 0x86, 0x84, - 0x84, 0x80, 0x82, 0x87, 0x83, 0x83, 0x7e, 0x7a, 0x79, 0x7e, 0x86, 0x80, 0x7a, 0x80, 0x82, 0x81, - 0x81, 0x79, 0x7c, 0x78, 0x78, 0x80, 0x80, 0x80, 0x82, 0x7c, 0x7c, 0x77, 0x7c, 0x80, 0x77, 0x76, - 0x7d, 0x83, 0x81, 0x7c, 0x7d, 0x82, 0x7d, 0x79, 0x7c, 0x80, 0x82, 0x7b, 0x80, 0x7e, 0x7a, 0x79, - 0x77, 0x7c, 0x78, 0x77, 0x7d, 0x7d, 0x7d, 0x7c, 0x80, 0x7e, 0x7a, 0x83, 0x80, 0x74, 0x77, 0x7d, - 0x81, 0x7e, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7b, 0x79, 0x7b, 0x7c, 0x84, 0x87, 0x89, 0x83, - 0x83, 0x8e, 0x8b, 0x87, 0x8a, 0x81, 0x85, 0x8a, 0x7e, 0x7c, 0x7b, 0x7a, 0x75, 0x74, 0x7c, 0x7d, - 0x7b, 0x76, 0x77, 0x7b, 0x7c, 0x7d, 0x79, 0x7b, 0x7a, 0x80, 0x85, 0x81, 0x83, 0x88, 0x7e, 0x79, - 0x82, 0x83, 0x83, 0x82, 0x80, 0x80, 0x82, 0x80, 0x84, 0x80, 0x84, 0x86, 0x80, 0x81, 0x85, 0x84, - 0x83, 0x83, 0x87, 0x89, 0x87, 0x87, 0x82, 0x80, 0x84, 0x89, 0x87, 0x85, 0x86, 0x81, 0x81, 0x85, - 0x83, 0x87, 0x86, 0x85, 0x86, 0x8a, 0x88, 0x84, 0x87, 0x84, 0x82, 0x87, 0x84, 0x85, 0x84, 0x81, - 0x88, 0x8b, 0x86, 0x81, 0x83, 0x81, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x83, 0x80, 0x7b, 0x82, 0x7c, - 0x73, 0x75, 0x78, 0x74, 0x74, 0x76, 0x74, 0x71, 0x6f, 0x70, 0x6f, 0x68, 0x6d, 0x71, 0x69, 0x67, - 0x69, 0x6c, 0x6c, 0x69, 0x6d, 0x70, 0x73, 0x74, 0x73, 0x79, 0x78, 0x7a, 0x79, 0x78, 0x77, 0x76, - 0x7a, 0x73, 0x79, 0x7d, 0x76, 0x7c, 0x7c, 0x7a, 0x7e, 0x7b, 0x74, 0x7d, 0x83, 0x82, 0x85, 0x86, - 0x84, 0x85, 0x84, 0x89, 0x8b, 0x88, 0x8a, 0x8b, 0x8a, 0x89, 0x8c, 0x8f, 0x85, 0x88, 0x94, 0x91, - 0x8e, 0x8d, 0x8a, 0x8f, 0x90, 0x8c, 0x90, 0x93, 0x8a, 0x87, 0x86, 0x88, 0x8a, 0x87, 0x87, 0x86, - 0x81, 0x82, 0x82, 0x82, 0x81, 0x85, 0x86, 0x81, 0x82, 0x83, 0x7d, 0x80, 0x85, 0x85, 0x81, 0x80, - 0x86, 0x85, 0x88, 0x81, 0x7d, 0x87, 0x83, 0x7c, 0x7e, 0x7d, 0x7d, 0x7c, 0x77, 0x7a, 0x7c, 0x79, - 0x76, 0x73, 0x77, 0x7c, 0x80, 0x7a, 0x73, 0x78, 0x7c, 0x79, 0x73, 0x73, 0x76, 0x76, 0x72, 0x72, - 0x7b, 0x7e, 0x7b, 0x75, 0x7a, 0x80, 0x7c, 0x7c, 0x78, 0x7c, 0x82, 0x80, 0x80, 0x81, 0x80, 0x85, - 0x8b, 0x7c, 0x7d, 0x86, 0x7e, 0x79, 0x7d, 0x7d, 0x7b, 0x79, 0x79, 0x7b, 0x81, 0x81, 0x7c, 0x7b, - 0x7b, 0x81, 0x83, 0x7c, 0x79, 0x7e, 0x85, 0x7b, 0x79, 0x86, 0x81, 0x7c, 0x7d, 0x7b, 0x84, 0x87, - 0x85, 0x88, 0x87, 0x89, 0x86, 0x7e, 0x7c, 0x81, 0x83, 0x7d, 0x7d, 0x84, 0x83, 0x85, 0x88, 0x7e, - 0x7b, 0x81, 0x7d, 0x76, 0x75, 0x78, 0x74, 0x71, 0x7c, 0x79, 0x75, 0x78, 0x75, 0x76, 0x76, 0x7a, - 0x80, 0x74, 0x78, 0x84, 0x80, 0x7d, 0x80, 0x83, 0x83, 0x80, 0x81, 0x86, 0x7a, 0x83, 0x88, 0x87, - 0x86, 0x81, 0x83, 0x83, 0x82, 0x84, 0x88, 0x87, 0x83, 0x81, 0x80, 0x84, 0x87, 0x82, 0x7c, 0x81, - 0x81, 0x81, 0x7a, 0x7c, 0x7e, 0x80, 0x81, 0x7e, 0x84, 0x85, 0x80, 0x7a, 0x7a, 0x84, 0x81, 0x78, - 0x7a, 0x7c, 0x7a, 0x78, 0x7b, 0x7d, 0x7b, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x82, 0x7c, 0x7d, 0x7d, - 0x7e, 0x83, 0x79, 0x76, 0x81, 0x86, 0x81, 0x80, 0x83, 0x84, 0x84, 0x7e, 0x80, 0x82, 0x7b, 0x7b, - 0x7b, 0x7b, 0x7d, 0x7d, 0x7a, 0x7a, 0x7b, 0x85, 0x85, 0x7d, 0x82, 0x83, 0x83, 0x88, 0x7e, 0x81, - 0x82, 0x80, 0x7b, 0x7d, 0x83, 0x82, 0x82, 0x82, 0x83, 0x85, 0x89, 0x88, 0x85, 0x85, 0x8a, 0x8b, - 0x86, 0x84, 0x81, 0x86, 0x83, 0x7d, 0x86, 0x86, 0x81, 0x81, 0x7c, 0x80, 0x7c, 0x7b, 0x83, 0x82, - 0x81, 0x83, 0x8a, 0x88, 0x82, 0x83, 0x86, 0x83, 0x82, 0x86, 0x84, 0x80, 0x7d, 0x80, 0x7c, 0x7d, - 0x81, 0x7a, 0x78, 0x7a, 0x79, 0x7e, 0x81, 0x7d, 0x85, 0x84, 0x7d, 0x7b, 0x78, 0x78, 0x70, 0x76, - 0x79, 0x77, 0x7a, 0x7c, 0x7d, 0x7a, 0x7b, 0x7d, 0x78, 0x74, 0x75, 0x74, 0x74, 0x71, 0x77, 0x75, - 0x71, 0x73, 0x76, 0x79, 0x76, 0x72, 0x77, 0x78, 0x7a, 0x79, 0x75, 0x73, 0x73, 0x72, 0x72, 0x75, - 0x71, 0x72, 0x75, 0x76, 0x77, 0x7d, 0x7c, 0x7c, 0x7b, 0x80, 0x80, 0x82, 0x7e, 0x7c, 0x7e, 0x83, - 0x88, 0x86, 0x85, 0x87, 0x8a, 0x89, 0x87, 0x84, 0x84, 0x84, 0x82, 0x7d, 0x86, 0x89, 0x87, 0x85, - 0x89, 0x8d, 0x8c, 0x88, 0x8a, 0x85, 0x85, 0x85, 0x88, 0x87, 0x83, 0x89, 0x8a, 0x86, 0x87, 0x90, - 0x8c, 0x88, 0x8c, 0x8b, 0x8d, 0x8e, 0x8c, 0x8b, 0x8d, 0x8b, 0x87, 0x84, 0x82, 0x84, 0x81, 0x7e, - 0x83, 0x84, 0x83, 0x7d, 0x7d, 0x83, 0x7b, 0x7a, 0x7e, 0x7a, 0x7c, 0x80, 0x80, 0x7d, 0x80, 0x80, - 0x7c, 0x7d, 0x85, 0x84, 0x7a, 0x76, 0x7a, 0x73, 0x6e, 0x73, 0x72, 0x6f, 0x6b, 0x71, 0x77, 0x72, - 0x6f, 0x76, 0x74, 0x75, 0x77, 0x72, 0x76, 0x77, 0x76, 0x7a, 0x7c, 0x7a, 0x78, 0x78, 0x7c, 0x7c, - 0x77, 0x7a, 0x7b, 0x76, 0x77, 0x7d, 0x7d, 0x7b, 0x7a, 0x7d, 0x80, 0x7d, 0x84, 0x82, 0x81, 0x83, - 0x87, 0x87, 0x82, 0x85, 0x88, 0x84, 0x83, 0x88, 0x83, 0x86, 0x89, 0x8a, 0x8c, 0x8a, 0x91, 0x91, - 0x8a, 0x8e, 0x8e, 0x8c, 0x88, 0x8a, 0x89, 0x82, 0x84, 0x86, 0x82, 0x85, 0x86, 0x87, 0x81, 0x80, - 0x81, 0x80, 0x7a, 0x7a, 0x7b, 0x74, 0x77, 0x7b, 0x7b, 0x76, 0x78, 0x7b, 0x7b, 0x7b, 0x7e, 0x7d, - 0x7d, 0x7e, 0x7c, 0x7a, 0x77, 0x79, 0x74, 0x74, 0x79, 0x79, 0x78, 0x79, 0x7c, 0x7e, 0x78, 0x7d, - 0x80, 0x75, 0x72, 0x79, 0x78, 0x78, 0x79, 0x7b, 0x83, 0x80, 0x7e, 0x83, 0x7c, 0x7b, 0x7a, 0x7c, - 0x7d, 0x79, 0x7a, 0x82, 0x84, 0x7e, 0x7e, 0x86, 0x83, 0x80, 0x82, 0x81, 0x85, 0x83, 0x80, 0x82, - 0x84, 0x87, 0x85, 0x7b, 0x81, 0x83, 0x84, 0x83, 0x7e, 0x81, 0x86, 0x86, 0x7c, 0x7c, 0x81, 0x85, - 0x80, 0x7b, 0x80, 0x7e, 0x80, 0x7c, 0x7e, 0x85, 0x82, 0x85, 0x84, 0x81, 0x7e, 0x7d, 0x82, 0x7b, - 0x79, 0x84, 0x82, 0x7b, 0x7a, 0x83, 0x87, 0x80, 0x7c, 0x82, 0x81, 0x7b, 0x7e, 0x7b, 0x75, 0x77, - 0x76, 0x7a, 0x7d, 0x78, 0x80, 0x7b, 0x77, 0x7b, 0x80, 0x80, 0x7c, 0x7e, 0x82, 0x7e, 0x7d, 0x7a, - 0x7b, 0x80, 0x81, 0x86, 0x87, 0x83, 0x84, 0x87, 0x8b, 0x89, 0x81, 0x82, 0x83, 0x81, 0x7d, 0x82, - 0x85, 0x80, 0x80, 0x85, 0x87, 0x85, 0x82, 0x82, 0x86, 0x82, 0x84, 0x86, 0x81, 0x81, 0x84, 0x88, - 0x89, 0x84, 0x87, 0x8a, 0x83, 0x8a, 0x8a, 0x84, 0x85, 0x7c, 0x80, 0x83, 0x7d, 0x7e, 0x82, 0x7d, - 0x7c, 0x80, 0x80, 0x7a, 0x74, 0x78, 0x7a, 0x73, 0x71, 0x70, 0x70, 0x73, 0x6c, 0x6f, 0x71, 0x6f, - 0x6c, 0x6c, 0x72, 0x70, 0x72, 0x77, 0x75, 0x73, 0x77, 0x74, 0x74, 0x74, 0x73, 0x72, 0x74, 0x78, - 0x82, 0x83, 0x7b, 0x7d, 0x7d, 0x7c, 0x7d, 0x80, 0x7e, 0x7c, 0x7b, 0x7c, 0x7e, 0x83, 0x83, 0x83, - 0x87, 0x87, 0x86, 0x84, 0x89, 0x88, 0x80, 0x85, 0x89, 0x8f, 0x8d, 0x8b, 0x92, 0x92, 0x8e, 0x8e, - 0x90, 0x8e, 0x8a, 0x8c, 0x88, 0x87, 0x8f, 0x8b, 0x82, 0x82, 0x85, 0x83, 0x81, 0x81, 0x84, 0x82, - 0x83, 0x87, 0x86, 0x83, 0x85, 0x81, 0x80, 0x7d, 0x82, 0x86, 0x7e, 0x7e, 0x89, 0x88, 0x87, 0x85, - 0x82, 0x81, 0x7e, 0x7e, 0x78, 0x75, 0x77, 0x7a, 0x79, 0x7b, 0x7b, 0x7a, 0x78, 0x75, 0x79, 0x78, - 0x79, 0x78, 0x73, 0x74, 0x77, 0x75, 0x77, 0x79, 0x77, 0x73, 0x72, 0x79, 0x7c, 0x79, 0x79, 0x7a, - 0x7e, 0x7b, 0x7c, 0x83, 0x80, 0x7d, 0x79, 0x7c, 0x82, 0x78, 0x7b, 0x78, 0x7a, 0x85, 0x7e, 0x7c, - 0x7e, 0x7a, 0x7a, 0x7b, 0x79, 0x79, 0x7a, 0x78, 0x78, 0x80, 0x84, 0x82, 0x7d, 0x7d, 0x7d, 0x7b, - 0x82, 0x7e, 0x7c, 0x81, 0x81, 0x85, 0x8b, 0x85, 0x83, 0x86, 0x87, 0x83, 0x83, 0x86, 0x86, 0x83, - 0x7e, 0x87, 0x8b, 0x89, 0x88, 0x8a, 0x8b, 0x84, 0x85, 0x85, 0x86, 0x84, 0x82, 0x81, 0x82, 0x83, - 0x7d, 0x7b, 0x7d, 0x7b, 0x7c, 0x7a, 0x7e, 0x81, 0x7c, 0x7b, 0x7b, 0x81, 0x86, 0x81, 0x7e, 0x7c, - 0x7c, 0x7c, 0x75, 0x73, 0x76, 0x75, 0x79, 0x7c, 0x83, 0x81, 0x7b, 0x7e, 0x81, 0x7e, 0x7a, 0x7c, - 0x7c, 0x7a, 0x80, 0x85, 0x84, 0x7c, 0x7b, 0x81, 0x82, 0x7e, 0x81, 0x7e, 0x7a, 0x7c, 0x82, 0x7e, - 0x7e, 0x82, 0x80, 0x7b, 0x81, 0x7e, 0x7a, 0x7b, 0x79, 0x79, 0x7b, 0x7b, 0x7d, 0x7d, 0x79, 0x79, - 0x7a, 0x7a, 0x7c, 0x7a, 0x7d, 0x80, 0x81, 0x81, 0x85, 0x84, 0x80, 0x84, 0x81, 0x7e, 0x82, 0x80, - 0x82, 0x80, 0x83, 0x84, 0x81, 0x86, 0x88, 0x84, 0x80, 0x81, 0x80, 0x7a, 0x79, 0x7c, 0x7e, 0x7a, - 0x7c, 0x7d, 0x7d, 0x80, 0x85, 0x84, 0x7e, 0x81, 0x83, 0x82, 0x81, 0x85, 0x86, 0x85, 0x84, 0x86, - 0x88, 0x7e, 0x85, 0x87, 0x81, 0x86, 0x86, 0x84, 0x84, 0x81, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7b, - 0x7b, 0x82, 0x7d, 0x7c, 0x82, 0x81, 0x82, 0x7c, 0x80, 0x7e, 0x78, 0x7c, 0x80, 0x78, 0x7d, 0x82, - 0x7e, 0x82, 0x86, 0x7e, 0x7d, 0x80, 0x7b, 0x7d, 0x7b, 0x81, 0x7e, 0x7b, 0x7e, 0x85, 0x8a, 0x85, - 0x84, 0x85, 0x81, 0x83, 0x83, 0x7d, 0x7b, 0x7c, 0x7b, 0x7a, 0x7a, 0x80, 0x7d, 0x78, 0x7a, 0x7b, - 0x7c, 0x7c, 0x7a, 0x7b, 0x7b, 0x76, 0x7b, 0x7b, 0x78, 0x77, 0x78, 0x79, 0x82, 0x80, 0x7b, 0x83, - 0x86, 0x82, 0x82, 0x84, 0x81, 0x7d, 0x7c, 0x75, 0x74, 0x78, 0x79, 0x76, 0x75, 0x7a, 0x7b, 0x7a, - 0x7a, 0x7b, 0x7d, 0x7a, 0x76, 0x78, 0x79, 0x77, 0x79, 0x82, 0x81, 0x7c, 0x80, 0x83, 0x82, 0x83, - 0x82, 0x85, 0x83, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x81, 0x80, 0x7e, 0x7d, 0x7e, 0x83, 0x84, 0x82, - 0x83, 0x82, 0x83, 0x84, 0x85, 0x82, 0x80, 0x84, 0x86, 0x85, 0x89, 0x85, 0x84, 0x86, 0x87, 0x8b, - 0x8c, 0x88, 0x84, 0x87, 0x8b, 0x86, 0x84, 0x87, 0x87, 0x86, 0x84, 0x86, 0x87, 0x81, 0x81, 0x88, - 0x83, 0x82, 0x80, 0x82, 0x7e, 0x7b, 0x81, 0x7e, 0x7e, 0x82, 0x82, 0x81, 0x81, 0x82, 0x81, 0x79, - 0x7d, 0x7c, 0x74, 0x77, 0x77, 0x76, 0x77, 0x76, 0x78, 0x76, 0x73, 0x75, 0x75, 0x76, 0x77, 0x74, - 0x70, 0x73, 0x75, 0x70, 0x72, 0x75, 0x76, 0x75, 0x75, 0x79, 0x7b, 0x7a, 0x79, 0x81, 0x82, 0x7d, - 0x80, 0x80, 0x79, 0x79, 0x7b, 0x7a, 0x7d, 0x7b, 0x7e, 0x7c, 0x7d, 0x81, 0x7e, 0x80, 0x80, 0x82, - 0x85, 0x85, 0x86, 0x88, 0x87, 0x88, 0x89, 0x87, 0x88, 0x86, 0x87, 0x8b, 0x8e, 0x8c, 0x89, 0x8e, - 0x8d, 0x89, 0x8b, 0x8b, 0x8d, 0x8a, 0x84, 0x8d, 0x8b, 0x83, 0x86, 0x85, 0x86, 0x84, 0x82, 0x84, - 0x81, 0x7d, 0x7b, 0x7b, 0x81, 0x82, 0x7b, 0x79, 0x7a, 0x7d, 0x7b, 0x7d, 0x7a, 0x76, 0x78, 0x76, - 0x79, 0x78, 0x7c, 0x79, 0x76, 0x7c, 0x7a, 0x78, 0x7a, 0x7b, 0x78, 0x78, 0x77, 0x78, 0x79, 0x78, - 0x77, 0x7b, 0x7b, 0x79, 0x7b, 0x7c, 0x7b, 0x79, 0x7b, 0x7d, 0x80, 0x81, 0x7d, 0x7c, 0x7c, 0x7b, - 0x78, 0x78, 0x78, 0x7a, 0x7a, 0x78, 0x7b, 0x7e, 0x7e, 0x82, 0x81, 0x7e, 0x82, 0x81, 0x83, 0x85, - 0x84, 0x80, 0x81, 0x88, 0x82, 0x85, 0x85, 0x84, 0x86, 0x85, 0x85, 0x86, 0x83, 0x82, 0x82, 0x82, - 0x82, 0x80, 0x81, 0x82, 0x7e, 0x83, 0x83, 0x81, 0x84, 0x85, 0x82, 0x7e, 0x7b, 0x7a, 0x79, 0x7e, - 0x80, 0x7e, 0x7d, 0x7d, 0x82, 0x81, 0x81, 0x7e, 0x7e, 0x81, 0x7c, 0x7d, 0x84, 0x84, 0x7e, 0x79, - 0x7e, 0x83, 0x80, 0x7c, 0x7a, 0x83, 0x82, 0x7b, 0x82, 0x81, 0x7b, 0x7c, 0x7e, 0x81, 0x81, 0x7c, - 0x80, 0x81, 0x7d, 0x7d, 0x7d, 0x83, 0x81, 0x80, 0x81, 0x7e, 0x82, 0x82, 0x80, 0x83, 0x87, 0x82, - 0x7e, 0x83, 0x88, 0x80, 0x7e, 0x81, 0x84, 0x84, 0x80, 0x84, 0x85, 0x81, 0x83, 0x82, 0x83, 0x88, - 0x87, 0x84, 0x89, 0x8c, 0x86, 0x83, 0x88, 0x89, 0x84, 0x81, 0x80, 0x84, 0x82, 0x7e, 0x7b, 0x7b, - 0x7a, 0x78, 0x76, 0x78, 0x77, 0x79, 0x77, 0x75, 0x78, 0x77, 0x76, 0x76, 0x74, 0x79, 0x77, 0x75, - 0x79, 0x78, 0x75, 0x79, 0x78, 0x76, 0x75, 0x77, 0x74, 0x73, 0x76, 0x77, 0x77, 0x75, 0x76, 0x77, - 0x7a, 0x7c, 0x78, 0x7c, 0x82, 0x82, 0x7c, 0x7d, 0x83, 0x85, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x83, - 0x84, 0x87, 0x85, 0x84, 0x85, 0x87, 0x88, 0x89, 0x88, 0x88, 0x8c, 0x8c, 0x88, 0x89, 0x8a, 0x88, - 0x8a, 0x89, 0x85, 0x84, 0x87, 0x86, 0x85, 0x88, 0x84, 0x82, 0x83, 0x82, 0x81, 0x83, 0x84, 0x86, - 0x80, 0x81, 0x88, 0x84, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7a, 0x79, 0x7b, 0x7c, 0x7d, 0x7b, - 0x7a, 0x7c, 0x79, 0x77, 0x77, 0x78, 0x75, 0x73, 0x78, 0x79, 0x7b, 0x7c, 0x7a, 0x7e, 0x7c, 0x7e, - 0x84, 0x7d, 0x7c, 0x7d, 0x7c, 0x7d, 0x7b, 0x78, 0x7a, 0x7c, 0x77, 0x78, 0x7d, 0x80, 0x78, 0x77, - 0x7c, 0x81, 0x81, 0x7e, 0x7c, 0x7a, 0x83, 0x7e, 0x7a, 0x7d, 0x7a, 0x7c, 0x7c, 0x7a, 0x82, 0x80, - 0x7c, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x82, 0x83, 0x80, 0x7d, 0x82, 0x7d, 0x7e, 0x86, 0x87, - 0x81, 0x81, 0x84, 0x81, 0x83, 0x86, 0x82, 0x84, 0x85, 0x7e, 0x84, 0x88, 0x86, 0x89, 0x84, 0x84, - 0x89, 0x87, 0x87, 0x87, 0x85, 0x83, 0x82, 0x83, 0x85, 0x85, 0x80, 0x83, 0x83, 0x80, 0x83, 0x84, - 0x7e, 0x7b, 0x7a, 0x7e, 0x7c, 0x7d, 0x7d, 0x7b, 0x7b, 0x7e, 0x82, 0x80, 0x80, 0x7e, 0x7d, 0x80, - 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7b, 0x7c, 0x7d, 0x7c, 0x7b, 0x79, 0x80, 0x80, 0x79, - 0x7a, 0x7b, 0x7b, 0x79, 0x73, 0x77, 0x7d, 0x79, 0x79, 0x7e, 0x80, 0x7b, 0x7e, 0x7d, 0x7e, 0x7e, - 0x7b, 0x7d, 0x77, 0x78, 0x7e, 0x78, 0x79, 0x79, 0x78, 0x7b, 0x79, 0x7c, 0x7d, 0x7a, 0x7a, 0x7a, - 0x7d, 0x7e, 0x7d, 0x80, 0x80, 0x7e, 0x80, 0x85, 0x81, 0x7c, 0x7e, 0x81, 0x80, 0x80, 0x80, 0x7e, - 0x81, 0x80, 0x80, 0x85, 0x86, 0x85, 0x83, 0x84, 0x8a, 0x85, 0x82, 0x83, 0x83, 0x82, 0x81, 0x80, - 0x81, 0x7e, 0x81, 0x84, 0x81, 0x83, 0x86, 0x84, 0x87, 0x8a, 0x88, 0x84, 0x85, 0x83, 0x86, 0x83, - 0x83, 0x84, 0x82, 0x82, 0x7d, 0x85, 0x88, 0x81, 0x82, 0x81, 0x81, 0x82, 0x7d, 0x7c, 0x7e, 0x7e, - 0x78, 0x78, 0x80, 0x7d, 0x7a, 0x7b, 0x80, 0x7c, 0x79, 0x7d, 0x83, 0x7e, 0x7b, 0x7d, 0x82, 0x81, - 0x7c, 0x7e, 0x7c, 0x7e, 0x80, 0x7e, 0x7e, 0x81, 0x82, 0x79, 0x7b, 0x7d, 0x7d, 0x7d, 0x7a, 0x7b, - 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x80, 0x83, 0x80, 0x7b, 0x81, 0x81, 0x7e, 0x81, 0x82, - 0x83, 0x81, 0x7e, 0x81, 0x88, 0x83, 0x7d, 0x81, 0x82, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x82, - 0x83, 0x81, 0x80, 0x7c, 0x7c, 0x7e, 0x7c, 0x77, 0x78, 0x7c, 0x7a, 0x79, 0x7d, 0x7c, 0x7b, 0x77, - 0x75, 0x7e, 0x7c, 0x7a, 0x7c, 0x7a, 0x7b, 0x7b, 0x78, 0x77, 0x78, 0x79, 0x7a, 0x76, 0x7d, 0x7d, - 0x7b, 0x7d, 0x7d, 0x81, 0x80, 0x7e, 0x82, 0x80, 0x80, 0x82, 0x85, 0x84, 0x85, 0x84, 0x81, 0x82, - 0x83, 0x84, 0x86, 0x85, 0x83, 0x83, 0x85, 0x87, 0x86, 0x83, 0x87, 0x89, 0x84, 0x82, 0x86, 0x87, - 0x82, 0x7c, 0x80, 0x85, 0x84, 0x80, 0x80, 0x82, 0x83, 0x84, 0x86, 0x86, 0x87, 0x8a, 0x87, 0x82, - 0x85, 0x86, 0x7e, 0x7d, 0x83, 0x82, 0x7c, 0x7c, 0x80, 0x7e, 0x7d, 0x7e, 0x81, 0x81, 0x80, 0x7c, - 0x7d, 0x7d, 0x79, 0x77, 0x77, 0x7a, 0x79, 0x75, 0x75, 0x77, 0x75, 0x72, 0x74, 0x77, 0x77, 0x76, - 0x77, 0x79, 0x78, 0x76, 0x78, 0x79, 0x77, 0x76, 0x78, 0x7a, 0x7b, 0x7c, 0x7a, 0x78, 0x7e, 0x7d, - 0x77, 0x79, 0x7c, 0x7a, 0x76, 0x7a, 0x7d, 0x82, 0x82, 0x7d, 0x81, 0x86, 0x88, 0x83, 0x82, 0x83, - 0x85, 0x84, 0x84, 0x87, 0x8a, 0x87, 0x87, 0x8e, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8a, - 0x8b, 0x89, 0x88, 0x8a, 0x8a, 0x8a, 0x8c, 0x8d, 0x8b, 0x85, 0x85, 0x86, 0x85, 0x82, 0x81, 0x86, - 0x85, 0x7e, 0x7b, 0x81, 0x84, 0x7c, 0x7d, 0x7c, 0x7a, 0x80, 0x7a, 0x74, 0x77, 0x7b, 0x7d, 0x75, - 0x75, 0x79, 0x76, 0x72, 0x73, 0x76, 0x75, 0x78, 0x76, 0x74, 0x75, 0x78, 0x75, 0x70, 0x6f, 0x71, - 0x73, 0x72, 0x6f, 0x72, 0x76, 0x79, 0x7b, 0x78, 0x79, 0x7c, 0x7e, 0x7b, 0x76, 0x7a, 0x7d, 0x7a, - 0x78, 0x7a, 0x7e, 0x7b, 0x7b, 0x7a, 0x7b, 0x85, 0x83, 0x7d, 0x81, 0x83, 0x85, 0x85, 0x87, 0x8b, - 0x89, 0x89, 0x88, 0x88, 0x89, 0x8a, 0x8b, 0x86, 0x84, 0x86, 0x88, 0x85, 0x83, 0x86, 0x81, 0x81, - 0x86, 0x83, 0x81, 0x85, 0x86, 0x85, 0x80, 0x81, 0x82, 0x7e, 0x7e, 0x7b, 0x7d, 0x7e, 0x7c, 0x7c, - 0x83, 0x84, 0x81, 0x80, 0x80, 0x81, 0x81, 0x7d, 0x7e, 0x80, 0x7e, 0x7c, 0x7e, 0x81, 0x7b, 0x7d, - 0x7e, 0x7c, 0x81, 0x81, 0x80, 0x7a, 0x7d, 0x80, 0x7d, 0x7c, 0x7b, 0x7c, 0x78, 0x78, 0x7a, 0x7b, - 0x79, 0x7c, 0x7c, 0x7a, 0x7c, 0x7e, 0x7d, 0x7c, 0x7e, 0x7e, 0x81, 0x7e, 0x80, 0x81, 0x82, 0x84, - 0x83, 0x81, 0x85, 0x88, 0x85, 0x83, 0x84, 0x82, 0x83, 0x81, 0x82, 0x86, 0x85, 0x82, 0x84, 0x82, - 0x81, 0x82, 0x82, 0x80, 0x7e, 0x83, 0x80, 0x81, 0x82, 0x81, 0x7e, 0x7e, 0x80, 0x80, 0x7d, 0x7d, - 0x7e, 0x7d, 0x7c, 0x7c, 0x80, 0x7e, 0x7c, 0x7c, 0x80, 0x7c, 0x7a, 0x7c, 0x80, 0x81, 0x7d, 0x7d, - 0x81, 0x7c, 0x7b, 0x7c, 0x78, 0x78, 0x79, 0x75, 0x76, 0x76, 0x74, 0x75, 0x77, 0x78, 0x78, 0x7a, - 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x77, 0x76, 0x77, 0x76, 0x7a, 0x7b, 0x7e, 0x81, 0x85, 0x83, 0x86, - 0x83, 0x84, 0x87, 0x85, 0x85, 0x85, 0x86, 0x84, 0x84, 0x82, 0x83, 0x85, 0x83, 0x83, 0x86, 0x86, - 0x83, 0x84, 0x84, 0x84, 0x84, 0x83, 0x81, 0x82, 0x83, 0x81, 0x81, 0x81, 0x83, 0x84, 0x85, 0x85, - 0x88, 0x85, 0x81, 0x82, 0x83, 0x81, 0x7d, 0x83, 0x84, 0x81, 0x80, 0x7e, 0x80, 0x7d, 0x7b, 0x7d, - 0x7b, 0x79, 0x7b, 0x79, 0x7a, 0x79, 0x79, 0x78, 0x7b, 0x80, 0x7d, 0x79, 0x7c, 0x7b, 0x7a, 0x7c, - 0x7b, 0x7d, 0x7b, 0x7a, 0x79, 0x7a, 0x7d, 0x7b, 0x7b, 0x7b, 0x7e, 0x81, 0x7d, 0x7e, 0x7e, 0x7d, - 0x7c, 0x7b, 0x7b, 0x7d, 0x7b, 0x7e, 0x81, 0x7d, 0x7e, 0x84, 0x83, 0x80, 0x7e, 0x82, 0x81, 0x7e, - 0x7d, 0x7e, 0x81, 0x82, 0x7d, 0x7a, 0x82, 0x85, 0x80, 0x7e, 0x83, 0x82, 0x82, 0x7e, 0x80, 0x80, - 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x81, 0x83, 0x83, 0x85, 0x86, 0x83, 0x83, 0x84, 0x86, - 0x85, 0x83, 0x82, 0x82, 0x84, 0x82, 0x81, 0x81, 0x84, 0x83, 0x7e, 0x80, 0x80, 0x81, 0x83, 0x7c, - 0x7c, 0x82, 0x80, 0x80, 0x83, 0x81, 0x7e, 0x81, 0x83, 0x81, 0x7d, 0x7d, 0x84, 0x81, 0x7d, 0x82, - 0x82, 0x82, 0x81, 0x83, 0x83, 0x80, 0x80, 0x7c, 0x7a, 0x7d, 0x7b, 0x76, 0x76, 0x7b, 0x7c, 0x76, - 0x77, 0x79, 0x78, 0x7a, 0x79, 0x7a, 0x7b, 0x77, 0x75, 0x75, 0x79, 0x79, 0x75, 0x76, 0x79, 0x79, - 0x79, 0x77, 0x77, 0x7a, 0x7c, 0x7a, 0x7b, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7b, - 0x7e, 0x81, 0x7e, 0x7b, 0x7e, 0x82, 0x83, 0x84, 0x7e, 0x7e, 0x81, 0x82, 0x83, 0x82, 0x81, 0x80, - 0x81, 0x82, 0x81, 0x83, 0x83, 0x81, 0x7d, 0x81, 0x84, 0x82, 0x83, 0x86, 0x84, 0x84, 0x84, 0x83, - 0x86, 0x85, 0x84, 0x82, 0x85, 0x88, 0x86, 0x84, 0x87, 0x88, 0x87, 0x87, 0x88, 0x88, 0x88, 0x84, - 0x83, 0x86, 0x86, 0x80, 0x80, 0x81, 0x7e, 0x7c, 0x7b, 0x7e, 0x7a, 0x79, 0x7c, 0x79, 0x7c, 0x7d, - 0x7b, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x80, 0x80, 0x7e, 0x82, 0x7d, 0x7b, 0x80, 0x7d, 0x80, 0x80, - 0x7c, 0x7d, 0x81, 0x7e, 0x7a, 0x7b, 0x7d, 0x7b, 0x79, 0x7a, 0x7e, 0x7a, 0x76, 0x74, 0x79, 0x7e, - 0x7b, 0x78, 0x79, 0x7e, 0x7e, 0x7a, 0x7a, 0x7c, 0x7d, 0x7c, 0x7c, 0x7e, 0x7d, 0x80, 0x83, 0x84, - 0x80, 0x83, 0x84, 0x84, 0x81, 0x80, 0x82, 0x83, 0x83, 0x82, 0x81, 0x83, 0x82, 0x80, 0x80, 0x82, - 0x83, 0x80, 0x7d, 0x7d, 0x84, 0x88, 0x82, 0x80, 0x82, 0x80, 0x81, 0x82, 0x7e, 0x7e, 0x80, 0x80, - 0x7e, 0x7d, 0x80, 0x7e, 0x77, 0x7a, 0x7e, 0x7d, 0x79, 0x79, 0x7b, 0x7b, 0x7b, 0x81, 0x7c, 0x79, - 0x7b, 0x7c, 0x7a, 0x7c, 0x80, 0x7c, 0x79, 0x79, 0x7b, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, - 0x7b, 0x79, 0x7b, 0x7b, 0x7c, 0x81, 0x84, 0x85, 0x80, 0x7e, 0x84, 0x87, 0x88, 0x83, 0x82, 0x83, - 0x83, 0x83, 0x84, 0x84, 0x84, 0x86, 0x83, 0x85, 0x84, 0x84, 0x84, 0x85, 0x86, 0x87, 0x86, 0x84, - 0x83, 0x83, 0x83, 0x82, 0x83, 0x7e, 0x80, 0x81, 0x7c, 0x7c, 0x7c, 0x7b, 0x7d, 0x7c, 0x7b, 0x7b, - 0x7a, 0x7c, 0x79, 0x7b, 0x7e, 0x79, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x79, 0x77, 0x76, 0x77, 0x78, - 0x76, 0x76, 0x7a, 0x7b, 0x7b, 0x80, 0x7d, 0x7b, 0x79, 0x7a, 0x7b, 0x7c, 0x79, 0x79, 0x7c, 0x7d, - 0x7d, 0x7e, 0x81, 0x80, 0x7c, 0x7e, 0x83, 0x82, 0x81, 0x81, 0x81, 0x84, 0x80, 0x81, 0x85, 0x85, - 0x84, 0x83, 0x85, 0x87, 0x86, 0x87, 0x89, 0x85, 0x8b, 0x8b, 0x85, 0x85, 0x85, 0x83, 0x80, 0x83, - 0x87, 0x84, 0x81, 0x84, 0x86, 0x84, 0x83, 0x85, 0x86, 0x81, 0x82, 0x86, 0x83, 0x83, 0x85, 0x86, - 0x86, 0x84, 0x83, 0x81, 0x7e, 0x7e, 0x80, 0x7b, 0x79, 0x7c, 0x79, 0x79, 0x7c, 0x7b, 0x7a, 0x79, - 0x7c, 0x7c, 0x7a, 0x78, 0x79, 0x78, 0x79, 0x7c, 0x7b, 0x78, 0x76, 0x77, 0x79, 0x77, 0x79, 0x78, - 0x74, 0x79, 0x79, 0x77, 0x77, 0x77, 0x76, 0x74, 0x77, 0x7a, 0x79, 0x76, 0x77, 0x7a, 0x79, 0x7a, - 0x7c, 0x7e, 0x7d, 0x7d, 0x80, 0x7d, 0x7c, 0x80, 0x80, 0x7c, 0x7e, 0x84, 0x86, 0x83, 0x83, 0x84, - 0x83, 0x85, 0x86, 0x84, 0x84, 0x84, 0x83, 0x83, 0x81, 0x84, 0x86, 0x83, 0x81, 0x83, 0x83, 0x80, - 0x7e, 0x81, 0x81, 0x81, 0x82, 0x83, 0x84, 0x82, 0x80, 0x81, 0x82, 0x83, 0x8a, 0x87, 0x80, 0x81, - 0x85, 0x88, 0x82, 0x82, 0x82, 0x7e, 0x81, 0x80, 0x82, 0x83, 0x82, 0x7e, 0x7e, 0x80, 0x81, 0x7d, - 0x7b, 0x7c, 0x7d, 0x7e, 0x7b, 0x78, 0x7a, 0x7d, 0x7e, 0x80, 0x7d, 0x80, 0x7d, 0x7c, 0x7d, 0x7d, - 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x82, 0x84, 0x7b, 0x79, 0x7e, 0x7d, - 0x7c, 0x7c, 0x7d, 0x82, 0x81, 0x80, 0x80, 0x81, 0x82, 0x7e, 0x80, 0x80, 0x81, 0x83, 0x82, 0x82, - 0x82, 0x81, 0x7d, 0x7e, 0x7c, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x7d, 0x7e, 0x7e, 0x7b, 0x7a, 0x81, - 0x80, 0x7c, 0x7a, 0x7d, 0x80, 0x7e, 0x7d, 0x80, 0x82, 0x81, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, - 0x7c, 0x80, 0x7d, 0x78, 0x7a, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x79, 0x78, 0x7d, 0x7c, 0x7b, 0x7c, - 0x7b, 0x7c, 0x7c, 0x7c, 0x80, 0x7e, 0x7d, 0x80, 0x82, 0x81, 0x83, 0x83, 0x80, 0x82, 0x83, 0x82, - 0x80, 0x83, 0x85, 0x83, 0x81, 0x86, 0x85, 0x83, 0x82, 0x7e, 0x7e, 0x80, 0x7e, 0x81, 0x7e, 0x7c, - 0x80, 0x80, 0x83, 0x83, 0x82, 0x81, 0x81, 0x83, 0x84, 0x83, 0x81, 0x83, 0x83, 0x83, 0x85, 0x82, - 0x7e, 0x7e, 0x80, 0x7e, 0x82, 0x81, 0x7c, 0x7e, 0x81, 0x7d, 0x80, 0x82, 0x82, 0x80, 0x81, 0x80, - 0x7d, 0x7c, 0x7b, 0x7e, 0x7e, 0x7e, 0x7e, 0x7b, 0x80, 0x7e, 0x7a, 0x7b, 0x7c, 0x7d, 0x7d, 0x7b, - 0x7c, 0x7c, 0x7a, 0x7e, 0x7d, 0x7c, 0x7d, 0x79, 0x7b, 0x80, 0x7e, 0x7c, 0x7d, 0x7c, 0x80, 0x7d, - 0x7b, 0x7d, 0x80, 0x7c, 0x7e, 0x83, 0x80, 0x81, 0x82, 0x82, 0x84, 0x84, 0x82, 0x82, 0x82, 0x81, - 0x84, 0x82, 0x7e, 0x80, 0x80, 0x82, 0x80, 0x7c, 0x7a, 0x7b, 0x7d, 0x80, 0x7d, 0x7d, 0x82, 0x82, - 0x7d, 0x80, 0x81, 0x81, 0x81, 0x80, 0x84, 0x85, 0x83, 0x84, 0x84, 0x82, 0x87, 0x89, 0x83, 0x82, - 0x86, 0x84, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x80, 0x80, 0x80, 0x81, 0x7e, 0x80, 0x84, - 0x83, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7d, 0x81, 0x83, 0x80, 0x7d, 0x81, 0x83, 0x80, 0x80, 0x7d, - 0x80, 0x81, 0x7e, 0x80, 0x81, 0x7d, 0x7b, 0x7e, 0x7d, 0x7c, 0x7a, 0x7a, 0x78, 0x7a, 0x7b, 0x78, - 0x75, 0x72, 0x74, 0x75, 0x77, 0x7a, 0x7a, 0x78, 0x79, 0x7d, 0x7d, 0x7a, 0x7a, 0x7c, 0x7b, 0x7b, - 0x7a, 0x7a, 0x78, 0x77, 0x79, 0x78, 0x7a, 0x7a, 0x77, 0x7b, 0x7b, 0x78, 0x7b, 0x7c, 0x7a, 0x7a, - 0x7b, 0x7d, 0x7d, 0x7b, 0x7c, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x84, 0x81, 0x83, 0x85, 0x84, - 0x84, 0x82, 0x83, 0x86, 0x87, 0x84, 0x83, 0x87, 0x88, 0x88, 0x89, 0x8a, 0x88, 0x88, 0x89, 0x86, - 0x85, 0x88, 0x84, 0x83, 0x89, 0x89, 0x88, 0x86, 0x84, 0x86, 0x85, 0x83, 0x82, 0x83, 0x80, 0x80, - 0x82, 0x82, 0x82, 0x83, 0x82, 0x7e, 0x82, 0x83, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7b, - 0x7c, 0x7d, 0x7d, 0x7a, 0x7b, 0x81, 0x80, 0x7a, 0x7b, 0x7c, 0x7a, 0x7b, 0x7a, 0x78, 0x7b, 0x7b, - 0x78, 0x7b, 0x7b, 0x79, 0x7d, 0x7c, 0x7b, 0x7c, 0x7d, 0x7a, 0x7b, 0x7b, 0x7a, 0x7c, 0x7c, 0x78, - 0x79, 0x7b, 0x7c, 0x80, 0x80, 0x7c, 0x7e, 0x80, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, - 0x80, 0x7e, 0x7e, 0x83, 0x83, 0x80, 0x82, 0x82, 0x81, 0x84, 0x85, 0x81, 0x83, 0x81, 0x81, 0x84, - 0x84, 0x82, 0x84, 0x85, 0x84, 0x83, 0x83, 0x83, 0x83, 0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x7d, - 0x7d, 0x7e, 0x7c, 0x7a, 0x7c, 0x81, 0x7e, 0x7b, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x78, 0x78, 0x7a, 0x7a, 0x79, 0x79, 0x7c, 0x7e, - 0x7c, 0x7d, 0x7e, 0x7b, 0x7a, 0x7d, 0x82, 0x7d, 0x7e, 0x82, 0x82, 0x80, 0x7e, 0x83, 0x83, 0x84, - 0x87, 0x88, 0x85, 0x82, 0x83, 0x83, 0x83, 0x81, 0x81, 0x82, 0x82, 0x81, 0x83, 0x82, 0x84, 0x84, - 0x82, 0x82, 0x84, 0x83, 0x7d, 0x80, 0x82, 0x81, 0x82, 0x80, 0x7d, 0x81, 0x81, 0x82, 0x82, 0x80, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x7e, 0x7d, 0x7e, 0x7e, 0x7c, 0x7c, 0x7d, 0x7b, 0x7b, 0x7b, 0x79, - 0x7b, 0x7b, 0x79, 0x7a, 0x79, 0x7a, 0x7e, 0x7c, 0x7b, 0x7d, 0x7d, 0x7a, 0x7b, 0x7d, 0x7b, 0x7b, - 0x79, 0x7a, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x82, 0x85, 0x84, 0x83, 0x82, 0x84, 0x85, 0x85, - 0x84, 0x85, 0x86, 0x85, 0x84, 0x88, 0x86, 0x86, 0x87, 0x87, 0x88, 0x8b, 0x8b, 0x86, 0x85, 0x87, - 0x84, 0x84, 0x86, 0x81, 0x82, 0x81, 0x81, 0x81, 0x7e, 0x80, 0x82, 0x82, 0x7e, 0x83, 0x83, 0x81, - 0x82, 0x81, 0x80, 0x81, 0x83, 0x80, 0x7c, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7a, 0x79, 0x78, 0x7b, - 0x7b, 0x79, 0x78, 0x7a, 0x76, 0x78, 0x7a, 0x76, 0x76, 0x76, 0x76, 0x75, 0x77, 0x79, 0x78, 0x77, - 0x7a, 0x7a, 0x79, 0x7a, 0x7c, 0x7b, 0x79, 0x7d, 0x80, 0x7c, 0x79, 0x7e, 0x80, 0x7b, 0x7c, 0x7c, - 0x7d, 0x7d, 0x7b, 0x7d, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7e, 0x7e, 0x7c, 0x7c, 0x7e, 0x80, 0x80, - 0x80, 0x81, 0x83, 0x82, 0x81, 0x83, 0x84, 0x85, 0x84, 0x82, 0x82, 0x85, 0x86, 0x85, 0x87, 0x84, - 0x83, 0x85, 0x85, 0x7e, 0x7e, 0x83, 0x83, 0x83, 0x82, 0x83, 0x86, 0x85, 0x84, 0x85, 0x85, 0x85, - 0x82, 0x82, 0x84, 0x83, 0x84, 0x82, 0x82, 0x84, 0x84, 0x83, 0x82, 0x80, 0x81, 0x85, 0x82, 0x80, - 0x81, 0x82, 0x82, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7b, 0x7d, 0x82, - 0x7e, 0x7b, 0x7e, 0x81, 0x80, 0x7d, 0x7b, 0x7d, 0x7c, 0x7e, 0x7e, 0x7b, 0x7b, 0x7b, 0x7d, 0x7b, - 0x7d, 0x7d, 0x7b, 0x79, 0x79, 0x7c, 0x7c, 0x7b, 0x7a, 0x7b, 0x7b, 0x7d, 0x7c, 0x7b, 0x7e, 0x7d, - 0x80, 0x81, 0x80, 0x82, 0x81, 0x7b, 0x7e, 0x81, 0x7e, 0x80, 0x7d, 0x7d, 0x7d, 0x7b, 0x7e, 0x7e, - 0x7d, 0x7b, 0x7c, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7c, - 0x7e, 0x80, 0x7d, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x81, 0x7e, 0x7d, 0x7e, 0x7e, 0x81, 0x80, 0x7d, - 0x81, 0x80, 0x7e, 0x81, 0x82, 0x80, 0x82, 0x84, 0x82, 0x84, 0x84, 0x82, 0x83, 0x82, 0x80, 0x82, - 0x83, 0x81, 0x7e, 0x7d, 0x7e, 0x82, 0x82, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x82, 0x81, 0x7d, - 0x7c, 0x7d, 0x80, 0x82, 0x81, 0x7d, 0x7e, 0x82, 0x82, 0x82, 0x81, 0x80, 0x81, 0x82, 0x81, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x81, 0x7c, 0x7b, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, - 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x7b, 0x7c, 0x80, 0x7e, 0x7e, 0x81, 0x82, 0x81, 0x83, 0x84, 0x82, - 0x80, 0x82, 0x83, 0x83, 0x83, 0x81, 0x80, 0x83, 0x82, 0x82, 0x81, 0x7d, 0x80, 0x81, 0x7e, 0x7e, - 0x7d, 0x7e, 0x7e, 0x81, 0x82, 0x82, 0x85, 0x81, 0x7e, 0x82, 0x83, 0x82, 0x80, 0x82, 0x83, 0x81, - 0x82, 0x81, 0x81, 0x83, 0x80, 0x81, 0x83, 0x80, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x80, 0x82, - 0x7e, 0x80, 0x82, 0x81, 0x7e, 0x81, 0x83, 0x84, 0x82, 0x82, 0x84, 0x83, 0x7e, 0x7d, 0x81, 0x81, - 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7c, 0x7c, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, - 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x82, 0x83, 0x80, 0x7e, 0x81, 0x83, 0x81, 0x7d, 0x80, - 0x7d, 0x7c, 0x7c, 0x7b, 0x7d, 0x7c, 0x79, 0x78, 0x78, 0x78, 0x79, 0x78, 0x7a, 0x7a, 0x79, 0x7a, - 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x79, 0x7b, 0x7e, 0x7b, 0x79, - 0x7b, 0x7c, 0x7d, 0x7b, 0x78, 0x7b, 0x7c, 0x78, 0x78, 0x7a, 0x78, 0x78, 0x7a, 0x7c, 0x7b, 0x7b, - 0x7c, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x84, 0x83, 0x85, 0x88, 0x86, 0x86, 0x88, 0x89, - 0x84, 0x84, 0x88, 0x87, 0x85, 0x85, 0x85, 0x84, 0x84, 0x85, 0x85, 0x85, 0x84, 0x83, 0x85, 0x87, - 0x87, 0x84, 0x84, 0x87, 0x88, 0x88, 0x86, 0x87, 0x88, 0x87, 0x85, 0x87, 0x87, 0x85, 0x83, 0x82, - 0x83, 0x86, 0x84, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x83, 0x81, 0x7d, 0x80, 0x80, 0x7c, 0x7d, - 0x7e, 0x7a, 0x79, 0x7b, 0x7d, 0x7c, 0x7a, 0x78, 0x78, 0x79, 0x7b, 0x78, 0x75, 0x75, 0x77, 0x78, - 0x76, 0x78, 0x79, 0x76, 0x76, 0x77, 0x7a, 0x7b, 0x78, 0x78, 0x7b, 0x7d, 0x7e, 0x80, 0x7d, 0x7b, - 0x7c, 0x7b, 0x7c, 0x7e, 0x7a, 0x7b, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x80, 0x7e, - 0x80, 0x81, 0x7d, 0x80, 0x82, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x81, 0x81, 0x81, 0x82, 0x84, - 0x85, 0x84, 0x86, 0x88, 0x86, 0x82, 0x83, 0x85, 0x84, 0x82, 0x7d, 0x7d, 0x82, 0x81, 0x7c, 0x7c, - 0x80, 0x82, 0x80, 0x80, 0x80, 0x82, 0x80, 0x7d, 0x81, 0x82, 0x80, 0x80, 0x7d, 0x7c, 0x80, 0x80, - 0x7c, 0x7d, 0x7c, 0x7c, 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x7e, 0x7c, 0x79, 0x7b, 0x7c, 0x7d, 0x7a, - 0x7d, 0x80, 0x7d, 0x7c, 0x7c, 0x7e, 0x7d, 0x7b, 0x7c, 0x7d, 0x81, 0x7e, 0x7b, 0x7d, 0x7e, 0x80, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x80, 0x80, 0x80, 0x81, 0x81, - 0x81, 0x82, 0x83, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x80, 0x81, 0x81, 0x82, 0x80, 0x81, 0x82, - 0x82, 0x82, 0x81, 0x82, 0x84, 0x81, 0x80, 0x81, 0x81, 0x7e, 0x7d, 0x81, 0x80, 0x7e, 0x81, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7e, 0x7e, 0x7d, 0x80, 0x7d, 0x7c, 0x7c, - 0x7d, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x7e, 0x80, 0x83, 0x82, 0x82, 0x84, 0x82, - 0x81, 0x82, 0x83, 0x84, 0x82, 0x82, 0x83, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x84, 0x84, - 0x82, 0x81, 0x81, 0x85, 0x83, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x81, 0x81, 0x82, 0x80, 0x7c, 0x7d, - 0x7e, 0x7b, 0x7b, 0x7c, 0x7a, 0x7b, 0x7a, 0x7c, 0x7b, 0x78, 0x7a, 0x7b, 0x79, 0x7a, 0x79, 0x78, - 0x79, 0x78, 0x79, 0x78, 0x78, 0x77, 0x76, 0x74, 0x77, 0x79, 0x79, 0x79, 0x78, 0x7a, 0x78, 0x7a, - 0x7b, 0x7b, 0x7b, 0x7a, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x80, 0x7e, 0x81, 0x82, 0x7d, 0x80, - 0x82, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x82, 0x82, 0x7e, 0x81, 0x83, 0x82, 0x82, - 0x82, 0x83, 0x85, 0x81, 0x82, 0x83, 0x85, 0x85, 0x82, 0x84, 0x85, 0x84, 0x86, 0x83, 0x83, 0x87, - 0x83, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x84, 0x84, 0x85, 0x86, 0x81, 0x81, 0x85, 0x83, 0x7e, - 0x80, 0x82, 0x81, 0x81, 0x82, 0x83, 0x82, 0x83, 0x85, 0x83, 0x82, 0x84, 0x86, 0x82, 0x81, 0x82, - 0x83, 0x83, 0x83, 0x81, 0x80, 0x80, 0x82, 0x81, 0x7c, 0x7e, 0x81, 0x7d, 0x7c, 0x7e, 0x7e, 0x7a, - 0x79, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7a, 0x7d, 0x7d, 0x78, 0x7a, 0x7c, 0x7a, - 0x79, 0x78, 0x7b, 0x7e, 0x7d, 0x7d, 0x7e, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7b, 0x79, 0x7a, 0x7b, - 0x7a, 0x79, 0x7b, 0x7c, 0x7d, 0x7c, 0x7d, 0x80, 0x7c, 0x7a, 0x7a, 0x7d, 0x7d, 0x7b, 0x7c, 0x7c, - 0x7c, 0x7d, 0x80, 0x7e, 0x7e, 0x7e, 0x7c, 0x7d, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7d, 0x80, - 0x82, 0x7e, 0x7c, 0x81, 0x83, 0x80, 0x7d, 0x81, 0x81, 0x82, 0x84, 0x81, 0x7e, 0x81, 0x80, 0x80, - 0x80, 0x81, 0x83, 0x81, 0x83, 0x83, 0x82, 0x83, 0x81, 0x80, 0x80, 0x82, 0x84, 0x82, 0x81, 0x82, - 0x82, 0x85, 0x83, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x81, 0x7e, 0x7d, 0x80, 0x83, 0x81, - 0x7c, 0x7c, 0x80, 0x80, 0x7d, 0x7b, 0x7e, 0x80, 0x7e, 0x7c, 0x7c, 0x7d, 0x7c, 0x7b, 0x7b, 0x7d, - 0x7e, 0x7e, 0x7a, 0x7b, 0x7e, 0x7d, 0x7a, 0x7b, 0x7d, 0x7c, 0x7a, 0x78, 0x79, 0x7b, 0x7b, 0x7c, - 0x7c, 0x7d, 0x7c, 0x7d, 0x7b, 0x7c, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x83, 0x84, 0x84, 0x83, 0x82, - 0x84, 0x85, 0x82, 0x81, 0x83, 0x85, 0x84, 0x81, 0x83, 0x84, 0x81, 0x7e, 0x82, 0x85, 0x83, 0x82, - 0x83, 0x83, 0x86, 0x86, 0x83, 0x83, 0x84, 0x82, 0x7e, 0x82, 0x82, 0x81, 0x7e, 0x81, 0x83, 0x83, - 0x81, 0x7e, 0x7d, 0x80, 0x7d, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x7d, 0x7e, 0x81, 0x80, - 0x7d, 0x80, 0x7d, 0x7d, 0x7d, 0x7b, 0x7d, 0x80, 0x7c, 0x7b, 0x7c, 0x7e, 0x7c, 0x7a, 0x7c, 0x80, - 0x7e, 0x79, 0x7b, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x7d, 0x7b, 0x7d, - 0x81, 0x80, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7c, 0x7d, 0x80, 0x7b, 0x79, 0x79, - 0x7a, 0x7a, 0x79, 0x79, 0x7b, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x7e, 0x7e, 0x7b, - 0x7c, 0x7e, 0x7e, 0x7d, 0x7e, 0x82, 0x82, 0x7e, 0x7d, 0x7d, 0x80, 0x7d, 0x7a, 0x7c, 0x7c, 0x79, - 0x7b, 0x7c, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, 0x7e, 0x7e, 0x7e, 0x81, - 0x7e, 0x81, 0x81, 0x82, 0x81, 0x80, 0x84, 0x83, 0x83, 0x84, 0x85, 0x86, 0x85, 0x86, 0x85, 0x85, - 0x87, 0x88, 0x88, 0x8a, 0x8b, 0x88, 0x86, 0x87, 0x89, 0x85, 0x84, 0x86, 0x84, 0x82, 0x83, 0x84, - 0x84, 0x83, 0x84, 0x85, 0x85, 0x85, 0x84, 0x83, 0x85, 0x87, 0x84, 0x84, 0x85, 0x85, 0x85, 0x83, - 0x80, 0x81, 0x81, 0x7e, 0x80, 0x80, 0x80, 0x7d, 0x7c, 0x7e, 0x7e, 0x7e, 0x7c, 0x7b, 0x7b, 0x7a, - 0x7b, 0x7b, 0x79, 0x79, 0x7a, 0x79, 0x79, 0x7b, 0x77, 0x75, 0x77, 0x74, 0x73, 0x76, 0x76, 0x78, - 0x76, 0x75, 0x79, 0x79, 0x77, 0x77, 0x7a, 0x7a, 0x79, 0x7b, 0x7d, 0x7c, 0x7a, 0x7c, 0x7c, 0x7b, - 0x7e, 0x7d, 0x7a, 0x7a, 0x7d, 0x7e, 0x7b, 0x7c, 0x7e, 0x7a, 0x7a, 0x7e, 0x81, 0x7d, 0x7d, 0x81, - 0x82, 0x83, 0x83, 0x83, 0x83, 0x85, 0x84, 0x83, 0x83, 0x84, 0x81, 0x82, 0x86, 0x87, 0x82, 0x83, - 0x83, 0x83, 0x84, 0x83, 0x83, 0x83, 0x81, 0x82, 0x83, 0x82, 0x81, 0x82, 0x83, 0x82, 0x83, 0x86, - 0x83, 0x81, 0x82, 0x81, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x7e, 0x7c, 0x7e, 0x80, 0x80, 0x7d, - 0x7d, 0x82, 0x82, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x79, 0x7a, 0x7c, - 0x7b, 0x7a, 0x7a, 0x7d, 0x80, 0x7b, 0x7a, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, - 0x80, 0x7e, 0x7e, 0x81, 0x7e, 0x7b, 0x7d, 0x7c, 0x7c, 0x7e, 0x82, 0x82, 0x82, 0x83, 0x82, 0x83, - 0x83, 0x83, 0x81, 0x7d, 0x80, 0x82, 0x81, 0x80, 0x82, 0x84, 0x82, 0x80, 0x82, 0x84, 0x84, 0x81, - 0x82, 0x83, 0x83, 0x80, 0x80, 0x82, 0x83, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x83, 0x85, 0x84, - 0x82, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7c, 0x80, - 0x80, 0x7c, 0x7d, 0x80, 0x7d, 0x7d, 0x82, 0x83, 0x7d, 0x7d, 0x81, 0x83, 0x7e, 0x7e, 0x81, 0x7e, - 0x7c, 0x7c, 0x7e, 0x7d, 0x7d, 0x7e, 0x81, 0x81, 0x81, 0x80, 0x81, 0x80, 0x82, 0x83, 0x80, 0x7e, - 0x80, 0x80, 0x7c, 0x7c, 0x82, 0x81, 0x7e, 0x81, 0x81, 0x7e, 0x7e, 0x7d, 0x7b, 0x7b, 0x7c, 0x7b, - 0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x79, 0x79, 0x7d, 0x7d, 0x7a, 0x78, - 0x79, 0x7a, 0x78, 0x77, 0x79, 0x79, 0x7b, 0x79, 0x7a, 0x7c, 0x7d, 0x7b, 0x7b, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x7e, 0x7e, 0x80, - 0x80, 0x80, 0x81, 0x82, 0x81, 0x80, 0x82, 0x82, 0x84, 0x85, 0x83, 0x84, 0x86, 0x85, 0x85, 0x86, - 0x86, 0x84, 0x85, 0x85, 0x85, 0x85, 0x82, 0x84, 0x86, 0x82, 0x84, 0x84, 0x81, 0x82, 0x84, 0x81, - 0x83, 0x85, 0x83, 0x82, 0x83, 0x84, 0x83, 0x81, 0x7e, 0x7e, 0x81, 0x7c, 0x7d, 0x82, 0x7d, 0x7e, - 0x83, 0x83, 0x80, 0x81, 0x82, 0x82, 0x81, 0x84, 0x83, 0x83, 0x84, 0x83, 0x82, 0x81, 0x84, 0x82, - 0x7e, 0x80, 0x81, 0x81, 0x7e, 0x80, 0x80, 0x7d, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7d, 0x7c, 0x78, 0x79, 0x7a, 0x7a, 0x7a, 0x78, 0x79, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x7a, - 0x78, 0x7a, 0x7b, 0x7a, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, - 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7b, 0x7d, 0x7b, 0x7a, 0x7c, 0x7a, 0x7b, 0x80, 0x7e, 0x7d, 0x7e, - 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x7e, - 0x80, 0x81, 0x82, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x81, 0x84, 0x85, 0x85, - 0x85, 0x83, 0x83, 0x86, 0x85, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x83, 0x84, 0x83, 0x83, 0x83, - 0x85, 0x84, 0x83, 0x82, 0x81, 0x82, 0x80, 0x80, 0x82, 0x7e, 0x7d, 0x80, 0x7c, 0x7c, 0x7c, 0x7b, - 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x80, 0x80, 0x7d, 0x7c, 0x7e, 0x7b, 0x7a, 0x7d, 0x7c, 0x7b, 0x7a, - 0x7b, 0x7c, 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x78, 0x7a, 0x7d, 0x7d, 0x7b, 0x7b, 0x7c, 0x7b, 0x7c, - 0x7d, 0x7d, 0x80, 0x7c, 0x7d, 0x81, 0x82, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x80, 0x81, - 0x83, 0x83, 0x83, 0x85, 0x84, 0x81, 0x84, 0x85, 0x84, 0x83, 0x85, 0x86, 0x85, 0x84, 0x86, 0x86, - 0x84, 0x83, 0x84, 0x86, 0x83, 0x82, 0x84, 0x84, 0x80, 0x81, 0x82, 0x82, 0x80, 0x7e, 0x82, 0x83, - 0x80, 0x80, 0x81, 0x82, 0x80, 0x80, 0x81, 0x7e, 0x80, 0x7e, 0x7c, 0x7e, 0x81, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x7b, 0x7d, 0x7b, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7a, - 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7a, 0x79, 0x79, 0x7a, 0x78, 0x78, 0x7a, 0x7a, 0x7a, 0x7c, - 0x7e, 0x7d, 0x7e, 0x81, 0x80, 0x7e, 0x80, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x80, 0x80, 0x7d, - 0x7c, 0x7e, 0x80, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x80, 0x7e, 0x7c, 0x80, 0x82, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x7e, 0x7e, 0x80, 0x80, 0x7d, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x83, 0x84, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x82, 0x83, 0x83, 0x84, 0x84, 0x83, - 0x83, 0x85, 0x85, 0x83, 0x83, 0x83, 0x82, 0x82, 0x83, 0x84, 0x84, 0x84, 0x82, 0x83, 0x85, 0x85, - 0x83, 0x83, 0x83, 0x84, 0x83, 0x82, 0x84, 0x83, 0x82, 0x82, 0x83, 0x83, 0x80, 0x81, 0x81, 0x7d, - 0x7e, 0x80, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7a, 0x7b, 0x7d, 0x7b, 0x7a, 0x7a, 0x7a, 0x7b, - 0x7b, 0x7a, 0x79, 0x7a, 0x7a, 0x77, 0x77, 0x79, 0x7a, 0x78, 0x78, 0x79, 0x78, 0x78, 0x76, 0x77, - 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7c, 0x7b, 0x7d, 0x80, 0x7e, 0x7c, 0x7e, 0x7c, 0x79, 0x7b, 0x7e, - 0x7d, 0x7b, 0x7d, 0x7e, 0x7d, 0x7a, 0x7a, 0x7e, 0x7e, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, - 0x81, 0x83, 0x83, 0x82, 0x85, 0x85, 0x84, 0x84, 0x84, 0x85, 0x86, 0x84, 0x84, 0x84, 0x82, 0x83, - 0x82, 0x80, 0x82, 0x84, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x81, 0x81, 0x81, 0x81, - 0x80, 0x82, 0x82, 0x81, 0x81, 0x82, 0x80, 0x7d, 0x80, 0x81, 0x80, 0x80, 0x82, 0x81, 0x81, 0x81, - 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7b, 0x7d, - 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x80, 0x80, - 0x7d, 0x7c, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7b, 0x7b, 0x7b, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7e, 0x81, 0x81, 0x80, 0x82, 0x82, 0x81, 0x80, 0x81, 0x82, 0x83, 0x82, 0x82, 0x84, - 0x84, 0x83, 0x85, 0x83, 0x82, 0x82, 0x81, 0x83, 0x82, 0x84, 0x82, 0x81, 0x83, 0x82, 0x80, 0x81, - 0x82, 0x80, 0x7e, 0x7e, 0x80, 0x7d, 0x7b, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x81, - 0x81, 0x7e, 0x7e, 0x81, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x81, 0x81, 0x7e, 0x80, 0x81, 0x7e, 0x7e, - 0x81, 0x81, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x7e, 0x7d, 0x7c, 0x7d, 0x7c, - 0x7b, 0x7c, 0x7c, 0x7b, 0x7a, 0x7b, 0x7b, 0x7a, 0x7b, 0x7c, 0x7c, 0x7a, 0x7b, 0x7d, 0x7e, 0x7d, - 0x7c, 0x7e, 0x7e, 0x7c, 0x7c, 0x7a, 0x7a, 0x7c, 0x7b, 0x7b, 0x7e, 0x7e, 0x7b, 0x7a, 0x7a, 0x7b, - 0x7b, 0x7a, 0x78, 0x7a, 0x7c, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7c, - 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x84, - 0x85, 0x84, 0x84, 0x83, 0x84, 0x87, 0x85, 0x84, 0x86, 0x87, 0x86, 0x85, 0x85, 0x86, 0x84, 0x82, - 0x83, 0x83, 0x83, 0x83, 0x85, 0x85, 0x85, 0x85, 0x83, 0x82, 0x82, 0x83, 0x80, 0x80, 0x82, 0x80, - 0x7d, 0x81, 0x81, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x82, 0x80, - 0x80, 0x80, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x81, 0x81, 0x7d, 0x80, 0x82, 0x7d, 0x7c, 0x7e, 0x7d, - 0x7b, 0x7d, 0x7e, 0x7c, 0x7b, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x7a, 0x7b, 0x7c, 0x7b, 0x7a, 0x7d, - 0x7e, 0x7b, 0x79, 0x7c, 0x7e, 0x7c, 0x7a, 0x7c, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, - 0x7b, 0x7d, 0x7d, 0x7c, 0x7b, 0x7c, 0x7e, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7b, 0x79, 0x7b, - 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7b, 0x7b, 0x7e, 0x7e, 0x80, 0x80, - 0x80, 0x82, 0x82, 0x81, 0x80, 0x81, 0x81, 0x80, 0x82, 0x80, 0x7e, 0x81, 0x81, 0x80, 0x80, 0x81, - 0x83, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x83, 0x84, 0x83, 0x82, 0x83, 0x84, 0x86, 0x86, 0x84, - 0x83, 0x83, 0x83, 0x83, 0x82, 0x81, 0x80, 0x82, 0x81, 0x80, 0x82, 0x82, 0x80, 0x80, 0x81, 0x82, - 0x82, 0x7e, 0x7e, 0x81, 0x80, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7c, - 0x7e, 0x80, 0x80, 0x7e, 0x7c, 0x7d, 0x7e, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7e, - 0x7c, 0x7b, 0x7a, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x7a, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, 0x7d, 0x7b, - 0x7b, 0x7e, 0x7e, 0x7c, 0x7e, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x81, 0x83, 0x82, 0x81, 0x83, 0x84, - 0x83, 0x80, 0x80, 0x82, 0x82, 0x80, 0x81, 0x84, 0x83, 0x82, 0x83, 0x83, 0x82, 0x84, 0x84, 0x83, - 0x83, 0x84, 0x84, 0x81, 0x80, 0x81, 0x83, 0x83, 0x81, 0x81, 0x82, 0x82, 0x83, 0x82, 0x80, 0x82, - 0x83, 0x81, 0x7e, 0x81, 0x82, 0x81, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x7c, 0x7b, - 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, - 0x79, 0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7c, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x81, 0x80, 0x7e, 0x80, 0x7e, 0x7d, - 0x7c, 0x7c, 0x7e, 0x7e, 0x7d, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7e, - 0x80, 0x80, 0x7e, 0x80, 0x81, 0x7d, 0x7e, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x83, 0x81, 0x81, 0x83, 0x83, 0x83, 0x84, 0x84, 0x85, 0x83, 0x83, 0x83, 0x82, 0x82, - 0x84, 0x84, 0x82, 0x83, 0x84, 0x83, 0x82, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x83, 0x81, - 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x83, 0x82, 0x7e, 0x81, 0x80, 0x80, 0x82, 0x83, 0x83, 0x82, - 0x82, 0x83, 0x84, 0x82, 0x83, 0x82, 0x81, 0x81, 0x81, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, - 0x7d, 0x7b, 0x7b, 0x7c, 0x7d, 0x7b, 0x7a, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7a, 0x7a, 0x7b, 0x7a, - 0x7a, 0x79, 0x78, 0x7a, 0x79, 0x78, 0x7a, 0x7a, 0x78, 0x78, 0x79, 0x7a, 0x7b, 0x7a, 0x7a, 0x7a, - 0x7b, 0x7c, 0x7b, 0x7a, 0x7d, 0x7d, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, 0x80, 0x80, 0x7e, - 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x82, 0x83, 0x82, 0x81, - 0x82, 0x83, 0x82, 0x82, 0x83, 0x84, 0x84, 0x82, 0x84, 0x85, 0x84, 0x84, 0x86, 0x84, 0x84, 0x86, - 0x84, 0x83, 0x85, 0x83, 0x82, 0x83, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, - 0x81, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x7d, - 0x7d, 0x7d, 0x7b, 0x7c, 0x7d, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7e, 0x80, - 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x82, 0x81, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x80, 0x80, - 0x7d, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x82, 0x80, 0x80, 0x82, 0x83, 0x82, 0x81, 0x80, 0x81, - 0x81, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7c, 0x7d, 0x80, 0x80, 0x7d, 0x7e, - 0x80, 0x7e, 0x7e, 0x80, 0x82, 0x82, 0x81, 0x82, 0x83, 0x81, 0x81, 0x82, 0x83, 0x82, 0x82, 0x81, - 0x81, 0x81, 0x7e, 0x7e, 0x81, 0x82, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x81, 0x80, 0x7d, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x7b, - 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7c, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7d, 0x7e, 0x80, 0x80, 0x7d, 0x7e, 0x80, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7b, 0x7b, 0x7d, - 0x7c, 0x7a, 0x7b, 0x7e, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x81, - 0x80, 0x81, 0x82, 0x81, 0x82, 0x84, 0x84, 0x84, 0x82, 0x81, 0x82, 0x82, 0x82, 0x83, 0x82, 0x83, - 0x85, 0x85, 0x84, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x81, 0x83, 0x85, 0x85, 0x84, - 0x84, 0x85, 0x85, 0x84, 0x82, 0x82, 0x84, 0x83, 0x81, 0x80, 0x83, 0x81, 0x80, 0x81, 0x81, 0x82, - 0x82, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7c, 0x7e, 0x80, 0x7d, 0x7e, 0x81, 0x80, 0x7c, 0x7c, - 0x7e, 0x7d, 0x7e, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, - 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x79, 0x79, 0x7c, 0x7c, 0x7b, 0x7c, 0x7e, 0x7d, 0x7c, 0x7d, - 0x7e, 0x7d, 0x7c, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x7d, 0x7c, 0x80, 0x7e, 0x7c, 0x7e, 0x80, 0x7c, - 0x7b, 0x7d, 0x7d, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, - 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x82, 0x81, 0x80, 0x81, 0x80, 0x80, 0x7e, - 0x7e, 0x80, 0x81, 0x81, 0x7d, 0x7e, 0x81, 0x81, 0x81, 0x80, 0x81, 0x82, 0x82, 0x80, 0x80, 0x83, - 0x83, 0x82, 0x82, 0x84, 0x86, 0x85, 0x83, 0x84, 0x86, 0x85, 0x84, 0x84, 0x84, 0x85, 0x83, 0x82, - 0x83, 0x84, 0x83, 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x80, 0x81, 0x82, 0x80, 0x7e, 0x80, 0x7e, - 0x7d, 0x7d, 0x7e, 0x7c, 0x7d, 0x7d, 0x7c, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, - 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, - 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x82, 0x81, 0x81, 0x82, - 0x82, 0x82, 0x83, 0x82, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x82, 0x81, 0x80, 0x82, 0x81, - 0x81, 0x83, 0x83, 0x81, 0x82, 0x83, 0x82, 0x82, 0x82, 0x84, 0x83, 0x82, 0x84, 0x85, 0x83, 0x81, - 0x80, 0x82, 0x80, 0x80, 0x83, 0x81, 0x81, 0x80, 0x7d, 0x80, 0x81, 0x7e, 0x7c, 0x7d, 0x7d, 0x7c, - 0x7b, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, - 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, - 0x7c, 0x7a, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x81, 0x80, 0x7e, 0x81, - 0x83, 0x81, 0x81, 0x83, 0x83, 0x83, 0x81, 0x80, 0x82, 0x82, 0x81, 0x80, 0x81, 0x82, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x82, 0x82, 0x80, 0x81, 0x84, 0x83, 0x81, 0x82, 0x83, 0x83, 0x80, 0x81, 0x83, 0x82, 0x81, - 0x81, 0x82, 0x83, 0x83, 0x82, 0x82, 0x82, 0x83, 0x82, 0x81, 0x82, 0x80, 0x80, 0x82, 0x82, 0x83, - 0x83, 0x81, 0x80, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x80, 0x81, - 0x81, 0x81, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x79, 0x7a, - 0x7b, 0x7a, 0x7a, 0x7b, 0x7c, 0x7a, 0x79, 0x7a, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7a, 0x79, 0x79, - 0x7a, 0x7b, 0x7b, 0x79, 0x7b, 0x7d, 0x7b, 0x7a, 0x7c, 0x7c, 0x7b, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, - 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x81, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, - 0x7e, 0x81, 0x82, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x82, 0x83, - 0x84, 0x83, 0x82, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x81, - 0x82, 0x83, 0x84, 0x84, 0x82, 0x82, 0x82, 0x81, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, - 0x82, 0x81, 0x81, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, - 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, - 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x81, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x7d, 0x7e, 0x7e, 0x7c, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x80, - 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, - 0x80, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x80, 0x7e, 0x7e, 0x7e, - 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, - 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, - 0x80, 0x80, 0x81, 0x80, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7c, 0x7c, - 0x7d, 0x7d, 0x7c, 0x7d, 0x80, 0x7e, 0x7c, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7a, - 0x7a, 0x7a, 0x7a, 0x7b, 0x7a, 0x79, 0x7c, 0x7b, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, - 0x80, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x82, 0x81, 0x80, 0x81, 0x83, 0x84, 0x83, 0x81, 0x82, 0x82, 0x82, 0x84, 0x84, 0x83, - 0x83, 0x84, 0x83, 0x84, 0x85, 0x85, 0x84, 0x84, 0x85, 0x84, 0x84, 0x85, 0x84, 0x83, 0x84, 0x85, - 0x85, 0x84, 0x84, 0x85, 0x85, 0x82, 0x80, 0x82, 0x82, 0x80, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, - 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7c, 0x7e, 0x7e, 0x7d, - 0x7c, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x79, 0x79, 0x7c, 0x7c, 0x7c, 0x7b, - 0x7b, 0x7c, 0x7b, 0x7a, 0x7b, 0x7c, 0x7b, 0x7a, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, - 0x7c, 0x7c, 0x7e, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7b, 0x7c, - 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x80, 0x7e, 0x7e, 0x80, 0x80, - 0x81, 0x81, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x7e, 0x81, 0x83, 0x82, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, - 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x83, 0x84, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, - 0x84, 0x83, 0x83, 0x83, 0x81, 0x82, 0x83, 0x81, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x80, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, - 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, - 0x80, 0x81, 0x7d, 0x7d, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x82, 0x81, 0x81, - 0x80, 0x80, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x81, 0x80, 0x82, 0x81, 0x80, 0x81, 0x80, - 0x80, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, - 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7a, - 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, - 0x81, 0x82, 0x81, 0x81, 0x83, 0x83, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, - 0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x82, 0x81, 0x80, 0x7e, 0x80, - 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x82, 0x81, 0x81, 0x82, 0x82, 0x83, 0x82, 0x82, 0x83, 0x83, - 0x82, 0x82, 0x83, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x82, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x82, 0x81, 0x82, 0x82, 0x81, 0x7e, 0x80, 0x81, 0x80, 0x7d, - 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, - 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7a, 0x7a, 0x7b, - 0x7a, 0x79, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x83, 0x81, 0x82, 0x83, - 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x84, 0x84, 0x82, 0x81, 0x81, 0x82, 0x83, 0x83, 0x82, - 0x83, 0x84, 0x84, 0x83, 0x83, 0x84, 0x82, 0x81, 0x83, 0x84, 0x84, 0x82, 0x81, 0x83, 0x83, 0x82, - 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x81, 0x82, 0x82, 0x83, 0x82, 0x7e, 0x7e, - 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, - 0x7b, 0x7c, 0x7d, 0x80, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7d, 0x7c, 0x7d, - 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x80, 0x7e, - 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, - 0x7d, 0x7e, 0x80, 0x81, 0x80, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x80, 0x7e, 0x81, 0x80, 0x80, - 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x80, 0x7d, 0x7e, - 0x81, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x82, 0x81, 0x81, 0x82, - 0x80, 0x7e, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x80, - 0x80, 0x7e, 0x81, 0x82, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 0x82, 0x83, 0x83, 0x82, 0x83, - 0x82, 0x82, 0x84, 0x84, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x84, 0x84, 0x84, 0x84, 0x83, - 0x84, 0x84, 0x82, 0x82, 0x83, 0x81, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, - 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7c, 0x7d, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, - 0x7a, 0x7a, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, - 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, - 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x84, 0x83, 0x82, 0x83, 0x83, 0x82, 0x81, 0x83, 0x82, - 0x82, 0x82, 0x82, 0x80, 0x80, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, - 0x7e, 0x7d, 0x7c, 0x7e, 0x7e, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7d, - 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, - 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x83, - 0x84, 0x83, 0x82, 0x83, 0x82, 0x81, 0x81, 0x82, 0x82, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, - 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x81, 0x81, - 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x7e, 0x7e, - 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x83, 0x82, 0x82, - 0x83, 0x83, 0x82, 0x83, 0x82, 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x81, - 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x80, 0x80, 0x82, 0x82, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, 0x7b, 0x7a, 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, - 0x7b, 0x7c, 0x7c, 0x7d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, - 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, - 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, 0x83, 0x82, 0x81, 0x81, - 0x83, 0x83, 0x84, 0x83, 0x82, 0x83, 0x83, 0x82, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x82, 0x83, 0x84, 0x84, 0x83, 0x82, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, - 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, - 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x81, 0x81, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x83, - 0x82, 0x81, 0x81, 0x81, 0x82, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7e, - 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, - 0x7b, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x83, - 0x84, 0x84, 0x83, 0x83, 0x82, 0x82, 0x84, 0x84, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, - 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, - 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x81, 0x82, 0x82, 0x81, 0x81, - 0x82, 0x82, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x80, 0x81, 0x82, - 0x82, 0x82, 0x83, 0x83, 0x82, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, - 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7b, 0x7b, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7b, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, - 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, - 0x82, 0x81, 0x82, 0x83, 0x83, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x84, 0x83, 0x83, 0x83, 0x82, - 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, - 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7e, - 0x80, 0x81, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, - 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, - 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x82, 0x82, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, - 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, - 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x83, 0x83, 0x83, 0x83, 0x84, 0x83, 0x83, 0x84, - 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x83, 0x82, 0x82, 0x81, 0x82, 0x82, 0x81, 0x81, - 0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, - 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x81, - 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7d, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, - 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x83, 0x83, 0x82, - 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x81, 0x82, 0x82, 0x82, 0x83, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7d, - 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, - 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, - 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x81, 0x80, - 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, - 0x81, 0x81, 0x81, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x83, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x83, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, - 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, - 0x83, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, - 0x81, 0x81, 0x81, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, - 0x80, 0x81, 0x82, 0x81, 0x82, 0x82, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x80, - 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, - 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, - 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x82, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x82, - 0x82, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, - 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, - 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, - 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, - 0x82, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x81, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, - 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, - 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, - 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, - 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x80, 0x81, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, - 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, - 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, - 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, - 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x80, - 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, - 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, - 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, - 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, - 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, - 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, - 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, - 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, - 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, - 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, - 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, - 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, - 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, - 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, - 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, - 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, - 0x80, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, - 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, - 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, - 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x81, 0x80, 0x80, 0x81, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7f, 0x80, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, - 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, - 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, - 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, - 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, - 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, - 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, - 0x7e, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -}; diff --git a/components/driver/test/dac_dma_test/test_esp32s2.c b/components/driver/test/dac_dma_test/test_esp32s2.c deleted file mode 100644 index 9b44acd095..0000000000 --- a/components/driver/test/dac_dma_test/test_esp32s2.c +++ /dev/null @@ -1,363 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/* - Tests for the dac device driver on ESP32-S2 only -*/ -#include "sdkconfig.h" -#if CONFIG_IDF_TARGET_ESP32S2 - -#include "esp_system.h" -#include "esp_intr_alloc.h" -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "freertos/queue.h" -#include "driver/adc.h" -#include "driver/rtc_io.h" -#include "driver/gpio.h" -#include "unity.h" -#include "esp_system.h" -#include "esp_event.h" -#include "esp_wifi.h" -#include "esp_log.h" -#include "nvs_flash.h" -#include "test_utils.h" -#include "soc/soc.h" -#include "soc/spi_reg.h" -#include "soc/adc_periph.h" -#include "soc/dac_periph.h" -#include "soc/spi_periph.h" -#include "test/test_common_adc.h" -#include "driver/dac.h" -#include "soc/system_reg.h" -#include "esp32s2/rom/lldesc.h" -#include "test/test_adc_dac_dma.h" - -/******************************************************** - * This test is left for testing the legacy DAC-DMA APIs - *******************************************************/ -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - -static const char *TAG = "test_adc"; - -#define PLATFORM_SELECT (1) //0: pxp; 1: chip -#if (PLATFORM_SELECT == 0) //PXP platform -#include "soc/apb_ctrl_reg.h" -#define SET_BREAK_POINT(flag) REG_WRITE(APB_CTRL_DATE_REG, flag) -//PXP clk is slower. -#define SYS_DELAY_TIME_MOM (1/40) -#define RTC_SLOW_CLK_FLAG 1 // Slow clock is 32KHz. -static void test_pxp_deinit_io(void) -{ - for (int i = 0; i < 22; i++) { - rtc_gpio_init(i); - } -} -#else -//PXP clk is slower. -#define SET_BREAK_POINT(flag) -#define SYS_DELAY_TIME_MOM (1) -#define RTC_SLOW_CLK_FLAG 0 // Slow clock is 32KHz. -#endif - -#define SAR_SIMPLE_NUM 512 // Set out number of enabled unit. - -typedef struct dma_msg { - uint32_t int_msk; - uint8_t *data; - uint32_t data_len; -} dac_dma_event_t; - -static QueueHandle_t que_dac = NULL; -static uint8_t link_buf[2][SAR_SIMPLE_NUM*2] = {0}; -static lldesc_t dma1 = {0}; -static lldesc_t dma2 = {0}; - -/*******************************************/ -/** DAC-DMA INIT CODE */ -/*******************************************/ - -/** - * DMA liner initialization and start. - * @param is_loop - * - true: The two dma linked lists are connected end to end, with no end mark (eof). - * - false: The two dma linked lists are connected end to end, with end mark (eof). - * @param int_mask DMA interrupt types. - */ -uint32_t dac_dma_linker_init(bool is_alter, bool is_loop) -{ - /* The DAC output is a sawtooth wave. */ - if (is_alter) { - for(int i=0; i> %s - dac mode %d<< ", __func__, mode); - - dac_dma_event_t evt; - - dac_digi_init(); - const dac_digi_config_t cfg = { - .mode = mode, - .interval = 100, - .dig_clk.use_apll = false, // APB clk - .dig_clk.div_num = 79, - .dig_clk.div_b = 1, - .dig_clk.div_a = 0, - }; - dac_digi_controller_config(&cfg); - dac_output_enable(DAC_CHANNEL_1); - dac_output_enable(DAC_CHANNEL_2); - - /* DAC-DMA linker init */ - if (que_dac == NULL) { - que_dac = xQueueCreate(5, sizeof(dac_dma_event_t)); - } else { - xQueueReset(que_dac); - } - uint32_t int_mask = SPI_OUT_DONE_INT_ENA | SPI_OUT_EOF_INT_ENA | SPI_OUT_TOTAL_EOF_INT_ENA; - uint32_t dma_addr = dac_dma_linker_init(mode, false); - adc_dac_dma_isr_register(dac_dma_isr, NULL, int_mask); - adc_dac_dma_linker_start(DMA_ONLY_DAC_OUTLINK, (void *)dma_addr, int_mask); - - /* ADC-DMA start output */ - dac_digi_start(); - - /* Check interrupt type */ - while (int_mask) { - TEST_ASSERT_EQUAL( xQueueReceive(que_dac, &evt, 2000 / portTICK_RATE_MS), pdTRUE ); - ESP_LOGI(TAG, "DAC-DMA intr type 0x%x", evt.int_msk); - if (evt.int_msk & int_mask) { - int_mask &= (~evt.int_msk); - } - } - - ESP_LOGI(TAG, "DAC-DMA intr test over"); - adc_dac_dma_linker_deinit(); - adc_dac_dma_isr_deregister(dac_dma_isr, NULL); - TEST_ESP_OK( dac_digi_deinit() ); -} - -TEST_CASE("DAC-DMA interrupt test", "[dac]") -{ - test_dac_dig_dma_intr_check(DAC_CONV_NORMAL); - test_dac_dig_dma_intr_check(DAC_CONV_ALTER); -} - -/*******************************************/ -/** SPI DMA INIT CODE */ -/*******************************************/ - -#include "sys/queue.h" -static bool adc_dac_dma_isr_flag = false; - -/*--------------------------------------------------------------- - INTERRUPT HANDLER ----------------------------------------------------------------*/ - -typedef struct adc_dac_dma_isr_handler_ { - uint32_t mask; - intr_handler_t handler; - void* handler_arg; - SLIST_ENTRY(adc_dac_dma_isr_handler_) next; -} adc_dac_dma_isr_handler_t; - -static SLIST_HEAD(adc_dac_dma_isr_handler_list_, adc_dac_dma_isr_handler_) s_adc_dac_dma_isr_handler_list = - SLIST_HEAD_INITIALIZER(s_adc_dac_dma_isr_handler_list); -portMUX_TYPE s_isr_handler_list_lock = portMUX_INITIALIZER_UNLOCKED; -static intr_handle_t s_adc_dac_dma_isr_handle; - -static IRAM_ATTR void adc_dac_dma_isr_default(void* arg) -{ - uint32_t status = REG_READ(SPI_DMA_INT_ST_REG(3)); - adc_dac_dma_isr_handler_t* it; - portENTER_CRITICAL_ISR(&s_isr_handler_list_lock); - SLIST_FOREACH(it, &s_adc_dac_dma_isr_handler_list, next) { - if (it->mask & status) { - portEXIT_CRITICAL_ISR(&s_isr_handler_list_lock); - (*it->handler)(it->handler_arg); - portENTER_CRITICAL_ISR(&s_isr_handler_list_lock); - } - } - portEXIT_CRITICAL_ISR(&s_isr_handler_list_lock); - REG_WRITE(SPI_DMA_INT_CLR_REG(3), status); -} - -static esp_err_t adc_dac_dma_isr_ensure_installed(void) -{ - esp_err_t err = ESP_OK; - portENTER_CRITICAL(&s_isr_handler_list_lock); - if (s_adc_dac_dma_isr_handle) { - goto out; - } - REG_WRITE(SPI_DMA_INT_ENA_REG(3), 0); - REG_WRITE(SPI_DMA_INT_CLR_REG(3), UINT32_MAX); - err = esp_intr_alloc(ETS_SPI3_DMA_INTR_SOURCE, 0, &adc_dac_dma_isr_default, NULL, &s_adc_dac_dma_isr_handle); - if (err != ESP_OK) { - goto out; - } - -out: - portEXIT_CRITICAL(&s_isr_handler_list_lock); - return err; -} - -esp_err_t adc_dac_dma_isr_register(intr_handler_t handler, void* handler_arg, uint32_t intr_mask) -{ - esp_err_t err = adc_dac_dma_isr_ensure_installed(); - if (err != ESP_OK) { - return err; - } - - adc_dac_dma_isr_handler_t* item = malloc(sizeof(*item)); - if (item == NULL) { - return ESP_ERR_NO_MEM; - } - item->handler = handler; - item->handler_arg = handler_arg; - item->mask = intr_mask; - portENTER_CRITICAL(&s_isr_handler_list_lock); - SLIST_INSERT_HEAD(&s_adc_dac_dma_isr_handler_list, item, next); - portEXIT_CRITICAL(&s_isr_handler_list_lock); - return ESP_OK; -} - -esp_err_t adc_dac_dma_isr_deregister(intr_handler_t handler, void* handler_arg) -{ - adc_dac_dma_isr_handler_t* it; - adc_dac_dma_isr_handler_t* prev = NULL; - bool found = false; - portENTER_CRITICAL(&s_isr_handler_list_lock); - SLIST_FOREACH(it, &s_adc_dac_dma_isr_handler_list, next) { - if (it->handler == handler && it->handler_arg == handler_arg) { - if (it == SLIST_FIRST(&s_adc_dac_dma_isr_handler_list)) { - SLIST_REMOVE_HEAD(&s_adc_dac_dma_isr_handler_list, next); - } else { - SLIST_REMOVE_AFTER(prev, next); - } - found = true; - free(it); - break; - } - prev = it; - } - portEXIT_CRITICAL(&s_isr_handler_list_lock); - return found ? ESP_OK : ESP_ERR_INVALID_STATE; -} - -void adc_dac_dma_linker_start(spi_dma_link_type_t type, void *dma_addr, uint32_t int_msk) -{ - REG_SET_BIT(DPORT_PERIP_CLK_EN_REG, DPORT_APB_SARADC_CLK_EN_M); - REG_SET_BIT(DPORT_PERIP_CLK_EN_REG, DPORT_SPI3_DMA_CLK_EN_M); - REG_SET_BIT(DPORT_PERIP_CLK_EN_REG, DPORT_SPI3_CLK_EN); - REG_CLR_BIT(DPORT_PERIP_RST_EN_REG, DPORT_SPI3_DMA_RST_M); - REG_CLR_BIT(DPORT_PERIP_RST_EN_REG, DPORT_SPI3_RST_M); - REG_WRITE(SPI_DMA_INT_CLR_REG(3), 0xFFFFFFFF); - REG_WRITE(SPI_DMA_INT_ENA_REG(3), int_msk | REG_READ(SPI_DMA_INT_ENA_REG(3))); - if (type & DMA_ONLY_ADC_INLINK) { - REG_SET_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_STOP); - REG_CLR_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_START); - SET_PERI_REG_BITS(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_ADDR, (uint32_t)dma_addr, 0); - REG_SET_BIT(SPI_DMA_CONF_REG(3), SPI_IN_RST); - REG_CLR_BIT(SPI_DMA_CONF_REG(3), SPI_IN_RST); - REG_CLR_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_STOP); - REG_SET_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_START); - } - if (type & DMA_ONLY_DAC_OUTLINK) { - REG_SET_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_STOP); - REG_CLR_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_START); - SET_PERI_REG_BITS(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_ADDR, (uint32_t)dma_addr, 0); - REG_SET_BIT(SPI_DMA_CONF_REG(3), SPI_OUT_RST); - REG_CLR_BIT(SPI_DMA_CONF_REG(3), SPI_OUT_RST); - REG_CLR_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_STOP); - REG_SET_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_START); - } -} - -void adc_dac_dma_linker_stop(spi_dma_link_type_t type) -{ - if (type & DMA_ONLY_ADC_INLINK) { - REG_SET_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_STOP); - REG_CLR_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_START); - } - if (type & DMA_ONLY_DAC_OUTLINK) { - REG_SET_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_STOP); - REG_CLR_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_START); - } -} - -void adc_dac_dma_linker_deinit(void) -{ - adc_dac_dma_linker_stop(DMA_BOTH_ADC_DAC); - REG_WRITE(SPI_DMA_INT_CLR_REG(3), 0xFFFFFFFF); - REG_WRITE(SPI_DMA_INT_ENA_REG(3), 0); - adc_dac_dma_isr_flag = false; -} - -/*******************************************/ -/** SPI DMA INIT CODE END */ -/*******************************************/ - -#endif // CONFIG_IDF_TARGET_ESP32S2 diff --git a/components/driver/test/test_dac_dma.c b/components/driver/test/test_dac_dma.c deleted file mode 100644 index 89e60b2cca..0000000000 --- a/components/driver/test/test_dac_dma.c +++ /dev/null @@ -1,209 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/* - Tests for the dac device driver on ESP32-S2 only -*/ -#include "sdkconfig.h" -#if CONFIG_IDF_TARGET_ESP32S2 - -#include "esp_system.h" -#include "esp_intr_alloc.h" -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "freertos/queue.h" -#include "driver/rtc_io.h" -#include "driver/gpio.h" -#include "unity.h" -#include "esp_system.h" -#include "esp_event.h" -#include "esp_wifi.h" -#include "esp_log.h" -#include "nvs_flash.h" -#include "test_utils.h" -#include "soc/soc.h" -#include "soc/spi_reg.h" -#include "soc/adc_periph.h" -#include "soc/dac_periph.h" -#include "soc/spi_periph.h" -#include "test/test_common_adc.h" -#include "driver/dac.h" -#include "soc/system_reg.h" -#include "esp32s2/rom/lldesc.h" -#include "test/test_adc_dac_dma.h" -#include "soc/apb_ctrl_reg.h" -#include "math.h" - -static const char *TAG = "test_adc"; - -#define PLATFORM_SELECT (1) //0: pxp; 1: chip -#if (PLATFORM_SELECT == 0) //PXP platform -#include "soc/syscon_reg.h" -#define SET_BREAK_POINT(flag) REG_WRITE(SYSCON_DATE_REG, flag) -//PXP clk is slower. -#define SYS_DELAY_TIME_MOM (1/40) -#define RTC_SLOW_CLK_FLAG 1 // Slow clock is 32KHz. -static void test_pxp_deinit_io(void) -{ - for (int i = 0; i < 22; i++) { - rtc_gpio_init(i); - } -} -#else -//PXP clk is slower. -#define SET_BREAK_POINT(flag) -#define SYS_DELAY_TIME_MOM (1) -#define RTC_SLOW_CLK_FLAG 0 // Slow clock is 32KHz. -#endif - -#define SAR_SIMPLE_NUM 512 // Set out number of enabled unit. - -static const char *TAG = "test_adc"; - -/*******************************************/ -/** DAC-DMA INIT CODE */ -/*******************************************/ -#define PI 3.14159265 -static uint8_t _buf[512]; -void dac_dma_test_create_buffer(dac_digi_convert_mode_t mode) -{ - if (mode == DAC_CONV_ALTER) { - for(int i=0; i < 256; i++) { - if (i % 2 != 0) { - _buf[i] = i % 256; - } else { - _buf[i] = 255*(sin(i * PI / 255) + 1)/2; - } - - } - for (int i=256;i < 512; i++) { - if (i % 2 != 0) { - _buf[i] = 255 - i % 256; - } else { - _buf[i] = 255*(sin((i-256) * PI / 255 - PI)+1)/2; - } - - } - } else { - for(int i=0; i < 256; i++) { - _buf[i] = i % 256; - } - for (int i=256;i < 512; i++) { - _buf[i] = 255 - i % 256; - } - } -} - -/** - * Testcase: Check the interrupt types of DAC-DMA. - */ -void test_dac_dma(dac_digi_convert_mode_t mode) -{ - ESP_LOGI(TAG, " >> %s - dac mode %d<< ", __func__, mode); - - const dac_digi_init_config_t cfg = { - .mode = mode, - .dac_chan_msk = BIT(DAC_CHANNEL_1) | BIT(DAC_CHANNEL_2), - .interval = 100, - .dac_dma_cnt = 4, - .dac_dma_length = 128, - .dac_dma_link_type = DAC_DMA_LINK_RECURSIVE, - }; - dac_digi_initialize(&cfg); - - dac_dma_test_create_buffer(mode); - dac_digi_start(); - uint32_t length = sizeof(_buf); - dac_digi_write_bytes(length, (uint8_t*)_buf, portMAX_DELAY); - // /* Check interrupt type */ - - ESP_LOGI(TAG, "DAC-DMA intr test over"); - dac_digi_stop(); - dac_digi_deinitialize(); -} - -TEST_CASE("DAC with DMA test", "[dac]") -{ - test_dac_dma(DAC_CONV_NORMAL); - test_dac_dma(DAC_CONV_ALTER); -} - -/** ADC-DMA ISR handler. */ -static IRAM_ATTR void dac_dma_isr(void * arg) -{ - uint32_t int_st = REG_READ(SPI_DMA_INT_ST_REG(3)); - int task_awoken = pdFALSE; - dac_dma_event_t adc_evt; - adc_evt.int_msk = int_st; - REG_WRITE(SPI_DMA_INT_CLR_REG(3), int_st); - xQueueSendFromISR(que_dac, &adc_evt, &task_awoken); - ESP_EARLY_LOGV(TAG, "int msk%x, raw%x", int_st, REG_READ(SPI_DMA_INT_RAW_REG(3))); - - if (task_awoken == pdTRUE) { - portYIELD_FROM_ISR(); - } -} - -/** - * Testcase: Check the interrupt types of DAC-DMA. - */ -void test_dac_dig_dma_intr_check_legacy(dac_digi_convert_mode_t mode) -{ - ESP_LOGI(TAG, " >> %s - dac mode %d<< ", __func__, mode); - - dac_dma_event_t evt; - - dac_digi_init(); - const dac_digi_config_t cfg = { - .mode = mode, - .interval = 100, - .dig_clk.use_apll = false, // APB clk - .dig_clk.div_num = 79, - .dig_clk.div_b = 1, - .dig_clk.div_a = 0, - }; - dac_digi_controller_config(&cfg); - dac_output_enable(DAC_CHANNEL_1); - dac_output_enable(DAC_CHANNEL_2); - - /* DAC-DMA linker init */ - if (que_dac == NULL) { - que_dac = xQueueCreate(5, sizeof(dac_dma_event_t)); - } else { - xQueueReset(que_dac); - } - uint32_t int_mask = SPI_OUT_DONE_INT_ENA | SPI_OUT_EOF_INT_ENA | SPI_OUT_TOTAL_EOF_INT_ENA; - uint32_t dma_addr = dac_dma_linker_init(mode, false); - adc_dac_dma_isr_register(dac_dma_isr, NULL, int_mask); - adc_dac_dma_linker_start(DMA_ONLY_DAC_OUTLINK, (void *)dma_addr, int_mask); - - /* ADC-DMA start output */ - dac_digi_start(); - - /* Check interrupt type */ - while (int_mask) { - TEST_ASSERT_EQUAL( xQueueReceive(que_dac, &evt, 2000 / portTICK_PERIOD_MS), pdTRUE ); - ESP_LOGI(TAG, "DAC-DMA intr type 0x%x", evt.int_msk); - if (evt.int_msk & int_mask) { - int_mask &= (~evt.int_msk); - } - } - - ESP_LOGI(TAG, "DAC-DMA intr test over"); - adc_dac_dma_linker_deinit(); - adc_dac_dma_isr_deregister(dac_dma_isr, NULL); - TEST_ESP_OK( dac_digi_deinit() ); -} - -TEST_CASE("DAC-DMA interrupt test(legacy api)", "[dac]") -{ - test_dac_dig_dma_intr_check_legacy(DAC_CONV_NORMAL); - test_dac_dig_dma_intr_check_legacy(DAC_CONV_ALTER); -} - -#endif // DAC_DMA_LEGACY_IMPL - -#endif // CONFIG_IDF_TARGET_ESP32S2 diff --git a/components/driver/test_apps/dac_test_apps/dac/CMakeLists.txt b/components/driver/test_apps/dac_test_apps/dac/CMakeLists.txt new file mode 100644 index 0000000000..465309e6fb --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/CMakeLists.txt @@ -0,0 +1,18 @@ +# This is the project CMakeLists.txt file for the test subproject +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(dac_test) + +if(CONFIG_COMPILER_DUMP_RTL_FILES) + add_custom_target(check_test_app_sections ALL + COMMAND ${PYTHON} $ENV{IDF_PATH}/tools/ci/check_callgraph.py + --rtl-dir ${CMAKE_BINARY_DIR}/esp-idf/driver/ + --elf-file ${CMAKE_BINARY_DIR}/dac_test.elf + find-refs + --from-sections=.iram0.text + --to-sections=.flash.text,.flash.rodata + --exit-code + DEPENDS ${elf} + ) +endif() diff --git a/components/driver/test_apps/dac_test_apps/dac/README.md b/components/driver/test_apps/dac_test_apps/dac/README.md new file mode 100644 index 0000000000..ac8bb22c88 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/README.md @@ -0,0 +1,2 @@ +| Supported Targets | ESP32 | ESP32-S2 | +| ----------------- | ----- | -------- | diff --git a/components/driver/test_apps/dac_test_apps/dac/main/CMakeLists.txt b/components/driver/test_apps/dac_test_apps/dac/main/CMakeLists.txt new file mode 100644 index 0000000000..7c837283f1 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/main/CMakeLists.txt @@ -0,0 +1,11 @@ +set(srcs "test_app_main.c" + "test_dac.c") + +if(CONFIG_DAC_ISR_IRAM_SAFE) + list(APPEND srcs "test_dac_iram.c") +endif() + +# In order for the cases defined by `TEST_CASE` to be linked into the final elf, +# the component can be registered as WHOLE_ARCHIVE +idf_component_register(SRCS ${srcs} + WHOLE_ARCHIVE) diff --git a/components/driver/test_apps/dac_test_apps/dac/main/test_app_main.c b/components/driver/test_apps/dac_test_apps/dac/main/test_app_main.c new file mode 100644 index 0000000000..ef64d8838d --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/main/test_app_main.c @@ -0,0 +1,54 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "unity.h" +#include "unity_test_runner.h" +#include "esp_heap_caps.h" + +// Some resources are lazy allocated in gpio/dedicated_gpio/delta_sigma driver, the threshold is left for that case +#define TEST_MEMORY_LEAK_THRESHOLD (-400) + +static size_t before_free_8bit; +static size_t before_free_32bit; + +static void check_leak(size_t before_free, size_t after_free, const char *type) +{ + ssize_t delta = after_free - before_free; + printf("MALLOC_CAP_%s: Before %u bytes free, After %u bytes free (delta %d)\n", type, before_free, after_free, delta); + TEST_ASSERT_MESSAGE(delta >= TEST_MEMORY_LEAK_THRESHOLD, "memory leak"); +} + +void setUp(void) +{ + before_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT); + before_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT); +} + +void tearDown(void) +{ + size_t after_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT); + size_t after_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT); + check_leak(before_free_8bit, after_free_8bit, "8BIT"); + check_leak(before_free_32bit, after_free_32bit, "32BIT"); +} + +void app_main(void) +{ + + // ____ _ ____ _____ _ + // | _ \ / \ / ___| |_ _|__ ___| |_ + // | | | |/ _ \| | | |/ _ \/ __| __| + // | |_| / ___ \ |___ | | __/\__ \ |_ + // |____/_/ \_\____| |_|\___||___/\__| + + printf(" ____ _ ____ _____ _ \n"); + printf(" | _ \\ / \\ / ___| |_ _|__ ___| |_ \n"); + printf(" | | | |/ _ \\| | | |/ _ \\/ __| __|\n"); + printf(" | |_| / ___ \\ |___ | | __/\\__ \\ |_ \n"); + printf(" |____/_/ \\_\\____| |_|\\___||___/\\__|\n"); + + unity_run_menu(); +} diff --git a/components/driver/test_apps/dac_test_apps/dac/main/test_dac.c b/components/driver/test_apps/dac_test_apps/dac/main/test_dac.c new file mode 100644 index 0000000000..5f16e17335 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/main/test_dac.c @@ -0,0 +1,368 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include "unity.h" +#include "unity_test_utils.h" +#include "driver/dac_driver.h" +#include "driver/adc.h" +#include "esp_err.h" +#if CONFIG_IDF_TARGET_ESP32 +#include "esp_private/i2s_platform.h" +// Following headers are used to test the conversion frequency +#include "soc/i2s_periph.h" +#include "hal/gpio_hal.h" +#include "driver/pulse_cnt.h" +#include "soc/pcnt_periph.h" +#elif CONFIG_IDF_TARGET_ESP32S2 +#include "esp_private/spi_common_internal.h" +#endif + +#if CONFIG_IDF_TARGET_ESP32 +#define ADC_TEST_CHANNEL_NUM ADC2_CHANNEL_8 // GPIO25, same as DAC channel 0 +#define ADC_TEST_WIDTH ADC_WIDTH_BIT_12 +#elif CONFIG_IDF_TARGET_ESP32S2 +#define ADC_TEST_CHANNEL_NUM ADC2_CHANNEL_6 // GPIO17, same as DAC channel 0 +#define ADC_TEST_WIDTH ADC_WIDTH_BIT_13 +#endif + +#define ADC_TEST_ATTEN ADC_ATTEN_DB_11 + +TEST_CASE("DAC_API_basic_logic_test", "[dac]") +{ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_conti_config_t dma_cfg = { + .freq_hz = 20000, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + }; + dac_cosine_config_t cos_cfg = { + .freq_hz = 1000, + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_0, + .scale = DAC_COSINE_NO_ATTEN, + }; + /* Constant API test */ + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_set_voltage(handle, 100)); + TEST_ESP_OK(dac_channels_disable(handle)); + + /* DMA API test */ + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ASSERT(dac_channels_enable_continuous_mode(handle) == ESP_ERR_INVALID_STATE); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + TEST_ASSERT(dac_channels_disable(handle) == ESP_ERR_INVALID_STATE); + TEST_ASSERT(dac_channels_deinit_continuous_mode(handle) == ESP_ERR_INVALID_STATE); + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + + /* Cosine wave API test */ + TEST_ESP_OK(dac_channels_init_cosine_mode(handle, &cos_cfg)); + TEST_ASSERT(dac_del_channels(handle) == ESP_ERR_INVALID_STATE); + TEST_ESP_OK(dac_channels_start_cosine_output(handle)); + TEST_ASSERT(dac_channels_disable(handle) == ESP_ERR_INVALID_STATE); + TEST_ESP_OK(dac_channels_stop_cosine_output(handle)); + TEST_ESP_OK(dac_channels_deinit_cosine_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); + + /* DMA peripheral availability test */ + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); +#if CONFIG_IDF_TARGET_ESP32 + TEST_ESP_OK(i2s_platform_acquire_occupation(0, "dac_test")); +#elif CONFIG_IDF_TARGET_ESP32S2 + TEST_ASSERT(spicommon_periph_claim(SPI3_HOST, "dac_test")); +#endif + TEST_ASSERT(dac_channels_init_continuous_mode(handle, &dma_cfg) == ESP_ERR_NOT_FOUND); +#if CONFIG_IDF_TARGET_ESP32 + TEST_ESP_OK(i2s_platform_release_occupation(0)); +#elif CONFIG_IDF_TARGET_ESP32S2 + TEST_ASSERT(spicommon_periph_free(SPI3_HOST)); +#endif + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); +} + +TEST_CASE("DAC_memory_leak_test", "[dac]") +{ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_conti_config_t dma_cfg = { + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .freq_hz = 20000, + }; + /* Some resources will be lazy installed, ignore the first around */ + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); + + int initial_size = esp_get_free_heap_size(); + printf("Initial free heap size: %d\n", initial_size); + for (int i = 0; i < 20; i++) { + printf("# %d: ---------------------------------\n", i + 1); + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); + printf("current heap size: %d\n", esp_get_free_heap_size()); + TEST_ASSERT(initial_size == esp_get_free_heap_size()); + } + vTaskDelay(100 / portTICK_PERIOD_MS); + TEST_ASSERT(initial_size == esp_get_free_heap_size()); +} + +TEST_CASE("DAC_set_voltage_test", "[dac]") +{ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + + /* Prepare ADC2 */ + TEST_ESP_OK(adc2_config_channel_atten(ADC_TEST_CHANNEL_NUM, ADC_TEST_ATTEN)); + + int curr_adc = 0; + int last_adc = 0; + for (uint8_t i = 0; i <= 200; i += 20) { + TEST_ESP_OK(dac_channels_set_voltage(handle, i)); + vTaskDelay(pdMS_TO_TICKS(20)); + TEST_ESP_OK(adc2_get_raw(ADC_TEST_CHANNEL_NUM, ADC_TEST_WIDTH, &curr_adc)); + printf("DAC: %d - ADC: %d\n", i, curr_adc); + if (last_adc != 0) { + TEST_ASSERT_GREATER_THAN(last_adc, curr_adc); + } + last_adc = curr_adc; + } + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); +} + +TEST_CASE("DAC_dma_write_test", "[dac]") +{ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_conti_config_t dma_cfg = { + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .freq_hz = 20000, + }; + uint8_t *data = (uint8_t *)calloc(1, 2000); + TEST_ASSERT(data); + for (int i = 0; i < 2000; i++) { + data[i] = i % 256; + } + + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + + TEST_ESP_OK(dac_channels_write_continuously(handle, data, 2000, NULL, 1000)); + vTaskDelay(pdMS_TO_TICKS(200)); + TEST_ESP_OK(dac_channels_write_cyclically(handle, data, 2000, NULL, 1000)); + + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); + free(data); +} + +/* Test the conversion frequency by counting the pulse of WS signal + * The frequency test is currently only supported on ESP32 + * because there is no such signal to monitor on ESP32-S2 */ +#if CONFIG_IDF_TARGET_ESP32 +TEST_CASE("DAC_dma_conver_frequency_test", "[dac]") +{ + /* Prepare configuration for the PCNT unit */ + pcnt_unit_handle_t pcnt_unit = NULL; + pcnt_channel_handle_t pcnt_chan = NULL; + + pcnt_unit_config_t unit_config = { + .high_limit = (int16_t)0x7fff, + .low_limit = (int16_t)0x8000, + }; + pcnt_chan_config_t chan_config = { + .edge_gpio_num = GPIO_NUM_4, + .level_gpio_num = -1, + }; + TEST_ESP_OK(pcnt_new_unit(&unit_config, &pcnt_unit)); + TEST_ESP_OK(pcnt_unit_set_glitch_filter(pcnt_unit, NULL)); + TEST_ESP_OK(pcnt_new_channel(pcnt_unit, &chan_config, &pcnt_chan)); + TEST_ESP_OK(pcnt_channel_set_edge_action(pcnt_chan, PCNT_CHANNEL_EDGE_ACTION_INCREASE, PCNT_CHANNEL_EDGE_ACTION_HOLD)); + TEST_ESP_OK(pcnt_channel_set_level_action(pcnt_chan, PCNT_CHANNEL_LEVEL_ACTION_KEEP, PCNT_CHANNEL_LEVEL_ACTION_KEEP)); + TEST_ESP_OK(pcnt_unit_enable(pcnt_unit)); + + // Connect the clock signal to pcnt input signal + gpio_hal_iomux_func_sel(GPIO_PIN_MUX_REG[GPIO_NUM_4], PIN_FUNC_GPIO); + gpio_set_direction(GPIO_NUM_4, GPIO_MODE_INPUT_OUTPUT); + // The DAC conversion frequency is equal to I2S bclk. + esp_rom_gpio_connect_out_signal(GPIO_NUM_4, i2s_periph_signal[0].m_tx_ws_sig, 0, 0); + esp_rom_gpio_connect_in_signal(GPIO_NUM_4, pcnt_periph_signals.groups[0].units[0].channels[0].pulse_sig, 0); + + uint8_t *data = (uint8_t *)calloc(1, 2000); + TEST_ASSERT(data); + + /* Register DAC DMA using PLL */ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_conti_config_t dma_cfg = { + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .freq_hz = 20000, + }; + + /* Initialize DAC to test default PLL clock */ + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + /* Start transmitting data on line */ + TEST_ESP_OK(dac_channels_write_cyclically(handle, data, 2000, NULL, 1000)); + + int expt_pulse = 2000; + int real_pulse; + /* Count pulse by PCNT */ + TEST_ESP_OK(pcnt_unit_clear_count(pcnt_unit)); + TEST_ESP_OK(pcnt_unit_start(pcnt_unit)); + vTaskDelay(pdMS_TO_TICKS(100)); + TEST_ESP_OK(pcnt_unit_stop(pcnt_unit)); + TEST_ESP_OK(pcnt_unit_get_count(pcnt_unit, &real_pulse)); + /* Delete DAC handle */ + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); + + printf("[PLL | 20000 Hz] %d pulses, expected %d, err %d\n", real_pulse, expt_pulse, real_pulse - expt_pulse); + TEST_ASSERT_INT_WITHIN(expt_pulse * 0.01, expt_pulse, real_pulse); + + dma_cfg.clk_src = DAC_DIGI_CLK_SRC_APLL; + /* Initialize DAC to test APLL clock */ + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + /* Start transmitting data on line */ + TEST_ESP_OK(dac_channels_write_cyclically(handle, data, 2000, NULL, 1000)); + + /* Count pulse by PCNT */ + TEST_ESP_OK(pcnt_unit_clear_count(pcnt_unit)); + TEST_ESP_OK(pcnt_unit_start(pcnt_unit)); + vTaskDelay(pdMS_TO_TICKS(100)); + TEST_ESP_OK(pcnt_unit_stop(pcnt_unit)); + TEST_ESP_OK(pcnt_unit_get_count(pcnt_unit, &real_pulse)); + /* Delete DAC handle */ + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); + + printf("[APLL | 20000 Hz] %d pulses, expected %d, err %d\n", real_pulse, expt_pulse, real_pulse - expt_pulse); + TEST_ASSERT_INT_WITHIN(expt_pulse * 0.01, expt_pulse, real_pulse); + free(data); + /* Free PCNT */ + TEST_ESP_OK(pcnt_del_channel(pcnt_chan)); + TEST_ESP_OK(pcnt_unit_stop(pcnt_unit)); + TEST_ESP_OK(pcnt_unit_disable(pcnt_unit)); + TEST_ESP_OK(pcnt_del_unit(pcnt_unit)); +} +#endif + +TEST_CASE("DAC_cosine_wave_test", "[dac]") +{ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_cosine_config_t cos_cfg = { + .freq_hz = 1000, + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_0, + .scale = DAC_COSINE_NO_ATTEN, + }; + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_init_cosine_mode(handle, &cos_cfg)); + TEST_ESP_OK(dac_channels_start_cosine_output(handle)); + + vTaskDelay(pdMS_TO_TICKS(200)); + + TEST_ESP_OK(dac_channels_stop_cosine_output(handle)); + TEST_ESP_OK(dac_channels_deinit_cosine_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); +} + +static volatile bool task_run_flag; + +static void dac_acyclicly_write_task(void *arg) +{ + dac_channels_handle_t dac_handle = (dac_channels_handle_t)arg; + uint8_t buf[1000]; + for (int i = 0; i < 1000; i++) { + buf[i] = i % 256; + } + while (task_run_flag) { + if (dac_channels_write_continuously(dac_handle, buf, 100, NULL, 1000) == ESP_OK) { + printf("DAC write data success\n"); + } + vTaskDelay(20); + } + vTaskDelete(NULL); +} + +TEST_CASE("DAC_DMA_thread_safe", "[dac]") +{ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_CH0}; + dac_conti_config_t dma_cfg = { + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .freq_hz = 20000, + }; + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + task_run_flag = true; + xTaskCreate(dac_acyclicly_write_task, "dac_acyclicly_write_task", 4096, handle, 5, NULL); + + for (int i = 0; i < 5; i++) { + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + printf("DAC stopped\n"); + vTaskDelay(pdMS_TO_TICKS(100)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + printf("DAC started\n"); + vTaskDelay(pdMS_TO_TICKS(300)); + } + task_run_flag = false; + vTaskDelay(pdMS_TO_TICKS(100)); + + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); +} diff --git a/components/driver/test_apps/dac_test_apps/dac/main/test_dac_iram.c b/components/driver/test_apps/dac_test_apps/dac/main/test_dac_iram.c new file mode 100644 index 0000000000..98f571a1e3 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/main/test_dac_iram.c @@ -0,0 +1,70 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include "unity.h" +#include "unity_test_utils.h" +#include "driver/dac_driver.h" +#include "esp_private/spi_flash_os.h" +#include "esp_heap_caps.h" +#include "esp_err.h" + +#define BUF_SIZE 2000 + +static void IRAM_ATTR test_dac_direct_set_safety(dac_channels_handle_t handle) +{ + spi_flash_guard_get()->start(); + dac_channels_set_voltage(handle, 128); + spi_flash_guard_get()->end(); +} + +static void IRAM_ATTR test_dac_dma_iram_safety(dac_channels_handle_t handle, uint8_t *data, uint32_t len) +{ + spi_flash_guard_get()->start(); + // Change the data of DMA + for (int i = 0; i < len; i++) { + data[i] = i % 100; + } + spi_flash_guard_get()->end(); +} + +TEST_CASE("DAC_IRAM_safe_test", "[dac]") +{ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_conti_config_t dma_cfg = { + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .freq_hz = 40000, + }; + + /* Real data in internal memory */ + uint8_t *data = (uint8_t *)heap_caps_calloc(1, BUF_SIZE, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT); + TEST_ASSERT(data); + for (int i = 0; i < BUF_SIZE; i++) { + data[i] = i % 256; + } + /* Get ready for dma transmition */ + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + /* Test direct voltage setting safety */ + test_dac_direct_set_safety(handle); + + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + + /* Simulate cache off */ + dac_channels_write_cyclically(handle, data, BUF_SIZE, NULL, 1000); + test_dac_dma_iram_safety(handle, data, BUF_SIZE); + + /* Deregister DAC DMA channel group */ + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); + free(data); +} diff --git a/components/driver/test_apps/dac_test_apps/dac/pytest_dac.py b/components/driver/test_apps/dac_test_apps/dac/pytest_dac.py new file mode 100644 index 0000000000..f5d0c85fb2 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/pytest_dac.py @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import pytest +from pytest_embedded import Dut + + +@pytest.mark.esp32 +@pytest.mark.esp32s2 +@pytest.mark.generic +@pytest.mark.parametrize( + 'config', + [ + 'iram_safe', + 'release', + ], + indirect=True, +) +def test_dac(dut: Dut) -> None: + dut.expect_exact('Press ENTER to see the list of tests') + dut.write('*') + dut.expect_unity_test_output() diff --git a/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.iram_safe b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.iram_safe new file mode 100644 index 0000000000..2315dc6938 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.iram_safe @@ -0,0 +1,5 @@ +CONFIG_COMPILER_DUMP_RTL_FILES=y +CONFIG_DAC_ISR_IRAM_SAFE=y +CONFIG_DAC_CTRL_FUNC_IN_IRAM=y +# silent the error check, as the error string are stored in rodata, causing RTL check failure +CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y diff --git a/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.release b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.release new file mode 100644 index 0000000000..91d93f163e --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.release @@ -0,0 +1,5 @@ +CONFIG_PM_ENABLE=y +CONFIG_FREERTOS_USE_TICKLESS_IDLE=y +CONFIG_COMPILER_OPTIMIZATION_SIZE=y +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT=y diff --git a/components/driver/test_apps/dac_test_apps/dac/sdkconfig.defaults b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.defaults new file mode 100644 index 0000000000..a7d8d84efc --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.defaults @@ -0,0 +1,4 @@ +CONFIG_FREERTOS_HZ=1000 +CONFIG_ESP_TASK_WDT=n +# Disable this config, otherwise DAC will be disabled when ADC initialized +CONFIG_ADC_DISABLE_DAC=n diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/CMakeLists.txt b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/CMakeLists.txt new file mode 100644 index 0000000000..2c3ca20b22 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/CMakeLists.txt @@ -0,0 +1,18 @@ +# This is the project CMakeLists.txt file for the test subproject +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(dac_legacy_test) + +if(CONFIG_COMPILER_DUMP_RTL_FILES) + add_custom_target(check_test_app_sections ALL + COMMAND ${PYTHON} $ENV{IDF_PATH}/tools/ci/check_callgraph.py + --rtl-dir ${CMAKE_BINARY_DIR}/esp-idf/driver/ + --elf-file ${CMAKE_BINARY_DIR}/dac_legacy_test.elf + find-refs + --from-sections=.iram0.text + --to-sections=.flash.text,.flash.rodata + --exit-code + DEPENDS ${elf} + ) +endif() diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/README.md b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/README.md new file mode 100644 index 0000000000..ac8bb22c88 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/README.md @@ -0,0 +1,2 @@ +| Supported Targets | ESP32 | ESP32-S2 | +| ----------------- | ----- | -------- | diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/CMakeLists.txt b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/CMakeLists.txt new file mode 100644 index 0000000000..c34334492f --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/CMakeLists.txt @@ -0,0 +1,7 @@ +set(srcs "test_app_main.c" + "test_legacy_dac.c") + +# In order for the cases defined by `TEST_CASE` to be linked into the final elf, +# the component can be registered as WHOLE_ARCHIVE +idf_component_register(SRCS ${srcs} + WHOLE_ARCHIVE) diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_app_main.c b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_app_main.c new file mode 100644 index 0000000000..3e67a65774 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_app_main.c @@ -0,0 +1,53 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "unity.h" +#include "unity_test_runner.h" +#include "esp_heap_caps.h" + +// Some resources are lazy allocated in dac driver, the threshold is left for that case +#define TEST_MEMORY_LEAK_THRESHOLD (-300) + +static size_t before_free_8bit; +static size_t before_free_32bit; + +static void check_leak(size_t before_free, size_t after_free, const char *type) +{ + ssize_t delta = after_free - before_free; + printf("MALLOC_CAP_%s: Before %u bytes free, After %u bytes free (delta %d)\n", type, before_free, after_free, delta); + TEST_ASSERT_MESSAGE(delta >= TEST_MEMORY_LEAK_THRESHOLD, "memory leak"); +} + +void setUp(void) +{ + before_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT); + before_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT); +} + +void tearDown(void) +{ + size_t after_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT); + size_t after_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT); + check_leak(before_free_8bit, after_free_8bit, "8BIT"); + check_leak(before_free_32bit, after_free_32bit, "32BIT"); +} + +void app_main(void) +{ + // ____ _ ____ _____ _ + // | _ \ / \ / ___| |_ _|__ ___| |_ + // | | | |/ _ \| | | |/ _ \/ __| __| + // | |_| / ___ \ |___ | | __/\__ \ |_ + // |____/_/ \_\____| |_|\___||___/\__| + + printf(" ____ _ ____ _____ _ \n"); + printf(" | _ \\ / \\ / ___| |_ _|__ ___| |_ \n"); + printf(" | | | |/ _ \\| | | |/ _ \\/ __| __|\n"); + printf(" | |_| / ___ \\ |___ | | __/\\__ \\ |_ \n"); + printf(" |____/_/ \\_\\____| |_|\\___||___/\\__| (legacy)\n"); + + unity_run_menu(); +} diff --git a/components/driver/test/test_dac.c b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_legacy_dac.c similarity index 91% rename from components/driver/test/test_dac.c rename to components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_legacy_dac.c index 9377039a74..30a22164d2 100644 --- a/components/driver/test/test_dac.c +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_legacy_dac.c @@ -9,17 +9,16 @@ #include "esp_system.h" #include "unity.h" +#include "unity_test_utils.h" #include "esp_system.h" #include "esp_event.h" #include "esp_wifi.h" #include "esp_log.h" #include "nvs_flash.h" -#include "test_utils.h" #include "soc/soc_caps.h" #define CONFIG_ADC_SUPPRESS_DEPRECATE_WARN 1 #include "driver/adc.h" -#if SOC_DAC_SUPPORTED #include "driver/dac.h" #include "esp_adc_cal.h" @@ -34,10 +33,10 @@ static const char *TAG = "test_dac"; #if CONFIG_IDF_TARGET_ESP32 #define ADC_TEST_CHANNEL_NUM ADC2_CHANNEL_8 // GPIO25 -#define DAC_TEST_CHANNEL_NUM DAC_CHANNEL_1 // GPIO25 +#define DAC_TEST_CHANNEL_NUM DAC_CHAN_0 // GPIO25 #elif CONFIG_IDF_TARGET_ESP32S2 #define ADC_TEST_CHANNEL_NUM ADC2_CHANNEL_6 // GPIO17 -#define DAC_TEST_CHANNEL_NUM DAC_CHANNEL_1 // GPIO17 +#define DAC_TEST_CHANNEL_NUM DAC_CHAN_0 // GPIO17 #endif #define DAC_OUT_MAX (200) @@ -46,7 +45,7 @@ static const char *TAG = "test_dac"; #define DAC_TEST_TIMES (100) -TEST_CASE("DAC output (RTC) check by adc", "[dac]") +TEST_CASE("DAC_output(RTC)_check_by_adc", "[dac_legacy]") { gpio_num_t adc_gpio_num, dac_gpio_num; @@ -72,7 +71,7 @@ TEST_CASE("DAC output (RTC) check by adc", "[dac]") output_data += DAC_OUT_STEP; vTaskDelay(2 * portTICK_PERIOD_MS); TEST_ESP_OK( adc2_get_raw( ADC_TEST_CHANNEL_NUM, ADC_TEST_WIDTH, &read_raw) ); - ESP_LOGI(TAG, "DAC%d - ADC%d", output_data, read_raw); + ESP_LOGI(TAG, "DAC: %d - ADC: %d", output_data, read_raw); if (read_old != 0) { TEST_ASSERT_GREATER_THAN(read_old, read_raw); } @@ -81,7 +80,7 @@ TEST_CASE("DAC output (RTC) check by adc", "[dac]") TEST_ESP_OK( dac_output_disable( DAC_TEST_CHANNEL_NUM ) ); } -TEST_CASE("DAC cw generator output (RTC) check by adc", "[dac]") +TEST_CASE("DAC_cw_generator_output(RTC)_check_by_adc", "[dac_legacy]") { gpio_num_t adc_gpio_num, dac_gpio_num; @@ -118,10 +117,6 @@ TEST_CASE("DAC cw generator output (RTC) check by adc", "[dac]") vTaskDelay(10 * portTICK_PERIOD_MS); TEST_ESP_OK( adc2_get_raw( ADC_TEST_CHANNEL_NUM, ADC_TEST_WIDTH, &read_raw[0]) ); ESP_LOGI(TAG, "ADC: %d", read_raw[0]); - /* Should open after dac cali. */ - // if (read_raw[0] == read_raw[1]) { - // TEST_ASSERT_NOT_EQUAL(read_raw[1], read_raw[2]); - // } read_raw[2] = read_raw[1]; read_raw[1] = read_raw[0]; } @@ -146,7 +141,7 @@ static bool subtest_adc_dac(int mV_ref, esp_adc_cal_characteristics_t * chars) return true; } -TEST_CASE("esp32s2 adc2-dac with adc2 calibration", "[adc-dac]") +TEST_CASE("esp32s2_adc2-dac_with_adc2_calibration", "[dac_legacy]") { gpio_num_t adc_gpio_num, dac_gpio_num; if (esp_adc_cal_check_efuse(ESP_ADC_CAL_VAL_EFUSE_TP) != ESP_OK) { @@ -187,5 +182,3 @@ TEST_CASE("esp32s2 adc2-dac with adc2 calibration", "[adc-dac]") subtest_adc_dac(2500, &chars); } #endif - -#endif // SOC_DAC_SUPPORTED diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/pytest_legacy_dac.py b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/pytest_legacy_dac.py new file mode 100644 index 0000000000..bde3e8d188 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/pytest_legacy_dac.py @@ -0,0 +1,21 @@ +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import pytest +from pytest_embedded import Dut + + +@pytest.mark.esp32 +@pytest.mark.esp32s2 +@pytest.mark.generic +@pytest.mark.parametrize( + 'config', + [ + 'release', + ], + indirect=True, +) +def test_legacy_dac(dut: Dut) -> None: + dut.expect_exact('Press ENTER to see the list of tests') + dut.write('*') + dut.expect_unity_test_output() diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.ci.release b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.ci.release new file mode 100644 index 0000000000..91d93f163e --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.ci.release @@ -0,0 +1,5 @@ +CONFIG_PM_ENABLE=y +CONFIG_FREERTOS_USE_TICKLESS_IDLE=y +CONFIG_COMPILER_OPTIMIZATION_SIZE=y +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT=y diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.defaults b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.defaults new file mode 100644 index 0000000000..3a223bbed4 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.defaults @@ -0,0 +1,4 @@ +CONFIG_FREERTOS_HZ=1000 +CONFIG_ESP_TASK_WDT=n +CONFIG_ADC_DISABLE_DAC=n +CONFIG_DAC_SUPPRESS_DEPRECATE_WARN=y diff --git a/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/main/test_i2s_adc.c b/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/main/test_i2s_adc.c index b290bbe395..df6716c049 100644 --- a/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/main/test_i2s_adc.c +++ b/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/main/test_i2s_adc.c @@ -14,6 +14,7 @@ #include "driver/adc.h" #include "driver/rtc_io.h" #include "driver/gpio.h" +#include "soc/adc_periph.h" #include "unity.h" #include "esp_system.h" #include "esp_event.h" @@ -21,8 +22,6 @@ #include "esp_log.h" #include "nvs_flash.h" #include "esp_rom_sys.h" -#include "driver/dac.h" -#include "soc/adc_periph.h" /* * ADC DMA testcase diff --git a/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/sdkconfig.defaults b/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/sdkconfig.defaults index 4295a349c9..ecbde05dc2 100644 --- a/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/sdkconfig.defaults +++ b/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/sdkconfig.defaults @@ -1,4 +1,5 @@ CONFIG_I2S_SUPPRESS_DEPRECATE_WARN=y CONFIG_ADC_SUPPRESS_DEPRECATE_WARN=y +CONFIG_DAC_SUPPRESS_DEPRECATE_WARN=y CONFIG_I2S_ENABLE_DEBUG_LOG=y CONFIG_ESP_TASK_WDT=n diff --git a/components/hal/CMakeLists.txt b/components/hal/CMakeLists.txt index 8a9ffa9685..927ebb03d9 100644 --- a/components/hal/CMakeLists.txt +++ b/components/hal/CMakeLists.txt @@ -103,7 +103,6 @@ if(NOT BOOTLOADER_BUILD) if(${target} STREQUAL "esp32") list(APPEND srcs - "dac_hal.c" "sdio_slave_hal.c" "touch_sensor_hal.c" "aes_hal.c" @@ -114,7 +113,6 @@ if(NOT BOOTLOADER_BUILD) if(${target} STREQUAL "esp32s2") list(APPEND srcs - "dac_hal.c" "spi_flash_hal_gpspi.c" "spi_slave_hd_hal.c" "touch_sensor_hal.c" diff --git a/components/hal/adc_oneshot_hal.c b/components/hal/adc_oneshot_hal.c index b7664aa0c9..ada59ecb2d 100644 --- a/components/hal/adc_oneshot_hal.c +++ b/components/hal/adc_oneshot_hal.c @@ -158,19 +158,19 @@ static void s_disable_dac(adc_oneshot_hal_ctx_t *hal, adc_channel_t channel) #if CONFIG_IDF_TARGET_ESP32 if (hal->unit == ADC_UNIT_2) { if (channel == ADC_CHANNEL_8) { - dac_ll_power_down(DAC_CHANNEL_1); // the same as DAC channel 1 + dac_ll_power_down(DAC_CHAN_0); // the same as DAC channel 1 } if (channel == ADC_CHANNEL_9) { - dac_ll_power_down(DAC_CHANNEL_2); + dac_ll_power_down(DAC_CHAN_1); } } #elif CONFIG_IDF_TARGET_ESP32S2 if (hal->unit == ADC_UNIT_2) { if (channel == ADC_CHANNEL_6) { - dac_ll_power_down(DAC_CHANNEL_1); // the same as DAC channel 1 + dac_ll_power_down(DAC_CHAN_0); // the same as DAC channel 1 } if (channel == ADC_CHANNEL_7) { - dac_ll_power_down(DAC_CHANNEL_2); + dac_ll_power_down(DAC_CHAN_1); } } #else diff --git a/components/hal/dac_hal.c b/components/hal/dac_hal.c deleted file mode 100644 index 765d1fcc8f..0000000000 --- a/components/hal/dac_hal.c +++ /dev/null @@ -1,16 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -// #include "hal/dac_hal.h" - -// void dac_hal_cw_generator_config(dac_cw_config_t *cw) -// { -// dac_ll_cw_set_freq(cw->freq); -// dac_ll_cw_set_scale(cw->en_ch, cw->scale); -// dac_ll_cw_set_phase(cw->en_ch, cw->phase); -// dac_ll_cw_set_dc_offset(cw->en_ch, cw->offset); -// dac_ll_cw_set_channel(cw->en_ch, true); -// } diff --git a/components/hal/esp32/include/hal/dac_ll.h b/components/hal/esp32/include/hal/dac_ll.h index 2c15ede3bd..66207471e6 100644 --- a/components/hal/esp32/include/hal/dac_ll.h +++ b/components/hal/esp32/include/hal/dac_ll.h @@ -23,6 +23,9 @@ extern "C" { #endif +#define DAC_LL_CW_PHASE_0 0x02 +#define DAC_LL_CW_PHASE_180 0x03 + /** * Power on dac module and start output voltage. * @@ -55,10 +58,10 @@ static inline void dac_ll_power_down(dac_channel_t channel) */ static inline void dac_ll_update_output_value(dac_channel_t channel, uint8_t value) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_cw_en1 = 0; HAL_FORCE_MODIFY_U32_REG_FIELD(RTCIO.pad_dac[channel], dac, value); - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_cw_en2 = 0; HAL_FORCE_MODIFY_U32_REG_FIELD(RTCIO.pad_dac[channel], dac, value); } @@ -103,9 +106,9 @@ static inline void dac_ll_cw_generator_disable(void) */ static inline void dac_ll_cw_set_channel(dac_channel_t channel, bool enable) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_cw_en1 = enable; - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_cw_en2 = enable; } } @@ -114,11 +117,12 @@ static inline void dac_ll_cw_set_channel(dac_channel_t channel, bool enable) * Set frequency of cosine wave generator output. * * @note We know that CLK8M is about 8M, but don't know the actual value. so this freq have limited error. - * @param freq_hz CW generator frequency. Range: 130(130Hz) ~ 55000(100KHz). + * @param freq_hz CW generator frequency. Range: 130(130Hz) + * @param rtc8m_freq the calibrated RTC 8M clock frequency */ -static inline void dac_ll_cw_set_freq(uint32_t freq) +static inline void dac_ll_cw_set_freq(uint32_t freq, uint32_t rtc8m_freq) { - uint32_t sw_freq = freq * 0xFFFF / SOC_CLK_RC_FAST_FREQ_APPROX; + uint32_t sw_freq = (uint32_t)(((float)freq / (float)rtc8m_freq) * 65536); HAL_FORCE_MODIFY_U32_REG_FIELD(SENS.sar_dac_ctrl1, sw_fstep, (sw_freq > 0xFFFF) ? 0xFFFF : sw_freq); } @@ -130,9 +134,9 @@ static inline void dac_ll_cw_set_freq(uint32_t freq) */ static inline void dac_ll_cw_set_scale(dac_channel_t channel, uint32_t scale) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_scale1 = scale; - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_scale2 = scale; } } @@ -141,13 +145,13 @@ static inline void dac_ll_cw_set_scale(dac_channel_t channel, uint32_t scale) * Set the phase of the cosine wave generator output. * * @param channel DAC channel num. - * @param scale Phase value. + * @param phase Phase value. 0: 0x02 180: 0x03. */ static inline void dac_ll_cw_set_phase(dac_channel_t channel, uint32_t phase) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_inv1 = phase; - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_inv2 = phase; } } @@ -162,14 +166,14 @@ static inline void dac_ll_cw_set_phase(dac_channel_t channel, uint32_t phase) */ static inline void dac_ll_cw_set_dc_offset(dac_channel_t channel, int8_t offset) { - if (channel == DAC_CHANNEL_1) { - if (SENS.sar_dac_ctrl2.dac_inv1 == DAC_CW_PHASE_180) { - offset = 0 - offset; + if (channel == DAC_CHAN_0) { + if (SENS.sar_dac_ctrl2.dac_inv1 == DAC_LL_CW_PHASE_180) { + offset = -offset; } HAL_FORCE_MODIFY_U32_REG_FIELD(SENS.sar_dac_ctrl2, dac_dc1, offset); - } else if (channel == DAC_CHANNEL_2) { - if (SENS.sar_dac_ctrl2.dac_inv2 == DAC_CW_PHASE_180) { - offset = 0 - offset; + } else if (channel == DAC_CHAN_1) { + if (SENS.sar_dac_ctrl2.dac_inv2 == DAC_LL_CW_PHASE_180) { + offset = -offset; } HAL_FORCE_MODIFY_U32_REG_FIELD(SENS.sar_dac_ctrl2, dac_dc2, offset); } diff --git a/components/hal/esp32/include/hal/i2s_ll.h b/components/hal/esp32/include/hal/i2s_ll.h index 70e9a79442..e4b5e34d43 100644 --- a/components/hal/esp32/include/hal/i2s_ll.h +++ b/components/hal/esp32/include/hal/i2s_ll.h @@ -39,6 +39,7 @@ extern "C" { #define I2S_LL_EVENT_TX_EOF BIT(12) #define I2S_LL_EVENT_RX_DSCR_ERR BIT(13) #define I2S_LL_EVENT_TX_DSCR_ERR BIT(14) +#define I2S_LL_EVENT_TX_TEOF BIT(16) #define I2S_INTR_MAX (UINT32_MAX) #define I2S_LL_TX_EVENT_MASK I2S_LL_EVENT_TX_EOF diff --git a/components/hal/esp32s2/dac_hal.c b/components/hal/esp32s2/dac_hal.c deleted file mode 100644 index 123ade4d53..0000000000 --- a/components/hal/esp32s2/dac_hal.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -// The HAL layer for ADC (esp32s2 specific part) - -#include "hal/dac_hal.h" -#include "hal/adc_ll.h" -#include "hal/dac_types.h" - -/*--------------------------------------------------------------- - Digital controller setting ----------------------------------------------------------------*/ - -#define dac_ll_dma_clear_intr(dev, mask) spi_ll_clear_intr(dev, mask) -#define dac_ll_dma_enable_intr(dev, mask) spi_ll_enable_intr(dev, mask) -#define dac_ll_dma_fifo_reset(dev) spi_ll_dma_tx_fifo_reset(dev) -#define dac_ll_dma_disable_intr(dev, mask) spi_ll_disable_intr(dev, mask) -#define dac_ll_dma_get_intr(dev, mask) spi_ll_get_intr(dev, mask) -#define dac_ll_dma_disable(dev) spi_dma_ll_tx_disable(dev) -#define dac_ll_dma_reset(dev, chan) spi_dma_ll_tx_reset(dev, chan) -#define dac_ll_dma_start(dev, chan, desc) spi_dma_ll_tx_start(dev, chan, desc) - -void dac_dma_hal_clr_intr(dac_hal_context_t *hal) -{ - spi_ll_clear_intr(hal->dev, DAC_DMA_HAL_INTR); -} - -bool dac_dma_hal_get_intr_status(dac_hal_context_t *hal) -{ - return spi_ll_get_intr(hal->dev, DAC_DMA_HAL_INTR); -} - - -void dac_dma_hal_init(dac_hal_context_t *hal) -{ - dac_ll_dma_clear_intr(hal->dev, DAC_DMA_HAL_INTR); - dac_ll_dma_enable_intr(hal->dev, DAC_DMA_HAL_INTR); - -} - -void dac_dma_hal_deinit(dac_hal_context_t *hal) -{ - dac_ll_digi_trigger_output(false); - dac_ll_digi_enable_dma(false); - dac_ll_dma_clear_intr(hal->dev, DAC_DMA_HAL_INTR); - dac_ll_dma_disable(hal->dev); -} - -void dac_dma_hal_trans_start(dac_hal_context_t *hal, lldesc_t *desc) -{ - dac_ll_dma_reset(hal->dev, hal->dma_chan); - dac_ll_dma_fifo_reset(hal->dev); - dac_ll_dma_start(hal->dev, hal->dma_chan, desc); -} - -void dac_hal_digi_controller_configure(const dac_hal_ctrl_config_t *cfg) -{ - dac_ll_digi_clk_inv(true); - dac_ll_digi_set_convert_mode(cfg->mode == DAC_CONV_ALTER); - dac_ll_digi_set_trigger_interval(cfg->interval); - adc_ll_digi_controller_clk_div(cfg->dig_clk.div_num, cfg->dig_clk.div_b, cfg->dig_clk.div_a); - adc_ll_digi_clk_sel(cfg->dig_clk.use_apll); -} - -void dac_hal_digi_start(void) -{ - dac_ll_digi_enable_dma(true); - dac_ll_digi_trigger_output(true); -} - -void dac_hal_digi_stop(void) -{ - dac_ll_digi_trigger_output(false); - dac_ll_digi_enable_dma(false); -} - -void __attribute__((deprecated)) dac_hal_digi_deinit(void) -{ - dac_ll_digi_trigger_output(false); - dac_ll_digi_enable_dma(false); - dac_ll_digi_fifo_reset(); - dac_ll_digi_reset(); -} - -void __attribute__((deprecated)) dac_hal_digi_controller_config(const dac_digi_config_t *cfg) -{ - dac_ll_digi_set_convert_mode(cfg->mode == DAC_CONV_ALTER); - dac_ll_digi_set_trigger_interval(cfg->interval); - adc_ll_digi_controller_clk_div(cfg->dig_clk.div_num, cfg->dig_clk.div_b, cfg->dig_clk.div_a); - adc_ll_digi_controller_clk_enable(cfg->dig_clk.use_apll); -} - -void __attribute__((deprecated)) dac_hal_digi_init(void) -{ - dac_ll_digi_clk_inv(true); -} diff --git a/components/hal/esp32s2/include/hal/dac_hal.h b/components/hal/esp32s2/include/hal/dac_hal.h deleted file mode 100644 index 947b563a12..0000000000 --- a/components/hal/esp32s2/include/hal/dac_hal.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/******************************************************************************* - * NOTICE - * The hal is not public api, don't use in application code. - * See readme.md in hal/include/hal/readme.md - ******************************************************************************/ - -// The HAL layer for DAC (esp32s2 specific part) - -#pragma once - -#include "hal/dac_ll.h" -#include "hal/dac_types.h" -#include "hal/spi_ll.h" -#include "soc/lldesc.h" - -#include_next "hal/dac_hal.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define DAC_DMA_HAL_INTR (SPI_LL_INTR_OUT_TOTAL_EOF) - -typedef struct { - void *dev; - uint32_t dma_chan; -} dac_hal_context_t; - -typedef struct { - dac_digi_convert_mode_t mode; - uint32_t interval; -} dac_hal_ctrl_config_t; - - -/*--------------------------------------------------------------- - Digital controller setting ----------------------------------------------------------------*/ -/** - * Digital controller initialization. - */ -void dac_hal_digi_init(void); - -/** - * Digital controller deinitialization. - */ -void dac_hal_digi_deinit(void); - -/** - * Setting the DAC digital controller. - * - * @param cfg Pointer to digital controller paramter. - */ -void dac_hal_digi_controller_configure(const dac_hal_ctrl_config_t *ctrl_cfg); - -/** - * DAC digital controller start output voltage. - */ -void dac_hal_digi_start(void); - -/** - * DAC digital controller stop output voltage. - */ -void dac_hal_digi_stop(void); - -/** - * Reset DAC digital controller FIFO. - */ -#define dac_hal_digi_fifo_reset() dac_ll_digi_fifo_reset() - -/** - * Reset DAC digital controller. - */ -#define dac_hal_digi_reset() dac_ll_digi_reset() - -/******************************************************* - * DAC-DMA hal layer functions. - * On ESP32-S2, DAC shares the DMA with SPI3. -*******************************************************/ - -/** - * DAC DMA HAL initialization - * - * @param hal Context of the HAL layer - */ -void dac_dma_hal_init(dac_hal_context_t *hal); - -/** - * DAC DMA HAL interrupt clear. - * - * @param hal Context of the HAL layer - */ -void dac_dma_hal_clr_intr(dac_hal_context_t *hal); - -/** - * DAC DMA HAL transaction start. - * - * @param hal Context of the HAL layer - */ -void dac_dma_hal_trans_start(dac_hal_context_t *hal, lldesc_t *desc); - -/** - * Get if interrupt is triggered or not. - * - * @param hal Context of the HAL layer - * - * @return if the intr is triggered. 1: triggered, 0: not triggered. - */ -bool dac_dma_hal_get_intr_status(dac_hal_context_t *hal); - -/** - * DAC DMA HAL deinitialization - * - * @param hal Context of the HAL layer - */ -void dac_dma_hal_deinit(dac_hal_context_t *hal); - -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -void __attribute__((deprecated)) dac_hal_digi_controller_config(const dac_digi_config_t *cfg); - -#ifdef __cplusplus -} -#endif diff --git a/components/hal/esp32s2/include/hal/dac_ll.h b/components/hal/esp32s2/include/hal/dac_ll.h index cf5f9a3cc4..f43a537480 100644 --- a/components/hal/esp32s2/include/hal/dac_ll.h +++ b/components/hal/esp32s2/include/hal/dac_ll.h @@ -25,6 +25,9 @@ extern "C" { #endif +#define DAC_LL_CW_PHASE_0 0x02 +#define DAC_LL_CW_PHASE_180 0x03 + /*--------------------------------------------------------------- DAC common setting ---------------------------------------------------------------*/ @@ -67,10 +70,10 @@ static inline void dac_ll_power_down(dac_channel_t channel) */ static inline void dac_ll_update_output_value(dac_channel_t channel, uint8_t value) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_cw_en1 = 0; HAL_FORCE_MODIFY_U32_REG_FIELD(RTCIO.pad_dac[channel], dac, value); - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_cw_en2 = 0; HAL_FORCE_MODIFY_U32_REG_FIELD(RTCIO.pad_dac[channel], dac, value); } @@ -124,9 +127,9 @@ static inline void dac_ll_cw_generator_disable(void) */ static inline void dac_ll_cw_set_channel(dac_channel_t channel, bool enable) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_cw_en1 = enable; - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_cw_en2 = enable; } } @@ -135,11 +138,12 @@ static inline void dac_ll_cw_set_channel(dac_channel_t channel, bool enable) * Set frequency of cosine wave generator output. * * @note We know that CLK8M is about 8M, but don't know the actual value. so this freq have limited error. - * @param freq_hz CW generator frequency. Range: 130(130Hz) ~ 55000(100KHz). + * @param freq_hz CW generator frequency. Range: >= 130(130Hz) + * @param rtc8m_freq the calibrated RTC 8M clock frequency */ -static inline void dac_ll_cw_set_freq(uint32_t freq) +static inline void dac_ll_cw_set_freq(uint32_t freq, uint32_t rtc8m_freq) { - uint32_t sw_freq = freq * 0xFFFF / SOC_CLK_RC_FAST_FREQ_APPROX; + uint32_t sw_freq = (uint32_t)(((float)freq / (float)rtc8m_freq) * 65536); HAL_FORCE_MODIFY_U32_REG_FIELD(SENS.sar_dac_ctrl1, sw_fstep, (sw_freq > 0xFFFF) ? 0xFFFF : sw_freq); } @@ -151,9 +155,9 @@ static inline void dac_ll_cw_set_freq(uint32_t freq) */ static inline void dac_ll_cw_set_scale(dac_channel_t channel, uint32_t scale) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_scale1 = scale; - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_scale2 = scale; } } @@ -162,13 +166,13 @@ static inline void dac_ll_cw_set_scale(dac_channel_t channel, uint32_t scale) * Set the phase of the cosine wave generator output. * * @param channel DAC channel num. - * @param scale Phase value. + * @param phase Phase value. 0: 0x02 180: 0x03. */ static inline void dac_ll_cw_set_phase(dac_channel_t channel, uint32_t phase) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_inv1 = phase; - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_inv2 = phase; } } @@ -183,14 +187,14 @@ static inline void dac_ll_cw_set_phase(dac_channel_t channel, uint32_t phase) */ static inline void dac_ll_cw_set_dc_offset(dac_channel_t channel, int8_t offset) { - if (channel == DAC_CHANNEL_1) { - if (SENS.sar_dac_ctrl2.dac_inv1 == DAC_CW_PHASE_180) { - offset = 0 - offset; + if (channel == DAC_CHAN_0) { + if (SENS.sar_dac_ctrl2.dac_inv1 == DAC_LL_CW_PHASE_180) { + offset = -offset; } HAL_FORCE_MODIFY_U32_REG_FIELD(SENS.sar_dac_ctrl2, dac_dc1, offset); - } else if (channel == DAC_CHANNEL_2) { - if (SENS.sar_dac_ctrl2.dac_inv2 == DAC_CW_PHASE_180) { - offset = 0 - offset; + } else if (channel == DAC_CHAN_1) { + if (SENS.sar_dac_ctrl2.dac_inv2 == DAC_LL_CW_PHASE_180) { + offset = -offset; } HAL_FORCE_MODIFY_U32_REG_FIELD(SENS.sar_dac_ctrl2, dac_dc2, offset); } diff --git a/components/hal/include/hal/dac_hal.h b/components/hal/include/hal/dac_hal.h deleted file mode 100644 index 40d56a57ba..0000000000 --- a/components/hal/include/hal/dac_hal.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/******************************************************************************* - * NOTICE - * The hal is not public api, don't use in application code. - * See readme.md in hal/include/hal/readme.md - ******************************************************************************/ - -#pragma once - -#include "hal/dac_ll.h" -#include "hal/dac_types.h" - -/** - * Power on dac module and start output voltage. - * - * @note Before powering up, make sure the DAC PAD is set to RTC PAD and floating status. - * @param channel DAC channel num. - */ -#define dac_hal_power_on(channel) dac_ll_power_on(channel) - -/** - * Power done dac module and stop output voltage. - * - * @param channel DAC channel num. - */ -#define dac_hal_power_down(channel) dac_ll_power_down(channel) - -/** - * Enable/disable the synchronization operation function of ADC1 and DAC. - * - * @note If enabled(default), ADC RTC controller sampling will cause the DAC channel output voltage. - * - * @param enable Enable or disable adc and dac synchronization function. - */ -#define dac_hal_rtc_sync_by_adc(enable) dac_ll_rtc_sync_by_adc(enable) - -/** - * Output voltage with value (8 bit). - * - * @param channel DAC channel num. - * @param value Output value. Value range: 0 ~ 255. - * The corresponding range of voltage is 0v ~ VDD3P3_RTC. - */ -#define dac_hal_update_output_value(channel, value) dac_ll_update_output_value(channel, value) - -/** - * Enable cosine wave generator output. - */ -#define dac_hal_cw_generator_enable() dac_ll_cw_generator_enable() - -/** - * Disable cosine wave generator output. - */ -#define dac_hal_cw_generator_disable() dac_ll_cw_generator_disable() - -/** - * Config the cosine wave generator function in DAC module. - * - * @param cw Configuration. - */ -// void dac_hal_cw_generator_config(dac_cw_config_t *cw); - -/** - * Enable/disable DAC output data from DMA. - */ -#define dac_hal_digi_enable_dma(enable) dac_ll_digi_enable_dma(enable) diff --git a/components/hal/include/hal/dac_types.h b/components/hal/include/hal/dac_types.h index 266bdbc453..ff9960c21d 100644 --- a/components/hal/include/hal/dac_types.h +++ b/components/hal/include/hal/dac_types.h @@ -1,54 +1,16 @@ #pragma once -#include "soc/soc_caps.h" -#include "hal/adc_types.h" -#include "sdkconfig.h" +#ifdef __cplusplus +extern "C" { +#endif typedef enum { - DAC_CHANNEL_1 = 0, /*!< DAC channel 1 is GPIO25(ESP32) / GPIO17(ESP32S2) */ - DAC_CHANNEL_2 = 1, /*!< DAC channel 2 is GPIO26(ESP32) / GPIO18(ESP32S2) */ - DAC_CHANNEL_MAX, + DAC_CHAN_0 = 0, /*!< DAC channel 0 is GPIO25(ESP32) / GPIO17(ESP32S2) */ + DAC_CHAN_1 = 1, /*!< DAC channel 1 is GPIO26(ESP32) / GPIO18(ESP32S2) */ + DAC_CHANNEL_1 __attribute__((deprecated("please use 'DAC_CHAN_0' instead"))) = 0, /*!< Alias of 'DAC_CHAN_0', now the channel index start from '0' */ + DAC_CHANNEL_2 __attribute__((deprecated("please use 'DAC_CHAN_1' instead"))) = 1, /*!< Alias of 'DAC_CHAN_1', now the channel index start from '0' */ } dac_channel_t; -/** - * @brief The multiple of the amplitude of the cosine wave generator. The max amplitude is VDD3P3_RTC. - */ -typedef enum { - DAC_CW_SCALE_1 = 0x0, /*!< 1/1. Default. */ - DAC_CW_SCALE_2 = 0x1, /*!< 1/2. */ - DAC_CW_SCALE_4 = 0x2, /*!< 1/4. */ - DAC_CW_SCALE_8 = 0x3, /*!< 1/8. */ -} dac_cw_scale_t; - -/** - * @brief Set the phase of the cosine wave generator output. - */ -typedef enum { - DAC_CW_PHASE_0 = 0x2, /*!< Phase shift +0° */ - DAC_CW_PHASE_180 = 0x3, /*!< Phase shift +180° */ -} dac_cw_phase_t; - -#if CONFIG_IDF_TARGET_ESP32S2 - -/** - * @brief DAC digital controller (DMA mode) work mode. - */ -typedef enum { - DAC_CONV_NORMAL, /*!< The data in the DMA buffer is simultaneously output to the enable channel of the DAC. */ - DAC_CONV_ALTER, /*!< The data in the DMA buffer is alternately output to the enable channel of the DAC. */ -} dac_digi_convert_mode_t; - -/** - * @brief DAC digital controller (DMA mode) configuration parameters. - */ -typedef struct { - dac_digi_convert_mode_t mode; /*! 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 z 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

&)$&PTo@i;RrA9jYFkdHb35P6 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�OZLS@t_s$I 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 z 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 zΠ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 HDWM4fy>Jn% literal 0 HcmV?d00001 diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index 1102885555..9ecc314fd6 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -61,7 +61,6 @@ INPUT = \ $(PROJECT_PATH)/components/bt/host/nimble/esp-hci/include/esp_nimble_hci.h \ $(PROJECT_PATH)/components/bt/include/esp32/include/esp_bt.h \ $(PROJECT_PATH)/components/console/esp_console.h \ - $(PROJECT_PATH)/components/driver/include/driver/dac_common.h \ $(PROJECT_PATH)/components/driver/include/driver/dedic_gpio.h \ $(PROJECT_PATH)/components/driver/include/driver/gpio.h \ $(PROJECT_PATH)/components/driver/include/driver/gptimer.h \ @@ -178,7 +177,6 @@ INPUT = \ $(PROJECT_PATH)/components/freertos/FreeRTOS-Kernel/include/freertos/task.h \ $(PROJECT_PATH)/components/freertos/FreeRTOS-Kernel/include/freertos/timers.h \ $(PROJECT_PATH)/components/hal/include/hal/adc_types.h \ - $(PROJECT_PATH)/components/hal/include/hal/dac_types.h \ $(PROJECT_PATH)/components/hal/include/hal/esp_flash_err.h \ $(PROJECT_PATH)/components/hal/include/hal/gpio_types.h \ $(PROJECT_PATH)/components/hal/include/hal/i2c_types.h \ diff --git a/docs/doxygen/Doxyfile_esp32 b/docs/doxygen/Doxyfile_esp32 index 120918f360..b936c38e58 100644 --- a/docs/doxygen/Doxyfile_esp32 +++ b/docs/doxygen/Doxyfile_esp32 @@ -1,5 +1,4 @@ INPUT += \ - $(PROJECT_PATH)/components/driver/$(IDF_TARGET)/include/driver/dac.h \ $(PROJECT_PATH)/components/driver/$(IDF_TARGET)/include/driver/touch_sensor.h \ $(PROJECT_PATH)/components/esp_psram/include/esp32/himem.h \ $(PROJECT_PATH)/components/soc/$(IDF_TARGET)/include/soc/dac_channel.h \ diff --git a/docs/doxygen/Doxyfile_esp32s2 b/docs/doxygen/Doxyfile_esp32s2 index 79979a5787..5a8d93757e 100644 --- a/docs/doxygen/Doxyfile_esp32s2 +++ b/docs/doxygen/Doxyfile_esp32s2 @@ -1,5 +1,4 @@ INPUT += \ - $(PROJECT_PATH)/components/driver/$(IDF_TARGET)/include/driver/dac.h \ $(PROJECT_PATH)/components/driver/$(IDF_TARGET)/include/driver/touch_sensor.h \ $(PROJECT_PATH)/components/esp_hw_support/include/soc/esp32s2/esp_ds.h \ $(PROJECT_PATH)/components/esp_hw_support/include/soc/esp32s2/esp_hmac.h \ diff --git a/docs/en/api-reference/peripherals/dac.rst b/docs/en/api-reference/peripherals/dac.rst index e194f7405d..cc69b15789 100644 --- a/docs/en/api-reference/peripherals/dac.rst +++ b/docs/en/api-reference/peripherals/dac.rst @@ -7,52 +7,311 @@ Digital To Analog Converter (DAC) Overview -------- -{IDF_TARGET_NAME} has two 8-bit DAC (digital to analog converter) channels, connected to {IDF_TARGET_DAC_CH_1} (Channel 1) and {IDF_TARGET_DAC_CH_2} (Channel 2). +{IDF_TARGET_NAME} has two 8-bit DAC (digital to analog converter) channels, connected to {IDF_TARGET_DAC_CH_1} (Channel 1) and {IDF_TARGET_DAC_CH_2} (Channel 2). Which means each channel of DAC can convert digital value 0~255 to the analog voltage 0~Vref, the output voltage can be calculate by:: + + out_voltage = Vref * digi_val / 255 + +The DAC peripheral supports outputting analog signal in following ways: + +1. Outputting a voltage directly. The DAC channel will keep outputting a specified voltage. +2. Outputting continuous analog signal by DMA. The DAC will convert the data in a buffer at the specified frequency. +3. Outputting a cosine wave by the cosine wave generateor. The DAC channel can output a cosing wave with specified frequency and amplitude. + +For other analog output options, see the :doc:`Sigma-delta Modulation module ` and the :doc:`LED Control module `. Both these modules produce high-frequency PWM/PDM output, which can be hardware low-pass filtered in order to generate a lower frequency analog output. + +DAC File Structure +------------------ + +.. figure:: ../../../_static/diagrams/dac/dac_file_structure.png + :align: center + :alt: DAC file structure +**Public headers that need to be included in the DAC application** -The DAC driver allows these channels to be set to arbitrary voltages. +- ``dac.h``: The header file of legacy DAC driver (for apps using legacy driver) +- ``dac_driver.h``: The header file of new DAC driver (for apps using new DAC driver) + +.. note:: + + The legacy driver can't coexist with the new driver. Including ``dac.h`` to use the legacy driver or ``dac_driver.h`` to use the new driver. The legacy driver might be removed in future. + +Functional Overview +------------------- + +Resources Management +^^^^^^^^^^^^^^^^^^^^ + +The DAC on {IDF_TARGET_NAME} has two channels, which can be managed by the :cpp:type:`dac_channels_handle_t`. One or both two channels can be registered to a group by calling :cpp:func:`dac_new_channels`, it will return a channels handle so that the channels in a same group can be operated at the same time with this handle. While the channels in a group are not used any more, please call :cpp:func:`dac_del_channels` to free the resources and reset the hardware. + +Direct Voltage Output (Direct Mode) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The DAC channels in the group can convert a 8-bit digital value into the analog every time calling :cpp:func:`dac_channels_set_voltage` (it can be called in ISR), and then the analog voltage will keep on corresponding pins until next convert start. But before starting to convert the voltage, the DAC channels and pins should be enabled by calling :cpp:func:`dac_channels_enable`. + +Continuous Wave Output (DMA Mode) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +DAC channels in the group can also convert digital data continuously via the DMA. + +To convert data continuously, the channels need to be initialized into DMA mode by calling :cpp:func:`dac_channels_init_continuous_mode` and then enable DMA conversion by :cpp:func:`dac_channels_enable_continuous_mode`. + +After start up the DMA, there are two methods to transmit the rerial digital data. One method is transmitting only one time by :cpp:func:`dac_channels_write_continuously`, it will be blocked until all data transmitted, and the voltage will be kept according to the last conversion value. Another method is transmitting repeatly by :cpp:func:`dac_channels_write_cyclically`, the data in the buffer will be converted cyclicly without block, but note that the buffer size is limited by the descriptor number, and it has to stay available during the whole conversion period, otherwise invalid data might be transmitted. .. only:: esp32 - The DAC channels can also be driven with DMA-style written sample data by the digital controller, via the :doc:`I2S driver ` when using the "built-in DAC mode". + On ESP32, DAC digital controller can be connected internally to the I2S0 and use its DMA for continuous conversion. Although the DAC only needs 8-bit data for conversion, it has to be left shifted 8 bits (i.e. the high 8 bits in 16-bit slot) to satisfy the I2S communication format. So the data buffer need to be expanded before passing it into the write function. Besides, if the both two channels are enabled, the data will be transmitted with a fixed phase diferrence between these channels. + + The clock of DAC digital controller comes from I2S0 as well, so there are two kinds of clock source can be selected, they are :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` which comes from ``CPU_D2_PLL`` and :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_APLL`. Theoretically, :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` can support frequency between 19.6 KHz to several MHz and :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` can support frequency between 648 Hz to several MHz, however, the latter clock source might be occupied by other peripherals, then it may not provide the required frequency. But it doesn't mean APLL is not available in this case, it can still work as long as it can be divided to the target DAC DMA frequency. .. only:: esp32s2 - The DAC channels can also be driven with DMA-style written sample data by the digital controller, however the driver does not supported this yet. + On ESP32-S2, DAC digital controller can be connected internally to the SPI3 and use its DMA for continuous conversion. + The clock source of DAC difital controller can be choosen to :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` (which comes from ``APB``) or :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_APLL`. Theoretically, :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` can support frequency between 77 Hz to several MHz and :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` can support frequency between 6 Hz to several MHz,however, the latter clock source might be occupied by other peripherals, then it may not provide the required frequency. But it doesn't mean APLL is not available in this case, it can still work as long as it can be divided to the target DAC DMA frequency. + +Cosine Wave Output (Cosine Mode) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The DAC peripheral has a cosine wave generateor on each channel, it can generate cosine wave on these channels, users can specify the frequency, amplitude and phase of the cosine wave. To output the cosine wave, please initialize the DAC to cosine mode by :cpp:func:`dac_channels_init_cosine_mode` first, and then start the cosine wave generator by :cpp:func:`dac_channels_start_cosine_output`. + +Currently, the source clock of the consine wave generator only comes from ``RTC FAST`` which can be choosen by :cpp:enumerator:`dac_cosine_clk_src_t::DAC_COSINE_CLK_SRC_DEFAULT`. + +Finite-State Machine +^^^^^^^^^^^^^^^^^^^^ + +The DAC driver adopts a finite-state machine, the following diagram shows the relationship of the public APIs and the driver internal states. + +.. figure:: ../../../_static/diagrams/dac/dac_state_machine.png + :align: center + :alt: DAC Finite-State Machine + +Power Management +^^^^^^^^^^^^^^^^ + +When the power management is enabled (i.e. :ref:`CONFIG_PM_ENABLE` is on), the system will adjust or stop the source clock of DAC before going into light sleep, thus potentially influence to the DAC signals may lead the data conversion goes wrong. + +DAC driver can prevent the system from changing or stopping the source clock in DMA or cosine wave mode by acquiring a power management lock. When the source clock is generated from APB, the lock type will be set to :cpp:enumerator:`esp_pm_lock_type_t::ESP_PM_APB_FREQ_MAX` and when the source clock is APLL (only in DMA mode), it will be set to :cpp:enumerator:`esp_pm_lock_type_t::ESP_PM_NO_LIGHT_SLEEP`. Whenever the DAC is converting (i.e. DMA or cosing wave generator is working), the driver will guarantee that the power management lock is acquired. Likewise, the driver releases the lock after conversion stopped. + +IRAM Safe +^^^^^^^^^ + +By default, the DAC DMA interrupt will be deferred when the Cache is disabled for reasons like writing/erasing Flash. Thus the DMA EOF interrupt will not get executed in time, which is not expected in a real-time application. + +There's a Kconfig option :ref:`CONFIG_DAC_ISR_IRAM_SAFE` that will: + +1. Enable the interrupt being serviced even when cache is disabled + +2. Place driver object into DRAM (in case it's linked to PSRAM by accident) + +This will allow the interrupt to run while the cache is disabled but will come at the cost of increased IRAM consumption. However, before enable :ref:`CONFIG_DAC_ISR_IRAM_SAFE` please make sure that the data buffer is allocated in the internal RAM by :cpp:func:`heap_caps_calloc` and set the last parameter to ``MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT``. + +Thread Safety +^^^^^^^^^^^^^ + +All the public DAC APIs are guaranteed to be thread safe by the driver, which means, users can call them from different RTOS tasks without protection by extra locks. Notice that DAC driver uses mutex lock to ensure the thread safety, thus these APIs are not allowed to be used in ISR. For other analog output options, see the :doc:`Sigma-delta Modulation module ` and the :doc:`LED Control module `. Both these modules produce high frequency PDM/PWM output, which can be hardware low-pass filtered in order to generate a lower frequency analog output. +Kconfig Options +^^^^^^^^^^^^^^^ + +- :ref:`CONFIG_DAC_ISR_IRAM_SAFE` controls whether the default ISR handler can work when cache is disabled, see `IRAM Safe <#iram-safe>`__ for more information. +- :ref:`CONFIG_DAC_SUPPRESS_DEPRECATE_WARN` controls whether to suppress the compiling warning message while using the legacy DAC driver. +- :ref:`CONFIG_DAC_ENABLE_DEBUG_LOG` is used to enabled the debug log output. Enable this option will increase the firmware binary size. Application Example ------------------- -Setting DAC channel 1 ({IDF_TARGET_DAC_CH_1}) voltage to approx 0.78 of VDD_A voltage (VDD * 200 / 255). For VDD_A 3.3V, this is 2.59V. +The basic examples for the ``Direct Mode``, ``DMA Mode`` and ``Consine Mode`` can be found in :example:`peripherals/dac/dac_basic`, :example:`peripherals/dac/dac_continuous` and :example:`peripherals/dac/dac_cosine_wave`. Here is a general overview of how to use these modes: + +Direct Output Example +^^^^^^^^^^^^^^^^^^^^^ .. code:: c - #include + #include ... - dac_output_enable(DAC_CHANNEL_1); - dac_output_voltage(DAC_CHANNEL_1, 200); + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + + /* Allocate a channels handle for the choosen channels */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); + /* Must enable the channels before any outputting */ + ESP_ERROR_CHECK(dac_channels_enable(handle)); + + /* Output '100', the DAC pin will output about (100 / 255) * 3.3 = 1.29 V */ + ESP_ERROR_CHECK(dac_channels_set_voltage(handle, 100)); + + /* Disable the channels to stop outputting */ + ESP_ERROR_CHECK(dac_channels_disable(handle)); + /* Delete and free the channels */ + ESP_ERROR_CHECK(dac_del_channels(handle)); + + +Continuous Output Example +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. only:: esp32 + + .. code:: c + + #include "driver/dac_driver.h" + #if CONFIG_DAC_ISR_IRAM_SAFE + /* If DAC IRAM safe enabled in Kconfig, include "esp_heap_caps.h" to allocate memory on internal RAM */ + #include "esp_heap_caps.h" + #endif + + ... + + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_conti_config_t dma_cfg = { + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .freq_hz = 20000, + }; + + /* Allocate a channels handle for the choosen channels */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); + /* Must enable the channels before any outputting */ + ESP_ERROR_CHECK(dac_channels_enable(handle)); + /* Initialize the channels to DMA mode */ + ESP_ERROR_CHECK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + /* Must enable DMA before writing data */ + ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(handle)); + + /* Allocate the memory for the buffer to write */ + uint32_t buf_size = 2000; + uint32_t timeout_ms = 1000; + #if CONFIG_DAC_ISR_IRAM_SAFE + /* If DAC IRAM SAFE is enabled, allocate the buffer on the internal RAM */ + uint8_t *data = (uint8_t *)heap_caps_calloc(1, buf_size, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT); + #else + uint8_t *data = (uint8_t *)calloc(1, buf_size); + #endif + assert(data); + /* Load the 16-bit aligned data */ + for (int i = 0; i < buf_size; i += 2) { + data[i] = 0; // Fill 0 to the low 8 bits + data[i+1] = (i / 2) % 255; // Only the high 8 bits will be conveted + } + /* Write the data acyclicly, it will be blocked untill finishing sending all the data */ + ESP_ERROR_CHECK(dac_channels_write_continuously(handle, data, buf_size, NULL, timeout_ms)); + /* Write the data acyclicly, it will start output the buffer cyclicly without block, it can only be timeout when failed to aquire the lock */ + ESP_ERROR_CHECK(dac_channels_write_continuously(handle, data, buf_size, NULL, timeout_ms)); + + /* Disable the DMA before deinitializing DMA mode */ + ESP_ERROR_CHECK(dac_channels_disable_continuous_mode(handle)); + /* Deinitialize DMA mode before disabling the channels */ + ESP_ERROR_CHECK(dac_channels_deinit_continuous_mode(handle)); + /* Disable the channels before deleting it */ + ESP_ERROR_CHECK(dac_channels_disable(handle)); + /* Delete the channels */ + ESP_ERROR_CHECK(dac_del_channels(handle)); + + +.. only:: esp32s2 + + .. code:: c + + #include "driver/dac_driver.h" + #if CONFIG_DAC_ISR_IRAM_SAFE + /* If DAC IRAM safe enabled in Kconfig, include "esp_heap_caps.h" to allocate memory on internal RAM */ + #include "esp_heap_caps.h" + #endif + + ... + + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_conti_config_t dma_cfg = { + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .freq_hz = 20000, + }; + + /* Allocate a channels handle for the choosen channels */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); + /* Must enable the channels before any outputting */ + ESP_ERROR_CHECK(dac_channels_enable(handle)); + /* Initialize the channels to DMA mode */ + ESP_ERROR_CHECK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + /* Must enable DMA before writing data */ + ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(handle)); + + /* Allocate the memory for the buffer to write */ + uint32_t buf_size = 2000; + uint32_t timeout_ms = 1000; + #if CONFIG_DAC_ISR_IRAM_SAFE + /* If DAC IRAM SAFE is enabled, allocate the buffer on the internal RAM */ + uint8_t *data = (uint8_t *)heap_caps_calloc(1, buf_size, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT); + #else + uint8_t *data = (uint8_t *)calloc(1, buf_size); + #endif + assert(data); + for (int i = 0; i < buf_size; i++) { + data[i] = i % 255; + } + /* Write the data acyclicly, it will be blocked untill finishing sending all the data */ + ESP_ERROR_CHECK(dac_channels_write_continuously(handle, data, buf_size, NULL, timeout_ms)); + /* Write the data acyclicly, it will start output the buffer cyclicly without block, it can only be timeout when failed to aquire the lock */ + ESP_ERROR_CHECK(dac_channels_write_continuously(handle, data, buf_size, NULL, timeout_ms)); + + /* Disable the DMA before deinitializing DMA mode */ + ESP_ERROR_CHECK(dac_channels_disable_continuous_mode(handle)); + /* Deinitialize DMA mode before disabling the channels */ + ESP_ERROR_CHECK(dac_channels_deinit_continuous_mode(handle)); + /* Disable the channels before deleting it */ + ESP_ERROR_CHECK(dac_channels_disable(handle)); + /* Delete the channels */ + ESP_ERROR_CHECK(dac_del_channels(handle)); + + +Cosine Wave Output Example +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code:: c + + #include "driver/dac_driver.h" + + ... + + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_cosine_config_t cos_cfg = { + .freq_hz = 1000, + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_0, + .scale = DAC_COSINE_NO_ATTEN, + }; + /* Allocate a channels handle for the choosen channels */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); + /* Must enable the channels before any outputting */ + ESP_ERROR_CHECK(dac_channels_enable(handle)); + /* Initialize the channels to cosine wave mode */ + ESP_ERROR_CHECK(dac_channels_init_cosine_mode(handle, &cos_cfg)); + /* Start outputting the cosine wave */ + ESP_ERROR_CHECK(dac_channels_start_cosine_output(handle)); + + /* Stop the cosine wave generator before deinitializing cosine mode */ + ESP_ERROR_CHECK(dac_channels_stop_cosine_output(handle)); + /* Deinitialize consine mode before disabling the channels */ + ESP_ERROR_CHECK(dac_channels_deinit_cosine_mode(handle)); + /* Disable the channels before deleting it */ + ESP_ERROR_CHECK(dac_channels_disable(handle)); + /* Delete the channels */ + ESP_ERROR_CHECK(dac_del_channels(handle)); API Reference ------------- -.. include-build-file:: inc/dac.inc -.. include-build-file:: inc/dac_common.inc - -GPIO Lookup Macros -^^^^^^^^^^^^^^^^^^ -Some useful macros can be used to specified the GPIO number of a DAC channel, or vice versa. -e.g. - -1. ``DAC_CHANNEL_1_GPIO_NUM`` is the GPIO number of channel 1 ({IDF_TARGET_DAC_CH_1}); -2. ``DAC_{IDF_TARGET_DAC_CH_2}_CHANNEL`` is the channel number of GPIO 26 (channel 2). - +.. include-build-file:: inc/dac_driver.inc .. include-build-file:: inc/dac_channel.inc .. include-build-file:: inc/dac_types.inc diff --git a/docs/en/migration-guides/release-5.x/5.0/peripherals.rst b/docs/en/migration-guides/release-5.x/5.0/peripherals.rst index 6b7657cced..33fa3fadd1 100644 --- a/docs/en/migration-guides/release-5.x/5.0/peripherals.rst +++ b/docs/en/migration-guides/release-5.x/5.0/peripherals.rst @@ -527,6 +527,65 @@ LCD The deprecated ``CAN`` peripheral driver is removed. Please use ``TWAI`` driver instead (i.e. include ``driver/twai.h`` in your application). +.. only:: SOC_DAC_SUPPORTED + + DAC + --- + + DAC driver has been redesigned (see :doc:`DAC API Reference <../api-reference/peripherals/dac>`), which aims to unify and extend the usage of DAC peripheral. Although it's recommended to use the new driver APIs, the legacy driver is still available in the previous include path ``driver/dac.h``. However, by default, including ``driver/dac.h`` will bring a build warning like `The legacy DAC driver is deprecated, please use driver/dac_driver.h instead`. The warning can be suppressed by the Kconfig option :ref:`CONFIG_DAC_SUPPRESS_DEPRECATE_WARN`. + + The major breaking changes in concept and usage are listed as follows: + + .. only:: esp32 + + Breaking Changes in Concepts + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - ``dac_channel_t`` which used to identify the hardware channel are removed from user space, the channel index now starts from ``0``, please use `DAC_CHAN_0` and `DAC_CHAN_1` instead. And in the new driver, DAC channels can be seleted by :cpp:type:`dac_channel_mask_t`. And these channels can be allocated in a same channel group which is represented by :cpp:type:`dac_channels_handle_t`. + - ``dac_cw_scale_t`` is replaced by :cpp:type:`dac_cosine_scale_t`, to decupling the legacy driver and the new driver. + - ``dac_cw_phase_t`` is replaced by :cpp:type:`dac_cosine_phase_t`, the enum value is now the phase angle directly. + - ``dac_cw_config_t`` is replaced by :cpp:type:`dac_cosine_config_t`, but the ``en_ch`` field is removed because it should be specify while allocate the channel group. + + Breaking Changes in Usage + ~~~~~~~~~~~~~~~~~~~~~~~~~ + + - ``dac_pad_get_io_num`` is removed. + - ``dac_output_voltage`` is replaced by :cpp:func:`dac_channels_set_voltage`. + - ``dac_output_enable`` is replaced by :cpp:func:`dac_channels_enable`. + - ``dac_output_disable`` is replaced by :cpp:func:`dac_channels_disable`. + - ``dac_cw_generator_enable`` is replaced by :cpp:func:`dac_channels_start_cosine_output`, but it need to initialize the DAC channel group to cosine mode first by :cpp:func:`dac_channels_start_cosine_output`, and :cpp:func:`dac_channels_enable` should be called as well. + - ``dac_cw_generator_disable`` is replaced by :cpp:func:`dac_channels_stop_cosine_output`, it is also only allowed to be called under cosine mode. + - ``dac_cw_generator_config`` is replaced by :cpp:func:`dac_channels_init_cosine_mode`, when it is called, the driver will work at cosine mode. + - ``dac_i2s_enable`` is replaced by :cpp:func:`dac_channels_enable_continuous_mode`, but it need to initialize the DAC channel group to DMA mode first by :cpp:func:`dac_channels_init_continuous_mode`, and :cpp:func:`dac_channels_enable` should be called as well. + - ``dac_i2s_disable`` is replaced by :cpp:func:`dac_channels_disable_continuous_mode`, it is also only allowed to be called under DMA mode. + + .. only:: esp32s2 + + Breaking Changes in Concepts + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - ``dac_channel_t`` which used to identify the hardware channel are removed from user space, the channel index now starts from ``0``, please use `DAC_CHAN_0` and `DAC_CHAN_1` instead. And in the new driver, DAC channels can be seleted by :cpp:type:`dac_channel_mask_t`. And these channels can be allocated in a same channel group which is represented by :cpp:type:`dac_channels_handle_t`. + - ``dac_cw_scale_t`` is replaced by :cpp:type:`dac_cosine_scale_t`, to decupling the legacy driver and the new driver. + - ``dac_cw_phase_t`` is replaced by :cpp:type:`dac_cosine_phase_t`, the enum value is now the phase angle directly. + - ``dac_digi_convert_mode_t`` is removed. The driver now can transmit DMA data in different ways by calling :cpp:func:`dac_channels_write_continuously` or :cpp:func:`dac_channels_write_cyclically`. + - ``dac_cw_config_t`` is replaced by :cpp:type:`dac_cosine_config_t`, but the ``en_ch`` field is removed because it should be specify while allocate the channel group. + - ``dac_digi_config_t`` is replaced by :cpp:type:`dac_conti_config_t`. + + Breaking Changes in Usage + ~~~~~~~~~~~~~~~~~~~~~~~~~ + + - ``dac_pad_get_io_num`` is removed. + - ``dac_output_voltage`` is replaced by :cpp:func:`dac_channels_set_voltage`. + - ``dac_output_enable`` is replaced by :cpp:func:`dac_channels_enable`. + - ``dac_output_disable`` is replaced by :cpp:func:`dac_channels_disable`. + - ``dac_cw_generator_enable`` is replaced by :cpp:func:`dac_channels_start_cosine_output`, but it need to initialize the DAC channel group to cosine mode first by :cpp:func:`dac_channels_start_cosine_output`, and :cpp:func:`dac_channels_enable` should be called as well. + - ``dac_cw_generator_disable`` is replaced by :cpp:func:`dac_channels_stop_cosine_output`, it is also only allowed to be called under cosine mode. + - ``dac_cw_generator_config`` is replaced by :cpp:func:`dac_channels_init_cosine_mode`, when it is called, the driver will work at cosine mode. + - ``dac_digi_init`` and ``dac_digi_controller_config`` is merged into :cpp:func:`dac_channels_init_continuous_mode`. + - ``dac_digi_deinit`` is replaced by :cpp:func:`dac_channels_deinit_continuous_mode`. + - ``dac_digi_start``, ``dac_digi_fifo_reset`` and ``dac_digi_reset`` are merged into :cpp:func:`dac_channels_enable_continuous_mode`. + - ``dac_digi_stop`` is replaced by :cpp:func:`dac_channels_disable_continuous_mode`. + Register Access Macros ---------------------- diff --git a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_av.c b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_av.c index 0b06d8dca2..14751f6ae0 100644 --- a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_av.c +++ b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_av.c @@ -22,7 +22,7 @@ #include "freertos/task.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC // DAC DMA mode is only supported by the legacy I2S driver, it will be replaced once DAC has its own DMA dirver -#include "driver/i2s.h" +#include "driver/dac_driver.h" #else #include "driver/i2s_std.h" #endif @@ -89,6 +89,8 @@ static uint8_t s_volume = 0; /* local volume value */ static bool s_volume_notify; /* notify volume change or not */ #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC i2s_chan_handle_t tx_chan = NULL; +#else +dac_channels_handle_t tx_chan; #endif /******************************** @@ -169,23 +171,24 @@ static void bt_av_notify_evt_handler(uint8_t event_id, esp_avrc_rn_param_t *even void bt_i2s_driver_install(void) { #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - /* I2S configuration parameters */ - i2s_config_t i2s_config = { - .mode = I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_DAC_BUILT_IN, - .sample_rate = 44100, - .bits_per_sample = 16, - .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, /* 2-channels */ - .communication_format = I2S_COMM_FORMAT_STAND_MSB, - .dma_buf_count = 6, - .dma_buf_len = 60, - .intr_alloc_flags = 0, /* default interrupt priority */ - .tx_desc_auto_clear = true /* auto clear tx descriptor on underflow */ + dac_channels_config_t cfg = { + .chan_sel = DAC_CHANNEL_MASK_BOTH, }; - - /* enable I2S */ - ESP_ERROR_CHECK(i2s_driver_install(0, &i2s_config, 0, NULL)); - ESP_ERROR_CHECK(i2s_set_dac_mode(I2S_DAC_CHANNEL_BOTH_EN)); - ESP_ERROR_CHECK(i2s_set_pin(0, NULL)); + dac_conti_config_t conti_cfg = { + .freq_hz = 44100, + .chan_mode = DAC_CHANNEL_MODE_ALTER, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' + .desc_num = 6, + .buf_size = 2048, + }; + /* Allocate the channel group */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &tx_chan)); + /* Enable the channels in the group */ + ESP_ERROR_CHECK(dac_channels_enable(tx_chan)); + /* Initialize DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_init_continuous_mode(tx_chan, &conti_cfg)); + /* Start the DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(tx_chan)); #else i2s_chan_config_t chan_cfg = I2S_CHANNEL_DEFAULT_CONFIG(I2S_NUM_0, I2S_ROLE_MASTER); chan_cfg.auto_clear = true; @@ -215,7 +218,10 @@ void bt_i2s_driver_install(void) void bt_i2s_driver_uninstall(void) { #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - i2s_driver_uninstall(0); + ESP_ERROR_CHECK(dac_channels_disable_continuous_mode(tx_chan)); + ESP_ERROR_CHECK(dac_channels_deinit_continuous_mode(tx_chan)); + ESP_ERROR_CHECK(dac_channels_disable(tx_chan)); + ESP_ERROR_CHECK(dac_del_channels(tx_chan)); #else ESP_ERROR_CHECK(i2s_channel_disable(tx_chan)); ESP_ERROR_CHECK(i2s_del_channel(tx_chan)); @@ -316,7 +322,17 @@ static void bt_av_hdl_a2d_evt(uint16_t event, void *p_param) ch_count = 1; } #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - i2s_set_clk(0, sample_rate, 16, ch_count); + dac_conti_config_t conti_cfg = { + .freq_hz = sample_rate, + .chan_mode = ch_count == 1 ? DAC_CHANNEL_MODE_SIMUL : DAC_CHANNEL_MODE_ALTER, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' + .desc_num = 6, + .buf_size = 2048, + }; + dac_channels_disable_continuous_mode(tx_chan); + dac_channels_deinit_continuous_mode(tx_chan); + dac_channels_init_continuous_mode(tx_chan, &conti_cfg); + dac_channels_enable_continuous_mode(tx_chan); #else i2s_channel_disable(tx_chan); i2s_std_clk_config_t clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(sample_rate); diff --git a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_core.c b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_core.c index c90c5b773a..68ab9ac538 100644 --- a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_core.c +++ b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_core.c @@ -16,8 +16,7 @@ #include "esp_log.h" #include "bt_app_core.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC -// DAC DMA mode is only supported by the legacy I2S driver, it will be replaced once DAC has its own DMA dirver -#include "driver/i2s.h" +#include "driver/dac_driver.h" #else #include "driver/i2s_std.h" #endif @@ -62,6 +61,8 @@ static uint16_t ringbuffer_mode = RINGBUFFER_MODE_PROCESSING; ********************************/ #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC extern i2s_chan_handle_t tx_chan; +#else +extern dac_channels_handle_t tx_chan; #endif /******************************* @@ -139,7 +140,7 @@ static void bt_i2s_task_handler(void *arg) } #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - i2s_write(0, data, item_size, &bytes_written, portMAX_DELAY); + dac_channels_write_continuously(tx_chan, data, item_size, &bytes_written, portMAX_DELAY); #else i2s_channel_write(tx_chan, data, item_size, &bytes_written, portMAX_DELAY); #endif diff --git a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_av.c b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_av.c index 151ff86f86..e658db6c7c 100644 --- a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_av.c +++ b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_av.c @@ -22,8 +22,7 @@ #include "freertos/FreeRTOS.h" #include "freertos/task.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC -// DAC DMA mode is only supported by the legacy I2S driver, it will be replaced once DAC has its own DMA dirver -#include "driver/i2s.h" +#include "driver/dac_driver.h" #else #include "driver/i2s_std.h" #endif @@ -55,6 +54,8 @@ static uint8_t s_volume = 0; static bool s_volume_notify; #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC extern i2s_chan_handle_t tx_chan; +#else +extern dac_channels_handle_t tx_chan; #endif /* callback for A2DP sink */ @@ -171,7 +172,17 @@ static void bt_av_hdl_a2d_evt(uint16_t event, void *p_param) sample_rate = 48000; } #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - i2s_set_clk(0, sample_rate, 16, 2); + dac_conti_config_t conti_cfg = { + .freq_hz = sample_rate, + .chan_mode = DAC_CHANNEL_MODE_ALTER, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' + .desc_num = 6, + .buf_size = 2048, + }; + dac_channels_disable_continuous_mode(tx_chan); + dac_channels_deinit_continuous_mode(tx_chan); + dac_channels_init_continuous_mode(tx_chan, &conti_cfg); + dac_channels_enable_continuous_mode(tx_chan); #else i2s_channel_disable(tx_chan); i2s_std_clk_config_t clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(sample_rate); diff --git a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_core.c b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_core.c index f69d10b216..8922bc3050 100644 --- a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_core.c +++ b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_core.c @@ -16,8 +16,7 @@ #include "bt_app_core.h" #include "freertos/ringbuf.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC -// DAC DMA mode is only supported by the legacy I2S driver, it will be replaced once DAC has its own DMA dirver -#include "driver/i2s.h" +#include "driver/dac_driver.h" #else #include "driver/i2s_std.h" #endif @@ -32,6 +31,8 @@ static TaskHandle_t s_bt_i2s_task_handle = NULL; static RingbufHandle_t s_ringbuf_i2s = NULL; #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC extern i2s_chan_handle_t tx_chan; +#else +extern dac_channels_handle_t tx_chan; #endif bool bt_app_work_dispatch(bt_app_cb_t p_cback, uint16_t event, void *p_params, int param_len, bt_app_copy_cb_t p_copy_cback) @@ -132,7 +133,7 @@ static void bt_i2s_task_handler(void *arg) data = (uint8_t *)xRingbufferReceive(s_ringbuf_i2s, &item_size, (TickType_t)portMAX_DELAY); if (item_size != 0){ #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - i2s_write(0, data, item_size, &bytes_written, portMAX_DELAY); + dac_channels_write_continuously(tx_chan, data, item_size, &bytes_written, portMAX_DELAY); #else i2s_channel_write(tx_chan, data, item_size, &bytes_written, portMAX_DELAY); #endif diff --git a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/main.c b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/main.c index 81bf399f78..e7220181ef 100644 --- a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/main.c +++ b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/main.c @@ -37,7 +37,7 @@ #include "esp_avrc_api.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC // DAC DMA mode is only supported by the legacy I2S driver, it will be replaced once DAC has its own DMA dirver -#include "driver/i2s.h" +#include "driver/dac_driver.h" #else #include "driver/i2s_std.h" #endif @@ -77,6 +77,8 @@ static prepare_type_env_t b_prepare_write_env; #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC i2s_chan_handle_t tx_chan; +#else +dac_channels_handle_t tx_chan; #endif //Declare the static function @@ -691,23 +693,24 @@ void app_main(void) ESP_ERROR_CHECK(err); #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - /* I2S configuration parameters */ - i2s_config_t i2s_config = { - .mode = I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_DAC_BUILT_IN, - .sample_rate = 44100, - .bits_per_sample = 16, - .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, /* 2-channels */ - .communication_format = I2S_COMM_FORMAT_STAND_MSB, - .dma_buf_count = 6, - .dma_buf_len = 60, - .intr_alloc_flags = 0, /* default interrupt priority */ - .tx_desc_auto_clear = true /* auto clear tx descriptor on underflow */ + dac_channels_config_t cfg = { + .chan_sel = DAC_CHANNEL_MASK_BOTH, }; - - /* enable I2S */ - ESP_ERROR_CHECK(i2s_driver_install(0, &i2s_config, 0, NULL)); - ESP_ERROR_CHECK(i2s_set_dac_mode(I2S_DAC_CHANNEL_BOTH_EN)); - ESP_ERROR_CHECK(i2s_set_pin(0, NULL)); + dac_conti_config_t conti_cfg = { + .freq_hz = 44100, + .chan_mode = DAC_CHANNEL_MODE_ALTER, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' + .desc_num = 6, + .buf_size = 2048, + }; + /* Allocate the channel group */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &tx_chan)); + /* Enable the channels in the group */ + ESP_ERROR_CHECK(dac_channels_enable(tx_chan)); + /* Initialize DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_init_continuous_mode(tx_chan, conti_cfg)); + /* Start the DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(tx_chan)); #else i2s_chan_config_t chan_cfg = I2S_CHANNEL_DEFAULT_CONFIG(I2S_NUM_0, I2S_ROLE_MASTER); chan_cfg.auto_clear = true; diff --git a/examples/peripherals/.build-test-rules.yml b/examples/peripherals/.build-test-rules.yml index 754a881221..6bbcebe5cf 100644 --- a/examples/peripherals/.build-test-rules.yml +++ b/examples/peripherals/.build-test-rules.yml @@ -6,6 +6,22 @@ examples/peripherals/adc/continuous_read: temporary: true reason: adc dma mode isn't supported on these targets +examples/peripherals/dac/dac_audio: + disable: + - if: SOC_DAC_SUPPORTED != 1 + +examples/peripherals/dac/dac_basic: + disable: + - if: SOC_DAC_SUPPORTED != 1 + +examples/peripherals/dac/dac_continuous: + disable: + - if: SOC_DAC_SUPPORTED != 1 + +examples/peripherals/dac/dac_cosine_wave: + disable: + - if: SOC_DAC_SUPPORTED != 1 + examples/peripherals/gpio/generic_gpio: disable_test: - if: IDF_TARGET != "esp32" diff --git a/examples/peripherals/wave_gen/CMakeLists.txt b/examples/peripherals/dac/dac_audio/CMakeLists.txt similarity index 91% rename from examples/peripherals/wave_gen/CMakeLists.txt rename to examples/peripherals/dac/dac_audio/CMakeLists.txt index a601b00dd9..eefcf9cbcd 100644 --- a/examples/peripherals/wave_gen/CMakeLists.txt +++ b/examples/peripherals/dac/dac_audio/CMakeLists.txt @@ -3,4 +3,4 @@ cmake_minimum_required(VERSION 3.16) include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(wave_gen) +project(dac_audio) diff --git a/examples/peripherals/dac/dac_audio/README.md b/examples/peripherals/dac/dac_audio/README.md new file mode 100644 index 0000000000..aaa8d94a96 --- /dev/null +++ b/examples/peripherals/dac/dac_audio/README.md @@ -0,0 +1,53 @@ +| Supported Targets | ESP32 | ESP32-S2 | +| ----------------- | ----- | -------- | + +# DAC Constant Example + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +## Overview + +This example shows how to play a piece of audio by DAC driver. + +## How to use the Example + +### Hardware Required + +* A development board with ESP32 or ESP32-S2 SoC + - Note that some ESP32-S2 DevKits have LED on it which is connected to GPIO18 (same pin as DAC channel2), so the output voltage of DAC channel 1 can't go down due the this LED. +* An Audio Power Amplifier like `NS4150` +* A speaker or earphone to play the audio + +### Configure the Project + +This example uses the audio that stored in a buffer, which is put in `audio_example_file.h`. You can also create your own audio buffer by the python script `generate_audio_file.py`. + +### Build and Flash + +Build the project and flash it to the board, then run monitor tool to view serial output: + +``` +idf.py -p PORT flash monitor +``` + +(Replace PORT with the name of the serial port to use.) + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. + +## Example Output + +You can see the following logs on the monitor: + +``` +I (277) dac audio: DAC audio example start +I (277) dac audio: -------------------------------------- +I (287) dac audio: DAC initialized success, DAC DMA is ready +I (297) dac audio: Audio size 79512 bytes, played at frequency 16000 Hz +I (5137) dac audio: Audio size 79512 bytes, played at frequency 16000 Hz +I (9967) dac audio: Audio size 79512 bytes, played at frequency 16000 Hz +... +``` + +And meanwhile, you can hear the audio played every 1 second from the speaker or earphone. diff --git a/examples/peripherals/dac/dac_audio/main/CMakeLists.txt b/examples/peripherals/dac/dac_audio/main/CMakeLists.txt new file mode 100644 index 0000000000..70afa9ebc2 --- /dev/null +++ b/examples/peripherals/dac/dac_audio/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRCS "dac_audio.c" + INCLUDE_DIRS ".") diff --git a/examples/peripherals/i2s/i2s_adc_dac/main/audio_example_file.h b/examples/peripherals/dac/dac_audio/main/audio_example_file.h similarity index 100% rename from examples/peripherals/i2s/i2s_adc_dac/main/audio_example_file.h rename to examples/peripherals/dac/dac_audio/main/audio_example_file.h diff --git a/examples/peripherals/dac/dac_audio/main/dac_audio.c b/examples/peripherals/dac/dac_audio/main/dac_audio.c new file mode 100644 index 0000000000..c3d59ae440 --- /dev/null +++ b/examples/peripherals/dac/dac_audio/main/dac_audio.c @@ -0,0 +1,73 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "driver/dac_driver.h" +#include "esp_check.h" +#include "audio_example_file.h" + +#define EXAMPLE_CONVERT_FREQ_HZ 16000 // DAC conversion frequency, it determines how fast to play the audio + +static const char *TAG = "dac audio"; + +void app_main(void) +{ + ESP_LOGI(TAG, "DAC audio example start"); + ESP_LOGI(TAG, "--------------------------------------"); + + dac_channels_handle_t dac_handle; + + dac_channels_config_t cfg = { + .chan_sel = DAC_CHANNEL_MASK_BOTH, + }; + dac_conti_config_t dma_cfg = { + .freq_hz = EXAMPLE_CONVERT_FREQ_HZ, + /* Assume the data in buffer is 'A B C D E F' + * DAC_CHANNEL_MODE_SIMUL: + * - channel 0: A B C D E F + * - channel 1: A B C D E F + * DAC_CHANNEL_MODE_ALTER: + * - channel 0: A C E + * - channel 1: B D F + */ + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_APLL, // Using APLL as clock source to get a wider frequency range + .desc_num = 5, // At least 2 descriptions + }; + /* Allocate the channel group */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &dac_handle)); + /* Enable the channels in the group */ + ESP_ERROR_CHECK(dac_channels_enable(dac_handle)); + /* Initialize DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_init_continuous_mode(dac_handle, &dma_cfg)); + /* Start the DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(dac_handle)); + ESP_LOGI(TAG, "DAC initialized success, DAC DMA is ready"); + + uint8_t *audio = NULL; + size_t audio_size = sizeof(audio_table); +#if CONFIG_IDF_TARGET_ESP32 + audio = (uint8_t *)calloc(1, audio_size * 2); + assert(audio); + /* On ESP32, the data have to align with 16 bits, and only the high 8 bit will be converted by DAC */ + for (int i = 0; i < audio_size; i++) { + audio[2 * i + 1] = audio_table[i]; + } +#else + audio = (uint8_t *)calloc(1, audio_size); + assert(audio); + /* 'audio_table' is a const buffer which can't be sent by DMA directly, copy it into a new buffer */ + memcpy(audio, audio_table, audio_size); +#endif + + while (1) { + ESP_LOGI(TAG, "Audio size %d bytes, played at frequency %d Hz", audio_size, EXAMPLE_CONVERT_FREQ_HZ); + ESP_ERROR_CHECK(dac_channels_write_continuously(dac_handle, audio, audio_size, NULL, portMAX_DELAY)); + vTaskDelay(pdMS_TO_TICKS(1000)); + } +} diff --git a/examples/peripherals/dac/dac_audio/pytest_dac_audio.py b/examples/peripherals/dac/dac_audio/pytest_dac_audio.py new file mode 100644 index 0000000000..4e4d5f89bf --- /dev/null +++ b/examples/peripherals/dac/dac_audio/pytest_dac_audio.py @@ -0,0 +1,16 @@ +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import pytest +from pytest_embedded import Dut + + +@pytest.mark.esp32 +@pytest.mark.esp32s2 +@pytest.mark.generic +def test_dac_audio_exampl(dut: Dut) -> None: + + dut.expect('I \\(([0-9]+)\\) dac audio: DAC audio example start', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac audio: --------------------------------------', timeout=5) + dut.expect('I \\(([0-9]+)\\) dac audio: DAC initialized success, DAC DMA is ready', timeout=5) + dut.expect('I \\(([0-9]+)\\) dac audio: Audio size ([0-9]+) bytes, played at frequency ([0-9]+) Hz', timeout=5) diff --git a/examples/peripherals/i2s/i2s_adc_dac/tools/generate_audio_file.py b/examples/peripherals/dac/dac_audio/tools/generate_audio_file.py similarity index 100% rename from examples/peripherals/i2s/i2s_adc_dac/tools/generate_audio_file.py rename to examples/peripherals/dac/dac_audio/tools/generate_audio_file.py diff --git a/examples/peripherals/i2s/i2s_adc_dac/tools/sample_00.wav b/examples/peripherals/dac/dac_audio/tools/sample_00.wav similarity index 100% rename from examples/peripherals/i2s/i2s_adc_dac/tools/sample_00.wav rename to examples/peripherals/dac/dac_audio/tools/sample_00.wav diff --git a/examples/peripherals/i2s/i2s_adc_dac/tools/sample_01.wav b/examples/peripherals/dac/dac_audio/tools/sample_01.wav similarity index 100% rename from examples/peripherals/i2s/i2s_adc_dac/tools/sample_01.wav rename to examples/peripherals/dac/dac_audio/tools/sample_01.wav diff --git a/examples/peripherals/i2s/i2s_adc_dac/tools/sample_02.wav b/examples/peripherals/dac/dac_audio/tools/sample_02.wav similarity index 100% rename from examples/peripherals/i2s/i2s_adc_dac/tools/sample_02.wav rename to examples/peripherals/dac/dac_audio/tools/sample_02.wav diff --git a/examples/peripherals/i2s/i2s_adc_dac/CMakeLists.txt b/examples/peripherals/dac/dac_basic/CMakeLists.txt similarity index 91% rename from examples/peripherals/i2s/i2s_adc_dac/CMakeLists.txt rename to examples/peripherals/dac/dac_basic/CMakeLists.txt index 40019e0071..9d9a48fc37 100644 --- a/examples/peripherals/i2s/i2s_adc_dac/CMakeLists.txt +++ b/examples/peripherals/dac/dac_basic/CMakeLists.txt @@ -3,4 +3,4 @@ cmake_minimum_required(VERSION 3.16) include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(i2s_adc_dac) +project(dac_basic) diff --git a/examples/peripherals/dac/dac_basic/README.md b/examples/peripherals/dac/dac_basic/README.md new file mode 100644 index 0000000000..2a9bcbf6ad --- /dev/null +++ b/examples/peripherals/dac/dac_basic/README.md @@ -0,0 +1,71 @@ +| Supported Targets | ESP32 | ESP32-S2 | +| ----------------- | ----- | -------- | + +# DAC Basic Example + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +## Overview + +This example shows the basic usage of outputting a voltage directly by the DAC driver. + +The output voltage will increase a step every 500 ms, and it will reset to 0 periodically. + +## How to use the Example + +### Hardware Required + +* A development board with ESP32 or ESP32-S2 SoC + - Note that some ESP32-S2 DevKits have LED on it which is connected to GPIO18 (same pin as DAC channel2), so the output voltage of DAC channel 1 can't go down due the this LED. +* (Optional) An oscilloscope to monitor the output wave + +### Configure the Project + +There is a macro `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` in the example to choose whether put the two DAC channels into a same group + + - If `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 1, DAC channel 0 and channel 2 can be set to different voltage separately by their own group handle. + - If `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 0, DAC channel 0 and channel 2 will be set to a same voltage by the same group handle. + +### Build and Flash + +Build the project and flash it to the board, then run monitor tool to view serial output: + +``` +idf.py -p PORT flash monitor +``` + +(Replace PORT with the name of the serial port to use.) + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. + +## Example Output + +The DAC channels can be read by ADC channels internally. The ADC read period is 100 ms, the following log is the raw ADC value read from the DAC channels, it shows the output voltage is increasing every 500 ms. + +``` +DAC channel 0 vaule: 37 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 37 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 38 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 38 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 34 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 179 DAC channel 1 vaule: 117 +DAC channel 0 vaule: 176 DAC channel 1 vaule: 117 +DAC channel 0 vaule: 178 DAC channel 1 vaule: 122 +DAC channel 0 vaule: 179 DAC channel 1 vaule: 118 +DAC channel 0 vaule: 177 DAC channel 1 vaule: 115 +DAC channel 0 vaule: 316 DAC channel 1 vaule: 261 +DAC channel 0 vaule: 317 DAC channel 1 vaule: 263 +DAC channel 0 vaule: 311 DAC channel 1 vaule: 261 +DAC channel 0 vaule: 317 DAC channel 1 vaule: 260 +DAC channel 0 vaule: 317 DAC channel 1 vaule: 262 +DAC channel 0 vaule: 458 DAC channel 1 vaule: 406 +DAC channel 0 vaule: 456 DAC channel 1 vaule: 406 +DAC channel 0 vaule: 454 DAC channel 1 vaule: 403 +DAC channel 0 vaule: 457 DAC channel 1 vaule: 406 +DAC channel 0 vaule: 459 DAC channel 1 vaule: 407 +... +``` + +If monitoring the DAC channels with an oscilloscope, there will be a direct voltage on the screen and it will be updated every 500 ms. diff --git a/examples/peripherals/dac/dac_basic/main/CMakeLists.txt b/examples/peripherals/dac/dac_basic/main/CMakeLists.txt new file mode 100644 index 0000000000..26ed7c8ff6 --- /dev/null +++ b/examples/peripherals/dac/dac_basic/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRCS "dac_basic.c" + INCLUDE_DIRS ".") diff --git a/examples/peripherals/dac/dac_basic/main/dac_basic.c b/examples/peripherals/dac/dac_basic/main/dac_basic.c new file mode 100644 index 0000000000..e1e1c6bffe --- /dev/null +++ b/examples/peripherals/dac/dac_basic/main/dac_basic.c @@ -0,0 +1,96 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "driver/dac_driver.h" +#include "driver/adc.h" +#include "esp_check.h" + +#define EXAMPLE_DAC_USE_SEPARATE_CHANNEL 0 // Whether to register two DAC channels in separate control group + +#if CONFIG_IDF_TARGET_ESP32 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_8 // GPIO25, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN2_ADC_CHAN ADC2_CHANNEL_9 // GPIO26, same as DAC channel 1 +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_12 +#elif CONFIG_IDF_TARGET_ESP32S2 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_6 // GPIO17, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN2_ADC_CHAN ADC2_CHANNEL_7 // GPIO18, same as DAC channel 1 +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_13 +#endif +#define EXAMPLE_ADC_ATTEN ADC_ATTEN_DB_11 + +static void adc_monitor_task(void *args) +{ + /* Set the ADC channels, these channels are connected to the DAC channels internally */ + ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_ATTEN)); + ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN2_ADC_CHAN, EXAMPLE_ADC_ATTEN)); + + int chan1_val = 0; + int chan2_val = 0; + while (1) { + /* Read the DAC output voltage */ + ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan1_val)); + ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN2_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan2_val)); + printf("DAC channel 0 vaule: %4d\tDAC channel 1 vaule: %4d\n", chan1_val, chan2_val); + vTaskDelay(pdMS_TO_TICKS(100)); + } +} + +static void dac_output_task(void *args) +{ + dac_channels_handle_t handle = (dac_channels_handle_t)args; + uint32_t val = 0; + while (1) { + /* Set the voltage every 100 ms */ + ESP_ERROR_CHECK(dac_channels_set_voltage(handle, val)); + val += 10; + val %= 250; + vTaskDelay(pdMS_TO_TICKS(500)); + } +} + +static void dac_init_channel(dac_channel_mask_t mask, dac_channels_handle_t *dac_handle) +{ + dac_channels_handle_t handle = NULL; + dac_channels_config_t cfg = { + .chan_sel = mask, + }; + /* Allocate the channel group */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); + /* Enable the channels in the group */ + ESP_ERROR_CHECK(dac_channels_enable(handle)); + *dac_handle = handle; +} + +static void __attribute__((unused)) dac_deinit_channel(dac_channels_handle_t dac_handle) +{ + /* Disable the DAC channels */ + ESP_ERROR_CHECK(dac_channels_disable(dac_handle)); + /* Delete the channel group */ + ESP_ERROR_CHECK(dac_del_channels(dac_handle)); +} + +void app_main(void) +{ +#if EXAMPLE_DAC_USE_SEPARATE_CHANNEL + dac_channels_handle_t chan1_handle; + dac_channels_handle_t chan2_handle; + /* Initialize the two channels separately */ + dac_init_channel(DAC_CHANNEL_MASK_CH0, &chan1_handle); + dac_init_channel(DAC_CHANNEL_MASK_CH1, &chan2_handle); + xTaskCreate(dac_output_task, "dac_chan1_output_task", 4096, chan1_handle, 5, NULL); + vTaskDelay(pdMS_TO_TICKS(500)); // To differential the output of two channels + xTaskCreate(dac_output_task, "dac_chan2_output_task", 4096, chan2_handle, 5, NULL); + xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); +#else + dac_channels_handle_t chan12_handle; + /* Initialize the two channels in a same group */ + dac_init_channel(DAC_CHANNEL_MASK_BOTH, &chan12_handle); + xTaskCreate(dac_output_task, "dac_output_task", 4096, chan12_handle, 5, NULL); + xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); +#endif +} diff --git a/examples/peripherals/dac/dac_basic/pytest_dac_basic.py b/examples/peripherals/dac/dac_basic/pytest_dac_basic.py new file mode 100644 index 0000000000..6455252934 --- /dev/null +++ b/examples/peripherals/dac/dac_basic/pytest_dac_basic.py @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import pytest +from pytest_embedded import Dut + + +@pytest.mark.esp32 +@pytest.mark.esp32s2 +@pytest.mark.generic +def test_dac_basic_example(dut: Dut) -> None: + res = [] + for _ in range(10): + res.append(dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10)) + + avg1_ch1 = 0 + avg1_ch2 = 0 + avg2_ch1 = 0 + avg2_ch2 = 0 + + for val in res[0:5]: + avg1_ch1 = avg1_ch1 + int(val.group(2)) + avg1_ch2 = avg1_ch2 + int(val.group(5)) + for val in res[5:10]: + avg2_ch1 = avg1_ch1 + int(val.group(2)) + avg2_ch2 = avg1_ch2 + int(val.group(5)) + + avg1_ch1 = int(avg1_ch1 / 5) + avg1_ch2 = int(avg1_ch2 / 5) + avg2_ch1 = int(avg2_ch1 / 5) + avg2_ch2 = int(avg2_ch2 / 5) + + assert avg2_ch1 > avg1_ch1 + assert avg2_ch2 > avg1_ch2 diff --git a/examples/peripherals/dac/dac_basic/sdkconfig.defaults b/examples/peripherals/dac/dac_basic/sdkconfig.defaults new file mode 100644 index 0000000000..83e2dfa154 --- /dev/null +++ b/examples/peripherals/dac/dac_basic/sdkconfig.defaults @@ -0,0 +1 @@ +CONFIG_ADC_DISABLE_DAC=n diff --git a/examples/peripherals/dac/dac_continuous/CMakeLists.txt b/examples/peripherals/dac/dac_continuous/CMakeLists.txt new file mode 100644 index 0000000000..f1a4f60e31 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/CMakeLists.txt @@ -0,0 +1,6 @@ +# The following lines of boilerplate have to be in your project's CMakeLists +# in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(dac_continuous) diff --git a/examples/peripherals/dac/dac_continuous/README.md b/examples/peripherals/dac/dac_continuous/README.md new file mode 100644 index 0000000000..33b7aa0fd3 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/README.md @@ -0,0 +1,153 @@ +| Supported Targets | ESP32 | ESP32-S2 | +| ----------------- | ----- | -------- | + +# DAC Constant Example + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +## Overview + +This example shows the basic usage of outputting continuous voltage by the DAC driver. There are two ways to realize continuous output, one is outputting by DMA transmission and another is by timer interrupt. + +### Timer Interrupt + +While using timer interrupt to output the waves, the digital value will be set in every timer interrupt callback, it means the conversion frequency is equal to the timer interrupt frequency. Obviously, the conversion frequency is limited by the interrupt, which relies on the CPU scheduling, thus it can't reach a high frequency in this mode. But it can be used as a supplementary way while the conversion frequency is too low to use DMA mode. + +### DMA transmission + +While using DMA to transmit the wave buffers, the digital values are put into a DMA buffer wait for transmitting and converting, it means the conversion frequency is equal to the frequency that DMA transmitting the data. We can set the DMA frequency directly, and the digital data int the buffer will be sent automatically when the buffer has been loaded onto the DMA. So the conversion frequency can reach even several MHz while using DMA mode. But the wave can be distorted if the frequency is too high. + +## How to use the Example + +### Hardware Required + +* A development board with ESP32 or ESP32-S2 SoC + - Note that some ESP32-S2 DevKits have LED on it which is connected to GPIO18 (same pin as DAC channel2), so the output voltage of DAC channel 1 can't go down due the this LED. +* (Optional) An oscilloscope to monitor the output wave + +### Configure the Project + +You can switch the output method by setting the macro `EXAMPLE_DAC_CONTINUOUS_MODE` to `EXAMPLE_DAC_CONTINUOUS_BY_TIMER` or `EXAMPLE_DAC_CONTINUOUS_BY_DMA`. + +There are four waves: sine, triangle, saw tooth and square. These waves are stored in corresponding buffers, and each wave has 400 points as default, which can be modified by `EXAMPLE_ARRAY_LEN`, reduce the point number can increase the wave frequency. + +### Build and Flash + +Build the project and flash it to the board, then run monitor tool to view serial output: + +``` +idf.py -p PORT flash monitor +``` + +(Replace PORT with the name of the serial port to use.) + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. + +## Example Output + +This example can output sine wave, triangle wave, saw tooth wave and square wave periodically, each wave will last for 3 seconds. + +The DAC channels can be read by ADC channels internally. The ADC read period is 500 ms, the following log is the raw ADC value read from the DAC channels. But since the ADC sample-rate is lower than the DAC output-rate, the sampling value can only indicate that the voltage is changing. + +### Timer Triggered Output + +You can see sine wave, triangle wave, saw tooth wave and square wave at 50 Hz on the oscilloscope. + +``` +I (333) dac continuous: -------------------------------------------------- +I (343) dac continuous: DAC continuous output by Timer +I (343) dac continuous: DAC channel 0 io: GPIO_NUM_25 +I (353) dac continuous: DAC channel 1 io: GPIO_NUM_26 +I (353) dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE +I (363) dac continuous: DAC conversion frequency (Hz): 20000 +I (373) dac continuous: DAC wave frequency (Hz): 50 +I (373) dac continuous: -------------------------------------------------- +DAC channel 0 vaule: 2291 DAC channel 1 vaule: 2331 +DAC channel 0 vaule: 43 DAC channel 1 vaule: 3 +DAC channel 0 vaule: 55 DAC channel 1 vaule: 32 +DAC channel 0 vaule: 57 DAC channel 1 vaule: 33 +DAC channel 0 vaule: 56 DAC channel 1 vaule: 34 +DAC channel 0 vaule: 59 DAC channel 1 vaule: 34 +DAC channel 0 vaule: 56 DAC channel 1 vaule: 33 +I (3393) dac continuous: triangle wave start +DAC channel 0 vaule: 2258 DAC channel 1 vaule: 2243 +DAC channel 0 vaule: 2257 DAC channel 1 vaule: 2242 +DAC channel 0 vaule: 2259 DAC channel 1 vaule: 2242 +DAC channel 0 vaule: 2257 DAC channel 1 vaule: 2245 +DAC channel 0 vaule: 2257 DAC channel 1 vaule: 2243 +DAC channel 0 vaule: 2258 DAC channel 1 vaule: 2240 +I (6393) dac continuous: sawtooth wave start +DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2735 +DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2735 +DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2736 +DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2717 +DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2734 +DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2736 +I (9393) dac continuous: square wave start +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +I (12393) dac continuous: sine wave start +DAC channel 0 vaule: 82 DAC channel 1 vaule: 62 +DAC channel 0 vaule: 83 DAC channel 1 vaule: 62 +DAC channel 0 vaule: 82 DAC channel 1 vaule: 62 +DAC channel 0 vaule: 87 DAC channel 1 vaule: 62 +DAC channel 0 vaule: 84 DAC channel 1 vaule: 63 +DAC channel 0 vaule: 83 DAC channel 1 vaule: 64 +... +``` + +### DMA Output + +You can see sine wave, triangle wave, saw tooth wave and square wave at 2 KHz on the oscilloscope. + +``` +I (335) dac continuous: -------------------------------------------------- +I (345) dac continuous: DAC continuous output by DMA +I (345) dac continuous: DAC channel 0 io: GPIO_NUM_25 +I (355) dac continuous: DAC channel 1 io: GPIO_NUM_26 +I (355) dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE +I (365) dac continuous: DAC conversion frequency (Hz): 800000 +I (375) dac continuous: DAC wave frequency (Hz): 2000 +I (375) dac continuous: -------------------------------------------------- +DAC channel 0 vaule: 3131 DAC channel 1 vaule: 1634 +DAC channel 0 vaule: 1712 DAC channel 1 vaule: 2531 +DAC channel 0 vaule: 1716 DAC channel 1 vaule: 2535 +DAC channel 0 vaule: 1715 DAC channel 1 vaule: 2544 +DAC channel 0 vaule: 1715 DAC channel 1 vaule: 2533 +DAC channel 0 vaule: 1712 DAC channel 1 vaule: 2539 +I (3395) dac continuous(DMA): triangle wave start +DAC channel 0 vaule: 592 DAC channel 1 vaule: 1190 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3518 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3515 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3516 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3514 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3515 +I (6395) dac continuous(DMA): sawtooth wave start +DAC channel 0 vaule: 294 DAC channel 1 vaule: 560 +DAC channel 0 vaule: 2861 DAC channel 1 vaule: 3227 +DAC channel 0 vaule: 2860 DAC channel 1 vaule: 3216 +DAC channel 0 vaule: 2861 DAC channel 1 vaule: 3227 +DAC channel 0 vaule: 2861 DAC channel 1 vaule: 3216 +DAC channel 0 vaule: 2859 DAC channel 1 vaule: 3183 +I (9395) dac continuous(DMA): square wave start +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 4095 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +I (12395) dac continuous(DMA): sine wave start +DAC channel 0 vaule: 2864 DAC channel 1 vaule: 3691 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 204 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 202 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 193 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 181 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 194 +... +``` diff --git a/examples/peripherals/dac/dac_continuous/main/CMakeLists.txt b/examples/peripherals/dac/dac_continuous/main/CMakeLists.txt new file mode 100644 index 0000000000..b20bcad41d --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/main/CMakeLists.txt @@ -0,0 +1,6 @@ +set(srcs "dac_continuous_main.c" + "dac_continuous_dma.c" + "dac_continuous_timer.c") + +idf_component_register(SRCS "${srcs}" + INCLUDE_DIRS ".") diff --git a/examples/peripherals/dac/dac_continuous/main/dac_continuous.h b/examples/peripherals/dac/dac_continuous/main/dac_continuous.h new file mode 100644 index 0000000000..315937281a --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/main/dac_continuous.h @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ +#include "driver/dac_driver.h" + +#define CONST_PERIOD_2_PI 6.2832 // 2 * PI + +#define EXAMPLE_ARRAY_LEN 400 // Length of wave array +#define EXAMPLE_DAC_AMPLITUDE 255 // Amplitude of DAC voltage. If it's more than 256 will causes dac_output_voltage() output 0. +#define EXAMPLE_WAVE_PERIOD_SEC 3 // Switch wave every 3 senconds +#define EXAMPLE_DAC_CHANNEL DAC_CHANNEL_MASK_BOTH // DAC_CHANNEL_MASK_CH0 & DAC_CHANNEL_MASK_CH1 + +typedef enum { + DAC_SINE_WAVE, + DAC_TRIANGLE_WAVE, + DAC_SAWTOOTH_WAVE, + DAC_SQUARE_WAVE, + DAC_WAVE_MAX, +} dac_example_wave_type_t; + +/** + * @brief Use DMA to convert continuously + * + */ +void dac_continuous_by_dma(void); + +/** + * @brief Use timer to convert continuously + * + */ +void dac_continuous_by_timer(void); + +/** + * @brief Print the example log information + * + * @param conv_freq DAC conversion frequency + * @param wave_freq The frequency of the wave + */ +void example_log_info(uint32_t conv_freq, uint32_t wave_freq); diff --git a/examples/peripherals/dac/dac_continuous/main/dac_continuous_dma.c b/examples/peripherals/dac/dac_continuous/main/dac_continuous_dma.c new file mode 100644 index 0000000000..dd24e90fba --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/main/dac_continuous_dma.c @@ -0,0 +1,130 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "esp_check.h" +#include "dac_continuous.h" + +#define EXAMPLE_WAVE_FREQ_HZ 2000 // Default wave frequency 50 Hz, it can't be too high +#define EXAMPLE_CONVERT_FREQ_HZ (EXAMPLE_ARRAY_LEN * EXAMPLE_WAVE_FREQ_HZ) // The frequency that DAC convert every data in the wave array + +static uint8_t sin_wav[EXAMPLE_ARRAY_LEN]; // Used to store sine wave values +static uint8_t tri_wav[EXAMPLE_ARRAY_LEN]; // Used to store triangle wave values +static uint8_t saw_wav[EXAMPLE_ARRAY_LEN]; // Used to store sawtooth wave values +static uint8_t squ_wav[EXAMPLE_ARRAY_LEN]; // Used to store square wave values + +static const char *TAG = "dac continuous(DMA)"; +static const char wav_name[DAC_WAVE_MAX][15] = {"sine", "triangle", "sawtooth", "square"}; + +static void dac_dma_write_task(void *args) +{ + dac_channels_handle_t handle = (dac_channels_handle_t)args; + dac_example_wave_type_t wav_sel = DAC_SINE_WAVE; // Start from sine wave + + size_t buf_len = EXAMPLE_ARRAY_LEN; + + while (1) { + /* The wave in the buffer will be converted cyclicly + * but take care the data buffer need to be available during the conversion */ + switch (wav_sel) { + case DAC_SINE_WAVE: + ESP_ERROR_CHECK(dac_channels_write_cyclically(handle, (uint8_t *)sin_wav, buf_len, NULL, 1000)); + break; + case DAC_TRIANGLE_WAVE: + ESP_ERROR_CHECK(dac_channels_write_cyclically(handle, (uint8_t *)tri_wav, buf_len, NULL, 1000)); + break; + case DAC_SAWTOOTH_WAVE: + ESP_ERROR_CHECK(dac_channels_write_cyclically(handle, (uint8_t *)saw_wav, buf_len, NULL, 1000)); + break; + case DAC_SQUARE_WAVE: + ESP_ERROR_CHECK(dac_channels_write_cyclically(handle, (uint8_t *)squ_wav, buf_len, NULL, 1000)); + break; + default: + break; + } + /* Switch wave every EXAMPLE_WAVE_PERIOD_SEC seconds */ + vTaskDelay(pdMS_TO_TICKS(EXAMPLE_WAVE_PERIOD_SEC * 1000)); + wav_sel++; + wav_sel %= DAC_WAVE_MAX; + ESP_LOGI(TAG, "%s wave start", wav_name[wav_sel]); + } +} + +static void dac_init_channel(dac_channel_mask_t mask, dac_conti_config_t *conti_cfg, dac_channels_handle_t *dac_handle) +{ + dac_channels_handle_t handle = NULL; + dac_channels_config_t cfg = { + .chan_sel = mask, + }; + /* Allocate the channel group */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); + /* Enable the channels in the group */ + ESP_ERROR_CHECK(dac_channels_enable(handle)); + /* Initialize DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_init_continuous_mode(handle, conti_cfg)); + /* Start the DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(handle)); + + *dac_handle = handle; +} + +/* Unused DAC de-initialize example, to show how to delete the DAC resources */ +static void __attribute__((unused)) dac_deinit_channel(dac_channels_handle_t dac_handle) +{ + /* Stop the DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_disable_continuous_mode(dac_handle)); + /* Deinitialize the DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_deinit_continuous_mode(dac_handle)); + /* Disable the DAC channels */ + ESP_ERROR_CHECK(dac_channels_disable(dac_handle)); + /* Delete the channel group */ + ESP_ERROR_CHECK(dac_del_channels(dac_handle)); +} + +static void example_generate_wave(void) +{ + uint32_t pnt_num = EXAMPLE_ARRAY_LEN; + + for (int i = 0; i < pnt_num; i ++) { + sin_wav[i] = (uint8_t)((sin( i * CONST_PERIOD_2_PI / pnt_num) + 1) * (double)(EXAMPLE_DAC_AMPLITUDE) / 2 + 0.5); + tri_wav[i] = (i > (pnt_num / 2)) ? (2 * EXAMPLE_DAC_AMPLITUDE * (pnt_num - i) / pnt_num) : (2 * EXAMPLE_DAC_AMPLITUDE * i / pnt_num); + saw_wav[i] = (i == pnt_num) ? 0 : (i * EXAMPLE_DAC_AMPLITUDE / pnt_num); + squ_wav[i] = (i < (pnt_num / 2)) ? EXAMPLE_DAC_AMPLITUDE : 0; + } +} + +void dac_continuous_by_dma(void) +{ + dac_channels_handle_t chan12_handle; + dac_conti_config_t conti_cfg = { + .freq_hz = EXAMPLE_CONVERT_FREQ_HZ, + /* Assume the data in buffer is 'A B C D E F' + * DAC_CHANNEL_MODE_SIMUL: + * - channel 0: A B C D E F + * - channel 1: A B C D E F + * DAC_CHANNEL_MODE_ALTER: + * - channel 0: A C E + * - channel 1: B D F + */ + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' + .desc_num = 10, + }; + /* For Continuous(DMA) Mode, only one group can access the DMA periphral, + * which means the two channels can't be initialized to DMA mode separately */ + dac_init_channel(DAC_CHANNEL_MASK_BOTH, &conti_cfg, &chan12_handle); + + example_log_info(EXAMPLE_CONVERT_FREQ_HZ, EXAMPLE_WAVE_FREQ_HZ); + + /* Generate the data buffer, the data is a sawtooth wave every 256 point, + * With the the data frequency at 20 KHz, the sawtooth wave frequency is about 20 KHz / 256 = 78.125 Hz */ + example_generate_wave(); + + /* Start to convert wave */ + xTaskCreate(dac_dma_write_task, "dac_dma_write_task", 4096, chan12_handle, 5, NULL); +} diff --git a/examples/peripherals/dac/dac_continuous/main/dac_continuous_main.c b/examples/peripherals/dac/dac_continuous/main/dac_continuous_main.c new file mode 100644 index 0000000000..ce7f86960e --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/main/dac_continuous_main.c @@ -0,0 +1,89 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "driver/adc.h" +#include "esp_check.h" +#include "dac_continuous.h" + +/** + * There are two ways to convert digital data to analog signal continuously: + * - Using a timer: setting DAC voltage periodically in the timer interrupt + * in this way, DAC can achieve a relatively low conversion frequency + * but it is not a efficient way comparing to using the DMA + * - Using DMA: tansmitting the data buffer via DMA, + * the conversion frequency is controlled by how fast it is transmitted by DMA + * in this way, the conversion frequency can reach sevral MHz, + * but it can't achieve a very low conversion frequency because it is limited by the DMA clock source + * Generally, recommand to use DMA, if the DMA peripheral is occupied or the required conversion frequency is very low, + * then use timer instead + */ +#define EXAMPLE_DAC_CONTINUOUS_BY_TIMER 0 +#define EXAMPLE_DAC_CONTINUOUS_BY_DMA 1 +#define EXAMPLE_DAC_CONTINUOUS_MODE EXAMPLE_DAC_CONTINUOUS_BY_DMA + +/* ADC configuration */ +#if CONFIG_IDF_TARGET_ESP32 +#define EXAMPLE_DAC_CHAN0_ADC_CHAN ADC2_CHANNEL_8 // GPIO25, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_9 // GPIO26, same as DAC channel 1 +#define EXAMPLE_DAC_CHAN0_IO (25) // DAC channel 0 io number +#define EXAMPLE_DAC_CHAN1_IO (26) // DAC channel 1 io number +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_12 +#elif CONFIG_IDF_TARGET_ESP32S2 +#define EXAMPLE_DAC_CHAN0_ADC_CHAN ADC2_CHANNEL_6 // GPIO17, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_7 // GPIO18, same as DAC channel 1 +#define EXAMPLE_DAC_CHAN0_IO (17) // DAC channel 0 io number +#define EXAMPLE_DAC_CHAN1_IO (18) // DAC channel 1 io number +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_13 +#endif +#define EXAMPLE_ADC_ATTEN ADC_ATTEN_DB_11 + +_Static_assert(EXAMPLE_DAC_AMPLITUDE < 256, "The DAC accuracy is 8 bit-width, doesn't support the amplitude beyond 255"); + +static const char *TAG = "dac continuous"; + +void example_log_info(uint32_t conv_freq, uint32_t wave_freq) +{ + ESP_LOGI(TAG, "--------------------------------------------------"); + ESP_LOGI(TAG, "DAC continuous output by %s", EXAMPLE_DAC_CONTINUOUS_MODE ? "DMA" : "Timer"); + ESP_LOGI(TAG, "DAC channel 0 io: GPIO_NUM_%d", EXAMPLE_DAC_CHAN0_IO); + ESP_LOGI(TAG, "DAC channel 1 io: GPIO_NUM_%d", EXAMPLE_DAC_CHAN1_IO); + ESP_LOGI(TAG, "Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE"); + ESP_LOGI(TAG, "DAC conversion frequency (Hz): %d", conv_freq); + ESP_LOGI(TAG, "DAC wave frequency (Hz): %d", wave_freq); + ESP_LOGI(TAG, "--------------------------------------------------"); +} + +static void adc_monitor_task(void *args) +{ + /* Set the ADC channels, these channels are connected to the DAC channels internally */ + ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN0_ADC_CHAN, EXAMPLE_ADC_ATTEN)); + ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_ATTEN)); + + int chan1_val = 0; + int chan2_val = 0; + while (1) { + /* Read the DAC output voltage */ + ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN0_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan1_val)); + ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan2_val)); + printf("DAC channel 0 vaule: %4d\tDAC channel 1 vaule: %4d\n", chan1_val, chan2_val); + vTaskDelay(pdMS_TO_TICKS(500)); + } +} + +void app_main(void) +{ +#if EXAMPLE_DAC_CONTINUOUS_MODE == EXAMPLE_DAC_CONTINUOUS_BY_DMA + /* Output 2 kHz waves using DMA */ + dac_continuous_by_dma(); +#else + /* Output 50 Hz waves using timer interrupt */ + dac_continuous_by_timer(); +#endif + /* Create ADC monitor task to detect the voltage on DAC pin every 500 ms */ + xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); +} diff --git a/examples/peripherals/dac/dac_continuous/main/dac_continuous_timer.c b/examples/peripherals/dac/dac_continuous/main/dac_continuous_timer.c new file mode 100644 index 0000000000..c575723834 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/main/dac_continuous_timer.c @@ -0,0 +1,113 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/queue.h" +#include "driver/gpio.h" +#include "driver/adc.h" +#include "driver/gptimer.h" +#include "esp_log.h" +#include "dac_continuous.h" + +#define EXAMPLE_TIEMR_RESOLUTION 1000000 // 1MHz, 1 tick = 1us +#define EXAMPLE_WAVE_FREQ_HZ 50 // Default wave frequency 50 Hz, it can't be too high +#define EXAMPLE_CONVERT_FREQ_HZ (EXAMPLE_ARRAY_LEN * EXAMPLE_WAVE_FREQ_HZ) // The frequency that DAC convert every data in the wave array +#define EXAMPLE_TIMER_ALARM_COUNT (EXAMPLE_TIEMR_RESOLUTION / EXAMPLE_CONVERT_FREQ_HZ) // The count value that trigger the timer alarm callback + +static const char *TAG = "dac continuous(timer)"; +static const char wav_name[DAC_WAVE_MAX][15] = {"sine", "triangle", "sawtooth", "square"}; +static dac_channels_handle_t dac_handle; + +static uint8_t sin_wav[EXAMPLE_ARRAY_LEN]; // sine wave values +static uint8_t tri_wav[EXAMPLE_ARRAY_LEN]; // triangle wave values +static uint8_t saw_wav[EXAMPLE_ARRAY_LEN]; // sawtooth wave values +static uint8_t squ_wav[EXAMPLE_ARRAY_LEN]; // square wave values + +/* Timer interrupt service routine */ +static bool IRAM_ATTR on_timer_alarm_cb(gptimer_handle_t timer, const gptimer_alarm_event_data_t *edata, void *user_data) +{ + static uint32_t point_cnt = 0; // For counting the output points of one wave + static uint32_t index = 0; // The current index of the wave buffer + static dac_example_wave_type_t wav_sel = DAC_SINE_WAVE; // Start from sine wave + + // Switch wave every EXAMPLE_WAVE_PERIOD_SEC sencond + if (point_cnt < EXAMPLE_CONVERT_FREQ_HZ * EXAMPLE_WAVE_PERIOD_SEC) { + switch (wav_sel) { + case DAC_SINE_WAVE: + ESP_ERROR_CHECK(dac_channels_set_voltage(dac_handle, sin_wav[index])); + break; + case DAC_TRIANGLE_WAVE: + ESP_ERROR_CHECK(dac_channels_set_voltage(dac_handle, tri_wav[index])); + break; + case DAC_SAWTOOTH_WAVE: + ESP_ERROR_CHECK(dac_channels_set_voltage(dac_handle, saw_wav[index])); + break; + case DAC_SQUARE_WAVE: + ESP_ERROR_CHECK(dac_channels_set_voltage(dac_handle, squ_wav[index])); + break; + default: + break; + } + point_cnt++; + index++; + index %= EXAMPLE_ARRAY_LEN; + } else { + wav_sel++; + wav_sel %= DAC_WAVE_MAX; + point_cnt = 0; + index = 0; + ESP_EARLY_LOGI(TAG, "%s wave start", wav_name[wav_sel]); + } + return false; +} + +static void example_generate_wave(void) +{ + uint32_t pnt_num = EXAMPLE_ARRAY_LEN; + for (int i = 0; i < pnt_num; i ++) { + sin_wav[i] = (uint8_t)((sin( i * CONST_PERIOD_2_PI / pnt_num) + 1) * (double)(EXAMPLE_DAC_AMPLITUDE) / 2 + 0.5); + tri_wav[i] = (i > (pnt_num / 2)) ? (2 * EXAMPLE_DAC_AMPLITUDE * (pnt_num - i) / pnt_num) : (2 * EXAMPLE_DAC_AMPLITUDE * i / pnt_num); + saw_wav[i] = (i == pnt_num) ? 0 : (i * EXAMPLE_DAC_AMPLITUDE / pnt_num); + squ_wav[i] = (i < (pnt_num / 2)) ? EXAMPLE_DAC_AMPLITUDE : 0; + } +} + +void dac_continuous_by_timer(void) +{ + gptimer_handle_t gptimer = NULL; + gptimer_config_t timer_config = { + .clk_src = GPTIMER_CLK_SRC_DEFAULT, + .direction = GPTIMER_COUNT_UP, + .resolution_hz = EXAMPLE_TIEMR_RESOLUTION, // 1MHz, 1 tick = 1us + }; + ESP_ERROR_CHECK(gptimer_new_timer(&timer_config, &gptimer)); + dac_channels_config_t dac_cfg = { + .chan_sel = EXAMPLE_DAC_CHANNEL, + }; + ESP_ERROR_CHECK(dac_new_channels(&dac_cfg, &dac_handle)); + ESP_ERROR_CHECK(dac_channels_enable(dac_handle)); + + example_log_info(EXAMPLE_CONVERT_FREQ_HZ, EXAMPLE_WAVE_FREQ_HZ); + example_generate_wave(); + + gptimer_alarm_config_t alarm_config = { + .reload_count = 0, + .alarm_count = EXAMPLE_TIMER_ALARM_COUNT, + .flags.auto_reload_on_alarm = true, + }; + gptimer_event_callbacks_t cbs = { + .on_alarm = on_timer_alarm_cb, + }; + ESP_ERROR_CHECK(gptimer_register_event_callbacks(gptimer, &cbs, NULL)); + ESP_ERROR_CHECK(gptimer_set_alarm_action(gptimer, &alarm_config)); + ESP_ERROR_CHECK(gptimer_enable(gptimer)); + ESP_ERROR_CHECK(gptimer_start(gptimer)); +} diff --git a/examples/peripherals/dac/dac_continuous/pytest_dac_continuous.py b/examples/peripherals/dac/dac_continuous/pytest_dac_continuous.py new file mode 100644 index 0000000000..1460667fed --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/pytest_dac_continuous.py @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import pytest +from pytest_embedded import Dut + + +@pytest.mark.esp32 +@pytest.mark.generic +def test_dac_continuous_example_with_12bit_adc(dut: Dut) -> None: + dut.expect('I \\(([0-9]+)\\) dac continuous: --------------------------------------------------', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC continuous output by DMA', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC channel 0 io: GPIO_NUM_25', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC channel 1 io: GPIO_NUM_26', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC conversion frequency \\(Hz\\): ([0-9]+)', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC wave frequency \\(Hz\\): ([0-9]+)', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: --------------------------------------------------', timeout=10) + dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10) + + +@pytest.mark.esp32s2 +@pytest.mark.generic +def test_dac_continuous_example_with_13bit_adc(dut: Dut) -> None: + dut.expect('I \\(([0-9]+)\\) dac continuous: --------------------------------------------------', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC continuous output by DMA', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC channel 0 io: GPIO_NUM_17', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC channel 1 io: GPIO_NUM_18', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC conversion frequency \\(Hz\\): ([0-9]+)', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC wave frequency \\(Hz\\): ([0-9]+)', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: --------------------------------------------------', timeout=10) + dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10) diff --git a/examples/peripherals/dac/dac_continuous/sdkconfig.defaults b/examples/peripherals/dac/dac_continuous/sdkconfig.defaults new file mode 100644 index 0000000000..83e2dfa154 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/sdkconfig.defaults @@ -0,0 +1 @@ +CONFIG_ADC_DISABLE_DAC=n diff --git a/examples/peripherals/dac/dac_cosine_wave/CMakeLists.txt b/examples/peripherals/dac/dac_cosine_wave/CMakeLists.txt new file mode 100644 index 0000000000..85484ad64e --- /dev/null +++ b/examples/peripherals/dac/dac_cosine_wave/CMakeLists.txt @@ -0,0 +1,6 @@ +# The following lines of boilerplate have to be in your project's CMakeLists +# in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(dac_cosine_wave) diff --git a/examples/peripherals/dac/dac_cosine_wave/README.md b/examples/peripherals/dac/dac_cosine_wave/README.md new file mode 100644 index 0000000000..372b450db1 --- /dev/null +++ b/examples/peripherals/dac/dac_cosine_wave/README.md @@ -0,0 +1,70 @@ +| Supported Targets | ESP32 | ESP32-S2 | +| ----------------- | ----- | -------- | + +# DAC Constant Example + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +## Overview + +This example shows the basic usage of outputting cosine wave by the DAC driver. The cosine wave is generated by the hardware cosine wave generator in the DAC module. + +This example will output cosine wave on both channels. + +## How to use the Example + +### Hardware Required + +* A development board with ESP32 or ESP32-S2 SoC + - Note that some ESP32-S2 DevKits have LED on it which is connected to GPIO18 (same pin as DAC channel2), so the output voltage of DAC channel 1 can't go down due the this LED. +* (Optional) An oscilloscope to monitor the output wave + +### Configure the Project + +There is a macro `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` in the example to choose whether put the two DAC channels into a same group + + - If `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 1, DAC channel 0 and channel 2 can be set to different cosine wave (but the frequency are same) by their own group handle. + - If `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 0, DAC channel 0 and channel 2 will be set to a same cosine wave by the same group handle. + +### Build and Flash + +Build the project and flash it to the board, then run monitor tool to view serial output: + +``` +idf.py -p PORT flash monitor +``` + +(Replace PORT with the name of the serial port to use.) + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. + +## Example Output + +The DAC channels can be read by ADC channels internally. The ADC read period is 100 ms, the following log is the raw ADC value read from the DAC channels. But since the ADC sample-rate might be lower than the DAC cosine period, the sampling value can only indicate that the voltage is changing. + +``` +DAC channel 0 vaule: 647 DAC channel 1 vaule: 1728 +DAC channel 0 vaule: 2112 DAC channel 1 vaule: 2166 +DAC channel 0 vaule: 778 DAC channel 1 vaule: 2483 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 1922 +DAC channel 0 vaule: 238 DAC channel 1 vaule: 1282 +DAC channel 0 vaule: 3187 DAC channel 1 vaule: 2609 +DAC channel 0 vaule: 627 DAC channel 1 vaule: 1068 +DAC channel 0 vaule: 3168 DAC channel 1 vaule: 2624 +DAC channel 0 vaule: 225 DAC channel 1 vaule: 1286 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 2083 +DAC channel 0 vaule: 89 DAC channel 1 vaule: 1934 +DAC channel 0 vaule: 3603 DAC channel 1 vaule: 1434 +DAC channel 0 vaule: 725 DAC channel 1 vaule: 2469 +DAC channel 0 vaule: 2277 DAC channel 1 vaule: 960 +DAC channel 0 vaule: 1306 DAC channel 1 vaule: 2670 +DAC channel 0 vaule: 1670 DAC channel 1 vaule: 899 +DAC channel 0 vaule: 3189 DAC channel 1 vaule: 2609 +DAC channel 0 vaule: 86 DAC channel 1 vaule: 1459 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 2258 +... +``` + +If monitoring the DAC channels with an oscilloscope, there will be two same cosine waves at 1000 Hz if `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 0, and two cosine waves with opposite phase and different amplitude at 8000 Hz if `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 1. diff --git a/examples/peripherals/dac/dac_cosine_wave/main/CMakeLists.txt b/examples/peripherals/dac/dac_cosine_wave/main/CMakeLists.txt new file mode 100644 index 0000000000..400ee7ff1c --- /dev/null +++ b/examples/peripherals/dac/dac_cosine_wave/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRCS "dac_cosine_wave.c" + INCLUDE_DIRS ".") diff --git a/examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_wave.c b/examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_wave.c new file mode 100644 index 0000000000..4427fc9eb5 --- /dev/null +++ b/examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_wave.c @@ -0,0 +1,111 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "driver/dac_driver.h" +#include "driver/adc.h" +#include "esp_check.h" + +#define EXAMPLE_DAC_USE_SEPARATE_CHANNEL 1 // Whether to register two DAC channels in separate control group + +#if CONFIG_IDF_TARGET_ESP32 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_8 // GPIO25, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN2_ADC_CHAN ADC2_CHANNEL_9 // GPIO26, same as DAC channel 1 +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_12 +#elif CONFIG_IDF_TARGET_ESP32S2 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_6 // GPIO17, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN2_ADC_CHAN ADC2_CHANNEL_7 // GPIO18, same as DAC channel 1 +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_13 +#endif +#define EXAMPLE_ADC_ATTEN ADC_ATTEN_DB_11 + +static void adc_monitor_task(void *args) +{ + /* Set the ADC channels, these channels are connected to the DAC channels internally */ + ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_ATTEN)); + ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN2_ADC_CHAN, EXAMPLE_ADC_ATTEN)); + + int chan1_val = 0; + int chan2_val = 0; + while (1) { + /* Read the DAC output voltage */ + ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan1_val)); + ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN2_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan2_val)); + printf("DAC channel 0 vaule: %4d\tDAC channel 1 vaule: %4d\n", chan1_val, chan2_val); + vTaskDelay(pdMS_TO_TICKS(100)); + } +} + +static void dac_init_channel(dac_channel_mask_t mask, dac_cosine_config_t *cos_cfg, dac_channels_handle_t *dac_handle) +{ + dac_channels_handle_t handle = NULL; + dac_channels_config_t cfg = { + .chan_sel = mask, + }; + /* Allocate the channel group */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); + /* Enable the channels in the group */ + ESP_ERROR_CHECK(dac_channels_enable(handle)); + /* Initialize DAC cosine wave genarator */ + ESP_ERROR_CHECK(dac_channels_init_cosine_mode(handle, cos_cfg)); + /* Start to output the cosine wave */ + ESP_ERROR_CHECK(dac_channels_start_cosine_output(handle)); + + *dac_handle = handle; +} + +static void __attribute__((unused)) dac_deinit_channel(dac_channels_handle_t dac_handle) +{ + /* Stop outputting the cosine wave */ + ESP_ERROR_CHECK(dac_channels_stop_cosine_output(dac_handle)); + /* Deinitialize the cosine wave genarator */ + ESP_ERROR_CHECK(dac_channels_deinit_cosine_mode(dac_handle)); + /* Disable the DAC channels */ + ESP_ERROR_CHECK(dac_channels_disable(dac_handle)); + /* Delete the channel group */ + ESP_ERROR_CHECK(dac_del_channels(dac_handle)); +} + +void app_main(void) +{ +#if EXAMPLE_DAC_USE_SEPARATE_CHANNEL + dac_channels_handle_t chan1_handle; + dac_channels_handle_t chan2_handle; + /* Adopt different cosine wave configuration to the two DAC channel + * But take care that the two channels can only be configured to one frequence + * If they are differt, the latter frequency will cover the former one + * The example here will produce cosine wave at 8 KHz on both channels */ + dac_cosine_config_t cos1_cfg = { + .freq_hz = 1000, // It will be covered by 8000 in the latter configuration + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_0, + .scale = DAC_COSINE_NO_ATTEN, + }; + dac_cosine_config_t cos2_cfg = { + .freq_hz = 8000, + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_180, + .scale = DAC_COSINE_ATTEN_2, + }; + dac_init_channel(DAC_CHANNEL_MASK_CH0, &cos1_cfg, &chan1_handle); + dac_init_channel(DAC_CHANNEL_MASK_CH1, &cos2_cfg, &chan2_handle); + xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); +#else + dac_channels_handle_t chan12_handle; + dac_cosine_config_t cos_cfg = { + .freq_hz = 1000, // 130 Hz ~ 200 KHz + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_0, + .scale = DAC_COSINE_NO_ATTEN, + }; + dac_init_channel(DAC_CHANNEL_MASK_BOTH, &cos_cfg, &chan12_handle); + xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); +#endif +} diff --git a/examples/peripherals/dac/dac_cosine_wave/pytest_dac_cosine_wave.py b/examples/peripherals/dac/dac_cosine_wave/pytest_dac_cosine_wave.py new file mode 100644 index 0000000000..1a3cebd4ad --- /dev/null +++ b/examples/peripherals/dac/dac_cosine_wave/pytest_dac_cosine_wave.py @@ -0,0 +1,35 @@ +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import pytest +from pytest_embedded import Dut + + +@pytest.mark.esp32 +@pytest.mark.generic +def test_dac_cosine_wave_example_with_12bit_adc(dut: Dut) -> None: + res = [] + for _ in range(20): + res.append(dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10)) + + chan1_val = [] + for val in res: + chan1_val.append(int(val.group(2))) + + assert min(chan1_val) < 300 + assert max(chan1_val) > 3500 + + +@pytest.mark.esp32s2 +@pytest.mark.generic +def test_dac_cosine_wave_example_with_13bit_adc(dut: Dut) -> None: + res = [] + for _ in range(20): + res.append(dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10)) + + chan1_val = [] + for val in res: + chan1_val.append(int(val.group(2))) + + assert min(chan1_val) < 600 + assert max(chan1_val) > 7000 diff --git a/examples/peripherals/dac/dac_cosine_wave/sdkconfig.defaults b/examples/peripherals/dac/dac_cosine_wave/sdkconfig.defaults new file mode 100644 index 0000000000..83e2dfa154 --- /dev/null +++ b/examples/peripherals/dac/dac_cosine_wave/sdkconfig.defaults @@ -0,0 +1 @@ +CONFIG_ADC_DISABLE_DAC=n diff --git a/examples/peripherals/i2s/i2s_adc_dac/README.md b/examples/peripherals/i2s/i2s_adc_dac/README.md deleted file mode 100644 index 027dac5450..0000000000 --- a/examples/peripherals/i2s/i2s_adc_dac/README.md +++ /dev/null @@ -1,94 +0,0 @@ -| Supported Targets | ESP32 | -| ----------------- | ----- | - -# I2S Built-in ADC/DAC Example - -(See the README.md file in the upper level 'examples' directory for more information about examples.) - -In this example, we configure I2S to work in I2S_ADC and I2S_DAC modes and then: -* recording sound from ADC, -* playing the recorded sound, -* playing an audio file in flash via DAC. - -#### Note: -The `tools` directory contains `generate_audio_file.py` script for generating audio files: - - * The script provides an example of generating audio tables from `.wav` files. - * In this example, the `wav` file must be in 16k/16bit mono format. - * The script will bundle the `wav` files into a single table named `audio_example_file.h`. - * Since the ADC can only play 8-bit data, the script will scale each 16-bit value to a 8-bit value. - * The script will covert all signed values into unsigned values because only positive values will be output by the ADC. - -## How to Use Example - -### Hardware Required - -* A development board with ESP32 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.) -* A USB cable for power supply and programming -* A microphone (with amplifier) and one or two speaker(s) for testing. - -The following is the hardware connection: - -|hardware|module|GPIO| -|:---:|:---:|:---:| -|Microphone|ADC1_CH0|GPIO36| -|speaker(R)|DAC1|GPIO25| -|speaker(L)|DAC2|GPIO26| - -### Configure the Project - -``` -idf.py menuconfig -``` - -* Set the flash size to 4 MB under Serial Flasher Options. -* Select "Custom partition table CSV" and rename "Custom partition CSV file" to "partitions_adc_dac_example.csv". - -(Note that you can use `sdkconfig.defaults`) - -### Build and Flash - -Build the project and flash it to the board, then run monitor tool to view serial output: - -``` -idf.py -p PORT flash monitor -``` - -(To exit the serial monitor, type ``Ctrl-]``.) - -See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. - -## Example Output - -Reset your development board. The application it will first record the sound through the microphone. Then it will play the recorded sound, and finally a piece of audio stored in the flash. The following is the output log: - -``` -partiton addr: 0x00110000; size: 2097152; label: storage -Erasing flash -partiton addr: 0x00110000; size: 2097152; label: storage -Erase size: 323584 Bytes -I2S: PLL_D2: Req RATE: 16000, real rate: 1004.000, BITS: 16, CLKM: 83, BCK: 60, MCLK: 83.333, SCLK: 32128.000000, diva: 64, divb: 21 -Sound recording 5% -Sound recording 10% -... -Sound recording 97% -Sound recording 102% -playing: 0 % -playing: 1 % -playing: 2 % -... -playing: 96 % -playing: 97 % -playing: 98 % -Playing file example: -I2S: PLL_D2: Req RATE: 16000, real rate: 1004.000, BITS: 16, CLKM: 83, BCK: 60, MCLK: 83.333, SCLK: 32128.000000, diva: 64, divb: 21 -``` - -## Troubleshooting - -* Program upload failure - - * Hardware connection is not correct: run `idf.py -p PORT monitor`, and reboot your board to see if there are any output logs. - * The baud rate for downloading is too high: lower your baud rate in the `menuconfig` menu, and try again. - -For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/peripherals/i2s/i2s_adc_dac/main/CMakeLists.txt b/examples/peripherals/i2s/i2s_adc_dac/main/CMakeLists.txt deleted file mode 100644 index 61fac40e63..0000000000 --- a/examples/peripherals/i2s/i2s_adc_dac/main/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -idf_component_register(SRCS "app_main.c" - INCLUDE_DIRS ".") diff --git a/examples/peripherals/i2s/i2s_adc_dac/main/app_main.c b/examples/peripherals/i2s/i2s_adc_dac/main/app_main.c deleted file mode 100644 index 7fa073b51e..0000000000 --- a/examples/peripherals/i2s/i2s_adc_dac/main/app_main.c +++ /dev/null @@ -1,303 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Unlicense OR CC0-1.0 - */ - -/* ADC/DAC are not supported in the new I2S driver, but still available in the legacy I2S driver for backward compatibility - * Please turn to the dedicated ADC/DAC driver instead */ -#pragma message("ADC/DAC on ESP32 will no longer supported via I2S driver") - -#include -#include -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "spi_flash_mmap.h" -#include "esp_err.h" -#include "esp_log.h" -#include "esp_partition.h" -#include "driver/i2s.h" -#include "audio_example_file.h" -#include "esp_rom_sys.h" -#include "driver/adc.h" -#include "esp_adc_cal.h" - -#if CONFIG_IDF_TARGET_ESP32 -static const char* TAG = "ad/da"; -#define V_REF 1100 -#define ADC1_TEST_CHANNEL (ADC1_CHANNEL_7) - -#define PARTITION_NAME "storage" - -/*--------------------------------------------------------------- - EXAMPLE CONFIG ----------------------------------------------------------------*/ -//enable record sound and save in flash -#define RECORD_IN_FLASH_EN (1) -//enable replay recorded sound in flash -#define REPLAY_FROM_FLASH_EN (1) - -//i2s number -#define EXAMPLE_I2S_NUM (0) -//i2s sample rate -#define EXAMPLE_I2S_SAMPLE_RATE (16000) -//i2s data bits -#define EXAMPLE_I2S_SAMPLE_BITS (16) -//enable display buffer for debug -#define EXAMPLE_I2S_BUF_DEBUG (0) -//I2S read buffer length -#define EXAMPLE_I2S_READ_LEN (16 * 1024) -//I2S data format -#define EXAMPLE_I2S_FORMAT (I2S_CHANNEL_FMT_RIGHT_LEFT) -//I2S channel number -#define EXAMPLE_I2S_CHANNEL_NUM ((EXAMPLE_I2S_FORMAT < I2S_CHANNEL_FMT_ONLY_RIGHT) ? (2) : (1)) -//I2S built-in ADC unit -#define I2S_ADC_UNIT ADC_UNIT_1 -//I2S built-in ADC channel -#define I2S_ADC_CHANNEL ADC1_CHANNEL_0 - -//flash record size, for recording 5 seconds' data -#define FLASH_RECORD_SIZE (EXAMPLE_I2S_CHANNEL_NUM * EXAMPLE_I2S_SAMPLE_RATE * EXAMPLE_I2S_SAMPLE_BITS / 8 * 5) -#define FLASH_ERASE_SIZE (FLASH_RECORD_SIZE % FLASH_SECTOR_SIZE == 0) ? FLASH_RECORD_SIZE : FLASH_RECORD_SIZE + (FLASH_SECTOR_SIZE - FLASH_RECORD_SIZE % FLASH_SECTOR_SIZE) -//sector size of flash -#define FLASH_SECTOR_SIZE (0x1000) -//flash read / write address -#define FLASH_ADDR (0x200000) - - -/** - * @brief I2S ADC/DAC mode init. - */ -void example_i2s_init(void) -{ - int i2s_num = EXAMPLE_I2S_NUM; - i2s_config_t i2s_config = { - .mode = I2S_MODE_MASTER | I2S_MODE_RX | I2S_MODE_TX | I2S_MODE_DAC_BUILT_IN | I2S_MODE_ADC_BUILT_IN, - .sample_rate = EXAMPLE_I2S_SAMPLE_RATE, - .bits_per_sample = EXAMPLE_I2S_SAMPLE_BITS, - .communication_format = I2S_COMM_FORMAT_STAND_MSB, - .channel_format = EXAMPLE_I2S_FORMAT, - .intr_alloc_flags = 0, - .dma_buf_count = 6, - .dma_buf_len = 256, - .use_apll = 1, - }; - //install and start i2s driver - i2s_driver_install(i2s_num, &i2s_config, 0, NULL); - //init DAC pad - i2s_set_dac_mode(I2S_DAC_CHANNEL_BOTH_EN); - //init ADC pad - i2s_set_adc_mode(I2S_ADC_UNIT, I2S_ADC_CHANNEL); -} - -/* - * @brief erase flash for recording - */ -void example_erase_flash(void) -{ -#if RECORD_IN_FLASH_EN - printf("Erasing flash \n"); - const esp_partition_t *data_partition = NULL; - data_partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, - ESP_PARTITION_SUBTYPE_DATA_FAT, PARTITION_NAME); - if (data_partition != NULL) { - printf("partiton addr: 0x%08"PRIx32"; size: %"PRIu32"; label: %s\n", data_partition->address, data_partition->size, data_partition->label); - } - printf("Erase size: %d Bytes\n", FLASH_ERASE_SIZE); - ESP_ERROR_CHECK(esp_partition_erase_range(data_partition, 0, FLASH_ERASE_SIZE)); -#else - printf("Skip flash erasing...\n"); -#endif -} - -/** - * @brief debug buffer data - */ -void example_disp_buf(uint8_t* buf, int length) -{ -#if EXAMPLE_I2S_BUF_DEBUG - printf("======\n"); - for (int i = 0; i < length; i++) { - printf("%02x ", buf[i]); - if ((i + 1) % 8 == 0) { - printf("\n"); - } - } - printf("======\n"); -#endif -} - -/** - * @brief Reset i2s clock and mode - */ -void example_reset_play_mode(void) -{ - i2s_set_clk(EXAMPLE_I2S_NUM, EXAMPLE_I2S_SAMPLE_RATE, EXAMPLE_I2S_SAMPLE_BITS, EXAMPLE_I2S_CHANNEL_NUM); -} - -/** - * @brief Set i2s clock for example audio file - */ -void example_set_file_play_mode(void) -{ - i2s_set_clk(EXAMPLE_I2S_NUM, 16000, EXAMPLE_I2S_SAMPLE_BITS, 1); -} - -/** - * @brief Scale data to 16bit/32bit for I2S DMA output. - * DAC can only output 8bit data value. - * I2S DMA will still send 16 bit or 32bit data, the highest 8bit contains DAC data. - */ -int example_i2s_dac_data_scale(uint8_t* d_buff, uint8_t* s_buff, uint32_t len) -{ - uint32_t j = 0; -#if (EXAMPLE_I2S_SAMPLE_BITS == 16) - for (int i = 0; i < len; i++) { - d_buff[j++] = 0; - d_buff[j++] = s_buff[i]; - } - return (len * 2); -#else - for (int i = 0; i < len; i++) { - d_buff[j++] = 0; - d_buff[j++] = 0; - d_buff[j++] = 0; - d_buff[j++] = s_buff[i]; - } - return (len * 4); -#endif -} - -/** - * @brief Scale data to 8bit for data from ADC. - * Data from ADC are 12bit width by default. - * DAC can only output 8 bit data. - * Scale each 12bit ADC data to 8bit DAC data. - */ -void example_i2s_adc_data_scale(uint8_t * d_buff, uint8_t* s_buff, uint32_t len) -{ - uint32_t j = 0; - uint32_t dac_value = 0; -#if (EXAMPLE_I2S_SAMPLE_BITS == 16) - for (int i = 0; i < len; i += 2) { - dac_value = ((((uint16_t) (s_buff[i + 1] & 0xf) << 8) | ((s_buff[i + 0])))); - d_buff[j++] = 0; - d_buff[j++] = dac_value * 256 / 4096; - } -#else - for (int i = 0; i < len; i += 4) { - dac_value = ((((uint16_t)(s_buff[i + 3] & 0xf) << 8) | ((s_buff[i + 2])))); - d_buff[j++] = 0; - d_buff[j++] = 0; - d_buff[j++] = 0; - d_buff[j++] = dac_value * 256 / 4096; - } -#endif -} - -/** - * @brief I2S ADC/DAC example - * 1. Erase flash - * 2. Record audio from ADC and save in flash - * 3. Read flash and replay the sound via DAC - * 4. Play an example audio file(file format: 8bit/8khz/single channel) - * 5. Loop back to step 3 - */ -void example_i2s_adc_dac(void*arg) -{ - const esp_partition_t *data_partition = NULL; - data_partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, - ESP_PARTITION_SUBTYPE_DATA_FAT, PARTITION_NAME); - if (data_partition != NULL) { - printf("partiton addr: 0x%08"PRIx32"; size: %"PRIu32"; label: %s\n", data_partition->address, data_partition->size, data_partition->label); - } else { - ESP_LOGE(TAG, "Partition error: can't find partition name: %s\n", PARTITION_NAME); - vTaskDelete(NULL); - } - //1. Erase flash - example_erase_flash(); - int i2s_read_len = EXAMPLE_I2S_READ_LEN; - int flash_wr_size = 0; - size_t bytes_read, bytes_written; - - //2. Record audio from ADC and save in flash -#if RECORD_IN_FLASH_EN - char* i2s_read_buff = (char*) calloc(i2s_read_len, sizeof(char)); - uint8_t* flash_write_buff = (uint8_t*) calloc(i2s_read_len, sizeof(char)); - i2s_adc_enable(EXAMPLE_I2S_NUM); - while (flash_wr_size < FLASH_RECORD_SIZE) { - //read data from I2S bus, in this case, from ADC. - i2s_read(EXAMPLE_I2S_NUM, (void*) i2s_read_buff, i2s_read_len, &bytes_read, portMAX_DELAY); - example_disp_buf((uint8_t*) i2s_read_buff, 64); - //save original data from I2S(ADC) into flash. - esp_partition_write(data_partition, flash_wr_size, i2s_read_buff, i2s_read_len); - flash_wr_size += i2s_read_len; - esp_rom_printf("Sound recording %u%%\n", flash_wr_size * 100 / FLASH_RECORD_SIZE); - } - i2s_adc_disable(EXAMPLE_I2S_NUM); - free(i2s_read_buff); - i2s_read_buff = NULL; - free(flash_write_buff); - flash_write_buff = NULL; -#endif - - uint8_t* flash_read_buff = (uint8_t*) calloc(i2s_read_len, sizeof(char)); - uint8_t* i2s_write_buff = (uint8_t*) calloc(i2s_read_len, sizeof(char)); - while (1) { - - //3. Read flash and replay the sound via DAC -#if REPLAY_FROM_FLASH_EN - for (int rd_offset = 0; rd_offset < flash_wr_size; rd_offset += FLASH_SECTOR_SIZE) { - //read I2S(ADC) original data from flash - esp_partition_read(data_partition, rd_offset, flash_read_buff, FLASH_SECTOR_SIZE); - //process data and scale to 8bit for I2S DAC. - example_i2s_adc_data_scale(i2s_write_buff, flash_read_buff, FLASH_SECTOR_SIZE); - //send data - i2s_write(EXAMPLE_I2S_NUM, i2s_write_buff, FLASH_SECTOR_SIZE, &bytes_written, portMAX_DELAY); - printf("playing: %d %%\n", rd_offset * 100 / flash_wr_size); - } -#endif - - //4. Play an example audio file(file format: 8bit/16khz/single channel) - printf("Playing file example: \n"); - int offset = 0; - int tot_size = sizeof(audio_table); - example_set_file_play_mode(); - while (offset < tot_size) { - int play_len = ((tot_size - offset) > (4 * 1024)) ? (4 * 1024) : (tot_size - offset); - int i2s_wr_len = example_i2s_dac_data_scale(i2s_write_buff, (uint8_t*)(audio_table + offset), play_len); - i2s_write(EXAMPLE_I2S_NUM, i2s_write_buff, i2s_wr_len, &bytes_written, portMAX_DELAY); - offset += play_len; - example_disp_buf((uint8_t*) i2s_write_buff, 32); - } - vTaskDelay(100 / portTICK_PERIOD_MS); - example_reset_play_mode(); - } - free(flash_read_buff); - free(i2s_write_buff); - vTaskDelete(NULL); -} - -void adc_read_task(void* arg) -{ - adc1_config_width(ADC_WIDTH_BIT_12); - adc1_config_channel_atten(ADC1_TEST_CHANNEL, ADC_ATTEN_DB_11); - esp_adc_cal_characteristics_t characteristics; - esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_11, ADC_WIDTH_BIT_12, V_REF, &characteristics); - while(1) { - uint32_t voltage; - vTaskDelay(200 / portTICK_PERIOD_MS); - esp_adc_cal_get_voltage(ADC1_TEST_CHANNEL, &characteristics, &voltage); - ESP_LOGI(TAG, "%"PRIu32" mV", voltage); - } -} - -esp_err_t app_main(void) -{ - example_i2s_init(); - esp_log_level_set("I2S", ESP_LOG_INFO); - xTaskCreate(example_i2s_adc_dac, "example_i2s_adc_dac", 1024 * 2, NULL, 5, NULL); - xTaskCreate(adc_read_task, "ADC read task", 2048, NULL, 5, NULL); - return ESP_OK; -} -#endif diff --git a/examples/peripherals/i2s/i2s_adc_dac/partitions_adc_dac_example.csv b/examples/peripherals/i2s/i2s_adc_dac/partitions_adc_dac_example.csv deleted file mode 100644 index 2d35c54f86..0000000000 --- a/examples/peripherals/i2s/i2s_adc_dac/partitions_adc_dac_example.csv +++ /dev/null @@ -1,6 +0,0 @@ -# Name, Type, SubType, Offset, Size, Flags -# Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap -nvs, data, nvs, 0x9000, 0x6000, -phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 1M, -storage, data, fat, , 2M, diff --git a/examples/peripherals/i2s/i2s_adc_dac/pytest_i2s_adc_dac.py b/examples/peripherals/i2s/i2s_adc_dac/pytest_i2s_adc_dac.py deleted file mode 100644 index 2a9af29b7b..0000000000 --- a/examples/peripherals/i2s/i2s_adc_dac/pytest_i2s_adc_dac.py +++ /dev/null @@ -1,15 +0,0 @@ -# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD -# SPDX-License-Identifier: CC0-1.0 - -import pytest -from pytest_embedded import Dut - - -@pytest.mark.esp32 -@pytest.mark.generic -def test_i2s_adc_dac_example(dut: Dut) -> None: - dut.expect('partiton addr: 0x([0-9a-fA-F]+); size: ([0-9]+); label: storage', timeout=30) - dut.expect_exact('Erasing flash', timeout=30) - dut.expect('partiton addr: 0x([0-9a-fA-F]+); size: ([0-9]+); label: storage', timeout=30) - dut.expect('Erase size: ([0-9]+) Bytes', timeout=30) - dut.expect('I \\(([0-9]+)\\) ad/da: ([0-9]+) mV', timeout=30) diff --git a/examples/peripherals/i2s/i2s_adc_dac/sdkconfig.defaults b/examples/peripherals/i2s/i2s_adc_dac/sdkconfig.defaults deleted file mode 100644 index 6e9a6a59e2..0000000000 --- a/examples/peripherals/i2s/i2s_adc_dac/sdkconfig.defaults +++ /dev/null @@ -1,7 +0,0 @@ -CONFIG_PARTITION_TABLE_CUSTOM=y -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions_adc_dac_example.csv" -CONFIG_PARTITION_TABLE_FILENAME="partitions_adc_dac_example.csv" -CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y -# ADC/DAC are only supported in the legacy driver, suppress the warnings while using the legacy driver -CONFIG_I2S_SUPPRESS_DEPRECATE_WARN=y -CONFIG_ADC_SUPPRESS_DEPRECATE_WARN=y diff --git a/examples/peripherals/wave_gen/README.md b/examples/peripherals/wave_gen/README.md deleted file mode 100644 index 9feefb4c48..0000000000 --- a/examples/peripherals/wave_gen/README.md +++ /dev/null @@ -1,112 +0,0 @@ -| Supported Targets | ESP32 | -| ----------------- | ----- | - -# Wave Generator Example - -(See the README.md file in the upper level 'examples' directory for more information about examples) - -This example demonstrates how to implement a software controlled signal generator by utilizing the DAC and Timer Group drivers. All waveforms demonstrated in this example are generated by software. - -Users can connect DAC output channel to their devices and use it as a simple analog signal output source. - -## How to use this example - -### Hardware Required - -* A development board with ESP32 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.) -* A USB cable for power supply and programming -* Target device or oscilloscope (not required) - -Make sure the DAC output pin (which is the GPIO25 if channel 1 set, GPIO26 if channel 2 set) is connected to the target device correctly. - -### Configure the project - -Open the project configuration menu (`idf.py menuconfig`). - -In the `Example Configuration` menu: - -* Use `DAC Channel Num` to select the DAC number. -* Use `Waveform` to select the waveform type. - * Select `Sine` (*default*), `Triangle`, `Sawtooth` or `Square` wave type. -* Select `Wave frequency` from the available range. -* Set the `Enable output voltage log` if you want to print the log in the terminal. - -#### Wave frequency - -For this example, the range of frequency is from 1 kHz to 17 kHz. **3 kHz is selected by default.** - -If you modify the frequency, you will change the number of DAC output points. This will affect the smoothness of the curve as well. -Each output point value is calculated by the DAC resolution of 8-bits (0~255). All of these raw values are stored in an array. - -Based on the given frequency, the number of DAC output points for each cycle can be calculated through the following formula: -```num_of_output_points = 1000000(us)/(7 us * frequency)``` - -For example, with high frequency, 20 kHz will generate only 10 output points; the curve will be edgy. - -On the other hand, 500 Hz, a relative low frequency, will result in many DAC output points and the array will not be able to store all of the generated data. - -Thus, there will be less output points per cycle in higher frequency, and more points in lower frequency. - -After the raw value calculation, the real output voltage can be converted through the following formula (VDD is 3.3 V): - -```points_voltage = (VDD * DAC_OUTPUT / 255)``` - -The voltage is within the range of 0~3300 mV. - -#### Enable output voltage log - -**Disabled selected by default.** - -If enabled, the expected voltage of each point will be printed on the terminal. - -### Build and Flash - -Build the project and flash it to the board, then run the monitor tool to view the serial output: - -Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. - -(To exit the serial monitor, type ``Ctrl-]``.) - -See the Getting Started Guide for all the steps to configure and use the ESP-IDF to build projects. - -* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) - -## Example Output - -If an oscilloscope is available, the target wave will be displayed in it after running this example. - -#### Sine: -![Sine](image/sine.png) -#### Triangle: -![Triangle](image/triangle.png) -#### Sawtooth: -![Sawtooth](image/sawtooth.png) -#### Square: -![Square](image/square.png) - -The output log will be shown in the terminal as the following (if `Enable output voltage log` is enabled): - -``` -I (318) Wave generator: DAC output channel: 1 -I (318) Wave generator: GPIO:25 -I (328) Wave generator: Waveform: Sine -I (328) Wave generator: Frequency(Hz): 3000 -I (338) Wave generator: Output points num: 47 - -I (438) Wave generator: Output voltage(mV): 1656 -I (538) Wave generator: Output voltage(mV): 1863 -I (638) Wave generator: Output voltage(mV): 2083 -I (738) Wave generator: Output voltage(mV): 2290 -I (838) Wave generator: Output voltage(mV): 2484 -I (938) Wave generator: Output voltage(mV): 2678 -I (1038) Wave generator: Output voltage(mV): 2834 -I (1138) Wave generator: Output voltage(mV): 2976 -I (1238) Wave generator: Output voltage(mV): 3092 -I (1338) Wave generator: Output voltage(mV): 3183 -.... - -``` - -## Troubleshooting - -For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/peripherals/wave_gen/image/sawtooth.png b/examples/peripherals/wave_gen/image/sawtooth.png deleted file mode 100644 index 20d6c38c324652984460859fb1d761261c181f82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47422 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

Rfl8HMf4{+Ad-elg>wdIxc@@jVs#C0y_ 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 O7(8A5T-G@yGywpQ;bp4; diff --git a/examples/peripherals/wave_gen/image/sine.png b/examples/peripherals/wave_gen/image/sine.png deleted file mode 100644 index ed5a3177e39f8980b9e506beaa54b01b8f972d81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50835 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 DrwgiZ diff --git a/examples/peripherals/wave_gen/image/square.png b/examples/peripherals/wave_gen/image/square.png deleted file mode 100644 index 57535395a0144428e8b11cc6bd021b27a8052a70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45087 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

Ox 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 TI>niRfq}u()z4*}Q$iB}Xg;DH diff --git a/examples/peripherals/wave_gen/image/triangle.png b/examples/peripherals/wave_gen/image/triangle.png deleted file mode 100644 index b742ece1478ac0a6b3b92811da13afe297a0356c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49953 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%0D@0Q${r9Uq&ebUvY=X-nm{5xhl%T#|g&UYx9 z0x~&s+M=Z)9vusOmG7@y{bTONDQ)u3=U=jlxo5Q*7I?8Gg|AKe7d$DU*@#Uoks-)! z!i5v;ZQbTyy*QrNE*HH2n8jynWF0HFOZSV5m)N((sY?1aJifBjCvKNuo8_^WtYXXh zjGsuF@rKrk^{h4t|8+=IY3|vQyM{}r9juwxyZUlL=!8>MjjWOlb$?Z#eOE63zC}FZ z-;_&2UEA_ED0M$r=-ZsQudu4|DgRBIV+UqR6o^dST)AxGt%#n+pOOs@f)h+W8GaXz z=*wv`n-Kc@A!lCK{m$vW%eht^|Fi4qmRQvd2TTPrj(t_jm9m<5Zp*{zuinY*UVGru z5lh*(TRA;!h23HOEs8Z_W0F;7{$Vv6pkBbL?Io3vcXxBXP)2O zVZ|HHy7Gwff=iE*vo%%v)~tEaEmxJ{VPKwVQMXO;jN- zqxFUfJUNLD-CDPzr8Yz)ACSm6%y7Qh6^BI5EH7~O-P@)$-|z9O9WjC7ofGXRFitdE4+;Xm!=a8^uUW-Hy7jYV z`tSMN&{^c@xy07eO#7LH+J-~B9S+uTnWw}hACS0lj=}WWw^d<>B@EbZ865bmzj6(E z=f=p+)y`PMDLy;=r>EgMzr$1Kdvyp&&du+TzxC*-yZ*Ww(?-#Itbcxr^cjQv3@()m z+}JAQmK+THwW~|6^Wf^f^)a!DKNK2!M5W5--`o55)!W^Q+*VHIh6{4#FE?l&RlW8& z!Ttl!JHzGH&QlLhIwBEn8B@4lSb6!W4HBml?5-ZW>bUcg^#Y!Q{;E%>w;NAR+U zt!vl|E^_#CUak4E;UcS*Q~AczdAY1%|Mn$Lgw+fOPD(6Tw`d_dN9NM-Se9zRi17Ul zEbY^BXIBXQd3}9-^@)`cvtQ_a`|(yV#~RKjiVL9jDS2>@Pi=S~&H* zL!HWV(cVA1)HW#SuV%fbzCDBK4S)27yKmLEA2gXCm%!?t>z53zY!+BDTdeh-ZE}Nk zzvPnRhVxjix$764`p0wn{knv|Z;W}$cK&=*w^A%(`}V_2M6EYzN1O|}SAO~a_ism) z_e!t&qazW1EYyzq=R~vheuqO1re^kj{g`i8_iy#{2t|tzdoO=}e*W`Ki#(OKoi!)F zom|@^s}j=78m0bm&JRD=aP1ANf>Ni#s<_4+wiT;0HmutByUWZwF(Bb#d1m;cbtyk2 zbk<$lDj2cj{+`KQUMAIB&3FFZ9OM6DZ;tcS^Lq+YW1bpMkk9-K@&BaHUB}vX?Px09 zZ?dOUegF4bWy2K7>bIgg!V$mKE>(f@GuY!*1`e^V%KN83<(kI1=G1x)@kY~{joJ}E zH`h3%9Nd?_g3VyU{npeA&@jE4x#Lst$@Q#T7as4{Qrl2-&&2h0*~|lzrigHFUM(8& z`sW4?u&F(a$qQJSudtg4t$nm*op<2VoBHz;_nuqNk^07RPv)f<>8SMAk3URg3%R%{ z{LP=TV;njGhmXpB^SgaubMX0FD=yQ+N-)NYx1!!+vr6LgU-$LPr1wkbH;-do)0!2%7zZ^ z2@lh=&cB=9_WY^K`(ROBrq^|hoS_Hi$*Fz&kg#^D{rmrw%BzLNKU*hms@%$?ojxsm z>E;!i7M@yuc8AfrPm(A4w^Twx_++JPbLrDr9sg1$N~mp6*l5M2lcDxP@%dyYt;^@d zT%t}szsjYP&USm5A+()yp_B2Imefz#nFq2IHvBL!tXy;Ll{)J*VM&l(lGWQ>4tq~z z{j6F4Ow?U!Rn4m&?Z;a48~=FBhNh><=T|dT2t>&Ld*r-^_x$OfHSeT56;I#DUZ0RF z8WG^JV}-;NU&H6P-TofRF(5#WQ_o`FE$-{b^ z?8OyDqmt_Ezh$w86-=|fT=i$!!c))hVDsnJT|(-%n>vph+!WQB;Bd@~=YyWT``4Z9EQikF%<{pRl{$3BTZ z{F}t2Jx8Osdmj96T@s?4xG4FcazdM&px;fAP!kCQw**eMx=rO0b}E{@zncB--cs9r zQ*@0mw~mjd-s}@^#d&Q0O6lj_40sxx9`m%|=wH8{Ia-I4beeyLz|&V#h@N=9-HwB| zJ{)R4ynKDv7Wdn`7QJsjUj9le`fcio@5%WEtloJkr~e=E0Ea_P_=auIZa;$OUtgYp z@QWwb_myv1!g8%#Twm`@{6G_7 zqZ*%{|I~EHe7zCR)#v~BG5$6Pkv2G6wKl_Vo!$Q$;jPV0&!4<{vBK=_t*JBZtiq=r zz8^9-=3+vrmeBnP5_Q&PAI}P1y(-YinsadK;spl-F9atSoKRV~VXN!wJNM5_{lBwE zB}g@J$?BN32ef=HMXu_#;hNvNnYlmNudy`2Nxdy^_qRDG7p`06I44A9pQ7Ovu@LFg z*PE(Rqi^$;%~~PV&H1bOoXg{vN_;a_mONg()cbEol#qQv@ly4$RLLi`*+HseV$5d) zT_2{2|M;xAJL~uXZTGM3|2H?@)_$JF9K1O${PvW0zK_>(ZmXPnKF%&&xp;2BR{fH% z6DKd`Iuw2G`uEd^fBu@pI&Yc$xzkZmowbttGrMEevyLV;{aavsv0_(8Pz%`J)lA(= zoXio&J{pF=-RzPi=X_-w_Zg3a7bpEY-HV=YTecoMkdG{c&Ux;zoPwr?nX z6LI?MoS%;?C%D=9&09AA-08k!r}9sC$80%rO9g&V^Cz!f3{*s74BhM4-s|6#Y|1a8jr#E7`OlY3-#~n>SMe@&h-7?tVnXvWcrKp?z zjh3v}>T2ffd_Ixs^%EV|1dnJB6WPfw)`|IECkLR1) z|KqTjHhr^UgY4P!Uw?l;eN{&!@|gdz1N{Ftzqx4t|8dg$fB*LDUSBME;M`N48JTl( zl1{6OcIJC9_+M`PyeUKHZp_NwdtX=0Ry26qBKw7XuHVr=zI-!Po?PGCv1V=k#fW!q zYl8cgV^y^&4bL5=`c?gn zS}(P<9r<7)Yp3s=Jh%Me1W%`j5!tWBOQl~=S*(@yb{x2o zd~-+9x~4ft<`fr+`g|9UKf-2s!d^Yx-CgvI=^Wc>i;J%|PmY-Vq>D{ib9s$(QpK#i zinz4*lci;hJT+KiqW7=34T^xk)#6kC{45E~k*+o{_@uGt_>VQ`x!Iat-iu9$b=cDD z#=}y4*E7MisYdkdiOLUuXU~4XDR{|iJ)g3TuepuBb*#_slZumDoK|f8+P$l{^i-he z)~Y~Fi}`v=-)`(E3bFrNQs3RStE|=e!+HC5#MTlR77Tr}~%n*U``HMRG>G}s~=WQ$fN*u`Gi z-pj|6BNQR~YrEQR;{(QeRkMN`>xUVuZfe~tYrP0JN(w2dUn?) z=B0a_;oUQ)JbrDPCSJQft6kf6TJxeLv;QC1ZD+AZ`?on1u6(^9W-8zIRdPEQE!;2s zCHJl**x9@O&dlYTsUotdwn98H@$I54`8zjub98rDXDwa6ctcevpZ_ky#?mVn#0m8i>o1Pg^OMxwkf8-7EIE3rsr~9drvz74yGrp|7v>FiVW* z+q;iU44xYDwzDFx8J@0N z-Gg;!FBvAR5uXogr1IS>t|%< zG9GN~wz6=XUw71CuV{vuBsT&%0Mw`uS@;D~s5> z&VQdyOV63Q@!i+I7j0r*9+49fy=T@@qI}(B_5OtG|4zqG%bxZlXNSy`)onaa%w5-I zY*<%+vdcB;%?D-+_Ji+cf0Tdn)akSQw%64~w^#LT){eL;a_)x1%mcFuRoXIp8-KE1 zyT!4lhM9Rc#~R)r>+GiN>SEJ~oEqjNt#?o7do1s7#ydGDz5Xfai?7jNUgMt^eYJ48 zctq8-@Xc4(G~Qcbuz1I>1s_$)r+t!UZ~5x>RQcpbiB%@vKB_!+%Nj#Jh%V$?P`@Nm z@=SX5)YTXm)UhoVn%e<(K!drBIho>WwH0btm0|k z-BgWT&I`{iiCvXn@xIq9`NVeK&{^7Zeg7|NjXl`4vHU{i(#vo8eW$vx-V+E61S#3OY$pw z7M?gUd5dVojG&k~ecx`e%-g%m@5^oGsdc_yzdGG(-1zwJ)RgO7_~tNGL2>hm0M^b& zTRkhcsYG1jUaheI&nl1e0&F}63^@+^(Yq}KwB}l*eEzsJw^7jk?XB|0_C>5(Pj>Ph z3BA{F%l&6{JY(kie^0N@HqZZ%@;Q8c+)K9g2aioKEZ~t>+2YBcDll94>66#$Zyh&; zl+1ZlK1b-}x7x*P4}7|9e%^rXOW+Ql1m5N>*{jA6IMzfo8*{9YF#DWtw4nTLEK8W0 zA2&0oXY(m@=ia?Xqkjf`%o693S9xL_CM_A_;g}xjzg#?G#>&()C2OxTPZbOOwQGvK zK-{GRqB?(zrpm4Ob8mYUPv`{0WwX7w6Yau143$gQHRqNU{aRsFx@F}}=7p1%=bvcR z*4_5!qutwEWvr*u(>vNfce&MV-#-6NSlsR+xvi``$D<5tCQLXVk((0W%{n*Lc5Yn4 z)Qd$&qHOw^YGxj=dbDD_nDOPctkcdP<6%1Oo;uH$=Z)S5vxR#C=1A|;Juv%fklz5jWZ{)T^FmM?Go=J54O z)ymWrO=k@6{+iTweyUi6)%AmB)|Ry)bFFS&dD9r+xlZ-suk`)@Dt<1BjCuEn=i}jR zReVRTUR!9|uO4plY4-}j2*ZoQpPA!6URvziWY{P=&p<&VCgGkU&x^;IGY?2HUAD?R z%m8xq{V(W_p2wc~L^w!i!za+HpQQ^LABH?%CLy$bZl8OU!1DWR-d{J|m&>GWlXxIx zM?(1fuM2)XY@hx8eSY1)Xm9z5G=S`0`MqED}`gh8mx!Njx+qoVHS3ZBV z_|R0IxX%tM%Z^WaS08hy`uMB4Jo2H-`^-$M6+-O)oS&58X}({Ik8j%lNX7R>8V_K;|CZ{v$2g)x~SyH1@5S6Lb;_$T49!wN2;_LYmWLyM{v)@iv%#m|kocp_i8 zzu{7l^8IrYjp}%8O_sRlUGn%bSHk6zvvR#cN6t5yH8uBsyUzQk_Py?k?Y&P)_A|`$IJTpe!E`Ie-s;HmFlc*?1(a@8~2PpkG!=S+kjIrL5eQ z>tmihUscrb^=fkUeYID7S{ssnom`jj@XMdbzjr2ynVnq{HaD))I+yj@)XA3rKL|5v zv;T=>(q^B1^asxwnpcRd4^?YSn%wmHaUJ z`IjA+R?NtLGFLr6cJJi5ZdX@czMA&j{bc_N86oU{tEwj{`{2W zzrNXy>ze%JQ+f|vI@M-%Y@$V#apLBVHj@*+QhoOiK4=jPy=Bn&)W7HGWXtwLQ_n^p zafogVWjUzTo7|8dQz9u6k*QJ5xyD3GyVvkQ$$PyGNgQY28w*(TAN#Yb)vHnU7u%+` z)%vMPuDAH3wJsHyl^S#((VSiK>a5RgmTB{Z{L9X~Nvo)*t56 zx0fuKTUK3wPgWvEF;2i}#Przimvf zW#-JO5V3iDj3un<4Q9|zxZuyzcT|Vz^{eT(v?G3WeLOqcyu7?TgTtjf_5ye)`Ms&X z{sssAwv_mW|+U+fT(|-2x<#^GPv&%j(iJ4ejz0|dOTk|be(YTpS?z#$&KX~Sq zTwbx|K$7)K^S367y1lDB#aVmL^mFm+9(F!AVdW;7kIQ`aq=kHYoqDS#&f)6WKQU8# zR{78MS=W?k5g)&I->QFI0_$&8{{3b8Lw4JO-8X*M`sr`@^~PoMmMUJRY_WCf2R3SL zxFqpiC?Yc?Oe#4+u2IxEqi#OqoNKk|7aqIYajxl)yHi*6TXNd{*n_`rrc1mj`h4>* zlTcI1Q>%+&vm}kRo z?Z&+2|CaTx^$_~Fc86Cm z?$3)?oe{je_V&ZYR%V9g_TjVJE-P1*zUMA`CGZM2NS1FnaLPSn;w;9w zd2i2enVEOjZ{~qhZ!R7>z~J{{cEyE{A`v@se|cS*TF`p%QC6&RqiA)xzy1HKTspS3 z=4XGeJ2-Vk-2dCmR=OLW%q=;(p|GBf|A=yY$abzBlU85-cABZo@#|%OE%$t;1IB@w zjjemW#~B5FZF{)IUR|p;TlV|$w%uhnkG{0rX~nC>mm(PP-TQFO{28`l@c)dwoR zolcKf|5@8f()#9!=YNzo`6T?z54xjrXYCDvSah6AEvw*(Ui~`~Lh+t^EhpCKfMxw6521 z+b!Oo9^W6CJ%94bWQB!*gxZD^ZV&VL)^7e<>l_fi;!t?R`DesH1N&E9(^Abut1H3}yA(|e*?4)^C(Xc*9h{A! zWx=if#MJ6-)=t9_m8?0@!J`)@)L#}O7Wl`!tctsg6YbRXc-HQX;>y_HG(ze3Rh54qOc zTslSu50;$XcgDkbgJ;6h*-0-G8jseUjYw_SZKm{GFke%AgLn>wv$NpUZO z-pe?H;t#qDk9@ekc*X2>sY{t94y^0FqHyts{KuP1+;>K4{+t@G7PU^=sA1WhRL|Sf zSg)$eFugt;U(>Pmp}BW-!yCzN$c%vQ`CU8eW$ON^uM1&qPOh`J_?FYz*7-!|rm^?+ zi`$hq%;K4KUvi--hfcIwVgnO*#gm?B{vIZ7-wa)#?uo7V-nyd9eGwy% zGppf|k_V29UoK_1%5QJ8_5Q1MS?no{TFYDIW*0BIbbiv?kG_A6rr*<-yuT&;{K>1C z0fh<`Mh&qCnK(m#ThG6y)h}}TXUw{g)@d{D_ixpX2(_HOrbxZ<>qU9P0WF8pt)b6EBEo0)H8lq7KE0kg)ivR+KJWg>Q|%k`pMd5Xf^;{?%`a8- z-*e(;%LJ~rqkrlQf?rIyVK8x{-W)mh{CPs6tO7l4*Z-WHnpa=2@6WrAQ~I|q8uLsQ zi#Xw3rRlJ=_-=t-<{Z`)C13r%%~?^k+*vnL;yJ*w6iYTz^XwOsK^hD)a5FX!^z{b&05 zPX3#X!MTgv!z7hA6vVczZtki(KEdGlN#ErYH=Ruj-%!AR{qN^3O!71Sez2NfHT}X; zL;K`}g3h}ZWmSzwcScY9>bLb&z{42r)3?{>?fdiT+3fthdw=(;IxKp0<=4mK)80Kc-I)%xnI-maZ(AHQBV-|_wD-QB8>UoK^s`p<9G<>0&A0ZZF&E-BFp`Lx)thkL(7 z>lxQw`~R(PkFPS5)RC^dwe`Pz?dxM9F@o2td&0L<=ThB(B zTw2PbZLG0DOejk%L-yxVhkxp9Vmy66|2|kP8Zl?Lsb+TEb_UUTkIv4I{{Ev<@R&zP z{m=dU%4z*)B~Ro}Sn+8!Psf|yF7e3<8$Ml*ZRqNMa=>!m)o4bUf7}6xsy;dqj#=|SYG4?9wniiWRLEf{*Z%Z@}pXw=Ndi`Kd!gibdSi%$e?5EuX-69I3x%j2x018vF_9Z$@0kuv=(H56KQDZGx3P< zsePvoip^nB?3r|ykJV{7Lj)%Gq%!vn?(rmu|^ zS#ap{x{6Cz^~G=BDpi`d;>SKdsm`dq-5smS-Dlr=-`jQO_2zsg#Sbr31z(E1oPIfX z*Q$qGCf{J$;PNug_49&5Tb+&0*X|M4ofE!i%GApjZDKOF1TSQg(348(>+KRcmVaDN zuO=XNZd}6M%??6EE4Ytr5sjEBmECiItLIuwuY`ochK?!jiBdX7$vn&{cEJgvi=`Ac zbZw0FJo*zfa=7TE!OCf$qLW3ly44$(g6DQzAFh$tz90yxTEX8|6=!hb+_9)zlL>Y*_I@@rK+0c~?Fh<#9~YxMTjbN^aek1%Az4 z%nP?w1W5Pol2Y1Wa=34AM{l0DapTqrGejbkc%B9;32Sw^THVW^KePD9!xb|12i4L& z9b;E-I(2}d(Um8dQ)kgGt;IeGq5&oj38D*jtp^5(?| z(FbBH1tKF{lqF{9@rIo&FFK*3xc{B&lT`;6*&M2vrdV6>|4-)*waEr`n|7HcEwEh0 z-Qg-dN7Z#}b*L4u7RQ?T^>JZ;*2%3mf4Omj_C1a!cKzD__r1$2(*555Uz@C~v?}6& z-oJY*9DYxF{Xh2FAMRUuiyVfDz^T2talK1z}7c*m#*2Y_@KMt&8;6SKVzpa zkNutR9bdu69me3H|G8jk;XF1`_CuGy9IcGZ*0KHf_M4LW9#`wFZ&|<9^IfZ*u5yrl z!qb}}@hQP!yT3bb{1LHSyz|U^HIb8%LRu#Ay3EWhVv2UMt?B|1E~TMvGjXKg*5#Ss z_xSXNa-OS>Sh0A;9N*>JOI8Z+DV^-B#u*)5(XoDQ{FU4_!F{V%TG~e~Qm%5gNB=tET%k~$~38vRm&zaBKSf+y3P9^!U|_SGydQ zOEihm3N&?DH2apU=(mi>EeC%6l$T0&kA7ZN+Vu8Z=!A~T3m!Ru=X&^p%ol=!u~h+i z8c8VqWb1XaR}v2-%Nq`Sn)qt*hd8Fw?xjimmt)m7XwAI%a$U};RqKrk6dJc$iE%41 zgX-*unY$iV&OD%I4w`)6*nu1%iPK&@U6iw**WuRs&l%@`uK00;MW(OXTSors^!R%p z(*Mkj3lV?%V&eh#uMwM`-1GPcz!=?Rm;2wBFo`FnGG5?%z-6_Z#gG2OMQ!`3o+09Jg?)Yk6sc=U6)H zmTNr%&FJhwp3ylHS@dvguN9jcmyY~P&=6E?9% zg;tL4a8Lf!m{N2?WuZVN_E>6Y(T>Pnul-}@$DM~vjpuw#efaah`WsgtFMf3^Htn%( zfG*Q(d%0iN^EaGqY1!ZvvZv1}a{m2NrA?kRXu>Yexu8VC5{W!JXW^~4XItR$10Ib}mFGGp{9JMF)k^V*sb@Yc zIbB?z+8kzkkiqjBleXafZ5=z$2}b1Zwkyv@@=#7O$U{F5@8;mn77zXX;MhIa2$z`k zUUwFUSzkErXlI+aH7v5Bzv~kp@4A0iR;;;vHOg+)RV`+wss)Eu_HDnp_MVuqOtPxh zve^brdvi*|7TvlPoA&43ii(LszfH^ECa&0F{kU9o^-H-nE#q>bGEnbhE9;eGpP!#M z-&pt}f#(}v`~KgpDk6OxU&Y^jcr_a~WwmLe9Cx~BZSXZFNeRsjH#B+Y6+V0@ICE** zmed7t389Y?cZHwdF;zCQ)IdNa;_!@z@8&2YN7k>$_iO(A`ubY?VuXYm+wV`;^;LhX zEUYnF(3vW``ObII!&RWRjdXH?c)i`K^7{Ri-`}ylXK6Wj|3mqqH;W%_mv|vqew2yf z-_>`u+B1x;ab)m5-42xM1( zae2Lj+Er1bb)Fvn4a`&K#U;opuzPkWvrgkr0Sz8ntzI6N5NdSUGa+=5Rrc2f2c*ny z_%dZntP(D9**e8uEX;E1wiELIQ=hE#u-JRx(Ve|MkIqH^T=8YIeC5B_E%)4y)~~s! zJh7yzuO=tJZdJq+k9v?dR3zOF26c8_U;QQ7FFD-w)5Fk3r`~4-KY6#JWZlo#7ePtz z&109QJ?zsHS2XQCK4-b((Z)9g^<_PG_Wt?!`{;M4kgM-svWAIT3x_=0$nTcl_>{jK z$+d?k=S4S$cD`D3_3Jv{M$?=PXG;4HNVUCUkqy*++TR*l@G@dgjg zDbw7X_M4SG^kU|?g(xL9iAZHft}phyr|;LbP4eHwE8m}N-?23>x^Zg%Wu?nJAC|1{ zuieWUCN;@zQs0(KzB~rkO_{QT`&S>dy8e|Zd+YAkoDrfCk5`@$jCdR*mEJoV6?u5Bz8!wP$jkrAGa%ndet+Fwwe` z*ROA+@afCk_o08EhWaf&mA$wv@QsZj6y_a`kS=CgWhhy0LKp2y#0{``UX;;;5n zxvi@jCb&$E4NzR`^IiPEq=UJfXrJzniAH5vHfBxb`>anKTU^AzV(#CZb*_=c(tb(s zmWd9_*FK$+{Cnb;4OMD_%f%yR+ME$Pw)lfb<5aao{l=+orA6QtDM#g2&!<}a&PrhWmHmA5;RP_JUCzm;j zH$_TLcKbSgzm19gkG4A|t4=A3hv#>6?K~FVGWBI%E7zuZ++XEwqkF?vZ2LC5?>?*O z6`u0>3G0q8W>Tr+mO1^kBIM;A&zG42XDuhp5s^`Ia|!a%V*Oik=|INTxyC;(bFYyR zQtNr>XjU%WJL^raOQi=LLZCO0e%>^=D4`y~O<`_Fryn}#ggEvofQ ziuroH_%E9$6;TUMz0|f(6AuY6eh{2jdddHz>YI-%Tt0I$BphD0zsLP)@&{W`(Qv1( zsJiv~I)fTL2|JGu#kC>lU$S0v6yDr@z^nM^Wbn9eY15@Prq!a-XH2Emh-1bS$Jz~| zHme^z;$3>|s?^?f3AtyzCjV$-dVTzVd9&#I_USV(vc%OYGX&rF_$(F{_%K$r;^}>V z`@1#&Yd@b`%)2b`<6Wr=&$s;lH?Oh(cjJMgXP`+xYi3A);Nt&gE?*Dxd#~I0Ug56D zwdmu_HdQyH?si^}_c6YHqWUINLaONQYqvlNv8Z>i^vi$$_A@`0?&q4Y;Z)ON^Rlcp zGrE4g?)bQZ=}N`Al>v-A;`}eWm_=0&v52iOXcV2NClc{6>2qFUf_URpwjI+CcrCVa z%oJ|CI<0*h(`wyq&fB+XZ8+Ai=bq5(UV2Av<+M-j2ei~S_$0V4_r2+xaPgUxXu&(P zto6Ret58Fs2!sOaa; zJEgev{k_nI>)fA~`{x*(nkKj6)PxsN%7KR0f7tcaJThabm+U6PJ4P1`*f`esgtT)%_T0Yk zz$?clzw-WX>lgYys|rncd%Er1R$)lhj{C3=f1Ct(Dqkb6?QjuTX28Z`&#XPPZ#iS zm79A1+4Ok39~?LOJ*%r0czvG{Y$YUGZ^F>nx_r)y!|ns8mZWSraLT20hrz3H3Db44iG>C4-~sQG;21aS0GEHonMs_iVG^&W#LX*gT=&p( z`_Bk=?lsSTsAo=iInVO?gH>?}zD_^-3_h`5>r+s@?%23he^v5VzpYdFXNUSE%skNL zCw)dp$0GX9|Jol8COW^*Br+Uojd^%K=9Xot`!NSe4zoQL{ONs}g?&$!EYN?Wxr2q{ zTY;3!9duCf&CazQ5?DGA5XR%fY z!($!qrtLZ_^d1UC=-X8lK3yGqkn6ncOx4N%t>xP6+NX!NF{uBwJ+!Z)@}(=wwS5VF zw|8^sJn+Bs$>#8j8F{w$=?rBGJb%t|v0j_=U}iSg8q30SJzZIv@+zwzgdPuHw+=MV z?tk~qL|*yJ3Y%HV-#k(B`6OWiVPum_TtYYEcaWXd9&*hp(u50M!@VdK3A?yFYUD+;oW$MDJLsPbxB-rg%jC{Os zgZ3&JhJ!O0SIo%sm1TV$x1#B}Cm;Bv zI^|nNb$KZ(!&Ro&-=)QAKwaTx}>$87;Ua>ZK+Q&J&znn?P2>EmH!Swpr z1rIN@$qT*Plo4Xd@Ih2DZ*SD4zkhiz-Oaq&wMv+0`AwscKV_n8_x{cLDXM7kgr#7Y z#tj|ksW%0SdT(zinEZ76{oLDIcP~1{^1l76TdT32argc82?zN(Uw-`9vD|!B#Qr{c zi~3)gH@DvZ`Q?8iN()vs@KvxbF-TsDgXtvBd{c)rJyHLS0qC~1S{ z>h)_QmaOiOUH!;>)2o%D5j*bJY}nD z>&J;QCw?!Bl|EorYNEEod{yhx{}mEm|IGjG4NNWSUcCL@R&~dx4fDA~%W@w~JbG~F zuFfbS=H$@&9Igvq8exIQkK|mr>RKgSw_M{|;IjESYd(qbS!_ITsG&0Xw+fT?oaUK( z{M{egpJmZzJ}uEWmGOyz;$N0)3|w8T*BEky%K|~(?tplk=iM#VUk#xNHou>4Zqr_J zJ}bLt;X$o07fxs<`OI`QT4Jsn47i7Vh4}tOQ-!c4e5q#`;#QK_Rn3=u6gX{^fH4> zg=MZ!zf9eKQ(E*J-@KB~{VjU~Q$IDY=a`w~bIUWp^1*T^*Iirz8@YOn0)=Xq6D}+Ra~E`y_Z)6||Uqx-F@;;YaC+cps&?VGjcwDKymWc2bhzIC zIgy#1ue-9C`%YiDw_-#22eV~=Vt1Rb^5$CoJzJ{Eu zWVsd=b&O-p+7)Si?{zoq>ie5{{hr2#U5jRI`)Jf?da^*K(Uf!5%)~RA8y1u%F?H14 zU*M#ro%GcxIX2;8Uge$zY}`Ecej+w}@{f7!9POWdZ*J$*`FFoLR;1tkkaF>~_LX}+ zXG%PIXwTmK>-1~4#fP#@J}_6Td60GAb@3_3reKbG-)~>*@7DZ&yGiM8?)=AFMML>M z{hDDE;$bMK-y-_HJp1&do)tWyYSMcqa#S8)*E?5g=P~C=Vbj;G2&?XA{o=+tE#W#B<_nW{nR@TJwtMCMk`HPjFPHrZdM4E-*CGG1V%MUgU#ITBX<0Qx)$tx@sGV+) zj9KQ*$6?8A>t^J=6J%Wx!D^qReNA=wN)Dm0G^bzMPQnq|Ut%2%`Qs$CzxzlW2Ss>t zp^(ezlGicc1tJdKi?*!PyQ#GyiqXQwdU@hYnaSI}&q>_1Gdo!KY57^L?gP7irN$;K zof*q=?O5v0An+EcvNNJOJ|cQI>@A;{P2oE*+3&dC(qB)kn7y5xc*Cni{^+gb+-|yJ z76XUbCQi}Iz3ZDjL;mTXZeoy8|M23dX728tp$Uu;(G0#(uUopxRj2Lc+AF+D>X=1x z;)g^QQ{HW>c3X$v5S)?s?iTBch@&iGPgGg2y|4fOJOAG|-Y^O2XFNCV{Q9EHu`*%m zjQjj)T(S$6|L?jW`CetV&10s1yE;)UM|6kPKAJ@;hMsE6TmjuU<+TVA#$CziVc`X?6>08nqj~_0N zKmJbgiR^PAPsx9>{9*Kcn>J&<`K6|VR5_hL2WRgPC#95zh!U19P6 z_Px2!m~Xe7T0iflW7ovI$Q81}rNr{LIvtIb)~|l%|Gk-^>73t+rrK1i{eM2W z1w53vT6X;$ivaiSx!Ox^+}{ey&5LyHcI^BV$|9y06Bv8&Kw6H}j=DQ4`@jAaI6ZaM z1)K6QWuNAP)?D(uV?Y#Z|%-^DkysPSJ@|=!}Y)?HVe^)J}?yC>K&{@Gk zdH*Z2&035K5mz`xIS<~PUMAph;U;J3hV?$`Wx0;5jYs#SUwbRH%{tt}@Oy?)a6?z9 zPeNeA(tS!Ul3&EHJrHl-F=NYD@u@q4MAry?{(bQA`UGF44ZGewJlb2F@4|gcFR$Qx z*I$-v@0?e&9}xLm5Oe=opKgw5gte3GeN)%anFpl!E4I4tJkqz}Cd)OgPxlzrHdMvr zPu7k&5gXxtaP@xcFQ#JqlD@D8+!7WJGTeWER?YgC{yXa81)UN;{_FA0*Zb^vt>VXd zM_=W$uRndY$e5{P`aU(g*)%55`N5mh#b?484*rk|ImkBK!hGQ)%~juZb!G>MeqKH)s*YRRK5ohOSKDB6A~r`j!Zzc*#)btm7qrju=UVAwAAP|q zTfFh;WzKgE$6R$*a7p}N&vR% zuv=NevU8e{5xDjY}QhCCxtY%JFyC0jKE~B06W^nf~i! zdhCO9TI+;5&qj!fc}|Up;3>IXywmH=P>?psb-z(-`O&OnWgBQ-UF+auS?{#$~7y0(gy}$TmvQ)+Qj78T@EK-YcOn4aHvdQFRsc^{I%ox|BF^jW3 z%ZqvHnpdy*qcv6Tr0G7_L;ReT=a*i7RuRJ2@E|QZ#K$~dNBB+2)th2hv&v^Oy0n%k zU;p9iJvr8T^Y;jez@to7KYumTxY9O_ulaadqm zHRr9BR?oPu^)a26eBU?wGxr*`Cnn+%z5%`YE$J~Owmu2H@@ahsr24aJ`hCim9+2v< z3GNT(T;qE}nr(hSLZhsEvgwoT;GW~sdiz`96{&g&{v@?k37Pil z{Mi;ue!tX%#P0r$FN(tM57e4P5MHk!yDz z*p>6oAll|J)5dxcyE6vY8lG{i*=lw!;9SXki|Z#YhcIQYuPlygWOZ7&@mpL{)Kkvs zoNLte-s#HKeprA00kgn=%L0Yo`&a(I`|wuyaiU69&LPo#N>3P9JO~f5+oQJPPnx#v z>J?vX)D@@BT^APby7ktfYYcqCmCy6unHYgbwQq_|wVB9xeETVB?c0mE`1Ty|44HHC zOtoY7+EoIftJ#ciKfEzryK;ZIw&;SSsinCOzm*+&TPpNM+e!Vc&8I%`2);?O=Fi0= zd{1QRZJ4z{>OM#Rp%=53Fa2mx_5DPm8cSF{kMWlKUI}Lnrm?V{OL=B1SaVIO?=DMN zzsP#-H6`n}e!aZb-79(Sw!d8hUURzH4*h>+p#0QhiTCbX2QF{@`{$VAh6?7KH+fV4 zT&r@~_Nc3B)_wV_3vydmu{Fn+i;5QY{?AjiHh7+Fzy9-V-ER#2ab34>Mt#h@{_jiM z_9&}fh8d4%CT`Z%S|Z(f?9BQ*TW>GQI%*tfc-Ob=tyhIh=*@H2UfJ|G=M`ONlhBKn zc5z)PWbK=u`{BaJttvX}S&ytPa?_K)(^D_LP)@%5^hYM|!#A$ai%;14XgO#`C9A-? znf2O(iyL<@kG0m@AW@UFc#8;1Bi4q7R2($EeD=La(%P+`)-TGsDtP;0 z{f9eSHP|&rdb`Y8?(@bBb)jn-~H}VefEV(+w8-~e?M8nwEb>ztqEJf zwtaK=0Vx}|lIhADjxCnDpRClxvlT)-PsCXRA8N^7UVB__ zx25L(-DgfHtU9x6YNEt$xlMVw?jcfb$=4Sz+Tn6~<3{Vb>+-HGj(WRD;eh+nZ4;-P7UZQ1|!OQ6cL{dT*Q(3K@Cf4ueaoh5(w#7ov|8BTluRUDfepHO)t zTlSYnh|Y#AN1iqNcOQ_l2;088X7j8(b)^P+u4kF z+=~5Fw(ROHW40x%)9!WGNSjB$Xf=wluATihE!*NPkV{k;82 z!r+d))thB=e4R7SO|4sAy753(UzV`?#s>;oa|(Zc)hPP=^}2b5=af7DWU`m9weMJ! zE57mCmIGSWMn|IFJz4*}tGtF;@zURKt7qr$TlsftiR~)6lAkNSTu+hsq1WBNN}EUS zIO9uh-ALD*5T3R`yjX7|n6D*>|5admpGD!5}KcQ>$`y zvr6OStH(LkuuL*^y`%eFJmM^8rqYI4i(g%T@Q!Kq{R?5yejIDA?qcVCp}3*X=_n6V zwn4bfq;k=SX7eLwu`7x2%!+%sMINQc6PCv)Ewdnt>Yrg0tYWnX|+fbsk#dqD7 z$=@2iW@aatHI^RXd6sO}$hyuaq43ZJiwhsMdT+9b{j_XYSjwM!|A5DllS)-76FP%L zUPd_vePR`h7C!v*Nb}qc%0IcST7&B!dA@rz@%Mx|L9&&6()Pv^4Igody>qtuTTyz= zqO3>irQP2fg{?vR8ullQ;P>}?;D<&E8zi`TMTHj^k&I{!Rz zo#7>I$?7*}j?V34v$(nC#FrZ(N1MVWE?jEgmcKysxaRC%!N)UZiwXzK;#lJwzTw9z znVY(-(N%4-yQb`aEZSK5>*K4F$2KZATivx{`?m1&>f?_%bYhphz1%as`A~<(h6hjn z{}L)V^)V@<$}9W#n#ZZT5mL#zU%$%?!hJBU*5gF{@%Xbr&yVf ze`pq&Y9TwZMNOkKfiFUV~r$2heGpG8) zT}BqM{hRH-bo^mCYIGtdc~56~_MA3em8f^V2Rnq!m(5ArGlx?`@YuQPNnh5<&X(S# zmwSK4Ol@7Gbx+#Z)jD>zsc+0)T=I;k$f8g1NRPCf!O4vurXTXty~%Tp*X`0tt@V(7 zfbZVDi`!ep`aD!u!icT!VKa+SaB2s`C8G{A-V%psp8vteGaS~enA;btxnae+3p#1d zmn#Y;tH(aqkm0dwG}hSQXRvOLqQP|zKl#?;sM+>yOxyv&Oxgb$MHGBE)-+w?3shCx zz{j{xC}rP)Rc|upy<%p$_V(@D*Vost_X@XcKKjAYY4Z|msgBtu7lJpg)jlSWFB*|C zS-Y-f{q(g=uW!H4tNZgY@#$rY(q`W`J|VupxXc#C&zw}rs(s@eLwfPLEe8(0-=%u@ z{k>diui}u~yZT+&107Rr-pIb6ey}gTX~nSv2X0h~KF_?quio%}-wL7R_3lSOZDgBX z+l$G5fwrsW#BDqFW5t*JumguT{j2!=_j|PTx~}hmp{CozW~%S|vJNzcooBzZbY1M; z|Ie$Z9Gg~>x#n8mKZOLV#DpITiMpaUpPrZ*_eJgUOpb!CC0uiNnOeyz>u#9y;EUR& zX?zoc=9SFvJ7jOSH$i22Yx2<#8a*We39{K7M>A$-Zwb)Z&{ZuTUs&E~T6f}&q2dOK zVx#8WWzLPIB3)?$5zRXvN$y;HVAtN#EBq$xU)}2_3R|9B#&blT&o*hxo+i_Zt{-=M z#UuVO&HgOfw$Jqnd*tJTcUG;8ix20Y+>~4%aDduAmVk@bS?utM6y(P92A2C{O(~u4Y-w9mvP~qv-{LPod=Y)DN7q5Pkec|cZB4e)qi>KZ%`ut5KvtB%8we#z) zuJvaxZa==x$;lx+#FC-OP)gLjW%K%ZR}Xg0opWIEbichRW~XDC1>W3Zm=;->5+SJ- zGxM2exc#z)qMwXH)>idzo$Pkh^8Wko4uuUSs}iQJ_1l}h{4%dW%(ib$T|un<4VMl8EzU+)#YI;+b0z+H)gD&*xMA9sms2(=$KGB4 z;>uU)#IIL99tj=>ofik%RAIY*-ul1a&a7QwGeec{j?~HZy-nZWzi-MaRf!Fp$S$?I zLS=#WDj%M@8E!}0^_=`I@;g6jmwn9$iM94JKNl-q^d#qd!b%hzTfTY*2N`{&#klN)M77|)LJrQ_cpm@mn%M|Nv?YI&PaP% z;6!$V;!WBSRoBn$=~q1)I-wvea$Q2Ko{0P-znoW#X7suR90`*0dwgqt$MkDU)+Jw_ z`8d5iX~qFAze&>PCKYUa{xq+1QXSLj*JUlB1i)YzDSwnHds89HgBObp-Z$_aiS2!T zWOrG9W9bpgLnZuT5zIR-?f&+J$$Lr9HRlk^M=29uNNARJ{n5Il(=6%Gtb5_H#4hVt zm;K40?Za=*GQH;afBRrv#Pjkp|J2fJVIie^ZLhQ)sQP`?Na;?esLf+gp^*_A_)+7} z)A;bl7?u*((u!es4bk3W&e%WyVnndyN{uGQF>sn{d-H_RWtOY_&(H_OCj8 zx#+fDbZY$Mdx{$@lxz;)jW2V2dbq$QHt=KmRF9A6?d?A_AHVb1dis}3qM^H9yR39; zWv?{8Tk|h+QQm%~-c|AXt99GU-^z!*=H=CR%*E8bGp}yLp&zFMzN+c>2QgCoNGR?Jl5e9ua2{gx9qHz*}P}oZtF1C zuyU5qr2#q{o=JCgXUH`^Rl1#Ny$3YLcxuN>-3_M#-bQ!7l+)S3)>Fma`1R2(ap8!E zoxF`prxyeq@or>Y{FcchSNcq*FZY@U9c7MNyJ~o}=4Q+6zoh?->6zh*u#<&MCR(;i zb_)-5zTeAfQ}yz0Y~Al!bN)mzD>;Tc>PIE8mcMN>E1hZ-va40DOigQU_P=YJ*yS>f zg+mz`_U()9@959rFykU3XImtj^Yf~P16s^8gI7BwY>Zr` zS{23{Rw)!Azjw#qC*ME=SWRCypEtPiboa&IOT!W#s{J(2zjx>E-Gz!-_x#u(s|3>j zsW81hEf^Ux;{RWNm2*ezz|P%kqXJF#vo;^7`dyaUBz}JGH@8JayZmzc99v!V zU;cZ@7O(N-&$?=!RV=y(mF8s3jMf_3g(;iA@Rfr;67a@v2lE{`%RJQ}0? zUZNvKe*W3%zAI*Zm&-N~78UB<`}_C%>0ftzPk8u!;U8TCzQ-qw%HIBoNiSNuGHq&q z{pXLL<86;~9sKy~>+9#|=fB>t`Idwl8)#dcqtjK7kDD?~*!|jdxqscht?=S9_nHSQ ztSvvYhN&~OXOyizFsnGAs7o~GGshavowLFcavx>QIB=^aYukf^Osg+{NEe9sap|Sk zm8mL%%}1~9a$|Zu`8MPAbz7>O%O|uSd}+~n;LvNQr}lDx-?S+_SnKy;!&a|Cn}d(J z!hT&`sT}x}Kb=QwpOn~v4-+-nTVE0>&IH>WXaf4lUu?%zpPvGw0Cc&IDy7jZJP z-(fV#-uR%X&Od&UoMM$#3JnX2d9>yx*(?h9_muaM;B$!(PKJX@96HNpyBQQMDRx>n zA1~Y+nN1cEMhO4!IHb6h@0_EG~#^SPoCGMb*>u8 z=8dBBZkX=*aC+-A`*&*{Mdi}(bep@LXj*J=?TC?3C{tUo37hDDYnS&HO6&jK%HYvz z@4D*yWctfE*+W^`YnjxZaP8ixwi{|8rn0%KW_NP! z-X`;Xns!9}y(`Y11!}9-`ZC+(?|sxS{Ye@$aBAR_FtNAhoW9a@?TEwEPp(h+DjXqx zrTpFl%@j*6b=I(Sg<$jjp$TU#C7w)wInNywRpq&tOchUrdK_lCrZs6MGaL6BzmPW? z8$PgJ+5G#d*ZPFJ{jw?{soUBQRQ*5yJ*N3lZqI?HZ%;OLD$gtVsIlhh_I=;a2WNho zuk<0uDM(mn!_%2@Kc*RM>~Wde@KB`J@u;z0)$zp}9BzI8U;Fv(_U^cc;)YT;Btmu_ zmy!M%E9daR{xsKz-TDch`nw-1GQ7FP&~`Te-?tsv|2NbFH}N;GaQO){KUomSjD+Ur%NUTmEo5r%uzts72{l6GVk0bXmeKN^h=gJQe7-$urjV zFz4aL8=5lnDl{i;R=E*)>!g0E%4De7b({@v6i&pI>v&I!9|=%7z`?t^t|5xbku{{qCx*Gx@Qu z{B^$5)j5+RnrE)qk^NX{ewxm;oTc`{SFgn_;LAP$nv&;O!(abV@mkySr)v-2*Oqgh zwlO^Z;H`g7?kCjtF$LYerTLG&@o1C#<1E%|4KITfHn1(2wT)Y@wJ|{cL=sc>szx8Z z4a**R9SHD#8FSfE@qvO0@4nRsxW3hisF%MrWLhn(tG2;PaCTmqdE-;(vM;WX3p@0Lr zl2>;6y_aoNv)U2%T=a-Z{`Ox#pWlhyE%Z`r)v0f%SLM5gt_(DC%yXTZH?90^7ki)8utV453mE z8%k`n{``u4va;sW=`h}W8?C#$lY=E0vL;uv%>AZqzWh;FvS7$3uN(`<*vYZ8-%giY z9iwaU|M9}Ni96$5L(OiSii!?&O!$~pvOgx@b*frpd*PG4&n7Ct3fmb6ywtTrcf}k$ z6(8f#=)v)!Y+&O;4O;y%rKr6cDx?h0KuA!%O8Y?*Ekk3$izQ&-$xpP{X_ zWQKpy`{}ROuDJBa;QHxxe~*{stl9!vH+H|TwxD_I!^)cnxdIp3zVwylyvqy4mKg_w7qejaS7E6h@yG zj0o=SOYgRX1jmkSf29pF75|>;F`aHNbU824cy-!LNft4=byq?YSVbq5W!+wG9{cKe z{-=NhU6m_3H8XDfEqT4fU)pPJR?ItLkK^&qo2kM&FH^;NHu^F0xZbgz zka}yQ7W1Dbt&4&|K7kfG*H^C)YWOXh>$=p`#4?93Uwf4a!`|%A*B8Ik+9i^(BcmR) zf%aNxg6b2&?hKa1<=)MqpXT0W6{}C3tU24@mdlc0sp^XG=*Fq%({zI5D=i-?HY;g{x5^YDr z^#@$jY+gIn2gP=rT$3E6PvyS!_{%l{%jo338voW=3rj_;8WvD(jPKLuO7nOt-3 zURE=6z}ln_%*Pfx?Rv^J?ayp&mag^>#}+4D-`5zw^O1DooT`nV%J0_Qh?}=^hZ1K~ z*Zn2Q{wse@6`Q@*By6WsS7EZ2pBTu=JPQjs z==S2sdAW(HGEEzF3{f zU{=>moLQ)cQ|ANc(+BIH+|+MsUpkd-sRwtXD*x^ecH)g&3lDP4mDu39EU;qAoy7tXcZ{eHM-^~q||M>0enN)^VJ}Oo@Hd;%hmmBI-WZT|L_X1tUu3q5>r!i_my+K)s+{@mwGkGGMKU2l7!>-*yOTh|n|&O8~ze|TqC zmiVr1ipT*s{wkL_7$qSzMU zqI{!hmq~=`eb5P+e|CvaJT1EBL=%g<*P^_ho0^|(Id()fmO9qX=Y2QrC(~;F36HnV zQr@sk>gp4wY^`-N2Aer`*yruv*?r(sqRd5Ow}h>!$5_OE_;{}<$xOA1;?nu4x$J*u z@YeS+Uv&=et8ZYj+v=;{vzS9?t_s)m)@heo|I17<+Yq;&;Wm7SLWCJt#K2BX7 zSLWg>@#lQ><0q5rB)07~WDd9En`yjS`;T+assD1i*p_ugM5}oI3bUf>v)$ZUDsQiByPvY_O8@;Q4<~pYTK3BS zp!Z*Q+b0sI^JFx=ej64=CMOzRkhv?q)hUVHk zOGG*|r{4Ki&9P?2x<&SEvlgFnmG6J8xS=4PZ{L*4?|S!MM|l>9Tw3^VX6GH*&U}YA z;Vs!WJEr~rVE^6x>7Ol2Zd-DdpGpw%TEQ^OVcPor`~FY7_p$>m z2}Ts1zPtVY&xg%6d|KbU40)41zyIZLiM(~YW8tg2`Mdr~g?M}^I(^sQ{KoN}@=JH0 z)>-R#RBuL}%&|g-`y~?T%C|Hej%tCAW6jP-D-pVd#k%~(-i(#YETR7Zhz-X?#WWsa{-# z)_iRn%k6(cMb2hnU)io{Q;$g;Xr6dr;hoQY+7X*SYOcS?uxe&8Z$(U!&G`rI2PR!# z#H?GETXU|VOX5jd&4NQK!{yGKNgqmnn7D3Z`DxRCl^>Lk&T0I#;38Abibpy#yl0Dr zOs~jdUe)XSR>o?Evl?gXVb3e}yAEijs08(%Ke+1W#hfK?qqff}Tqp{6 zY@ykLTPO0LyqG9sLcx0; z>l-G=ykuW=N$v37UWrxr{w}+{-tp*Rix$)Gi%ZI9E;U`Tgxg`!yu8-645F()nB4ua zXO8EycZnePw1lAV4i=TZV_a#mE@Mq$=w9o}Q@#VId>&rp4f;5M# zXu+jE*4gz_8Rd@6=3aAkT{yE(!rCAcorWNlWuZkAuUtF-_PLVYHBI+Y!PqSqV-h~T z2rK@$%~I>3oAaap4nMb)I!)zQkl3lL^-$or^_p{`y|RH5RhP}aFM6(_>qCYN(^R|F zmOGz0ut^xMo00uzLh2v$8HORu9G)eC&0YWJ=x- zbQ!eoS>Q>FALx|arZsEPcKdhrsxhrz^gkq2u2t|#)_I?=<=-~79GI2(!pEHT8qW&8 zu0)|m(d7P}_goW>2FPB&@1JnBIEiWXyu)F-0bNJ7c;&fo{aXBcXGeGGslZql@!T)M z5fz8^z6Jf++#S8Ju>ah$rIuPR|K7bn{rIk$|9?NtbGfr;XX(q9ENve3I`uSmDN{Ahmt@UGKuG>(P(mHwOGvq$;vkC#H%)WY?$12~Hus%~xlKh1d7 z*BRiTFgbVn{CxZP_iuCrCEnb9ymGFJ2;Vx$W_y4A4P7^))`w_rxMsa$Q%B2zS&f~` z7k_w~U6Xd8%z|e!#~O+J-&|`XRz3dpn{!Q--!jn%`Tx%zUtb>|-+Anif#Hqm`|C70 zdo!orDbZigdgOP3o8IvnamD|&M_%^YZ+!A@)=ByQmM41r+xPz4-d^;m@!)QY%cZ56 z(ILB@N>#gud}@&S!{0ph&c8qXsV3D6tNyfS9dz(8NV&;<)%p8G`*sJ`q@CH1HK#l& z`w;$?FWkrc>U2oP&o32Q?&Q`WUvgr5a|7H?Cyjm~goSC+%fhHR+ z-ePKE7B4Meeey-S&9k&sBtyu{sOeX?k?gXKb~_x)4KEnSAAA(J!!2QIibmY>sRz2g z7c5ofY}_iYZ1b3j!JlVs-=S*WthPFJ!3aK4pY7+qRy00cV0AFfzA@DQ+!?0TbtUY% zipxUHc-Vb)Ue9>CZ@t8hZA{!=bG+9aXZn9s@%{PRQVjEQMJHX{bN3a~rTLReomz7P zTdOoao^9ZIZh2O>ZKJr>Uv4AzOMNSnDp|d&I$Pg9V&4$4e^$i3SUK*z*Vk7Vyl&cU zmVY7dcIhJ1UM)eh9V<9jJYHbCuSu$_kjU5Az|oe~IWM$1wBTmyi|x^?Pq4A8?9Y|%S?XKfE)enQ^4g~g zKYkv*z2+19`JJ=lRRvGR+kZ5*>wMr67#-5tXC`{Kfh+RZdXA5shd0Wwe|I_>)9k$G z9rJ`Qo5Zzx4{qmg=h8oaY@N!>dmrU=e9XSt{rlcy)!%-40o(j-jz)b?c#C7th!*!M z_v~4s-CGl!$*2_zaz*k!=hN?1f9Bp^rgKK9rmFGkw2XNr+N@#GA?aDX$K%}--kMrH zlVYf8+$z3m^4Hyq4_xv&r@X;r)#RIJS;GwNjk(u6a*RBx!MwxoozA}FoEcjyIU0}F z8*S)*_gmZP-OQ=?LtfQKMlId6Z?0s3V}jw`PjR#M2E3g4te$(1_^Og={Ow%v+)9rl zKD?YfM=mFI-l>#~&f+OlOj7RL_sF?l=B zf<(sGb$4A7L_a4pt)8)KaoClvQyVvW^7HmgHe-HqGX0?dQ@47Q4Ey$XGjso2KCr*} zr`~*imh4Tjsd+n(&11Y;r26<{`=TP)PHeXRS)Q9_DyS%w4lJ zOU5bT<7ufk{O|AS+Ph9Hk6PQu$C&%yvZ5;W)cqo>{$pEQMc<|+ALLo_MUg-9Shhx? z{FXc4_7$3JeR#j_`-gR&duH~X-;=u7xWLuGgs;6T{@Q~#-G8MzkDdA~fBfp<3o#EF z58c@M^y;Dt?rVMBZd;XkmcLe8p;z{H`{~>2AA=Xpirp=7_2|04GmWp^I?EKY=F_YA zxV@F1+5FAwzrGTk6TUU!goH&Kzfe}Oz?%0O>Ya^~wQUVnEX~MR?((c=UR=V{2@~Wm zdnG*mUXeRd-2GuE>$R;Nci(v+gmrbO72jSkT|edJa)@&-ULIQKkq~< z>y`f0>g-u6zv9A59f1h{z190)=G}Z970tQs+Nv_0{3foP&z$os#1%R9?`_?_=+H}N zu`=Ff;|-JS8Xj)isu?mxYy12=aSyj@e_~@k%+49jd8XHW-`7LFGX-=O$;;jH<7vL^ z7Tq}Y-Rd1%+!92~rPgSuOb?XJxiE*1*MfNADOrt)I}mvP2?7Z6*q1z zy%NhRb}#^ZIvtnZy#xC`Exj(Pv!pSrQ}f}@81c;Ltj^;fH&1LSvQGO^4zXBCT#mlw6)@-uJ1O}U-k3t^vZ3E zob=ZuF>!~Kh(x4Hrmk(;{O={J*hx*Z3K2K%UpoTsEC}^6F5qaKD%UhM&1l2o158fu zZhhuh<8!Z1ZW;fQqfFV_oN5~s;-AGo6N;!>mN&Pc!@lLfqa6hn$MjD>X%ge_)8Unx z;qO?#Z}Rtti@4%uUP@W%ewC%|@`;=kAAUPNkypdK_Gr{@Ck< zg`Sp5R9WtZwcmHdW$xRbb0Ee!Ve74}+Klq%&9mA1 z!QdDt>$Qq!6 zQ8UfTzh%~kXJ$K++;=oBE&u$i_NjTr9iC_Xf)me}emZBH7tGCZ@06%@R;dI(6UYZF z{SCW{N?RX(ui^_ch~7K5eRtE=(1fePEBg1uem_&SLOr{2=e&S~xjnD$wj0MKB%ToF zT60&}kj+83ajWPm&Na>}%t3Qwu?y}T<~_Ri^nUC58jWW+&E@t@xw81tMuxS8;=bj( zqN4hSdiug~ZXKRvr^c(TcYaD;-ECItpFiVG$KLNRHa@U9 z0p9R)bX`L0a@DlXxI>PmaWbuy`h0ayT7B2NthZ%cx$gY$?ehQL{##n{)o%i9Z%KXyl_&shXZS4YsurV@|xw%=htz^xweZdEZY5L?uN~UtTt6Iy)Irm#+bA9 z)X{Z+udB}Se;u(lT8ts2;lU)gwW^CmTtD#t zgkjv9Th1(EZsrRQNS*xIS6g^}n$8r?HEVzHD{P2c%dHcr(x>-OjaRql!I!^|%h#D6 z_!hV@c+dOF?6l{-_Scf7O#1IcC#d}Utuw8*!lX}Urfg=;>N3MsSEpq&Epu%>JS zG&yGN?3)+2#H{5js5ua}u7vA{&EK{SPgh9~OVa9T@uboJMJlLR7; z-YpZ2IJ#op=0`0|udRd))2>uqf2Y2|Kx#l&SIM!@U z6;#!KxBqVN#7AHL3Ox$vta^}Qy=KPaD_b+V7n&y)8?%Yl2}eBK+W-o?Tfg6KH?Nq= z)wh3#zSc+QLq;K|#l`yd_aEl>-*BRS?^?FNwpF3;HYDkp1f@@e z?Vo4=!*Qn0%kU*<&s@Fs@O$6=Q&+#=*SCLt_#W@Y!_|7yO;gS=iSC+kU+YunV%}=a z>@4l@)V(=tuZoJkTNc~*q`tPw+g)vsOo;gIZ?~oIQDIjWNnr1{ayxt z`W8wTdd>B9u{yhH-M8OPS$H>+xX%aM_ zGq|AhRFIEnNtkW*bX{-M-%Gq9R_|vEeB-`%D%4(O*VAB8i##u>}!YNRsoZtuF)#-Z0&0 zYgQhEyS7DZZ_7;1TeY-CDJ z@p#O^Q}ctqPTX^;LE7|7+>aD+LFelW+1sypYyJBzi$r`}Bsd*9U+ zFPL+8YjMECXOXL3i zdivlic=NX2<0|eor|;!t&t;rfvR$tA`s}dpj}$C|6P}u68>aFYTwig|KVjiVPS!BV zu-nIe&VdNQ&(_V-3m!f3#pM4ire$|-TTvBC8t%7`6lzQ zE!I?#((XBL$KAH$+{~Rt8{h5SJ9Tw;?C;;dWA593S$Eaq!wLSArgE#zZf}~p+VIEj zMUPsSKD~SU`))J4r$19(UVOU1DR@%$n_F)*?&hRs@@XyS4r_eK!50{wE*c@RX8pz! zZHI&2r8OR4;)o2NDyf|K;=yXsh@Fu;dtU2q(5v3Owv;VRIO27O?xHD;*YUAgB+HRnB*CP8aoM|FXY`yyuZ7pGbzX3(GV`lwf1dGY?Gw%gQ|JF$H_eYWoGx6?f`A%3UVEMlD&7Ou8I=2+0| z*(}r6uc+w{i?|YMvMwfJsga=mYuycxY@<(dG5_k=x%fboW9HFbi3>0Dt~|LMDbst~ zh@Ux{HH@#www_OAgG^~EleYSGenWwXpYK<;`4u(Q_VWqEvhwq4Zq<&klzb%qe=n=p z|J0L?raI3AR(uhhy#4sJz$4K+^!nb^pUZk95R=-wq&|Q*-0H5W$J6qZOHQlJvOgSo zb*(@&d-FYewyEd3|1EUpsb>Yph8I{S1%3CN^Dr>t;2XK`mJwAJRr;6yt^H=u zxK(t<(aDT+U(2$JeVlP|D&yRDv-&EIxhk){wdP=QX)RkxToKE(`%Jbz+w(q0FmXG1 zWv{vXT8nQ(>w!z}%|gu5nr}s|b9(7}%g~;=Cb{Q8lTf+XnTm?4`bSIGUh2Lh7kx*0 zU(uvpJDOV4l~49wJ-YU*+}F}==VO%hJ<1EqK4d$do2LIi>fSk&ZiY>UFj9rN3*oO!Zzj@Li(ov@+P)?6a$xVXcIfNbx~DA%Rlf4?2)&?#TB zcw6D6sjg+GALUj0_lrdwT^o5+j>q77#vZl1A`uzvOsA(=N`h`b>=fViT;cjv*Mz56 zHqDsG^Mh&ij`C&E+-n|PGYef3b!z=lt?mP##4bk6`@N+vs&T6g-~H-jv#V1jHhx#$ zq{JfjRz~?--TdMj*Awc6#rq#Ud3I;1dg2Fdbq<{v|7WGoT&8YXy}()5S^a97E2n zoBN;(+$TwJ5?;~tv0#%|K!T&EWAfZE|4Qc9N*i2M9AlrZP(3o^z@^DktJBWqt<<(M zD?fdY>GaF%W}hWzxFkGf-gZKYZAZ4bc!cSSHF^AOGqO$Yz4EBzYkb-{VG8pthxIEj zXr7MZSaafZi&*2-y*g6b)t28yb^iUkwqN96Jzr5D$EWqWN{Sn_zJDkwpB=Dtc2-0c zM~L`zrB8Jq#g}kQSGSDj^1IjmK+EF8$8%EaW+=aVocbeDwsQLa#aRJU6HlxxJ-edf z2W#M&@TM&+;d9LX%(uMgcY6`bstETrn=-oj^RmKLFfHHpzK|*H_8PH>dyhZ-EUDpG z^Sk|cdhNZ{SH5~=&e1F>s_9$LvD3V0e^J}aohNPgY(H@7NOGbb^JESk`5Bc}1_x|s z{jP}AU*p#pdadv3tK$s(`(HHu)Oy`_`B?-L_j$$@6Riz(ML%Eva&`SXC#SPaYn@%6 zN+@lRNzV~pbF{1G|4vr1?@D*}X>rT%5Rk4gXwJWHw}+YAJ#m{r&zh1vr_h_>bzhwq zTne8(NHRU^a^_9jkmMaCWwr5kOCQf^`DgN}j*ydF{&VFmN z-HygIub5MEe8;5N=%UyS+0U0~3JN<<4PH9=K+%y4f0xdDn(gwoKesD>l|h`@TrG{> zpOJ>gSBOUZD*SQocPpr@JXm3LIQjfEi{qkeS`K*mWbe{YuPuD!wK(Gu65FjvFq?aH$}w@a=T{rq~D<+nr@ zF*cu{rFo49I%d4_0qJ zW2!Xqsp{SP_aB&Uj24$^t^fDa&FJ6R``fPVD-6h8cYpbzp8K3sLrldF=4r`Emdk~#eG=et;uBp%VSxAXs%dz#xBrnBiAhHy%N zw(`CEE#SH3glzuDxnC|!@Vc|);g7l7<{C`-CAZuwXY(|cjJY?04;8R#hlzYi=5gF_ zQTp;K*O~~i=6{Jy+BbGv7E3&k6hCOqwMJ%zSnzp<%XecEt|o65yJfT?G~sB~{-Q?L zCED=nrk5;<@9KKA=BilTuI%&D!d^#Jhu0bKyaUstk*XhW60~k7Vl) zrs;C#vWi_1)hIBT_I{^OW9#m$9qFfXC(YTt(I+|o$=k3Whvc;1z4Wa4D4(4^xnA_@ zvTISS@_eGjf9(qPJI)ZbyT?;`JXY$*B*FXK`+rwkSUj|q3GdwaMK9|R=$e9CTR*dk zmFF(`@sRE8d-;18F0h0azv7u1a4J^%`yRJ7T4+P0MoMJYd}(er(t2FV-uH zvNn1x-Bxf!VE3~5$Fc;KGd)DpFXyX2ObooWLgiuFMXQPJorz&byM+Fwo|(@3Yu;+n zh?g;oO2iwtcAa7>l6VkUvFE_4#&kno$qc;>Qc0Va%`!d^Ypu9pj-PKrqd+`^rQF_` z8zNnrbF%&W&UVdoTYDhtRs1W(ylI>|A@Rq4-dMKnWlv*XHGh~|^WQ^XqN|^N|MTa$ z!Zpo*$Dj6Y`DLoJ@rT;K&=B9Mo3~Cp3^2UAM{lcDirq!#Ls9!@C2w6MTwt+I=8v-Z z>;l!D$L@6Vfq; zo35sJmR1=xF8%L6b-U_^`OOmR=huGwa_gXZeUGc@xAlv%?!?Cxw>uxz?we`;w1KUb zb+y{v_QzWJTqT`ZheYqsZ8|M9)84^R#edg7p3J6Imho*~8mYU4cb4tAw0qn9ch6>a znZ8)i)tYI)`iS3Us~=y=bU8bJscq0o@7LcDCVj^>VeO(#4Ki$HA`zA!be1VH+dSST z6v4YOGWe`y!Y*N^(=V^EOmjZrXfDj8neB4$*PiA6J!{&wv9MaZGOO=yTKfIiAMJ=c zGk^YnCzj=%^i$v4^J!iwUwhZfWtXC!woUwzwFBhbtf@2W7=3pntyA2vC>ma~^VueLpkH_+6H}*o8Tb%NKw6e>Qjb)B~s9o_{1|cpzrGP(*J*q;af7!mi4K zxVLQ+)i#9foMox7EVRh*`ZdVpaAtHPtLnL@i+%@6|GJ)1!F1|+ynesMqqP?tMFb)$ z9*fG=x2DI}{*6C4;hW!vEBh|K660_0is#z%_Z6G=rQYSI@72yyV%nT^^6UNSqAT^| z(jIsHo-1+m@vFd%oZ)9oKka_ADqjD!`2U%Qx`lP;WwsxWSG@i&xqbEmuhRICv=uF8 z%cPG#X;=PfJw2dZ`%KqU$F}>rA9vWXT;)BS7H9`O8so#Lh@bu;RSZC3WtbsyWEkNyw-XyT-1_?KC!?cf8)Jq=e6 z7ls-f3k#i9@b%|&{(^#7FLgskq4$2CE@qBXU+i6TB7igh&epG|Eq{a_5|&E}QtQw7=Wy zxz*qE*>x$i?maG=Di_{==~>K66*Y$2qH9{8aSMT zk$+!L-$Hulhxlm|=dSx!8WZy4u7Ht-C(phWeLr2-&DJ^obk)fZ=BAhCXy5tKvs?G0 zu8@53(vJq$1tL02%-xq7irj8HwUBS;F=goq!8Pt@)_1BNd#E)rd->UQv-wud*%y)8 z-mP!>!|m7+eYRW&#+{qjBv1RjFX@4w{sw~&oUCCwvd{FB6ZRa?I-I$6mca#=1XIVP z-Y;niiW}yv^H?Ofp(Bm8^53m)|~@vY442b1-R1 z|9(rY{oPFc3yVAsC&uV`KAN?(o|U_Q)8gVkiFX>cX0u9O32lq3ku2_1-#`7y(FF>( zH(UGbZv~_RKJh2?RP1+9awZC zZ|dutJDBA5?htvii#H+nclxeof1~7eg{<94r`a#aOug^gcs#&ziQ)AfPtV<~JSaNH zXJhcIEtji>6L#dh?sK(l1@eEy};+nvkiI zcHMYEu#H>7)#PnrU6KjAvRT3k--i{dFrV3~zkwlHuF=(x>q?NLXj%F(F6Mo6KG|yf zhKS6MNa$=ibcgp|ne*~LGAo-7O&~8(55JYw*zPNT_{SqN5jmwSn_a!} zn6vu21lIZ>t%GL+GkK0~TUfLrdELh6K{Di@59>b&`t=YvMivSS=;s?J<Y?uo2~ER_W4~=S{JWnX(n<@T|2aFTlmI#5eX;l*Z+9V zVE^T)@y2_9|FY#XKaJhEiIbn_&C=%Smj6>N^|bD_H`>(wzRNrBR>PK0>9=>VzyAGy z-+YGp{Xc)bHd|?@7oK};|I(??Vm{7xd~=wMd;oMt(2FE@O{HWe+Y+cwP? z=j~yV+qhA@{`cF%aetmp_m&B8EUo?j*Lm0eKdZwl`P~`AVY8^u-o1N=a-Ma@9CO{y zjLQz`tGDspV0rh2i95$fV}se#6HVcg68am$6eAt%*=BL9sr#_zX&a9Ui&&NA%mcgj z?ydd%>ucyst@I5Nb{-iP^>VX>T9=dtHTG)l3gbH^%&jA7_ep)r3H5)wr@C5yeQDXg z<(I^QRryOQxt}{MHP#k+SRa2s^5i|s9jjCnH&@xOD~YOX_Pg-X`EC2D_uBW9S0u$e zjN_Xd+0wXLZg&}v!?OJf&1;H&pUgeGb@liEHS5DoqBk#C>3eniF?Q+W9~_<3u1X&= zDBW;kdC2Xo&Bn14&&?>TYHV$67Fai#V@-tBnfUVz#b;#`4=pbEYp|BpU_tTT&;-fG z<4Fg^BM#U+ZQbhx@|W!u|1%%Yc1&1L$2@s&dY}`nz!HWht?U`o5$$?OL}|-5M8mO?;BAS#UM^dLQG7FXAZ^Lc3VQd|q7e zXRcM9cE(`a2Ge<>!pC};xOYC^s8%fJapNVcSexa-1GlCqbKg6{P|hN;$)`f(o{187 zpCQ;cM{k+@pTqNmiQ7W`&Q?X)Z9*rs&azH>A#p-sU5MG202NEQU&*~o9tUB-O19&=TExm2;G^ekgUEc3-%zuJ@k98^$u*mA4Z(LUs5-Q}fiTF3ZV#EiAu z3kz7E?{hC,dzk|wo6W8zUJZe5G2j)WrxUdgj>$!{)=w=}f6=O}syG;L+3pdGVe zd%08NR&&+#cmH2%{E_EB{6=xZxib$6kA*33=ri_m-evHBTc^-ZX~T>qO`jE@hh0As zEpiXr&-&x#m2DO;7c$nLNwe;hhz&pf{D#^Fi|Kki=O%H#zbEZ*l%1c6JAeD9_!UM% zFSo?>swi$=zc%J$!|Byi1tMx<64REiPK*v*Yj#8B!L5MUH@E&jZ#;A+CSE$+R5*ui zox+A6c5Jn*+QxTH58n^j-k=?JP}EAM%31_LXm%momcCaO_|HA*50XGy}mE=)+sId#hS_<^)FUEiMHxK#9SIp>-Wc}|jYdiPFphg9)DQRe#C zvP*V)=FVFaCr4b5-kG#3^8r`b=aPI^QR&#||63P6ddDL*^Bu$o#<^_kCWI}EF5(Rl zh?u;mX~Gw=f}>h%*Chm=4PdzVVd~^>OAddUef8~zuw{u%-Ni2tJWn*f4=f}XoX1fp36n1 zX+LIH-8?1wf3a)V^y`-%mX_96|8jk}Y@P7I=s?w3SrH|~@c&+J-~My_;2H_RI&RH+jkD?`NvtUB~qLkBwYn%Nf%Hd7=^S z67v&lk`Azh`AodP-?=#aSKo+l^a8BKxiY3aN=l+;9el>Zy)pYrR zqJWp`!dV}hbJ?#xxR-o)F3;3+TlYy@nf>woH@R?Y=9}o|;{{7E&uuQ?StX-lbu1v$ zENR<0(|QRxZn-!5C%~!s$BUy=*Ml54ZL>;@O?&wJnZ*i5B6}q+?99{KP}R7t%vWGb4LZ=`g_LD9a1!^3?Fc;iMt!IyVxLM_cxhJiAJaAv+|EfT`Y8y z2i-{%$#U(gzS@REn|nYZJNdff(d7Z}Se`G8X1}^G;l}Ti0Uvjsmq~DboDyT2ax6cK zCp`MHE!))dZnu(GT>9g&a?g$5CNYHyY8w>veG^*C8P82B_$YJFljWLB${d-a*Noqt zd};CfgU;Rb^B*q%a7nPuJ)a^vhduJCXF~0lN8cvjKEL75JFaWz?G7hQfA97lvr$hnw3K@?T+8br-aqGT=3*7|yBWS{U5hG@SorH(96C179-al? zM!Q3VEp4~n3ntLjwwqP`^fx%<|8tQS%UtnkrP;ck)irFNlyl=G!+-KTaThzI9Tv%Q z?eC=zd*<}l-1p##JQi2Y`ubbh&R^_)?YgJGZohq7p_W&;^C8P_gXM+^JQB>u8Vn0~ zc|_*0M;>JnGYQ*z;MbF~16#G%-n$^X?*WhByUW}<=k7lE@V!WCRn4*p@WHp_|Uf4ZvZsV(e0*d2Rt*NMhlu)!en*Ge9kS(`n14b$VB`tuWW zD;_3m&)ECOFh$b(riKgC+RvY^>$9&#PHpcb#N=E4ivhsCTu@x*hjB zCkCfR^rRZh&wBi7LCi~8gL)33lS>X8G`gB?yYxe#A37Da)qJP8+R0UtAn$-|m6p`F zz`mx*_$y*}W6qL4Mt4}Qsmj-Gwu&AC4PFSPr_Hxh>G^58v2H>>{mWs7nV@? z?wS90#))lO^HUx}OuF=JYT?xL4s|I9_auoz_wBv@(-m;+-UF^{pKi(KKb1c8SE=gW z|IfB>eUDw`TJuNtuu?B$@&O40ww^{QwiVMpNhgX5M_h=w%JllGcD!_8Z0AGv1In*f z`6Pp8OKQwRPR&t0*!K-<#4Mi~F2k{}aFcd~f?_=%i_*eUxj5;!e;apws`2l0joQ0o zdZhopnAcgXVG4}TjM#c0_F94bci(Ka4%6$p%!-G~^2hc~l-SgBmnFYO6jW^V; z{a7ep_?`DhPOLQ2Ic7A&e`{fBz`8GdGwfM9Q!Y*KHkZGXkX!NaFe7v567(%*M@4li z7cc(4Gv;8IzJwgtQ)4+%y^Y!tQ(ta>b*urB3mj%Ku3B0$LoZeI&y=;R4{(7uoVaO} z?E>vMS$H7IV@2eFWqa~Z{BJq%Y3`SViVaUEpYv(fESX>)atd+>sMM;OL+JSf6b&BX zjZ-JM>nsvH;{@KPV>$Q0p$y}zqK9TUr5{)>9&xTB_cAEXK~eDHh{KzZ*)RG+eG(or z#l02Pv2lO>Z*H5o{Eo7v*Sj|z?{y8d-Mzo5^yklrdB3EqE3Us}6?>kSRM)R>6!LS9 zG&EP5t%sBf+|NL#rkdF33s*k+CET5{VVc>crB<5`Je%O@;mf+iU%`b!O>n685t8va= zWzT9Z5^*Iuv$XZnYS9S)J+o6`g~OMWhAhqf!eL;|`6|YjKpTmc`+_$TJ(=L?l-S&T zZD)Pb%WLOTE97;`<3AejZ#87%7H;)cv|hWK(f_rY^p^A$pFB<0743Lbr|#xAHPLX| z!J1XQtDB3KmLK?|=%F&%FV}JF#;q&oRCsW#^ZT<%?~(T|lQ{j=EzWA3kyrmLSX$S5 zKr0}8g%I=Ez@HY|t1P^?g>9*T6e*0!4_Ls(eCzU;ZO@-B4mhPaxy9+pSEkht^N%_d zhqN{aUbXO^l3#y0;OX-NJB-$Sl04DBr4mv+R?ezC+6dW+a{l?giJ+Y*M}lMaKVymo zUC&rxuu3Yu^V3XtIT^#v465)Sg02qysj;URbO~K$VXbfkYftezu`6%Gj|My~&W?f9 zS-18;?9!PLzQ!rnVe7>E?=LD_rc4U3SoG+Z+6FGk?OE_lS`R7~cPEL0HUa%{>yrcR zc{?Qd^h*1*qOg)QrqvCF=k7M``nyVERZSjxUIf)uD|lC!efn)%rPA&r#N{3mw%;w5 zF@tz7wiciJ~XdbaSy9aa&B-Gt3h?XVGlEZf!Y=*H`}!uPMYBVz%?cJZ}+hx^Q5`kL?dQs z#1u^|?PH#I&UT7P{)$hL#(0vWUTvl)G-PSk8?4#XZFb_grP`)xE$!ukeT>?BYYL2?#kMFPpK??Dd0yI|83xW% z&u_+3cb?+ArBI)ctn@fab$dO>mZ!Tz_w*H<`E-zXSNBS%-A$%yoY%S`1@3{Dk_)0v z$!o6exyJSrbXDBeQ*0a$3L}r}e6KxvU~XJO;k#oJH;(47_>^gmnMGq$SC~mGcKB57 znKku~h>u7nQ}*u_W<9)T8@A=+!mQ(d_SpR+~=Pc6Z03 zx2M?jS+230@Be%K{=M2N(eu5n%kI?f{r%?M*Zq6zzMW3zpK1Q@xZ2Sl_shi%{`LN^ zmAtXNy!@XyXG8Y-C)^4jGwgFEHcc|sJjI#Nb7gATCBI_{^J;%QY@ZNTapdOa^z%1% zOU6nvJpb`lD^BpkpYZd&|JQ}EOPl{|-ojHX_5bh+zOs}*?3t3!uKeMD{Ut}%Qi%Pq zaR0aCHbQ4Sq;gcm1iD@J=PUf^s?OV#U;~MjZ`b;9=)~-+`nArhJfSR|?L+;U z{QBKB#@T<$)2#07`6&M^b;|W0@<&T{$Un9}b6R8l2m4jqFMnOUwU4Jy&hU#`&N@E> zbJYf$jaD{WGE=O?8^7M1%i{g})5*9n-n+?G6{eFIO00kSUE>N%d>L}=ZGOJ?&-3zr zv!*4ieBW|BvdG47YNgr9{ro2-!wW7KdMTIuYP;`!;c!=ufZVz@kE$bBKy^p?mXr1u zFTH5dx>0w*li_7h+eL>xn}5iuC#?7Vq|adW@Qh+W`PmA?q7xUd?(S1%_o?Igah`wM z32rta&FM;P7cP8l_G7u=zxdcn)-b>KR%xr(GX5?t)y$RZSnlg=eKTR#l*GvrHU~0q z*lu|FZL4l=CV#F}$3ov`g<>0?d1n>=+ZovEZLIB&=ay^x>1J@RaFLkyFV`He{34aXkPhMfSspHS$V8)v=tMUSFSIzjq z-reLEJ8_%*%W4Ume#U>#8H;UHtd8G0=J6%%0-sgs(S!qG>3s*BW^XcLywv?~ijsX0 z!|#bXS{WXDf?d>kGi}6{c_)WHn0_@g<%Sx6fs|skxOz8>mbt3WoDH(}(jR&4gQ_zw zU(n51e&d$%#4m>*tdgF2TfXm`VRR&-OB*B1P!LlM5GQ`{lQ3 zI3AxXN^+ZzbPJnJA>*MPG(Emq8qxU-HbO@^~IOp zZ(luR^lMJ+FSz8dY{BBzwb1^i6z|oP|roLqCYSbS~rWbRxkD~0BfKP;mxmPE-Q2|T;_S*d3jby1 zO5Ax8@!})zF&5spEwa%!*6KR=CFgx5n*nx zeD`aI~9==OoZorf=H z(bD;C#(LWxNbl;>n|iF&+G^6amcroUo41x|9!@hjvA^NsiH8$?-(SGFC=24$zhoSZCv>$kZR>hJE}R=c8Q$>D_4r!Fmc7&39jg2`8#mpZDi z`cd~barS44S@jN2wK!O9+8qu{t~8#LpuEdb_Pkl&Gb)O$+y^7Sy)=}s`RXS-ouWI zx|_-_NVbUg@K{CKMo5)dZTRcE&9c++-`4^bX*zlobyR{P)Z zn|S$X&g?_~b5<-n#=N&^N9a72cm5edy-JZ=)zhpeawL~ZylkClrE__uw10SH@0Gpf zTR*DY58u9C=uh?vhe;CCr>I@nv`#{3m~$Vfzb_q2rmb6)yKRlMC;N+_+{LWv!P_lo z>;5_4cItyk8iSRT_{I-$+128S$!U+zHWu%h$ML?p?%$tE?SK3wDV@T`E0(bTZ(cBe zk@VyG`zF^u=ey6I#gp|f`_{%??1>MWrT2*N8@(==exHv^BINPy@9M6%o9bmg@trzW zal`h9ynWZ>ZyA5y&)#kHudwCeF8zOtzrXubFEBH~05*gG>P{N4`5k9q-6!cQ@#D|^ z`7bR$y}7!2c7I&KR^K4T#Vx(@H6B&=dwza6dX_sf{_iKzT#0Rw$JjJf_nOPsRD6DO zbo2D}A5LC1^K|93TyRA!`2m;20bZMJ4UNmSSNJ|TI@SEs;r}u3toB#MX(-E?Ms~7T z7T&#Iv*zdDAJgThpX3NmFl1cya_`Th#e%|Wt5&&8owQv1%dIxUf;cv@+(d4P7b>0m ze%=<{SY7?w;ql$&{ELsxePAwMcVe~a+ftz=x4-J7T-seDD$J#{r^|c({TRW$MT!D3 zu`&A&y$L$CVB@i-lHK!IH;2#IaytC__<8AWE!FGO z{@bogSDbv^I7Rwpsc}I-rRKu+uS)`wovo^`+bK>r|U_*UZodrYjpF+irll3%$to0 zGD@$;C4Uu&2(S35Rq;Jkzqd40oMD05d;NIb`@8J)E;!`6PMwx5A9p$2GUe06Tfg^T zaOfAGb1QpI_M++EH^yGbmOgf%Qqp440ioEVr^8L8QZhpm7WQA2kWHAre%fj6e(^<3 zQr`B$s-;V{DtOUTzJ*BtIMrq&QI1T>7U!SJpL^_@AaOV zrR&$<`SYsM$?W47e`UcpuZ{ouM%GR1m(uic+OUdMs^iqj>Aopb-IQjy8Z24aoqsB1 z`Erw!PmaELryu|Hgj!<7ZS&4>RnwM}{dW5nTsP}!{A{#g@qt6l$3L!{n7{w;x99Wg z>;C>KRXctmNNM?&6_?7=tS@e82}zpk(i1GQr$*H<=dDTG|HlVYGrpI{|2*Uoa^W9?Wu9)UD$j1g16fI$4b{8Gci8t)_SG#uyMA*gNw5}cX3qzeDmm6SK8EX z$`cO%SDh?AONdG1{po}1PVXKUv)uetJ2UD=lUc~mgT6+Up|d_c@HGBm%JXK?I=laW ziaWF}dj9!yI{x1#D*-m|C1RmT+5PgHZ~b#_SUh3J%GZ~7X8oAHK7jRf`~HZ1=~Gyl zJ|8^wd$DyYuhq+oZo5L){_^WuAbrN)PKQqmx$cnms6}}iw7mk#)r8y zv51^pCCz0e_+b0v>JsbK+hX<|+I*zsiE&I`rAS1lcQDJ&go>W{>k+a`+?rULt}ye! zm45q_y24Tp}Gwn)XIEPsOl|@?? zDKfq^JG}IYlF1(nv8BB?o@!?bl*%4{ukj+$by`;cw!h#02AM75wLkOyMa7LhHKiY4 zeB-x2bIEf$SB~YB`_*Bu9%Ztw6}P<45`9%&;+9E(>+OGO7lhwvyiu9FaQAwd#3?se zPPk}xMcjJ)PW#Kd4Mz@U+2=~xRqyhU`e>U|bG2d0l#THjr+#3D`)hq| z?e7ZF=lu0Q4)@#tJ8{;R`RXZ8tuFWaU;lh#ZCIQ=EnX+@_P;)7PQ#67j}I(1Sdz5G zBBVj<-=evB)bWKH$|bqn&1ZSr3?je3C`&l7Ds;*XkoAI_} zM6b&3-}d*|b=!WQb?#9uh6P+~Y#cf(x9R`B@ul^zr;EJ* zeXnI`m@1^Du_{7pPmQYc2m9~?@nYUzz3*>Y`gcpF1!ItHtd^nW{FF;qr+nX}xpt!% zPyhMjO>51UDtYUhDO&7tZF`Kvjv0ForDXf=ytH0an%UaWz#%p0 z-%h9h(+c14A$3tO>+HT`mxQ{^cssvKM}BvRPzhT(pJT!zzv=5`zP#wJh;T{2a5zYc z!~6EGDY;qA)7QuS?Jm2Y@^Xp$*_H?GpD!;~uX*U@rN8u8>iVtGr!9@PfRfsZg}G)5 z=Mn^y!+L(74)0s0Q&(a=A;C9WCp>G-gWF*;i=BRFUUrbbl{WnmkC>ra?gPVBhmN%_ z+p|CYgt%LuU(~PKDe(pyR@(Y~xSZy{QV^{Ch5P%n%9CH}M65I{kYYQwLi<9i^oD)^ z|5g7N^|-h1kqihIsGH{w)uxg>>yj9Q{?U9WM(u zTygK^r>V{JF152UZSmc*=0uQ`pXmMdwmI(7ML$nnopQn9dy>Y|$ycUo$-Lf}#`b+T zLqp-q&3$sqzFl4>xLSkJ%4hq`RPM?959u4t-xuD*c4|+7>MKWf=AL_B)+d+NmQ?p} zyWYYu3?KxUeRGqY?)^mp;k zuV>8gRV#G;pxMSRUI{tx@tltGb~oeqR&Yq)>mk`zx1T%F>*DY3sYr zG|w9ko@&?Ds{VaZ#-Ulel*|3w(+B^4oLvz7D*u)A-orCq?KwBoEuSmotz)?3^0o&@ zUN0(*mb+WGQgdOWOM+_2B$fr)ZbmcCEnwRHV_A;u{bwBQyn8vL!|rBWc**kOtnW61 zmszKNpAKJVa46QLzsh@^t6;>1f~NUq*514g7kOUzJ}O~4vVQKZYq}Zr({z1qExx_^ z#HIzt1_u2Hgv>tbDyB^1SXR^6y6Z}W?$xWcyZJx0E^?7(imH~`{rai)%i4M8A3R;n z8ux6gM(O>j(_;3msM6XyMe1|FMb?vl?}jHN?^IebZGpj}373`@y-N|~Ilj0#@RiN3 z*sqmN!a+f8^$RsC&j-BW-se8^srCl;rA6`&rt3*@H$AQrGrAcW9LK-d?9xfe8NRWh zmsF)zZxYLpKew5@`hB!`?)3F>`|G|PF_pLY_hah)%SYAUZ<<#B zZh1SGPfz<?=Sj%w>YgU#kHymsTDghA=lsT*cgocb95^Xcl=`@g&OI0IQ% zhQzH};ufaIFRS7c_iu^V^k|JqGNPgTD-})od}G-vDob{Qve~<74duWnlv65`Y7SP*mGNo^`9aDH71*}Gy< zO!3lVD_5#bUbn1fkJ!{po~c}KRxM#uTWe4mI_uMw-95Z|XB$?oHnI0#>iBWW<2{E? zhkxzQdv4zFdivHWS1L|j^IWUepC|rtisp%!m4!h`sS!orr>@rgEO+;xg6x;2D|t>{ z{dzL@^3zjtckN=mcmm?td=j31n!R|bj+?}Tr>k4pq90u6clX{6 z3E6oi`}>P;lQ|drhCfR>`0wfJP2Rz=@2;KNp<-6OKm6;|7j2ijTjxz+6pr}m`S*W( Y; -#include -#include -#include -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "freertos/queue.h" -#include "driver/gpio.h" -#include "driver/dac.h" -#include "driver/gptimer.h" -#include "esp_log.h" - -/* The timer ISR has an execution time of 5.5 micro-seconds(us). - Therefore, a timer period less than 5.5 us will cause trigger the interrupt watchdog. - 7 us is a safe interval that will not trigger the watchdog. No need to customize it. -*/ - -#define TIMER_INTR_US 7 // Execution time of each ISR interval in micro-seconds -#define POINT_ARR_LEN 200 // Length of points array -#define AMP_DAC 255 // Amplitude of DAC voltage. If it's more than 256 will causes dac_output_voltage() output 0. -#define VDD 3300 // VDD is 3.3V, 3300mV -#define CONST_PERIOD_2_PI 6.2832 -#define DAC_CHAN CONFIG_EXAMPLE_DAC_CHANNEL // DAC_CHANNEL_1 (GPIO25) by default -#define FREQ CONFIG_EXAMPLE_WAVE_FREQUENCY // 3kHz by default -#define OUTPUT_POINT_NUM (int)(1000000 / (TIMER_INTR_US * FREQ) + 0.5) // The number of output wave points. - -_Static_assert(OUTPUT_POINT_NUM <= POINT_ARR_LEN, "The CONFIG_EXAMPLE_WAVE_FREQUENCY is too low and using too long buffer."); - -static int raw_val[POINT_ARR_LEN]; // Used to store raw values -static int volt_val[POINT_ARR_LEN]; // Used to store voltage values(in mV) -static const char *TAG = "wave_gen"; - -static int g_index = 0; - -/* Timer interrupt service routine */ -static bool IRAM_ATTR on_timer_alarm_cb(gptimer_handle_t timer, const gptimer_alarm_event_data_t *edata, void *user_data) -{ - int *head = (int *)user_data; - - /* DAC output ISR has an execution time of 4.4 us*/ - if (g_index >= OUTPUT_POINT_NUM) { - g_index = 0; - } - dac_output_voltage(DAC_CHAN, *(head + g_index)); - g_index++; - return false; -} - -static void prepare_data(int pnt_num) -{ - for (int i = 0; i < pnt_num; i ++) { -#ifdef CONFIG_EXAMPLE_WAVEFORM_SINE - raw_val[i] = (int)((sin( i * CONST_PERIOD_2_PI / pnt_num) + 1) * (double)(AMP_DAC) / 2 + 0.5); -#elif CONFIG_EXAMPLE_WAVEFORM_TRIANGLE - raw_val[i] = (i > (pnt_num / 2)) ? (2 * AMP_DAC * (pnt_num - i) / pnt_num) : (2 * AMP_DAC * i / pnt_num); -#elif CONFIG_EXAMPLE_WAVEFORM_SAWTOOTH - raw_val[i] = (i == pnt_num) ? 0 : (i * AMP_DAC / pnt_num); -#elif CONFIG_EXAMPLE_WAVEFORM_SQUARE - raw_val[i] = (i < (pnt_num / 2)) ? AMP_DAC : 0; -#endif - volt_val[i] = (int)(VDD * raw_val[i] / (float)AMP_DAC); - } -} - -static void log_info(void) -{ - ESP_LOGI(TAG, "DAC output channel: %d", DAC_CHAN); - if (DAC_CHAN == DAC_CHANNEL_1) { - ESP_LOGI(TAG, "GPIO:%d", GPIO_NUM_25); - } else { - ESP_LOGI(TAG, "GPIO:%d", GPIO_NUM_26); - } -#ifdef CONFIG_EXAMPLE_WAVEFORM_SINE - ESP_LOGI(TAG, "Waveform: SINE"); -#elif CONFIG_EXAMPLE_WAVEFORM_TRIANGLE - ESP_LOGI(TAG, "Waveform: TRIANGLE"); -#elif CONFIG_EXAMPLE_WAVEFORM_SAWTOOTH - ESP_LOGI(TAG, "Waveform: SAWTOOTH"); -#elif CONFIG_EXAMPLE_WAVEFORM_SQUARE - ESP_LOGI(TAG, "Waveform: SQUARE"); -#endif - - ESP_LOGI(TAG, "Frequency(Hz): %d", FREQ); - ESP_LOGI(TAG, "Output points num: %d\n", OUTPUT_POINT_NUM); -} - -void app_main(void) -{ - g_index = 0; - gptimer_handle_t gptimer = NULL; - gptimer_config_t timer_config = { - .clk_src = GPTIMER_CLK_SRC_DEFAULT, - .direction = GPTIMER_COUNT_UP, - .resolution_hz = 1000000, // 1MHz, 1 tick = 1us - }; - ESP_ERROR_CHECK(gptimer_new_timer(&timer_config, &gptimer)); - ESP_ERROR_CHECK(dac_output_enable(DAC_CHAN)); - - log_info(); - prepare_data(OUTPUT_POINT_NUM); - - gptimer_alarm_config_t alarm_config = { - .reload_count = 0, - .alarm_count = TIMER_INTR_US, - .flags.auto_reload_on_alarm = true, - }; - gptimer_event_callbacks_t cbs = { - .on_alarm = on_timer_alarm_cb, - }; - ESP_ERROR_CHECK(gptimer_register_event_callbacks(gptimer, &cbs, raw_val)); - ESP_ERROR_CHECK(gptimer_set_alarm_action(gptimer, &alarm_config)); - ESP_ERROR_CHECK(gptimer_enable(gptimer)); - ESP_ERROR_CHECK(gptimer_start(gptimer)); - - while (1) { - vTaskDelay(10); -#if CONFIG_EXAMPLE_LOG_VOLTAGE - if (g_index < OUTPUT_POINT_NUM) { - ESP_LOGI(TAG, "Output voltage(mV): %d", volt_val[g_index]); - ESP_LOGD(TAG, "g_index: %d\n", g_index); - } -#endif - } -} diff --git a/examples/system/app_trace_to_host/README.md b/examples/system/app_trace_to_host/README.md index b029ea48a4..8c7c21e116 100644 --- a/examples/system/app_trace_to_host/README.md +++ b/examples/system/app_trace_to_host/README.md @@ -30,7 +30,7 @@ This example will assume that that an ESP-WROVER-KIT is used. #### Pin Assignment: -The sinusoidal signal of 50 to 60 Hz ranging from 0 V ~ 3.1 V should be input into `ADC1_CHANNEL_6`. Users may provide this signal themselves, or use the example-generated signal in `DAC_CHANNEL_1`. Listed below are the corresponding DAC/ADC channel pins for supported targets. +The sinusoidal signal of 130 Hz ranging from 0 V ~ 3.1 V should be input into `ADC1_CHANNEL_6`. Users may provide this signal themselves, or use the example-generated signal in `DAC_CHAN_0`. Listed below are the corresponding DAC/ADC channel pins for supported targets. | Target | DAC Output | ADC Input | | ------------------ | ------------------ | ------------------ | diff --git a/examples/system/app_trace_to_host/example_test.py b/examples/system/app_trace_to_host/example_test.py index f0e4fb7876..8565d414bb 100644 --- a/examples/system/app_trace_to_host/example_test.py +++ b/examples/system/app_trace_to_host/example_test.py @@ -17,7 +17,7 @@ def test_examples_app_trace_to_host(env, extra_data): with ttfw_idf.OCDBackend(oocd_log_path, dut.app.target) as ocd: dut.start_app() dut.expect_all('example: Enabling ADC1 on channel 6 / GPIO34.', - 'example: Enabling CW generator on DAC channel 1', + 'example: Enabling CW generator on DAC channel 0', 'example: Sampling ADC and sending data to the host...', re.compile(r'example: Collected \d+ samples in 20 ms.'), 'example: Sampling ADC and sending data to the UART...', diff --git a/examples/system/app_trace_to_host/main/Kconfig.projbuild b/examples/system/app_trace_to_host/main/Kconfig.projbuild deleted file mode 100644 index 67c46e4d00..0000000000 --- a/examples/system/app_trace_to_host/main/Kconfig.projbuild +++ /dev/null @@ -1,20 +0,0 @@ -menu "Example Configuration" - - config CUSTOM_RTC_CLK_8M_DIV - bool "Set custom RTC 8 MHz clock divider to lower CW frequency (CHECK HELP FIRST)" - default "n" - help - Set custom / non standard divider for RTC 8 MHz clock. - This is to lower minimum frequency of cosine waveform generator (CW) - in order to provide sinusoidal signal at about 50 or 60 Hz. - - WARNINIG: setting non standard divider for the RTC 8 MHz clock - will affect functionality of RTC peripherals other than CW. - - This includes ADC sampling, and will in general make - all RTC register access slower. - - DO NOT use this option / change default RTC 8 MHz clock divider - in your applications, if you are not sure what you are doing. - -endmenu diff --git a/examples/system/app_trace_to_host/main/app_trace_to_host_example_main.c b/examples/system/app_trace_to_host/main/app_trace_to_host_example_main.c index e1c31ddf24..3cedb337de 100644 --- a/examples/system/app_trace_to_host/main/app_trace_to_host_example_main.c +++ b/examples/system/app_trace_to_host/main/app_trace_to_host_example_main.c @@ -15,7 +15,7 @@ #include "soc/rtc_periph.h" #include "soc/sens_periph.h" #include "esp_adc/adc_oneshot.h" -#include "driver/dac.h" +#include "driver/dac_driver.h" #include "soc/adc_channel.h" #include "soc/dac_channel.h" @@ -23,48 +23,32 @@ #define TEST_SAMPLING_PERIOD 20 -/* - * When setting custom divider of RTC 8 MHz clock in menuconfig, - * use the following values to set the CW frequency: - * ~ 50 Hz (entered below) - * RTC_CLK_8M_DIV 7 - * CW_FREQUENCY_STEP 3 - * ~ 60 Hz - * RTC_CLK_8M_DIV 1 - * CW_FREQUENCY_STEP 1 - */ -#ifdef CONFIG_CUSTOM_RTC_CLK_8M_DIV -#define RTC_CLK_8M_DIV 7 -#define CW_FREQUENCY_STEP 3 -#else -#define CW_FREQUENCY_STEP 1 -#endif - static const char *TAG = "example"; /* * Enable cosine waveform generator (CW) - * on DAC channel 1 to provide sinusoidal signal + * on DAC channel 0 to provide sinusoidal signal * It can be used instead of a live signal for testing * of speed of logging to the host * sequentially with data retrieval from ADC */ static void enable_cosine_generator(void) { - // Enable tone generator common to both DAC channels 1 and 2 - SET_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN); - // Enable / connect tone tone generator on / to channel 1 - SET_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M); - // Invert MSB, otherwise part of the waveform will be inverted - SET_PERI_REG_BITS(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_INV1, 2, SENS_DAC_INV1_S); - // Set the frequency of waveform on CW output -#ifdef CONFIG_CUSTOM_RTC_CLK_8M_DIV - REG_SET_FIELD(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_CK8M_DIV_SEL, RTC_CLK_8M_DIV); - ESP_LOGI(TAG, "Custom divider of RTC 8 MHz clock has been set."); -#endif - SET_PERI_REG_BITS(SENS_SAR_DAC_CTRL1_REG, SENS_SW_FSTEP, CW_FREQUENCY_STEP, SENS_SW_FSTEP_S); - - dac_output_enable(DAC_CHANNEL_1); + dac_channels_handle_t dac_handle; + dac_channels_config_t dac_cfg = { + .chan_sel = DAC_CHANNEL_MASK_CH0, + }; + ESP_ERROR_CHECK(dac_new_channels(&dac_cfg, &dac_handle)); + ESP_ERROR_CHECK(dac_channels_enable(dac_handle)); + dac_cosine_config_t cos_cfg = { + .freq_hz = 130, + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_0, + .scale = DAC_COSINE_NO_ATTEN, + }; + ESP_ERROR_CHECK(dac_channels_init_cosine_mode(dac_handle, &cos_cfg)); + ESP_ERROR_CHECK(dac_channels_start_cosine_output(dac_handle)); } /* @@ -108,7 +92,7 @@ void app_main(void) }; ESP_ERROR_CHECK(adc_oneshot_config_channel(adc1_handle, ADC1_TEST_CHANNEL, &config)); - ESP_LOGI(TAG, "Enabling CW generator on DAC channel 1 / GPIO%d.", DAC_CHANNEL_1_GPIO_NUM); + ESP_LOGI(TAG, "Enabling CW generator on DAC channel 0 / GPIO%d.", DAC_CHAN_0_GPIO_NUM); enable_cosine_generator(); while (1) { diff --git a/tools/ci/check_copyright_ignore.txt b/tools/ci/check_copyright_ignore.txt index ada4ffaf4c..7b58fe61c1 100644 --- a/tools/ci/check_copyright_ignore.txt +++ b/tools/ci/check_copyright_ignore.txt @@ -922,13 +922,11 @@ components/sdmmc/sdmmc_io.c components/sdmmc/sdmmc_mmc.c components/sdmmc/sdmmc_sd.c components/soc/esp32/adc_periph.c -components/soc/esp32/dac_periph.c components/soc/esp32/i2c_periph.c components/soc/esp32/include/soc/apb_ctrl_reg.h components/soc/esp32/include/soc/apb_ctrl_struct.h components/soc/esp32/include/soc/bb_reg.h components/soc/esp32/include/soc/boot_mode.h -components/soc/esp32/include/soc/dac_channel.h components/soc/esp32/include/soc/emac_dma_struct.h components/soc/esp32/include/soc/emac_ext_struct.h components/soc/esp32/include/soc/emac_mac_struct.h @@ -1060,7 +1058,6 @@ components/soc/esp32h2/include/soc/wdev_reg.h components/soc/esp32h2/ledc_periph.c components/soc/esp32h2/uart_periph.c components/soc/esp32s2/adc_periph.c -components/soc/esp32s2/dac_periph.c components/soc/esp32s2/dedic_gpio_periph.c components/soc/esp32s2/i2c_periph.c components/soc/esp32s2/include/soc/apb_ctrl_reg.h @@ -1069,7 +1066,6 @@ components/soc/esp32s2/include/soc/assist_debug_reg.h components/soc/esp32s2/include/soc/bb_reg.h components/soc/esp32s2/include/soc/boot_mode.h components/soc/esp32s2/include/soc/crypto_dma_reg.h -components/soc/esp32s2/include/soc/dac_channel.h components/soc/esp32s2/include/soc/dedic_gpio_reg.h components/soc/esp32s2/include/soc/dedic_gpio_struct.h components/soc/esp32s2/include/soc/extmem_reg.h From 8ef9fd4623f256c65fc09b025c92f44771199ad0 Mon Sep 17 00:00:00 2001 From: laokaiyao Date: Mon, 10 Oct 2022 19:17:22 +0800 Subject: [PATCH 5/5] dac: optimize the dma stratege --- components/driver/CMakeLists.txt | 18 +- components/driver/Kconfig | 6 +- components/driver/dac/dac_common.c | 98 + components/driver/dac/dac_conti.c | 652 ++ components/driver/dac/dac_cosine.c | 154 + components/driver/dac/dac_driver.c | 781 --- components/driver/dac/dac_oneshot.c | 84 + components/driver/dac/dac_priv_common.h | 76 + .../driver/dac/{dac_dma.h => dac_priv_dma.h} | 28 +- components/driver/dac/esp32/dac_dma.c | 130 +- components/driver/dac/esp32s2/dac_dma.c | 97 +- .../driver/deprecated/dac_common_legacy.c | 35 +- components/driver/deprecated/driver/dac.h | 6 +- components/driver/include/driver/dac_conti.h | 263 + components/driver/include/driver/dac_cosine.h | 97 + components/driver/include/driver/dac_driver.h | 298 - .../driver/include/driver/dac_oneshot.h | 70 + components/driver/include/driver/dac_types.h | 34 +- components/driver/linker.lf | 3 +- .../dac_test_apps/dac/main/test_dac.c | 436 +- .../dac_test_apps/dac/main/test_dac_iram.c | 110 +- .../dac_test_apps/dac/sdkconfig.ci.iram_safe | 3 +- .../dac_test_apps/dac/sdkconfig.defaults | 2 +- .../legacy_dac_driver/main/test_legacy_dac.c | 9 +- components/hal/adc_oneshot_hal.c | 4 +- components/hal/esp32/include/hal/dac_ll.h | 21 +- components/hal/esp32s2/include/hal/dac_ll.h | 21 +- components/hal/esp32s2/include/hal/spi_ll.h | 1 + components/hal/include/hal/dac_types.h | 21 + components/soc/esp32/dac_periph.c | 4 +- .../soc/esp32/include/soc/Kconfig.soc_caps.in | 2 +- .../soc/esp32/include/soc/clk_tree_defs.h | 12 +- .../soc/esp32/include/soc/dac_channel.h | 12 +- components/soc/esp32/include/soc/soc_caps.h | 2 +- components/soc/esp32s2/dac_periph.c | 4 +- .../esp32s2/include/soc/Kconfig.soc_caps.in | 2 +- .../soc/esp32s2/include/soc/clk_tree_defs.h | 12 +- .../soc/esp32s2/include/soc/dac_channel.h | 11 +- components/soc/esp32s2/include/soc/soc_caps.h | 2 +- components/soc/include/soc/dac_periph.h | 21 +- .../diagrams/dac/dac_file_structure.png | Bin 63442 -> 80660 bytes .../diagrams/dac/dac_state_machine.png | Bin 113167 -> 0 bytes docs/doxygen/Doxyfile | 5 + docs/en/api-reference/peripherals/dac.rst | 266 +- .../release-5.x/5.0/peripherals.rst | 59 - .../release-5.x/5.1/peripherals.rst | 44 + .../a2dp_sink/main/Kconfig.projbuild | 4 +- .../classic_bt/a2dp_sink/main/bt_app_av.c | 56 +- .../classic_bt/a2dp_sink/main/bt_app_core.c | 6 +- .../classic_bt/a2dp_sink/sdkconfig.defaults | 2 +- .../a2dp_gatts_coex/main/Kconfig.projbuild | 4 +- .../coex/a2dp_gatts_coex/main/bt_app_av.c | 24 +- .../coex/a2dp_gatts_coex/main/bt_app_core.c | 6 +- .../coex/a2dp_gatts_coex/main/main.c | 30 +- .../coex/a2dp_gatts_coex/sdkconfig.defaults | 2 +- examples/peripherals/.build-test-rules.yml | 14 +- .../dac/dac_audio/main/CMakeLists.txt | 2 - .../dac/dac_audio/main/audio_example_file.h | 4979 -------------- .../dac/dac_audio/main/dac_audio.c | 73 - .../dac/dac_audio/pytest_dac_audio.py | 16 - .../dac/dac_audio/tools/sample_00.wav | Bin 23126 -> 0 bytes .../dac/dac_audio/tools/sample_01.wav | Bin 33852 -> 0 bytes .../dac/dac_audio/tools/sample_02.wav | Bin 102178 -> 0 bytes examples/peripherals/dac/dac_basic/README.md | 71 - .../dac/dac_basic/main/CMakeLists.txt | 2 - .../dac/dac_basic/main/dac_basic.c | 96 - .../dac/dac_basic/sdkconfig.defaults | 1 - .../peripherals/dac/dac_continuous/README.md | 153 - .../dac_audio/CMakeLists.txt | 0 .../{ => dac_continuous}/dac_audio/README.md | 0 .../dac_audio/main/CMakeLists.txt | 2 + .../dac_audio/main/Kconfig.projbuild | 21 + .../dac_audio/main/audio_example_file.h | 5997 +++++++++++++++++ .../dac_audio/main/dac_audio_example_main.c | 117 + .../dac_audio/pytest_dac_audio.py | 32 + .../dac_audio/sdkconfig.ci.async | 2 + .../dac_audio/sdkconfig.ci.sync | 2 + .../dac_audio/tools/generate_audio_file.py | 0 .../dac_audio/tools/hi_idf_audio.wav | Bin 0 -> 191742 bytes .../dac/dac_continuous/main/CMakeLists.txt | 6 - .../dac_continuous/main/dac_continuous_dma.c | 130 - .../dac_continuous/main/dac_continuous_main.c | 89 - .../dac_continuous/pytest_dac_continuous.py | 33 - .../dac/dac_continuous/sdkconfig.defaults | 1 - .../{ => signal_generator}/CMakeLists.txt | 2 +- .../dac_continuous/signal_generator/README.md | 155 + .../signal_generator/main/CMakeLists.txt | 6 + .../signal_generator/main/Kconfig.projbuild | 22 + .../main/dac_conti_example.h} | 8 +- .../main/dac_conti_example_dma.c | 87 + .../main/dac_conti_example_main.c | 121 + .../main/dac_conti_example_timer.c} | 62 +- .../signal_generator/pytest_dac_continuous.py | 46 + .../signal_generator/sdkconfig.ci.dma | 2 + .../signal_generator/sdkconfig.ci.timer | 2 + .../signal_generator/sdkconfig.defaults | 1 + .../peripherals/dac/dac_cosine_wave/README.md | 51 +- .../dac/dac_cosine_wave/main/CMakeLists.txt | 2 +- .../main/dac_cosine_example_main.c | 83 + .../dac_cosine_wave/main/dac_cosine_wave.c | 111 - .../dac_cosine_wave/pytest_dac_cosine_wave.py | 26 +- .../dac/dac_cosine_wave/sdkconfig.defaults | 2 +- .../{dac_basic => dac_oneshot}/CMakeLists.txt | 2 +- .../peripherals/dac/dac_oneshot/README.md | 66 + .../dac/dac_oneshot/main/CMakeLists.txt | 2 + .../main/dac_oneshot_example_main.c | 86 + .../pytest_dac_oneshot.py} | 4 +- .../dac/dac_oneshot/sdkconfig.defaults | 1 + examples/system/app_trace_to_host/README.md | 24 +- .../system/app_trace_to_host/example_test.py | 2 +- .../main/app_trace_to_host_example_main.c | 26 +- .../system/app_trace_to_host/sdkconfig.ci | 1 - tools/ci/check_copyright_ignore.txt | 1 - 113 files changed, 9163 insertions(+), 7830 deletions(-) create mode 100644 components/driver/dac/dac_common.c create mode 100644 components/driver/dac/dac_conti.c create mode 100644 components/driver/dac/dac_cosine.c delete mode 100644 components/driver/dac/dac_driver.c create mode 100644 components/driver/dac/dac_oneshot.c create mode 100644 components/driver/dac/dac_priv_common.h rename components/driver/dac/{dac_dma.h => dac_priv_dma.h} (64%) create mode 100644 components/driver/include/driver/dac_conti.h create mode 100644 components/driver/include/driver/dac_cosine.h delete mode 100644 components/driver/include/driver/dac_driver.h create mode 100644 components/driver/include/driver/dac_oneshot.h delete mode 100644 docs/_static/diagrams/dac/dac_state_machine.png delete mode 100644 examples/peripherals/dac/dac_audio/main/CMakeLists.txt delete mode 100644 examples/peripherals/dac/dac_audio/main/audio_example_file.h delete mode 100644 examples/peripherals/dac/dac_audio/main/dac_audio.c delete mode 100644 examples/peripherals/dac/dac_audio/pytest_dac_audio.py delete mode 100644 examples/peripherals/dac/dac_audio/tools/sample_00.wav delete mode 100644 examples/peripherals/dac/dac_audio/tools/sample_01.wav delete mode 100644 examples/peripherals/dac/dac_audio/tools/sample_02.wav delete mode 100644 examples/peripherals/dac/dac_basic/README.md delete mode 100644 examples/peripherals/dac/dac_basic/main/CMakeLists.txt delete mode 100644 examples/peripherals/dac/dac_basic/main/dac_basic.c delete mode 100644 examples/peripherals/dac/dac_basic/sdkconfig.defaults delete mode 100644 examples/peripherals/dac/dac_continuous/README.md rename examples/peripherals/dac/{ => dac_continuous}/dac_audio/CMakeLists.txt (100%) rename examples/peripherals/dac/{ => dac_continuous}/dac_audio/README.md (100%) create mode 100644 examples/peripherals/dac/dac_continuous/dac_audio/main/CMakeLists.txt create mode 100644 examples/peripherals/dac/dac_continuous/dac_audio/main/Kconfig.projbuild create mode 100644 examples/peripherals/dac/dac_continuous/dac_audio/main/audio_example_file.h create mode 100644 examples/peripherals/dac/dac_continuous/dac_audio/main/dac_audio_example_main.c create mode 100644 examples/peripherals/dac/dac_continuous/dac_audio/pytest_dac_audio.py create mode 100644 examples/peripherals/dac/dac_continuous/dac_audio/sdkconfig.ci.async create mode 100644 examples/peripherals/dac/dac_continuous/dac_audio/sdkconfig.ci.sync rename examples/peripherals/dac/{ => dac_continuous}/dac_audio/tools/generate_audio_file.py (100%) create mode 100644 examples/peripherals/dac/dac_continuous/dac_audio/tools/hi_idf_audio.wav delete mode 100644 examples/peripherals/dac/dac_continuous/main/CMakeLists.txt delete mode 100644 examples/peripherals/dac/dac_continuous/main/dac_continuous_dma.c delete mode 100644 examples/peripherals/dac/dac_continuous/main/dac_continuous_main.c delete mode 100644 examples/peripherals/dac/dac_continuous/pytest_dac_continuous.py delete mode 100644 examples/peripherals/dac/dac_continuous/sdkconfig.defaults rename examples/peripherals/dac/dac_continuous/{ => signal_generator}/CMakeLists.txt (89%) create mode 100644 examples/peripherals/dac/dac_continuous/signal_generator/README.md create mode 100644 examples/peripherals/dac/dac_continuous/signal_generator/main/CMakeLists.txt create mode 100644 examples/peripherals/dac/dac_continuous/signal_generator/main/Kconfig.projbuild rename examples/peripherals/dac/dac_continuous/{main/dac_continuous.h => signal_generator/main/dac_conti_example.h} (74%) create mode 100644 examples/peripherals/dac/dac_continuous/signal_generator/main/dac_conti_example_dma.c create mode 100644 examples/peripherals/dac/dac_continuous/signal_generator/main/dac_conti_example_main.c rename examples/peripherals/dac/dac_continuous/{main/dac_continuous_timer.c => signal_generator/main/dac_conti_example_timer.c} (57%) create mode 100644 examples/peripherals/dac/dac_continuous/signal_generator/pytest_dac_continuous.py create mode 100644 examples/peripherals/dac/dac_continuous/signal_generator/sdkconfig.ci.dma create mode 100644 examples/peripherals/dac/dac_continuous/signal_generator/sdkconfig.ci.timer create mode 100644 examples/peripherals/dac/dac_continuous/signal_generator/sdkconfig.defaults create mode 100644 examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_example_main.c delete mode 100644 examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_wave.c rename examples/peripherals/dac/{dac_basic => dac_oneshot}/CMakeLists.txt (91%) create mode 100644 examples/peripherals/dac/dac_oneshot/README.md create mode 100644 examples/peripherals/dac/dac_oneshot/main/CMakeLists.txt create mode 100644 examples/peripherals/dac/dac_oneshot/main/dac_oneshot_example_main.c rename examples/peripherals/dac/{dac_basic/pytest_dac_basic.py => dac_oneshot/pytest_dac_oneshot.py} (82%) create mode 100644 examples/peripherals/dac/dac_oneshot/sdkconfig.defaults delete mode 100644 examples/system/app_trace_to_host/sdkconfig.ci diff --git a/components/driver/CMakeLists.txt b/components/driver/CMakeLists.txt index 7a5fd40aed..86b04b1271 100644 --- a/components/driver/CMakeLists.txt +++ b/components/driver/CMakeLists.txt @@ -103,18 +103,20 @@ if(CONFIG_SOC_TOUCH_SENSOR_SUPPORTED) "${target}/touch_sensor.c") endif() -if(CONFIG_SOC_DAC_SUPPORTED) - list(APPEND srcs "dac/dac_driver.c" - "dac/${target}/dac_dma.c" - "deprecated/dac_common_legacy.c" - "deprecated/${target}/dac_legacy.c") - list(APPEND includes "deprecated/${target}") -endif() - if(CONFIG_SOC_SDIO_SLAVE_SUPPORTED) list(APPEND srcs "sdio_slave.c") endif() +if(CONFIG_SOC_DAC_SUPPORTED) + list(APPEND srcs "dac/dac_oneshot.c" + "dac/dac_cosine.c" + "dac/dac_conti.c" + "dac/dac_common.c" + "dac/${target}/dac_dma.c" + "deprecated/dac_common_legacy.c" + "deprecated/${target}/dac_legacy.c") +endif() + if(${target} STREQUAL "esp32") list(APPEND srcs "deprecated/adc_i2s_deprecated.c") endif() diff --git a/components/driver/Kconfig b/components/driver/Kconfig index 220d242883..0519511e29 100644 --- a/components/driver/Kconfig +++ b/components/driver/Kconfig @@ -405,7 +405,7 @@ menu "Driver Configurations" bool "Place DAC control functions into IRAM" default n help - Place 'dac_channels_set_voltage' function into IRAM, + Place DAC control functions (e.g. 'dac_oneshot_output_voltage') into IRAM, so that this function can be IRAM-safe and able to be called in the other IRAM interrupt context. Enabling this option can improve driver performance as well. @@ -420,7 +420,7 @@ menu "Driver Configurations" bool "Suppress legacy driver deprecated warning" default n help - Wether to suppress the deprecation warnings when using legacy DAC driver (driver/DAC.h). + Wether to suppress the deprecation warnings when using legacy DAC driver (driver/dac.h). If you want to continue using the legacy driver, and don't want to see related deprecation warnings, you can enable this option. @@ -433,7 +433,7 @@ menu "Driver Configurations" config DAC_DMA_AUTO_16BIT_ALIGN bool "Align the continuous data to 16 bit automatically" - depends on IDF_TARGET_ESP32 + depends on SOC_DAC_DMA_16BIT_ALIGN default y help Whether to left shift the continuous data to align every bytes to 16 bits in the driver. diff --git a/components/driver/dac/dac_common.c b/components/driver/dac/dac_common.c new file mode 100644 index 0000000000..26cd466b5b --- /dev/null +++ b/components/driver/dac/dac_common.c @@ -0,0 +1,98 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include "freertos/FreeRTOS.h" +#include "soc/soc_caps.h" +#include "soc/dac_periph.h" +#include "hal/dac_types.h" +#include "hal/dac_ll.h" +#include "driver/rtc_io.h" +#include "esp_check.h" +#include "dac_priv_common.h" + +typedef struct { + bool in_use; + bool is_enabled; + const char *mode; +} dac_channel_info_t; + +static dac_channel_info_t s_dac_chan[SOC_DAC_CHAN_NUM] = { + [0 ... SOC_DAC_CHAN_NUM - 1] = { + .in_use = false, + .is_enabled = false, + .mode = NULL, + } +}; +/* Global dac spin lock for the whole DAC driver */ +portMUX_TYPE dac_spinlock = portMUX_INITIALIZER_UNLOCKED; + +static const char *TAG = "dac_common"; + +esp_err_t dac_priv_register_channel(dac_channel_t chan_id, const char *mode_name) +{ + ESP_RETURN_ON_FALSE(chan_id < SOC_DAC_CHAN_NUM, ESP_ERR_INVALID_ARG, TAG, "channel id is invalid"); + DAC_NULL_POINTER_CHECK(mode_name); + esp_err_t ret = ESP_OK; + if (!s_dac_chan[chan_id].in_use) { + s_dac_chan[chan_id].in_use = true; + s_dac_chan[chan_id].mode = mode_name; + } else { + ret = ESP_ERR_INVALID_STATE; + } + if (ret != ESP_OK) { + ESP_LOGE(TAG, "dac channel %d has been registered by %s", chan_id, s_dac_chan[chan_id].mode); + } + return ret; +} + +esp_err_t dac_priv_deregister_channel(dac_channel_t chan_id) +{ + ESP_RETURN_ON_FALSE(chan_id < SOC_DAC_CHAN_NUM, ESP_ERR_INVALID_ARG, TAG, "channel id is invalid"); + ESP_RETURN_ON_FALSE(!s_dac_chan[chan_id].is_enabled, ESP_ERR_INVALID_STATE, TAG, "the channel is still enabled"); + esp_err_t ret = ESP_OK; + if (s_dac_chan[chan_id].in_use) { + s_dac_chan[chan_id].in_use = false; + s_dac_chan[chan_id].mode = NULL; + } else { + ret = ESP_ERR_INVALID_STATE; + } + return ret; +} + +esp_err_t dac_priv_enable_channel(dac_channel_t chan_id) +{ + ESP_RETURN_ON_FALSE(chan_id < SOC_DAC_CHAN_NUM, ESP_ERR_INVALID_ARG, TAG, "channel id is invalid"); + ESP_RETURN_ON_FALSE(s_dac_chan[chan_id].in_use, ESP_ERR_INVALID_STATE, TAG, "the channel is not registered"); + + gpio_num_t gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[chan_id]; + rtc_gpio_init(gpio_num); + rtc_gpio_set_direction(gpio_num, RTC_GPIO_MODE_DISABLED); + rtc_gpio_pullup_dis(gpio_num); + rtc_gpio_pulldown_dis(gpio_num); + DAC_RTC_ENTER_CRITICAL(); + dac_ll_power_on(chan_id); + dac_ll_rtc_sync_by_adc(false); + DAC_RTC_EXIT_CRITICAL(); + s_dac_chan[chan_id].is_enabled = true; + return ESP_OK; +} + +esp_err_t dac_priv_disable_channel(dac_channel_t chan_id) +{ + ESP_RETURN_ON_FALSE(chan_id < SOC_DAC_CHAN_NUM, ESP_ERR_INVALID_ARG, TAG, "channel id is invalid"); + ESP_RETURN_ON_FALSE(s_dac_chan[chan_id].in_use, ESP_ERR_INVALID_STATE, TAG, "the channel is not registered"); + + gpio_num_t gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[chan_id]; + rtc_gpio_deinit(gpio_num); + DAC_RTC_ENTER_CRITICAL(); + dac_ll_power_down(chan_id); + DAC_RTC_EXIT_CRITICAL(); + s_dac_chan[chan_id].is_enabled = false; + + return ESP_OK; +} diff --git a/components/driver/dac/dac_conti.c b/components/driver/dac/dac_conti.c new file mode 100644 index 0000000000..4a37d19023 --- /dev/null +++ b/components/driver/dac/dac_conti.c @@ -0,0 +1,652 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" +#include "freertos/semphr.h" +#include "sdkconfig.h" + +#include "rom/lldesc.h" +#include "soc/soc_caps.h" +#include "driver/dac_conti.h" + +#include "dac_priv_common.h" +#include "dac_priv_dma.h" + +#include "esp_check.h" + +#if CONFIG_DAC_ENABLE_DEBUG_LOG +// The local log level must be defined before including esp_log.h +// Set the maximum log level for this source file +#define LOG_LOCAL_LEVEL ESP_LOG_DEBUG +#endif +#if CONFIG_PM_ENABLE +#include "esp_pm.h" +#endif + +#define DAC_DMA_MAX_BUF_SIZE 4092 // Max DMA buffer size is 4095 but better to align with 4 bytes, so set 4092 here +#if CONFIG_DAC_ISR_IRAM_SAFE || CONFIG_DAC_CTRL_FUNC_IN_IRAM +#define DAC_MEM_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT) +#else +#define DAC_MEM_ALLOC_CAPS MALLOC_CAP_DEFAULT +#endif + +#if CONFIG_DAC_ISR_IRAM_SAFE +#define DAC_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_LOWMED | ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_INTRDISABLED | ESP_INTR_FLAG_SHARED) +#else +#define DAC_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_LOWMED | ESP_INTR_FLAG_INTRDISABLED | ESP_INTR_FLAG_SHARED) +#endif + +#define DAC_DMA_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_DMA) + +#define DAC_STAILQ_REMOVE(head, elm, type, field) do { \ + if ((head)->stqh_first == (elm)) { \ + STAILQ_REMOVE_HEAD((head), field); \ + } else { \ + struct type *curelm = (head)->stqh_first; \ + while (curelm->field.stqe_next != (elm) && \ + curelm->field.stqe_next != NULL) \ + curelm = curelm->field.stqe_next; \ + if (curelm->field.stqe_next && (curelm->field.stqe_next = \ + curelm->field.stqe_next->field.stqe_next) == NULL) \ + (head)->stqh_last = &(curelm)->field.stqe_next; \ + } \ +} while (/*CONSTCOND*/0) + +struct dac_conti_s { + uint32_t chan_cnt; + dac_conti_config_t cfg; + atomic_bool is_enabled; + atomic_bool is_cyclic; + atomic_bool is_running; + atomic_bool is_async; + intr_handle_t intr_handle; /* Interrupt handle */ +#if CONFIG_PM_ENABLE + esp_pm_lock_handle_t pm_lock; +#endif + SemaphoreHandle_t mutex; + StaticSemaphore_t mutex_struct; /* Static mutex struct */ + + QueueHandle_t desc_pool; /* The pool of available descriptors + * The descriptors in the pool are not linked in to pending chain */ + StaticQueue_t desc_pool_struct; /* Static message queue struct */ + void *desc_pool_storage; /* Static message queue storage */ + + lldesc_t **desc; + uint8_t **bufs; + STAILQ_HEAD(desc_chain_s, lldesc_s) head; /* Head of the descriptor chain + * The descriptors in the chain are pending to be sent or sending now */ + dac_event_callbacks_t cbs; /* Interrupt callbacks */ + void *user_data; +}; + +static const char *TAG = "dac_conti"; + +static bool s_dma_in_use = false; +static portMUX_TYPE desc_spinlock = portMUX_INITIALIZER_UNLOCKED; + +#define DESC_ENTER_CRITICAL() portENTER_CRITICAL(&desc_spinlock) +#define DESC_EXIT_CRITICAL() portEXIT_CRITICAL(&desc_spinlock) + +#define DESC_ENTER_CRITICAL_ISR() portENTER_CRITICAL_ISR(&desc_spinlock) +#define DESC_EXIT_CRITICAL_ISR() portEXIT_CRITICAL_ISR(&desc_spinlock) + +static void s_dac_free_dma_desc(dac_conti_handle_t handle) +{ + STAILQ_INIT(&handle->head); + if (handle->desc != NULL) { + if (handle->desc[0]) { + free(handle->desc[0]); + } + free(handle->desc); + handle->desc = NULL; + } + + if (handle->bufs != NULL) { + for (int i = 0; i < handle->cfg.desc_num; i++) { + if (handle->bufs[i]) { + free(handle->bufs[i]); + handle->bufs[i] = NULL; + } + } + free(handle->bufs); + handle->bufs = NULL; + } +} + +static esp_err_t s_dac_alloc_dma_desc(dac_conti_handle_t handle) +{ + esp_err_t ret = ESP_OK; + + STAILQ_INIT(&handle->head); + handle->desc = (lldesc_t **) heap_caps_calloc(handle->cfg.desc_num, sizeof(lldesc_t *), DAC_DMA_ALLOC_CAPS); + ESP_RETURN_ON_FALSE(handle->desc, ESP_ERR_NO_MEM, TAG, "failed to allocate dma descriptor array"); + handle->bufs = (uint8_t **) heap_caps_calloc(handle->cfg.desc_num, sizeof(uint8_t *), DAC_DMA_ALLOC_CAPS); + ESP_RETURN_ON_FALSE(handle->bufs, ESP_ERR_NO_MEM, TAG, "failed to allocate dma buffer array"); + lldesc_t *descs = (lldesc_t *)heap_caps_calloc(handle->cfg.desc_num, sizeof(lldesc_t), DAC_DMA_ALLOC_CAPS); + ESP_RETURN_ON_FALSE(descs, ESP_ERR_NO_MEM, TAG, "failed to allocate dma descriptors"); + for (int cnt = 0; cnt < handle->cfg.desc_num; cnt++) { + /* Allocate DMA descriptor */ + handle->desc[cnt] = &descs[cnt]; + ESP_GOTO_ON_FALSE(handle->desc[cnt], ESP_ERR_NO_MEM, err, TAG, "failed to allocate dma descriptor"); + ESP_LOGD(TAG, "desc[%d] %p\n", cnt, handle->desc[cnt]); + /* Allocate DMA buffer */ + handle->bufs[cnt] = (uint8_t *) heap_caps_calloc(1, handle->cfg.buf_size, DAC_DMA_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(handle->bufs[cnt], ESP_ERR_NO_MEM, err, TAG, "failed to allocate dma buffer"); + /* Assign initial value */ + lldesc_config(handle->desc[cnt], LLDESC_SW_OWNED, 1, 0, handle->cfg.buf_size); + handle->desc[cnt]->size = handle->cfg.buf_size; + handle->desc[cnt]->buf = handle->bufs[cnt]; + handle->desc[cnt]->offset = 0; + } + + return ESP_OK; +err: + /* Free DMA buffer if failed to allocate memory */ + s_dac_free_dma_desc(handle); + return ret; +} + +static void IRAM_ATTR s_dac_default_intr_handler(void *arg) +{ + dac_conti_handle_t handle = (dac_conti_handle_t)arg; + uint32_t dummy; + BaseType_t need_awoke = pdFALSE; + BaseType_t tmp = pdFALSE; + uint32_t intr_mask = dac_dma_periph_intr_is_triggered(); + if (intr_mask & DAC_DMA_EOF_INTR) { + lldesc_t *fdesc = (lldesc_t *)dac_dma_periph_intr_get_eof_desc(); + if (!atomic_load(&handle->is_cyclic)) { + /* Remove the descriptor in the chain that finished sent */ + DESC_ENTER_CRITICAL_ISR(); + if (STAILQ_FIRST(&handle->head) != NULL) { + DAC_STAILQ_REMOVE(&handle->head, fdesc, lldesc_s, qe); + } + DESC_EXIT_CRITICAL_ISR(); + + if (xQueueIsQueueFullFromISR(handle->desc_pool) == pdTRUE) { + xQueueReceiveFromISR(handle->desc_pool, &dummy, &tmp); + need_awoke |= tmp; + } + xQueueSendFromISR(handle->desc_pool, &fdesc, &tmp); + need_awoke |= tmp; + } + if (handle->cbs.on_convert_done) { + dac_event_data_t evt_data = { + .buf = (void *)fdesc->buf, + .buf_size = handle->cfg.buf_size, + .write_bytes = fdesc->length, + }; + need_awoke |= handle->cbs.on_convert_done(handle, &evt_data, handle->user_data); + } + } + if (intr_mask & DAC_DMA_TEOF_INTR) { + /* Total end of frame interrupt received, DMA stopped */ + atomic_store(&handle->is_running, false); + if (handle->cbs.on_stop) { + need_awoke |= handle->cbs.on_stop(handle, NULL, handle->user_data); + } + } + if (need_awoke == pdTRUE) { + portYIELD_FROM_ISR(); + } +} + + +esp_err_t dac_new_conti_channels(const dac_conti_config_t *conti_cfg, dac_conti_handle_t *ret_handle) +{ +#if CONFIG_DAC_ENABLE_DEBUG_LOG + esp_log_level_set(TAG, ESP_LOG_DEBUG); +#endif + /* Parameters validation */ + DAC_NULL_POINTER_CHECK(conti_cfg); + DAC_NULL_POINTER_CHECK(ret_handle); + ESP_RETURN_ON_FALSE(conti_cfg->chan_mask <= DAC_CHANNEL_MASK_ALL, ESP_ERR_INVALID_ARG, TAG, "invalid dac channel id"); + ESP_RETURN_ON_FALSE(conti_cfg->desc_num > 1, ESP_ERR_INVALID_STATE, TAG, "at least two DMA descriptor needed"); + ESP_RETURN_ON_FALSE(!s_dma_in_use, ESP_ERR_INVALID_STATE, TAG, "DMA already in use"); + + esp_err_t ret = ESP_OK; + + /* Register the channels */ + for (uint32_t i = 0, mask = conti_cfg->chan_mask; mask; mask >>= 1, i++) { + if (mask & 0x01) { + ESP_GOTO_ON_ERROR(dac_priv_register_channel(i, "dac continuous"), + err4, TAG, "register dac channel %"PRIu32" failed", i); + } + } + + /* Allocate continuous mode struct */ + dac_conti_handle_t handle = heap_caps_calloc(1, sizeof(struct dac_conti_s), DAC_MEM_ALLOC_CAPS); + ESP_RETURN_ON_FALSE(handle, ESP_ERR_NO_MEM, TAG, "no memory for the dac continuous mode structure"); + + /* Allocate static queue */ + handle->desc_pool_storage = (uint8_t *)heap_caps_calloc(conti_cfg->desc_num, sizeof(lldesc_t *), DAC_MEM_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(handle->desc_pool_storage, ESP_ERR_NO_MEM, err3, TAG, "no memory for message queue storage"); + handle->desc_pool = xQueueCreateStatic(conti_cfg->desc_num, sizeof(lldesc_t *), handle->desc_pool_storage, &handle->desc_pool_struct); + ESP_GOTO_ON_FALSE(handle->desc_pool, ESP_ERR_NO_MEM, err3, TAG, "no memory for message queue"); + + /* Allocate static mutex */ + handle->mutex = xSemaphoreCreateMutexStatic(&handle->mutex_struct); + ESP_GOTO_ON_FALSE(handle->mutex, ESP_ERR_NO_MEM, err3, TAG, "no memory for channels mutex"); + + /* Create PM lock */ +#if CONFIG_PM_ENABLE + esp_pm_lock_type_t pm_lock_type = conti_cfg->clk_src == DAC_DIGI_CLK_SRC_APLL ? ESP_PM_NO_LIGHT_SLEEP : ESP_PM_APB_FREQ_MAX; + ESP_GOTO_ON_ERROR(esp_pm_lock_create(pm_lock_type, 0, "dac_driver", &handle->pm_lock), err3, TAG, "Failed to create DAC pm lock"); +#endif + handle->chan_cnt = __builtin_popcount(conti_cfg->chan_mask); + memcpy(&(handle->cfg), conti_cfg, sizeof(dac_conti_config_t)); + + atomic_init(&handle->is_enabled, false); + atomic_init(&handle->is_cyclic, false); + atomic_init(&handle->is_running, false); + atomic_init(&handle->is_async, false); + + /* Allocate DMA buffer */ + ESP_GOTO_ON_ERROR(s_dac_alloc_dma_desc(handle), err2, TAG, "Failed to allocate memory for DMA buffers"); + + /* Initialize DAC DMA peripheral */ + ESP_GOTO_ON_ERROR(dac_dma_periph_init(conti_cfg->freq_hz, + conti_cfg->chan_mode == DAC_CHANNEL_MODE_ALTER, + conti_cfg->clk_src == DAC_DIGI_CLK_SRC_APLL), + err2, TAG, "Failed to initialize DAC DMA peripheral"); + /* Register DMA interrupt */ + ESP_GOTO_ON_ERROR(esp_intr_alloc(dac_dma_periph_get_intr_signal(), DAC_INTR_ALLOC_FLAGS, + s_dac_default_intr_handler, handle, &(handle->intr_handle)), + err1, TAG, "Failed to register DAC DMA interrupt"); + /* Connect DAC module to the DMA peripheral */ + DAC_RTC_ENTER_CRITICAL(); + dac_ll_digi_enable_dma(true); + DAC_RTC_EXIT_CRITICAL(); + s_dma_in_use = true; + *ret_handle = handle; + return ret; + +err1: + dac_dma_periph_deinit(); +err2: + s_dac_free_dma_desc(handle); +err3: + if (handle->desc_pool) { + vQueueDelete(handle->desc_pool); + } + if (handle->desc_pool_storage) { + free(handle->desc_pool_storage); + } + if (handle->mutex) { + vSemaphoreDelete(handle->mutex); + } + free(handle); +err4: + /* Deregister the channels */ + for (uint32_t i = 0, mask = conti_cfg->chan_mask; mask; mask >>= 1, i++) { + if (mask & 0x01) { + dac_priv_deregister_channel(i); + } + } + return ret; +} + +esp_err_t dac_del_conti_channels(dac_conti_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(!atomic_load(&handle->is_enabled), ESP_ERR_INVALID_STATE, TAG, "dac continuous output not disabled yet"); + + /* Deregister DMA interrupt */ + if (handle->intr_handle) { + ESP_RETURN_ON_ERROR(esp_intr_free(handle->intr_handle), TAG, "Failed to deregister DMA interrupt"); + handle->intr_handle = NULL; + } + /* Deinitialize DMA peripheral */ + ESP_RETURN_ON_ERROR(dac_dma_periph_deinit(), TAG, "Failed to deinitialize DAC DMA peripheral"); + /* Disconnect DAC module from the DMA peripheral */ + DAC_RTC_ENTER_CRITICAL(); + dac_ll_digi_enable_dma(false); + DAC_RTC_EXIT_CRITICAL(); + + /* Free allocated resources */ + s_dac_free_dma_desc(handle); + if (handle->desc_pool) { + vQueueDelete(handle->desc_pool); + handle->desc_pool = NULL; + } + if (handle->desc_pool_storage) { + free(handle->desc_pool_storage); + handle->desc_pool_storage = NULL; + } + if (handle->mutex) { + vSemaphoreDelete(handle->mutex); + handle->mutex = NULL; + } +#if CONFIG_PM_ENABLE + if (handle->pm_lock) { + esp_pm_lock_delete(handle->pm_lock); + handle->pm_lock = NULL; + } +#endif + + /* Deregister the channels */ + for (uint32_t i = 0, mask = handle->cfg.chan_mask; mask; mask >>= 1, i++) { + if (mask & 0x01) { + dac_priv_deregister_channel(i); + } + } + free(handle); + s_dma_in_use = false; + + return ESP_OK; +} + +esp_err_t dac_conti_register_event_callback(dac_conti_handle_t handle, const dac_event_callbacks_t *callbacks, void *user_data) +{ + DAC_NULL_POINTER_CHECK(handle); + if (!callbacks) { + memset(&handle->cbs, 0, sizeof(dac_event_callbacks_t)); + return ESP_OK; + } +#if CONFIG_DAC_ISR_IRAM_SAFE + if (callbacks->on_convert_done) { + ESP_RETURN_ON_FALSE(esp_ptr_in_iram(callbacks->on_convert_done), ESP_ERR_INVALID_ARG, TAG, "on_convert_done callback not in IRAM"); + } + if (callbacks->on_stop) { + ESP_RETURN_ON_FALSE(esp_ptr_in_iram(callbacks->on_stop), ESP_ERR_INVALID_ARG, TAG, "on_stop callback not in IRAM"); + } + if (user_data) { + ESP_RETURN_ON_FALSE(esp_ptr_internal(user_data), ESP_ERR_INVALID_ARG, TAG, "user context not in internal RAM"); + } +#endif + memcpy(&handle->cbs, callbacks, sizeof(dac_event_callbacks_t)); + handle->user_data = user_data; + + return ESP_OK; +} + +esp_err_t dac_conti_enable(dac_conti_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(!atomic_load(&handle->is_enabled), ESP_ERR_INVALID_STATE, TAG, "dac continuous has already enabled"); + esp_err_t ret = ESP_OK; + /* Reset the descriptor pool */ + xQueueReset(handle->desc_pool); + for ( int i = 0; i < handle->cfg.desc_num; i++) { + ESP_GOTO_ON_FALSE(xQueueSend(handle->desc_pool, &handle->desc[i], 0) == pdTRUE, + ESP_ERR_INVALID_STATE, err, TAG, "the descriptor pool is not cleared"); + } +#ifdef CONFIG_PM_ENABLE + esp_pm_lock_acquire(handle->pm_lock); +#endif + for (uint32_t i = 0, mask = handle->cfg.chan_mask; mask; mask >>= 1, i++) { + if (mask & 0x01) { + dac_priv_enable_channel(i); + } + } + dac_dma_periph_enable(); + esp_intr_enable(handle->intr_handle); + DAC_RTC_ENTER_CRITICAL(); + dac_ll_digi_enable_dma(true); + DAC_RTC_EXIT_CRITICAL(); + atomic_store(&handle->is_enabled, true); +err: + return ret; +} + +esp_err_t dac_conti_disable(dac_conti_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(atomic_load(&handle->is_enabled), ESP_ERR_INVALID_STATE, TAG, "dac continuous has already disabled"); + atomic_store(&handle->is_enabled, false); + dac_dma_periph_disable(); + esp_intr_disable(handle->intr_handle); + DAC_RTC_ENTER_CRITICAL(); + dac_ll_digi_enable_dma(false); + DAC_RTC_EXIT_CRITICAL(); + atomic_store(&handle->is_running, false); + for (uint32_t i = 0, mask = handle->cfg.chan_mask; mask; mask >>= 1, i++) { + if (mask & 0x01) { + dac_priv_disable_channel(i); + } + } +#ifdef CONFIG_PM_ENABLE + esp_pm_lock_release(handle->pm_lock); +#endif + return ESP_OK; +} + +esp_err_t dac_conti_start_async_writing(dac_conti_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(atomic_load(&handle->is_enabled), ESP_ERR_INVALID_STATE, TAG, "dac continuous has not been enabled"); + ESP_RETURN_ON_FALSE(handle->cbs.on_convert_done, ESP_ERR_INVALID_STATE, TAG, + "please register 'on_convert_done' callback before starting asynchronous writing"); + + atomic_store(&handle->is_async, true); + + if (atomic_load(&handle->is_cyclic)) { + /* Break the DMA descriptor chain to stop the DMA first */ + for (int i = 0; i < handle->cfg.desc_num; i++) { + handle->desc[i]->empty = 0; + } + } + /* Wait for the previous DMA stop */ + while (atomic_load(&handle->is_running)) {} + + /* Link all descriptors as a ring */ + for (int i = 0; i < handle->cfg.desc_num; i++) { + memset(handle->bufs[i], 0, handle->cfg.buf_size); + handle->desc[i]->empty = (uint32_t)(i < handle->cfg.desc_num - 1 ? handle->desc[i + 1] : handle->desc[0]); + } + dac_dma_periph_dma_trans_start((uint32_t)handle->desc[0]); + atomic_store(&handle->is_running, true); + + return ESP_OK; +} + +esp_err_t dac_conti_stop_async_writing(dac_conti_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(atomic_load(&handle->is_async), ESP_ERR_INVALID_STATE, TAG, "dac asynchronous writing has not been started"); + + /* Break the DMA descriptor chain to stop the DMA first */ + for (int i = 0; i < handle->cfg.desc_num; i++) { + handle->desc[i]->empty = 0; + } + /* Wait for the previous DMA stop */ + while (atomic_load(&handle->is_running)) {} + atomic_store(&handle->is_async, false); + + return ESP_OK; +} + +/* Buffer expanding coefficient, the input buffer will expand to twice length while enabled AUTO_16_BIT */ +#if CONFIG_DAC_DMA_AUTO_16BIT_ALIGN +#define DAC_16BIT_ALIGN_COEFF 2 +#else +#define DAC_16BIT_ALIGN_COEFF 1 +#endif + +static size_t s_dac_load_data_into_buf(dac_conti_handle_t handle, uint8_t *dest, size_t dest_len, const uint8_t *src, size_t src_len) +{ + size_t load_bytes = 0; +#if CONFIG_DAC_DMA_AUTO_16BIT_ALIGN + /* Load the data to the high 8 bit in the 16-bit width slot */ + load_bytes = (src_len * 2 > dest_len) ? dest_len : src_len * 2; + for (int i = 0; i < load_bytes; i += 2) { + dest[i + 1] = src[i / 2] + handle->cfg.offset; + } +#else + /* Load the data into the DMA buffer */ + load_bytes = (src_len > dest_len) ? dest_len : src_len; + for (int i = 0; i < load_bytes; i++) { + dest[i] = src[i] + handle->cfg.offset; + } +#endif + return load_bytes; +} + +esp_err_t dac_conti_write_asynchronously(dac_conti_handle_t handle, uint8_t *dma_buf, + size_t dma_buf_len, const uint8_t *data, + size_t data_len, size_t *bytes_loaded) +{ + DAC_NULL_POINTER_CHECK_ISR(handle); + DAC_NULL_POINTER_CHECK_ISR(dma_buf); + DAC_NULL_POINTER_CHECK_ISR(data); + ESP_RETURN_ON_FALSE_ISR(atomic_load(&handle->is_async), ESP_ERR_INVALID_STATE, TAG, "The asynchronous writing has not started"); + int i; + for (i = 0; i < handle->cfg.desc_num; i++) { + if (dma_buf == handle->bufs[i]) { + break; + } + } + /* Fail to find the DMA buffer address */ + ESP_RETURN_ON_FALSE_ISR(i < handle->cfg.desc_num, ESP_ERR_NOT_FOUND, TAG, "Not found the corresponding DMA buffer"); + size_t load_bytes = s_dac_load_data_into_buf(handle, dma_buf, dma_buf_len, data, data_len); + lldesc_config(handle->desc[i], LLDESC_HW_OWNED, 1, 0, load_bytes); + if (bytes_loaded) { + *bytes_loaded = load_bytes / DAC_16BIT_ALIGN_COEFF; + } + return ESP_OK; +} + +esp_err_t dac_conti_write_cyclically(dac_conti_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(atomic_load(&handle->is_enabled), ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); + ESP_RETURN_ON_FALSE(!atomic_load(&handle->is_async), ESP_ERR_INVALID_STATE, TAG, "Asynchronous writing is running, can't write cyclically"); + ESP_RETURN_ON_FALSE(buf_size <= handle->cfg.buf_size * handle->cfg.desc_num, ESP_ERR_INVALID_ARG, TAG, + "The cyclic buffer size exceeds the total DMA buffer size: %"PRIu32"(desc_num) * %d(buf_size) = %"PRIu32, + handle->cfg.desc_num, handle->cfg.buf_size, handle->cfg.buf_size * handle->cfg.desc_num); + + esp_err_t ret = ESP_OK; + xSemaphoreTake(handle->mutex, portMAX_DELAY); + if (atomic_load(&handle->is_cyclic)) { + /* Break the DMA descriptor chain to stop the DMA first */ + for (int i = 0; i < handle->cfg.desc_num; i++) { + handle->desc[i]->empty = 0; + } + } + /* Wait for the previous DMA stop */ + while (atomic_load(&handle->is_running)) {} + atomic_store(&handle->is_cyclic, true); + + size_t src_buf_size = buf_size; + uint32_t split = 1; + int i; + for (i = 0; i < handle->cfg.desc_num && buf_size > 0; i++) { + /* To spread data more averagely, average the last two descriptors */ + split = (buf_size * DAC_16BIT_ALIGN_COEFF < handle->cfg.buf_size * 2) ? 3 - split : 1; + size_t load_bytes = s_dac_load_data_into_buf(handle, handle->bufs[i], handle->cfg.buf_size, buf, buf_size / split); + lldesc_config(handle->desc[i], LLDESC_HW_OWNED, 1, 0, load_bytes); + /* Link to the next descriptor */ + handle->desc[i]->empty = (uint32_t)(i < handle->cfg.desc_num - 1 ? handle->desc[i + 1] :0); + buf_size -= load_bytes / DAC_16BIT_ALIGN_COEFF; + buf += load_bytes / DAC_16BIT_ALIGN_COEFF; + } + /* Link the tail to the head as a ring */ + handle->desc[i-1]->empty = (uint32_t)(handle->desc[0]); + + dac_dma_periph_dma_trans_start((uint32_t)handle->desc[0]); + atomic_store(&handle->is_running, true); + if (bytes_loaded) { + *bytes_loaded = src_buf_size - buf_size; + } + + xSemaphoreGive(handle->mutex); + return ret; +} + +static esp_err_t s_dac_wait_to_load_dma_data(dac_conti_handle_t handle, uint8_t *buf, size_t buf_size, size_t *w_size, TickType_t timeout_tick) +{ + lldesc_t *desc; + /* Try to get the descriptor from the pool */ + ESP_RETURN_ON_FALSE(xQueueReceive(handle->desc_pool, &desc, timeout_tick) == pdTRUE, + ESP_ERR_TIMEOUT, TAG, "Get available descriptor timeout"); + /* To ensure it is not in the pending desc chain */ + if (STAILQ_FIRST(&handle->head) != NULL) { + DAC_STAILQ_REMOVE(&handle->head, desc, lldesc_s, qe); + } + + static bool split_flag = false; + uint8_t *dma_buf = (uint8_t *)desc->buf; + if (buf_size * DAC_16BIT_ALIGN_COEFF < 2 * handle->cfg.buf_size) { + if (!split_flag) { + buf_size >>= 1; + split_flag = true; + } else { + split_flag = false; + } + } + size_t load_bytes = s_dac_load_data_into_buf(handle, dma_buf, handle->cfg.buf_size, buf, buf_size); + lldesc_config(desc, LLDESC_HW_OWNED, 1, 0, load_bytes); + desc->size = load_bytes; + *w_size = load_bytes / DAC_16BIT_ALIGN_COEFF; + /* Insert the loaded descriptor to the end of the chain, waiting to be sent */ + DESC_ENTER_CRITICAL(); + STAILQ_INSERT_TAIL(&handle->head, desc, qe); + DESC_EXIT_CRITICAL(); + + return ESP_OK; +} + +esp_err_t dac_conti_write(dac_conti_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded, int timeout_ms) +{ + DAC_NULL_POINTER_CHECK(handle); + DAC_NULL_POINTER_CHECK(buf); + ESP_RETURN_ON_FALSE(atomic_load(&handle->is_enabled), ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); + ESP_RETURN_ON_FALSE(!atomic_load(&handle->is_async), ESP_ERR_INVALID_STATE, TAG, "Asynchronous writing is running, can't write synchronously"); + + esp_err_t ret = ESP_OK; + TickType_t timeout_tick = timeout_ms < 0 ? portMAX_DELAY : pdMS_TO_TICKS(timeout_ms); + ESP_RETURN_ON_FALSE(xSemaphoreTake(handle->mutex, timeout_tick) == pdTRUE, ESP_ERR_TIMEOUT, TAG, "Take semaphore timeout"); + + size_t w_size = 0; + size_t src_buf_size = buf_size; + /* Reset the desc_pool and chain if called cyclic function last time */ + if (atomic_load(&handle->is_cyclic)) { + xQueueReset(handle->desc_pool); + /* Break the chain if DMA still running */ + for (int i = 0; i < handle->cfg.desc_num; i++) { + handle->desc[i]->empty = 0; + xQueueSend(handle->desc_pool, &handle->desc[i], 0); + } + STAILQ_INIT(&handle->head); + atomic_store(&handle->is_cyclic, false); + } + /* When there is no descriptor in the chain, DMA has stopped, load data and start the DMA link */ + if (STAILQ_FIRST(&handle->head) == NULL) { + /* Wait for the previous DMA stop */ + while (atomic_load(&handle->is_running)) {} + for (int i = 0; + i < handle->cfg.desc_num && buf_size > 0; + i++, buf += w_size, buf_size -= w_size) { + ESP_GOTO_ON_ERROR(s_dac_wait_to_load_dma_data(handle, buf, buf_size, &w_size, timeout_tick), err, TAG, "Load data failed"); + } + dac_dma_periph_dma_trans_start((uint32_t)(STAILQ_FIRST(&handle->head))); + atomic_store(&handle->is_running, true); + } + /* If the source buffer is not totally loaded, keep loading the rest data */ + while (buf_size > 0) { + ESP_GOTO_ON_ERROR(s_dac_wait_to_load_dma_data(handle, buf, buf_size, &w_size, timeout_tick), err, TAG, "Load data failed"); + /* If the DMA stopped but there are still some descriptors not sent, start the DMA again */ + DESC_ENTER_CRITICAL(); + if (STAILQ_FIRST(&handle->head) && !atomic_load(&handle->is_running)) { + dac_dma_periph_dma_trans_start((uint32_t)(STAILQ_FIRST(&handle->head))); + atomic_store(&handle->is_running, true); + } + DESC_EXIT_CRITICAL(); + buf += w_size; + buf_size -= w_size; + } +err: + /* The bytes number that has been loaded */ + if (bytes_loaded) { + *bytes_loaded = src_buf_size - buf_size; + } + xSemaphoreGive(handle->mutex); + return ret; +} diff --git a/components/driver/dac/dac_cosine.c b/components/driver/dac/dac_cosine.c new file mode 100644 index 0000000000..57b8389ac6 --- /dev/null +++ b/components/driver/dac/dac_cosine.c @@ -0,0 +1,154 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include "soc/soc_caps.h" +#include "driver/dac_cosine.h" +#include "hal/clk_tree_ll.h" +#include "dac_priv_common.h" +#include "clk_ctrl_os.h" +#include "esp_check.h" + +#if CONFIG_DAC_ENABLE_DEBUG_LOG +// The local log level must be defined before including esp_log.h +// Set the maximum log level for this source file +#define LOG_LOCAL_LEVEL ESP_LOG_DEBUG +#endif +#if CONFIG_PM_ENABLE +#include "esp_pm.h" +#endif + +struct dac_cosine_s { + dac_cosine_config_t cfg; /*!< Cosine mode configurations */ + bool is_started; /*!< Flag: is the channel started(not cosine wave generator) */ +}; + +static const char *TAG = "dac_cosine"; + +/* Cosine wave generator reference count + * The cosine wave generator is shared by dac channels */ +static uint32_t s_cwg_refer_cnt = 0; + +/* The frequency of cosine wave generator */ +static uint32_t s_cwg_freq = 0; + +esp_err_t dac_new_cosine_channel(const dac_cosine_config_t *cos_cfg, dac_cosine_handle_t *ret_handle) +{ +#if CONFIG_DAC_ENABLE_DEBUG_LOG + esp_log_level_set(TAG, ESP_LOG_DEBUG); +#endif + /* Parameters validation */ + DAC_NULL_POINTER_CHECK(cos_cfg); + DAC_NULL_POINTER_CHECK(ret_handle); + ESP_RETURN_ON_FALSE(cos_cfg->chan_id < SOC_DAC_CHAN_NUM, ESP_ERR_INVALID_ARG, TAG, "invalid dac channel id"); + ESP_RETURN_ON_FALSE(cos_cfg->freq_hz >= (130 / clk_ll_rc_fast_get_divider()), ESP_ERR_NOT_SUPPORTED, TAG, "The cosine wave frequency is too low"); + ESP_RETURN_ON_FALSE((!s_cwg_freq) || cos_cfg->flags.force_set_freq || (cos_cfg->freq_hz == s_cwg_freq), + ESP_ERR_INVALID_STATE, TAG, "The cosine wave frequency has set already, not allowed to update unless `force_set_freq` is set"); + + esp_err_t ret = ESP_OK; + /* Allocate cosine handle */ + dac_cosine_handle_t handle = heap_caps_calloc(1, sizeof(struct dac_cosine_s), MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT); + ESP_RETURN_ON_FALSE(handle, ESP_ERR_NO_MEM, TAG, "no memory for the dac cosine handle"); + /* Assign configurations */ + memcpy(&handle->cfg, cos_cfg, sizeof(dac_cosine_config_t)); + /* Register the handle */ + ESP_GOTO_ON_ERROR(dac_priv_register_channel(cos_cfg->chan_id, "dac cosine"), err1, TAG, "register dac channel %d failed", cos_cfg->chan_id); + + /* Only enabled for getting the correct rtc clock frequency */ + periph_rtc_dig_clk8m_enable(); + /* Cosine wave generator uses RTC_FAST clock which is divided from RC_FAST */ + // [clk_tree] TODO: replace the following calculation with the RTC_FAST frequency getter + uint32_t rtc_clk_freq = periph_rtc_dig_clk8m_get_freq() / clk_ll_rc_fast_get_divider(); + /* Disabled after getting the frequency, will re-enabled again when start outputting cosine wave */ + periph_rtc_dig_clk8m_disable(); + if (rtc_clk_freq == 0) { + ESP_LOGW(TAG, "RTC clock calibration failed, using the approximate value as default"); + rtc_clk_freq = SOC_CLK_RC_FAST_FREQ_APPROX; + } + DAC_RTC_ENTER_CRITICAL(); + /* Set coefficients for cosine wave generator */ + if ((!s_cwg_freq) || cos_cfg->flags.force_set_freq) { + dac_ll_cw_set_freq(cos_cfg->freq_hz, rtc_clk_freq); + s_cwg_freq = cos_cfg->freq_hz; + } + dac_ll_cw_set_atten(cos_cfg->chan_id, cos_cfg->atten); + dac_ll_cw_set_phase(cos_cfg->chan_id, cos_cfg->phase); + dac_ll_cw_set_dc_offset(cos_cfg->chan_id, cos_cfg->offset); + DAC_RTC_EXIT_CRITICAL(); + + *ret_handle = handle; + return ret; + +err1: + free(handle); + return ret; +} + +esp_err_t dac_del_cosine_channel(dac_cosine_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(!handle->is_started, ESP_ERR_INVALID_STATE, TAG, + "the dac cosine generator is not stopped yet"); + + ESP_RETURN_ON_ERROR(dac_priv_deregister_channel(handle->cfg.chan_id), TAG, + "deregister dac channel %d failed", handle->cfg.chan_id); + /* Clear the frequency if no channel using it */ + if (!s_cwg_refer_cnt) { + s_cwg_freq = 0; + } + free(handle); + + return ESP_OK; +} + +esp_err_t dac_cosine_start(dac_cosine_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(!handle->is_started, ESP_ERR_INVALID_STATE, TAG, + "the dac channel has already started"); + /* Acquire the RTC clock */ + periph_rtc_dig_clk8m_enable(); + /* Enabled DAC channel */ + ESP_RETURN_ON_ERROR(dac_priv_enable_channel(handle->cfg.chan_id), TAG, + "enable dac channel %d failed", handle->cfg.chan_id); + /* Enabled the cosine wave generator if no channel using it before */ + DAC_RTC_ENTER_CRITICAL(); + if (s_cwg_refer_cnt == 0) { + dac_ll_cw_generator_enable(); + } + /* Connect the DAC channel to the cosine wave generator */ + dac_ll_cw_enable_channel(handle->cfg.chan_id, true); + s_cwg_refer_cnt++; + handle->is_started = true; + DAC_RTC_EXIT_CRITICAL(); + + return ESP_OK; +} + +esp_err_t dac_cosine_stop(dac_cosine_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_started, ESP_ERR_INVALID_STATE, TAG, + "the dac channel has already stopped"); + + /* Enabled DAC channel */ + ESP_RETURN_ON_ERROR(dac_priv_disable_channel(handle->cfg.chan_id), TAG, + "disable dac channel %d failed", handle->cfg.chan_id); + DAC_RTC_ENTER_CRITICAL(); + /* Disconnect the DAC channel from the cosine wave generator */ + dac_ll_cw_enable_channel(handle->cfg.chan_id, false); + s_cwg_refer_cnt--; + /* Disable the cosine wave generator if no channel using it */ + if (s_cwg_refer_cnt == 0) { + dac_ll_cw_generator_disable(); + } + handle->is_started = false; + DAC_RTC_EXIT_CRITICAL(); + /* Release the RTC clock */ + periph_rtc_dig_clk8m_disable(); + + return ESP_OK; +} diff --git a/components/driver/dac/dac_driver.c b/components/driver/dac/dac_driver.c deleted file mode 100644 index ed5a7039ab..0000000000 --- a/components/driver/dac/dac_driver.c +++ /dev/null @@ -1,781 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include -#include -#include -#include "freertos/FreeRTOS.h" -#include "freertos/queue.h" -#include "freertos/semphr.h" - -#include "sdkconfig.h" - -#include "rom/lldesc.h" -#include "soc/soc_caps.h" -#include "soc/dac_periph.h" -#include "hal/dac_types.h" -#include "hal/dac_ll.h" -#include "driver/rtc_io.h" -#include "driver/dac_driver.h" -#include "dac_dma.h" -#include "esp_memory_utils.h" -#include "clk_ctrl_os.h" - -#if CONFIG_DAC_ENABLE_DEBUG_LOG -// The local log level must be defined before including esp_log.h -// Set the maximum log level for this source file -#define LOG_LOCAL_LEVEL ESP_LOG_DEBUG -#endif -#include "esp_check.h" -#if CONFIG_PM_ENABLE -#include "esp_pm.h" -#endif - -#define DAC_DMA_MAX_BUF_SIZE 4092 // Max DMA buffer size is 4095 but better to align with 4 bytes, so set 4092 here -#if CONFIG_DAC_ISR_IRAM_SAFE || CONFIG_DAC_CTRL_FUNC_IN_IRAM - #define DAC_MEM_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT) -#else - #define DAC_MEM_ALLOC_CAPS MALLOC_CAP_DEFAULT -#endif - -#if CONFIG_DAC_ISR_IRAM_SAFE - #define DAC_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_INTRDISABLED | ESP_INTR_FLAG_SHARED) -#else - #define DAC_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_INTRDISABLED | ESP_INTR_FLAG_SHARED) -#endif - -#define DAC_DMA_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_DMA) - -#define DAC_STAILQ_REMOVE(head, elm, type, field) do { \ - if ((head)->stqh_first == (elm)) { \ - STAILQ_REMOVE_HEAD((head), field); \ - } else { \ - struct type *curelm = (head)->stqh_first; \ - while (curelm->field.stqe_next != (elm) && \ - curelm->field.stqe_next != NULL) \ - curelm = curelm->field.stqe_next; \ - if (curelm->field.stqe_next && (curelm->field.stqe_next = \ - curelm->field.stqe_next->field.stqe_next) == NULL) \ - (head)->stqh_last = &(curelm)->field.stqe_next; \ - } \ -} while (/*CONSTCOND*/0) - -typedef enum { - DAC_STATE_INITIAL, /* Initial state, dac has been registered */ - DAC_STATE_OUTPUT_READY, /* DAC channels enabled and ready to output constant voltage */ - DAC_STATE_DMA_READY, /* DMA mode initialized, but not started */ - DAC_STATE_CW_READY, /* Cosine wave mode is initialized, but not started */ - DAC_STATE_DMA_ENABLED, /* DAC DMA dma is enabled, can't switch mode in this stage */ - DAC_STATE_CW_RUNNING, /* DAC cosine wave generator is running, can't switch mode in this stage */ -} dac_state_t; - -typedef struct { - QueueHandle_t desc_pool; /* The pool of available descriptors - * The descriptors in the pool are not linked in to pending chain */ -#if CONFIG_DAC_ISR_IRAM_SAFE - StaticQueue_t *desc_pool_struct; /* Static message queue struct */ - void *desc_pool_storage; /* Static message queue storage */ -#endif - dac_conti_config_t cfg; - STAILQ_HEAD(desc_chain_s, lldesc_s) head; /* Head of the descriptor chain - * The descriptors in the chain are pending to be sent or sending now */ - lldesc_t **desc; - uint8_t **bufs; - volatile bool is_running; /* Is DMA running or stopped */ - volatile bool is_cyclic; /* Is transport data cyclicly */ -} dac_dma_t; - -typedef struct dac_channel_chain_node_s { - dac_channel_t id; - SLIST_ENTRY(dac_channel_chain_node_s) next; -} dac_channel_info_t; - -typedef SLIST_HEAD(dac_channel_chain_s, dac_channel_chain_node_s) dac_channel_chain_t; - -struct dac_channels_s { - uint32_t chan_num; - dac_state_t state; - SemaphoreHandle_t mutex; - StaticSemaphore_t *mutex_struct; /*!< Static mutex struct */ -#if CONFIG_PM_ENABLE - esp_pm_lock_handle_t pm_lock; -#endif - bool is_enabled; - dac_dma_t dma; - dac_cosine_config_t sw_cfg; - dac_channel_chain_t head; -}; - -typedef struct { - dac_channel_info_t *chan[SOC_DAC_PERIPH_NUM]; - bool dma_in_use; -} dac_platform_t; - -static const char *TAG = "DAC"; - -static dac_platform_t s_dac = { - .chan = { - [0 ... SOC_DAC_PERIPH_NUM - 1] = NULL, - }, - .dma_in_use = false, -}; - -/* Global dac spin lock for the whole DAC driver */ -portMUX_TYPE dac_spinlock = portMUX_INITIALIZER_UNLOCKED; // TODO: check rtc_spinlock - -#define DAC_NULL_POINTER_CHECK(p) ESP_RETURN_ON_FALSE((p), ESP_ERR_INVALID_ARG, TAG, "input parameter '"#p"' is NULL") - -static void dac_free_dma_desc(dac_channels_handle_t handle) -{ - STAILQ_EMPTY(&handle->dma.head); - if (handle->dma.desc != NULL) { - for (int i = 0; i < handle->dma.cfg.desc_num; i++) { - if (handle->dma.desc[i]) { - free(handle->dma.desc[i]); - handle->dma.desc[i] = NULL; - } - } - free(handle->dma.desc); - handle->dma.desc = NULL; - } - - if (handle->dma.bufs != NULL) { - for (int i = 0; i < handle->dma.cfg.desc_num; i++) { - if (handle->dma.bufs[i]) { - free(handle->dma.bufs[i]); - handle->dma.bufs[i] = NULL; - } - } - free(handle->dma.bufs); - handle->dma.bufs = NULL; - } -} - -static esp_err_t dac_alloc_dma_desc(dac_channels_handle_t handle) -{ - esp_err_t ret = ESP_OK; - - STAILQ_INIT(&handle->dma.head); - handle->dma.desc = (lldesc_t **) heap_caps_calloc(handle->dma.cfg.desc_num, sizeof(lldesc_t *), DAC_MEM_ALLOC_CAPS); - ESP_RETURN_ON_FALSE(handle->dma.desc, ESP_ERR_NO_MEM, TAG, "Faild to allocate dma descriptor array"); - handle->dma.bufs = (uint8_t **) heap_caps_calloc(handle->dma.cfg.desc_num, sizeof(uint8_t *), DAC_MEM_ALLOC_CAPS); - ESP_RETURN_ON_FALSE(handle->dma.bufs, ESP_ERR_NO_MEM, TAG, "Faild to allocate dma buffer array"); - for (int cnt = 0; cnt < handle->dma.cfg.desc_num; cnt++) { - /* Allocate DMA descpriptor */ - handle->dma.desc[cnt] = (lldesc_t *) heap_caps_calloc(1, sizeof(lldesc_t), DAC_DMA_ALLOC_CAPS); - ESP_GOTO_ON_FALSE(handle->dma.desc[cnt], ESP_ERR_NO_MEM, err, TAG, "failed to allocate dma descriptor"); - /* Allocate DMA buffer */ - handle->dma.bufs[cnt] = (uint8_t *) heap_caps_calloc(1, handle->dma.cfg.buf_size, DAC_DMA_ALLOC_CAPS); - ESP_GOTO_ON_FALSE(handle->dma.desc[cnt], ESP_ERR_NO_MEM, err, TAG, "failed to allocate dma buffer"); - /* Assign initial value */ - lldesc_config(handle->dma.desc[cnt], LLDESC_HW_OWNED, 1, 0, handle->dma.cfg.buf_size); - handle->dma.desc[cnt]->size = handle->dma.cfg.buf_size; - handle->dma.desc[cnt]->buf = handle->dma.bufs[cnt]; - handle->dma.desc[cnt]->offset = 0; - xQueueSend(handle->dma.desc_pool, &handle->dma.desc[cnt], portMAX_DELAY); - } - - return ESP_OK; -err: - /* Free DMA buffer if failed to allocate memory */ - dac_free_dma_desc(handle); - return ret; -} - -static void IRAM_ATTR dac_default_intr_handler(void *arg) -{ - dac_channels_handle_t handle = (dac_channels_handle_t)arg; - uint32_t dummy; - BaseType_t need_awoke = pdFALSE; - BaseType_t tmp; - uint32_t intr_mask = dac_dma_periph_intr_is_triggered(); - if ((intr_mask & DAC_DMA_EOF_INTR) && (!handle->dma.is_cyclic)) { - lldesc_t *fdesc = (lldesc_t *)dac_dma_periph_intr_get_eof_desc(); - /* Remove the descriptor in the chain that finished sent */ - portENTER_CRITICAL(&dac_spinlock); - if (STAILQ_FIRST(&handle->dma.head) != NULL) { - DAC_STAILQ_REMOVE(&handle->dma.head, fdesc, lldesc_s, qe); - } - portEXIT_CRITICAL(&dac_spinlock); - if (xQueueIsQueueFullFromISR(handle->dma.desc_pool) == pdTRUE) { - xQueueReceiveFromISR(handle->dma.desc_pool, &dummy, &tmp); - need_awoke |= tmp; - } - xQueueSendFromISR(handle->dma.desc_pool, &fdesc, &tmp); - need_awoke |= tmp; - } - if (intr_mask & DAC_DMA_TEOF_INTR) { - /* Total end of frame interrupt received, DMA stopped */ - handle->dma.is_running = false; - } - if (need_awoke == pdTRUE) { - portYIELD_FROM_ISR(); - } -} - -/*-------------------------------------------------------------------------- - DAC common APIs - ---------------------------------------------------------------------------*/ -esp_err_t dac_new_channels(const dac_channels_config_t *dac_cfg, dac_channels_handle_t *handle) -{ -#if CONFIG_DAC_ENABLE_DEBUG_LOG - esp_log_level_set(TAG, ESP_LOG_DEBUG); -#endif - esp_err_t ret = ESP_OK; - - DAC_NULL_POINTER_CHECK(dac_cfg); - DAC_NULL_POINTER_CHECK(handle); - - ESP_RETURN_ON_FALSE((uint32_t)dac_cfg->chan_sel > 0, ESP_ERR_INVALID_ARG, TAG, "invalid DAC channel"); - ESP_RETURN_ON_FALSE((32 - __builtin_clz((uint32_t)dac_cfg->chan_sel)) <= SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "invalid DAC channel"); - - dac_channels_handle_t channels = (dac_channels_handle_t)heap_caps_calloc(1, sizeof(struct dac_channels_s), DAC_MEM_ALLOC_CAPS); - ESP_RETURN_ON_FALSE(channels, ESP_ERR_NO_MEM, TAG, "No memory for DAC channels' structure"); - - channels->mutex_struct = (StaticSemaphore_t *)heap_caps_calloc(1, sizeof(StaticSemaphore_t), DAC_MEM_ALLOC_CAPS); - ESP_GOTO_ON_FALSE(channels->mutex_struct, ESP_ERR_NO_MEM, err, TAG, "No memory for channels mutex struct"); - channels->mutex = xSemaphoreCreateMutexStatic(channels->mutex_struct); - ESP_GOTO_ON_FALSE(channels->mutex, ESP_ERR_NO_MEM, err, TAG, "No memory for channels mutex"); - channels->chan_num = 0; - channels->is_enabled = false; - channels->state = DAC_STATE_INITIAL; // Set static output as default - /* Register selected channels and link into a chain*/ - SLIST_INIT(&channels->head); - for (uint32_t msk = (uint32_t)dac_cfg->chan_sel, i = 0; msk != 0; msk >>= 1, i++) { - if (msk & 0x01) { - /* Allocate memory for the channel when it is enabled */ - ESP_GOTO_ON_FALSE(!s_dac.chan[i], ESP_ERR_INVALID_STATE, err, TAG, "DAC channel %d has been registered already", i + 1); - dac_channel_info_t *node = (dac_channel_info_t *)calloc(1, sizeof(dac_channel_info_t)); - ESP_GOTO_ON_FALSE(node, ESP_ERR_NO_MEM, err, TAG, "No memory for DAC channel object"); - node->id = i; - s_dac.chan[i] = node; - channels->chan_num++; - /* Add the channel node into a chain */ - SLIST_INSERT_HEAD(&channels->head, node, next); - } - } - - *handle = channels; - - return ret; - -err: - /* Free the resource when error occurs */ - dac_del_channels(channels); - channels = NULL; - - return ret; -} - -esp_err_t dac_del_channels(dac_channels_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_INITIAL, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is not deinitialized"); - ESP_RETURN_ON_FALSE(!handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is not disabled"); - - if (handle->mutex) { - vSemaphoreDelete(handle->mutex); - } - if (handle->mutex_struct) { - free(handle->mutex_struct); - } - while (SLIST_FIRST(&handle->head)) { - dac_channel_info_t *node = SLIST_FIRST(&handle->head); - SLIST_REMOVE_HEAD(&handle->head, next); - s_dac.chan[node->id] = NULL; - free(node); - } - free(handle); - - return ESP_OK; -} - -esp_err_t dac_channels_enable(dac_channels_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(!handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has been enabled already"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - - dac_channel_info_t *p; - SLIST_FOREACH(p, &handle->head, next) { - gpio_num_t gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[p->id]; - rtc_gpio_init(gpio_num); - rtc_gpio_set_direction(gpio_num, RTC_GPIO_MODE_DISABLED); - rtc_gpio_pullup_dis(gpio_num); - rtc_gpio_pulldown_dis(gpio_num); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_power_on(p->id); - dac_ll_rtc_sync_by_adc(false); - portEXIT_CRITICAL(&dac_spinlock); - } - handle->is_enabled = true; - /* If the channels has not been intialized to other mode, set it `DAC_STATE_OUTPUT_READY` as default */ - if (handle->state == DAC_STATE_INITIAL) { - handle->state = DAC_STATE_OUTPUT_READY; - } - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channels_disable(dac_channels_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled yet"); - ESP_RETURN_ON_FALSE(handle->state < DAC_STATE_DMA_ENABLED, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is still running"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - dac_channel_info_t *p; - SLIST_FOREACH(p, &handle->head, next) { - gpio_num_t gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[p->id]; - rtc_gpio_deinit(gpio_num); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_power_down(p->id); - portEXIT_CRITICAL(&dac_spinlock); - } - handle->is_enabled = false; - /* If the channels has not been intialized to other mode, set it `DAC_STATE_INITIAL` as default */ - if (handle->state == DAC_STATE_OUTPUT_READY) { - handle->state = DAC_STATE_INITIAL; - } - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -/*-------------------------------------------------------------------------- - DAC direct voltage outputting APIs - ---------------------------------------------------------------------------*/ -#if CONFIG_DAC_ISR_IRAM_SAFE -IRAM_ATTR -#endif -esp_err_t dac_channels_set_voltage(dac_channels_handle_t handle, uint8_t value) -{ - ESP_RETURN_ON_FALSE_ISR(handle, ESP_ERR_INVALID_ARG, TAG, "NULL pointer"); - ESP_RETURN_ON_FALSE_ISR(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "Not enabled"); - ESP_RETURN_ON_FALSE_ISR(handle->state == DAC_STATE_OUTPUT_READY, ESP_ERR_INVALID_STATE, TAG, "Incorrect mode"); - - /* Set the voltage for each channel in the channels */ - dac_channel_info_t *p; - SLIST_FOREACH(p, &handle->head, next) { - portENTER_CRITICAL(&dac_spinlock); - dac_ll_update_output_value(p->id, value); - portEXIT_CRITICAL(&dac_spinlock); - } - return ESP_OK; -} - -/*-------------------------------------------------------------------------- - DAC continuous mode APIs - ---------------------------------------------------------------------------*/ -esp_err_t dac_channels_init_continuous_mode(dac_channels_handle_t handle, const dac_conti_config_t *conti_cfg) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->state < DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has been initialized already"); - ESP_RETURN_ON_FALSE(conti_cfg->desc_num > 1, ESP_ERR_INVALID_STATE, TAG, "At least two DMA descriptor needed"); - ESP_RETURN_ON_FALSE(!s_dac.dma_in_use, ESP_ERR_INVALID_STATE, TAG, "Only one set of channels can use DMA output"); - - esp_err_t ret = ESP_OK; - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - -#if CONFIG_DAC_ISR_IRAM_SAFE - handle->dma.desc_pool_storage = (uint8_t *)heap_caps_calloc(conti_cfg->desc_num, sizeof(lldesc_t *), DAC_MEM_ALLOC_CAPS); - ESP_GOTO_ON_FALSE(handle->dma.desc_pool_storage, ESP_ERR_NO_MEM, err3, TAG, "No memory for message queue storage"); - handle->dma.desc_pool_struct = (StaticQueue_t *)heap_caps_calloc(1, sizeof(StaticQueue_t), DAC_MEM_ALLOC_CAPS); - ESP_GOTO_ON_FALSE(handle->dma.desc_pool_struct , ESP_ERR_NO_MEM, err3, TAG, "No memory for message queue struct"); - handle->dma.desc_pool = xQueueCreateStatic(conti_cfg->desc_num, sizeof(lldesc_t *), handle->dma.desc_pool_storage, handle->dma.desc_pool_struct); -#else - handle->dma.desc_pool = xQueueCreate(conti_cfg->desc_num, sizeof(lldesc_t *)); -#endif - ESP_GOTO_ON_FALSE(handle->dma.desc_pool, ESP_ERR_NO_MEM, err3, TAG, "No memory for message queue"); -#if CONFIG_PM_ENABLE - esp_pm_lock_type_t pm_lock_type = conti_cfg->clk_src == DAC_DIGI_CLK_SRC_APLL ? ESP_PM_NO_LIGHT_SLEEP : ESP_PM_APB_FREQ_MAX; - ESP_GOTO_ON_ERROR(esp_pm_lock_create(pm_lock_type, 0, "dac_driver", &handle->pm_lock), err3, TAG, "Failed to create DAC pm lock"); -#endif - - handle->dma.is_running = false; - /* Allocate DMA buffer */ - memcpy(&(handle->dma.cfg), conti_cfg, sizeof(dac_conti_config_t)); - ESP_GOTO_ON_ERROR(dac_alloc_dma_desc(handle), err2, TAG, "Failed to allocate memory for DMA buffers"); - - /* Initialize DAC DMA peripheral */ - ESP_GOTO_ON_ERROR(dac_dma_periph_init(handle->chan_num ,conti_cfg->freq_hz, conti_cfg->chan_mode == DAC_CHANNEL_MODE_ALTER, conti_cfg->clk_src == DAC_DIGI_CLK_SRC_APLL), - err2, TAG, "Failed to initialize DAC DMA peripheral"); - /* Register DMA interrupt */ - ESP_GOTO_ON_ERROR(dac_dma_periph_register_intr(dac_default_intr_handler, handle), err1, TAG, "Failed to register DMA interrupt"); - /* Connect DAC module to the DMA peripheral */ - portENTER_CRITICAL(&dac_spinlock); - dac_ll_digi_enable_dma(true); - portEXIT_CRITICAL(&dac_spinlock); - - handle->state = DAC_STATE_DMA_READY; - s_dac.dma_in_use = true; - - xSemaphoreGive(handle->mutex); - - return ret; -err1: - dac_dma_periph_deinit(); -err2: - dac_free_dma_desc(handle); -err3: - if (handle->dma.desc_pool) { - vQueueDelete(handle->dma.desc_pool); - } -#if CONFIG_DAC_ISR_IRAM_SAFE - if (handle->dma.desc_pool_struct) { - free(handle->dma.desc_pool_struct); - } - if (handle->dma.desc_pool_storage) { - free(handle->dma.desc_pool_storage); - } -#endif - xSemaphoreGive(handle->mutex); - return ret; -} - -esp_err_t dac_channels_deinit_continuous_mode(dac_channels_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, - "This set of DAC channels is still running or has been configured to other mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - -#if CONFIG_DAC_ISR_IRAM_SAFE - free(handle->dma.desc_pool_storage); - handle->dma.desc_pool_storage = NULL; - free(handle->dma.desc_pool_struct); - handle->dma.desc_pool_struct = NULL; -#endif -#if CONFIG_PM_ENABLE - if (handle->pm_lock) { - esp_pm_lock_delete(handle->pm_lock); - handle->pm_lock = NULL; - } -#endif - vQueueDelete(handle->dma.desc_pool); - - /* Free DMA buffer */ - dac_free_dma_desc(handle); - - /* Deregister DMA interrupt */ - ESP_RETURN_ON_ERROR(dac_dma_periph_deregister_intr(), TAG, "Failed to deregister DMA interrupt"); - /* Deinitialize DMA peripheral */ - ESP_RETURN_ON_ERROR(dac_dma_periph_deinit(), TAG, "Failed to deinitialize DAC DMA peripheral"); - /* Disconnect DAC module to the DMA peripheral */ - portENTER_CRITICAL(&dac_spinlock); - dac_ll_digi_enable_dma(false); - portEXIT_CRITICAL(&dac_spinlock); - - if (handle->is_enabled) { - handle->state = DAC_STATE_OUTPUT_READY; - } else { - handle->state = DAC_STATE_INITIAL; - } - s_dac.dma_in_use = false; - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channels_enable_continuous_mode(dac_channels_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, - "This set of DAC channels has started already or not working at DMA mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); -#ifdef CONFIG_PM_ENABLE - esp_pm_lock_acquire(handle->pm_lock); -#endif - dac_dma_periph_enable(); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_digi_enable_dma(true); - portEXIT_CRITICAL(&dac_spinlock); - handle->state = DAC_STATE_DMA_ENABLED; - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channels_disable_continuous_mode(dac_channels_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_ENABLED, ESP_ERR_INVALID_STATE, TAG, - "This set of DAC channels has stopped already or not working at DMA mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - dac_dma_periph_disable(); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_digi_enable_dma(false); - portEXIT_CRITICAL(&dac_spinlock); -#ifdef CONFIG_PM_ENABLE - esp_pm_lock_release(handle->pm_lock); -#endif - handle->state = DAC_STATE_DMA_READY; - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -static esp_err_t s_dac_load_dma_data(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *w_size, uint32_t timeout_ms) -{ - lldesc_t *desc = NULL; - - /* Try to get the descriptor from the pool */ - ESP_RETURN_ON_FALSE(xQueueReceive(handle->dma.desc_pool, &desc, pdMS_TO_TICKS(timeout_ms)) == pdTRUE, - ESP_ERR_TIMEOUT, TAG, "Get available descriptor timeout"); - if (STAILQ_FIRST(&handle->dma.head) != NULL) { - DAC_STAILQ_REMOVE(&handle->dma.head, desc, lldesc_s, qe); - } - - /* Get the DMA buffer address (use 'memcpy' to avoid the 'volatile' warning) */ - uint8_t *dma_buf; - memcpy(&dma_buf, &desc->buf, sizeof(desc->buf)); -#if SOC_DAC_DMA_16BIT_ALIGN && CONFIG_DAC_DMA_AUTO_16BIT_ALIGN - /* Load the data to the high 8 bit in the 16-bit width slot */ - size_t _w_size = (buf_size > handle->dma.cfg.buf_size / 2) ? handle->dma.cfg.buf_size / 2 : buf_size; - for (int i = 0; i < _w_size; i++) { - dma_buf[2 * i + 1] = buf[i]; - } - lldesc_config(desc, LLDESC_HW_OWNED, 1, 0, _w_size * 2); - desc->size = _w_size * 2; -#else - /* Load the data into the DMA buffer */ - size_t _w_size = (buf_size > handle->dma.cfg.buf_size) ? handle->dma.cfg.buf_size : buf_size; - memcpy(dma_buf, buf, _w_size); - lldesc_config(desc, LLDESC_HW_OWNED, 1, 0, _w_size); - desc->size = _w_size; -#endif - *w_size = _w_size; - /* Insert the loaded descriptor to the end of the chain, waiting to be sent */ - portENTER_CRITICAL(&dac_spinlock); - STAILQ_INSERT_TAIL(&handle->dma.head, desc, qe); - portEXIT_CRITICAL(&dac_spinlock); - - return ESP_OK; -} - -esp_err_t dac_channels_write_continuously(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded, uint32_t timeout_ms) -{ - DAC_NULL_POINTER_CHECK(handle); - DAC_NULL_POINTER_CHECK(buf); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_ENABLED, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is not started"); -#if CONFIG_DAC_ISR_IRAM_SAFE - ESP_RETURN_ON_FALSE(esp_ptr_internal(buf), ESP_ERR_INVALID_ARG, TAG, "the buffer is not in internal RAM"); -#endif - esp_err_t ret = ESP_OK; - ESP_RETURN_ON_FALSE(xSemaphoreTake(handle->mutex, pdMS_TO_TICKS(timeout_ms) == pdTRUE), ESP_ERR_TIMEOUT, TAG, "Take semaphore timeout"); - - size_t w_size = 0; - size_t src_buf_size = buf_size; - /* When there is no descriptor in the chain, DMA has stopped, load data and start the DMA link */ - if (STAILQ_FIRST(&handle->dma.head) == NULL) { - /* Break the chain if DMA still running */ - for (int i = 0; handle->dma.is_running && i < handle->dma.cfg.desc_num; i++) { - handle->dma.desc[i]->empty = 0; - } - for (int i = 0; - i < handle->dma.cfg.desc_num && buf_size > 0; - i++, buf += w_size, buf_size -= w_size) { - ESP_GOTO_ON_ERROR(s_dac_load_dma_data(handle, buf, buf_size, &w_size, timeout_ms), err, TAG, "Load data failed"); - } - /* Wait for the previous DMA stop */ - while (handle->dma.is_running) {} - handle->dma.is_cyclic = false; - dac_dma_periph_dma_trans_start((uint32_t)(STAILQ_FIRST(&handle->dma.head))); - handle->dma.is_running = true; - } - /* If the source buffer is not totally loaded, keep loading the rest data */ - while (buf_size > 0) { - /* If the DMA stopped but there are still some decriptors not sent, start the DMA again */ - if ((!handle->dma.is_running) && STAILQ_FIRST(&handle->dma.head)) { - dac_dma_periph_dma_trans_start((uint32_t)(STAILQ_FIRST(&handle->dma.head))); - } - ESP_GOTO_ON_ERROR(s_dac_load_dma_data(handle, buf, buf_size, &w_size, timeout_ms), err, TAG, "Load data failed"); - buf += w_size; - buf_size -= w_size; - } -err: - /* The bytes number that has been loaded */ - if (bytes_loaded) { - *bytes_loaded = src_buf_size - buf_size; - } - xSemaphoreGive(handle->mutex); - return ret; -} - -esp_err_t dac_channels_write_cyclically(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded, uint32_t timeout_ms) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_ENABLED, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is not started"); -#if CONFIG_DAC_ISR_IRAM_SAFE - ESP_RETURN_ON_FALSE(esp_ptr_internal(buf), ESP_ERR_INVALID_ARG, TAG, "the buffer is not in internal RAM"); -#endif - - esp_err_t ret = ESP_OK; - ESP_RETURN_ON_FALSE(xSemaphoreTake(handle->mutex, pdMS_TO_TICKS(timeout_ms) == pdTRUE), ESP_ERR_TIMEOUT, TAG, "Take semaphore timeout"); - - /* Break the DMA descriptor chain to stop the DMA first */ - for (int i = 0; i < handle->dma.cfg.desc_num; i++) { - handle->dma.desc[i]->empty = 0; - } - size_t src_buf_size = buf_size; - - /* If the source buffer size is smaller than the DMA buffer size, load the source buffer into two descriptors */ - if (buf_size < handle->dma.cfg.buf_size) { - /* Load data */ - size_t half_size = buf_size / 2; - memcpy(handle->dma.bufs[0], buf, half_size); - memcpy(handle->dma.bufs[1], buf, buf_size - half_size); - lldesc_config(handle->dma.desc[0], LLDESC_HW_OWNED, 1, 0, half_size); - lldesc_config(handle->dma.desc[1], LLDESC_HW_OWNED, 1, 0, buf_size - half_size); - buf_size = 0; - /* Link as a circle */ - handle->dma.desc[0]->empty = (uint32_t)handle->dma.desc[1]; - handle->dma.desc[1]->empty = (uint32_t)handle->dma.desc[0]; - } else { - int i; - for (i = 0; i < handle->dma.cfg.desc_num && buf_size > 0; i++) { - size_t w_size = buf_size > handle->dma.cfg.buf_size ? handle->dma.cfg.buf_size : buf_size; - memcpy(handle->dma.bufs[i], buf, w_size); - lldesc_config(handle->dma.desc[i], LLDESC_HW_OWNED, 1, 0, w_size); - handle->dma.desc[i]->empty = (uint32_t)(i < handle->dma.cfg.desc_num - 1 ? handle->dma.desc[i+1] :0); - buf_size -= w_size; - buf += w_size; - } - handle->dma.desc[i-1]->empty = (uint32_t)(handle->dma.desc[0]); - } - /* Wait for the previous DMA stop */ - while (handle->dma.is_running) {} - handle->dma.is_cyclic = true; - dac_dma_periph_dma_trans_start((uint32_t)handle->dma.desc[0]); - handle->dma.is_running = true; - if (bytes_loaded) { - *bytes_loaded = src_buf_size - buf_size; - } - if (buf_size > 0) { - ESP_LOGW(TAG, "The cyclic buffer size exceeds the total DMA buffer size: %d(desc_num) * %d(buf_size) = %d", - handle->dma.cfg.desc_num, handle->dma.cfg.buf_size, handle->dma.cfg.buf_size * handle->dma.cfg.desc_num); - } - - xSemaphoreGive(handle->mutex); - return ret; -} - -/*-------------------------------------------------------------------------- - DAC cosine wave outputting APIs - ---------------------------------------------------------------------------*/ -esp_err_t dac_channels_init_cosine_mode(dac_channels_handle_t handle, const dac_cosine_config_t *cw_cfg) -{ - DAC_NULL_POINTER_CHECK(handle); - DAC_NULL_POINTER_CHECK(cw_cfg); - ESP_RETURN_ON_FALSE((handle->state == DAC_STATE_INITIAL) | (handle->state == DAC_STATE_OUTPUT_READY), - ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has been initialized already"); - ESP_RETURN_ON_FALSE(cw_cfg->freq_hz >= 130, ESP_ERR_NOT_SUPPORTED, TAG, "The cosine wave generator doesn't support frequency below 130 Hz"); - - esp_err_t ret = ESP_OK; - - xSemaphoreTake(handle->mutex, portMAX_DELAY); -#if CONFIG_PM_ENABLE - ESP_GOTO_ON_ERROR(esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_driver", &handle->pm_lock), err, TAG, "Failed to create DAC pm lock"); -#endif - portENTER_CRITICAL(&dac_spinlock); - dac_channel_info_t *p; - SLIST_FOREACH(p, &handle->head, next) { - /* Connect DAC module to cosine wave generator */ - dac_ll_cw_set_channel(p->id, true); - /* Set coefficients for cosine wave generator */ - dac_ll_cw_set_freq(cw_cfg->freq_hz, periph_rtc_dig_clk8m_get_freq()); - dac_ll_cw_set_scale(p->id, cw_cfg->scale); - dac_ll_cw_set_phase(p->id, cw_cfg->phase == DAC_COSINE_PHASE_180 ? DAC_LL_CW_PHASE_180 : DAC_LL_CW_PHASE_0); - dac_ll_cw_set_dc_offset(p->id, cw_cfg->offset); - } - portEXIT_CRITICAL(&dac_spinlock); - handle->state = DAC_STATE_CW_READY; -#if CONFIG_PM_ENABLE -err: -#endif - xSemaphoreGive(handle->mutex); - return ret; -} - -esp_err_t dac_channels_deinit_cosine_mode(dac_channels_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_READY, ESP_ERR_INVALID_STATE, TAG, - "This set of DAC channels is still running or not working at cosine wave mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); -#if CONFIG_PM_ENABLE - if (handle->pm_lock) { - esp_pm_lock_delete(handle->pm_lock); - handle->pm_lock = NULL; - } -#endif - portENTER_CRITICAL(&dac_spinlock); - dac_channel_info_t *p; - SLIST_FOREACH(p, &handle->head, next) { - /* Disonnect DAC module to cosine wave generator */ - dac_ll_cw_set_channel(p->id, false); - } - portEXIT_CRITICAL(&dac_spinlock); - if (handle->is_enabled) { - handle->state = DAC_STATE_OUTPUT_READY; - } else { - handle->state = DAC_STATE_INITIAL; - } - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channels_start_cosine_output(dac_channels_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_READY, ESP_ERR_INVALID_STATE, TAG, - "This set of DAC channels has started already or not working at cosine wave mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); -#ifdef CONFIG_PM_ENABLE - esp_pm_lock_acquire(handle->pm_lock); -#endif - portENTER_CRITICAL(&dac_spinlock); - dac_ll_cw_generator_enable(); - portEXIT_CRITICAL(&dac_spinlock); - handle->state = DAC_STATE_CW_RUNNING; - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channels_stop_cosine_output(dac_channels_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_RUNNING, ESP_ERR_INVALID_STATE, TAG, - "This set of DAC channels has stopped already or not working at cosine wave mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_cw_generator_disable(); - portEXIT_CRITICAL(&dac_spinlock); -#ifdef CONFIG_PM_ENABLE - esp_pm_lock_release(handle->pm_lock); -#endif - handle->state = DAC_STATE_CW_READY; - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} diff --git a/components/driver/dac/dac_oneshot.c b/components/driver/dac/dac_oneshot.c new file mode 100644 index 0000000000..c0176816da --- /dev/null +++ b/components/driver/dac/dac_oneshot.c @@ -0,0 +1,84 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include "soc/soc_caps.h" +#include "dac_priv_common.h" +#include "driver/dac_oneshot.h" +#include "esp_check.h" + +#if CONFIG_DAC_ENABLE_DEBUG_LOG +// The local log level must be defined before including esp_log.h +// Set the maximum log level for this source file +#define LOG_LOCAL_LEVEL ESP_LOG_DEBUG +#endif +#if CONFIG_PM_ENABLE +#include "esp_pm.h" +#endif + + struct dac_oneshot_s { + dac_oneshot_config_t cfg; /*!< Oneshot mode configurations */ +}; + +static const char *TAG = "dac_oneshot"; + +esp_err_t dac_new_oneshot_channel(const dac_oneshot_config_t *oneshot_cfg, dac_oneshot_handle_t *ret_handle) +{ +#if CONFIG_DAC_ENABLE_DEBUG_LOG + esp_log_level_set(TAG, ESP_LOG_DEBUG); +#endif + /* Parameters validation */ + DAC_NULL_POINTER_CHECK(oneshot_cfg); + DAC_NULL_POINTER_CHECK(ret_handle); + ESP_RETURN_ON_FALSE(oneshot_cfg->chan_id < SOC_DAC_CHAN_NUM, ESP_ERR_INVALID_ARG, TAG, "invalid dac channel id"); + + esp_err_t ret = ESP_OK; + /* Resources allocation */ + dac_oneshot_handle_t handle = heap_caps_calloc(1, sizeof(struct dac_oneshot_s), MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT); + ESP_RETURN_ON_FALSE(handle, ESP_ERR_NO_MEM, TAG, "no memory for the dac oneshot handle"); + memcpy(&handle->cfg, oneshot_cfg, sizeof(dac_oneshot_config_t)); + + /* Register and enable the dac channel */ + ESP_GOTO_ON_ERROR(dac_priv_register_channel(oneshot_cfg->chan_id, "dac oneshot"), err2, TAG, "register dac channel %d failed", oneshot_cfg->chan_id); + ESP_GOTO_ON_ERROR(dac_priv_enable_channel(oneshot_cfg->chan_id), err1, TAG, "enable dac channel %d failed", oneshot_cfg->chan_id); + + *ret_handle = handle; + return ret; + +err1: + dac_priv_deregister_channel(oneshot_cfg->chan_id); +err2: + free(handle); + return ret; +} + +esp_err_t dac_del_oneshot_channel(dac_oneshot_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + + /* Disable and deregister the channel */ + ESP_RETURN_ON_ERROR(dac_priv_disable_channel(handle->cfg.chan_id), TAG, "disable dac channel %d failed", handle->cfg.chan_id); + ESP_RETURN_ON_ERROR(dac_priv_deregister_channel(handle->cfg.chan_id), TAG, "deregister dac channel %d failed", handle->cfg.chan_id); + + /* Free resources */ + free(handle); + + return ESP_OK; +} + +esp_err_t dac_oneshot_output_voltage(dac_oneshot_handle_t handle, uint8_t digi_value) +{ + if (!handle) { + return ESP_ERR_INVALID_ARG; + } + + /* Set the voltage by the digital value */ + DAC_RTC_ENTER_CRITICAL_SAFE(); + dac_ll_update_output_value(handle->cfg.chan_id, digi_value); + DAC_RTC_EXIT_CRITICAL_SAFE(); + + return ESP_OK; +} diff --git a/components/driver/dac/dac_priv_common.h b/components/driver/dac/dac_priv_common.h new file mode 100644 index 0000000000..70dcf5538a --- /dev/null +++ b/components/driver/dac/dac_priv_common.h @@ -0,0 +1,76 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "freertos/FreeRTOS.h" +#include "hal/dac_types.h" +#include "hal/dac_ll.h" +#include "esp_err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern portMUX_TYPE rtc_spinlock; /*!< Extern global rtc spinlock */ + +#define DAC_RTC_ENTER_CRITICAL() portENTER_CRITICAL(&rtc_spinlock) +#define DAC_RTC_EXIT_CRITICAL() portEXIT_CRITICAL(&rtc_spinlock) + +#define DAC_RTC_ENTER_CRITICAL_SAFE() portENTER_CRITICAL_SAFE(&rtc_spinlock) +#define DAC_RTC_EXIT_CRITICAL_SAFE() portEXIT_CRITICAL_SAFE(&rtc_spinlock) + +#define DAC_NULL_POINTER_CHECK(p) ESP_RETURN_ON_FALSE((p), ESP_ERR_INVALID_ARG, TAG, "input parameter '"#p"' is NULL") +#define DAC_NULL_POINTER_CHECK_ISR(p) ESP_RETURN_ON_FALSE_ISR((p), ESP_ERR_INVALID_ARG, TAG, "input parameter '"#p"' is NULL") + +/** + * @brief Register dac channel in the driver, in case a same channel is reused by different modes + * + * @param[in] chan_id DAC channel id + * @param[in] mode_name The const string of mode name + * @return + * - ESP_ERR_INVALID_STATE The channel has been occupied + * - ESP_ERR_INVALID_ARG The channel id is incorrect + * - ESP_OK Register the channel success + */ +esp_err_t dac_priv_register_channel(dac_channel_t chan_id, const char *mode_name); + +/** + * @brief Deregister dac channel in the driver + * + * @param[in] chan_id DAC channel id + * @return + * - ESP_ERR_INVALID_STATE The channel has been freed + * - ESP_ERR_INVALID_ARG The channel id is incorrect + * - ESP_OK Deregister the channel success + */ +esp_err_t dac_priv_deregister_channel(dac_channel_t chan_id); + +/** + * @brief Enable the DAC channel and turn on its power + * + * @param chan_id DAC channel id + * @return + * - ESP_ERR_INVALID_STATE The channel has not been registered + * - ESP_ERR_INVALID_ARG The channel id is incorrect + * - ESP_OK Deregister the channel success + */ +esp_err_t dac_priv_enable_channel(dac_channel_t chan_id); + +/** + * @brief Disable the DAC channel and turn off its power + * + * @param chan_id DAC channel id + * @return + * - ESP_ERR_INVALID_STATE The channel has not been registered + * - ESP_ERR_INVALID_ARG The channel id is incorrect + * - ESP_OK Deregister the channel success + */ +esp_err_t dac_priv_disable_channel(dac_channel_t chan_id); + +#ifdef __cplusplus +} +#endif diff --git a/components/driver/dac/dac_dma.h b/components/driver/dac/dac_priv_dma.h similarity index 64% rename from components/driver/dac/dac_dma.h rename to components/driver/dac/dac_priv_dma.h index e23aaf827d..a5491f39f0 100644 --- a/components/driver/dac/dac_dma.h +++ b/components/driver/dac/dac_priv_dma.h @@ -26,39 +26,28 @@ extern "C" { * @return * - ESP_ERR_NOT_FOUND The DMA peripheral has been occupied * - ESP_ERR_NO_MEM No memory for the DMA peripheral struct - * - ESP_ERR_INVALID_ARG The frequency is outof range + * - ESP_ERR_INVALID_ARG The frequency is out of range * - ESP_OK Initialize DAC DMA peripheral success */ -esp_err_t dac_dma_periph_init(uint8_t chan_num, uint32_t freq_hz, bool is_alternate, bool is_apll); +esp_err_t dac_dma_periph_init(uint32_t freq_hz, bool is_alternate, bool is_apll); /** * @brief Deinitialize DAC DMA peripheral * * @return - * - ESP_ERR_INVALID_STATE The DAC DMA has deinitialized already + * - ESP_ERR_INVALID_STATE The DAC DMA has been de-initialized already + * or the interrupt has not been de-registered * - ESP_OK Deinitialize DAC DMA peripheral success */ esp_err_t dac_dma_periph_deinit(void); /** - * @brief Register the DMA interrupt - * - * @param[in] intr_handler_func DMA interrupt handler function - * @param[in] user_ctx User contex that pass to the interrupt handler - * @return - * - ESP_ERR_INVALID_STATE DAC DMA peripheral is not initialized - * - ESP_OK Register DMA interrupt success - */ -esp_err_t dac_dma_periph_register_intr(intr_handler_t intr_handler_func, void *user_ctx); - -/** - * @brief Deregister the DMA interrupt + * @brief Get the DMA interrupt signal id * * @return - * - ESP_ERR_INVALID_STATE DAC DMA peripheral is not initialized - * - ESP_OK Deregister DMA interrupt success + * - int DMA interrupt signal id */ -esp_err_t dac_dma_periph_deregister_intr(void); +int dac_dma_periph_get_intr_signal(void); /** * @brief Enable the DMA and interrupt of the DAC DMA peripheral @@ -76,8 +65,7 @@ void dac_dma_periph_disable(void); * @brief Whether the TX_EOF interrupt is triggered * * @return - * - true TX_EOF interrupt is triggered - * - false TX_EOF interrupt is not triggered + * - uint32_t Mask of the triggered interrupt: DAC_DMA_EOF_INTR, DAC_DMA_EOF_INTR */ uint32_t dac_dma_periph_intr_is_triggered(void); diff --git a/components/driver/dac/esp32/dac_dma.c b/components/driver/dac/esp32/dac_dma.c index fa3d3a7e9d..b11ee0a391 100644 --- a/components/driver/dac/esp32/dac_dma.c +++ b/components/driver/dac/esp32/dac_dma.c @@ -4,15 +4,23 @@ * SPDX-License-Identifier: Apache-2.0 */ +/** + * This file is a target specific for DAC DMA peripheral + * Target: ESP32 + * DAC DMA peripheral (data source): I2S0 (i.e. use I2S DMA to transmit data) + * DAC DMA interrupt source: I2S0 + * DAC digital controller clock source: I2S ws signal (root clock: D2PLL or APLL) + */ + #include "freertos/FreeRTOS.h" - - +#include "sdkconfig.h" #include "hal/adc_ll.h" #include "hal/i2s_ll.h" #include "hal/i2s_types.h" #include "soc/i2s_periph.h" -#include "../dac_dma.h" +#include "../dac_priv_dma.h" #include "esp_private/i2s_platform.h" +#include "esp_private/esp_clk.h" #include "clk_ctrl_os.h" #if CONFIG_DAC_ENABLE_DEBUG_LOG // The local log level must be defined before including esp_log.h @@ -35,9 +43,7 @@ static dac_dma_periph_i2s_t *s_ddp = NULL; // Static DAC DMA peripheral structur static const char *TAG = "DAC_DMA"; -extern portMUX_TYPE dac_spinlock; /* Global DAC spinlock */ - -static uint32_t dac_set_apll(uint32_t mclk) +static uint32_t s_dac_set_apll_freq(uint32_t mclk) { /* Calculate the expected APLL */ int div = (int)((SOC_APLL_MIN_HZ / mclk) + 1); @@ -54,42 +60,50 @@ static uint32_t dac_set_apll(uint32_t mclk) return 0; } if (ret == ESP_ERR_INVALID_STATE) { - ESP_LOGW(TAG, "APLL is occupied already, it is working at %d Hz", real_freq); + ESP_LOGW(TAG, "APLL is occupied already, it is working at %"PRIu32" Hz", real_freq); } - ESP_LOGD(TAG, "APLL expected frequency is %d Hz, real frequency is %d Hz", expt_freq, real_freq); + ESP_LOGD(TAG, "APLL expected frequency is %"PRIu32" Hz, real frequency is %"PRIu32" Hz", expt_freq, real_freq); return real_freq; } -static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz, bool is_apll) +/** + * @brief Calculate and set DAC data frequency + * @note DAC frequency is decided by I2S WS frequency, the clock source of I2S is D2PLL or APLL on ESP32 + * freq_hz = ws = bclk / I2S_LL_AD_BCK_FACTOR + * @param freq_hz DAC byte transmit frequency + * @return + * - ESP_OK config success + * - ESP_ERR_INVALID_ARG invalid frequency + */ +static esp_err_t s_dac_dma_periph_set_clock(uint32_t freq_hz, bool is_apll) { /* Calculate clock coefficients */ uint32_t bclk = freq_hz * I2S_LL_AD_BCK_FACTOR; uint32_t bclk_div = DAC_DMA_PERIPH_I2S_BIT_WIDTH; uint32_t mclk = bclk * bclk_div; - uint32_t sclk; // use 160M PLL clock as default, minimun support freq: 19.6 KHz maximun support freq: 2.5 MHz + uint32_t sclk; // use 160M PLL clock as default, minimum support freq: 19.6 KHz maximum support freq: 2.5 MHz if (is_apll) { - sclk = dac_set_apll(mclk); + sclk = s_dac_set_apll_freq(mclk); ESP_RETURN_ON_FALSE(sclk, ESP_ERR_INVALID_ARG, TAG, "set APLL coefficients failed"); } else { - sclk = I2S_LL_BASE_CLK; + // [clk_tree] TODO: replace the following clock by clk_tree API + sclk = esp_clk_apb_freq() * 2; // D2PLL } uint32_t mclk_div = sclk / mclk; /* Check if the configuration is correct */ ESP_RETURN_ON_FALSE(sclk / (float)mclk > 1.99, ESP_ERR_INVALID_ARG, TAG, "Frequency is too large, the mclk division is below minimum value 2"); ESP_RETURN_ON_FALSE(mclk_div < 256, ESP_ERR_INVALID_ARG, TAG, "Frequency is too small, the mclk division exceed the maximum value 255"); - ESP_LOGD(TAG, "[sclk] %d [mclk] %d [mclk_div] %d [bclk] %d [bclk_div] %d", sclk, mclk, mclk_div, bclk, bclk_div); + ESP_LOGD(TAG, "[sclk] %"PRIu32" [mclk] %"PRIu32" [mclk_div] %"PRIu32" [bclk] %"PRIu32" [bclk_div] %"PRIu32, sclk, mclk, mclk_div, bclk, bclk_div); - portENTER_CRITICAL(&dac_spinlock); i2s_ll_tx_clk_set_src(s_ddp->periph_dev, is_apll ? I2S_CLK_SRC_APLL : I2S_CLK_SRC_DEFAULT); i2s_ll_tx_set_mclk(s_ddp->periph_dev, sclk, mclk, mclk_div); i2s_ll_tx_set_bck_div_num(s_ddp->periph_dev, bclk_div); - portEXIT_CRITICAL(&dac_spinlock); return ESP_OK; } -esp_err_t dac_dma_periph_init(uint8_t chan_num, uint32_t freq_hz, bool is_alternate, bool is_apll) +esp_err_t dac_dma_periph_init(uint32_t freq_hz, bool is_alternate, bool is_apll) { #if CONFIG_DAC_ENABLE_DEBUG_LOG esp_log_level_set(TAG, ESP_LOG_DEBUG); @@ -98,7 +112,7 @@ esp_err_t dac_dma_periph_init(uint8_t chan_num, uint32_t freq_hz, bool is_altern /* Acquire DMA peripheral */ ESP_RETURN_ON_ERROR(i2s_platform_acquire_occupation(DAC_DMA_PERIPH_I2S_NUM, "dac_dma"), TAG, "Failed to acquire DAC DMA peripheral"); /* Allocate DAC DMA peripheral object */ - s_ddp = (dac_dma_periph_i2s_t *)calloc(1, sizeof(dac_dma_periph_i2s_t)); + s_ddp = (dac_dma_periph_i2s_t *)heap_caps_calloc(1, sizeof(dac_dma_periph_i2s_t), MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT); ESP_GOTO_ON_FALSE(s_ddp, ESP_ERR_NO_MEM, err, TAG, "No memory for DAC DMA object"); s_ddp->periph_dev = (void *)I2S_LL_GET_HW(DAC_DMA_PERIPH_I2S_NUM); @@ -106,22 +120,23 @@ esp_err_t dac_dma_periph_init(uint8_t chan_num, uint32_t freq_hz, bool is_altern periph_rtc_apll_acquire(); s_ddp->use_apll = true; } - ESP_GOTO_ON_ERROR(dac_dma_periph_set_clock(freq_hz, is_apll), err, TAG, "Failed to set clock of DMA peripheral"); + ESP_GOTO_ON_ERROR(s_dac_dma_periph_set_clock(freq_hz, is_apll), err, TAG, "Failed to set clock of DMA peripheral"); - portENTER_CRITICAL(&dac_spinlock); i2s_ll_enable_builtin_dac(s_ddp->periph_dev, true); i2s_ll_tx_reset(s_ddp->periph_dev); i2s_ll_tx_set_slave_mod(s_ddp->periph_dev, false); i2s_ll_tx_set_sample_bit(s_ddp->periph_dev, DAC_DMA_PERIPH_I2S_BIT_WIDTH, DAC_DMA_PERIPH_I2S_BIT_WIDTH); i2s_ll_tx_enable_mono_mode(s_ddp->periph_dev, !is_alternate); - i2s_ll_tx_select_std_slot(s_ddp->periph_dev, 0x03, !is_alternate); + i2s_ll_tx_select_std_slot(s_ddp->periph_dev, I2S_STD_SLOT_BOTH, !is_alternate); i2s_ll_tx_enable_msb_shift(s_ddp->periph_dev, false); i2s_ll_tx_set_ws_width(s_ddp->periph_dev, DAC_DMA_PERIPH_I2S_BIT_WIDTH); i2s_ll_tx_enable_msb_right(s_ddp->periph_dev, false); i2s_ll_tx_enable_right_first(s_ddp->periph_dev, true); /* Should always enable fifo */ i2s_ll_tx_force_enable_fifo_mod(s_ddp->periph_dev, true); - portEXIT_CRITICAL(&dac_spinlock); + i2s_ll_dma_enable_auto_write_back(s_ddp->periph_dev, true); + /* Enable the interrupts */ + i2s_ll_enable_intr(s_ddp->periph_dev, I2S_LL_EVENT_TX_EOF | I2S_LL_EVENT_TX_TEOF, true); return ret; err: @@ -131,11 +146,10 @@ err: esp_err_t dac_dma_periph_deinit(void) { + ESP_RETURN_ON_FALSE(s_ddp->intr_handle == NULL, ESP_ERR_INVALID_STATE, TAG, "The interrupt is not deregistered yet"); ESP_RETURN_ON_ERROR(i2s_platform_release_occupation(DAC_DMA_PERIPH_I2S_NUM), TAG, "Failed to release DAC DMA peripheral"); + i2s_ll_enable_intr(s_ddp->periph_dev, I2S_LL_EVENT_TX_EOF | I2S_LL_EVENT_TX_TEOF, false); if (s_ddp) { - if (s_ddp->intr_handle) { - dac_dma_periph_deregister_intr(); - } if (s_ddp->use_apll) { periph_rtc_apll_release(); s_ddp->use_apll = false; @@ -147,67 +161,51 @@ esp_err_t dac_dma_periph_deinit(void) return ESP_OK; } -esp_err_t dac_dma_periph_register_intr(intr_handler_t intr_handler_func, void *user_ctx) +int dac_dma_periph_get_intr_signal(void) { - ESP_RETURN_ON_FALSE(s_ddp, ESP_ERR_INVALID_STATE, TAG, "DAC DMA peripheral has not initialized yet"); - /* Regigster interrupt */ - ESP_RETURN_ON_ERROR(esp_intr_alloc(i2s_periph_signal[DAC_DMA_PERIPH_I2S_NUM].irq, ESP_INTR_FLAG_LEVEL1, - intr_handler_func, user_ctx, &(s_ddp->intr_handle)), - TAG, "Failed to register DAC DMA interrupt"); - portENTER_CRITICAL(&dac_spinlock); - i2s_ll_enable_intr(s_ddp->periph_dev, I2S_LL_EVENT_TX_EOF | I2S_LL_EVENT_TX_TEOF, true); - portEXIT_CRITICAL(&dac_spinlock); - return ESP_OK; + return i2s_periph_signal[DAC_DMA_PERIPH_I2S_NUM].irq; } -esp_err_t dac_dma_periph_deregister_intr(void) +static void s_dac_dma_periph_reset(void) { - ESP_RETURN_ON_FALSE(s_ddp, ESP_ERR_INVALID_STATE, TAG, "DAC DMA peripheral has not initialized yet"); - if (s_ddp->intr_handle) { - portENTER_CRITICAL(&dac_spinlock); - i2s_ll_enable_intr(s_ddp->periph_dev, I2S_LL_EVENT_TX_EOF | I2S_LL_EVENT_TX_TEOF, false); - portEXIT_CRITICAL(&dac_spinlock); - esp_intr_free(s_ddp->intr_handle); - s_ddp->intr_handle = NULL; - } - return ESP_OK; -} - -void dac_dma_periph_enable(void) -{ - portENTER_CRITICAL(&dac_spinlock); - /* Reset */ i2s_ll_tx_reset(s_ddp->periph_dev); i2s_ll_tx_reset_dma(s_ddp->periph_dev); i2s_ll_tx_reset_fifo(s_ddp->periph_dev); - /* Start */ +} + +static void s_dac_dma_periph_start(void) +{ i2s_ll_enable_dma(s_ddp->periph_dev,true); i2s_ll_tx_enable_intr(s_ddp->periph_dev); i2s_ll_tx_start(s_ddp->periph_dev); i2s_ll_dma_enable_eof_on_fifo_empty(s_ddp->periph_dev, true); i2s_ll_dma_enable_auto_write_back(s_ddp->periph_dev, true); - portEXIT_CRITICAL(&dac_spinlock); - /* Enable interrupt */ - esp_intr_enable(s_ddp->intr_handle); } -void dac_dma_periph_disable(void) +static void s_dac_dma_periph_stop(void) { - portENTER_CRITICAL(&dac_spinlock); - /* Reset */ - i2s_ll_tx_reset(s_ddp->periph_dev); - i2s_ll_tx_reset_dma(s_ddp->periph_dev); - i2s_ll_tx_reset_fifo(s_ddp->periph_dev); - /* Stop */ i2s_ll_tx_stop(s_ddp->periph_dev); i2s_ll_tx_stop_link(s_ddp->periph_dev); i2s_ll_tx_disable_intr(s_ddp->periph_dev); i2s_ll_enable_dma(s_ddp->periph_dev, false); i2s_ll_dma_enable_eof_on_fifo_empty(s_ddp->periph_dev, false); i2s_ll_dma_enable_auto_write_back(s_ddp->periph_dev, false); - portEXIT_CRITICAL(&dac_spinlock); - /* Disable interrupt */ - esp_intr_disable(s_ddp->intr_handle); +} + +void dac_dma_periph_enable(void) +{ + /* Reset */ + s_dac_dma_periph_reset(); + /* Start */ + s_dac_dma_periph_start(); +} + +void dac_dma_periph_disable(void) +{ + /* Reset */ + s_dac_dma_periph_reset(); + /* Stop */ + s_dac_dma_periph_stop(); } uint32_t IRAM_ATTR dac_dma_periph_intr_is_triggered(void) @@ -231,9 +229,7 @@ uint32_t IRAM_ATTR dac_dma_periph_intr_get_eof_desc(void) return finish_desc; } -void inline dac_dma_periph_dma_trans_start(uint32_t desc_addr) +void dac_dma_periph_dma_trans_start(uint32_t desc_addr) { - portENTER_CRITICAL(&dac_spinlock); i2s_ll_tx_start_link(s_ddp->periph_dev, desc_addr); - portEXIT_CRITICAL(&dac_spinlock); } diff --git a/components/driver/dac/esp32s2/dac_dma.c b/components/driver/dac/esp32s2/dac_dma.c index 3f719d828d..cc65730ba5 100644 --- a/components/driver/dac/esp32s2/dac_dma.c +++ b/components/driver/dac/esp32s2/dac_dma.c @@ -4,6 +4,15 @@ * SPDX-License-Identifier: Apache-2.0 */ +/** + * This file is a target specific for DAC DMA peripheral + * Target: ESP32-S2 + * DAC DMA peripheral (data source): SPI3 (i.e. use SPI DMA to transmit data) + * DAC DMA interrupt source: SPI3 + * DAC digital controller clock source: DIG_SARADC_CLK (root clock: APB or APLL) + */ + +#include "sdkconfig.h" #include "esp_private/spi_common_internal.h" #include "esp_private/periph_ctrl.h" #include "hal/spi_ll.h" @@ -12,7 +21,7 @@ #include "soc/lldesc.h" #include "soc/soc.h" #include "soc/soc_caps.h" -#include "../dac_dma.h" +#include "../dac_priv_dma.h" #include "clk_ctrl_os.h" #if CONFIG_DAC_ENABLE_DEBUG_LOG // The local log level must be defined before including esp_log.h @@ -35,9 +44,7 @@ static dac_dma_periph_spi_t *s_ddp = NULL; // Static DAC DMA peripheral structur static const char *TAG = "DAC_DMA"; -extern portMUX_TYPE dac_spinlock; /* Global DAC spinlock */ - -static uint32_t dac_set_apll_freq(uint32_t expt_freq) +static uint32_t s_dac_set_apll_freq(uint32_t expt_freq) { /* Set APLL coefficients to the given frequency */ uint32_t real_freq = 0; @@ -46,30 +53,30 @@ static uint32_t dac_set_apll_freq(uint32_t expt_freq) return 0; } if (ret == ESP_ERR_INVALID_STATE) { - ESP_LOGW(TAG, "APLL is occupied already, it is working at %d Hz", real_freq); + ESP_LOGW(TAG, "APLL is occupied already, it is working at %"PRIu32" Hz", real_freq); } - ESP_LOGD(TAG, "APLL expected frequency is %d Hz, real frequency is %d Hz", expt_freq, real_freq); + ESP_LOGD(TAG, "APLL expected frequency is %"PRIu32" Hz, real frequency is %"PRIu32" Hz", expt_freq, real_freq); return real_freq; } /** * @brief Calculate and set DAC data frequency - * @note DAC clcok shares clock devider with ADC, the clock source is APB or APLL on ESP32-S2 + * @note DAC clock shares clock divider with ADC, the clock source is APB or APLL on ESP32-S2 * freq_hz = (source_clk / (clk_div + (b / a) + 1)) / interval - * interval range: 1~4095, to avoid decimal as possible, all calculations will base on interval = 4000 + * interval range: 1~4095 * @param freq_hz DAC byte transmit frequency * @return * - ESP_OK config success * - ESP_ERR_INVALID_ARG invalid frequency */ -static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz, bool is_apll){ +static esp_err_t s_dac_dma_periph_set_clock(uint32_t freq_hz, bool is_apll){ /* Step 1: Determine the digital clock source frequency */ uint32_t digi_ctrl_freq; // Digital controller clock if (is_apll) { /* Theoretical frequency range (due to the limitation of DAC, the maximum frequency may not reach): * SOC_APLL_MAX_HZ: 119.24 Hz ~ 67.5 MHz * SOC_APLL_MIN_HZ: 5.06 Hz ~ 2.65 MHz */ - digi_ctrl_freq = dac_set_apll_freq(freq_hz < 120 ? SOC_APLL_MIN_HZ :SOC_APLL_MAX_HZ); + digi_ctrl_freq = s_dac_set_apll_freq(freq_hz < 120 ? SOC_APLL_MIN_HZ :SOC_APLL_MAX_HZ); ESP_RETURN_ON_FALSE(digi_ctrl_freq, ESP_ERR_INVALID_ARG, TAG, "set APLL coefficients failed"); } else { digi_ctrl_freq = APB_CLK_FREQ; @@ -83,7 +90,7 @@ static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz, bool is_apll){ if (total_div < 256) { // For the case that smaller than the maximum ADC controller division /* Fix the interval to 1, the division is fully realized by the ADC controller clock divider */ interval = 1; - } else if (total_div < 8192) { // for the case that smaller than the maximum inverval + } else if (total_div < 8192) { // for the case that smaller than the maximum interval /* Set the interval to 'total_div / 2', fix the integer part of ADC controller clock division to 2 */ interval = total_div / 2; } else { @@ -119,16 +126,14 @@ static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz, bool is_apll){ finish: /* Step 4: Set the clock coefficients */ - portENTER_CRITICAL(&dac_spinlock); dac_ll_digi_clk_inv(true); dac_ll_digi_set_trigger_interval(interval); // secondary clock division adc_ll_digi_controller_clk_div(clk_div - 1, b, a); adc_ll_digi_clk_sel(is_apll); - portEXIT_CRITICAL(&dac_spinlock); return ESP_OK; } -esp_err_t dac_dma_periph_init(uint8_t chan_num, uint32_t freq_hz, bool is_alternate, bool is_apll) +esp_err_t dac_dma_periph_init(uint32_t freq_hz, bool is_alternate, bool is_apll) { #if CONFIG_DAC_ENABLE_DEBUG_LOG esp_log_level_set(TAG, ESP_LOG_DEBUG); @@ -138,7 +143,7 @@ esp_err_t dac_dma_periph_init(uint8_t chan_num, uint32_t freq_hz, bool is_altern ESP_RETURN_ON_FALSE(spicommon_periph_claim(DAC_DMA_PERIPH_SPI_HOST, "dac_dma"), ESP_ERR_NOT_FOUND, TAG, "Failed to acquire DAC DMA peripheral"); periph_module_enable(PERIPH_SARADC_MODULE); /* Allocate DAC DMA peripheral object */ - s_ddp = (dac_dma_periph_spi_t *)calloc(1, sizeof(dac_dma_periph_spi_t)); + s_ddp = (dac_dma_periph_spi_t *)heap_caps_calloc(1, sizeof(dac_dma_periph_spi_t), MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT); ESP_GOTO_ON_FALSE(s_ddp, ESP_ERR_NO_MEM, err, TAG, "No memory for DAC DMA object"); s_ddp->periph_dev = (void *)SPI_LL_GET_HW(DAC_DMA_PERIPH_SPI_HOST); @@ -148,11 +153,12 @@ esp_err_t dac_dma_periph_init(uint8_t chan_num, uint32_t freq_hz, bool is_altern } /* When transmit alternately, twice frequency is needed to guarantee the convert frequency in one channel */ uint32_t trans_freq_hz = freq_hz * (is_alternate ? 2 : 1); - ESP_GOTO_ON_ERROR(dac_dma_periph_set_clock(trans_freq_hz, is_apll), err, TAG, "Failed to set clock of DMA peripheral"); + ESP_GOTO_ON_ERROR(s_dac_dma_periph_set_clock(trans_freq_hz, is_apll), err, TAG, "Failed to set clock of DMA peripheral"); + ESP_GOTO_ON_ERROR(spicommon_dma_chan_alloc(DAC_DMA_PERIPH_SPI_HOST, SPI_DMA_CH_AUTO, &s_ddp->dma_chan, &s_ddp->dma_chan), + err, TAG, "Failed to allocate dma peripheral channel"); - portENTER_CRITICAL(&dac_spinlock); + spi_ll_enable_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF | SPI_LL_INTR_OUT_TOTAL_EOF); dac_ll_digi_set_convert_mode(is_alternate); - portEXIT_CRITICAL(&dac_spinlock); return ret; err: dac_dma_periph_deinit(); @@ -161,12 +167,14 @@ err: esp_err_t dac_dma_periph_deinit(void) { + ESP_RETURN_ON_FALSE(s_ddp->intr_handle == NULL, ESP_ERR_INVALID_STATE, TAG, "The interrupt is not deregistered yet"); + if (s_ddp->dma_chan) { + ESP_RETURN_ON_ERROR(spicommon_dma_chan_free(DAC_DMA_PERIPH_SPI_HOST), TAG, "Failed to free dma peripheral channel"); + } ESP_RETURN_ON_FALSE(spicommon_periph_free(DAC_DMA_PERIPH_SPI_HOST), ESP_FAIL, TAG, "Failed to release DAC DMA peripheral"); + spi_ll_disable_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF | SPI_LL_INTR_OUT_TOTAL_EOF); periph_module_disable(PERIPH_SARADC_MODULE); if (s_ddp) { - if (s_ddp->intr_handle) { - dac_dma_periph_deregister_intr(); - } if (s_ddp->use_apll) { periph_rtc_apll_release(); s_ddp->use_apll = false; @@ -177,59 +185,28 @@ esp_err_t dac_dma_periph_deinit(void) return ESP_OK; } -esp_err_t dac_dma_periph_register_intr(intr_handler_t intr_handler_func, void *user_ctx) +int dac_dma_periph_get_intr_signal(void) { - ESP_RETURN_ON_FALSE(s_ddp, ESP_ERR_INVALID_STATE, TAG, "DAC DMA peripheral has not initialized yet"); - ESP_RETURN_ON_ERROR(spicommon_dma_chan_alloc(DAC_DMA_PERIPH_SPI_HOST, SPI_DMA_CH_AUTO, &s_ddp->dma_chan, &s_ddp->dma_chan), - TAG, "Failed to allocate dma peripheral channel"); - esp_err_t ret = ESP_OK; - /* Regigster interrupt */ - ESP_GOTO_ON_ERROR(esp_intr_alloc(spicommon_irqdma_source_for_host(DAC_DMA_PERIPH_SPI_HOST), - 0, intr_handler_func, user_ctx, &(s_ddp->intr_handle)), err, TAG, "Failed to register DAC DMA interrupt"); - portENTER_CRITICAL(&dac_spinlock); - spi_ll_enable_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF | SPI_LL_INTR_OUT_TOTAL_EOF); - portEXIT_CRITICAL(&dac_spinlock); - return ret; -err: - spicommon_dma_chan_free(DAC_DMA_PERIPH_SPI_HOST); - return ret; + return spicommon_irqdma_source_for_host(DAC_DMA_PERIPH_SPI_HOST); } -esp_err_t dac_dma_periph_deregister_intr(void) +static void s_dac_dma_periph_reset(void) { - ESP_RETURN_ON_FALSE(s_ddp, ESP_ERR_INVALID_STATE, TAG, "DAC DMA peripheral has not initialized yet"); - ESP_RETURN_ON_ERROR(spicommon_dma_chan_free(DAC_DMA_PERIPH_SPI_HOST), TAG, "Failed to free dma peripheral channel"); - if (s_ddp->intr_handle) { - portENTER_CRITICAL(&dac_spinlock); - spi_ll_disable_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF | SPI_LL_INTR_OUT_TOTAL_EOF); - portEXIT_CRITICAL(&dac_spinlock); - esp_intr_free(s_ddp->intr_handle); - s_ddp->intr_handle = NULL; - } - return ESP_OK; + spi_dma_ll_tx_reset(s_ddp->periph_dev, s_ddp->dma_chan); + spi_ll_dma_tx_fifo_reset(s_ddp->periph_dev); } void dac_dma_periph_enable(void) { - portENTER_CRITICAL(&dac_spinlock); - spi_dma_ll_tx_reset(s_ddp->periph_dev, s_ddp->dma_chan); - spi_ll_dma_tx_fifo_reset(s_ddp->periph_dev); + s_dac_dma_periph_reset(); dac_ll_digi_trigger_output(true); - portEXIT_CRITICAL(&dac_spinlock); - /* Enable interrupt */ - esp_intr_enable(s_ddp->intr_handle); } void dac_dma_periph_disable(void) { - portENTER_CRITICAL(&dac_spinlock); - spi_dma_ll_tx_reset(s_ddp->periph_dev, s_ddp->dma_chan); - spi_ll_dma_tx_fifo_reset(s_ddp->periph_dev); + s_dac_dma_periph_reset(); spi_dma_ll_tx_stop(s_ddp->periph_dev, s_ddp->dma_chan); dac_ll_digi_trigger_output(false); - portEXIT_CRITICAL(&dac_spinlock); - /* Disable interrupt */ - esp_intr_disable(s_ddp->intr_handle); } uint32_t IRAM_ATTR dac_dma_periph_intr_is_triggered(void) @@ -249,9 +226,7 @@ uint32_t IRAM_ATTR dac_dma_periph_intr_get_eof_desc(void) void dac_dma_periph_dma_trans_start(uint32_t desc_addr) { - portENTER_CRITICAL(&dac_spinlock); spi_dma_ll_tx_reset(s_ddp->periph_dev, s_ddp->dma_chan); spi_ll_dma_tx_fifo_reset(s_ddp->periph_dev); spi_dma_ll_tx_start(s_ddp->periph_dev, s_ddp->dma_chan, (lldesc_t *)desc_addr); - portEXIT_CRITICAL(&dac_spinlock); } diff --git a/components/driver/deprecated/dac_common_legacy.c b/components/driver/deprecated/dac_common_legacy.c index 33f3e1b545..ea2bc26feb 100644 --- a/components/driver/deprecated/dac_common_legacy.c +++ b/components/driver/deprecated/dac_common_legacy.c @@ -24,7 +24,7 @@ static __attribute__((unused)) const char *TAG = "DAC"; ---------------------------------------------------------------*/ esp_err_t dac_pad_get_io_num(dac_channel_t channel, gpio_num_t *gpio_num) { - ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_CHAN_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); *gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[channel]; @@ -33,7 +33,7 @@ esp_err_t dac_pad_get_io_num(dac_channel_t channel, gpio_num_t *gpio_num) static esp_err_t dac_rtc_pad_init(dac_channel_t channel) { - ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_CHAN_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); gpio_num_t gpio_num = 0; dac_pad_get_io_num(channel, &gpio_num); @@ -47,7 +47,7 @@ static esp_err_t dac_rtc_pad_init(dac_channel_t channel) esp_err_t dac_output_enable(dac_channel_t channel) { - ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_CHAN_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); dac_rtc_pad_init(channel); portENTER_CRITICAL(&rtc_spinlock); @@ -60,7 +60,7 @@ esp_err_t dac_output_enable(dac_channel_t channel) esp_err_t dac_output_disable(dac_channel_t channel) { - ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_CHAN_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); portENTER_CRITICAL(&rtc_spinlock); dac_ll_power_down(channel); @@ -71,7 +71,7 @@ esp_err_t dac_output_disable(dac_channel_t channel) esp_err_t dac_output_voltage(dac_channel_t channel, uint8_t dac_value) { - ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_CHAN_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); portENTER_CRITICAL(&rtc_spinlock); dac_ll_update_output_value(channel, dac_value); @@ -82,7 +82,7 @@ esp_err_t dac_output_voltage(dac_channel_t channel, uint8_t dac_value) esp_err_t dac_out_voltage(dac_channel_t channel, uint8_t dac_value) { - ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_CHAN_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); portENTER_CRITICAL(&rtc_spinlock); dac_ll_update_output_value(channel, dac_value); @@ -94,6 +94,7 @@ esp_err_t dac_out_voltage(dac_channel_t channel, uint8_t dac_value) esp_err_t dac_cw_generator_enable(void) { portENTER_CRITICAL(&rtc_spinlock); + periph_rtc_dig_clk8m_enable(); dac_ll_cw_generator_enable(); portEXIT_CRITICAL(&rtc_spinlock); @@ -104,6 +105,7 @@ esp_err_t dac_cw_generator_disable(void) { portENTER_CRITICAL(&rtc_spinlock); dac_ll_cw_generator_disable(); + periph_rtc_dig_clk8m_disable(); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; @@ -112,13 +114,16 @@ esp_err_t dac_cw_generator_disable(void) esp_err_t dac_cw_generator_config(dac_cw_config_t *cw) { ESP_RETURN_ON_FALSE(cw, ESP_ERR_INVALID_ARG, TAG, "invalid clock configuration"); - portENTER_CRITICAL(&rtc_spinlock); - dac_ll_cw_set_freq(cw->freq, periph_rtc_dig_clk8m_get_freq()); - dac_ll_cw_set_scale(cw->en_ch, cw->scale); - dac_ll_cw_set_phase(cw->en_ch, cw->phase); + /* Enable the rtc8m clock temporary to get the correct frequecy */ + periph_rtc_dig_clk8m_enable(); + uint32_t rtc_freq = periph_rtc_dig_clk8m_get_freq(); + periph_rtc_dig_clk8m_disable(); + dac_ll_cw_set_freq(cw->freq, rtc_freq); + dac_ll_cw_set_atten(cw->en_ch, (dac_cosine_atten_t)cw->scale); + dac_ll_cw_set_phase(cw->en_ch, (dac_cosine_phase_t)cw->phase); dac_ll_cw_set_dc_offset(cw->en_ch, cw->offset); - dac_ll_cw_set_channel(cw->en_ch, true); + dac_ll_cw_enable_channel(cw->en_ch, true); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; @@ -131,11 +136,11 @@ __attribute__((constructor)) static void check_dac_legacy_driver_conflict(void) { // This function was declared as weak here. The new DAC driver has one implementation. - // So if the new DAC driver is not linked in, then `dac_new_channels()` should be NULL at runtime. - extern __attribute__((weak)) esp_err_t dac_new_channels(const void *dac_cfg, void **handle); - if ((void *)dac_new_channels != NULL) { + // So if the new DAC driver is not linked in, then `dac_priv_register_channel()` should be NULL at runtime. + extern __attribute__((weak)) esp_err_t dac_priv_register_channel(dac_channel_t chan_id, const char *mode_name); + if ((void *)dac_priv_register_channel != NULL) { ESP_EARLY_LOGE(TAG, "CONFLICT! The new DAC driver is not allowed to be used together with the legacy driver"); abort(); } - ESP_EARLY_LOGW(TAG, "legacy driver is deprecated, please migrate to `driver/dac_driver.h` instead"); + ESP_EARLY_LOGW(TAG, "legacy driver is deprecated, please migrate to `driver/dac_oneshot.h`, `driver/dac_cosine.h` or `driver/dac_conti.h` instead"); } diff --git a/components/driver/deprecated/driver/dac.h b/components/driver/deprecated/driver/dac.h index 966871f7bd..d126ad68b4 100644 --- a/components/driver/deprecated/driver/dac.h +++ b/components/driver/deprecated/driver/dac.h @@ -13,7 +13,7 @@ #include "driver/dac_types_legacy.h" #if !CONFIG_DAC_SUPPRESS_DEPRECATE_WARN -#warning "The legacy DAC driver is deprecated, please use driver/dac_driver.h instead" +#warning "The legacy DAC driver is deprecated, please use `driver/dac_oneshot.h`, `driver/dac_cosine.h` or `driver/dac_conti.h` instead" #endif #ifdef __cplusplus @@ -109,7 +109,7 @@ esp_err_t dac_i2s_enable(void); * - ESP_OK success */ esp_err_t dac_i2s_disable(void); -#endif +#endif // CONFIG_IDF_TARGET_ESP32 #if CONFIG_IDF_TARGET_ESP32S2 /** @@ -164,7 +164,7 @@ esp_err_t dac_digi_fifo_reset(void); * - ESP_OK success */ esp_err_t dac_digi_reset(void); -#endif +#endif // CONFIG_IDF_TARGET_ESP32S2 #ifdef __cplusplus } diff --git a/components/driver/include/driver/dac_conti.h b/components/driver/include/driver/dac_conti.h new file mode 100644 index 0000000000..29e87d42ef --- /dev/null +++ b/components/driver/include/driver/dac_conti.h @@ -0,0 +1,263 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "driver/dac_types.h" +#include "esp_err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if SOC_DAC_SUPPORTED + +/** + * @brief DAC channel mask + * + */ +typedef enum { + DAC_CHANNEL_MASK_CH0 = BIT(0), /*!< DAC channel 0 is GPIO25(ESP32) / GPIO17(ESP32S2) */ + DAC_CHANNEL_MASK_CH1 = BIT(1), /*!< DAC channel 1 is GPIO26(ESP32) / GPIO18(ESP32S2) */ + DAC_CHANNEL_MASK_ALL = BIT(0) | BIT(1), /*!< Both DAC channel 0 and channel 1 */ +} dac_channel_mask_t; + +typedef struct dac_conti_s *dac_conti_handle_t; /*!< DAC continuous channel handle */ + +/** + * @brief DAC continuous channels' configurations + * + */ +typedef struct { + dac_channel_mask_t chan_mask; /*!< DAC channels' mask for selecting which channels are used */ + uint32_t desc_num; /*!< The number of DMA descriptor, at least 2 descriptors are required + * The number of descriptors is directly proportional to the max data buffer size while converting in cyclic output + * but only need to ensure it is greater than '1' in acyclic output + * Typically, suggest to set the number bigger than 5, in case the DMA stopped while sending a short buffer + */ + size_t buf_size; /*!< The DMA buffer size, should be within 32~4092 bytes. Each DMA buffer will be attached to a DMA descriptor, + * i.e. the number of DMA buffer will be equal to the DMA descriptor number + * The DMA buffer size is not allowed to be greater than 4092 bytes + * The total DMA buffer size equal to `desc_num * buf_size` + * Typically, suggest to set the size to the multiple of 4 + */ + uint32_t freq_hz; /*!< The frequency of DAC conversion in continuous mode, unit: Hz + * The supported range is related to the target and the clock source. + * For the clock `DAC_DIGI_CLK_SRC_DEFAULT`: the range is 19.6 KHz to several MHz on ESP32 + * and 77 Hz to several MHz on ESP32-S2. + * For the clock `DAC_DIGI_CLK_SRC_APLL`: the range is 648 Hz to several MHz on ESP32 + * and 6 Hz to several MHz on ESP32-S2. + * Typically not suggest to set the frequency higher than 2 MHz, otherwise the severe distortion will appear + */ + int8_t offset; /*!< The offset of the DAC digital data. Range -128~127 */ + dac_conti_digi_clk_src_t clk_src; /*!< The clock source of digital controller, which can affect the range of supported frequency + * Currently `DAC_DIGI_CLK_SRC_DEFAULT` and `DAC_DIGI_CLK_SRC_APLL` are available + */ + dac_conti_channel_mode_t chan_mode; /*!< The channel mode of continuous mode, only take effect when multiple channels enabled, depends converting the buffer alternately or simultaneously */ +} dac_conti_config_t; + + +/** + * @brief Event structure used in DAC event queue + */ +typedef struct { + void *buf; /*!< The pointer of DMA buffer that just finished sending */ + size_t buf_size; /*!< The writable buffer size of the DMA buffer, equal to 'dac_conti_config_t::buf_size' */ + size_t write_bytes; /*!< The number of bytes that be written successfully */ +} dac_event_data_t; + +/** + * @brief DAC event callback + * @param[in] handle DAC channel handle, created from `dac_new_conti_channels()` + * @param[in] event DAC event data + * @param[in] user_data User registered context, passed from `dac_conti_register_event_callback()` + * + * @return Whether a high priority task has been waken up by this callback function + */ +typedef bool (*dac_isr_callback_t)(dac_conti_handle_t handle, const dac_event_data_t *event, void *user_data); + +/** + * @brief Group of DAC callbacks + * @note The callbacks are all running under ISR environment + * @note When CONFIG_DAC_ISR_IRAM_SAFE is enabled, the callback itself and functions called by it should be placed in IRAM. + * The variables used in the function should be in the SRAM as well. + */ +typedef struct { + dac_isr_callback_t on_convert_done; /**< Callback of data conversion done event + * An event data buffer previously loaded to the driver has been output and converted. + * The event data includes DMA buffer address and size that just finished converting. + */ + dac_isr_callback_t on_stop; /**< Callback of finished sending all the data. + * All loaded event data buffers are converted. Driver is pending for new data buffers to be loaded. + * The event data will be NULL in this callback. + */ +} dac_event_callbacks_t; + + +/** + * @brief Allocate new DAC channels in continuous mode + * @note The DAC channels can't be registered to continuous mode separately + * + * @param[in] conti_cfg Continuous mode configuration + * @param[out] ret_handle The returned continuous mode handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channel has been registered already + * - ESP_ERR_NOT_FOUND Not found the available dma peripheral, might be occupied + * - ESP_ERR_NO_MEM No memory for the DAC continuous mode resources + * - ESP_OK Allocate the new DAC continuous mode success + */ +esp_err_t dac_new_conti_channels(const dac_conti_config_t *conti_cfg, dac_conti_handle_t *ret_handle); + +/** + * @brief Delete the DAC continuous handle + * + * @param[in] handle The DAC continuous channel handle that obtained from 'dac_new_conti_channels' + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channels have already been deregistered or not disabled + * - ESP_OK Delete the continuous channels success + */ +esp_err_t dac_del_conti_channels(dac_conti_handle_t handle); + +/** + * @brief Enabled the DAC continuous mode + * @note Must enable the channels before + * + * @param[in] handle The DAC continuous channel handle that obtained from 'dac_new_conti_channels' + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channels have been enabled already + * - ESP_OK Enable the continuous output success + */ +esp_err_t dac_conti_enable(dac_conti_handle_t handle); + +/** + * @brief Disable the DAC continuous mode + * + * @param[in] handle The DAC continuous channel handle that obtained from 'dac_new_conti_channels' + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channels have been enabled already + * - ESP_OK Disable the continuous output success + */ +esp_err_t dac_conti_disable(dac_conti_handle_t handle); + +/** + * @brief Write DAC continuous data cyclically + * @note The data in buffer will be converted cyclically using DMA once this function is called, + * This function will return once the data loaded into DMA buffers. + * @note The buffer size of cyclically output is limited by the descriptor number and + * dma buffer size while initializing the continuous mode. + * Concretely, in order to load all the data into descriptors, + * the cyclic buffer size is not supposed to be greater than `desc_num * buf_size` + * @note Specially, on ESP32, the data bit width of DAC continuous data is fixed to 16 bits while only the high 8 bits are available, + * The driver will help to expand the inputted buffer automatically by default, + * you can also align the data to 16 bits manually by clearing `CONFIG_DAC_DMA_AUTO_16BIT_ALIGN` in menuconfig. + * + * @param[in] handle The DAC continuous channel handle that obtained from 'dac_new_conti_channels' + * @param[in] buf The digital data buffer to convert + * @param[in] buf_size The buffer size of digital data buffer + * @param[out] bytes_loaded The bytes that has been loaded into DMA buffer, can be NULL if don't need it + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC continuous mode has not been enabled yet + * - ESP_OK Success to output the acyclic DAC data + */ +esp_err_t dac_conti_write_cyclically(dac_conti_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded); + +/** + * @brief Write DAC data continuously + * @note The data in buffer will only be converted one time, + * This function will be blocked until all data loaded or timeout + * then the DAC output will keep outputting the voltage of the last data in the buffer + * @note Specially, on ESP32, the data bit width of DAC continuous data is fixed to 16 bits while only the high 8 bits are available, + * The driver will help to expand the inputted buffer automatically by default, + * you can also align the data to 16 bits manually by clearing `CONFIG_DAC_DMA_AUTO_16BIT_ALIGN` in menuconfig. + * + * @param[in] handle The DAC continuous channel handle that obtained from 'dac_new_conti_channels' + * @param[in] buf The digital data buffer to convert + * @param[in] buf_size The buffer size of digital data buffer + * @param[out] bytes_loaded The bytes that has been loaded into DMA buffer, can be NULL if don't need it + * @param[in] timeout_ms The timeout time in millisecond, set a minus value means will block forever + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC continuous mode has not been enabled yet + * - ESP_ERR_TIMEOUT Waiting for semaphore or message queue timeout + * - ESP_OK Success to output the acyclic DAC data + */ +esp_err_t dac_conti_write(dac_conti_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded, int timeout_ms); + +/** + * @brief Set event callbacks for DAC continuous mode + * + * @note User can deregister a previously registered callback by calling this function and setting the callback member in the `callbacks` structure to NULL. + * @note When CONFIG_DAC_ISR_IRAM_SAFE is enabled, the callback itself and functions called by it should be placed in IRAM. + * The variables used in this function, including the `user_data`, should be in the internal RAM as well. + * + * @param[in] handle The DAC continuous channel handle that obtained from 'dac_new_conti_channels' + * @param[in] callbacks Group of callback functions, input NULL to clear the former callbacks + * @param[in] user_data User data, which will be passed to callback functions directly + * @return + * - ESP_OK Set event callbacks successfully + * - ESP_ERR_INVALID_ARG Set event callbacks failed because of invalid argument + */ +esp_err_t dac_conti_register_event_callback(dac_conti_handle_t handle, const dac_event_callbacks_t *callbacks, void *user_data); + +/** + * @brief Start the async writing + * @note When the asynchronous writing start, the DAC will keep outputting '0' until the data are loaded into the DMA buffer. + * To loaded the data into DMA buffer, 'on_convert_done' callback is required, + * which can be registered by 'dac_conti_register_event_callback' before enabling + * + * @param[in] handle The DAC continuous channel handle that obtained from 'dac_new_conti_channels' + * @return + * - ESP_OK Start asynchronous writing successfully + * - ESP_ERR_INVALID_ARG The handle is NULL + * - ESP_ERR_INVALID_STATE The channel is not enabled or the 'on_convert_done' callback is not registered + */ +esp_err_t dac_conti_start_async_writing(dac_conti_handle_t handle); + +/** + * @brief Stop the sync writing + * + * @param[in] handle The DAC continuous channel handle that obtained from 'dac_new_conti_channels' + * @return + * - ESP_OK Stop asynchronous writing successfully + * - ESP_ERR_INVALID_ARG The handle is NULL + * - ESP_ERR_INVALID_STATE Asynchronous writing has not started + */ +esp_err_t dac_conti_stop_async_writing(dac_conti_handle_t handle); + +/** + * @brief Write DAC data asynchronously + * @note This function can be called when the asynchronous writing started, and it can be called in the callback directly + * but recommend to writing data in a task, referring to :example:`peripherals/dac/dac_continuous/dac_audio` + * + * @param[in] handle The DAC continuous channel handle that obtained from 'dac_new_conti_channels' + * @param[in] dma_buf The DMA buffer address, it can be acquired from 'dac_event_data_t' in the 'on_convert_done' callback + * @param[in] dma_buf_len The DMA buffer length, it can be acquired from 'dac_event_data_t' in the 'on_convert_done' callback + * @param[in] data The data that need to be written + * @param[in] data_len The data length the need to be written + * @param[out] bytes_loaded The bytes number that has been loaded/written into the DMA buffer + * @return + * - ESP_OK Write the data into DMA buffer successfully + * - ESP_ERR_INVALID_ARG NULL pointer + * - ESP_ERR_INVALID_STATE The channels haven't start the asynchronous writing + * - ESP_ERR_NOT_FOUND The param 'dam_buf' not match any existed DMA buffer + */ +esp_err_t dac_conti_write_asynchronously(dac_conti_handle_t handle, + uint8_t *dma_buf, + size_t dma_buf_len, + const uint8_t *data, + size_t data_len, + size_t *bytes_loaded); + +#endif // SOC_DAC_SUPPORTED + +#ifdef __cplusplus +} +#endif diff --git a/components/driver/include/driver/dac_cosine.h b/components/driver/include/driver/dac_cosine.h new file mode 100644 index 0000000000..e74e26cbd8 --- /dev/null +++ b/components/driver/include/driver/dac_cosine.h @@ -0,0 +1,97 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "driver/dac_types.h" +#include "esp_err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if SOC_DAC_SUPPORTED + +typedef struct dac_cosine_s *dac_cosine_handle_t; /*!< DAC cosine wave channel handle */ + +/** + * @brief DAC cosine channel configurations + * + */ +typedef struct { + dac_channel_t chan_id; /*!< The cosine wave channel id */ + uint32_t freq_hz; /*!< The frequency of cosine wave, unit: Hz. + * The cosine wave generator is driven by RTC_FAST clock which is divide from RC_FAST, + * With the default RTC clock, the minimum frequency of cosine wave is about 130 Hz, + * Although it can support up to several MHz frequency theoretically, + * the waveform will distort at high frequency due to the hardware limitation. + * Typically not suggest to set the frequency higher than 200 KHz + */ + dac_cosine_clk_src_t clk_src; /*!< The clock source of the cosine wave generator, currently only support `DAC_COSINE_CLK_SRC_DEFAULT` */ + dac_cosine_atten_t atten; /*!< The attenuation of cosine wave amplitude */ + dac_cosine_phase_t phase; /*!< The phase of cosine wave, can only support DAC_COSINE_PHASE_0 or DAC_COSINE_PHASE_180, default as 0 while setting an unsupported phase */ + int8_t offset; /*!< The DC offset of cosine wave */ + struct { + bool force_set_freq: 1; /*!< Force to set the cosine wave frequency */ + } flags; /*!< Flags of cosine mode */ +} dac_cosine_config_t; + +/** + * @brief Allocate a new DAC cosine wave channel + * @note Since there is only one cosine wave generator, + * only the first channel can set the frequency of the cosine wave. + * Normally, the latter one is not allowed to set a different frequency, + * but the it can be forced to set by setting the bit `force_set_freq` in the configuration, + * notice that another channel will be affected as well when the frequency is updated. + * + * @param[in] cos_cfg The configuration of cosine wave channel + * @param[out] ret_handle The returned cosine wave channel handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channel has been registered already + * - ESP_ERR_NO_MEM No memory for the DAC cosine wave channel resources + * - ESP_OK Allocate the new DAC cosine wave channel success + */ +esp_err_t dac_new_cosine_channel(const dac_cosine_config_t *cos_cfg, dac_cosine_handle_t *ret_handle); + +/** + * @brief Delete the DAC cosine wave channel + * + * @param[in] handle The DAC cosine wave channel handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channel has already been deregistered + * - ESP_OK Delete the cosine wave channel success + */ +esp_err_t dac_del_cosine_channel(dac_cosine_handle_t handle); + +/** + * @brief Start outputting the cosine wave on the channel + * + * @param[in] handle The DAC cosine wave channel handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channel has been started already + * - ESP_OK Start the cosine wave success + */ +esp_err_t dac_cosine_start(dac_cosine_handle_t handle); + +/** + * @brief Stop outputting the cosine wave on the channel + * + * @param[in] handle The DAC cosine wave channel handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channel has been stopped already + * - ESP_OK Stop the cosine wave success + */ +esp_err_t dac_cosine_stop(dac_cosine_handle_t handle); + +#endif // SOC_DAC_SUPPORTED + +#ifdef __cplusplus +} +#endif diff --git a/components/driver/include/driver/dac_driver.h b/components/driver/include/driver/dac_driver.h deleted file mode 100644 index f743fab293..0000000000 --- a/components/driver/include/driver/dac_driver.h +++ /dev/null @@ -1,298 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#pragma once - -#include "driver/dac_types.h" -#include "driver/gpio.h" -#include "esp_err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if SOC_DAC_SUPPORTED - -/** - * @brief DAC channel configuration - * - */ -typedef struct { - dac_channel_mask_t chan_sel; /*!< Using DAC channel mask to select the channels */ -} dac_channels_config_t; - -/** - * @brief DAC continuous mode configration - * - */ -typedef struct { - uint32_t freq_hz; /*!< The frequency of DAC conversion in continuous mode, unit: Hz - * The supported range is related to the target and the clock source. - * For the clock `DAC_DIGI_CLK_SRC_DEFAULT`: the range is 19.6 KHz to several MHz on ESP32 - * and 77 Hz to several MHz on ESP32-S2. - * For the clock `DAC_DIGI_CLK_SRC_APLL`: the range is 648 Hz to several MHz on ESP32 - * and 6 Hz to several MHz on ESP32-S2. - * Typically not suggest to set the frequency higher than 2 MHz, otherwise the severe distortion will appear - */ - dac_conti_clk_src_t clk_src; /*!< The clock source of digital controller, which can affect the range of supported frequency - * Currently `DAC_DIGI_CLK_SRC_DEFAULT` and `DAC_DIGI_CLK_SRC_APLL` are available - */ - uint32_t desc_num; /*!< The number of DMA descriptor, at least 2 descriptors are required - * The number of descriptors is directly proportional to the max data buffer size while converting in cyclic output - * but only need to ensure it is greater than '1' in acyclic output - * Typically, suggest to set the number bigger than 5, in case the DMA stopped while sending a short buffer - */ - uint32_t buf_size; /*!< The DMA buffer size, should be within 4092 bytes. Each DMA buffer will be attached to a DMA descriptor, - * i.e. the number of DMA buffer will be equal to the DMA descriptor number - * The DMA buffer size is not allowed to be greater than 4092 bytes - * The total DMA buffer size equal to `desc_num * buf_size` - * Typically, suggest to set the size to the multiple of 4 - */ - dac_conti_channel_mode_t chan_mode; /*!< The channel mode of continuous mode, only take effect when multiple channels enabled, depends converting the buffer alternately or simultaneously */ -} dac_conti_config_t; - -/** - * @brief DAC cosine wave gnerator configuration - * - */ -typedef struct { - uint32_t freq_hz; /*!< The frequency of cosine wave, unit: Hz. - * The cosine wave generator is driven by RTC clock which is about SOC_CLK_RC_FAST_FREQ_APPROX Hz by default, - * With the default RTC clock, the minimun frequency of cosine wave is about 130 Hz, - * Although it can support up to serveral MHz frequency theoretically, - * the waveform will distort at high frequency due to the hardware limitation. - * Typically not suggest to set the frequency higher than 200 KHz - */ - dac_cosine_clk_src_t clk_src; /*!< The clock source of the cosine wave generator, currently only support `DAC_COSINE_CLK_SRC_DEFAULT` which comes from RTC FAST clock */ - dac_cosine_scale_t scale; /*!< The scale of cosine wave amplitude */ - dac_cosine_phase_t phase; /*!< The phase of cosine wave */ - int8_t offset; /*!< The DC offset of cosine wave */ -} dac_cosine_config_t; - -typedef struct dac_channels_s *dac_channels_handle_t; /*!< DAC channels' handle of DAC peripheral, one or multiple DAC channels can be controlled by this handle */ - -/*-------------------------------------------------------------------------- - DAC common APIs - ---------------------------------------------------------------------------*/ -/** - * @brief Allocate a new DAC channels' handle - * @note The driver supports to manage one single channel by enabling only one channel in the channel mask, - * or multiple channels together as a whole by enabling multiple channels in the channel mask. - * Moreover, the channels can also be managed separately if they are allocated separately. - * - * @param[in] dac_cfg DAC basic configuration - * @param[out] handle DAC channels handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_NO_MEM No memory for a new DAC handle - * - ESP_ERR_INVALID_STATE The specified DAC channel is occupied already - * - ESP_OK Success to allocate DAC channels - */ -esp_err_t dac_new_channels(const dac_channels_config_t *dac_cfg, dac_channels_handle_t *handle); - -/** - * @brief Delete and free the DAC channels - * - * @param[in] handle DAC channels handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The channels are not disabled - * - ESP_OK Success to delete the channels - */ -esp_err_t dac_del_channels(dac_channels_handle_t handle); - -/** - * @brief Enabled the DAC channels in the channels - * @note GPIOs of DAC channles will be enabled in this step - * - * @param[in] handle DAC channels handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The channels has enabled already or the channels are running - * - ESP_OK Success to enable the channels - */ -esp_err_t dac_channels_enable(dac_channels_handle_t handle); - -/** - * @brief Disable the DAC channels in the channels - * - * @param[in] handle DAC channels handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The channels has disabled already or the channels are running - * - ESP_OK Success to enable the channels - */ -esp_err_t dac_channels_disable(dac_channels_handle_t handle); - -/*-------------------------------------------------------------------------- - DAC direct voltage outputting APIs - ---------------------------------------------------------------------------*/ -/** - * @brief DAC channels output a voltage directly - * @note This function is available when DAC chennels is enbled - * @note Please enable 'DAC ISR IRAM-Safe' in memuconfig when it is called in an IRAM safe ISR - * - * @param[in] handle DAC channels handle - * @param[in] value The digital value of the voltage - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The channels are not enabled - * - ESP_OK Success to enable the channels - */ -esp_err_t dac_channels_set_voltage(dac_channels_handle_t handle, uint8_t value); - -/*-------------------------------------------------------------------------- - DAC continuous outputting APIs - ---------------------------------------------------------------------------*/ -/** - * @brief Initialize the DAC channels to continuous mode - * @note DAC can convert digital data continuously in continuous mode - * - * @param[in] handle DAC channels handle - * @param[in] conti_cfg DAC continuous mode configuration - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC channels has been initialized already - * - ESP_ERR_NO_MEM No memory for DAC continuous mode - * - ESP_OK Success to initializing the DAC channels to continuous mode - */ -esp_err_t dac_channels_init_continuous_mode(dac_channels_handle_t handle, const dac_conti_config_t *conti_cfg); - -/** - * @brief Deinitialize the continuous mode of the DAC channels - * @note It can only be deinitialized when the continuous output is disabled - * - * @param[in] handle DAC channels handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC continuous mode is not disabled yet - * - ESP_OK Success to deinitialize the DAC continuous mode - */ -esp_err_t dac_channels_deinit_continuous_mode(dac_channels_handle_t handle); - -/** - * @brief Enable the DAC continuous output - * - * @param[in] handle DAC channels handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC continuous mode has been enabled already - * - ESP_OK Success to start the continuous output - */ -esp_err_t dac_channels_enable_continuous_mode(dac_channels_handle_t handle); - -/** - * @brief Disable the DAC continuous output - * - * @param[in] handle DAC channels handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC continuous mode is disabled already - * - ESP_OK Success to stop the continuous output - */ -esp_err_t dac_channels_disable_continuous_mode(dac_channels_handle_t handle); - -/** - * @brief Write DAC continuous data continuously - * @note The data in buffer will only be converted one time, - * This function will be blocked until all data loaded or timeout - * then the DAC output will keep outputting the voltage of the last data in the buffer - * @note On ESP32, the data bit width of DAC continuous data is fixed to 16 bits while only the high 8 bits are available, - * you can align the DAC data to 16 bits manually or set `CONFIG_DAC_DMA_AUTO_16BIT_ALIGN` to get the correct wave. - * But the data bit width is already 8 bits on ESP32-S2, each byte stands for an vailable voltage, - * no need to do any alignment. - * - * @param[in] handle DAC channels handle - * @param[in] buf The digital data buffer to convert - * @param[in] buf_size The buffer size of digital data buffer - * @param[out] bytes_loaded The bytes that has been loaded into DMA buffer, can be NULL if don't need it - * @param[in] timeout_ms The timeout time in mili-second - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC continuous mode has not been enabled yet - * - ESP_ERR_TIMEOUT Waiting for semaphore or message queue timeout - * - ESP_OK Success to output the acyclic DAC data - */ -esp_err_t dac_channels_write_continuously(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded, uint32_t timeout_ms); - -/** - * @brief Write DAC continuous data cyclically - * @note The data in buffer will be converted cyclically once this function is called, - * This function won't be blocked, it will return once the data loaded into DMA buffers - * @note The buffer size of cyclically output is limited by the descriptor number while initializing the continuous mode, - * Concretely, in order to load all the data into descriptors, - * the cyclic buffer size is not supposed to be greater than `desc_num * 4092` - * @note On ESP32, the data bit width of DAC continuous data is fixed to 16 bits while only the high 8 bits are available, - * you can align the DAC data to 16 bits manually or set `CONFIG_DAC_DMA_AUTO_16BIT_ALIGN` to get the correct wave. - * But the data bit width is already 8 bits on ESP32-S2, each byte stands for an vailable voltage, - * no need to do any alignment. - * - * @param[in] handle DAC channels handle - * @param[in] buf The digital data buffer to convert - * @param[in] buf_size The buffer size of digital data buffer - * @param[out] bytes_loaded The bytes that has been loaded into DMA buffer, can be NULL if don't need it - * @param[in] timeout_ms The timeout time in mili-second - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC continuous mode has not been enabled yet - * - ESP_ERR_TIMEOUT Waiting for semaphore or message queue timeout - * - ESP_OK Success to output the acyclic DAC data - */ -esp_err_t dac_channels_write_cyclically(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded, uint32_t timeout_ms); - -/*-------------------------------------------------------------------------- - DAC cosine wave outputting APIs - ---------------------------------------------------------------------------*/ -/** - * @brief Initialize the DAC channels to cosine wave mode - * - * @param[in] handle DAC channels handle - * @param[in] cw_cfg DAC cosine wave generater configuration - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC channels has been initialized already - * - ESP_OK Success to initialize the DAC channels into cosine wave mode - */ -esp_err_t dac_channels_init_cosine_mode(dac_channels_handle_t handle, const dac_cosine_config_t *cw_cfg); - -/** - * @brief Deinitialize the DAC channels to cosine wave mode - * - * @param[in] handle DAC channels handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC cosine wave generator is not stopped yet - * - ESP_OK Success to deinitialize the DAC cosine mode - */ -esp_err_t dac_channels_deinit_cosine_mode(dac_channels_handle_t handle); - -/** - * @brief Start the DAC cosine wave generator output - * - * @param[in] handle DAC channels handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC channels has not been enabled yet or started already - * - ESP_OK Success to start cosine wave generator - */ -esp_err_t dac_channels_start_cosine_output(dac_channels_handle_t handle); - -/** - * @brief Stop the DAC cosine wave generator output - * - * @param[in] handle DAC channels handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC channels has not been enabled yet or stoppped already - * - ESP_OK Success to stop cosine wave generator - */ -esp_err_t dac_channels_stop_cosine_output(dac_channels_handle_t handle); - -#endif // SOC_DAC_SUPPORTED - -#ifdef __cplusplus -} -#endif diff --git a/components/driver/include/driver/dac_oneshot.h b/components/driver/include/driver/dac_oneshot.h new file mode 100644 index 0000000000..6eefc61a85 --- /dev/null +++ b/components/driver/include/driver/dac_oneshot.h @@ -0,0 +1,70 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "driver/dac_types.h" +#include "esp_err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if SOC_DAC_SUPPORTED + +typedef struct dac_oneshot_s *dac_oneshot_handle_t; /*!< DAC oneshot channel handle */ + +/** + * @brief DAC oneshot channel configuration + * + */ +typedef struct { + dac_channel_t chan_id; /*!< DAC channel id */ +} dac_oneshot_config_t; + +/** + * @brief Allocate a new DAC oneshot channel + * @note The channel will be enabled as well when the channel allocated + * + * @param[in] oneshot_cfg The configuration for the oneshot channel + * @param[out] ret_handle The returned oneshot channel handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channel has been registered already + * - ESP_ERR_NO_MEM No memory for the DAC oneshot channel resources + * - ESP_OK Allocate the new DAC oneshot channel success + */ +esp_err_t dac_new_oneshot_channel(const dac_oneshot_config_t *oneshot_cfg, dac_oneshot_handle_t *ret_handle); + +/** + * @brief Delete the DAC oneshot channel + * @note The channel will be disabled as well when the channel deleted + * + * @param[in] handle The DAC oneshot channel handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channel has already been de-registered + * - ESP_OK Delete the oneshot channel success + */ +esp_err_t dac_del_oneshot_channel(dac_oneshot_handle_t handle); + +/** + * @brief Output the voltage + * @note Generally it'll take 7~11 us on ESP32 and 10~21 us on ESP32-S2 + * + * @param[in] handle The DAC oneshot channel handle + * @param[in] digi_value The digital value that need to be converted + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_OK Convert the digital value success + */ +esp_err_t dac_oneshot_output_voltage(dac_oneshot_handle_t handle, uint8_t digi_value); + +#endif // SOC_DAC_SUPPORTED + +#ifdef __cplusplus +} +#endif diff --git a/components/driver/include/driver/dac_types.h b/components/driver/include/driver/dac_types.h index 50733abcb9..eee23f73d6 100644 --- a/components/driver/include/driver/dac_types.h +++ b/components/driver/include/driver/dac_types.h @@ -12,6 +12,7 @@ #include "soc/soc_caps.h" #include "soc/clk_tree_defs.h" #include "hal/adc_types.h" +#include "hal/dac_types.h" #include "esp_bit_defs.h" #include "sdkconfig.h" @@ -20,17 +21,6 @@ extern "C" { #endif #if SOC_DAC_SUPPORTED - -/** - * @brief DAC channel mask - * - */ -typedef enum { - DAC_CHANNEL_MASK_CH0 = BIT(0), /*!< DAC channel 0 is GPIO25(ESP32) / GPIO17(ESP32S2) */ - DAC_CHANNEL_MASK_CH1 = BIT(1), /*!< DAC channel 1 is GPIO26(ESP32) / GPIO18(ESP32S2) */ - DAC_CHANNEL_MASK_BOTH = BIT(0) | BIT(1), /*!< Both DAC channel 0 and channel 1 */ -} dac_channel_mask_t; - /** * @brief DAC channel work mode in dma mode * @note Only take effect when multiple channels enabled. @@ -51,7 +41,7 @@ typedef enum { * @brief DAC DMA (digitial controller) clock source * */ -typedef soc_periph_dac_digi_clk_src_t dac_conti_clk_src_t; +typedef soc_periph_dac_digi_clk_src_t dac_conti_digi_clk_src_t; /** * @brief DAC cosine wave generator clock source @@ -59,26 +49,6 @@ typedef soc_periph_dac_digi_clk_src_t dac_conti_clk_src_t; */ typedef soc_periph_dac_cosine_clk_src_t dac_cosine_clk_src_t; -/** - * @brief The attenuation of the amplitude of the cosine wave generator. The max amplitude is VDD3P3_RTC. - */ -typedef enum { - DAC_COSINE_NO_ATTEN = 0x0, /*!< No attenuation to the DAC cosine wave amplitude. Default. */ - DAC_COSINE_ATTEN_2 = 0x1, /*!< 1/2 amplitude of the DAC cosine wave */ - DAC_COSINE_ATTEN_4 = 0x2, /*!< 1/4 amplitude of the DAC cosine wave */ - DAC_COSINE_ATTEN_8 = 0x3, /*!< 1/8 amplitude of the DAC cosine wave */ -} dac_cosine_scale_t; - -/** - * @brief Set the phase of the cosine wave generator output. - * @note Only 0 or 180 are supported, - * it will be set to 0 as default if configured to an unsupported phase. - */ -typedef enum { - DAC_COSINE_PHASE_0 = 0, /*!< Phase shift +0° */ - DAC_COSINE_PHASE_180 = 180, /*!< Phase shift +180° */ -} dac_cosine_phase_t; - #endif // SOC_DAC_SUPPORTED #ifdef __cplusplus diff --git a/components/driver/linker.lf b/components/driver/linker.lf index 119189a0e4..8501e9337c 100644 --- a/components/driver/linker.lf +++ b/components/driver/linker.lf @@ -18,6 +18,7 @@ entries: if SDM_CTRL_FUNC_IN_IRAM = y: sdm: sdm_channel_set_duty (noflash) if DAC_CTRL_FUNC_IN_IRAM = y: - dac_driver: dac_channels_set_voltage (noflash) + dac_oneshot: dac_oneshot_output_voltage (noflash) + dac_conti: dac_conti_write_asynchronously (noflash) if MCPWM_CTRL_FUNC_IN_IRAM = y: mcpwm_cmpr: mcpwm_comparator_set_compare_value (noflash) diff --git a/components/driver/test_apps/dac_test_apps/dac/main/test_dac.c b/components/driver/test_apps/dac_test_apps/dac/main/test_dac.c index 5f16e17335..0c43fa663b 100644 --- a/components/driver/test_apps/dac_test_apps/dac/main/test_dac.c +++ b/components/driver/test_apps/dac_test_apps/dac/main/test_dac.c @@ -4,11 +4,15 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include #include #include "unity.h" #include "unity_test_utils.h" -#include "driver/dac_driver.h" -#include "driver/adc.h" +#include "driver/dac_oneshot.h" +#include "driver/dac_cosine.h" +#include "driver/dac_conti.h" +#include "driver/gpio.h" +#include "esp_adc/adc_oneshot.h" #include "esp_err.h" #if CONFIG_IDF_TARGET_ESP32 #include "esp_private/i2s_platform.h" @@ -22,109 +26,129 @@ #endif #if CONFIG_IDF_TARGET_ESP32 -#define ADC_TEST_CHANNEL_NUM ADC2_CHANNEL_8 // GPIO25, same as DAC channel 0 -#define ADC_TEST_WIDTH ADC_WIDTH_BIT_12 +#define ADC_TEST_CHANNEL_NUM ADC_CHANNEL_8 // GPIO25, same as DAC channel 0 +#define ADC_TEST_WIDTH ADC_BITWIDTH_12 #elif CONFIG_IDF_TARGET_ESP32S2 -#define ADC_TEST_CHANNEL_NUM ADC2_CHANNEL_6 // GPIO17, same as DAC channel 0 -#define ADC_TEST_WIDTH ADC_WIDTH_BIT_13 +#define ADC_TEST_CHANNEL_NUM ADC_CHANNEL_6 // GPIO17, same as DAC channel 0 +#define ADC_TEST_WIDTH ADC_BITWIDTH_13 #endif #define ADC_TEST_ATTEN ADC_ATTEN_DB_11 TEST_CASE("DAC_API_basic_logic_test", "[dac]") { - dac_channels_handle_t handle; - dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; - dac_conti_config_t dma_cfg = { - .freq_hz = 20000, - .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, - .desc_num = 10, - .chan_mode = DAC_CHANNEL_MODE_SIMUL, - }; - dac_cosine_config_t cos_cfg = { - .freq_hz = 1000, + /* Constant API test */ + dac_oneshot_handle_t oneshot_chan0_handle; + TEST_ESP_OK(dac_new_oneshot_channel(&(dac_oneshot_config_t){.chan_id = DAC_CHAN_0}, &oneshot_chan0_handle)); + TEST_ESP_OK(dac_oneshot_output_voltage(oneshot_chan0_handle, 128)); + TEST_ESP_OK(dac_del_oneshot_channel(oneshot_chan0_handle)); + dac_oneshot_handle_t oneshot_chan1_handle; + TEST_ESP_OK(dac_new_oneshot_channel(&(dac_oneshot_config_t){.chan_id = DAC_CHAN_1}, &oneshot_chan1_handle)); + TEST_ESP_OK(dac_oneshot_output_voltage(oneshot_chan1_handle, 100)); + TEST_ESP_OK(dac_del_oneshot_channel(oneshot_chan1_handle)); + + /* Cosine wave API test */ + dac_cosine_handle_t cos_chan0_handle; + dac_cosine_handle_t cos_chan1_handle; + dac_cosine_config_t cos0_cfg = { + .chan_id = DAC_CHAN_0, + .freq_hz = 1000, // It will be covered by 8000 in the latter configuration .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, .offset = 0, .phase = DAC_COSINE_PHASE_0, - .scale = DAC_COSINE_NO_ATTEN, + .atten = DAC_COSINE_ATTEN_DEFAULT, + .flags.force_set_freq = false, }; - /* Constant API test */ - TEST_ESP_OK(dac_new_channels(&cfg, &handle)); - TEST_ESP_OK(dac_channels_enable(handle)); - TEST_ESP_OK(dac_channels_set_voltage(handle, 100)); - TEST_ESP_OK(dac_channels_disable(handle)); + dac_cosine_config_t cos1_cfg = { + .chan_id = DAC_CHAN_1, + .freq_hz = 8000, + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_180, + .atten = DAC_COSINE_ATTEN_DB_6, + .flags.force_set_freq = false, + }; + TEST_ESP_OK(dac_new_cosine_channel(&cos0_cfg, &cos_chan0_handle)); + /* Try to update the frequency without force set */ + TEST_ASSERT(dac_new_cosine_channel(&cos1_cfg, &cos_chan1_handle) == ESP_ERR_INVALID_STATE); + /* Force update the frequnecy */ + cos1_cfg.flags.force_set_freq = true; + TEST_ESP_OK(dac_new_cosine_channel(&cos1_cfg, &cos_chan1_handle)); + TEST_ASSERT(dac_cosine_stop(cos_chan0_handle) == ESP_ERR_INVALID_STATE); + TEST_ESP_OK(dac_cosine_start(cos_chan0_handle)); + TEST_ESP_OK(dac_cosine_start(cos_chan1_handle)); + TEST_ASSERT(dac_del_cosine_channel(cos_chan0_handle) == ESP_ERR_INVALID_STATE); + TEST_ESP_OK(dac_cosine_stop(cos_chan0_handle)); + TEST_ESP_OK(dac_cosine_stop(cos_chan1_handle)); + TEST_ESP_OK(dac_del_cosine_channel(cos_chan0_handle)); + TEST_ESP_OK(dac_del_cosine_channel(cos_chan1_handle)); /* DMA API test */ - TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); - TEST_ASSERT(dac_channels_enable_continuous_mode(handle) == ESP_ERR_INVALID_STATE); - TEST_ESP_OK(dac_channels_enable(handle)); - TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); - TEST_ASSERT(dac_channels_disable(handle) == ESP_ERR_INVALID_STATE); - TEST_ASSERT(dac_channels_deinit_continuous_mode(handle) == ESP_ERR_INVALID_STATE); - TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); - - /* Cosine wave API test */ - TEST_ESP_OK(dac_channels_init_cosine_mode(handle, &cos_cfg)); - TEST_ASSERT(dac_del_channels(handle) == ESP_ERR_INVALID_STATE); - TEST_ESP_OK(dac_channels_start_cosine_output(handle)); - TEST_ASSERT(dac_channels_disable(handle) == ESP_ERR_INVALID_STATE); - TEST_ESP_OK(dac_channels_stop_cosine_output(handle)); - TEST_ESP_OK(dac_channels_deinit_cosine_mode(handle)); - TEST_ESP_OK(dac_channels_disable(handle)); - TEST_ESP_OK(dac_del_channels(handle)); - + dac_conti_handle_t conti_handle; + dac_conti_config_t conti_cfg = { + .chan_mask = DAC_CHANNEL_MASK_ALL, + .desc_num = 8, + .buf_size = 2048, + .freq_hz = 48000, + .offset = 0, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + }; /* DMA peripheral availability test */ - TEST_ESP_OK(dac_new_channels(&cfg, &handle)); - TEST_ESP_OK(dac_channels_enable(handle)); #if CONFIG_IDF_TARGET_ESP32 TEST_ESP_OK(i2s_platform_acquire_occupation(0, "dac_test")); #elif CONFIG_IDF_TARGET_ESP32S2 TEST_ASSERT(spicommon_periph_claim(SPI3_HOST, "dac_test")); #endif - TEST_ASSERT(dac_channels_init_continuous_mode(handle, &dma_cfg) == ESP_ERR_NOT_FOUND); + TEST_ASSERT(dac_new_conti_channels(&conti_cfg, &conti_handle) == ESP_ERR_NOT_FOUND); #if CONFIG_IDF_TARGET_ESP32 TEST_ESP_OK(i2s_platform_release_occupation(0)); #elif CONFIG_IDF_TARGET_ESP32S2 TEST_ASSERT(spicommon_periph_free(SPI3_HOST)); #endif - TEST_ESP_OK(dac_channels_disable(handle)); - TEST_ESP_OK(dac_del_channels(handle)); + + TEST_ESP_OK(dac_new_conti_channels(&conti_cfg, &conti_handle)); + TEST_ASSERT(dac_conti_disable(conti_handle) == ESP_ERR_INVALID_STATE); + TEST_ESP_OK(dac_conti_enable(conti_handle)); + TEST_ASSERT(dac_del_conti_channels(conti_handle) == ESP_ERR_INVALID_STATE); + TEST_ESP_OK(dac_conti_disable(conti_handle)); + TEST_ESP_OK(dac_del_conti_channels(conti_handle)); } TEST_CASE("DAC_memory_leak_test", "[dac]") { - dac_channels_handle_t handle; - dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; - dac_conti_config_t dma_cfg = { - .chan_mode = DAC_CHANNEL_MODE_SIMUL, + dac_conti_handle_t conti_handle; + dac_conti_config_t conti_cfg = { + .chan_mask = DAC_CHANNEL_MASK_ALL, + .desc_num = 8, + .buf_size = 2048, + .freq_hz = 48000, + .offset = 0, .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, - .desc_num = 10, - .freq_hz = 20000, + .chan_mode = DAC_CHANNEL_MODE_SIMUL, }; - /* Some resources will be lazy installed, ignore the first around */ - TEST_ESP_OK(dac_new_channels(&cfg, &handle)); - TEST_ESP_OK(dac_channels_enable(handle)); - TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); - TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_disable(handle)); - TEST_ESP_OK(dac_del_channels(handle)); + size_t len = 1024; + uint8_t buf[len]; + for (int i = 0; i < len; i++) { + buf[i] = i % 256; + } - int initial_size = esp_get_free_heap_size(); - printf("Initial free heap size: %d\n", initial_size); + TEST_ESP_OK(dac_new_conti_channels(&conti_cfg, &conti_handle)); + TEST_ESP_OK(dac_conti_enable(conti_handle)); + TEST_ESP_OK(dac_conti_write_cyclically(conti_handle, buf, len, NULL)); + TEST_ESP_OK(dac_conti_disable(conti_handle)); + TEST_ESP_OK(dac_del_conti_channels(conti_handle)); + + uint32_t initial_size = esp_get_free_heap_size(); + printf("Initial free heap size: %"PRIu32"\n", initial_size); for (int i = 0; i < 20; i++) { printf("# %d: ---------------------------------\n", i + 1); - TEST_ESP_OK(dac_new_channels(&cfg, &handle)); - TEST_ESP_OK(dac_channels_enable(handle)); - TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); - TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_disable(handle)); - TEST_ESP_OK(dac_del_channels(handle)); - printf("current heap size: %d\n", esp_get_free_heap_size()); + TEST_ESP_OK(dac_new_conti_channels(&conti_cfg, &conti_handle)); + TEST_ESP_OK(dac_conti_enable(conti_handle)); + TEST_ESP_OK(dac_conti_write_cyclically(conti_handle, buf, len, NULL)); + TEST_ESP_OK(dac_conti_disable(conti_handle)); + TEST_ESP_OK(dac_del_conti_channels(conti_handle)); + printf("current heap size: %"PRIu32"\n", esp_get_free_heap_size()); TEST_ASSERT(initial_size == esp_get_free_heap_size()); } vTaskDelay(100 / portTICK_PERIOD_MS); @@ -133,60 +157,70 @@ TEST_CASE("DAC_memory_leak_test", "[dac]") TEST_CASE("DAC_set_voltage_test", "[dac]") { - dac_channels_handle_t handle; - dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; - TEST_ESP_OK(dac_new_channels(&cfg, &handle)); - TEST_ESP_OK(dac_channels_enable(handle)); + dac_oneshot_handle_t oneshot_chan0_handle; + dac_oneshot_config_t onshot_cfg = { + .chan_id = DAC_CHAN_0, + }; + TEST_ESP_OK(dac_new_oneshot_channel(&onshot_cfg, &oneshot_chan0_handle)); /* Prepare ADC2 */ - TEST_ESP_OK(adc2_config_channel_atten(ADC_TEST_CHANNEL_NUM, ADC_TEST_ATTEN)); + adc_oneshot_unit_handle_t adc2_handle; + adc_oneshot_unit_init_cfg_t unit_cfg = { + .unit_id = ADC_UNIT_2, + .ulp_mode = false, + }; + TEST_ESP_OK(adc_oneshot_new_unit(&unit_cfg, &adc2_handle)); + adc_oneshot_chan_cfg_t chan_cfg = { + .atten = ADC_TEST_ATTEN, + .bitwidth = ADC_BITWIDTH_DEFAULT, + }; + TEST_ESP_OK(adc_oneshot_config_channel(adc2_handle, ADC_TEST_CHANNEL_NUM, &chan_cfg)); int curr_adc = 0; int last_adc = 0; for (uint8_t i = 0; i <= 200; i += 20) { - TEST_ESP_OK(dac_channels_set_voltage(handle, i)); + TEST_ESP_OK(dac_oneshot_output_voltage(oneshot_chan0_handle, i)); vTaskDelay(pdMS_TO_TICKS(20)); - TEST_ESP_OK(adc2_get_raw(ADC_TEST_CHANNEL_NUM, ADC_TEST_WIDTH, &curr_adc)); + TEST_ESP_OK(adc_oneshot_read(adc2_handle, ADC_TEST_CHANNEL_NUM, &curr_adc)); printf("DAC: %d - ADC: %d\n", i, curr_adc); if (last_adc != 0) { TEST_ASSERT_GREATER_THAN(last_adc, curr_adc); } last_adc = curr_adc; } - TEST_ESP_OK(dac_channels_disable(handle)); - TEST_ESP_OK(dac_del_channels(handle)); + TEST_ESP_OK(dac_del_oneshot_channel(oneshot_chan0_handle)); + TEST_ESP_OK(adc_oneshot_del_unit(adc2_handle)); } TEST_CASE("DAC_dma_write_test", "[dac]") { - dac_channels_handle_t handle; - dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; - dac_conti_config_t dma_cfg = { - .chan_mode = DAC_CHANNEL_MODE_SIMUL, + dac_conti_handle_t conti_handle; + dac_conti_config_t conti_cfg = { + .chan_mask = DAC_CHANNEL_MASK_ALL, + .desc_num = 8, + .buf_size = 1024, + .freq_hz = 48000, + .offset = 0, .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, - .desc_num = 10, - .freq_hz = 20000, + .chan_mode = DAC_CHANNEL_MODE_SIMUL, }; - uint8_t *data = (uint8_t *)calloc(1, 2000); - TEST_ASSERT(data); - for (int i = 0; i < 2000; i++) { - data[i] = i % 256; + size_t len = 520; // To test if the driver can work correctly with uncommon length + uint8_t buf[len]; + for (int i = 0; i < len; i++) { + buf[i] = i % 104; } - TEST_ESP_OK(dac_new_channels(&cfg, &handle)); - TEST_ESP_OK(dac_channels_enable(handle)); - TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); - TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); - - TEST_ESP_OK(dac_channels_write_continuously(handle, data, 2000, NULL, 1000)); - vTaskDelay(pdMS_TO_TICKS(200)); - TEST_ESP_OK(dac_channels_write_cyclically(handle, data, 2000, NULL, 1000)); - - TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_disable(handle)); - TEST_ESP_OK(dac_del_channels(handle)); - free(data); + TEST_ESP_OK(dac_new_conti_channels(&conti_cfg, &conti_handle)); + TEST_ESP_OK(dac_conti_enable(conti_handle)); + for (int i = 0; i < 4; i++) { + TEST_ESP_OK(dac_conti_write_cyclically(conti_handle, buf, len, NULL)); + vTaskDelay(pdMS_TO_TICKS(200)); + for (int j = 0; j < 10; j++) { + TEST_ESP_OK(dac_conti_write(conti_handle, buf, len, NULL, 1000)); + } + } + TEST_ESP_OK(dac_conti_disable(conti_handle)); + TEST_ESP_OK(dac_del_conti_channels(conti_handle)); } /* Test the conversion frequency by counting the pulse of WS signal @@ -221,26 +255,25 @@ TEST_CASE("DAC_dma_conver_frequency_test", "[dac]") esp_rom_gpio_connect_out_signal(GPIO_NUM_4, i2s_periph_signal[0].m_tx_ws_sig, 0, 0); esp_rom_gpio_connect_in_signal(GPIO_NUM_4, pcnt_periph_signals.groups[0].units[0].channels[0].pulse_sig, 0); - uint8_t *data = (uint8_t *)calloc(1, 2000); - TEST_ASSERT(data); + size_t len = 800; + uint8_t data[len]; + for (int i = 0; i < len; i++) { + data[i] = i % 256; + } - /* Register DAC DMA using PLL */ - dac_channels_handle_t handle; - dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; - dac_conti_config_t dma_cfg = { - .chan_mode = DAC_CHANNEL_MODE_SIMUL, - .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, - .desc_num = 10, + dac_conti_handle_t conti_handle; + dac_conti_config_t conti_cfg = { + .chan_mask = DAC_CHANNEL_MASK_ALL, + .desc_num = 8, + .buf_size = 2048, .freq_hz = 20000, + .offset = 0, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .chan_mode = DAC_CHANNEL_MODE_SIMUL, }; - - /* Initialize DAC to test default PLL clock */ - TEST_ESP_OK(dac_new_channels(&cfg, &handle)); - TEST_ESP_OK(dac_channels_enable(handle)); - TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); - TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); - /* Start transmitting data on line */ - TEST_ESP_OK(dac_channels_write_cyclically(handle, data, 2000, NULL, 1000)); + TEST_ESP_OK(dac_new_conti_channels(&conti_cfg, &conti_handle)); + TEST_ESP_OK(dac_conti_enable(conti_handle)); + TEST_ESP_OK(dac_conti_write_cyclically(conti_handle, data, len, NULL)); int expt_pulse = 2000; int real_pulse; @@ -250,23 +283,19 @@ TEST_CASE("DAC_dma_conver_frequency_test", "[dac]") vTaskDelay(pdMS_TO_TICKS(100)); TEST_ESP_OK(pcnt_unit_stop(pcnt_unit)); TEST_ESP_OK(pcnt_unit_get_count(pcnt_unit, &real_pulse)); - /* Delete DAC handle */ - TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_disable(handle)); - TEST_ESP_OK(dac_del_channels(handle)); + /* Delete DAC continuous handle */ + TEST_ESP_OK(dac_conti_disable(conti_handle)); + TEST_ESP_OK(dac_del_conti_channels(conti_handle)); printf("[PLL | 20000 Hz] %d pulses, expected %d, err %d\n", real_pulse, expt_pulse, real_pulse - expt_pulse); TEST_ASSERT_INT_WITHIN(expt_pulse * 0.01, expt_pulse, real_pulse); - dma_cfg.clk_src = DAC_DIGI_CLK_SRC_APLL; + conti_cfg.clk_src = DAC_DIGI_CLK_SRC_APLL; /* Initialize DAC to test APLL clock */ - TEST_ESP_OK(dac_new_channels(&cfg, &handle)); - TEST_ESP_OK(dac_channels_enable(handle)); - TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); - TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + TEST_ESP_OK(dac_new_conti_channels(&conti_cfg, &conti_handle)); + TEST_ESP_OK(dac_conti_enable(conti_handle)); /* Start transmitting data on line */ - TEST_ESP_OK(dac_channels_write_cyclically(handle, data, 2000, NULL, 1000)); + TEST_ESP_OK(dac_conti_write_cyclically(conti_handle, data, len, NULL)); /* Count pulse by PCNT */ TEST_ESP_OK(pcnt_unit_clear_count(pcnt_unit)); @@ -275,14 +304,11 @@ TEST_CASE("DAC_dma_conver_frequency_test", "[dac]") TEST_ESP_OK(pcnt_unit_stop(pcnt_unit)); TEST_ESP_OK(pcnt_unit_get_count(pcnt_unit, &real_pulse)); /* Delete DAC handle */ - TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_disable(handle)); - TEST_ESP_OK(dac_del_channels(handle)); + TEST_ESP_OK(dac_conti_disable(conti_handle)); + TEST_ESP_OK(dac_del_conti_channels(conti_handle)); printf("[APLL | 20000 Hz] %d pulses, expected %d, err %d\n", real_pulse, expt_pulse, real_pulse - expt_pulse); TEST_ASSERT_INT_WITHIN(expt_pulse * 0.01, expt_pulse, real_pulse); - free(data); /* Free PCNT */ TEST_ESP_OK(pcnt_del_channel(pcnt_chan)); TEST_ESP_OK(pcnt_unit_stop(pcnt_unit)); @@ -293,76 +319,100 @@ TEST_CASE("DAC_dma_conver_frequency_test", "[dac]") TEST_CASE("DAC_cosine_wave_test", "[dac]") { - dac_channels_handle_t handle; - dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; - dac_cosine_config_t cos_cfg = { - .freq_hz = 1000, + dac_cosine_handle_t cos_chan0_handle; + dac_cosine_handle_t cos_chan1_handle; + dac_cosine_config_t cos0_cfg = { + .chan_id = DAC_CHAN_0, + .freq_hz = 1000, // It will be covered by 8000 in the latter configuration .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, .offset = 0, .phase = DAC_COSINE_PHASE_0, - .scale = DAC_COSINE_NO_ATTEN, + .atten = DAC_COSINE_ATTEN_DEFAULT, + .flags.force_set_freq = false, }; - TEST_ESP_OK(dac_new_channels(&cfg, &handle)); - TEST_ESP_OK(dac_channels_enable(handle)); - TEST_ESP_OK(dac_channels_init_cosine_mode(handle, &cos_cfg)); - TEST_ESP_OK(dac_channels_start_cosine_output(handle)); + dac_cosine_config_t cos1_cfg = { + .chan_id = DAC_CHAN_1, + .freq_hz = 1000, + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_180, + .atten = DAC_COSINE_ATTEN_DB_6, + .flags.force_set_freq = false, + }; + TEST_ESP_OK(dac_new_cosine_channel(&cos0_cfg, &cos_chan0_handle)); + TEST_ESP_OK(dac_new_cosine_channel(&cos1_cfg, &cos_chan1_handle)); + TEST_ESP_OK(dac_cosine_start(cos_chan0_handle)); + TEST_ESP_OK(dac_cosine_start(cos_chan1_handle)); - vTaskDelay(pdMS_TO_TICKS(200)); + // TODO: find some more meaningful way to test cosine wave + vTaskDelay(pdMS_TO_TICKS(500)); - TEST_ESP_OK(dac_channels_stop_cosine_output(handle)); - TEST_ESP_OK(dac_channels_deinit_cosine_mode(handle)); - TEST_ESP_OK(dac_channels_disable(handle)); - TEST_ESP_OK(dac_del_channels(handle)); + TEST_ESP_OK(dac_cosine_stop(cos_chan0_handle)); + TEST_ESP_OK(dac_cosine_stop(cos_chan1_handle)); + TEST_ESP_OK(dac_del_cosine_channel(cos_chan0_handle)); + TEST_ESP_OK(dac_del_cosine_channel(cos_chan1_handle)); } -static volatile bool task_run_flag; - -static void dac_acyclicly_write_task(void *arg) +static void dac_cyclically_write_task(void *arg) { - dac_channels_handle_t dac_handle = (dac_channels_handle_t)arg; - uint8_t buf[1000]; - for (int i = 0; i < 1000; i++) { - buf[i] = i % 256; - } - while (task_run_flag) { - if (dac_channels_write_continuously(dac_handle, buf, 100, NULL, 1000) == ESP_OK) { - printf("DAC write data success\n"); + dac_conti_handle_t dac_handle = (dac_conti_handle_t)arg; + size_t len = 1000; + uint8_t buf[len]; + uint8_t max_val = 50; + while (1) { + max_val += 50; + for (int i = 0; i < len; i++) { + buf[i] = i % max_val; } - vTaskDelay(20); + printf("Write cyclically\n"); + TEST_ESP_OK(dac_conti_write_cyclically(dac_handle, buf, len, NULL)); + vTaskDelay(pdMS_TO_TICKS(200)); } vTaskDelete(NULL); } -TEST_CASE("DAC_DMA_thread_safe", "[dac]") +static void dac_continuously_write_task(void *arg) { - dac_channels_handle_t handle; - dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_CH0}; - dac_conti_config_t dma_cfg = { - .chan_mode = DAC_CHANNEL_MODE_SIMUL, - .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, - .desc_num = 10, - .freq_hz = 20000, - }; - TEST_ESP_OK(dac_new_channels(&cfg, &handle)); - TEST_ESP_OK(dac_channels_enable(handle)); - TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); - TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); - task_run_flag = true; - xTaskCreate(dac_acyclicly_write_task, "dac_acyclicly_write_task", 4096, handle, 5, NULL); - - for (int i = 0; i < 5; i++) { - TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); - printf("DAC stopped\n"); - vTaskDelay(pdMS_TO_TICKS(100)); - TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); - printf("DAC started\n"); + dac_conti_handle_t dac_handle = (dac_conti_handle_t)arg; + size_t len = 2048; + uint8_t buf[len]; + for (int i = 0; i < len; i++) { + buf[i] = i % 256; + } + while (1) { + printf("Write continuously\n"); + TEST_ESP_OK(dac_conti_write(dac_handle, buf, len, NULL, 100)); vTaskDelay(pdMS_TO_TICKS(300)); } - task_run_flag = false; - vTaskDelay(pdMS_TO_TICKS(100)); - - TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_disable(handle)); - TEST_ESP_OK(dac_del_channels(handle)); + vTaskDelete(NULL); +} + +TEST_CASE("DAC_continuous_mode_concurrency_test", "[dac]") +{ + dac_conti_handle_t conti_handle; + dac_conti_config_t conti_cfg = { + .chan_mask = DAC_CHANNEL_MASK_ALL, + .desc_num = 8, + .buf_size = 1024, + .freq_hz = 48000, + .offset = 0, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + }; + + TEST_ESP_OK(dac_new_conti_channels(&conti_cfg, &conti_handle)); + TEST_ESP_OK(dac_conti_enable(conti_handle)); + + TaskHandle_t cyc_task; + TaskHandle_t con_task; + xTaskCreate(dac_cyclically_write_task, "dac_cyclically_write_task", 4096, conti_handle, 5, &cyc_task); + xTaskCreate(dac_continuously_write_task, "dac_continuously_write_task", 4096, conti_handle, 5, &con_task); + + vTaskDelay(pdMS_TO_TICKS(5000)); + + vTaskDelete(cyc_task); + vTaskDelete(con_task); + + TEST_ESP_OK(dac_conti_disable(conti_handle)); + TEST_ESP_OK(dac_del_conti_channels(conti_handle)); } diff --git a/components/driver/test_apps/dac_test_apps/dac/main/test_dac_iram.c b/components/driver/test_apps/dac_test_apps/dac/main/test_dac_iram.c index 98f571a1e3..46720654be 100644 --- a/components/driver/test_apps/dac_test_apps/dac/main/test_dac_iram.c +++ b/components/driver/test_apps/dac_test_apps/dac/main/test_dac_iram.c @@ -7,40 +7,91 @@ #include #include "unity.h" #include "unity_test_utils.h" -#include "driver/dac_driver.h" -#include "esp_private/spi_flash_os.h" +#include "unity_test_utils_cache.h" +#include "driver/dac_oneshot.h" +#include "driver/dac_conti.h" #include "esp_heap_caps.h" #include "esp_err.h" +#include "esp_log.h" #define BUF_SIZE 2000 -static void IRAM_ATTR test_dac_direct_set_safety(dac_channels_handle_t handle) +typedef struct { + int cnt; + bool result; +} test_dac_intr_data_t; + +static void IRAM_ATTR test_dac_direct_set_safety(void *usr_ctx) { - spi_flash_guard_get()->start(); - dac_channels_set_voltage(handle, 128); - spi_flash_guard_get()->end(); + dac_oneshot_handle_t handle = (dac_oneshot_handle_t)usr_ctx; + dac_oneshot_output_voltage(handle, 128); } -static void IRAM_ATTR test_dac_dma_iram_safety(dac_channels_handle_t handle, uint8_t *data, uint32_t len) +static void IRAM_ATTR test_dac_dma_iram_safety(void *usr_ctx) { - spi_flash_guard_get()->start(); - // Change the data of DMA - for (int i = 0; i < len; i++) { - data[i] = i % 100; + uint8_t *data = (uint8_t *)usr_ctx; + for (int i = 0; i < BUF_SIZE; i++) { + data[i] = i % 128 + 1; } - spi_flash_guard_get()->end(); +} + +static void IRAM_ATTR test_dac_dma_intr_iram_safety(void *usr_ctx) +{ + test_dac_intr_data_t *data = (test_dac_intr_data_t *)usr_ctx; + data->cnt = 0; + esp_rom_delay_us(100 * 1000); + data->result = data->cnt > 0; +} + +static bool IRAM_ATTR test_dac_on_convert_done_cb(dac_conti_handle_t handle, const dac_event_data_t *event, void *user_data) +{ + test_dac_intr_data_t *data = (test_dac_intr_data_t *)user_data; + data->cnt++; + return false; } TEST_CASE("DAC_IRAM_safe_test", "[dac]") { - dac_channels_handle_t handle; - dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; - dac_conti_config_t dma_cfg = { - .chan_mode = DAC_CHANNEL_MODE_SIMUL, - .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, - .desc_num = 10, + dac_oneshot_handle_t oneshot_handle; + TEST_ESP_OK(dac_new_oneshot_channel(&(dac_oneshot_config_t){.chan_id = DAC_CHAN_0}, &oneshot_handle)); + + /* Test direct voltage setting safety */ + unity_utils_run_cache_disable_stub(test_dac_direct_set_safety, oneshot_handle); + + TEST_ESP_OK(dac_del_oneshot_channel(oneshot_handle)); + + dac_conti_handle_t conti_handle; + dac_conti_config_t conti_cfg = { + .chan_mask = DAC_CHANNEL_MASK_ALL, + .desc_num = 8, + .buf_size = 2048, .freq_hz = 40000, + .offset = 0, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' + /* Assume the data in buffer is 'A B C D E F' + * DAC_CHANNEL_MODE_SIMUL: + * - channel 0: A B C D E F + * - channel 1: A B C D E F + * DAC_CHANNEL_MODE_ALTER: + * - channel 0: A C E + * - channel 1: B D F + */ + .chan_mode = DAC_CHANNEL_MODE_SIMUL, }; + /* Allocate continuous channel */ + TEST_ESP_OK(dac_new_conti_channels(&conti_cfg, &conti_handle)); + /* Register a callback to check if the interrupt can still triggered when cache is disabled */ + dac_event_callbacks_t cbs = { + .on_convert_done = test_dac_on_convert_done_cb, + .on_stop = NULL, + }; + test_dac_intr_data_t intr_data = { + .cnt = 0, + .result = false, + }; + TEST_ESP_OK(dac_conti_register_event_callback(conti_handle, &cbs, &intr_data)); + /* Enable the channels in the group */ + TEST_ESP_OK(dac_conti_enable(conti_handle)); /* Real data in internal memory */ uint8_t *data = (uint8_t *)heap_caps_calloc(1, BUF_SIZE, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT); @@ -48,23 +99,12 @@ TEST_CASE("DAC_IRAM_safe_test", "[dac]") for (int i = 0; i < BUF_SIZE; i++) { data[i] = i % 256; } - /* Get ready for dma transmition */ - TEST_ESP_OK(dac_new_channels(&cfg, &handle)); - TEST_ESP_OK(dac_channels_enable(handle)); - /* Test direct voltage setting safety */ - test_dac_direct_set_safety(handle); + dac_conti_write_cyclically(conti_handle, data, BUF_SIZE, NULL); + unity_utils_run_cache_disable_stub(test_dac_dma_iram_safety, data); + unity_utils_run_cache_disable_stub(test_dac_dma_intr_iram_safety, &intr_data); + TEST_ASSERT(intr_data.result); - TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); - TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); - - /* Simulate cache off */ - dac_channels_write_cyclically(handle, data, BUF_SIZE, NULL, 1000); - test_dac_dma_iram_safety(handle, data, BUF_SIZE); - - /* Deregister DAC DMA channel group */ - TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); - TEST_ESP_OK(dac_channels_disable(handle)); - TEST_ESP_OK(dac_del_channels(handle)); + TEST_ESP_OK(dac_conti_disable(conti_handle)); + TEST_ESP_OK(dac_del_conti_channels(conti_handle)); free(data); } diff --git a/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.iram_safe b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.iram_safe index 2315dc6938..0c13dc0841 100644 --- a/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.iram_safe +++ b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.iram_safe @@ -1,5 +1,4 @@ CONFIG_COMPILER_DUMP_RTL_FILES=y CONFIG_DAC_ISR_IRAM_SAFE=y CONFIG_DAC_CTRL_FUNC_IN_IRAM=y -# silent the error check, as the error string are stored in rodata, causing RTL check failure -CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y +CONFIG_COMPILER_OPTIMIZATION_NONE=y diff --git a/components/driver/test_apps/dac_test_apps/dac/sdkconfig.defaults b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.defaults index a7d8d84efc..0a847f27d5 100644 --- a/components/driver/test_apps/dac_test_apps/dac/sdkconfig.defaults +++ b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.defaults @@ -1,4 +1,4 @@ CONFIG_FREERTOS_HZ=1000 CONFIG_ESP_TASK_WDT=n # Disable this config, otherwise DAC will be disabled when ADC initialized -CONFIG_ADC_DISABLE_DAC=n +CONFIG_ADC_DISABLE_DAC_OUTPUT=n diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_legacy_dac.c b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_legacy_dac.c index 30a22164d2..d6cabe93c4 100644 --- a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_legacy_dac.c +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_legacy_dac.c @@ -6,6 +6,7 @@ /* Tests for the dac device driver */ +#include #include "esp_system.h" #include "unity.h" @@ -158,26 +159,26 @@ TEST_CASE("esp32s2_adc2-dac_with_adc2_calibration", "[dac_legacy]") printf("Test 0dB atten...\n"); adc2_config_channel_atten((adc2_channel_t)ADC_TEST_CHANNEL_NUM, ADC_ATTEN_DB_0); esp_adc_cal_characterize(ADC_UNIT_2, ADC_ATTEN_DB_0, ADC_WIDTH_BIT_13, 0, &chars); - printf("a %d, b %d\n", chars.coeff_a, chars.coeff_b); + printf("a %"PRIu32", b %"PRIu32"\n", chars.coeff_a, chars.coeff_b); subtest_adc_dac(750, &chars); printf("Test 2.5dB atten...\n"); adc2_config_channel_atten((adc2_channel_t)ADC_TEST_CHANNEL_NUM, ADC_ATTEN_DB_2_5); esp_adc_cal_characterize(ADC_UNIT_2, ADC_ATTEN_DB_2_5, ADC_WIDTH_BIT_13, 0, &chars); - printf("a %d, b %d\n", chars.coeff_a, chars.coeff_b); + printf("a %"PRIu32", b %"PRIu32"\n", chars.coeff_a, chars.coeff_b); subtest_adc_dac(1100, &chars); printf("Test 6dB atten...\n"); adc2_config_channel_atten((adc2_channel_t)ADC_TEST_CHANNEL_NUM, ADC_ATTEN_DB_6); esp_adc_cal_characterize(ADC_UNIT_2, ADC_ATTEN_DB_6, ADC_WIDTH_BIT_13, 0, &chars); - printf("a %d, b %d\n", chars.coeff_a, chars.coeff_b); + printf("a %"PRIu32", b %"PRIu32"\n", chars.coeff_a, chars.coeff_b); subtest_adc_dac(800, &chars); subtest_adc_dac(1250, &chars); printf("Test 11dB atten...\n"); adc2_config_channel_atten((adc2_channel_t)ADC_TEST_CHANNEL_NUM, ADC_ATTEN_DB_11); esp_adc_cal_characterize(ADC_UNIT_2, ADC_ATTEN_DB_11, ADC_WIDTH_BIT_13, 0, &chars); - printf("a %d, b %d\n", chars.coeff_a, chars.coeff_b); + printf("a %"PRIu32", b %"PRIu32"\n", chars.coeff_a, chars.coeff_b); subtest_adc_dac(1500, &chars); subtest_adc_dac(2500, &chars); } diff --git a/components/hal/adc_oneshot_hal.c b/components/hal/adc_oneshot_hal.c index ada59ecb2d..27ee5283a2 100644 --- a/components/hal/adc_oneshot_hal.c +++ b/components/hal/adc_oneshot_hal.c @@ -158,7 +158,7 @@ static void s_disable_dac(adc_oneshot_hal_ctx_t *hal, adc_channel_t channel) #if CONFIG_IDF_TARGET_ESP32 if (hal->unit == ADC_UNIT_2) { if (channel == ADC_CHANNEL_8) { - dac_ll_power_down(DAC_CHAN_0); // the same as DAC channel 1 + dac_ll_power_down(DAC_CHAN_0); // the same as DAC channel 0 } if (channel == ADC_CHANNEL_9) { dac_ll_power_down(DAC_CHAN_1); @@ -167,7 +167,7 @@ static void s_disable_dac(adc_oneshot_hal_ctx_t *hal, adc_channel_t channel) #elif CONFIG_IDF_TARGET_ESP32S2 if (hal->unit == ADC_UNIT_2) { if (channel == ADC_CHANNEL_6) { - dac_ll_power_down(DAC_CHAN_0); // the same as DAC channel 1 + dac_ll_power_down(DAC_CHAN_0); // the same as DAC channel 0 } if (channel == ADC_CHANNEL_7) { dac_ll_power_down(DAC_CHAN_1); diff --git a/components/hal/esp32/include/hal/dac_ll.h b/components/hal/esp32/include/hal/dac_ll.h index 66207471e6..143b7ff7cb 100644 --- a/components/hal/esp32/include/hal/dac_ll.h +++ b/components/hal/esp32/include/hal/dac_ll.h @@ -56,6 +56,7 @@ static inline void dac_ll_power_down(dac_channel_t channel) * @param value Output value. Value range: 0 ~ 255. * The corresponding range of voltage is 0v ~ VDD3P3_RTC. */ +__attribute__((always_inline)) static inline void dac_ll_update_output_value(dac_channel_t channel, uint8_t value) { if (channel == DAC_CHAN_0) { @@ -104,7 +105,7 @@ static inline void dac_ll_cw_generator_disable(void) * @param channel DAC channel num. * @param enable */ -static inline void dac_ll_cw_set_channel(dac_channel_t channel, bool enable) +static inline void dac_ll_cw_enable_channel(dac_channel_t channel, bool enable) { if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_cw_en1 = enable; @@ -117,12 +118,12 @@ static inline void dac_ll_cw_set_channel(dac_channel_t channel, bool enable) * Set frequency of cosine wave generator output. * * @note We know that CLK8M is about 8M, but don't know the actual value. so this freq have limited error. - * @param freq_hz CW generator frequency. Range: 130(130Hz) + * @param freq_hz CW generator frequency. Range: >= 130Hz, no exact ceiling limitation, but will distort when reach several MHz * @param rtc8m_freq the calibrated RTC 8M clock frequency */ static inline void dac_ll_cw_set_freq(uint32_t freq, uint32_t rtc8m_freq) { - uint32_t sw_freq = (uint32_t)(((float)freq / (float)rtc8m_freq) * 65536); + uint32_t sw_freq = (uint32_t)(((uint64_t)freq << 16) / rtc8m_freq); HAL_FORCE_MODIFY_U32_REG_FIELD(SENS.sar_dac_ctrl1, sw_fstep, (sw_freq > 0xFFFF) ? 0xFFFF : sw_freq); } @@ -130,14 +131,18 @@ static inline void dac_ll_cw_set_freq(uint32_t freq, uint32_t rtc8m_freq) * Set the amplitude of the cosine wave generator output. * * @param channel DAC channel num. - * @param scale The multiple of the amplitude. The max amplitude is VDD3P3_RTC. + * @param atten The attenuation of the amplitude. The max amplitude is VDD3P3_RTC. + * 0: attenuation = 1, amplitude = VDD3P3_RTC / attenuation, + * 1: attenuation = 2, amplitude = VDD3P3_RTC / attenuation, + * 2: attenuation = 4, amplitude = VDD3P3_RTC / attenuation, + * 3: attenuation = 8, amplitude = VDD3P3_RTC / attenuation */ -static inline void dac_ll_cw_set_scale(dac_channel_t channel, uint32_t scale) +static inline void dac_ll_cw_set_atten(dac_channel_t channel, dac_cosine_atten_t atten) { if (channel == DAC_CHAN_0) { - SENS.sar_dac_ctrl2.dac_scale1 = scale; + SENS.sar_dac_ctrl2.dac_scale1 = atten; } else if (channel == DAC_CHAN_1) { - SENS.sar_dac_ctrl2.dac_scale2 = scale; + SENS.sar_dac_ctrl2.dac_scale2 = atten; } } @@ -147,7 +152,7 @@ static inline void dac_ll_cw_set_scale(dac_channel_t channel, uint32_t scale) * @param channel DAC channel num. * @param phase Phase value. 0: 0x02 180: 0x03. */ -static inline void dac_ll_cw_set_phase(dac_channel_t channel, uint32_t phase) +static inline void dac_ll_cw_set_phase(dac_channel_t channel, dac_cosine_phase_t phase) { if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_inv1 = phase; diff --git a/components/hal/esp32s2/include/hal/dac_ll.h b/components/hal/esp32s2/include/hal/dac_ll.h index f43a537480..e6b239dd12 100644 --- a/components/hal/esp32s2/include/hal/dac_ll.h +++ b/components/hal/esp32s2/include/hal/dac_ll.h @@ -68,6 +68,7 @@ static inline void dac_ll_power_down(dac_channel_t channel) * @param value Output value. Value range: 0 ~ 255. * The corresponding range of voltage is 0v ~ VDD3P3_RTC. */ +__attribute__((always_inline)) static inline void dac_ll_update_output_value(dac_channel_t channel, uint8_t value) { if (channel == DAC_CHAN_0) { @@ -125,7 +126,7 @@ static inline void dac_ll_cw_generator_disable(void) * @param channel DAC channel num. * @param enable */ -static inline void dac_ll_cw_set_channel(dac_channel_t channel, bool enable) +static inline void dac_ll_cw_enable_channel(dac_channel_t channel, bool enable) { if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_cw_en1 = enable; @@ -138,12 +139,12 @@ static inline void dac_ll_cw_set_channel(dac_channel_t channel, bool enable) * Set frequency of cosine wave generator output. * * @note We know that CLK8M is about 8M, but don't know the actual value. so this freq have limited error. - * @param freq_hz CW generator frequency. Range: >= 130(130Hz) + * @param freq_hz CW generator frequency. Range: >= 130Hz, no exact ceiling limitation, but will distort when reach several MHz * @param rtc8m_freq the calibrated RTC 8M clock frequency */ static inline void dac_ll_cw_set_freq(uint32_t freq, uint32_t rtc8m_freq) { - uint32_t sw_freq = (uint32_t)(((float)freq / (float)rtc8m_freq) * 65536); + uint32_t sw_freq = (uint32_t)(((uint64_t)freq << 16) / rtc8m_freq); HAL_FORCE_MODIFY_U32_REG_FIELD(SENS.sar_dac_ctrl1, sw_fstep, (sw_freq > 0xFFFF) ? 0xFFFF : sw_freq); } @@ -151,14 +152,18 @@ static inline void dac_ll_cw_set_freq(uint32_t freq, uint32_t rtc8m_freq) * Set the amplitude of the cosine wave generator output. * * @param channel DAC channel num. - * @param scale The multiple of the amplitude. The max amplitude is VDD3P3_RTC. + * @param atten The attenuation of the amplitude. The max amplitude is VDD3P3_RTC. + * 0: attenuation = 1, amplitude = VDD3P3_RTC / attenuation, + * 1: attenuation = 2, amplitude = VDD3P3_RTC / attenuation, + * 2: attenuation = 4, amplitude = VDD3P3_RTC / attenuation, + * 3: attenuation = 8, amplitude = VDD3P3_RTC / attenuation */ -static inline void dac_ll_cw_set_scale(dac_channel_t channel, uint32_t scale) +static inline void dac_ll_cw_set_atten(dac_channel_t channel, dac_cosine_atten_t atten) { if (channel == DAC_CHAN_0) { - SENS.sar_dac_ctrl2.dac_scale1 = scale; + SENS.sar_dac_ctrl2.dac_scale1 = atten; } else if (channel == DAC_CHAN_1) { - SENS.sar_dac_ctrl2.dac_scale2 = scale; + SENS.sar_dac_ctrl2.dac_scale2 = atten; } } @@ -168,7 +173,7 @@ static inline void dac_ll_cw_set_scale(dac_channel_t channel, uint32_t scale) * @param channel DAC channel num. * @param phase Phase value. 0: 0x02 180: 0x03. */ -static inline void dac_ll_cw_set_phase(dac_channel_t channel, uint32_t phase) +static inline void dac_ll_cw_set_phase(dac_channel_t channel, dac_cosine_phase_t phase) { if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_inv1 = phase; diff --git a/components/hal/esp32s2/include/hal/spi_ll.h b/components/hal/esp32s2/include/hal/spi_ll.h index 65084c8d23..eb50b6f5be 100644 --- a/components/hal/esp32s2/include/hal/spi_ll.h +++ b/components/hal/esp32s2/include/hal/spi_ll.h @@ -1260,6 +1260,7 @@ static inline void spi_dma_ll_enable_out_auto_wrback(spi_dma_dev_t *dma_out, uin * @param channel DMA channel, for chip version compatibility, not used. * @return The address */ +__attribute__((always_inline)) static inline uint32_t spi_dma_ll_get_out_eof_desc_addr(spi_dma_dev_t *dma_out, uint32_t channel) { return dma_out->dma_out_eof_des_addr; diff --git a/components/hal/include/hal/dac_types.h b/components/hal/include/hal/dac_types.h index ff9960c21d..a6c72c9639 100644 --- a/components/hal/include/hal/dac_types.h +++ b/components/hal/include/hal/dac_types.h @@ -11,6 +11,27 @@ typedef enum { DAC_CHANNEL_2 __attribute__((deprecated("please use 'DAC_CHAN_1' instead"))) = 1, /*!< Alias of 'DAC_CHAN_1', now the channel index start from '0' */ } dac_channel_t; +/** + * @brief The attenuation of the amplitude of the cosine wave generator. The max amplitude is VDD3P3_RTC. + */ +typedef enum { + DAC_COSINE_ATTEN_DEFAULT = 0x0, /*!< No attenuation to the DAC cosine wave amplitude. Default. */ + DAC_COSINE_ATTEN_DB_0 = 0x0, /*!< Original amplitude of the DAC cosine wave, equals to DAC_COSINE_ATTEN_DEFAULT */ + DAC_COSINE_ATTEN_DB_6 = 0x1, /*!< 1/2 amplitude of the DAC cosine wave */ + DAC_COSINE_ATTEN_DB_12 = 0x2, /*!< 1/4 amplitude of the DAC cosine wave */ + DAC_COSINE_ATTEN_DB_18 = 0x3, /*!< 1/8 amplitude of the DAC cosine wave */ +} dac_cosine_atten_t; + +/** + * @brief Set the phase of the cosine wave generator output. + * @note Only 0 or 180 are supported, + * it will be set to 0 as default if configured to an unsupported phase. + */ +typedef enum { + DAC_COSINE_PHASE_0 = 0x02, /*!< Phase shift +0° */ + DAC_COSINE_PHASE_180 = 0x03, /*!< Phase shift +180° */ +} dac_cosine_phase_t; + #ifdef __cplusplus } #endif diff --git a/components/soc/esp32/dac_periph.c b/components/soc/esp32/dac_periph.c index 3836d1c84a..2e503c4060 100644 --- a/components/soc/esp32/dac_periph.c +++ b/components/soc/esp32/dac_periph.c @@ -10,6 +10,6 @@ Bunch of constants for DAC peripheral: GPIO number */ const dac_signal_conn_t dac_periph_signal = { - .dac_channel_io_num[0] = DAC_CHAN_0_GPIO_NUM, - .dac_channel_io_num[1] = DAC_CHAN_1_GPIO_NUM, + .dac_channel_io_num[0] = 25, + .dac_channel_io_num[1] = 26, }; diff --git a/components/soc/esp32/include/soc/Kconfig.soc_caps.in b/components/soc/esp32/include/soc/Kconfig.soc_caps.in index 7ca334a526..2e3061f0c4 100644 --- a/components/soc/esp32/include/soc/Kconfig.soc_caps.in +++ b/components/soc/esp32/include/soc/Kconfig.soc_caps.in @@ -243,7 +243,7 @@ config SOC_CPU_WATCHPOINT_SIZE int default 64 -config SOC_DAC_PERIPH_NUM +config SOC_DAC_CHAN_NUM int default 2 diff --git a/components/soc/esp32/include/soc/clk_tree_defs.h b/components/soc/esp32/include/soc/clk_tree_defs.h index 26058b68da..a634776295 100644 --- a/components/soc/esp32/include/soc/clk_tree_defs.h +++ b/components/soc/esp32/include/soc/clk_tree_defs.h @@ -289,23 +289,23 @@ typedef enum { * */ typedef enum { - DAC_CLK_SRC_PLLD2 = SOC_MOD_CLK_PLL_D2, - DAC_DIGI_CLK_SRC_APLL = SOC_MOD_CLK_APLL, - DAC_DIGI_CLK_SRC_DEFAULT = SOC_MOD_CLK_PLL_D2, + DAC_DIGI_CLK_SRC_PLLD2 = SOC_MOD_CLK_PLL_D2, /*!< Select PLL_D2 as the source clock */ + DAC_DIGI_CLK_SRC_APLL = SOC_MOD_CLK_APLL, /*!< Select APLL as the source clock */ + DAC_DIGI_CLK_SRC_DEFAULT = SOC_MOD_CLK_PLL_D2, /*!< Select PLL_D2 as the default source clock */ } soc_periph_dac_digi_clk_src_t; /** * @brief Array initializer for all supported clock sources of DAC cosine wave generator */ -#define SOC_DAC_COSINE_CLKS {DAC_COSINE_CLK_SRC_RTC} +#define SOC_DAC_COSINE_CLKS {SOC_MOD_CLK_RTC_FAST} /** * @brief DAC cosine wave generator clock source * */ typedef enum { - DAC_COSINE_CLK_SRC_RTC = SOC_MOD_CLK_RTC_FAST, - DAC_COSINE_CLK_SRC_DEFAULT = SOC_MOD_CLK_RTC_FAST, + DAC_COSINE_CLK_SRC_RTC_FAST = SOC_MOD_CLK_RTC_FAST, /*!< Select RTC FAST as the source clock */ + DAC_COSINE_CLK_SRC_DEFAULT = SOC_MOD_CLK_RTC_FAST, /*!< Select RTC FAST as the default source clock */ } soc_periph_dac_cosine_clk_src_t; #ifdef __cplusplus diff --git a/components/soc/esp32/include/soc/dac_channel.h b/components/soc/esp32/include/soc/dac_channel.h index 596faa231e..71733e7625 100644 --- a/components/soc/esp32/include/soc/dac_channel.h +++ b/components/soc/esp32/include/soc/dac_channel.h @@ -4,13 +4,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef _SOC_DAC_CHANNEL_H -#define _SOC_DAC_CHANNEL_H +#pragma once + #define DAC_GPIO25_CHANNEL DAC_CHAN_0 -#define DAC_CHAN_0_GPIO_NUM 25 +#define DAC_CHAN0_GPIO_NUM 25 +#define DAC_CHANNEL_1_GPIO_NUM DAC_CHAN0_GPIO_NUM //`DAC_CHANNEL_1_GPIO_NUM` is defined for DAC legacy driver, indicating the first DAC channel. #define DAC_GPIO26_CHANNEL DAC_CHAN_1 -#define DAC_CHAN_1_GPIO_NUM 26 - -#endif +#define DAC_CHAN1_GPIO_NUM 26 +#define DAC_CHANNEL_2_GPIO_NUM DAC_CHAN1_GPIO_NUM //`DAC_CHANNEL_2_GPIO_NUM` is defined for DAC legacy driver, indicating the second DAC channel. diff --git a/components/soc/esp32/include/soc/soc_caps.h b/components/soc/esp32/include/soc/soc_caps.h index 545f37c7bd..a2e7545c29 100644 --- a/components/soc/esp32/include/soc/soc_caps.h +++ b/components/soc/esp32/include/soc/soc_caps.h @@ -148,7 +148,7 @@ #define SOC_CPU_WATCHPOINT_SIZE 64 // bytes /*-------------------------- DAC CAPS ----------------------------------------*/ -#define SOC_DAC_PERIPH_NUM 2 +#define SOC_DAC_CHAN_NUM 2 #define SOC_DAC_RESOLUTION 8 // DAC resolution ratio 8 bit #define SOC_DAC_DMA_16BIT_ALIGN 1 // The DMA data should left shift 8 bit to be aligned with 16 bit diff --git a/components/soc/esp32s2/dac_periph.c b/components/soc/esp32s2/dac_periph.c index 3836d1c84a..d38bf1296c 100644 --- a/components/soc/esp32s2/dac_periph.c +++ b/components/soc/esp32s2/dac_periph.c @@ -10,6 +10,6 @@ Bunch of constants for DAC peripheral: GPIO number */ const dac_signal_conn_t dac_periph_signal = { - .dac_channel_io_num[0] = DAC_CHAN_0_GPIO_NUM, - .dac_channel_io_num[1] = DAC_CHAN_1_GPIO_NUM, + .dac_channel_io_num[0] = 17, + .dac_channel_io_num[1] = 18, }; diff --git a/components/soc/esp32s2/include/soc/Kconfig.soc_caps.in b/components/soc/esp32s2/include/soc/Kconfig.soc_caps.in index 710f6b3ac8..958e4ffecc 100644 --- a/components/soc/esp32s2/include/soc/Kconfig.soc_caps.in +++ b/components/soc/esp32s2/include/soc/Kconfig.soc_caps.in @@ -271,7 +271,7 @@ config SOC_CPU_WATCHPOINT_SIZE int default 64 -config SOC_DAC_PERIPH_NUM +config SOC_DAC_CHAN_NUM int default 2 diff --git a/components/soc/esp32s2/include/soc/clk_tree_defs.h b/components/soc/esp32s2/include/soc/clk_tree_defs.h index 64221e0d76..0c979c7753 100644 --- a/components/soc/esp32s2/include/soc/clk_tree_defs.h +++ b/components/soc/esp32s2/include/soc/clk_tree_defs.h @@ -277,23 +277,23 @@ typedef enum { * */ typedef enum { - DAC_DIGI_CLK_SRC_APB = SOC_MOD_CLK_APB, - DAC_DIGI_CLK_SRC_APLL = SOC_MOD_CLK_APLL, - DAC_DIGI_CLK_SRC_DEFAULT = SOC_MOD_CLK_APB, + DAC_DIGI_CLK_SRC_APB = SOC_MOD_CLK_APB, /*!< Select APB as the source clock */ + DAC_DIGI_CLK_SRC_APLL = SOC_MOD_CLK_APLL, /*!< Select APLL as the source clock */ + DAC_DIGI_CLK_SRC_DEFAULT = SOC_MOD_CLK_APB, /*!< Select APB as the default source clock */ } soc_periph_dac_digi_clk_src_t; /** * @brief Array initializer for all supported clock sources of DAC cosine wave generator */ -#define SOC_DAC_COSINE_CLKS {DAC_COSINE_CLK_SRC_RTC} +#define SOC_DAC_COSINE_CLKS {SOC_MOD_CLK_RTC_FAST} /** * @brief DAC cosine wave generator clock source * */ typedef enum { - DAC_COSINE_CLK_SRC_RTC = SOC_MOD_CLK_RTC_FAST, - DAC_COSINE_CLK_SRC_DEFAULT = SOC_MOD_CLK_RTC_FAST, + DAC_COSINE_CLK_SRC_RTC_FAST = SOC_MOD_CLK_RTC_FAST, /*!< Select RTC FAST as the source clock */ + DAC_COSINE_CLK_SRC_DEFAULT = SOC_MOD_CLK_RTC_FAST, /*!< Select RTC FAST as the default source clock */ } soc_periph_dac_cosine_clk_src_t; #ifdef __cplusplus diff --git a/components/soc/esp32s2/include/soc/dac_channel.h b/components/soc/esp32s2/include/soc/dac_channel.h index e0ca03c723..5dc71a84aa 100644 --- a/components/soc/esp32s2/include/soc/dac_channel.h +++ b/components/soc/esp32s2/include/soc/dac_channel.h @@ -4,13 +4,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef _SOC_DAC_CHANNEL_H -#define _SOC_DAC_CHANNEL_H +#pragma once #define DAC_GPIO17_CHANNEL DAC_CHAN_0 -#define DAC_CHAN_0_GPIO_NUM 17 +#define DAC_CHAN0_GPIO_NUM 17 +#define DAC_CHANNEL_1_GPIO_NUM DAC_CHAN0_GPIO_NUM //`DAC_CHANNEL_1_GPIO_NUM` is defined for DAC legacy driver, indicating the first DAC channel. #define DAC_GPIO18_CHANNEL DAC_CHAN_1 -#define DAC_CHAN_1_GPIO_NUM 18 - -#endif +#define DAC_CHAN1_GPIO_NUM 18 +#define DAC_CHANNEL_2_GPIO_NUM DAC_CHAN1_GPIO_NUM //`DAC_CHANNEL_2_GPIO_NUM` is defined for DAC legacy driver, indicating the second DAC channel. diff --git a/components/soc/esp32s2/include/soc/soc_caps.h b/components/soc/esp32s2/include/soc/soc_caps.h index 08f6fae526..2df1be7bb5 100644 --- a/components/soc/esp32s2/include/soc/soc_caps.h +++ b/components/soc/esp32s2/include/soc/soc_caps.h @@ -130,7 +130,7 @@ #define SOC_CPU_WATCHPOINT_SIZE 64 // bytes /*-------------------------- DAC CAPS ----------------------------------------*/ -#define SOC_DAC_PERIPH_NUM 2 +#define SOC_DAC_CHAN_NUM 2 #define SOC_DAC_RESOLUTION 8 // DAC resolution ratio 8 bit /*-------------------------- GPIO CAPS ---------------------------------------*/ diff --git a/components/soc/include/soc/dac_periph.h b/components/soc/include/soc/dac_periph.h index bed3f22a66..336d7c8251 100644 --- a/components/soc/include/soc/dac_periph.h +++ b/components/soc/include/soc/dac_periph.h @@ -1,16 +1,8 @@ -// Copyright 2019 Espressif Systems (Shanghai) PTE 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. +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #pragma once @@ -19,7 +11,6 @@ #include "soc/rtc_io_reg.h" #include "soc/rtc_io_struct.h" #include "soc/rtc.h" -#include "soc/dac_channel.h" #include "soc/soc_caps.h" #ifdef __cplusplus @@ -28,7 +19,7 @@ extern "C" #endif typedef struct { - const uint8_t dac_channel_io_num[SOC_DAC_PERIPH_NUM]; + const uint8_t dac_channel_io_num[SOC_DAC_CHAN_NUM]; } dac_signal_conn_t; extern const dac_signal_conn_t dac_periph_signal; diff --git a/docs/_static/diagrams/dac/dac_file_structure.png b/docs/_static/diagrams/dac/dac_file_structure.png index 017ce961a6acd735935366b2da189d55d08b6b56..21552ad7a6d2c3c7151ed609ae33a2863f0cc7d3 100644 GIT binary patch literal 80660 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 literal 63442 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 z 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

&)$&PTo@i;RrA9jYFkdHb35P6 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�OZLS@t_s$I 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 z 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 zΠ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 HDWM4fy>Jn% diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index 9ecc314fd6..3b63e4ffae 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -61,6 +61,10 @@ INPUT = \ $(PROJECT_PATH)/components/bt/host/nimble/esp-hci/include/esp_nimble_hci.h \ $(PROJECT_PATH)/components/bt/include/esp32/include/esp_bt.h \ $(PROJECT_PATH)/components/console/esp_console.h \ + $(PROJECT_PATH)/components/driver/include/driver/dac_conti.h \ + $(PROJECT_PATH)/components/driver/include/driver/dac_cosine.h \ + $(PROJECT_PATH)/components/driver/include/driver/dac_oneshot.h \ + $(PROJECT_PATH)/components/driver/include/driver/dac_types.h \ $(PROJECT_PATH)/components/driver/include/driver/dedic_gpio.h \ $(PROJECT_PATH)/components/driver/include/driver/gpio.h \ $(PROJECT_PATH)/components/driver/include/driver/gptimer.h \ @@ -177,6 +181,7 @@ INPUT = \ $(PROJECT_PATH)/components/freertos/FreeRTOS-Kernel/include/freertos/task.h \ $(PROJECT_PATH)/components/freertos/FreeRTOS-Kernel/include/freertos/timers.h \ $(PROJECT_PATH)/components/hal/include/hal/adc_types.h \ + $(PROJECT_PATH)/components/hal/include/hal/dac_types.h \ $(PROJECT_PATH)/components/hal/include/hal/esp_flash_err.h \ $(PROJECT_PATH)/components/hal/include/hal/gpio_types.h \ $(PROJECT_PATH)/components/hal/include/hal/i2c_types.h \ diff --git a/docs/en/api-reference/peripherals/dac.rst b/docs/en/api-reference/peripherals/dac.rst index cc69b15789..19aa42cdf9 100644 --- a/docs/en/api-reference/peripherals/dac.rst +++ b/docs/en/api-reference/peripherals/dac.rst @@ -15,9 +15,9 @@ The DAC peripheral supports outputting analog signal in following ways: 1. Outputting a voltage directly. The DAC channel will keep outputting a specified voltage. 2. Outputting continuous analog signal by DMA. The DAC will convert the data in a buffer at the specified frequency. -3. Outputting a cosine wave by the cosine wave generateor. The DAC channel can output a cosing wave with specified frequency and amplitude. +3. Outputting a cosine wave by the cosine wave generator. The DAC channel can output a cosine wave with specified frequency and amplitude. -For other analog output options, see the :doc:`Sigma-delta Modulation module ` and the :doc:`LED Control module `. Both these modules produce high-frequency PWM/PDM output, which can be hardware low-pass filtered in order to generate a lower frequency analog output. +For other analog output options, see the :doc:`Sigma-delta Modulation module ` and the :doc:`LED Control module `. Both modules produce high-frequency PWM/PDM output, which can be hardware low-pass filtered in order to generate a lower frequency analog output. DAC File Structure ------------------ @@ -29,12 +29,14 @@ DAC File Structure **Public headers that need to be included in the DAC application** -- ``dac.h``: The header file of legacy DAC driver (for apps using legacy driver) -- ``dac_driver.h``: The header file of new DAC driver (for apps using new DAC driver) +- ``dac.h``: The top header file of legacy DAC driver, only included in the apps which use legacy driver API +- ``dac_oneshot.h``: The top header file of new DAC driver, should be included in the apps which use the new driver API with oneshot mode. +- ``dac_cosine.h``: The top header file of new DAC driver, should be included in the apps which use the new driver API with cosine mode. +- ``dac_conti.h``: The top header file of new DAC driver, should be included in the apps which use the new driver API with continuous mode. .. note:: - The legacy driver can't coexist with the new driver. Including ``dac.h`` to use the legacy driver or ``dac_driver.h`` to use the new driver. The legacy driver might be removed in future. + The legacy driver can't coexist with the new driver. Including ``dac.h`` to use the legacy driver or ``dac_oneshot.h``, ``dac_cosine.h`` and ``dac_conti.h`` to use the new driver. The legacy driver might be removed in future. Functional Overview ------------------- @@ -42,56 +44,54 @@ Functional Overview Resources Management ^^^^^^^^^^^^^^^^^^^^ -The DAC on {IDF_TARGET_NAME} has two channels, which can be managed by the :cpp:type:`dac_channels_handle_t`. One or both two channels can be registered to a group by calling :cpp:func:`dac_new_channels`, it will return a channels handle so that the channels in a same group can be operated at the same time with this handle. While the channels in a group are not used any more, please call :cpp:func:`dac_del_channels` to free the resources and reset the hardware. +The DAC on {IDF_TARGET_NAME} has two channels, due to the software resources are separate, they could be managed by the :cpp:type:`dac_oneshot_handle_t`, :cpp:type:`dac_cosine_handle_t`:cpp:type:`dac_conti_handle_t` according to the usage. Of cause, registering different modes on a same DAC channel is not allowed. -Direct Voltage Output (Direct Mode) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Direct Voltage Output (One-shot/Direct Mode) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -The DAC channels in the group can convert a 8-bit digital value into the analog every time calling :cpp:func:`dac_channels_set_voltage` (it can be called in ISR), and then the analog voltage will keep on corresponding pins until next convert start. But before starting to convert the voltage, the DAC channels and pins should be enabled by calling :cpp:func:`dac_channels_enable`. +The DAC channels in the group can convert a 8-bit digital value into the analog every time calling :cpp:func:`dac_oneshot_output_voltage` (it can be called in ISR), and then the analog voltage will be kept on the DAC channel until next conversion start. To start to convert the voltage, the DAC channels need to be registered by :cpp:func:`dac_new_oneshot_channel` first, and the channel will be enabled after it is registered. -Continuous Wave Output (DMA Mode) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Continuous Wave Output (Continuous/DMA Mode) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -DAC channels in the group can also convert digital data continuously via the DMA. +DAC channels can convert digital data continuously via the DMA. There are three ways to writing DAC data: -To convert data continuously, the channels need to be initialized into DMA mode by calling :cpp:func:`dac_channels_init_continuous_mode` and then enable DMA conversion by :cpp:func:`dac_channels_enable_continuous_mode`. - -After start up the DMA, there are two methods to transmit the rerial digital data. One method is transmitting only one time by :cpp:func:`dac_channels_write_continuously`, it will be blocked until all data transmitted, and the voltage will be kept according to the last conversion value. Another method is transmitting repeatly by :cpp:func:`dac_channels_write_cyclically`, the data in the buffer will be converted cyclicly without block, but note that the buffer size is limited by the descriptor number, and it has to stay available during the whole conversion period, otherwise invalid data might be transmitted. + 1. Normal writing (synchronous): It can transmit the data one time and keep blocking until all data has been loaded into the DMA buffer, and the voltage will be kept according to the last conversion value while no more data inputted, usually it is used to transport a long signal like an audio. To convert data continuously, the continuous channel handle need to be allocated by calling :cpp:func:`dac_new_conti_channels` and the DMA conversion should be enabled by :cpp:func:`dac_conti_enable`, then data can be written by :cpp:func:`dac_conti_write` synchronously. Referring to :example:`peripherals/dac/dac_continuous/dac_audio` for example. + 2. Cyclical writing: It can convert a piece of data cyclically without blocking, no more operation needed after the data are loaded into the DMA buffer,but note that the inputted buffer size is limited by the descriptor number and the DMA buffer size, usually it is used to transport some short signal that need to be repeated, for example, a sine wave. To achieve cyclical writing, :cpp:func:`dac_conti_write_cyclically` can be called after the DAC continuous mode is enabled. For the cyclical writing example, please refer to :example:`peripherals/dac/dac_continuous/signal_generator` + 3. Asynchronous writing: It can transmit the data asynchronously based on the event callback. Thus :cpp:member:`dac_event_callbacks_t::on_convert_done` must be registered to use asynchronous mode, and then users can get the :cpp:type:`dac_event_data_t` in the callback which contains the DMA buffer address and length, allowing user to load the data into it directly. As mentioned, to use the asynchronous writing, :cpp:func:`dac_conti_register_event_callback` need to be called to register the :cpp:member:`dac_event_callbacks_t::on_convert_done` before enabling, and then calling :cpp:func:`dac_conti_start_async_writing` to start the asynchronous writing, note that once the asynchronous writing started, the callback function will be triggered continuously, :cpp:func:`dac_conti_write_asynchronously` can help to load the data either in a separate task or the callback directly. For the asynchronous example, please refer to :example:`peripherals/dac/dac_continuous/dac_audio` as well. .. only:: esp32 - On ESP32, DAC digital controller can be connected internally to the I2S0 and use its DMA for continuous conversion. Although the DAC only needs 8-bit data for conversion, it has to be left shifted 8 bits (i.e. the high 8 bits in 16-bit slot) to satisfy the I2S communication format. So the data buffer need to be expanded before passing it into the write function. Besides, if the both two channels are enabled, the data will be transmitted with a fixed phase diferrence between these channels. + On ESP32, DAC digital controller can be connected internally to the I2S0 and use its DMA for continuous conversion. Although the DAC only needs 8-bit data for conversion, it has to be left shifted 8 bits (i.e. the high 8 bits in 16-bit slot) to satisfy the I2S communication format. But the driver can help to expand automatically, if you want to expand manually, please disable :ref:`CONFIG_DAC_DMA_AUTO_16BIT_ALIGN` in the menuconfig. - The clock of DAC digital controller comes from I2S0 as well, so there are two kinds of clock source can be selected, they are :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` which comes from ``CPU_D2_PLL`` and :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_APLL`. Theoretically, :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` can support frequency between 19.6 KHz to several MHz and :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` can support frequency between 648 Hz to several MHz, however, the latter clock source might be occupied by other peripherals, then it may not provide the required frequency. But it doesn't mean APLL is not available in this case, it can still work as long as it can be divided to the target DAC DMA frequency. + The clock of DAC digital controller comes from I2S0 as well, so there are two kinds of clock source can be selected: + + - :cpp:enumerator:`dac_conti_digi_clk_src_t::DAC_DIGI_CLK_SRC_PLL_D2` can support frequency between 19.6 KHz to several MHz. It is the default clock which can also be selected by :cpp:enumerator:`dac_conti_digi_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT`. + - :cpp:enumerator:`dac_conti_digi_clk_src_t::DAC_DIGI_CLK_SRC_APLL` can support frequency between 648 Hz to several MHz, however, it might be occupied by other peripherals, then it may not provide the required frequency. But it doesn't mean APLL is not available in this case, it can still work as long as it can be divided to the target DAC DMA frequency correctly. .. only:: esp32s2 On ESP32-S2, DAC digital controller can be connected internally to the SPI3 and use its DMA for continuous conversion. - The clock source of DAC difital controller can be choosen to :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` (which comes from ``APB``) or :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_APLL`. Theoretically, :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` can support frequency between 77 Hz to several MHz and :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` can support frequency between 6 Hz to several MHz,however, the latter clock source might be occupied by other peripherals, then it may not provide the required frequency. But it doesn't mean APLL is not available in this case, it can still work as long as it can be divided to the target DAC DMA frequency. + The clock source of DAC digital controller are: + + - :cpp:enumerator:`dac_conti_digi_clk_src_t::DAC_DIGI_CLK_SRC_APB` can support frequency between 77 Hz to several MHz. It is the default clock which can also be selected by :cpp:enumerator:`dac_conti_digi_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT`. + - :cpp:enumerator:`dac_conti_digi_clk_src_t::DAC_DIGI_CLK_SRC_APLL` can support frequency between 6 Hz to several MHz, however, it might be occupied by other peripherals, then it may not provide the required frequency. But it doesn't mean APLL is not available in this case, it can still work as long as it can be divided to the target DAC DMA frequency correctly. + Cosine Wave Output (Cosine Mode) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -The DAC peripheral has a cosine wave generateor on each channel, it can generate cosine wave on these channels, users can specify the frequency, amplitude and phase of the cosine wave. To output the cosine wave, please initialize the DAC to cosine mode by :cpp:func:`dac_channels_init_cosine_mode` first, and then start the cosine wave generator by :cpp:func:`dac_channels_start_cosine_output`. +The DAC peripheral has one cosine wave generator, it can generate cosine wave on the channels, users can specify the frequency, amplitude and phase of the cosine wave. To output the cosine wave, please acquire the DAC to cosine mode handle by :cpp:func:`dac_new_cosine_channel` first, and then start the cosine wave generator by :cpp:func:`dac_cosine_start`. -Currently, the source clock of the consine wave generator only comes from ``RTC FAST`` which can be choosen by :cpp:enumerator:`dac_cosine_clk_src_t::DAC_COSINE_CLK_SRC_DEFAULT`. - -Finite-State Machine -^^^^^^^^^^^^^^^^^^^^ - -The DAC driver adopts a finite-state machine, the following diagram shows the relationship of the public APIs and the driver internal states. - -.. figure:: ../../../_static/diagrams/dac/dac_state_machine.png - :align: center - :alt: DAC Finite-State Machine +Currently, the source clock of the cosine wave generator only comes from ``RTC_FAST`` which can be chosen by :cpp:enumerator:`dac_cosine_clk_src_t::DAC_COSINE_CLK_SRC_RTC_FAST`, it is also the default clock source which is same as :cpp:enumerator:`dac_cosine_clk_src_t::DAC_COSINE_CLK_SRC_RTC_DEFAULT`. Power Management ^^^^^^^^^^^^^^^^ When the power management is enabled (i.e. :ref:`CONFIG_PM_ENABLE` is on), the system will adjust or stop the source clock of DAC before going into light sleep, thus potentially influence to the DAC signals may lead the data conversion goes wrong. -DAC driver can prevent the system from changing or stopping the source clock in DMA or cosine wave mode by acquiring a power management lock. When the source clock is generated from APB, the lock type will be set to :cpp:enumerator:`esp_pm_lock_type_t::ESP_PM_APB_FREQ_MAX` and when the source clock is APLL (only in DMA mode), it will be set to :cpp:enumerator:`esp_pm_lock_type_t::ESP_PM_NO_LIGHT_SLEEP`. Whenever the DAC is converting (i.e. DMA or cosing wave generator is working), the driver will guarantee that the power management lock is acquired. Likewise, the driver releases the lock after conversion stopped. +When using DAC driver in continuous mode, it can prevent the system from changing or stopping the source clock in DMA or cosine wave mode by acquiring a power management lock. When the source clock is generated from APB, the lock type will be set to :cpp:enumerator:`esp_pm_lock_type_t::ESP_PM_APB_FREQ_MAX` and when the source clock is APLL (only in DMA mode), it will be set to :cpp:enumerator:`esp_pm_lock_type_t::ESP_PM_NO_LIGHT_SLEEP`. Whenever the DAC is converting (i.e. DMA or cosine wave generator is working), the driver will guarantee that the power management lock is acquired after calling :cpp:func:`dac_conti_enable`. Likewise, the driver will release the lock when :cpp:func:`dac_conti_disable` is called. IRAM Safe ^^^^^^^^^ @@ -104,14 +104,12 @@ There's a Kconfig option :ref:`CONFIG_DAC_ISR_IRAM_SAFE` that will: 2. Place driver object into DRAM (in case it's linked to PSRAM by accident) -This will allow the interrupt to run while the cache is disabled but will come at the cost of increased IRAM consumption. However, before enable :ref:`CONFIG_DAC_ISR_IRAM_SAFE` please make sure that the data buffer is allocated in the internal RAM by :cpp:func:`heap_caps_calloc` and set the last parameter to ``MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT``. +This will allow the interrupt to run while the cache is disabled but will come at the cost of increased IRAM consumption. Thread Safety ^^^^^^^^^^^^^ -All the public DAC APIs are guaranteed to be thread safe by the driver, which means, users can call them from different RTOS tasks without protection by extra locks. Notice that DAC driver uses mutex lock to ensure the thread safety, thus these APIs are not allowed to be used in ISR. - -For other analog output options, see the :doc:`Sigma-delta Modulation module ` and the :doc:`LED Control module `. Both these modules produce high frequency PDM/PWM output, which can be hardware low-pass filtered in order to generate a lower frequency analog output. +All the public DAC APIs are guaranteed to be thread safe by the driver, which means, users can call them from different RTOS tasks without protection by extra locks. Notice that DAC driver uses mutex lock to ensure the thread safety, thus the APIs except :cpp:func:`dac_oneshot_output_voltage` are not allowed to be used in ISR. Kconfig Options ^^^^^^^^^^^^^^^ @@ -120,198 +118,24 @@ Kconfig Options - :ref:`CONFIG_DAC_SUPPRESS_DEPRECATE_WARN` controls whether to suppress the compiling warning message while using the legacy DAC driver. - :ref:`CONFIG_DAC_ENABLE_DEBUG_LOG` is used to enabled the debug log output. Enable this option will increase the firmware binary size. +.. only:: esp32 + + - :ref:`CONFIG_DAC_DMA_AUTO_16BIT_ALIGN` will auto expand the 8-bit data to 16-bit data in the driver to satisfy the I2S DMA format. + Application Example ------------------- -The basic examples for the ``Direct Mode``, ``DMA Mode`` and ``Consine Mode`` can be found in :example:`peripherals/dac/dac_basic`, :example:`peripherals/dac/dac_continuous` and :example:`peripherals/dac/dac_cosine_wave`. Here is a general overview of how to use these modes: - -Direct Output Example -^^^^^^^^^^^^^^^^^^^^^ - -.. code:: c - - #include - - ... - - dac_channels_handle_t handle; - dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; - - /* Allocate a channels handle for the choosen channels */ - ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); - /* Must enable the channels before any outputting */ - ESP_ERROR_CHECK(dac_channels_enable(handle)); - - /* Output '100', the DAC pin will output about (100 / 255) * 3.3 = 1.29 V */ - ESP_ERROR_CHECK(dac_channels_set_voltage(handle, 100)); - - /* Disable the channels to stop outputting */ - ESP_ERROR_CHECK(dac_channels_disable(handle)); - /* Delete and free the channels */ - ESP_ERROR_CHECK(dac_del_channels(handle)); - - -Continuous Output Example -^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. only:: esp32 - - .. code:: c - - #include "driver/dac_driver.h" - #if CONFIG_DAC_ISR_IRAM_SAFE - /* If DAC IRAM safe enabled in Kconfig, include "esp_heap_caps.h" to allocate memory on internal RAM */ - #include "esp_heap_caps.h" - #endif - - ... - - dac_channels_handle_t handle; - dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; - dac_conti_config_t dma_cfg = { - .chan_mode = DAC_CHANNEL_MODE_SIMUL, - .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, - .desc_num = 10, - .freq_hz = 20000, - }; - - /* Allocate a channels handle for the choosen channels */ - ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); - /* Must enable the channels before any outputting */ - ESP_ERROR_CHECK(dac_channels_enable(handle)); - /* Initialize the channels to DMA mode */ - ESP_ERROR_CHECK(dac_channels_init_continuous_mode(handle, &dma_cfg)); - /* Must enable DMA before writing data */ - ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(handle)); - - /* Allocate the memory for the buffer to write */ - uint32_t buf_size = 2000; - uint32_t timeout_ms = 1000; - #if CONFIG_DAC_ISR_IRAM_SAFE - /* If DAC IRAM SAFE is enabled, allocate the buffer on the internal RAM */ - uint8_t *data = (uint8_t *)heap_caps_calloc(1, buf_size, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT); - #else - uint8_t *data = (uint8_t *)calloc(1, buf_size); - #endif - assert(data); - /* Load the 16-bit aligned data */ - for (int i = 0; i < buf_size; i += 2) { - data[i] = 0; // Fill 0 to the low 8 bits - data[i+1] = (i / 2) % 255; // Only the high 8 bits will be conveted - } - /* Write the data acyclicly, it will be blocked untill finishing sending all the data */ - ESP_ERROR_CHECK(dac_channels_write_continuously(handle, data, buf_size, NULL, timeout_ms)); - /* Write the data acyclicly, it will start output the buffer cyclicly without block, it can only be timeout when failed to aquire the lock */ - ESP_ERROR_CHECK(dac_channels_write_continuously(handle, data, buf_size, NULL, timeout_ms)); - - /* Disable the DMA before deinitializing DMA mode */ - ESP_ERROR_CHECK(dac_channels_disable_continuous_mode(handle)); - /* Deinitialize DMA mode before disabling the channels */ - ESP_ERROR_CHECK(dac_channels_deinit_continuous_mode(handle)); - /* Disable the channels before deleting it */ - ESP_ERROR_CHECK(dac_channels_disable(handle)); - /* Delete the channels */ - ESP_ERROR_CHECK(dac_del_channels(handle)); - - -.. only:: esp32s2 - - .. code:: c - - #include "driver/dac_driver.h" - #if CONFIG_DAC_ISR_IRAM_SAFE - /* If DAC IRAM safe enabled in Kconfig, include "esp_heap_caps.h" to allocate memory on internal RAM */ - #include "esp_heap_caps.h" - #endif - - ... - - dac_channels_handle_t handle; - dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; - dac_conti_config_t dma_cfg = { - .chan_mode = DAC_CHANNEL_MODE_SIMUL, - .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, - .desc_num = 10, - .freq_hz = 20000, - }; - - /* Allocate a channels handle for the choosen channels */ - ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); - /* Must enable the channels before any outputting */ - ESP_ERROR_CHECK(dac_channels_enable(handle)); - /* Initialize the channels to DMA mode */ - ESP_ERROR_CHECK(dac_channels_init_continuous_mode(handle, &dma_cfg)); - /* Must enable DMA before writing data */ - ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(handle)); - - /* Allocate the memory for the buffer to write */ - uint32_t buf_size = 2000; - uint32_t timeout_ms = 1000; - #if CONFIG_DAC_ISR_IRAM_SAFE - /* If DAC IRAM SAFE is enabled, allocate the buffer on the internal RAM */ - uint8_t *data = (uint8_t *)heap_caps_calloc(1, buf_size, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT); - #else - uint8_t *data = (uint8_t *)calloc(1, buf_size); - #endif - assert(data); - for (int i = 0; i < buf_size; i++) { - data[i] = i % 255; - } - /* Write the data acyclicly, it will be blocked untill finishing sending all the data */ - ESP_ERROR_CHECK(dac_channels_write_continuously(handle, data, buf_size, NULL, timeout_ms)); - /* Write the data acyclicly, it will start output the buffer cyclicly without block, it can only be timeout when failed to aquire the lock */ - ESP_ERROR_CHECK(dac_channels_write_continuously(handle, data, buf_size, NULL, timeout_ms)); - - /* Disable the DMA before deinitializing DMA mode */ - ESP_ERROR_CHECK(dac_channels_disable_continuous_mode(handle)); - /* Deinitialize DMA mode before disabling the channels */ - ESP_ERROR_CHECK(dac_channels_deinit_continuous_mode(handle)); - /* Disable the channels before deleting it */ - ESP_ERROR_CHECK(dac_channels_disable(handle)); - /* Delete the channels */ - ESP_ERROR_CHECK(dac_del_channels(handle)); - - -Cosine Wave Output Example -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. code:: c - - #include "driver/dac_driver.h" - - ... - - dac_channels_handle_t handle; - dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; - dac_cosine_config_t cos_cfg = { - .freq_hz = 1000, - .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, - .offset = 0, - .phase = DAC_COSINE_PHASE_0, - .scale = DAC_COSINE_NO_ATTEN, - }; - /* Allocate a channels handle for the choosen channels */ - ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); - /* Must enable the channels before any outputting */ - ESP_ERROR_CHECK(dac_channels_enable(handle)); - /* Initialize the channels to cosine wave mode */ - ESP_ERROR_CHECK(dac_channels_init_cosine_mode(handle, &cos_cfg)); - /* Start outputting the cosine wave */ - ESP_ERROR_CHECK(dac_channels_start_cosine_output(handle)); - - /* Stop the cosine wave generator before deinitializing cosine mode */ - ESP_ERROR_CHECK(dac_channels_stop_cosine_output(handle)); - /* Deinitialize consine mode before disabling the channels */ - ESP_ERROR_CHECK(dac_channels_deinit_cosine_mode(handle)); - /* Disable the channels before deleting it */ - ESP_ERROR_CHECK(dac_channels_disable(handle)); - /* Delete the channels */ - ESP_ERROR_CHECK(dac_del_channels(handle)); +The basic examples for the ``One-shot Mode``, ``Continuous Mode`` and ``Cosine Mode`` can be found in: +- :example:`peripherals/dac/dac_oneshot` +- :example:`peripherals/dac/dac_continuous` +- :example:`peripherals/dac/dac_cosine_wave` API Reference ------------- -.. include-build-file:: inc/dac_driver.inc -.. include-build-file:: inc/dac_channel.inc -.. include-build-file:: inc/dac_types.inc +.. include-build-file:: inc/dac_oneshot.inc +.. include-build-file:: inc/dac_cosine.inc +.. include-build-file:: inc/dac_conti.inc +.. include-build-file:: inc/components/driver/include/driver/dac_types.inc +.. include-build-file:: inc/components/hal/include/hal/dac_types.inc diff --git a/docs/en/migration-guides/release-5.x/5.0/peripherals.rst b/docs/en/migration-guides/release-5.x/5.0/peripherals.rst index 33fa3fadd1..6b7657cced 100644 --- a/docs/en/migration-guides/release-5.x/5.0/peripherals.rst +++ b/docs/en/migration-guides/release-5.x/5.0/peripherals.rst @@ -527,65 +527,6 @@ LCD The deprecated ``CAN`` peripheral driver is removed. Please use ``TWAI`` driver instead (i.e. include ``driver/twai.h`` in your application). -.. only:: SOC_DAC_SUPPORTED - - DAC - --- - - DAC driver has been redesigned (see :doc:`DAC API Reference <../api-reference/peripherals/dac>`), which aims to unify and extend the usage of DAC peripheral. Although it's recommended to use the new driver APIs, the legacy driver is still available in the previous include path ``driver/dac.h``. However, by default, including ``driver/dac.h`` will bring a build warning like `The legacy DAC driver is deprecated, please use driver/dac_driver.h instead`. The warning can be suppressed by the Kconfig option :ref:`CONFIG_DAC_SUPPRESS_DEPRECATE_WARN`. - - The major breaking changes in concept and usage are listed as follows: - - .. only:: esp32 - - Breaking Changes in Concepts - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - - ``dac_channel_t`` which used to identify the hardware channel are removed from user space, the channel index now starts from ``0``, please use `DAC_CHAN_0` and `DAC_CHAN_1` instead. And in the new driver, DAC channels can be seleted by :cpp:type:`dac_channel_mask_t`. And these channels can be allocated in a same channel group which is represented by :cpp:type:`dac_channels_handle_t`. - - ``dac_cw_scale_t`` is replaced by :cpp:type:`dac_cosine_scale_t`, to decupling the legacy driver and the new driver. - - ``dac_cw_phase_t`` is replaced by :cpp:type:`dac_cosine_phase_t`, the enum value is now the phase angle directly. - - ``dac_cw_config_t`` is replaced by :cpp:type:`dac_cosine_config_t`, but the ``en_ch`` field is removed because it should be specify while allocate the channel group. - - Breaking Changes in Usage - ~~~~~~~~~~~~~~~~~~~~~~~~~ - - - ``dac_pad_get_io_num`` is removed. - - ``dac_output_voltage`` is replaced by :cpp:func:`dac_channels_set_voltage`. - - ``dac_output_enable`` is replaced by :cpp:func:`dac_channels_enable`. - - ``dac_output_disable`` is replaced by :cpp:func:`dac_channels_disable`. - - ``dac_cw_generator_enable`` is replaced by :cpp:func:`dac_channels_start_cosine_output`, but it need to initialize the DAC channel group to cosine mode first by :cpp:func:`dac_channels_start_cosine_output`, and :cpp:func:`dac_channels_enable` should be called as well. - - ``dac_cw_generator_disable`` is replaced by :cpp:func:`dac_channels_stop_cosine_output`, it is also only allowed to be called under cosine mode. - - ``dac_cw_generator_config`` is replaced by :cpp:func:`dac_channels_init_cosine_mode`, when it is called, the driver will work at cosine mode. - - ``dac_i2s_enable`` is replaced by :cpp:func:`dac_channels_enable_continuous_mode`, but it need to initialize the DAC channel group to DMA mode first by :cpp:func:`dac_channels_init_continuous_mode`, and :cpp:func:`dac_channels_enable` should be called as well. - - ``dac_i2s_disable`` is replaced by :cpp:func:`dac_channels_disable_continuous_mode`, it is also only allowed to be called under DMA mode. - - .. only:: esp32s2 - - Breaking Changes in Concepts - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - - ``dac_channel_t`` which used to identify the hardware channel are removed from user space, the channel index now starts from ``0``, please use `DAC_CHAN_0` and `DAC_CHAN_1` instead. And in the new driver, DAC channels can be seleted by :cpp:type:`dac_channel_mask_t`. And these channels can be allocated in a same channel group which is represented by :cpp:type:`dac_channels_handle_t`. - - ``dac_cw_scale_t`` is replaced by :cpp:type:`dac_cosine_scale_t`, to decupling the legacy driver and the new driver. - - ``dac_cw_phase_t`` is replaced by :cpp:type:`dac_cosine_phase_t`, the enum value is now the phase angle directly. - - ``dac_digi_convert_mode_t`` is removed. The driver now can transmit DMA data in different ways by calling :cpp:func:`dac_channels_write_continuously` or :cpp:func:`dac_channels_write_cyclically`. - - ``dac_cw_config_t`` is replaced by :cpp:type:`dac_cosine_config_t`, but the ``en_ch`` field is removed because it should be specify while allocate the channel group. - - ``dac_digi_config_t`` is replaced by :cpp:type:`dac_conti_config_t`. - - Breaking Changes in Usage - ~~~~~~~~~~~~~~~~~~~~~~~~~ - - - ``dac_pad_get_io_num`` is removed. - - ``dac_output_voltage`` is replaced by :cpp:func:`dac_channels_set_voltage`. - - ``dac_output_enable`` is replaced by :cpp:func:`dac_channels_enable`. - - ``dac_output_disable`` is replaced by :cpp:func:`dac_channels_disable`. - - ``dac_cw_generator_enable`` is replaced by :cpp:func:`dac_channels_start_cosine_output`, but it need to initialize the DAC channel group to cosine mode first by :cpp:func:`dac_channels_start_cosine_output`, and :cpp:func:`dac_channels_enable` should be called as well. - - ``dac_cw_generator_disable`` is replaced by :cpp:func:`dac_channels_stop_cosine_output`, it is also only allowed to be called under cosine mode. - - ``dac_cw_generator_config`` is replaced by :cpp:func:`dac_channels_init_cosine_mode`, when it is called, the driver will work at cosine mode. - - ``dac_digi_init`` and ``dac_digi_controller_config`` is merged into :cpp:func:`dac_channels_init_continuous_mode`. - - ``dac_digi_deinit`` is replaced by :cpp:func:`dac_channels_deinit_continuous_mode`. - - ``dac_digi_start``, ``dac_digi_fifo_reset`` and ``dac_digi_reset`` are merged into :cpp:func:`dac_channels_enable_continuous_mode`. - - ``dac_digi_stop`` is replaced by :cpp:func:`dac_channels_disable_continuous_mode`. - Register Access Macros ---------------------- diff --git a/docs/en/migration-guides/release-5.x/5.1/peripherals.rst b/docs/en/migration-guides/release-5.x/5.1/peripherals.rst index 41a7ec9961..4ab57d2a6b 100644 --- a/docs/en/migration-guides/release-5.x/5.1/peripherals.rst +++ b/docs/en/migration-guides/release-5.x/5.1/peripherals.rst @@ -3,3 +3,47 @@ Peripherals :link_to_translation:`zh_CN:[中文]` +.. only:: SOC_DAC_SUPPORTED + + DAC + --- + + DAC driver has been redesigned (see :doc:`DAC API Reference <../../../api-reference/peripherals/dac>`), which aims to unify and extend the usage of DAC peripheral. Although it's recommended to use the new driver APIs, the legacy driver is still available in the previous include path ``driver/dac.h``. However, by default, including ``driver/dac.h`` will bring a build warning like `The legacy DAC driver is deprecated, please use 'driver/dac_oneshot.h', 'driver/dac_cosine.h' or 'driver/dac_conti.h' instead`. The warning can be suppressed by the Kconfig option :ref:`CONFIG_DAC_SUPPRESS_DEPRECATE_WARN`. + + The major breaking changes in concept and usage are listed as follows: + + Breaking Changes in Concepts + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - ``dac_channel_t`` which used to identify the hardware channel are removed from user space, the channel index now starts from ``0``, please use `DAC_CHAN_0` and `DAC_CHAN_1` instead. And in the new driver, DAC channels can be seleted by :cpp:type:`dac_channel_mask_t`. And these channels can be allocated in a same channel group which is represented by :cpp:type:`dac_channels_handle_t`. + - ``dac_cw_scale_t`` is replaced by :cpp:type:`dac_cosine_atten_t`, to decupling the legacy driver and the new driver. + - ``dac_cw_phase_t`` is replaced by :cpp:type:`dac_cosine_phase_t`, the enum value is now the phase angle directly. + - ``dac_cw_config_t`` is replaced by :cpp:type:`dac_cosine_config_t`, but the ``en_ch`` field is removed because it should be specify while allocate the channel group. + + .. only:: esp32s2 + + - ``dac_digi_convert_mode_t`` is removed. The driver now can transmit DMA data in different ways by calling :cpp:func:`dac_channels_write_continuously` or :cpp:func:`dac_channels_write_cyclically`. + - ``dac_digi_config_t`` is replaced by :cpp:type:`dac_conti_config_t`. + + Breaking Changes in Usage + ~~~~~~~~~~~~~~~~~~~~~~~~~ + + - ``dac_pad_get_io_num`` is removed. + - ``dac_output_voltage`` is replaced by :cpp:func:`dac_oneshot_output_voltage`. + - ``dac_output_enable`` is removed, for oneshot mode, it will be enabled after the channel allocated. + - ``dac_output_disable`` is removed, for oneshot mode, it will be disabled before the channel deleted. + - ``dac_cw_generator_enable`` is replaced by :cpp:func:`dac_cosine_start`. + - ``dac_cw_generator_disable`` is replaced by :cpp:func:`dac_cosine_stop`. + - ``dac_cw_generator_config`` is replaced by :cpp:func:`dac_new_cosine_channel`. + + .. only:: esp32 + + - ``dac_i2s_enable`` is replaced by :cpp:func:`dac_conti_enable`, but it needs to allocate the continuous DAC channel first by :cpp:func:`dac_new_conti_channels`. + - ``dac_i2s_disable`` is replaced by :cpp:func:`dac_conti_disable`. + + .. only:: esp32s2 + + - ``dac_digi_init`` and ``dac_digi_controller_config`` is merged into :cpp:func:`dac_new_conti_channels`. + - ``dac_digi_deinit`` is replaced by :cpp:func:`dac_del_conti_channels`. + - ``dac_digi_start``, ``dac_digi_fifo_reset`` and ``dac_digi_reset`` are merged into :cpp:func:`dac_conti_enable`. + - ``dac_digi_stop`` is replaced by :cpp:func:`dac_conti_disable`. diff --git a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/Kconfig.projbuild b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/Kconfig.projbuild index 73f6d669f8..67f53d5ded 100644 --- a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/Kconfig.projbuild +++ b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/Kconfig.projbuild @@ -9,7 +9,9 @@ menu "A2DP Example Configuration" config EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC bool "Internal DAC" help - Select this to use Internal DAC sink output + Select this to use Internal DAC sink output, + note that DAC_DMA_AUTO_16BIT_ALIGN should be turned off + because the audio data are already 16-bit width config EXAMPLE_A2DP_SINK_OUTPUT_EXTERNAL_I2S bool "External I2S Codec" diff --git a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_av.c b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_av.c index 14751f6ae0..95c02ea8c4 100644 --- a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_av.c +++ b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_av.c @@ -21,8 +21,7 @@ #include "freertos/FreeRTOS.h" #include "freertos/task.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC -// DAC DMA mode is only supported by the legacy I2S driver, it will be replaced once DAC has its own DMA dirver -#include "driver/dac_driver.h" +#include "driver/dac_conti.h" #else #include "driver/i2s_std.h" #endif @@ -90,7 +89,7 @@ static bool s_volume_notify; /* notify volume change or not */ #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC i2s_chan_handle_t tx_chan = NULL; #else -dac_channels_handle_t tx_chan; +dac_conti_handle_t tx_chan; #endif /******************************** @@ -171,24 +170,19 @@ static void bt_av_notify_evt_handler(uint8_t event_id, esp_avrc_rn_param_t *even void bt_i2s_driver_install(void) { #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - dac_channels_config_t cfg = { - .chan_sel = DAC_CHANNEL_MASK_BOTH, - }; dac_conti_config_t conti_cfg = { - .freq_hz = 44100, - .chan_mode = DAC_CHANNEL_MODE_ALTER, - .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' - .desc_num = 6, + .chan_mask = DAC_CHANNEL_MASK_ALL, + .desc_num = 8, .buf_size = 2048, + .freq_hz = 44100, + .offset = 127, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // Using APLL as clock source to get a wider frequency range + .chan_mode = DAC_CHANNEL_MODE_ALTER, }; - /* Allocate the channel group */ - ESP_ERROR_CHECK(dac_new_channels(&cfg, &tx_chan)); - /* Enable the channels in the group */ - ESP_ERROR_CHECK(dac_channels_enable(tx_chan)); - /* Initialize DAC DMA peripheral */ - ESP_ERROR_CHECK(dac_channels_init_continuous_mode(tx_chan, &conti_cfg)); - /* Start the DAC DMA peripheral */ - ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(tx_chan)); + /* Allocate continuous channels */ + ESP_ERROR_CHECK(dac_new_conti_channels(&conti_cfg, &tx_chan)); + /* Enable the continuous channels */ + ESP_ERROR_CHECK(dac_conti_enable(tx_chan)); #else i2s_chan_config_t chan_cfg = I2S_CHANNEL_DEFAULT_CONFIG(I2S_NUM_0, I2S_ROLE_MASTER); chan_cfg.auto_clear = true; @@ -218,10 +212,8 @@ void bt_i2s_driver_install(void) void bt_i2s_driver_uninstall(void) { #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - ESP_ERROR_CHECK(dac_channels_disable_continuous_mode(tx_chan)); - ESP_ERROR_CHECK(dac_channels_deinit_continuous_mode(tx_chan)); - ESP_ERROR_CHECK(dac_channels_disable(tx_chan)); - ESP_ERROR_CHECK(dac_del_channels(tx_chan)); + ESP_ERROR_CHECK(dac_conti_disable(tx_chan)); + ESP_ERROR_CHECK(dac_del_conti_channels(tx_chan)); #else ESP_ERROR_CHECK(i2s_channel_disable(tx_chan)); ESP_ERROR_CHECK(i2s_del_channel(tx_chan)); @@ -322,17 +314,21 @@ static void bt_av_hdl_a2d_evt(uint16_t event, void *p_param) ch_count = 1; } #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC + dac_conti_disable(tx_chan); + dac_del_conti_channels(tx_chan); dac_conti_config_t conti_cfg = { - .freq_hz = sample_rate, - .chan_mode = ch_count == 1 ? DAC_CHANNEL_MODE_SIMUL : DAC_CHANNEL_MODE_ALTER, - .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' - .desc_num = 6, + .chan_mask = DAC_CHANNEL_MASK_ALL, + .desc_num = 8, .buf_size = 2048, + .freq_hz = sample_rate, + .offset = 127, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // Using APLL as clock source to get a wider frequency range + .chan_mode = (ch_count == 1) ? DAC_CHANNEL_MODE_SIMUL : DAC_CHANNEL_MODE_ALTER, }; - dac_channels_disable_continuous_mode(tx_chan); - dac_channels_deinit_continuous_mode(tx_chan); - dac_channels_init_continuous_mode(tx_chan, &conti_cfg); - dac_channels_enable_continuous_mode(tx_chan); + /* Allocate continuous channels */ + dac_new_conti_channels(&conti_cfg, &tx_chan); + /* Enable the continuous channels */ + dac_conti_enable(tx_chan); #else i2s_channel_disable(tx_chan); i2s_std_clk_config_t clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(sample_rate); diff --git a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_core.c b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_core.c index 68ab9ac538..3a5c5f734a 100644 --- a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_core.c +++ b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_core.c @@ -16,7 +16,7 @@ #include "esp_log.h" #include "bt_app_core.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC -#include "driver/dac_driver.h" +#include "driver/dac_conti.h" #else #include "driver/i2s_std.h" #endif @@ -62,7 +62,7 @@ static uint16_t ringbuffer_mode = RINGBUFFER_MODE_PROCESSING; #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC extern i2s_chan_handle_t tx_chan; #else -extern dac_channels_handle_t tx_chan; +extern dac_conti_handle_t tx_chan; #endif /******************************* @@ -140,7 +140,7 @@ static void bt_i2s_task_handler(void *arg) } #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - dac_channels_write_continuously(tx_chan, data, item_size, &bytes_written, portMAX_DELAY); + dac_conti_write(tx_chan, data, item_size, &bytes_written, -1); #else i2s_channel_write(tx_chan, data, item_size, &bytes_written, portMAX_DELAY); #endif diff --git a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/sdkconfig.defaults b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/sdkconfig.defaults index b3b61d904d..63d63358d2 100644 --- a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/sdkconfig.defaults @@ -7,4 +7,4 @@ CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BT_BLUEDROID_ENABLED=y CONFIG_BT_CLASSIC_ENABLED=y CONFIG_BT_A2DP_ENABLE=y -CONFIG_I2S_SUPPRESS_DEPRECATE_WARN=y +CONFIG_DAC_DMA_AUTO_16BIT_ALIGN=n diff --git a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/Kconfig.projbuild b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/Kconfig.projbuild index 73f6d669f8..67f53d5ded 100644 --- a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/Kconfig.projbuild +++ b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/Kconfig.projbuild @@ -9,7 +9,9 @@ menu "A2DP Example Configuration" config EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC bool "Internal DAC" help - Select this to use Internal DAC sink output + Select this to use Internal DAC sink output, + note that DAC_DMA_AUTO_16BIT_ALIGN should be turned off + because the audio data are already 16-bit width config EXAMPLE_A2DP_SINK_OUTPUT_EXTERNAL_I2S bool "External I2S Codec" diff --git a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_av.c b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_av.c index e658db6c7c..cb9c9a39b3 100644 --- a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_av.c +++ b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_av.c @@ -22,7 +22,7 @@ #include "freertos/FreeRTOS.h" #include "freertos/task.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC -#include "driver/dac_driver.h" +#include "driver/dac_conti.h" #else #include "driver/i2s_std.h" #endif @@ -55,7 +55,7 @@ static bool s_volume_notify; #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC extern i2s_chan_handle_t tx_chan; #else -extern dac_channels_handle_t tx_chan; +extern dac_conti_handle_t tx_chan; #endif /* callback for A2DP sink */ @@ -172,17 +172,21 @@ static void bt_av_hdl_a2d_evt(uint16_t event, void *p_param) sample_rate = 48000; } #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC + dac_conti_disable(tx_chan); + dac_del_conti_channels(tx_chan); dac_conti_config_t conti_cfg = { - .freq_hz = sample_rate, - .chan_mode = DAC_CHANNEL_MODE_ALTER, - .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' - .desc_num = 6, + .chan_mask = DAC_CHANNEL_MASK_ALL, + .desc_num = 8, .buf_size = 2048, + .freq_hz = sample_rate, + .offset = 127, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // Using APLL as clock source to get a wider frequency range + .chan_mode = DAC_CHANNEL_MODE_ALTER, }; - dac_channels_disable_continuous_mode(tx_chan); - dac_channels_deinit_continuous_mode(tx_chan); - dac_channels_init_continuous_mode(tx_chan, &conti_cfg); - dac_channels_enable_continuous_mode(tx_chan); + /* Allocate continuous channels */ + dac_new_conti_channels(&conti_cfg, &tx_chan); + /* Enable the continuous channels */ + dac_conti_enable(tx_chan); #else i2s_channel_disable(tx_chan); i2s_std_clk_config_t clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(sample_rate); diff --git a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_core.c b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_core.c index 8922bc3050..16f99f8b4b 100644 --- a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_core.c +++ b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_core.c @@ -16,7 +16,7 @@ #include "bt_app_core.h" #include "freertos/ringbuf.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC -#include "driver/dac_driver.h" +#include "driver/dac_conti.h" #else #include "driver/i2s_std.h" #endif @@ -32,7 +32,7 @@ static RingbufHandle_t s_ringbuf_i2s = NULL; #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC extern i2s_chan_handle_t tx_chan; #else -extern dac_channels_handle_t tx_chan; +extern dac_conti_handle_t tx_chan; #endif bool bt_app_work_dispatch(bt_app_cb_t p_cback, uint16_t event, void *p_params, int param_len, bt_app_copy_cb_t p_copy_cback) @@ -133,7 +133,7 @@ static void bt_i2s_task_handler(void *arg) data = (uint8_t *)xRingbufferReceive(s_ringbuf_i2s, &item_size, (TickType_t)portMAX_DELAY); if (item_size != 0){ #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - dac_channels_write_continuously(tx_chan, data, item_size, &bytes_written, portMAX_DELAY); + dac_conti_write(tx_chan, data, item_size, &bytes_written, -1); #else i2s_channel_write(tx_chan, data, item_size, &bytes_written, portMAX_DELAY); #endif diff --git a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/main.c b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/main.c index e7220181ef..5d678af7c6 100644 --- a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/main.c +++ b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/main.c @@ -36,8 +36,7 @@ #include "esp_a2dp_api.h" #include "esp_avrc_api.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC -// DAC DMA mode is only supported by the legacy I2S driver, it will be replaced once DAC has its own DMA dirver -#include "driver/dac_driver.h" +#include "driver/dac_conti.h" #else #include "driver/i2s_std.h" #endif @@ -78,7 +77,7 @@ static prepare_type_env_t b_prepare_write_env; #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC i2s_chan_handle_t tx_chan; #else -dac_channels_handle_t tx_chan; +dac_conti_handle_t tx_chan; #endif //Declare the static function @@ -693,24 +692,19 @@ void app_main(void) ESP_ERROR_CHECK(err); #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - dac_channels_config_t cfg = { - .chan_sel = DAC_CHANNEL_MASK_BOTH, - }; dac_conti_config_t conti_cfg = { - .freq_hz = 44100, - .chan_mode = DAC_CHANNEL_MODE_ALTER, - .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' - .desc_num = 6, + .chan_mask = DAC_CHANNEL_MASK_ALL, + .desc_num = 8, .buf_size = 2048, + .freq_hz = 44100, + .offset = 127, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // Using APLL as clock source to get a wider frequency range + .chan_mode = DAC_CHANNEL_MODE_ALTER, }; - /* Allocate the channel group */ - ESP_ERROR_CHECK(dac_new_channels(&cfg, &tx_chan)); - /* Enable the channels in the group */ - ESP_ERROR_CHECK(dac_channels_enable(tx_chan)); - /* Initialize DAC DMA peripheral */ - ESP_ERROR_CHECK(dac_channels_init_continuous_mode(tx_chan, conti_cfg)); - /* Start the DAC DMA peripheral */ - ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(tx_chan)); + /* Allocate continuous channels */ + ESP_ERROR_CHECK(dac_new_conti_channels(&conti_cfg, &tx_chan)); + /* Enable the continuous channels */ + ESP_ERROR_CHECK(dac_conti_enable(tx_chan)); #else i2s_chan_config_t chan_cfg = I2S_CHANNEL_DEFAULT_CONFIG(I2S_NUM_0, I2S_ROLE_MASTER); chan_cfg.auto_clear = true; diff --git a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/sdkconfig.defaults b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/sdkconfig.defaults index a8ae54ee17..c7e3115a4d 100644 --- a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/sdkconfig.defaults @@ -29,4 +29,4 @@ CONFIG_BT_ACL_CONNECTIONS=4 CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=n CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=n CONFIG_BT_SMP_ENABLE=y -CONFIG_I2S_SUPPRESS_DEPRECATE_WARN=y +CONFIG_DAC_DMA_AUTO_16BIT_ALIGN=n diff --git a/examples/peripherals/.build-test-rules.yml b/examples/peripherals/.build-test-rules.yml index 6bbcebe5cf..f95c82daf5 100644 --- a/examples/peripherals/.build-test-rules.yml +++ b/examples/peripherals/.build-test-rules.yml @@ -6,19 +6,7 @@ examples/peripherals/adc/continuous_read: temporary: true reason: adc dma mode isn't supported on these targets -examples/peripherals/dac/dac_audio: - disable: - - if: SOC_DAC_SUPPORTED != 1 - -examples/peripherals/dac/dac_basic: - disable: - - if: SOC_DAC_SUPPORTED != 1 - -examples/peripherals/dac/dac_continuous: - disable: - - if: SOC_DAC_SUPPORTED != 1 - -examples/peripherals/dac/dac_cosine_wave: +examples/peripherals/dac: disable: - if: SOC_DAC_SUPPORTED != 1 diff --git a/examples/peripherals/dac/dac_audio/main/CMakeLists.txt b/examples/peripherals/dac/dac_audio/main/CMakeLists.txt deleted file mode 100644 index 70afa9ebc2..0000000000 --- a/examples/peripherals/dac/dac_audio/main/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -idf_component_register(SRCS "dac_audio.c" - INCLUDE_DIRS ".") diff --git a/examples/peripherals/dac/dac_audio/main/audio_example_file.h b/examples/peripherals/dac/dac_audio/main/audio_example_file.h deleted file mode 100644 index b865ad74df..0000000000 --- a/examples/peripherals/dac/dac_audio/main/audio_example_file.h +++ /dev/null @@ -1,4979 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Unlicense OR CC0-1.0 - */ -#include -const unsigned char audio_table[] = { -0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x81, 0x7e, 0x7a, 0x79, 0x79, 0x7c, 0x81, 0x82, 0x82, -0x81, 0x7e, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x7e, 0x82, 0x84, 0x84, 0x85, 0x84, 0x80, 0x7d, 0x7a, -0x78, 0x78, 0x7a, 0x80, 0x84, 0x87, 0x86, 0x80, 0x7a, 0x77, 0x79, 0x7d, 0x82, 0x85, 0x84, 0x82, -0x7d, 0x7a, 0x77, 0x76, 0x77, 0x79, 0x80, 0x84, 0x86, 0x88, 0x87, 0x84, 0x7e, 0x77, 0x74, 0x75, -0x79, 0x81, 0x88, 0x8b, 0x89, 0x87, 0x84, 0x7e, 0x78, 0x73, 0x72, 0x78, 0x82, 0x8b, 0x8f, 0x8e, -0x88, 0x7e, 0x71, 0x69, 0x6d, 0x79, 0x88, 0x8f, 0x8c, 0x85, 0x80, 0x80, 0x81, 0x7d, 0x77, 0x73, -0x76, 0x7e, 0x88, 0x8f, 0x8d, 0x85, 0x7e, 0x7b, 0x7b, 0x7e, 0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x80, -0x83, 0x82, 0x80, 0x7d, 0x7d, 0x80, 0x82, 0x84, 0x83, 0x80, 0x7c, 0x7b, 0x7d, 0x81, 0x84, 0x84, -0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x7c, 0x7a, 0x79, 0x7c, 0x83, 0x87, 0x87, 0x83, 0x7e, 0x79, 0x78, -0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x81, 0x82, 0x83, 0x84, 0x83, 0x7e, 0x7a, 0x77, 0x78, 0x7b, 0x7e, -0x81, 0x82, 0x80, 0x7e, 0x7e, 0x81, 0x82, 0x80, 0x7e, 0x80, 0x82, 0x82, 0x81, 0x7e, 0x7c, 0x7b, -0x7b, 0x7c, 0x80, 0x83, 0x84, 0x83, 0x82, 0x80, 0x7e, 0x7a, 0x77, 0x77, 0x78, 0x7c, 0x82, 0x85, -0x86, 0x85, 0x84, 0x82, 0x7e, 0x7b, 0x77, 0x75, 0x78, 0x7e, 0x83, 0x85, 0x85, 0x85, 0x84, 0x83, -0x81, 0x7c, 0x7a, 0x7a, 0x7c, 0x7e, 0x81, 0x82, 0x83, 0x84, 0x84, 0x82, 0x80, 0x7e, 0x7c, 0x7a, -0x7a, 0x7c, 0x80, 0x83, 0x86, 0x87, 0x84, 0x80, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, -0x83, 0x87, 0x88, 0x87, 0x82, 0x7c, 0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x81, 0x85, 0x8a, 0x8a, 0x85, -0x7e, 0x79, 0x78, 0x79, 0x7a, 0x7c, 0x7c, 0x7e, 0x81, 0x82, 0x83, 0x81, 0x7e, 0x7d, 0x7c, 0x7d, -0x80, 0x7e, 0x7b, 0x7a, 0x7b, 0x7c, 0x81, 0x83, 0x83, 0x84, 0x81, 0x7d, 0x7a, 0x77, 0x78, 0x7a, -0x7d, 0x80, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x7a, 0x7c, 0x80, 0x82, 0x81, 0x7e, 0x7c, 0x7c, 0x7e, -0x81, 0x82, 0x84, 0x84, 0x84, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, -0x7d, 0x82, 0x86, 0x89, 0x89, 0x85, 0x7a, 0x6f, 0x69, 0x64, 0x62, 0x6f, 0x8f, 0xb2, 0xc9, 0xcc, -0xb1, 0x80, 0x4f, 0x2c, 0x18, 0x24, 0x53, 0x8c, 0xb3, 0xc9, 0xd0, 0xbe, 0x9c, 0x78, 0x5b, 0x4b, -0x4e, 0x5d, 0x76, 0x8b, 0x92, 0x9d, 0x9d, 0x90, 0x87, 0x7a, 0x70, 0x6c, 0x70, 0x7a, 0x86, 0x8b, -0x8e, 0x8b, 0x83, 0x7b, 0x77, 0x78, 0x7a, 0x80, 0x82, 0x82, 0x83, 0x81, 0x7a, 0x79, 0x7e, 0x84, -0x89, 0x8b, 0x85, 0x7b, 0x71, 0x6f, 0x71, 0x73, 0x79, 0x88, 0x94, 0x99, 0x96, 0x8f, 0x82, 0x6c, -0x5f, 0x60, 0x67, 0x77, 0x8f, 0xa1, 0xa6, 0x9c, 0x85, 0x67, 0x56, 0x58, 0x69, 0x83, 0x99, 0xa7, -0xa7, 0x97, 0x82, 0x6a, 0x57, 0x54, 0x5e, 0x74, 0x90, 0xa5, 0xa9, 0x9c, 0x86, 0x6f, 0x60, 0x5d, -0x67, 0x7b, 0x8f, 0x98, 0x98, 0x8e, 0x7d, 0x6b, 0x60, 0x63, 0x70, 0x84, 0x99, 0xa5, 0xa4, 0x94, -0x7d, 0x67, 0x58, 0x59, 0x63, 0x75, 0x89, 0x93, 0x96, 0x98, 0x96, 0x90, 0x86, 0x77, 0x69, 0x5f, -0x5d, 0x69, 0x7c, 0x8d, 0x99, 0x9a, 0x92, 0x86, 0x74, 0x68, 0x68, 0x74, 0x84, 0x93, 0x9b, 0x98, -0x8d, 0x7a, 0x69, 0x60, 0x61, 0x6a, 0x7a, 0x8d, 0x9e, 0xa4, 0x98, 0x83, 0x6c, 0x5e, 0x60, 0x6c, -0x7d, 0x91, 0x98, 0x94, 0x8b, 0x79, 0x6c, 0x67, 0x6a, 0x78, 0x88, 0x92, 0x98, 0x8e, 0x7b, 0x69, -0x61, 0x69, 0x7a, 0x8f, 0x9e, 0xa1, 0x97, 0x87, 0x78, 0x6d, 0x6a, 0x6e, 0x74, 0x7c, 0x82, 0x80, -0x7c, 0x7d, 0x81, 0x85, 0x8b, 0x91, 0x92, 0x8b, 0x7d, 0x70, 0x64, 0x5d, 0x5c, 0x67, 0x80, 0x9a, -0xb1, 0xbd, 0xb7, 0x9f, 0x7a, 0x53, 0x36, 0x31, 0x45, 0x6a, 0x99, 0xc5, 0xd8, 0xca, 0xa4, 0x73, -0x46, 0x2a, 0x2d, 0x50, 0x83, 0xad, 0xc1, 0xba, 0xa3, 0x8a, 0x70, 0x5c, 0x53, 0x57, 0x67, 0x79, -0x89, 0x9b, 0xa7, 0xa3, 0x93, 0x81, 0x71, 0x6a, 0x68, 0x69, 0x6d, 0x75, 0x78, 0x78, 0x80, 0x8c, -0x9b, 0xaa, 0xb0, 0xa7, 0x91, 0x71, 0x4c, 0x34, 0x35, 0x4d, 0x78, 0xa9, 0xcc, 0xd8, 0xcd, 0xa7, -0x73, 0x41, 0x19, 0xf, 0x29, 0x5f, 0xa5, 0xe3, 0xff, 0xf8, 0xc1, 0x6c, 0x22, 0x0, 0x9, 0x34, -0x74, 0xb3, 0xdc, 0xe3, 0xca, 0x98, 0x64, 0x42, 0x36, 0x44, 0x6a, 0x96, 0xb6, 0xbb, 0xa5, 0x83, -0x64, 0x57, 0x57, 0x5e, 0x71, 0x8d, 0x9f, 0xa4, 0x98, 0x85, 0x75, 0x6b, 0x6a, 0x73, 0x81, 0x8d, -0x97, 0x94, 0x7a, 0x5e, 0x53, 0x5e, 0x7a, 0x91, 0xa1, 0xa6, 0x9c, 0x91, 0x78, 0x66, 0x66, 0x6c, -0x7b, 0x82, 0x84, 0x93, 0x9c, 0x93, 0x85, 0x74, 0x62, 0x58, 0x62, 0x7a, 0x8f, 0xa3, 0xb3, 0xaf, -0x92, 0x63, 0x40, 0x3c, 0x55, 0x81, 0xa8, 0xbb, 0xb4, 0x90, 0x65, 0x50, 0x58, 0x74, 0x8a, 0x95, -0x96, 0x91, 0x87, 0x80, 0x7a, 0x70, 0x68, 0x68, 0x6f, 0x7e, 0x95, 0xa8, 0xa7, 0x98, 0x7d, 0x60, -0x54, 0x5c, 0x6d, 0x81, 0x95, 0xa3, 0xa4, 0x99, 0x7d, 0x68, 0x5d, 0x5d, 0x67, 0x76, 0x88, 0x96, -0x9f, 0xa2, 0x9d, 0x87, 0x6a, 0x53, 0x4d, 0x5e, 0x7a, 0x99, 0xad, 0xb1, 0xa3, 0x81, 0x62, 0x59, -0x5d, 0x67, 0x77, 0x8d, 0x9c, 0x9b, 0x91, 0x83, 0x70, 0x64, 0x69, 0x7b, 0x93, 0xa1, 0x9e, 0x89, -0x74, 0x64, 0x50, 0x4d, 0x69, 0x96, 0xbd, 0xc5, 0xad, 0x8a, 0x5c, 0x3d, 0x38, 0x46, 0x6c, 0x99, -0xbb, 0xce, 0xc8, 0xa7, 0x72, 0x3e, 0x21, 0x27, 0x4f, 0x8b, 0xbc, 0xd1, 0xc7, 0xa5, 0x76, 0x50, -0x3d, 0x41, 0x5e, 0x84, 0xa9, 0xc0, 0xb7, 0xa0, 0x82, 0x66, 0x58, 0x58, 0x60, 0x6e, 0x7e, 0x8e, -0x9b, 0xa1, 0x9e, 0x97, 0x87, 0x71, 0x62, 0x57, 0x54, 0x61, 0x7c, 0xa1, 0xbb, 0xbd, 0xa9, 0x84, -0x59, 0x3c, 0x3b, 0x57, 0x81, 0xa8, 0xc2, 0xc4, 0xac, 0x81, 0x58, 0x3d, 0x3a, 0x52, 0x75, 0x98, -0xb4, 0xc2, 0xbb, 0xa1, 0x7b, 0x5a, 0x44, 0x3c, 0x4d, 0x6e, 0x93, 0xb0, 0xbc, 0xba, 0xa4, 0x80, -0x5c, 0x45, 0x42, 0x52, 0x72, 0x98, 0xb2, 0xba, 0xaf, 0x92, 0x6e, 0x52, 0x45, 0x48, 0x5a, 0x7a, -0x9c, 0xb1, 0xb8, 0xaf, 0x99, 0x7b, 0x60, 0x51, 0x51, 0x63, 0x7b, 0x96, 0xa8, 0xa8, 0x99, 0x82, -0x6c, 0x5e, 0x59, 0x61, 0x76, 0x90, 0xa3, 0xa6, 0x9c, 0x89, 0x6f, 0x5a, 0x4d, 0x4f, 0x64, 0x82, -0xa0, 0xb5, 0xb8, 0xad, 0x93, 0x72, 0x58, 0x49, 0x4d, 0x64, 0x83, 0x9f, 0xb3, 0xb5, 0xa5, 0x8b, -0x6f, 0x59, 0x54, 0x5b, 0x67, 0x77, 0x8b, 0x98, 0x9d, 0x97, 0x8c, 0x7e, 0x71, 0x6a, 0x68, 0x6c, -0x76, 0x86, 0x92, 0x9a, 0x9d, 0x98, 0x8a, 0x75, 0x61, 0x54, 0x55, 0x65, 0x83, 0xa0, 0xaf, 0xaa, -0x99, 0x86, 0x75, 0x69, 0x5f, 0x5e, 0x67, 0x79, 0x8c, 0x96, 0x95, 0x8b, 0x80, 0x78, 0x76, 0x78, -0x79, 0x76, 0x77, 0x80, 0x88, 0x89, 0x86, 0x86, 0x86, 0x84, 0x81, 0x7b, 0x78, 0x78, 0x7e, 0x83, -0x81, 0x7c, 0x79, 0x7b, 0x84, 0x88, 0x86, 0x83, 0x80, 0x80, 0x82, 0x7e, 0x77, 0x74, 0x7b, 0x89, -0x91, 0x89, 0x7a, 0x6f, 0x6c, 0x70, 0x7a, 0x84, 0x85, 0x81, 0x84, 0x89, 0x8e, 0x90, 0x8e, 0x8a, -0x84, 0x7b, 0x6e, 0x63, 0x62, 0x71, 0x8c, 0xa5, 0xad, 0xa1, 0x8a, 0x73, 0x62, 0x58, 0x57, 0x5f, -0x70, 0x8d, 0xa7, 0xb3, 0xae, 0x9c, 0x83, 0x68, 0x51, 0x41, 0x3e, 0x4f, 0x75, 0xa3, 0xc6, 0xd2, -0xc3, 0x9b, 0x6b, 0x46, 0x35, 0x3a, 0x55, 0x7d, 0xa9, 0xc3, 0xc4, 0xb4, 0x95, 0x73, 0x5b, 0x4a, -0x44, 0x4b, 0x5c, 0x79, 0x9b, 0xb7, 0xc2, 0xb5, 0x99, 0x7a, 0x5f, 0x4b, 0x45, 0x4d, 0x62, 0x7d, -0x9a, 0xae, 0xb1, 0xaa, 0x9a, 0x8a, 0x7b, 0x64, 0x4d, 0x45, 0x50, 0x6b, 0x8e, 0xaa, 0xb4, 0xad, -0x9d, 0x82, 0x68, 0x58, 0x53, 0x5b, 0x6d, 0x85, 0x97, 0xa4, 0xa9, 0xa4, 0x97, 0x81, 0x66, 0x56, -0x54, 0x62, 0x78, 0x8e, 0x9d, 0xa3, 0x9c, 0x8e, 0x80, 0x75, 0x6d, 0x65, 0x63, 0x6a, 0x77, 0x89, -0x97, 0x9d, 0x98, 0x8c, 0x7c, 0x6f, 0x67, 0x65, 0x67, 0x6e, 0x7d, 0x92, 0xa3, 0xa8, 0xa2, 0x95, -0x84, 0x71, 0x63, 0x5d, 0x5f, 0x68, 0x78, 0x8a, 0x95, 0x98, 0x93, 0x88, 0x7e, 0x79, 0x76, 0x76, -0x77, 0x7a, 0x81, 0x84, 0x85, 0x84, 0x82, 0x80, 0x7e, 0x81, 0x82, 0x81, 0x7b, 0x77, 0x75, 0x77, -0x7c, 0x85, 0x8e, 0x96, 0x96, 0x8c, 0x7e, 0x6f, 0x64, 0x61, 0x66, 0x75, 0x85, 0x8c, 0x91, 0x90, -0x8b, 0x86, 0x80, 0x7a, 0x78, 0x78, 0x7c, 0x81, 0x81, 0x7b, 0x79, 0x79, 0x7d, 0x82, 0x83, 0x80, -0x79, 0x76, 0x79, 0x82, 0x8a, 0x90, 0x92, 0x8e, 0x88, 0x7c, 0x6e, 0x66, 0x66, 0x6b, 0x7b, 0x8f, -0x99, 0x97, 0x8e, 0x86, 0x7e, 0x79, 0x75, 0x71, 0x6f, 0x73, 0x7b, 0x85, 0x8b, 0x8d, 0x8b, 0x88, -0x82, 0x7a, 0x72, 0x6f, 0x72, 0x78, 0x7d, 0x81, 0x79, 0x69, 0x5b, 0x56, 0x64, 0x83, 0xa7, 0xc6, -0xce, 0xc2, 0xa4, 0x7e, 0x5d, 0x48, 0x45, 0x52, 0x67, 0x7e, 0x91, 0x9c, 0xa1, 0x9d, 0x91, 0x7e, -0x66, 0x4f, 0x3f, 0x3f, 0x51, 0x75, 0xa0, 0xc1, 0xd2, 0xc7, 0xa7, 0x80, 0x5b, 0x49, 0x4c, 0x5d, -0x7b, 0x97, 0xa9, 0xaf, 0xa7, 0x9a, 0x87, 0x72, 0x60, 0x52, 0x49, 0x4b, 0x58, 0x71, 0x92, 0xaa, -0xb4, 0xac, 0x97, 0x7c, 0x65, 0x5a, 0x5f, 0x6e, 0x82, 0x93, 0x9f, 0xa0, 0x9a, 0x90, 0x85, 0x7a, -0x6f, 0x64, 0x5d, 0x5b, 0x61, 0x70, 0x84, 0x93, 0x9b, 0x9d, 0x97, 0x8b, 0x80, 0x76, 0x70, 0x70, -0x6e, 0x6c, 0x6c, 0x6f, 0x7b, 0x8c, 0x9d, 0xa6, 0xa3, 0x98, 0x89, 0x7a, 0x6b, 0x5f, 0x5c, 0x62, -0x6e, 0x80, 0x8e, 0x99, 0xa2, 0xa5, 0x9c, 0x84, 0x66, 0x53, 0x50, 0x5d, 0x74, 0x8e, 0x9e, 0xa2, -0x9a, 0x8e, 0x84, 0x80, 0x7d, 0x7b, 0x74, 0x65, 0x5a, 0x5d, 0x72, 0x90, 0xa7, 0xb1, 0xa9, 0x95, -0x7b, 0x69, 0x62, 0x64, 0x6c, 0x78, 0x84, 0x89, 0x8b, 0x8d, 0x8e, 0x8c, 0x8a, 0x84, 0x7a, 0x73, -0x6d, 0x6b, 0x6f, 0x72, 0x6e, 0x66, 0x5d, 0x5b, 0x6b, 0x89, 0xab, 0xc3, 0xc7, 0xba, 0xa1, 0x83, -0x6d, 0x63, 0x62, 0x67, 0x6d, 0x70, 0x72, 0x77, 0x7d, 0x85, 0x8b, 0x8a, 0x84, 0x7b, 0x72, 0x6a, -0x67, 0x69, 0x6e, 0x75, 0x7a, 0x7c, 0x82, 0x8c, 0x96, 0x9e, 0xa2, 0x9e, 0x95, 0x8a, 0x81, 0x7b, -0x7a, 0x7b, 0x79, 0x75, 0x71, 0x6e, 0x71, 0x79, 0x7d, 0x7e, 0x7a, 0x72, 0x70, 0x72, 0x76, 0x83, -0x8e, 0x93, 0x93, 0x8c, 0x80, 0x77, 0x71, 0x70, 0x76, 0x7e, 0x87, 0x8d, 0x92, 0x95, 0x93, 0x8c, -0x80, 0x71, 0x66, 0x60, 0x60, 0x66, 0x72, 0x81, 0x8d, 0x93, 0x96, 0x96, 0x94, 0x8f, 0x87, 0x7e, -0x74, 0x69, 0x61, 0x62, 0x6e, 0x7c, 0x86, 0x8d, 0x8f, 0x8c, 0x89, 0x89, 0x8c, 0x8d, 0x8a, 0x82, -0x78, 0x6c, 0x67, 0x6a, 0x70, 0x78, 0x81, 0x86, 0x8c, 0x90, 0x92, 0x93, 0x8e, 0x85, 0x79, 0x6e, -0x67, 0x66, 0x6b, 0x75, 0x84, 0x90, 0x96, 0x96, 0x91, 0x8c, 0x85, 0x79, 0x6f, 0x66, 0x63, 0x67, -0x6f, 0x7c, 0x8c, 0x99, 0x9e, 0x9d, 0x96, 0x89, 0x79, 0x6f, 0x69, 0x67, 0x6b, 0x74, 0x7e, 0x88, -0x8b, 0x8a, 0x85, 0x7b, 0x71, 0x6a, 0x6a, 0x71, 0x80, 0x8e, 0x98, 0x9f, 0x9f, 0x95, 0x8b, 0x7c, -0x6f, 0x69, 0x66, 0x68, 0x70, 0x78, 0x83, 0x8b, 0x90, 0x92, 0x8e, 0x87, 0x7c, 0x72, 0x6d, 0x6c, -0x70, 0x78, 0x83, 0x8d, 0x93, 0x94, 0x90, 0x8a, 0x83, 0x7a, 0x73, 0x6f, 0x6f, 0x73, 0x79, 0x82, -0x88, 0x8b, 0x8c, 0x8a, 0x85, 0x80, 0x7c, 0x78, 0x76, 0x76, 0x77, 0x7a, 0x7d, 0x80, 0x83, 0x87, -0x8b, 0x8b, 0x8c, 0x8a, 0x84, 0x7c, 0x74, 0x6d, 0x6c, 0x6f, 0x76, 0x82, 0x8b, 0x93, 0x96, 0x95, -0x8f, 0x87, 0x7b, 0x70, 0x69, 0x66, 0x69, 0x70, 0x7a, 0x86, 0x8e, 0x93, 0x94, 0x8d, 0x85, 0x7c, -0x75, 0x72, 0x72, 0x74, 0x77, 0x7b, 0x80, 0x83, 0x87, 0x87, 0x87, 0x84, 0x80, 0x7d, 0x7a, 0x77, -0x77, 0x7a, 0x7d, 0x80, 0x83, 0x83, 0x81, 0x7d, 0x7b, 0x7a, 0x7c, 0x7d, 0x82, 0x85, 0x87, 0x87, -0x85, 0x82, 0x7c, 0x78, 0x75, 0x75, 0x78, 0x80, 0x86, 0x8a, 0x8e, 0x8e, 0x89, 0x83, 0x7b, 0x72, -0x6e, 0x6e, 0x70, 0x77, 0x80, 0x88, 0x8e, 0x90, 0x8d, 0x87, 0x7e, 0x74, 0x6e, 0x6c, 0x70, 0x79, -0x85, 0x8a, 0x8e, 0x8e, 0x88, 0x83, 0x7c, 0x77, 0x74, 0x75, 0x77, 0x7b, 0x83, 0x87, 0x88, 0x87, -0x82, 0x7d, 0x7d, 0x7c, 0x7c, 0x7e, 0x80, 0x80, 0x80, 0x7d, 0x7c, 0x7a, 0x7a, 0x7d, 0x80, 0x83, -0x85, 0x86, 0x83, 0x81, 0x7c, 0x7a, 0x7a, 0x7a, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x81, -0x83, 0x84, 0x83, 0x83, 0x82, 0x7e, 0x7a, 0x77, 0x73, 0x73, 0x76, 0x79, 0x80, 0x87, 0x8b, 0x8d, -0x8a, 0x85, 0x81, 0x7a, 0x75, 0x74, 0x74, 0x76, 0x7a, 0x7e, 0x84, 0x88, 0x8a, 0x8a, 0x88, 0x84, -0x7d, 0x77, 0x73, 0x72, 0x75, 0x7b, 0x83, 0x88, 0x8c, 0x8b, 0x86, 0x81, 0x7a, 0x76, 0x75, 0x76, -0x78, 0x7b, 0x81, 0x86, 0x89, 0x89, 0x87, 0x82, 0x7b, 0x76, 0x74, 0x75, 0x78, 0x7d, 0x83, 0x84, -0x85, 0x84, 0x82, 0x80, 0x7c, 0x7b, 0x7c, 0x7b, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, -0x7e, 0x80, 0x82, 0x83, 0x82, 0x82, 0x80, 0x7d, 0x7c, 0x7d, 0x7d, 0x7e, 0x81, 0x81, 0x7e, 0x7e, -0x7e, 0x7c, 0x7d, 0x7d, 0x7d, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7b, 0x7a, 0x7c, 0x7e, 0x83, -0x83, 0x82, 0x82, 0x80, 0x80, 0x81, 0x83, 0x85, 0x84, 0x82, 0x80, 0x7d, 0x7b, 0x79, 0x78, 0x78, -0x7a, 0x7d, 0x82, 0x87, 0x88, 0x87, 0x83, 0x7d, 0x79, 0x79, 0x79, 0x7c, 0x80, 0x83, 0x83, 0x82, -0x81, 0x7c, 0x7c, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x82, 0x82, 0x7e, 0x7c, 0x7c, 0x7c, 0x7e, -0x80, 0x81, 0x82, 0x83, 0x81, 0x7e, 0x7c, 0x7b, 0x7c, 0x7d, 0x81, 0x85, 0x86, 0x85, 0x83, 0x80, -0x7b, 0x78, 0x77, 0x77, 0x76, 0x79, 0x81, 0x86, 0x8a, 0x8b, 0x88, 0x81, 0x7b, 0x79, 0x78, 0x7b, -0x7d, 0x7c, 0x7b, 0x7c, 0x7d, 0x82, 0x87, 0x88, 0x86, 0x81, 0x7c, 0x7a, 0x7b, 0x7e, 0x82, 0x83, -0x81, 0x7d, 0x7c, 0x7d, 0x81, 0x82, 0x81, 0x80, 0x81, 0x80, 0x7d, 0x7c, 0x7b, 0x7a, 0x7c, 0x80, -0x81, 0x7e, 0x7b, 0x7c, 0x7c, 0x79, 0x78, 0x7b, 0x7d, 0x80, 0x83, 0x84, 0x84, 0x83, 0x7e, 0x7a, -0x79, 0x78, 0x76, 0x77, 0x7b, 0x84, 0x88, 0x87, 0x85, 0x83, 0x80, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, -0x7c, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x82, 0x86, 0x88, 0x86, 0x81, 0x7b, 0x79, 0x79, 0x78, -0x79, 0x7a, 0x7c, 0x80, 0x84, 0x87, 0x86, 0x87, 0x85, 0x81, 0x7a, 0x75, 0x74, 0x77, 0x7b, 0x81, -0x84, 0x84, 0x84, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x80, 0x7b, 0x7b, 0x7b, 0x7a, 0x7c, 0x80, -0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x80, -0x7e, 0x7e, 0x7d, 0x7d, 0x80, 0x80, 0x80, 0x81, 0x83, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x79, -0x77, 0x76, 0x77, 0x7b, 0x83, 0x8a, 0x8f, 0x8f, 0x87, 0x80, 0x78, 0x74, 0x73, 0x74, 0x7b, 0x80, -0x83, 0x86, 0x85, 0x85, 0x84, 0x83, 0x80, 0x7c, 0x7a, 0x7b, 0x7c, 0x81, 0x85, 0x87, 0x87, 0x88, -0x87, 0x83, 0x7e, 0x78, 0x77, 0x77, 0x77, 0x7b, 0x7e, 0x85, 0x89, 0x8b, 0x8c, 0x89, 0x82, 0x79, -0x71, 0x70, 0x73, 0x76, 0x76, 0x76, 0x78, 0x80, 0x88, 0x8e, 0x90, 0x8b, 0x83, 0x78, 0x70, 0x6f, -0x70, 0x77, 0x83, 0x88, 0x8a, 0x89, 0x85, 0x82, 0x81, 0x7e, 0x7a, 0x77, 0x7b, 0x82, 0x88, 0x87, -0x7e, 0x76, 0x72, 0x75, 0x7b, 0x84, 0x8b, 0x8c, 0x87, 0x81, 0x79, 0x78, 0x7c, 0x81, 0x83, 0x7d, -0x7a, 0x79, 0x7c, 0x85, 0x88, 0x85, 0x7e, 0x77, 0x74, 0x79, 0x7d, 0x81, 0x84, 0x83, 0x80, 0x7e, -0x7d, 0x7a, 0x7c, 0x82, 0x80, 0x7c, 0x79, 0x78, 0x7e, 0x84, 0x84, 0x83, 0x82, 0x81, 0x7e, 0x7d, -0x7c, 0x7d, 0x7e, 0x7a, 0x7b, 0x7e, 0x7e, 0x80, 0x82, 0x84, 0x87, 0x89, 0x86, 0x82, 0x81, 0x7d, -0x7a, 0x78, 0x7a, 0x7e, 0x81, 0x82, 0x84, 0x83, 0x82, 0x82, 0x82, 0x80, 0x80, 0x7e, 0x79, 0x78, -0x79, 0x7c, 0x7e, 0x7e, 0x7e, 0x81, 0x80, 0x7c, 0x7b, 0x7c, 0x7e, 0x81, 0x81, 0x83, 0x83, 0x82, -0x82, 0x7e, 0x7d, 0x7b, 0x79, 0x7b, 0x80, 0x83, 0x84, 0x88, 0x86, 0x82, 0x7d, 0x77, 0x76, 0x79, -0x7d, 0x82, 0x85, 0x87, 0x89, 0x88, 0x87, 0x84, 0x79, 0x74, 0x6f, 0x6c, 0x74, 0x7c, 0x87, 0x8d, -0x8b, 0x8a, 0x84, 0x7d, 0x7a, 0x77, 0x74, 0x74, 0x76, 0x77, 0x7d, 0x84, 0x87, 0x87, 0x85, 0x80, -0x7d, 0x81, 0x81, 0x81, 0x7e, 0x78, 0x78, 0x77, 0x79, 0x7e, 0x84, 0x85, 0x83, 0x82, 0x7e, 0x7e, -0x84, 0x87, 0x87, 0x86, 0x81, 0x79, 0x76, 0x7a, 0x7c, 0x80, 0x82, 0x80, 0x80, 0x82, 0x88, 0x8e, -0x8e, 0x8b, 0x83, 0x7a, 0x72, 0x6e, 0x6d, 0x72, 0x7c, 0x86, 0x8a, 0x8c, 0x8d, 0x8a, 0x88, 0x83, -0x7b, 0x72, 0x6b, 0x6a, 0x6d, 0x77, 0x84, 0x8c, 0x91, 0x8f, 0x87, 0x80, 0x7d, 0x7c, 0x7d, 0x7e, -0x7a, 0x78, 0x77, 0x77, 0x7b, 0x82, 0x85, 0x87, 0x88, 0x85, 0x86, 0x86, 0x85, 0x84, 0x80, 0x7b, -0x78, 0x76, 0x77, 0x7a, 0x80, 0x80, 0x81, 0x83, 0x83, 0x85, 0x87, 0x87, 0x85, 0x80, 0x7b, 0x76, -0x75, 0x77, 0x76, 0x78, 0x7c, 0x7e, 0x81, 0x84, 0x86, 0x87, 0x8a, 0x8a, 0x87, 0x81, 0x7c, 0x78, -0x73, 0x74, 0x75, 0x78, 0x84, 0x8d, 0x8e, 0x8c, 0x87, 0x7e, 0x79, 0x7a, 0x7c, 0x81, 0x80, 0x7d, -0x7a, 0x7a, 0x7e, 0x83, 0x87, 0x89, 0x86, 0x84, 0x80, 0x7b, 0x78, 0x73, 0x72, 0x74, 0x77, 0x81, -0x8b, 0x8f, 0x8e, 0x86, 0x7b, 0x73, 0x6e, 0x71, 0x78, 0x7b, 0x7e, 0x81, 0x80, 0x82, 0x86, 0x89, -0x8a, 0x86, 0x7c, 0x75, 0x74, 0x77, 0x7b, 0x81, 0x84, 0x83, 0x82, 0x7e, 0x81, 0x85, 0x87, 0x88, -0x86, 0x80, 0x7a, 0x77, 0x77, 0x7b, 0x7e, 0x82, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x80, 0x7d, -0x7c, 0x7b, 0x7c, 0x81, 0x83, 0x83, 0x80, 0x79, 0x74, 0x70, 0x70, 0x74, 0x7a, 0x86, 0x8f, 0x92, -0x90, 0x89, 0x7d, 0x74, 0x71, 0x70, 0x74, 0x78, 0x7a, 0x7c, 0x7d, 0x7c, 0x7d, 0x82, 0x86, 0x8c, -0x8f, 0x8d, 0x88, 0x7d, 0x74, 0x73, 0x72, 0x76, 0x7a, 0x7b, 0x82, 0x86, 0x89, 0x8e, 0x8e, 0x8b, -0x86, 0x7b, 0x76, 0x75, 0x78, 0x7e, 0x85, 0x86, 0x83, 0x80, 0x7c, 0x7c, 0x80, 0x84, 0x87, 0x87, -0x84, 0x82, 0x80, 0x80, 0x7e, 0x7a, 0x75, 0x73, 0x72, 0x76, 0x7c, 0x82, 0x86, 0x87, 0x85, 0x86, -0x88, 0x86, 0x81, 0x7b, 0x75, 0x6f, 0x6e, 0x72, 0x7a, 0x82, 0x8a, 0x90, 0x91, 0x8e, 0x88, 0x84, -0x7b, 0x76, 0x72, 0x6f, 0x70, 0x78, 0x84, 0x8b, 0x8e, 0x8a, 0x7d, 0x73, 0x71, 0x76, 0x82, 0x8e, -0x92, 0x8b, 0x7e, 0x71, 0x6c, 0x70, 0x78, 0x81, 0x82, 0x7e, 0x7a, 0x7b, 0x80, 0x89, 0x92, 0x92, -0x89, 0x7c, 0x70, 0x6b, 0x6f, 0x76, 0x7b, 0x7e, 0x80, 0x82, 0x87, 0x8d, 0x92, 0x91, 0x8c, 0x82, -0x75, 0x6f, 0x6d, 0x6f, 0x73, 0x79, 0x80, 0x86, 0x8d, 0x93, 0x93, 0x8d, 0x84, 0x76, 0x6b, 0x6a, -0x73, 0x7c, 0x88, 0x8d, 0x8b, 0x88, 0x83, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7c, 0x7a, 0x78, 0x78, -0x78, 0x76, 0x78, 0x7c, 0x85, 0x91, 0x96, 0x91, 0x85, 0x72, 0x67, 0x68, 0x6f, 0x77, 0x80, 0x82, -0x80, 0x7e, 0x81, 0x88, 0x93, 0x99, 0x94, 0x88, 0x78, 0x69, 0x66, 0x6e, 0x78, 0x80, 0x84, 0x82, -0x82, 0x86, 0x8d, 0x91, 0x92, 0x8e, 0x84, 0x7b, 0x74, 0x6e, 0x71, 0x77, 0x7c, 0x7e, 0x80, 0x81, -0x82, 0x86, 0x87, 0x87, 0x85, 0x83, 0x80, 0x7c, 0x7b, 0x7b, 0x7a, 0x77, 0x76, 0x77, 0x79, 0x7b, -0x7e, 0x81, 0x84, 0x86, 0x86, 0x85, 0x86, 0x85, 0x81, 0x80, 0x79, 0x75, 0x73, 0x71, 0x75, 0x7a, -0x80, 0x88, 0x8f, 0x95, 0x93, 0x85, 0x74, 0x67, 0x65, 0x74, 0x8c, 0x9c, 0x9e, 0x89, 0x69, 0x53, -0x50, 0x66, 0x89, 0xa6, 0xae, 0x9d, 0x81, 0x6a, 0x65, 0x76, 0x8d, 0x97, 0x8b, 0x6f, 0x5b, 0x5a, -0x6c, 0x88, 0x9e, 0xa2, 0x91, 0x7e, 0x74, 0x76, 0x83, 0x8f, 0x8f, 0x83, 0x71, 0x65, 0x64, 0x73, -0x89, 0x97, 0x9a, 0x90, 0x80, 0x76, 0x76, 0x7b, 0x7e, 0x7d, 0x77, 0x74, 0x78, 0x81, 0x8a, 0x8f, -0x8c, 0x83, 0x77, 0x70, 0x6e, 0x76, 0x84, 0x8e, 0x94, 0x92, 0x8c, 0x87, 0x84, 0x84, 0x83, 0x7c, -0x72, 0x66, 0x58, 0x4b, 0x44, 0x46, 0x5b, 0x81, 0xad, 0xce, 0xd4, 0xba, 0x93, 0x73, 0x66, 0x66, -0x6b, 0x6c, 0x67, 0x66, 0x69, 0x72, 0x84, 0x9e, 0xba, 0xc7, 0xb8, 0x93, 0x67, 0x54, 0x57, 0x68, -0x73, 0x6d, 0x60, 0x57, 0x62, 0x7c, 0x98, 0xa6, 0xa9, 0xa2, 0x92, 0x7b, 0x68, 0x63, 0x6b, 0x78, -0x83, 0x85, 0x80, 0x7d, 0x86, 0x92, 0x98, 0x94, 0x87, 0x7c, 0x77, 0x76, 0x78, 0x7a, 0x7b, 0x7a, -0x7b, 0x7d, 0x7c, 0x7a, 0x79, 0x7d, 0x80, 0x80, 0x80, 0x7c, 0x7c, 0x83, 0x8a, 0x8d, 0x8c, 0x8a, -0x87, 0x86, 0x85, 0x80, 0x7a, 0x79, 0x7b, 0x7c, 0x7b, 0x7c, 0x80, 0x84, 0x8a, 0x8b, 0x89, 0x84, -0x77, 0x68, 0x59, 0x53, 0x55, 0x64, 0x81, 0x9b, 0xa9, 0xab, 0xa5, 0x9a, 0x8e, 0x87, 0x7c, 0x73, -0x6d, 0x6b, 0x69, 0x6d, 0x76, 0x83, 0x91, 0x96, 0x94, 0x89, 0x77, 0x6e, 0x6c, 0x6e, 0x72, 0x73, -0x76, 0x7a, 0x7d, 0x86, 0x8d, 0x8e, 0x8f, 0x8a, 0x84, 0x7c, 0x75, 0x76, 0x7e, 0x88, 0x8f, 0x90, -0x8a, 0x85, 0x7e, 0x79, 0x76, 0x73, 0x74, 0x77, 0x79, 0x81, 0x86, 0x87, 0x89, 0x88, 0x85, 0x83, -0x80, 0x7a, 0x75, 0x70, 0x69, 0x5f, 0x56, 0x54, 0x60, 0x7e, 0xa4, 0xc7, 0xd1, 0xc3, 0xa9, 0x86, -0x6b, 0x5d, 0x57, 0x56, 0x57, 0x5e, 0x68, 0x75, 0x86, 0x95, 0xa1, 0xa5, 0x9a, 0x84, 0x68, 0x53, -0x50, 0x59, 0x6c, 0x7b, 0x83, 0x8c, 0x97, 0xa3, 0xab, 0xa6, 0x9b, 0x8d, 0x79, 0x6b, 0x5e, 0x5b, -0x66, 0x76, 0x85, 0x8e, 0x8f, 0x8c, 0x86, 0x81, 0x7b, 0x70, 0x64, 0x5f, 0x64, 0x71, 0x85, 0x96, -0xa1, 0xa5, 0xa1, 0x93, 0x81, 0x6f, 0x62, 0x5e, 0x63, 0x6f, 0x79, 0x87, 0x94, 0x99, 0x98, 0x93, -0x8b, 0x82, 0x7c, 0x79, 0x75, 0x71, 0x68, 0x5d, 0x5a, 0x63, 0x73, 0x8a, 0xa2, 0xb6, 0xba, 0xae, -0x99, 0x7a, 0x5a, 0x40, 0x30, 0x2c, 0x3b, 0x5e, 0x8b, 0xb8, 0xd9, 0xe6, 0xdd, 0xc1, 0x99, 0x6a, -0x43, 0x2e, 0x2c, 0x3c, 0x59, 0x77, 0x92, 0xa8, 0xb5, 0xb8, 0xaf, 0x9a, 0x7c, 0x5d, 0x42, 0x34, -0x38, 0x50, 0x75, 0xa6, 0xd0, 0xe1, 0xd9, 0xba, 0x90, 0x64, 0x47, 0x3b, 0x3c, 0x4b, 0x5f, 0x77, -0x91, 0xa7, 0xb3, 0xad, 0x9d, 0x86, 0x68, 0x51, 0x48, 0x4f, 0x64, 0x7e, 0x9b, 0xb2, 0xbb, 0xba, -0xb1, 0x9c, 0x82, 0x6a, 0x55, 0x4b, 0x49, 0x4f, 0x5a, 0x69, 0x75, 0x7c, 0x7e, 0x87, 0x9b, 0xb3, -0xc4, 0xbe, 0x9d, 0x70, 0x53, 0x4d, 0x5b, 0x74, 0x85, 0x8e, 0x95, 0x99, 0x9a, 0x91, 0x81, 0x76, -0x6c, 0x62, 0x57, 0x4e, 0x53, 0x69, 0x8a, 0xa5, 0xb0, 0xa9, 0x9b, 0x8c, 0x83, 0x80, 0x74, 0x6d, -0x6f, 0x73, 0x78, 0x7e, 0x87, 0x91, 0x97, 0x98, 0x90, 0x7e, 0x6e, 0x61, 0x60, 0x68, 0x71, 0x7a, -0x84, 0x8f, 0x99, 0x9d, 0x9b, 0x93, 0x89, 0x80, 0x74, 0x6b, 0x64, 0x63, 0x6d, 0x7c, 0x8c, 0x96, -0x9a, 0x99, 0x91, 0x89, 0x7d, 0x72, 0x6f, 0x72, 0x79, 0x83, 0x8a, 0x8b, 0x87, 0x82, 0x7a, 0x6f, -0x64, 0x5e, 0x61, 0x70, 0x83, 0x97, 0xab, 0xbb, 0xc1, 0xb5, 0x93, 0x61, 0x39, 0x28, 0x30, 0x4e, -0x79, 0xa2, 0xbd, 0xc9, 0xc2, 0xaa, 0x86, 0x62, 0x4a, 0x40, 0x44, 0x57, 0x72, 0x94, 0xb5, 0xcb, -0xcd, 0xb5, 0x90, 0x6a, 0x4a, 0x39, 0x3a, 0x4b, 0x65, 0x8a, 0xaa, 0xbb, 0xbe, 0xb2, 0x98, 0x7a, -0x5d, 0x43, 0x39, 0x40, 0x5b, 0x83, 0xac, 0xca, 0xd3, 0xc5, 0xa3, 0x79, 0x53, 0x36, 0x30, 0x3d, -0x5a, 0x81, 0xa1, 0xb8, 0xc4, 0xba, 0xa6, 0x89, 0x67, 0x50, 0x45, 0x45, 0x50, 0x5f, 0x73, 0x84, -0x97, 0xab, 0xbd, 0xc7, 0xbf, 0xa4, 0x74, 0x48, 0x33, 0x36, 0x53, 0x78, 0x93, 0xa5, 0xac, 0xa9, -0x9a, 0x86, 0x6f, 0x5d, 0x52, 0x51, 0x56, 0x64, 0x7b, 0x98, 0xaf, 0xb8, 0xb1, 0x99, 0x7a, 0x64, -0x5a, 0x5c, 0x66, 0x72, 0x82, 0x92, 0x9a, 0x98, 0x92, 0x88, 0x81, 0x77, 0x6b, 0x64, 0x62, 0x67, -0x78, 0x8a, 0x94, 0x97, 0x92, 0x8d, 0x86, 0x7d, 0x77, 0x76, 0x78, 0x7c, 0x81, 0x81, 0x7e, 0x7b, -0x7a, 0x7c, 0x7e, 0x7e, 0x84, 0x88, 0x89, 0x88, 0x85, 0x84, 0x85, 0x89, 0x8d, 0x8e, 0x87, 0x75, -0x63, 0x57, 0x5a, 0x6a, 0x80, 0x93, 0x9d, 0x98, 0x8c, 0x83, 0x80, 0x85, 0x8c, 0x8b, 0x78, 0x59, -0x3f, 0x39, 0x51, 0x81, 0xb8, 0xde, 0xe0, 0xc2, 0x92, 0x60, 0x3a, 0x2a, 0x33, 0x4e, 0x6e, 0x8f, -0xa9, 0xba, 0xc1, 0xb6, 0x9b, 0x75, 0x51, 0x38, 0x38, 0x50, 0x76, 0xa0, 0xbd, 0xc9, 0xc0, 0xa5, -0x84, 0x62, 0x4d, 0x44, 0x4a, 0x5d, 0x75, 0x8f, 0xa7, 0xb1, 0xab, 0x9c, 0x83, 0x6c, 0x5e, 0x5a, -0x5f, 0x6d, 0x82, 0x94, 0xa0, 0xa3, 0x9c, 0x8f, 0x7c, 0x6a, 0x61, 0x5f, 0x65, 0x6c, 0x75, 0x7d, -0x81, 0x84, 0x82, 0x85, 0x90, 0x99, 0xa0, 0x99, 0x88, 0x73, 0x65, 0x68, 0x73, 0x7c, 0x83, 0x85, -0x86, 0x89, 0x88, 0x83, 0x7a, 0x72, 0x6f, 0x6d, 0x6c, 0x70, 0x7a, 0x8a, 0x98, 0x9d, 0x96, 0x8a, -0x7d, 0x73, 0x6f, 0x70, 0x74, 0x7a, 0x82, 0x89, 0x8c, 0x89, 0x84, 0x80, 0x7c, 0x76, 0x6e, 0x66, -0x67, 0x73, 0x81, 0x8f, 0x97, 0x93, 0x8c, 0x85, 0x81, 0x7a, 0x76, 0x79, 0x81, 0x87, 0x89, 0x87, -0x82, 0x7b, 0x73, 0x6c, 0x69, 0x6c, 0x72, 0x82, 0x90, 0x96, 0x96, 0x94, 0x94, 0x96, 0x90, 0x82, -0x73, 0x68, 0x65, 0x66, 0x68, 0x6b, 0x6f, 0x72, 0x73, 0x71, 0x6f, 0x7c, 0x99, 0xb2, 0xb6, 0xa5, -0x8d, 0x77, 0x66, 0x5f, 0x60, 0x64, 0x6c, 0x81, 0x9c, 0xab, 0xa7, 0x97, 0x7b, 0x5b, 0x46, 0x45, -0x55, 0x71, 0x8f, 0xa2, 0xac, 0xaa, 0x9e, 0x8e, 0x7c, 0x6f, 0x63, 0x61, 0x6e, 0x87, 0xa0, 0xad, -0xa8, 0x96, 0x78, 0x5b, 0x4c, 0x49, 0x55, 0x69, 0x85, 0x9f, 0xab, 0xa7, 0x97, 0x82, 0x6d, 0x63, -0x65, 0x71, 0x83, 0x92, 0x9c, 0x9c, 0x92, 0x82, 0x74, 0x6a, 0x63, 0x60, 0x64, 0x6d, 0x77, 0x7b, -0x78, 0x6e, 0x69, 0x7b, 0xa2, 0xc6, 0xcf, 0xb0, 0x7a, 0x4f, 0x45, 0x59, 0x7c, 0x99, 0xa1, 0x9b, -0x8e, 0x7a, 0x66, 0x58, 0x53, 0x5e, 0x70, 0x80, 0x87, 0x90, 0x9d, 0xa5, 0x9f, 0x87, 0x69, 0x57, -0x56, 0x68, 0x81, 0x97, 0xab, 0xb1, 0xac, 0x9e, 0x7b, 0x55, 0x41, 0x46, 0x5b, 0x74, 0x90, 0xa5, -0xaf, 0xac, 0x98, 0x79, 0x5d, 0x4d, 0x50, 0x62, 0x7e, 0x9c, 0xb1, 0xbe, 0xba, 0x9c, 0x6f, 0x48, -0x38, 0x3e, 0x57, 0x78, 0x95, 0xac, 0xb6, 0xb3, 0xa2, 0x84, 0x63, 0x4d, 0x4b, 0x5b, 0x78, 0x99, -0xb0, 0xb3, 0xa1, 0x7e, 0x5a, 0x45, 0x4c, 0x65, 0x81, 0x8f, 0x94, 0x9b, 0xa2, 0x9d, 0x8b, 0x73, -0x5c, 0x48, 0x46, 0x5b, 0x7e, 0xa6, 0xc0, 0xc3, 0xa7, 0x7d, 0x5e, 0x57, 0x62, 0x73, 0x82, 0x8a, -0x91, 0x92, 0x8f, 0x83, 0x70, 0x63, 0x5e, 0x6a, 0x7c, 0x92, 0x9e, 0xa2, 0x9d, 0x89, 0x6f, 0x60, -0x61, 0x6f, 0x80, 0x8e, 0x98, 0x9c, 0x9a, 0x91, 0x82, 0x6c, 0x5d, 0x5c, 0x65, 0x74, 0x85, 0x91, -0x96, 0x93, 0x8e, 0x83, 0x77, 0x70, 0x6a, 0x6a, 0x75, 0x84, 0x90, 0x9a, 0x9d, 0x95, 0x89, 0x77, -0x68, 0x61, 0x5a, 0x5d, 0x6c, 0x86, 0xa5, 0xbc, 0xbd, 0xa1, 0x73, 0x50, 0x41, 0x4e, 0x70, 0x95, -0xab, 0xac, 0xa0, 0x8e, 0x79, 0x69, 0x61, 0x5e, 0x62, 0x6f, 0x82, 0x93, 0xa0, 0xa5, 0x9d, 0x88, -0x6b, 0x51, 0x46, 0x51, 0x70, 0x97, 0xb4, 0xbe, 0xb2, 0x96, 0x72, 0x57, 0x53, 0x5d, 0x6d, 0x81, -0x8e, 0x93, 0x8d, 0x84, 0x7a, 0x75, 0x76, 0x79, 0x7d, 0x82, 0x86, 0x87, 0x86, 0x83, 0x7d, 0x79, -0x76, 0x76, 0x7b, 0x83, 0x87, 0x89, 0x87, 0x7e, 0x76, 0x73, 0x72, 0x76, 0x7b, 0x82, 0x88, 0x8d, -0x93, 0x93, 0x8d, 0x82, 0x74, 0x6c, 0x6a, 0x6d, 0x76, 0x84, 0x8c, 0x8c, 0x82, 0x75, 0x71, 0x75, -0x7c, 0x86, 0x8b, 0x8c, 0x89, 0x80, 0x79, 0x7c, 0x83, 0x89, 0x8d, 0x89, 0x81, 0x7b, 0x73, 0x6e, -0x6d, 0x6e, 0x73, 0x80, 0x8f, 0x97, 0x96, 0x8f, 0x83, 0x76, 0x6d, 0x6a, 0x70, 0x7a, 0x88, 0x91, -0x93, 0x92, 0x89, 0x7b, 0x72, 0x6d, 0x6d, 0x71, 0x7a, 0x87, 0x8f, 0x8f, 0x8f, 0x89, 0x80, 0x79, -0x75, 0x72, 0x71, 0x70, 0x71, 0x79, 0x87, 0x98, 0xa5, 0xa6, 0x96, 0x79, 0x5a, 0x4d, 0x59, 0x74, -0x94, 0xa6, 0xa2, 0x91, 0x7a, 0x67, 0x61, 0x67, 0x72, 0x7e, 0x89, 0x90, 0x94, 0x8f, 0x88, 0x7e, -0x74, 0x6d, 0x6c, 0x74, 0x82, 0x8d, 0x97, 0x95, 0x86, 0x73, 0x68, 0x68, 0x71, 0x82, 0x8d, 0x94, -0x92, 0x8a, 0x81, 0x77, 0x70, 0x6c, 0x6d, 0x75, 0x81, 0x8b, 0x91, 0x8f, 0x86, 0x7b, 0x74, 0x70, -0x70, 0x77, 0x82, 0x88, 0x8c, 0x8b, 0x85, 0x7b, 0x74, 0x70, 0x6f, 0x73, 0x7c, 0x85, 0x8b, 0x91, -0x8e, 0x88, 0x81, 0x76, 0x72, 0x71, 0x73, 0x7b, 0x84, 0x89, 0x89, 0x87, 0x86, 0x81, 0x7a, 0x76, -0x77, 0x77, 0x76, 0x77, 0x7a, 0x7c, 0x7d, 0x81, 0x87, 0x8b, 0x8c, 0x87, 0x81, 0x7a, 0x73, 0x70, -0x72, 0x79, 0x82, 0x86, 0x86, 0x83, 0x80, 0x80, 0x83, 0x85, 0x80, 0x7b, 0x7c, 0x7e, 0x85, 0x88, -0x84, 0x79, 0x67, 0x4f, 0x43, 0x55, 0x8c, 0xca, 0xef, 0xe4, 0x9c, 0x44, 0x13, 0x1c, 0x55, 0x99, -0xbf, 0xc4, 0xb0, 0x94, 0x77, 0x5c, 0x4b, 0x4a, 0x5c, 0x75, 0x8e, 0x9f, 0xa9, 0xae, 0xa5, 0x88, -0x60, 0x48, 0x4c, 0x6b, 0x91, 0xa8, 0xac, 0x9e, 0x8b, 0x77, 0x69, 0x63, 0x67, 0x73, 0x80, 0x8a, -0x8f, 0x87, 0x7d, 0x7a, 0x78, 0x76, 0x77, 0x83, 0x8c, 0x8d, 0x89, 0x81, 0x77, 0x73, 0x76, 0x7d, -0x88, 0x8c, 0x8c, 0x8d, 0x8a, 0x81, 0x73, 0x6c, 0x6f, 0x76, 0x81, 0x8b, 0x92, 0x92, 0x8a, 0x7a, -0x69, 0x64, 0x6c, 0x7e, 0x8f, 0x97, 0x96, 0x90, 0x88, 0x7a, 0x6b, 0x65, 0x6a, 0x74, 0x80, 0x8a, -0x95, 0x98, 0x92, 0x88, 0x78, 0x68, 0x5c, 0x5a, 0x67, 0x81, 0x96, 0xa8, 0xaf, 0xa4, 0x89, 0x6a, -0x57, 0x52, 0x5c, 0x72, 0x90, 0xa5, 0xac, 0xa5, 0x90, 0x76, 0x60, 0x53, 0x5c, 0x72, 0x8c, 0x9f, -0xa7, 0xa2, 0x91, 0x7d, 0x6b, 0x60, 0x62, 0x6e, 0x81, 0x91, 0x97, 0x94, 0x8e, 0x83, 0x77, 0x71, -0x72, 0x74, 0x74, 0x72, 0x6e, 0x6a, 0x6f, 0x82, 0x9e, 0xb6, 0xb8, 0x9f, 0x6f, 0x44, 0x37, 0x50, -0x85, 0xb3, 0xc1, 0xaa, 0x7d, 0x58, 0x4f, 0x5a, 0x72, 0x89, 0x91, 0x90, 0x8d, 0x89, 0x83, 0x79, -0x71, 0x6d, 0x6f, 0x77, 0x86, 0x95, 0xa2, 0xa1, 0x8f, 0x75, 0x5f, 0x59, 0x63, 0x75, 0x8a, 0x98, -0x97, 0x8d, 0x81, 0x75, 0x72, 0x73, 0x75, 0x7b, 0x7d, 0x80, 0x88, 0x90, 0x91, 0x88, 0x7c, 0x74, -0x72, 0x76, 0x7e, 0x87, 0x89, 0x86, 0x81, 0x7b, 0x78, 0x75, 0x75, 0x7b, 0x83, 0x85, 0x83, 0x7e, -0x7b, 0x77, 0x76, 0x79, 0x7e, 0x86, 0x8d, 0x92, 0x8f, 0x85, 0x75, 0x6a, 0x69, 0x6d, 0x77, 0x85, -0x8b, 0x86, 0x7d, 0x77, 0x7a, 0x81, 0x86, 0x88, 0x81, 0x79, 0x71, 0x6c, 0x6f, 0x79, 0x86, 0x8c, -0x89, 0x83, 0x81, 0x82, 0x84, 0x81, 0x78, 0x71, 0x74, 0x80, 0x8e, 0x96, 0x92, 0x86, 0x75, 0x6a, -0x69, 0x73, 0x85, 0x92, 0x95, 0x8e, 0x81, 0x75, 0x72, 0x74, 0x79, 0x81, 0x86, 0x8c, 0x90, 0x90, -0x8a, 0x7d, 0x6e, 0x5e, 0x53, 0x59, 0x72, 0x9e, 0xc5, 0xd3, 0xbc, 0x82, 0x41, 0x1c, 0x2a, 0x62, -0xab, 0xdb, 0xd9, 0xad, 0x6c, 0x3b, 0x32, 0x45, 0x69, 0x8e, 0xa2, 0xab, 0xa7, 0x9a, 0x83, 0x6a, -0x56, 0x50, 0x5c, 0x75, 0x94, 0xac, 0xb4, 0xa4, 0x84, 0x61, 0x4b, 0x50, 0x67, 0x85, 0x9b, 0xa4, -0x9e, 0x8b, 0x73, 0x65, 0x5e, 0x65, 0x77, 0x8a, 0x97, 0x9d, 0x97, 0x8a, 0x78, 0x6a, 0x65, 0x6b, -0x78, 0x89, 0x93, 0x93, 0x8c, 0x80, 0x74, 0x6e, 0x6f, 0x76, 0x81, 0x8b, 0x91, 0x90, 0x85, 0x78, -0x6f, 0x6e, 0x73, 0x7c, 0x87, 0x8e, 0x8f, 0x8a, 0x81, 0x77, 0x71, 0x73, 0x7b, 0x83, 0x88, 0x8a, -0x86, 0x7e, 0x7a, 0x7a, 0x7c, 0x7b, 0x79, 0x7a, 0x7e, 0x84, 0x89, 0x8b, 0x84, 0x7a, 0x75, 0x77, -0x7b, 0x7a, 0x76, 0x76, 0x79, 0x7d, 0x82, 0x86, 0x8c, 0x8b, 0x85, 0x81, 0x7c, 0x7a, 0x7d, 0x84, -0x86, 0x85, 0x84, 0x83, 0x83, 0x82, 0x7c, 0x78, 0x76, 0x77, 0x7b, 0x80, 0x87, 0x8a, 0x86, 0x82, -0x7c, 0x78, 0x77, 0x76, 0x77, 0x76, 0x75, 0x7a, 0x88, 0x98, 0xa5, 0xa7, 0x95, 0x71, 0x51, 0x47, -0x58, 0x7e, 0xa9, 0xc3, 0xbb, 0x97, 0x67, 0x45, 0x3f, 0x53, 0x79, 0x9a, 0xa7, 0xa4, 0x96, 0x88, -0x7a, 0x6f, 0x69, 0x67, 0x6e, 0x7c, 0x8e, 0x9b, 0x9b, 0x90, 0x7d, 0x6b, 0x63, 0x68, 0x77, 0x88, -0x93, 0x96, 0x8d, 0x7e, 0x72, 0x6c, 0x6e, 0x74, 0x7e, 0x87, 0x8d, 0x90, 0x8d, 0x83, 0x7a, 0x74, -0x73, 0x79, 0x81, 0x86, 0x86, 0x83, 0x7d, 0x79, 0x7a, 0x7e, 0x83, 0x85, 0x84, 0x82, 0x82, 0x7e, -0x7a, 0x76, 0x75, 0x7a, 0x80, 0x85, 0x89, 0x8a, 0x85, 0x7c, 0x74, 0x71, 0x75, 0x7e, 0x89, 0x8d, -0x8d, 0x86, 0x7a, 0x74, 0x73, 0x76, 0x7c, 0x82, 0x8b, 0x92, 0x92, 0x8a, 0x7a, 0x6f, 0x6d, 0x72, -0x75, 0x79, 0x82, 0x89, 0x89, 0x84, 0x7e, 0x7d, 0x7d, 0x7d, 0x80, 0x84, 0x85, 0x7d, 0x70, 0x57, -0x42, 0x4b, 0x7e, 0xc4, 0xef, 0xde, 0x9b, 0x4c, 0x1f, 0x2c, 0x5b, 0x93, 0xb7, 0xc2, 0xbd, 0x9d, -0x6b, 0x46, 0x40, 0x54, 0x6c, 0x7d, 0x8f, 0xa3, 0xae, 0xa6, 0x89, 0x62, 0x4a, 0x4a, 0x63, 0x8b, -0xab, 0xb8, 0xae, 0x92, 0x6f, 0x56, 0x50, 0x5b, 0x74, 0x91, 0xa1, 0x9e, 0x90, 0x80, 0x6e, 0x5e, -0x58, 0x61, 0x73, 0x8c, 0xa5, 0xac, 0x9a, 0x7c, 0x68, 0x60, 0x5e, 0x6a, 0x86, 0xa3, 0xab, 0x9f, -0x8e, 0x7c, 0x6e, 0x67, 0x6c, 0x74, 0x7a, 0x84, 0x8b, 0x86, 0x7a, 0x73, 0x76, 0x7a, 0x80, 0x87, -0x8d, 0x8e, 0x87, 0x7c, 0x76, 0x75, 0x7a, 0x84, 0x8d, 0x90, 0x8d, 0x81, 0x72, 0x6b, 0x6a, 0x72, -0x80, 0x89, 0x8d, 0x8b, 0x85, 0x79, 0x6e, 0x6a, 0x70, 0x7d, 0x89, 0x93, 0x96, 0x93, 0x87, 0x79, -0x71, 0x6e, 0x72, 0x7c, 0x86, 0x8a, 0x8a, 0x85, 0x7e, 0x7b, 0x77, 0x77, 0x7a, 0x7a, 0x7a, 0x7b, -0x7c, 0x7b, 0x7d, 0x7d, 0x81, 0x84, 0x86, 0x85, 0x82, 0x7c, 0x7a, 0x78, 0x7a, 0x80, 0x87, 0x8b, -0x89, 0x7e, 0x6e, 0x61, 0x5f, 0x6f, 0x8d, 0xa9, 0xb3, 0xa1, 0x78, 0x4f, 0x40, 0x55, 0x81, 0xa9, -0xb8, 0xa9, 0x89, 0x6a, 0x5e, 0x63, 0x6d, 0x79, 0x84, 0x8c, 0x91, 0x93, 0x90, 0x87, 0x78, 0x6b, -0x65, 0x66, 0x73, 0x8c, 0x9e, 0xa1, 0x91, 0x78, 0x67, 0x65, 0x6d, 0x7a, 0x89, 0x8f, 0x8f, 0x8a, -0x83, 0x7a, 0x72, 0x6b, 0x6c, 0x73, 0x7e, 0x8a, 0x92, 0x94, 0x8b, 0x7d, 0x71, 0x6b, 0x6d, 0x77, -0x85, 0x8d, 0x8d, 0x86, 0x83, 0x7e, 0x78, 0x75, 0x75, 0x7b, 0x82, 0x89, 0x8e, 0x8e, 0x86, 0x79, -0x6e, 0x6a, 0x6e, 0x79, 0x87, 0x8f, 0x8f, 0x87, 0x7a, 0x74, 0x72, 0x76, 0x80, 0x87, 0x8a, 0x89, -0x85, 0x7c, 0x75, 0x6f, 0x6e, 0x73, 0x7c, 0x86, 0x8b, 0x89, 0x7e, 0x72, 0x69, 0x6b, 0x77, 0x85, -0x90, 0x96, 0x93, 0x89, 0x7d, 0x76, 0x71, 0x70, 0x76, 0x83, 0x8d, 0x91, 0x8d, 0x87, 0x7e, 0x75, -0x6f, 0x70, 0x76, 0x7c, 0x83, 0x86, 0x86, 0x85, 0x82, 0x7e, 0x7a, 0x75, 0x70, 0x6f, 0x77, 0x85, -0x97, 0xa4, 0xa7, 0x97, 0x79, 0x5e, 0x52, 0x5e, 0x7a, 0x98, 0xa7, 0x9e, 0x81, 0x64, 0x59, 0x65, -0x81, 0x9b, 0xa0, 0x94, 0x7e, 0x6e, 0x6a, 0x6b, 0x70, 0x74, 0x77, 0x83, 0x94, 0xa6, 0xae, 0xa2, -0x86, 0x66, 0x54, 0x53, 0x62, 0x7c, 0x97, 0xa4, 0xa0, 0x90, 0x7b, 0x6c, 0x67, 0x6a, 0x71, 0x77, -0x7c, 0x85, 0x8c, 0x8d, 0x86, 0x7c, 0x72, 0x70, 0x77, 0x85, 0x92, 0x94, 0x8b, 0x7d, 0x6f, 0x6c, -0x70, 0x7a, 0x87, 0x8b, 0x8a, 0x84, 0x7a, 0x73, 0x71, 0x74, 0x7a, 0x84, 0x8e, 0x94, 0x91, 0x88, -0x78, 0x69, 0x65, 0x6b, 0x77, 0x85, 0x8e, 0x91, 0x8e, 0x89, 0x83, 0x7d, 0x77, 0x71, 0x70, 0x74, -0x7e, 0x89, 0x8d, 0x8a, 0x85, 0x81, 0x7b, 0x77, 0x7a, 0x80, 0x82, 0x7e, 0x7a, 0x79, 0x7b, 0x7d, -0x82, 0x88, 0x8c, 0x8d, 0x89, 0x80, 0x6f, 0x58, 0x43, 0x43, 0x6a, 0xad, 0xe6, 0xeb, 0xb4, 0x60, -0x24, 0x23, 0x50, 0x87, 0xad, 0xba, 0xb5, 0xa5, 0x8d, 0x6f, 0x55, 0x47, 0x4b, 0x5e, 0x7b, 0x9b, -0xae, 0xb1, 0xa2, 0x81, 0x5b, 0x44, 0x47, 0x69, 0x96, 0xb3, 0xb7, 0x9f, 0x82, 0x6e, 0x66, 0x66, -0x6e, 0x7c, 0x8d, 0x97, 0x99, 0x92, 0x81, 0x69, 0x59, 0x57, 0x64, 0x7b, 0x95, 0xa4, 0xa4, 0x96, -0x7e, 0x67, 0x5b, 0x5b, 0x6b, 0x83, 0x94, 0x9c, 0x9e, 0x9c, 0x8f, 0x7b, 0x6b, 0x64, 0x6b, 0x77, -0x89, 0x95, 0x95, 0x8a, 0x78, 0x6b, 0x68, 0x70, 0x7b, 0x86, 0x8d, 0x90, 0x8e, 0x8a, 0x84, 0x79, -0x70, 0x6d, 0x70, 0x7a, 0x87, 0x91, 0x94, 0x8e, 0x85, 0x79, 0x72, 0x70, 0x6f, 0x73, 0x79, 0x7e, -0x82, 0x87, 0x8d, 0x90, 0x8b, 0x81, 0x76, 0x71, 0x72, 0x7d, 0x8c, 0x93, 0x92, 0x89, 0x7e, 0x77, -0x77, 0x7c, 0x83, 0x85, 0x84, 0x81, 0x7d, 0x7d, 0x7b, 0x7c, 0x7d, 0x80, 0x83, 0x82, 0x82, 0x82, -0x81, 0x7d, 0x78, 0x74, 0x76, 0x7c, 0x87, 0x8f, 0x94, 0x92, 0x8a, 0x7b, 0x69, 0x5b, 0x53, 0x5c, -0x76, 0x9e, 0xc3, 0xce, 0xb1, 0x74, 0x37, 0x1b, 0x36, 0x7a, 0xbb, 0xdd, 0xc7, 0x8d, 0x5b, 0x48, -0x58, 0x72, 0x81, 0x7b, 0x75, 0x81, 0x9a, 0xaf, 0xab, 0x8a, 0x5f, 0x43, 0x44, 0x63, 0x8f, 0xab, -0xb1, 0xa2, 0x8a, 0x70, 0x60, 0x5f, 0x68, 0x77, 0x85, 0x8d, 0x90, 0x90, 0x8c, 0x84, 0x77, 0x6a, -0x64, 0x69, 0x79, 0x8d, 0x9a, 0x99, 0x8d, 0x7a, 0x6d, 0x69, 0x70, 0x7e, 0x8a, 0x8f, 0x8e, 0x8b, -0x88, 0x81, 0x78, 0x71, 0x71, 0x78, 0x84, 0x8f, 0x94, 0x91, 0x83, 0x70, 0x66, 0x69, 0x77, 0x88, -0x93, 0x96, 0x90, 0x84, 0x76, 0x6d, 0x6b, 0x70, 0x78, 0x84, 0x8f, 0x97, 0x99, 0x93, 0x83, 0x71, -0x62, 0x5b, 0x62, 0x71, 0x86, 0x94, 0x97, 0x93, 0x87, 0x78, 0x6f, 0x6c, 0x6f, 0x74, 0x7e, 0x87, -0x8b, 0x8c, 0x88, 0x84, 0x7e, 0x7e, 0x83, 0x84, 0x82, 0x78, 0x6e, 0x67, 0x6a, 0x7c, 0x96, 0xad, -0xb1, 0x9b, 0x74, 0x4d, 0x41, 0x59, 0x82, 0xa9, 0xb5, 0xa1, 0x80, 0x65, 0x62, 0x72, 0x87, 0x8c, -0x7c, 0x6d, 0x6c, 0x82, 0x9e, 0xad, 0xa1, 0x7b, 0x57, 0x49, 0x5b, 0x81, 0xa0, 0xa7, 0x9a, 0x82, -0x72, 0x73, 0x79, 0x81, 0x81, 0x79, 0x74, 0x76, 0x81, 0x8d, 0x91, 0x8b, 0x7c, 0x71, 0x6f, 0x79, -0x88, 0x90, 0x8e, 0x84, 0x77, 0x6f, 0x70, 0x7b, 0x87, 0x8e, 0x8b, 0x86, 0x83, 0x82, 0x81, 0x7c, -0x77, 0x73, 0x74, 0x7d, 0x89, 0x91, 0x93, 0x8a, 0x7a, 0x6e, 0x6b, 0x6f, 0x79, 0x83, 0x87, 0x85, -0x83, 0x82, 0x83, 0x83, 0x80, 0x7a, 0x75, 0x75, 0x7b, 0x84, 0x8a, 0x8c, 0x87, 0x80, 0x7a, 0x7a, -0x7e, 0x82, 0x83, 0x7d, 0x77, 0x76, 0x7a, 0x84, 0x8c, 0x8e, 0x8a, 0x81, 0x7a, 0x77, 0x78, 0x7a, -0x7b, 0x7c, 0x7b, 0x80, 0x85, 0x87, 0x88, 0x85, 0x80, 0x7b, 0x77, 0x74, 0x73, 0x74, 0x79, 0x7e, -0x86, 0x8f, 0x94, 0x90, 0x83, 0x73, 0x66, 0x66, 0x71, 0x80, 0x8d, 0x8e, 0x88, 0x80, 0x7b, 0x7c, -0x7e, 0x7e, 0x7b, 0x77, 0x75, 0x79, 0x82, 0x8a, 0x8e, 0x8c, 0x86, 0x7b, 0x74, 0x73, 0x77, 0x80, -0x85, 0x86, 0x85, 0x83, 0x82, 0x82, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x80, 0x7c, -0x79, 0x78, 0x79, 0x7c, 0x82, 0x86, 0x87, 0x83, 0x7d, 0x79, 0x77, 0x77, 0x79, 0x7c, 0x7e, 0x7e, -0x80, 0x82, 0x83, 0x83, 0x82, 0x80, 0x7a, 0x78, 0x78, 0x79, 0x7d, 0x83, 0x84, 0x84, 0x83, 0x81, -0x80, 0x7e, 0x7c, 0x7a, 0x7a, 0x7a, 0x81, 0x87, 0x8c, 0x8b, 0x85, 0x7e, 0x78, 0x75, 0x76, 0x7a, -0x7d, 0x81, 0x84, 0x86, 0x87, 0x86, 0x82, 0x7e, 0x79, 0x78, 0x78, 0x7a, 0x7b, 0x7c, 0x7e, 0x82, -0x85, 0x86, 0x87, 0x84, 0x7d, 0x77, 0x74, 0x76, 0x79, 0x7e, 0x84, 0x89, 0x8b, 0x89, 0x82, 0x7c, -0x7a, 0x79, 0x78, 0x79, 0x7d, 0x85, 0x8b, 0x8d, 0x8c, 0x86, 0x80, 0x7b, 0x75, 0x74, 0x75, 0x79, -0x80, 0x85, 0x8c, 0x8e, 0x89, 0x82, 0x77, 0x75, 0x77, 0x7d, 0x83, 0x82, 0x7d, 0x78, 0x76, 0x79, -0x81, 0x8a, 0x90, 0x8c, 0x80, 0x74, 0x71, 0x74, 0x7d, 0x84, 0x83, 0x80, 0x79, 0x7a, 0x80, 0x85, -0x89, 0x87, 0x80, 0x73, 0x70, 0x76, 0x80, 0x89, 0x8b, 0x85, 0x80, 0x7d, 0x7e, 0x82, 0x82, 0x7d, -0x78, 0x75, 0x78, 0x80, 0x86, 0x8c, 0x8e, 0x88, 0x7d, 0x74, 0x6f, 0x72, 0x78, 0x80, 0x85, 0x88, -0x87, 0x83, 0x80, 0x80, 0x7d, 0x7a, 0x77, 0x79, 0x7d, 0x81, 0x84, 0x84, 0x82, 0x7e, 0x7a, 0x77, -0x78, 0x7c, 0x81, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x7d, 0x7b, -0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x81, 0x82, 0x83, 0x81, 0x7d, 0x79, 0x77, 0x78, 0x7b, 0x7d, 0x80, -0x81, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7c, 0x77, 0x75, 0x77, 0x7a, 0x7c, 0x7e, 0x80, 0x84, 0x88, -0x88, 0x85, 0x7c, 0x77, 0x76, 0x79, 0x81, 0x89, 0x8a, 0x85, 0x7d, 0x77, 0x78, 0x80, 0x86, 0x8a, -0x87, 0x7d, 0x79, 0x7a, 0x82, 0x8a, 0x8a, 0x85, 0x7a, 0x72, 0x71, 0x76, 0x80, 0x86, 0x86, 0x82, -0x7a, 0x79, 0x80, 0x85, 0x88, 0x85, 0x7c, 0x76, 0x74, 0x77, 0x7e, 0x86, 0x89, 0x87, 0x80, 0x78, -0x77, 0x7b, 0x81, 0x82, 0x7d, 0x7b, 0x7c, 0x80, 0x83, 0x85, 0x82, 0x7b, 0x76, 0x75, 0x78, 0x80, -0x85, 0x87, 0x84, 0x80, 0x7c, 0x79, 0x7b, 0x7d, 0x82, 0x83, 0x80, 0x7c, 0x7b, 0x7e, 0x81, 0x80, -0x7e, 0x7d, 0x7d, 0x80, 0x83, 0x86, 0x86, 0x83, 0x7d, 0x7b, 0x78, 0x78, 0x7a, 0x7c, 0x83, 0x87, -0x8a, 0x8b, 0x87, 0x82, 0x7d, 0x7a, 0x79, 0x77, 0x77, 0x7b, 0x82, 0x87, 0x87, 0x84, 0x82, 0x7e, -0x7a, 0x78, 0x77, 0x77, 0x79, 0x7b, 0x80, 0x86, 0x8b, 0x8c, 0x88, 0x83, 0x7d, 0x79, 0x76, 0x72, -0x71, 0x75, 0x7b, 0x85, 0x8d, 0x90, 0x8c, 0x84, 0x7b, 0x77, 0x78, 0x7b, 0x7e, 0x80, 0x80, 0x7d, -0x7d, 0x81, 0x85, 0x88, 0x88, 0x86, 0x82, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7c, 0x7b, 0x7d, 0x82, -0x88, 0x8b, 0x89, 0x83, 0x7b, 0x76, 0x74, 0x75, 0x79, 0x80, 0x83, 0x84, 0x84, 0x85, 0x87, 0x85, -0x82, 0x7c, 0x78, 0x76, 0x77, 0x7a, 0x80, 0x85, 0x85, 0x82, 0x7e, 0x7c, 0x7c, 0x7e, 0x7d, 0x7b, -0x79, 0x78, 0x7a, 0x7e, 0x84, 0x88, 0x88, 0x85, 0x81, 0x7b, 0x78, 0x7a, 0x7c, 0x7e, 0x7e, 0x7e, -0x7d, 0x7c, 0x7c, 0x7e, 0x83, 0x86, 0x88, 0x8a, 0x87, 0x82, 0x7b, 0x77, 0x77, 0x77, 0x78, 0x7c, -0x84, 0x8a, 0x8e, 0x8e, 0x89, 0x81, 0x77, 0x72, 0x71, 0x74, 0x7b, 0x83, 0x89, 0x8a, 0x88, 0x83, -0x7d, 0x7b, 0x7a, 0x78, 0x76, 0x77, 0x7c, 0x82, 0x86, 0x87, 0x86, 0x83, 0x7d, 0x79, 0x78, 0x7a, -0x7e, 0x82, 0x84, 0x84, 0x86, 0x86, 0x84, 0x82, 0x7d, 0x7a, 0x77, 0x78, 0x7d, 0x84, 0x89, 0x89, -0x84, 0x7e, 0x7a, 0x79, 0x7c, 0x82, 0x85, 0x83, 0x7b, 0x77, 0x77, 0x7d, 0x83, 0x85, 0x86, 0x82, -0x80, 0x80, 0x81, 0x84, 0x83, 0x7e, 0x79, 0x74, 0x74, 0x7a, 0x84, 0x8a, 0x8b, 0x87, 0x7e, 0x79, -0x77, 0x7a, 0x7e, 0x81, 0x81, 0x7e, 0x7c, 0x7c, 0x82, 0x87, 0x87, 0x85, 0x80, 0x7a, 0x78, 0x79, -0x7d, 0x81, 0x81, 0x7d, 0x7b, 0x7b, 0x7e, 0x82, 0x84, 0x83, 0x82, 0x7e, 0x7b, 0x7b, 0x7d, 0x82, -0x84, 0x83, 0x7e, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x81, 0x80, 0x81, 0x80, 0x81, 0x82, 0x83, -0x81, 0x81, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7c, 0x7a, 0x79, 0x7d, 0x82, 0x84, 0x84, 0x82, 0x81, -0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x80, 0x82, 0x83, 0x82, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, -0x7e, 0x7e, 0x7c, 0x7b, 0x7a, 0x7b, 0x7e, 0x84, 0x88, 0x88, 0x84, 0x7c, 0x74, 0x6f, 0x70, 0x77, -0x80, 0x87, 0x88, 0x87, 0x83, 0x80, 0x7d, 0x7c, 0x7b, 0x79, 0x77, 0x78, 0x7d, 0x86, 0x8b, 0x8d, -0x8b, 0x83, 0x79, 0x72, 0x74, 0x78, 0x7d, 0x82, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x80, 0x7a, -0x76, 0x74, 0x76, 0x7d, 0x85, 0x8b, 0x8b, 0x88, 0x82, 0x7b, 0x78, 0x78, 0x79, 0x7c, 0x7e, 0x80, -0x81, 0x83, 0x83, 0x81, 0x7e, 0x7c, 0x79, 0x77, 0x79, 0x7d, 0x83, 0x86, 0x84, 0x80, 0x7d, 0x7b, -0x7b, 0x7e, 0x82, 0x82, 0x81, 0x7e, 0x7b, 0x7b, 0x7c, 0x7e, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x7b, 0x7a, 0x7a, 0x7c, 0x81, 0x84, -0x85, 0x85, 0x84, 0x80, 0x7c, 0x79, 0x77, 0x77, 0x7a, 0x7c, 0x80, 0x83, 0x83, 0x82, 0x7d, 0x7b, -0x7a, 0x79, 0x7a, 0x7c, 0x7e, 0x80, 0x7e, 0x7c, 0x7b, 0x7d, 0x80, 0x82, 0x80, 0x7c, 0x7c, 0x7c, -0x7e, 0x81, 0x84, 0x84, 0x82, 0x80, 0x7d, 0x7c, 0x7a, 0x77, 0x77, 0x7b, 0x83, 0x86, 0x85, 0x82, -0x7d, 0x7b, 0x7c, 0x7d, 0x7d, 0x7c, 0x79, 0x78, 0x7b, 0x80, 0x85, 0x87, 0x87, 0x84, 0x80, 0x7b, -0x78, 0x7a, 0x7e, 0x83, 0x85, 0x82, 0x80, 0x7e, 0x7e, 0x81, 0x84, 0x84, 0x81, 0x7e, 0x7b, 0x7b, -0x80, 0x84, 0x84, 0x83, 0x80, 0x7d, 0x7d, 0x7e, 0x82, 0x84, 0x84, 0x83, 0x7e, 0x7a, 0x79, 0x7a, -0x7d, 0x80, 0x82, 0x84, 0x84, 0x84, 0x82, 0x7e, 0x7a, 0x75, 0x72, 0x73, 0x78, 0x80, 0x86, 0x89, -0x86, 0x81, 0x7c, 0x7b, 0x7a, 0x7a, 0x7c, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7d, 0x7c, -0x7c, 0x7e, 0x81, 0x83, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7b, 0x7d, 0x80, 0x82, 0x83, 0x83, 0x83, -0x82, 0x81, 0x80, 0x7c, 0x7a, 0x7a, 0x7b, 0x7e, 0x81, 0x83, 0x83, 0x82, 0x82, 0x82, 0x81, 0x7c, -0x76, 0x71, 0x72, 0x78, 0x81, 0x87, 0x88, 0x86, 0x80, 0x78, 0x74, 0x76, 0x7c, 0x81, 0x83, 0x83, -0x81, 0x7e, 0x7d, 0x7c, 0x7d, 0x7b, 0x7a, 0x7c, 0x80, 0x86, 0x8c, 0x90, 0x8e, 0x85, 0x7a, 0x72, -0x6f, 0x71, 0x77, 0x80, 0x89, 0x8d, 0x8e, 0x8e, 0x8b, 0x85, 0x78, 0x68, 0x67, 0x75, 0x95, 0xae, -0xaa, 0x8c, 0x5f, 0x3f, 0x41, 0x66, 0x95, 0xb2, 0xb9, 0xad, 0x99, 0x87, 0x78, 0x6c, 0x5e, 0x53, -0x51, 0x60, 0x79, 0x92, 0xa0, 0x9e, 0x92, 0x86, 0x7b, 0x79, 0x7a, 0x79, 0x75, 0x6c, 0x65, 0x67, -0x73, 0x88, 0x9d, 0xa8, 0xa6, 0x97, 0x7b, 0x63, 0x53, 0x54, 0x63, 0x7b, 0x93, 0xa3, 0xa7, 0x9d, -0x8a, 0x75, 0x64, 0x5e, 0x63, 0x73, 0x88, 0x98, 0x9f, 0x9a, 0x8f, 0x80, 0x70, 0x64, 0x60, 0x66, -0x72, 0x87, 0x97, 0x9d, 0x9a, 0x8a, 0x78, 0x6c, 0x69, 0x71, 0x7d, 0x86, 0x88, 0x84, 0x7e, 0x7b, -0x7c, 0x7d, 0x7c, 0x7b, 0x7a, 0x7b, 0x7d, 0x80, 0x82, 0x84, 0x84, 0x82, 0x7e, 0x7b, 0x79, 0x7a, -0x7a, 0x79, 0x79, 0x7a, 0x7c, 0x80, 0x87, 0x90, 0x93, 0x8d, 0x81, 0x71, 0x6c, 0x6f, 0x79, 0x88, -0x91, 0x92, 0x8c, 0x83, 0x7d, 0x7c, 0x7d, 0x7b, 0x77, 0x75, 0x76, 0x7b, 0x84, 0x89, 0x89, 0x84, -0x7b, 0x75, 0x74, 0x77, 0x80, 0x87, 0x8a, 0x89, 0x82, 0x7a, 0x76, 0x74, 0x76, 0x7b, 0x80, 0x82, -0x80, 0x7e, 0x83, 0x89, 0x89, 0x85, 0x7c, 0x71, 0x6b, 0x6f, 0x7a, 0x87, 0x8c, 0x8a, 0x84, 0x7e, -0x7a, 0x78, 0x78, 0x78, 0x7b, 0x81, 0x85, 0x86, 0x86, 0x83, 0x80, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, -0x7c, 0x7c, 0x7c, 0x7d, 0x80, 0x85, 0x87, 0x86, 0x7e, 0x72, 0x6d, 0x73, 0x7e, 0x8a, 0x8b, 0x88, -0x84, 0x84, 0x8a, 0x8a, 0x7e, 0x6f, 0x61, 0x60, 0x6f, 0x86, 0x96, 0x95, 0x87, 0x79, 0x73, 0x7b, -0x8a, 0x91, 0x8b, 0x7d, 0x72, 0x72, 0x78, 0x7b, 0x71, 0x5a, 0x47, 0x4a, 0x6e, 0xa4, 0xd5, 0xe1, -0xbd, 0x7e, 0x42, 0x25, 0x2e, 0x53, 0x7d, 0x9d, 0xab, 0xaf, 0xb0, 0xaa, 0x9a, 0x82, 0x62, 0x47, -0x42, 0x55, 0x7c, 0xa6, 0xc0, 0xc6, 0xb4, 0x8c, 0x5e, 0x3d, 0x32, 0x3e, 0x5d, 0x87, 0xad, 0xc1, -0xbc, 0xa5, 0x86, 0x67, 0x51, 0x48, 0x4e, 0x62, 0x80, 0x9a, 0xb0, 0xb7, 0xaa, 0x8f, 0x6d, 0x53, -0x4a, 0x50, 0x63, 0x81, 0x99, 0xa8, 0xab, 0xa1, 0x8d, 0x74, 0x5f, 0x54, 0x56, 0x63, 0x77, 0x8b, -0x9a, 0xa1, 0x9e, 0x96, 0x8b, 0x7e, 0x74, 0x68, 0x5f, 0x60, 0x69, 0x7d, 0x94, 0xa3, 0xa7, 0x97, -0x7c, 0x63, 0x55, 0x59, 0x6c, 0x8c, 0xa8, 0xb3, 0xac, 0x96, 0x76, 0x5e, 0x58, 0x61, 0x72, 0x81, -0x89, 0x8b, 0x8b, 0x88, 0x83, 0x7a, 0x72, 0x70, 0x76, 0x7d, 0x81, 0x81, 0x80, 0x81, 0x87, 0x8d, -0x8c, 0x83, 0x75, 0x6c, 0x6b, 0x74, 0x84, 0x92, 0x97, 0x8f, 0x83, 0x79, 0x74, 0x75, 0x79, 0x80, -0x84, 0x85, 0x88, 0x89, 0x88, 0x85, 0x81, 0x7a, 0x74, 0x6c, 0x65, 0x63, 0x6e, 0x89, 0xa5, 0xb7, -0xb1, 0x90, 0x66, 0x47, 0x41, 0x5a, 0x81, 0xa1, 0xab, 0xa0, 0x91, 0x84, 0x7c, 0x7a, 0x74, 0x6b, -0x65, 0x66, 0x72, 0x86, 0x96, 0x9d, 0x9b, 0x92, 0x85, 0x72, 0x64, 0x5d, 0x60, 0x6f, 0x86, 0x99, -0x9f, 0x97, 0x87, 0x76, 0x6e, 0x6e, 0x73, 0x78, 0x7d, 0x7e, 0x82, 0x86, 0x8a, 0x8b, 0x88, 0x81, -0x7a, 0x78, 0x79, 0x7c, 0x80, 0x84, 0x87, 0x88, 0x86, 0x82, 0x7b, 0x76, 0x76, 0x79, 0x81, 0x88, -0x8a, 0x86, 0x80, 0x79, 0x76, 0x76, 0x77, 0x7b, 0x81, 0x84, 0x88, 0x89, 0x87, 0x82, 0x7c, 0x77, -0x77, 0x7a, 0x7e, 0x82, 0x86, 0x86, 0x86, 0x86, 0x85, 0x80, 0x78, 0x73, 0x74, 0x7b, 0x85, 0x89, -0x8a, 0x87, 0x82, 0x81, 0x83, 0x88, 0x89, 0x81, 0x6d, 0x54, 0x3f, 0x42, 0x65, 0x9d, 0xd1, 0xec, -0xda, 0xa0, 0x55, 0x20, 0x13, 0x32, 0x6a, 0xa0, 0xc8, 0xd6, 0xc6, 0xa8, 0x82, 0x60, 0x4b, 0x46, -0x55, 0x6a, 0x81, 0x93, 0xa1, 0xa9, 0xa9, 0x9f, 0x8b, 0x6c, 0x4e, 0x3b, 0x3f, 0x5e, 0x87, 0xaa, -0xbd, 0xb9, 0xa2, 0x80, 0x5e, 0x4b, 0x49, 0x57, 0x72, 0x92, 0xa8, 0xaf, 0xa7, 0x94, 0x7e, 0x6c, -0x62, 0x62, 0x68, 0x73, 0x80, 0x8e, 0x9c, 0xa3, 0x9e, 0x8f, 0x79, 0x65, 0x5b, 0x5b, 0x65, 0x77, -0x88, 0x95, 0x9c, 0x9a, 0x90, 0x80, 0x71, 0x6b, 0x6d, 0x76, 0x80, 0x85, 0x82, 0x7b, 0x78, 0x7a, -0x83, 0x89, 0x89, 0x85, 0x82, 0x81, 0x83, 0x87, 0x89, 0x87, 0x82, 0x7c, 0x78, 0x76, 0x74, 0x73, -0x72, 0x76, 0x7d, 0x86, 0x8a, 0x89, 0x82, 0x7a, 0x76, 0x74, 0x75, 0x79, 0x81, 0x89, 0x8b, 0x8a, -0x85, 0x7c, 0x76, 0x74, 0x79, 0x82, 0x89, 0x8b, 0x89, 0x85, 0x81, 0x7e, 0x7c, 0x7d, 0x7d, 0x7d, -0x80, 0x81, 0x82, 0x81, 0x7d, 0x7b, 0x7d, 0x81, 0x84, 0x87, 0x87, 0x82, 0x74, 0x68, 0x5f, 0x5f, -0x6e, 0x8a, 0xa6, 0xb9, 0xb1, 0x92, 0x67, 0x46, 0x40, 0x57, 0x7b, 0x9d, 0xb0, 0xb2, 0xa3, 0x8c, -0x74, 0x60, 0x57, 0x5b, 0x6d, 0x88, 0x9e, 0xa4, 0x98, 0x86, 0x77, 0x6f, 0x70, 0x76, 0x78, 0x77, -0x77, 0x7a, 0x83, 0x8a, 0x8d, 0x8c, 0x86, 0x7e, 0x78, 0x71, 0x6c, 0x6d, 0x73, 0x7e, 0x8e, 0x99, -0x98, 0x8e, 0x80, 0x73, 0x6c, 0x6e, 0x76, 0x80, 0x88, 0x8d, 0x8f, 0x8b, 0x84, 0x78, 0x70, 0x6f, -0x76, 0x80, 0x89, 0x8d, 0x8b, 0x86, 0x81, 0x7c, 0x7a, 0x76, 0x75, 0x77, 0x7b, 0x82, 0x88, 0x8a, -0x88, 0x84, 0x80, 0x7c, 0x78, 0x77, 0x78, 0x7c, 0x84, 0x8c, 0x91, 0x8e, 0x86, 0x7a, 0x71, 0x6d, -0x72, 0x7a, 0x84, 0x8d, 0x93, 0x93, 0x8e, 0x83, 0x70, 0x58, 0x42, 0x3d, 0x51, 0x7b, 0xae, 0xd1, -0xdd, 0xc6, 0x92, 0x5a, 0x2e, 0x1d, 0x2a, 0x56, 0x94, 0xcb, 0xeb, 0xe7, 0xc1, 0x83, 0x48, 0x24, -0x23, 0x40, 0x6f, 0x9d, 0xbc, 0xc7, 0xbb, 0x9e, 0x7a, 0x5b, 0x47, 0x45, 0x55, 0x6d, 0x84, 0x96, -0x9f, 0xa1, 0x9c, 0x92, 0x84, 0x71, 0x5f, 0x56, 0x5a, 0x66, 0x7b, 0x92, 0xa2, 0xad, 0xa9, 0x98, -0x80, 0x66, 0x57, 0x53, 0x5e, 0x76, 0x93, 0xa7, 0xad, 0xa5, 0x91, 0x77, 0x61, 0x55, 0x56, 0x64, -0x7a, 0x90, 0x9f, 0xa0, 0x95, 0x86, 0x78, 0x70, 0x6f, 0x71, 0x75, 0x79, 0x7c, 0x80, 0x82, 0x83, -0x86, 0x8a, 0x8d, 0x8d, 0x88, 0x7d, 0x74, 0x6e, 0x6f, 0x7a, 0x8d, 0x9a, 0x9e, 0x97, 0x87, 0x72, -0x5f, 0x58, 0x5e, 0x70, 0x88, 0x9c, 0xa8, 0xa2, 0x8c, 0x6f, 0x5a, 0x55, 0x5f, 0x74, 0x8d, 0xa2, -0xa8, 0x9d, 0x88, 0x70, 0x60, 0x5c, 0x65, 0x7a, 0x90, 0x9e, 0xa2, 0x99, 0x8a, 0x7a, 0x6e, 0x69, -0x6f, 0x79, 0x84, 0x8c, 0x8d, 0x89, 0x83, 0x7d, 0x7c, 0x7c, 0x80, 0x81, 0x80, 0x79, 0x6f, 0x67, -0x65, 0x6c, 0x7e, 0x94, 0xa5, 0xa9, 0x9b, 0x81, 0x64, 0x50, 0x4e, 0x61, 0x80, 0x9f, 0xb2, 0xb2, -0xa5, 0x8d, 0x6e, 0x56, 0x4e, 0x56, 0x6e, 0x8e, 0xa7, 0xb0, 0xa7, 0x92, 0x78, 0x65, 0x5b, 0x5d, -0x69, 0x78, 0x89, 0x95, 0x9a, 0x93, 0x86, 0x77, 0x70, 0x6f, 0x73, 0x78, 0x7b, 0x7d, 0x7e, 0x81, -0x84, 0x86, 0x88, 0x89, 0x87, 0x84, 0x7d, 0x76, 0x72, 0x72, 0x77, 0x7e, 0x8a, 0x90, 0x90, 0x8b, -0x80, 0x76, 0x71, 0x6e, 0x72, 0x7a, 0x85, 0x8e, 0x90, 0x8c, 0x83, 0x76, 0x6e, 0x6c, 0x71, 0x79, -0x84, 0x8c, 0x90, 0x8e, 0x88, 0x7e, 0x76, 0x71, 0x72, 0x78, 0x81, 0x87, 0x88, 0x87, 0x83, 0x80, -0x7e, 0x7c, 0x7c, 0x7c, 0x7d, 0x81, 0x86, 0x87, 0x7e, 0x6e, 0x5d, 0x54, 0x5a, 0x71, 0x92, 0xb0, -0xc0, 0xba, 0xa0, 0x7c, 0x56, 0x3b, 0x37, 0x48, 0x72, 0xa5, 0xcd, 0xdd, 0xcd, 0xa2, 0x6d, 0x40, -0x29, 0x2e, 0x4c, 0x7c, 0xab, 0xcc, 0xd3, 0xbc, 0x93, 0x63, 0x41, 0x35, 0x3e, 0x5c, 0x81, 0xa0, -0xb3, 0xb5, 0xa7, 0x8d, 0x72, 0x5f, 0x56, 0x5c, 0x6a, 0x7b, 0x8b, 0x94, 0x98, 0x97, 0x91, 0x88, -0x7e, 0x75, 0x6f, 0x6e, 0x73, 0x78, 0x80, 0x88, 0x90, 0x96, 0x96, 0x8e, 0x82, 0x73, 0x67, 0x62, -0x65, 0x71, 0x80, 0x8d, 0x9a, 0x9e, 0x97, 0x8a, 0x76, 0x67, 0x5f, 0x60, 0x6b, 0x7a, 0x89, 0x93, -0x98, 0x95, 0x8e, 0x83, 0x78, 0x71, 0x6d, 0x6d, 0x73, 0x7c, 0x87, 0x90, 0x97, 0x99, 0x93, 0x88, -0x77, 0x69, 0x62, 0x61, 0x6a, 0x77, 0x86, 0x92, 0x97, 0x94, 0x8a, 0x7a, 0x6e, 0x69, 0x6b, 0x74, -0x80, 0x89, 0x8e, 0x8d, 0x8a, 0x83, 0x7b, 0x78, 0x76, 0x79, 0x7e, 0x83, 0x87, 0x88, 0x85, 0x82, -0x7e, 0x7e, 0x82, 0x83, 0x83, 0x83, 0x82, 0x7e, 0x7a, 0x76, 0x73, 0x73, 0x75, 0x7c, 0x85, 0x8e, -0x94, 0x92, 0x87, 0x77, 0x69, 0x63, 0x66, 0x71, 0x82, 0x92, 0x9c, 0x9b, 0x92, 0x85, 0x73, 0x66, -0x62, 0x68, 0x78, 0x8a, 0x96, 0x9c, 0x98, 0x8c, 0x7d, 0x6e, 0x66, 0x67, 0x6f, 0x7c, 0x8b, 0x94, -0x95, 0x90, 0x85, 0x78, 0x70, 0x6d, 0x70, 0x76, 0x7d, 0x83, 0x86, 0x86, 0x85, 0x84, 0x83, 0x82, -0x82, 0x81, 0x7e, 0x7c, 0x79, 0x78, 0x79, 0x79, 0x7c, 0x81, 0x85, 0x88, 0x88, 0x86, 0x82, 0x7c, -0x78, 0x76, 0x77, 0x7a, 0x80, 0x83, 0x84, 0x84, 0x82, 0x80, 0x7d, 0x7c, 0x7b, 0x7d, 0x7e, 0x80, -0x81, 0x7e, 0x7c, 0x7a, 0x7b, 0x7d, 0x81, 0x85, 0x86, 0x85, 0x82, 0x7c, 0x78, 0x77, 0x7a, 0x82, -0x8a, 0x8e, 0x89, 0x79, 0x65, 0x54, 0x4e, 0x5c, 0x78, 0x9d, 0xbd, 0xcb, 0xc2, 0xa1, 0x74, 0x46, -0x24, 0x23, 0x3f, 0x74, 0xb2, 0xde, 0xf0, 0xdc, 0xa9, 0x6c, 0x35, 0x13, 0x10, 0x35, 0x70, 0xac, -0xdc, 0xee, 0xd7, 0xa6, 0x6b, 0x39, 0x1b, 0x1d, 0x3c, 0x6e, 0xa5, 0xca, 0xd6, 0xc8, 0xa3, 0x74, -0x51, 0x3b, 0x3b, 0x51, 0x72, 0x94, 0xad, 0xb8, 0xad, 0x96, 0x7c, 0x65, 0x5c, 0x5e, 0x68, 0x78, -0x88, 0x94, 0x9a, 0x97, 0x8d, 0x80, 0x74, 0x6e, 0x6d, 0x6d, 0x6f, 0x70, 0x72, 0x79, 0x84, 0x8c, -0x93, 0x94, 0x90, 0x86, 0x77, 0x69, 0x5d, 0x5a, 0x5f, 0x70, 0x87, 0x9c, 0xa9, 0xaa, 0x9e, 0x8b, -0x73, 0x5e, 0x55, 0x58, 0x68, 0x83, 0x9c, 0xad, 0xb0, 0xa1, 0x89, 0x6d, 0x57, 0x4c, 0x52, 0x65, -0x81, 0x9b, 0xac, 0xae, 0x9f, 0x87, 0x6c, 0x58, 0x51, 0x59, 0x6b, 0x83, 0x9a, 0xa7, 0xa7, 0x9c, -0x87, 0x70, 0x60, 0x59, 0x5b, 0x64, 0x74, 0x88, 0x9b, 0xaa, 0xaf, 0xa7, 0x94, 0x7b, 0x65, 0x56, -0x4f, 0x55, 0x69, 0x86, 0xa3, 0xb8, 0xbc, 0xaf, 0x93, 0x73, 0x56, 0x44, 0x43, 0x52, 0x6e, 0x92, -0xaf, 0xbd, 0xb8, 0xa2, 0x82, 0x61, 0x4b, 0x43, 0x4d, 0x65, 0x83, 0xa0, 0xb3, 0xb4, 0xa6, 0x8c, -0x6f, 0x5a, 0x52, 0x57, 0x65, 0x7c, 0x95, 0xa6, 0xac, 0xa4, 0x91, 0x79, 0x66, 0x5c, 0x5f, 0x6b, -0x7a, 0x8b, 0x98, 0x9c, 0x99, 0x8e, 0x7e, 0x72, 0x6a, 0x6a, 0x6f, 0x77, 0x7e, 0x86, 0x8b, 0x8c, -0x8a, 0x85, 0x7e, 0x79, 0x76, 0x75, 0x76, 0x78, 0x7b, 0x82, 0x87, 0x8a, 0x8b, 0x88, 0x84, 0x7e, -0x79, 0x74, 0x71, 0x72, 0x77, 0x81, 0x8a, 0x8f, 0x90, 0x8b, 0x82, 0x78, 0x72, 0x71, 0x74, 0x7b, -0x84, 0x88, 0x85, 0x79, 0x69, 0x5c, 0x5a, 0x66, 0x80, 0x9d, 0xb4, 0xbf, 0xb5, 0x9b, 0x75, 0x4d, -0x33, 0x2f, 0x47, 0x75, 0xa8, 0xd4, 0xe7, 0xdb, 0xb7, 0x7e, 0x44, 0x1e, 0x14, 0x29, 0x5d, 0x9b, -0xd2, 0xed, 0xe5, 0xc0, 0x87, 0x4b, 0x20, 0x10, 0x22, 0x4f, 0x88, 0xbc, 0xdb, 0xdc, 0xc0, 0x90, -0x5e, 0x39, 0x26, 0x33, 0x53, 0x7e, 0xac, 0xc7, 0xcc, 0xbb, 0x99, 0x74, 0x56, 0x47, 0x49, 0x5b, -0x76, 0x93, 0xa8, 0xaf, 0xa8, 0x96, 0x81, 0x6c, 0x5f, 0x5b, 0x5f, 0x6b, 0x7b, 0x8c, 0x97, 0x9a, -0x97, 0x8f, 0x85, 0x78, 0x6e, 0x66, 0x64, 0x67, 0x70, 0x7d, 0x8c, 0x96, 0x9b, 0x99, 0x91, 0x83, -0x73, 0x66, 0x5e, 0x61, 0x6e, 0x83, 0x96, 0xa5, 0xa8, 0xa0, 0x8e, 0x76, 0x60, 0x51, 0x51, 0x5e, -0x75, 0x93, 0xaa, 0xb1, 0xa8, 0x94, 0x74, 0x58, 0x48, 0x49, 0x5c, 0x7c, 0x9d, 0xb5, 0xba, 0xa8, -0x86, 0x5d, 0x42, 0x38, 0x47, 0x6b, 0x9a, 0xc3, 0xd8, 0xcf, 0xad, 0x78, 0x47, 0x28, 0x22, 0x3d, -0x6b, 0xa4, 0xd3, 0xe6, 0xda, 0xb5, 0x7b, 0x43, 0x1e, 0x17, 0x30, 0x61, 0x99, 0xc9, 0xe0, 0xd9, -0xb8, 0x85, 0x4d, 0x29, 0x20, 0x34, 0x5e, 0x8f, 0xba, 0xd1, 0xd0, 0xb6, 0x8c, 0x61, 0x40, 0x35, -0x41, 0x5f, 0x85, 0xa5, 0xba, 0xbb, 0xa9, 0x8c, 0x6f, 0x58, 0x4e, 0x53, 0x65, 0x7e, 0x97, 0xa2, -0xa4, 0x9a, 0x88, 0x77, 0x68, 0x63, 0x68, 0x72, 0x81, 0x8c, 0x90, 0x8e, 0x86, 0x7b, 0x75, 0x73, -0x75, 0x7b, 0x84, 0x89, 0x8a, 0x86, 0x7d, 0x74, 0x6f, 0x6f, 0x76, 0x82, 0x8e, 0x97, 0x9a, 0x94, -0x89, 0x7a, 0x6e, 0x66, 0x66, 0x6f, 0x7e, 0x8d, 0x99, 0x9d, 0x99, 0x8e, 0x81, 0x70, 0x60, 0x53, -0x4d, 0x53, 0x64, 0x7e, 0x9b, 0xb2, 0xbe, 0xba, 0xa7, 0x89, 0x63, 0x42, 0x2f, 0x34, 0x50, 0x78, -0xa8, 0xcf, 0xe0, 0xdb, 0xbb, 0x8c, 0x56, 0x2c, 0x1a, 0x22, 0x46, 0x79, 0xac, 0xd2, 0xe4, 0xd7, -0xb2, 0x80, 0x4c, 0x28, 0x1a, 0x27, 0x4b, 0x7b, 0xab, 0xcb, 0xd5, 0xc5, 0xa3, 0x78, 0x50, 0x36, -0x30, 0x41, 0x60, 0x87, 0xa7, 0xbc, 0xbf, 0xb0, 0x95, 0x76, 0x5d, 0x51, 0x51, 0x5e, 0x72, 0x86, -0x97, 0xa0, 0xa0, 0x98, 0x8a, 0x7b, 0x6f, 0x66, 0x65, 0x69, 0x71, 0x7b, 0x85, 0x8e, 0x93, 0x93, -0x90, 0x89, 0x80, 0x76, 0x6f, 0x6b, 0x6b, 0x6f, 0x76, 0x81, 0x8a, 0x91, 0x95, 0x94, 0x8e, 0x85, -0x7a, 0x71, 0x6d, 0x6e, 0x72, 0x79, 0x81, 0x86, 0x88, 0x87, 0x83, 0x7e, 0x7b, 0x78, 0x79, 0x7b, -0x7e, 0x81, 0x82, 0x81, 0x80, 0x7d, 0x7b, 0x7b, 0x7c, 0x80, 0x83, 0x83, 0x81, 0x7a, 0x74, 0x70, -0x72, 0x78, 0x82, 0x8c, 0x94, 0x99, 0x97, 0x8e, 0x7e, 0x6f, 0x62, 0x5e, 0x64, 0x72, 0x87, 0x98, -0xa4, 0xa7, 0x9e, 0x8d, 0x77, 0x63, 0x56, 0x55, 0x5f, 0x72, 0x87, 0x9a, 0xa7, 0xa8, 0x9f, 0x8d, -0x76, 0x62, 0x57, 0x58, 0x62, 0x72, 0x88, 0x97, 0xa0, 0xa0, 0x97, 0x88, 0x78, 0x6b, 0x64, 0x64, -0x6b, 0x75, 0x83, 0x8c, 0x92, 0x95, 0x91, 0x8a, 0x82, 0x79, 0x74, 0x72, 0x73, 0x75, 0x7a, 0x7d, -0x83, 0x86, 0x87, 0x88, 0x89, 0x89, 0x89, 0x88, 0x84, 0x7d, 0x77, 0x72, 0x70, 0x71, 0x77, 0x80, -0x8a, 0x91, 0x96, 0x95, 0x8d, 0x82, 0x76, 0x6c, 0x66, 0x67, 0x70, 0x7c, 0x8a, 0x96, 0x9b, 0x99, -0x90, 0x84, 0x75, 0x69, 0x64, 0x65, 0x6d, 0x7b, 0x8c, 0x98, 0x9b, 0x93, 0x80, 0x67, 0x52, 0x47, -0x4b, 0x61, 0x82, 0xa5, 0xc2, 0xcb, 0xc1, 0xa4, 0x7b, 0x51, 0x35, 0x2e, 0x3b, 0x5b, 0x87, 0xb1, -0xd1, 0xdc, 0xcf, 0xae, 0x84, 0x5a, 0x3b, 0x2f, 0x36, 0x50, 0x75, 0x9a, 0xb8, 0xc5, 0xbe, 0xa9, -0x8b, 0x6b, 0x54, 0x48, 0x49, 0x57, 0x6b, 0x83, 0x95, 0x9d, 0x9c, 0x96, 0x8b, 0x80, 0x78, 0x74, -0x72, 0x74, 0x76, 0x79, 0x7a, 0x7a, 0x7b, 0x7d, 0x82, 0x88, 0x8e, 0x92, 0x93, 0x91, 0x8b, 0x81, -0x73, 0x67, 0x5f, 0x5f, 0x68, 0x79, 0x8d, 0x9e, 0xa9, 0xaa, 0x9f, 0x8a, 0x72, 0x5d, 0x52, 0x52, -0x5e, 0x71, 0x84, 0x94, 0x9e, 0xa0, 0x9b, 0x8e, 0x7e, 0x71, 0x6b, 0x6d, 0x74, 0x7e, 0x89, 0x91, -0x93, 0x8f, 0x84, 0x75, 0x68, 0x64, 0x68, 0x72, 0x80, 0x8d, 0x94, 0x94, 0x8e, 0x82, 0x73, 0x68, -0x63, 0x68, 0x72, 0x80, 0x8d, 0x95, 0x98, 0x95, 0x8d, 0x80, 0x6f, 0x60, 0x58, 0x59, 0x62, 0x71, -0x85, 0x96, 0xa2, 0xaa, 0xa9, 0xa0, 0x90, 0x7d, 0x6c, 0x5f, 0x5b, 0x5f, 0x6a, 0x78, 0x88, 0x95, -0x9e, 0x9f, 0x9a, 0x91, 0x84, 0x79, 0x71, 0x6d, 0x6d, 0x71, 0x76, 0x7a, 0x7c, 0x7d, 0x7d, 0x7e, -0x83, 0x87, 0x89, 0x8a, 0x88, 0x84, 0x7e, 0x79, 0x73, 0x6e, 0x6e, 0x71, 0x77, 0x7d, 0x84, 0x89, -0x8d, 0x8d, 0x8b, 0x86, 0x81, 0x7c, 0x7a, 0x7a, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x82, -0x84, 0x82, 0x80, 0x7b, 0x77, 0x75, 0x74, 0x77, 0x80, 0x8a, 0x93, 0x98, 0x95, 0x8d, 0x81, 0x73, -0x68, 0x63, 0x64, 0x6b, 0x78, 0x87, 0x92, 0x97, 0x95, 0x90, 0x87, 0x7d, 0x76, 0x72, 0x74, 0x79, -0x80, 0x85, 0x87, 0x86, 0x84, 0x81, 0x7b, 0x7a, 0x7b, 0x80, 0x84, 0x85, 0x7e, 0x72, 0x66, 0x5f, -0x5e, 0x67, 0x76, 0x88, 0x99, 0xa5, 0xa9, 0xa3, 0x94, 0x81, 0x6f, 0x63, 0x5f, 0x62, 0x6b, 0x76, -0x82, 0x8a, 0x8d, 0x8b, 0x88, 0x82, 0x7d, 0x7c, 0x7e, 0x82, 0x86, 0x89, 0x89, 0x84, 0x7d, 0x76, -0x71, 0x6f, 0x70, 0x75, 0x7b, 0x83, 0x88, 0x8b, 0x8b, 0x88, 0x83, 0x7d, 0x79, 0x76, 0x75, 0x77, -0x7a, 0x7d, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x80, 0x7e, 0x7c, 0x7a, 0x79, 0x7a, 0x7b, 0x7d, -0x80, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7c, 0x79, 0x78, 0x78, 0x7b, 0x7e, 0x83, 0x86, 0x86, 0x85, -0x82, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, 0x81, 0x83, 0x85, 0x85, 0x85, 0x83, 0x81, 0x7d, 0x7c, -0x7c, 0x7c, 0x7d, 0x7e, 0x81, 0x83, 0x83, 0x83, 0x82, 0x81, 0x7f, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, -0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7a, 0x79, 0x79, -0x7a, 0x7c, 0x80, 0x82, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7e, 0x80, 0x80, 0x80, -0x7e, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x82, 0x83, 0x82, 0x80, 0x80, 0x80, 0x80, -0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x82, 0x82, 0x81, 0x7e, -0x7d, 0x7c, 0x7d, 0x7e, 0x81, 0x83, 0x83, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x7b, 0x7c, 0x7e, -0x81, 0x84, 0x85, 0x85, 0x84, 0x82, 0x7e, 0x7c, 0x7a, 0x7a, 0x7b, 0x7e, 0x82, 0x85, 0x86, 0x84, -0x81, 0x7c, 0x79, 0x79, 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7e, 0x81, -0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7b, 0x7c, 0x7d, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7c, 0x7b, 0x7b, -0x7b, 0x7c, 0x80, 0x83, 0x84, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, -0x81, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x82, 0x82, 0x82, 0x81, 0x7e, -0x7c, 0x7b, 0x7b, 0x7b, 0x7d, 0x7e, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x7c, 0x7e, -0x80, 0x82, 0x84, 0x85, 0x84, 0x83, 0x82, 0x7e, 0x7c, 0x7b, 0x7c, 0x7e, 0x81, 0x83, 0x84, 0x84, -0x83, 0x80, 0x7d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7e, 0x82, 0x84, 0x84, 0x84, 0x82, 0x7e, 0x7c, 0x7a, -0x7a, 0x7a, 0x7b, 0x7e, 0x82, 0x84, 0x85, 0x85, 0x83, 0x82, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, -0x7e, 0x80, 0x82, 0x84, 0x85, 0x84, 0x83, 0x81, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x80, 0x84, 0x86, -0x85, 0x83, 0x7e, 0x7c, 0x7b, 0x7a, 0x7a, 0x7d, 0x81, 0x84, 0x86, 0x88, 0x87, 0x83, 0x7e, 0x79, -0x77, 0x77, 0x7a, 0x7e, 0x82, 0x84, 0x85, 0x85, 0x83, 0x80, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x80, -0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, -0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, -0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x82, 0x83, 0x84, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x7a, -0x7a, 0x7b, 0x7d, 0x81, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x7a, 0x7b, 0x80, 0x83, 0x84, 0x85, -0x84, 0x81, 0x7d, 0x7b, 0x7a, 0x7b, 0x7e, 0x82, 0x85, 0x85, 0x83, 0x80, 0x7b, 0x78, 0x77, 0x78, -0x7c, 0x80, 0x84, 0x86, 0x85, 0x84, 0x80, 0x7c, 0x7a, 0x7b, 0x7c, 0x7e, 0x82, 0x82, 0x83, 0x83, -0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7d, 0x80, -0x81, 0x83, 0x84, 0x83, 0x81, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x83, 0x83, 0x81, -0x7d, 0x7b, 0x7b, 0x7b, 0x7c, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, -0x80, 0x82, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x81, 0x82, 0x82, 0x82, 0x82, -0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x80, 0x7d, -0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x80, 0x82, 0x82, 0x83, 0x82, 0x7f, 0x7c, 0x7a, 0x78, 0x79, 0x7b, -0x7d, 0x80, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7d, 0x7b, 0x79, 0x78, 0x79, 0x7b, 0x7e, 0x82, 0x84, -0x84, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7c, 0x7e, 0x81, 0x83, 0x84, 0x84, 0x84, 0x82, 0x7e, 0x7d, -0x7c, 0x7c, 0x7d, 0x80, 0x83, 0x84, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, -0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7c, -0x7b, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, -0x7d, 0x80, 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7b, 0x7a, 0x79, 0x79, 0x7b, 0x7d, 0x80, 0x81, 0x82, -0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, -0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, -0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x80, -0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x80, 0x7d, 0x7c, 0x7b, 0x7a, 0x7b, 0x7d, 0x7e, 0x80, -0x82, 0x83, 0x85, 0x85, 0x83, 0x80, 0x7c, 0x7a, 0x7a, 0x7b, 0x7c, 0x7e, 0x81, 0x83, 0x84, 0x84, -0x83, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, -0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x83, 0x83, 0x83, 0x82, 0x7e, 0x7c, 0x7a, 0x79, 0x7b, -0x7d, 0x82, 0x84, 0x84, 0x82, 0x7e, 0x7b, 0x7a, 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x84, 0x84, 0x82, -0x80, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x83, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, -0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7e, 0x80, 0x82, 0x83, 0x83, 0x82, 0x81, 0x80, 0x80, 0x7e, -0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, -0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, -0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x7e, -0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x85, 0x88, 0x86, 0x82, 0x7c, 0x78, -0x77, 0x7a, 0x7d, 0x81, 0x84, 0x87, 0x89, 0x87, 0x82, 0x7b, 0x79, 0x79, 0x7b, 0x7d, 0x7e, 0x80, -0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, -0x81, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, -0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, -0x82, 0x82, 0x81, 0x7e, 0x7c, 0x7b, 0x7c, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x7e, -0x7d, 0x7c, 0x7c, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, -0x7d, 0x7e, 0x81, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x80, -0x81, 0x82, 0x82, 0x80, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, 0x80, 0x82, 0x83, 0x83, 0x81, 0x7d, -0x7b, 0x7a, 0x7b, 0x7c, 0x80, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x7b, 0x7b, 0x7c, 0x7e, -0x81, 0x83, 0x83, 0x83, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x83, 0x83, 0x82, 0x80, -0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, -0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7d, 0x7c, -0x7d, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x82, 0x83, -0x83, 0x80, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7d, -0x7e, 0x80, 0x81, 0x81, 0x82, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, -0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, -0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, -0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, -0x7c, 0x7d, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, -0x81, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x80, 0x81, 0x82, 0x83, 0x82, 0x81, 0x80, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x82, 0x83, -0x83, 0x83, 0x82, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x83, 0x84, 0x83, 0x81, 0x7e, -0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x80, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7e, -0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, -0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x81, 0x81, -0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, -0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x7e, -0x7c, 0x7a, 0x78, 0x79, 0x80, 0x88, 0x8d, 0x8d, 0x86, 0x7b, 0x71, 0x6c, 0x6d, 0x73, 0x7b, 0x85, -0x8c, 0x8e, 0x8d, 0x87, 0x80, 0x77, 0x71, 0x70, 0x72, 0x77, 0x7e, 0x86, 0x8a, 0x8c, 0x8b, 0x86, -0x80, 0x79, 0x77, 0x75, 0x77, 0x7b, 0x7e, 0x83, 0x86, 0x87, 0x87, 0x85, 0x83, 0x7e, 0x78, 0x75, -0x76, 0x7a, 0x81, 0x85, 0x88, 0x89, 0x86, 0x83, 0x7e, 0x7b, 0x78, 0x78, 0x7a, 0x7c, 0x80, 0x83, -0x85, 0x85, 0x84, 0x82, 0x7e, 0x7c, 0x7c, 0x7b, 0x7c, 0x7e, 0x81, 0x83, 0x83, 0x82, 0x80, 0x7c, -0x7a, 0x79, 0x79, 0x7a, 0x7d, 0x81, 0x85, 0x87, 0x88, 0x85, 0x80, 0x7a, 0x74, 0x71, 0x73, 0x79, -0x80, 0x85, 0x88, 0x8a, 0x88, 0x84, 0x80, 0x7b, 0x78, 0x75, 0x75, 0x76, 0x7b, 0x81, 0x86, 0x89, -0x89, 0x86, 0x81, 0x7b, 0x76, 0x73, 0x74, 0x79, 0x7e, 0x86, 0x8a, 0x8c, 0x88, 0x83, 0x7d, 0x79, -0x78, 0x7c, 0x80, 0x82, 0x82, 0x80, 0x7c, 0x7b, 0x7a, 0x7c, 0x80, 0x83, 0x85, 0x85, 0x82, 0x7c, -0x78, 0x76, 0x79, 0x7c, 0x80, 0x83, 0x83, 0x83, 0x82, 0x80, 0x7c, 0x7a, 0x7a, 0x7b, 0x7e, 0x81, -0x82, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x82, 0x84, 0x84, 0x83, 0x80, 0x7d, -0x7b, 0x7b, 0x7e, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, -0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7d, 0x80, 0x83, 0x85, 0x84, 0x82, -0x7e, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x81, 0x81, 0x80, 0x81, 0x7e, 0x7b, -0x79, 0x77, 0x78, 0x7a, 0x7d, 0x82, 0x85, 0x86, 0x85, 0x83, 0x80, 0x7c, 0x79, 0x77, 0x79, 0x7c, -0x82, 0x85, 0x86, 0x85, 0x82, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, -0x7d, 0x7e, 0x80, 0x83, 0x85, 0x84, 0x82, 0x7e, 0x7b, 0x7a, 0x79, 0x7a, 0x7c, 0x80, 0x83, 0x85, -0x85, 0x84, 0x82, 0x7e, 0x7c, 0x7a, 0x7a, 0x7b, 0x7d, 0x81, 0x82, 0x82, 0x83, 0x83, 0x82, 0x80, -0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x84, 0x83, 0x81, 0x7d, 0x7c, 0x7c, -0x7b, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7b, 0x79, 0x7a, 0x7b, 0x7c, -0x80, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x80, 0x7e, -0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x80, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, -0x80, 0x81, 0x82, 0x82, 0x80, 0x7c, 0x7b, 0x7a, 0x7b, 0x7c, 0x80, 0x83, 0x83, 0x83, 0x82, 0x80, -0x7d, 0x7b, 0x7a, 0x79, 0x7b, 0x7c, 0x7d, 0x80, 0x82, 0x83, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x7a, -0x79, 0x7a, 0x7b, 0x7d, 0x81, 0x83, 0x84, 0x84, 0x83, 0x81, 0x7c, 0x7a, 0x78, 0x78, 0x7a, 0x7d, -0x81, 0x84, 0x85, 0x85, 0x84, 0x81, 0x7d, 0x7a, 0x79, 0x7a, 0x7b, 0x7e, 0x82, 0x83, 0x85, 0x85, -0x83, 0x81, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x81, -0x81, 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, -0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, -0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, -0x7d, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, -0x80, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x7e, -0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, -0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, -0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x80, -0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, -0x7e, 0x81, 0x82, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, -0x80, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, -0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, -0x81, 0x82, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, -0x81, 0x82, 0x81, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, -0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, -0x7d, 0x7e, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x82, 0x82, -0x82, 0x81, 0x80, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7d, -0x7d, 0x7d, 0x80, 0x82, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x81, 0x82, 0x82, -0x81, 0x80, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7c, -0x7c, 0x7d, 0x80, 0x80, 0x81, 0x82, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, -0x7d, 0x7d, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7c, 0x7b, 0x7b, 0x7d, 0x81, 0x83, -0x84, 0x84, 0x83, 0x7e, 0x7c, 0x7a, 0x7a, 0x7e, 0x82, 0x84, 0x85, 0x83, 0x81, 0x7e, 0x7d, 0x7d, -0x7e, 0x80, 0x82, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x83, -0x83, 0x81, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x82, 0x82, 0x81, 0x7e, 0x7c, 0x7b, 0x7c, 0x7c, -0x7e, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7a, 0x7b, 0x7d, 0x82, 0x85, -0x87, 0x87, 0x84, 0x81, 0x7d, 0x7a, 0x78, 0x78, 0x79, 0x7e, 0x83, 0x87, 0x89, 0x88, 0x84, 0x80, -0x7a, 0x77, 0x76, 0x77, 0x7a, 0x7e, 0x83, 0x86, 0x87, 0x86, 0x83, 0x7d, 0x7a, 0x78, 0x78, 0x7a, -0x7d, 0x81, 0x83, 0x84, 0x84, 0x84, 0x82, 0x7e, 0x7b, 0x79, 0x77, 0x78, 0x7c, 0x80, 0x84, 0x86, -0x86, 0x83, 0x7e, 0x7a, 0x78, 0x78, 0x7a, 0x7d, 0x82, 0x85, 0x86, 0x84, 0x82, 0x80, 0x7d, 0x7c, -0x7d, 0x7d, 0x7e, 0x81, 0x83, 0x82, 0x82, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7e, 0x81, 0x81, 0x81, -0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, -0x7d, 0x7d, 0x7d, 0x7e, 0x82, 0x83, 0x84, 0x83, 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, -0x82, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7e, -0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, -0x81, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x80, 0x81, -0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, -0x7e, 0x7e, 0x7d, 0x7e, 0x81, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, -0x7e, 0x81, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x79, 0x76, 0x76, 0x79, 0x7e, 0x84, 0x87, 0x86, 0x83, -0x7e, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x81, 0x83, 0x84, 0x84, 0x82, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, -0x7d, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7e, -0x81, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7c, 0x7c, -0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, -0x7e, 0x7d, 0x7e, 0x80, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x81, -0x81, 0x82, 0x81, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, -0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x80, -0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, -0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x82, -0x81, 0x81, 0x7e, 0x7b, 0x78, 0x77, 0x78, 0x7c, 0x82, 0x87, 0x88, 0x86, 0x81, 0x79, 0x74, 0x71, -0x73, 0x7a, 0x83, 0x89, 0x8e, 0x8e, 0x87, 0x7e, 0x76, 0x72, 0x73, 0x78, 0x7e, 0x86, 0x88, 0x88, -0x84, 0x81, 0x7d, 0x7a, 0x7a, 0x7a, 0x7c, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x82, 0x82, 0x82, 0x81, -0x7e, 0x7b, 0x79, 0x77, 0x79, 0x7c, 0x81, 0x85, 0x87, 0x86, 0x82, 0x7c, 0x78, 0x78, 0x7b, 0x81, -0x85, 0x87, 0x85, 0x81, 0x7b, 0x77, 0x76, 0x78, 0x7b, 0x82, 0x86, 0x88, 0x87, 0x83, 0x7c, 0x78, -0x76, 0x76, 0x7b, 0x81, 0x86, 0x8a, 0x8a, 0x87, 0x81, 0x7a, 0x75, 0x72, 0x73, 0x78, 0x80, 0x87, -0x8a, 0x89, 0x84, 0x7c, 0x77, 0x75, 0x76, 0x7a, 0x80, 0x84, 0x86, 0x85, 0x82, 0x7d, 0x7c, 0x7b, -0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x83, 0x80, 0x7b, 0x78, 0x76, 0x77, 0x7b, 0x82, -0x87, 0x89, 0x86, 0x81, 0x7a, 0x77, 0x76, 0x78, 0x7d, 0x82, 0x84, 0x83, 0x80, 0x7d, 0x7a, 0x7a, -0x7c, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, -0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, -0x7c, 0x7c, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x80, 0x80, -0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x82, 0x81, 0x7d, 0x79, 0x77, 0x77, 0x7c, 0x82, 0x83, 0x83, -0x81, 0x7e, 0x7d, 0x7a, 0x78, 0x78, 0x7a, 0x7d, 0x83, 0x86, 0x86, 0x87, 0x85, 0x81, 0x7c, 0x79, -0x75, 0x75, 0x78, 0x80, 0x86, 0x8a, 0x88, 0x81, 0x78, 0x74, 0x77, 0x7d, 0x84, 0x87, 0x86, 0x83, -0x7d, 0x79, 0x74, 0x72, 0x74, 0x78, 0x80, 0x85, 0x89, 0x8b, 0x8a, 0x85, 0x7d, 0x74, 0x70, 0x71, -0x77, 0x82, 0x8c, 0x8f, 0x8d, 0x8a, 0x85, 0x7e, 0x75, 0x6e, 0x6d, 0x76, 0x83, 0x8f, 0x95, 0x93, -0x8c, 0x7d, 0x6c, 0x61, 0x65, 0x77, 0x8b, 0x95, 0x91, 0x87, 0x80, 0x80, 0x81, 0x7c, 0x74, 0x6e, -0x72, 0x7e, 0x8c, 0x96, 0x93, 0x88, 0x7e, 0x79, 0x7a, 0x7e, 0x82, 0x80, 0x7d, 0x7b, 0x7c, 0x81, -0x84, 0x83, 0x80, 0x7b, 0x7c, 0x81, 0x83, 0x85, 0x84, 0x81, 0x7b, 0x7a, 0x7d, 0x82, 0x85, 0x85, -0x80, 0x7c, 0x7b, 0x7b, 0x7d, 0x7b, 0x78, 0x77, 0x7b, 0x84, 0x8a, 0x8a, 0x85, 0x7d, 0x78, 0x75, -0x76, 0x77, 0x7a, 0x7b, 0x7d, 0x81, 0x82, 0x84, 0x86, 0x85, 0x80, 0x79, 0x75, 0x75, 0x79, 0x7d, -0x81, 0x82, 0x7e, 0x7d, 0x7e, 0x81, 0x83, 0x81, 0x7e, 0x80, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7a, -0x7a, 0x7b, 0x80, 0x85, 0x85, 0x85, 0x83, 0x81, 0x7e, 0x78, 0x75, 0x74, 0x76, 0x7b, 0x83, 0x88, -0x89, 0x86, 0x84, 0x82, 0x7e, 0x7a, 0x74, 0x72, 0x76, 0x7e, 0x85, 0x87, 0x86, 0x86, 0x85, 0x84, -0x81, 0x7c, 0x79, 0x7a, 0x7c, 0x7e, 0x82, 0x82, 0x84, 0x85, 0x85, 0x83, 0x81, 0x80, 0x7c, 0x79, -0x78, 0x7a, 0x80, 0x84, 0x87, 0x89, 0x85, 0x80, 0x7c, 0x7b, 0x7d, 0x80, 0x7d, 0x7a, 0x79, 0x7c, -0x83, 0x8a, 0x8c, 0x8b, 0x85, 0x7c, 0x77, 0x77, 0x79, 0x79, 0x7c, 0x81, 0x86, 0x8d, 0x8e, 0x88, -0x81, 0x78, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7c, 0x81, 0x84, 0x86, 0x84, 0x81, 0x7d, 0x7b, 0x7b, -0x7d, 0x7c, 0x7a, 0x78, 0x7a, 0x7c, 0x83, 0x86, 0x85, 0x85, 0x81, 0x7b, 0x76, 0x73, 0x75, 0x79, -0x7e, 0x83, 0x86, 0x88, 0x86, 0x81, 0x7b, 0x77, 0x7a, 0x81, 0x84, 0x82, 0x80, 0x7d, 0x7b, 0x7d, -0x81, 0x83, 0x84, 0x84, 0x84, 0x85, 0x86, 0x85, 0x81, 0x7d, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x7b, -0x7e, 0x85, 0x8b, 0x8e, 0x8e, 0x89, 0x7e, 0x72, 0x6b, 0x67, 0x6c, 0x74, 0x7d, 0x89, 0x92, 0x97, -0x94, 0x8c, 0x81, 0x75, 0x6c, 0x6a, 0x6c, 0x73, 0x7c, 0x87, 0x8f, 0x92, 0x90, 0x8b, 0x82, 0x75, -0x71, 0x73, 0x78, 0x7d, 0x7e, 0x81, 0x85, 0x88, 0x89, 0x88, 0x81, 0x79, 0x75, 0x78, 0x81, 0x8c, -0x92, 0x8f, 0x84, 0x75, 0x6d, 0x6d, 0x72, 0x7b, 0x88, 0x91, 0x93, 0x8e, 0x83, 0x78, 0x74, 0x74, -0x77, 0x7b, 0x7e, 0x7e, 0x7e, 0x7e, 0x81, 0x89, 0x8d, 0x8a, 0x83, 0x7b, 0x76, 0x75, 0x75, 0x7a, -0x80, 0x82, 0x81, 0x81, 0x85, 0x89, 0x8b, 0x87, 0x7d, 0x76, 0x74, 0x76, 0x79, 0x7d, 0x80, 0x82, -0x83, 0x85, 0x8a, 0x8b, 0x84, 0x7b, 0x72, 0x70, 0x74, 0x78, 0x7e, 0x83, 0x84, 0x85, 0x85, 0x85, -0x87, 0x85, 0x7d, 0x75, 0x71, 0x74, 0x79, 0x80, 0x85, 0x86, 0x83, 0x7d, 0x7c, 0x7c, 0x80, 0x82, -0x83, 0x81, 0x7b, 0x78, 0x76, 0x76, 0x7b, 0x81, 0x85, 0x8a, 0x8e, 0x8e, 0x8a, 0x7c, 0x6d, 0x63, -0x60, 0x6d, 0x81, 0x91, 0x9c, 0x9c, 0x92, 0x85, 0x75, 0x69, 0x66, 0x68, 0x70, 0x7e, 0x8f, 0x98, -0x99, 0x93, 0x87, 0x79, 0x6c, 0x65, 0x68, 0x72, 0x81, 0x8f, 0x95, 0x93, 0x8a, 0x7c, 0x71, 0x6d, -0x6e, 0x76, 0x7e, 0x86, 0x8b, 0x89, 0x87, 0x81, 0x77, 0x74, 0x74, 0x7a, 0x83, 0x88, 0x89, 0x85, -0x80, 0x7c, 0x77, 0x78, 0x7b, 0x7d, 0x80, 0x84, 0x88, 0x8a, 0x89, 0x82, 0x7a, 0x75, 0x70, 0x6c, -0x71, 0x7b, 0x86, 0x90, 0x96, 0x98, 0x92, 0x85, 0x75, 0x67, 0x61, 0x69, 0x77, 0x84, 0x8e, 0x96, -0x9a, 0x97, 0x8b, 0x80, 0x75, 0x6b, 0x65, 0x64, 0x6c, 0x7a, 0x8a, 0x99, 0xa0, 0x9c, 0x8f, 0x7b, -0x6b, 0x63, 0x60, 0x69, 0x75, 0x84, 0x90, 0x99, 0x9d, 0x98, 0x8a, 0x76, 0x67, 0x5f, 0x60, 0x69, -0x7a, 0x8c, 0x96, 0x9a, 0x98, 0x91, 0x83, 0x77, 0x73, 0x6d, 0x66, 0x68, 0x71, 0x7d, 0x8c, 0x98, -0xa0, 0xa3, 0x9b, 0x89, 0x75, 0x63, 0x57, 0x59, 0x67, 0x76, 0x8a, 0xa0, 0xaa, 0xa7, 0x9b, 0x89, -0x73, 0x60, 0x55, 0x52, 0x58, 0x67, 0x7e, 0x97, 0xa9, 0xb0, 0xaa, 0x98, 0x80, 0x67, 0x58, 0x54, -0x59, 0x62, 0x72, 0x88, 0x9b, 0xa6, 0xaa, 0xa0, 0x8c, 0x76, 0x65, 0x5a, 0x5c, 0x6c, 0x7d, 0x8d, -0x9a, 0x9f, 0x9c, 0x90, 0x78, 0x65, 0x5c, 0x5b, 0x65, 0x77, 0x8f, 0xa0, 0xa7, 0xa3, 0x93, 0x7b, -0x68, 0x5b, 0x58, 0x60, 0x70, 0x82, 0x91, 0x9a, 0x9c, 0x99, 0x91, 0x84, 0x76, 0x6d, 0x69, 0x6a, -0x73, 0x7b, 0x86, 0x8e, 0x92, 0x94, 0x90, 0x88, 0x7e, 0x76, 0x6f, 0x6d, 0x6d, 0x75, 0x83, 0x8d, -0x95, 0x98, 0x93, 0x88, 0x7a, 0x6b, 0x66, 0x69, 0x6e, 0x7b, 0x84, 0x8b, 0x92, 0x8e, 0x8a, 0x87, -0x84, 0x7c, 0x74, 0x75, 0x76, 0x74, 0x77, 0x7c, 0x80, 0x81, 0x86, 0x8c, 0x8b, 0x8a, 0x88, 0x80, -0x7a, 0x7b, 0x7b, 0x75, 0x76, 0x80, 0x83, 0x81, 0x81, 0x82, 0x81, 0x7d, 0x81, 0x82, 0x7d, 0x81, -0x85, 0x85, 0x7d, 0x78, 0x7a, 0x7c, 0x7c, 0x7b, 0x7b, 0x83, 0x85, 0x82, 0x84, 0x89, 0x8a, 0x85, -0x7d, 0x79, 0x73, 0x72, 0x73, 0x79, 0x82, 0x8a, 0x93, 0x96, 0x90, 0x87, 0x79, 0x6a, 0x62, 0x65, -0x73, 0x84, 0x93, 0x9a, 0x99, 0x94, 0x86, 0x75, 0x6a, 0x67, 0x69, 0x6d, 0x79, 0x88, 0x8e, 0x8e, -0x8f, 0x8b, 0x86, 0x80, 0x77, 0x72, 0x70, 0x6d, 0x6f, 0x77, 0x82, 0x8a, 0x8f, 0x94, 0x91, 0x89, -0x7e, 0x75, 0x6f, 0x6a, 0x6b, 0x74, 0x80, 0x8e, 0x99, 0xa0, 0xa0, 0x91, 0x7c, 0x6b, 0x5c, 0x55, -0x5b, 0x6f, 0x87, 0x9b, 0xab, 0xaf, 0xa7, 0x92, 0x73, 0x5a, 0x52, 0x54, 0x62, 0x78, 0x8e, 0x9f, -0xa8, 0xa6, 0x9d, 0x89, 0x73, 0x67, 0x61, 0x5f, 0x68, 0x78, 0x87, 0x91, 0x96, 0x95, 0x91, 0x85, -0x79, 0x71, 0x6a, 0x6e, 0x77, 0x82, 0x8d, 0x94, 0x92, 0x88, 0x7c, 0x74, 0x6d, 0x6b, 0x74, 0x82, -0x8c, 0x93, 0x93, 0x8b, 0x7d, 0x73, 0x6b, 0x6d, 0x78, 0x84, 0x8a, 0x8a, 0x8a, 0x85, 0x78, 0x74, -0x75, 0x73, 0x75, 0x7e, 0x8b, 0x91, 0x8f, 0x8f, 0x8a, 0x7b, 0x6f, 0x6b, 0x6d, 0x74, 0x76, 0x79, -0x88, 0x96, 0x93, 0x8e, 0x8f, 0x8c, 0x80, 0x70, 0x69, 0x65, 0x61, 0x66, 0x75, 0x86, 0x95, 0x9c, -0xa2, 0xa4, 0x94, 0x7c, 0x6a, 0x63, 0x5d, 0x59, 0x69, 0x86, 0x99, 0x9e, 0xa2, 0xa3, 0x8e, 0x72, -0x63, 0x5f, 0x66, 0x70, 0x7c, 0x8f, 0x9d, 0x9a, 0x8e, 0x84, 0x7b, 0x6d, 0x61, 0x6b, 0x7d, 0x86, -0x87, 0x91, 0x9a, 0x8f, 0x7d, 0x79, 0x78, 0x6f, 0x6a, 0x72, 0x7b, 0x80, 0x83, 0x8a, 0x90, 0x8e, -0x88, 0x84, 0x7e, 0x78, 0x74, 0x75, 0x79, 0x7e, 0x7d, 0x7c, 0x80, 0x82, 0x83, 0x82, 0x83, 0x84, -0x80, 0x7c, 0x7e, 0x82, 0x82, 0x86, 0x88, 0x81, 0x77, 0x74, 0x74, 0x76, 0x7c, 0x86, 0x8f, 0x8f, -0x8b, 0x89, 0x80, 0x71, 0x6c, 0x6d, 0x71, 0x7a, 0x86, 0x90, 0x96, 0x94, 0x8c, 0x7e, 0x73, 0x6e, -0x6e, 0x70, 0x7a, 0x86, 0x8c, 0x90, 0x91, 0x89, 0x7c, 0x76, 0x76, 0x75, 0x75, 0x7d, 0x87, 0x8b, -0x8c, 0x8a, 0x85, 0x7c, 0x72, 0x70, 0x7a, 0x7e, 0x84, 0x8c, 0x8f, 0x8b, 0x7d, 0x74, 0x70, 0x68, -0x65, 0x75, 0x89, 0x91, 0x97, 0x9b, 0x99, 0x88, 0x6e, 0x60, 0x5e, 0x61, 0x6d, 0x83, 0x96, 0x9f, -0x9f, 0x96, 0x8a, 0x75, 0x61, 0x5f, 0x67, 0x70, 0x7d, 0x8d, 0x9a, 0xa2, 0x95, 0x85, 0x80, 0x74, -0x65, 0x5e, 0x68, 0x77, 0x7a, 0x82, 0x96, 0xa1, 0x9c, 0x91, 0x8a, 0x80, 0x6d, 0x5e, 0x5d, 0x64, -0x6a, 0x71, 0x83, 0x9b, 0xa5, 0xa4, 0x9e, 0x93, 0x83, 0x65, 0x50, 0x55, 0x64, 0x6a, 0x76, 0x94, -0xa8, 0xa4, 0x99, 0x96, 0x8a, 0x6b, 0x5c, 0x65, 0x70, 0x75, 0x7a, 0x89, 0x9a, 0x95, 0x89, 0x8a, -0x8c, 0x7b, 0x66, 0x68, 0x7a, 0x7d, 0x7a, 0x8a, 0x9d, 0x98, 0x87, 0x83, 0x7c, 0x6e, 0x60, 0x64, -0x7a, 0x8c, 0x8a, 0x8b, 0x98, 0x99, 0x87, 0x77, 0x78, 0x77, 0x66, 0x5e, 0x6d, 0x7e, 0x83, 0x8a, -0x97, 0xa1, 0x9b, 0x8b, 0x83, 0x74, 0x61, 0x55, 0x5f, 0x6f, 0x76, 0x85, 0x9f, 0xaa, 0x9f, 0x95, -0x90, 0x7c, 0x60, 0x57, 0x61, 0x69, 0x6b, 0x7d, 0x9f, 0xab, 0x9e, 0x94, 0x91, 0x82, 0x61, 0x4f, -0x59, 0x6c, 0x71, 0x7b, 0x9f, 0xb4, 0xa5, 0x90, 0x8e, 0x83, 0x5e, 0x48, 0x55, 0x69, 0x6d, 0x72, -0x96, 0xb4, 0xa8, 0x94, 0x99, 0x95, 0x70, 0x53, 0x5e, 0x70, 0x68, 0x64, 0x83, 0xa1, 0x9a, 0x8d, -0x94, 0x96, 0x7d, 0x66, 0x6b, 0x80, 0x7d, 0x6d, 0x7d, 0x99, 0x8f, 0x76, 0x79, 0x89, 0x7b, 0x68, -0x75, 0x8e, 0x90, 0x87, 0x8c, 0x96, 0x88, 0x68, 0x5f, 0x6a, 0x6f, 0x73, 0x80, 0x92, 0x9c, 0x99, -0x93, 0x87, 0x75, 0x6c, 0x67, 0x60, 0x68, 0x78, 0x84, 0x91, 0x9a, 0x9a, 0x94, 0x86, 0x7b, 0x70, -0x63, 0x64, 0x69, 0x70, 0x7d, 0x8c, 0x94, 0x93, 0x8e, 0x8b, 0x89, 0x7d, 0x72, 0x6d, 0x6d, 0x67, -0x64, 0x6c, 0x7c, 0x90, 0xa0, 0xaa, 0xa7, 0x9b, 0x86, 0x69, 0x54, 0x4c, 0x4d, 0x59, 0x73, 0x8f, -0xa8, 0xae, 0xac, 0xab, 0x9a, 0x7c, 0x67, 0x59, 0x54, 0x57, 0x64, 0x7a, 0x8c, 0x99, 0xa8, 0xac, -0xa0, 0x89, 0x6f, 0x5e, 0x56, 0x54, 0x5c, 0x77, 0x98, 0xa7, 0xa4, 0xa1, 0x9f, 0x87, 0x61, 0x52, -0x55, 0x5b, 0x68, 0x7c, 0x97, 0xb0, 0xb3, 0xa2, 0x8f, 0x7c, 0x67, 0x52, 0x52, 0x5d, 0x66, 0x7d, -0x9c, 0xa7, 0xa0, 0x9f, 0x9f, 0x89, 0x6f, 0x63, 0x62, 0x67, 0x6d, 0x74, 0x83, 0x94, 0x9e, 0x97, -0x95, 0x98, 0x85, 0x69, 0x65, 0x75, 0x77, 0x6d, 0x74, 0x8a, 0x92, 0x8b, 0x87, 0x88, 0x7e, 0x73, -0x73, 0x7a, 0x7a, 0x79, 0x7c, 0x85, 0x8a, 0x81, 0x77, 0x7c, 0x89, 0x8e, 0x8d, 0x8b, 0x84, 0x7b, -0x6e, 0x66, 0x69, 0x6f, 0x74, 0x7e, 0x91, 0xa7, 0xaa, 0x9b, 0x8c, 0x76, 0x65, 0x5a, 0x54, 0x5c, -0x6e, 0x85, 0x9a, 0xa3, 0xa5, 0xa9, 0x9c, 0x80, 0x6f, 0x63, 0x57, 0x58, 0x65, 0x75, 0x7b, 0x80, -0x96, 0xab, 0xa3, 0x91, 0x86, 0x7a, 0x6d, 0x64, 0x60, 0x60, 0x62, 0x6d, 0x86, 0x9a, 0x9a, 0x93, -0x99, 0x9b, 0x88, 0x74, 0x6c, 0x68, 0x63, 0x67, 0x72, 0x7b, 0x7d, 0x85, 0x9b, 0xa2, 0x94, 0x87, -0x84, 0x7e, 0x6e, 0x66, 0x6d, 0x73, 0x77, 0x81, 0x8d, 0x8f, 0x82, 0x76, 0x80, 0x88, 0x84, 0x80, -0x80, 0x84, 0x89, 0x7d, 0x71, 0x77, 0x77, 0x73, 0x7c, 0x89, 0x8a, 0x80, 0x7e, 0x8a, 0x89, 0x78, -0x70, 0x7a, 0x83, 0x85, 0x88, 0x8b, 0x88, 0x7a, 0x73, 0x75, 0x6f, 0x6a, 0x75, 0x83, 0x93, 0x98, -0x92, 0x92, 0x88, 0x7b, 0x75, 0x6f, 0x68, 0x68, 0x72, 0x83, 0x8f, 0x8f, 0x90, 0x92, 0x98, 0x8a, -0x71, 0x6e, 0x72, 0x72, 0x6d, 0x72, 0x80, 0x85, 0x85, 0x90, 0x98, 0x8b, 0x82, 0x84, 0x80, 0x74, -0x66, 0x69, 0x72, 0x6f, 0x75, 0x8b, 0x9b, 0x98, 0x8d, 0x8b, 0x8f, 0x7d, 0x65, 0x64, 0x69, 0x6b, -0x6f, 0x76, 0x8c, 0xa3, 0xa0, 0x98, 0x90, 0x84, 0x73, 0x63, 0x62, 0x6b, 0x6e, 0x75, 0x8b, 0x99, -0x96, 0x95, 0x95, 0x8d, 0x75, 0x62, 0x67, 0x6a, 0x6e, 0x7d, 0x87, 0x95, 0x9d, 0x8b, 0x88, 0x87, -0x77, 0x6b, 0x68, 0x74, 0x7a, 0x78, 0x81, 0x8b, 0x8e, 0x8a, 0x8b, 0x88, 0x7b, 0x75, 0x74, 0x6e, -0x71, 0x7d, 0x84, 0x87, 0x92, 0x99, 0x8c, 0x81, 0x7e, 0x73, 0x6f, 0x72, 0x71, 0x75, 0x7b, 0x89, -0x91, 0x8a, 0x87, 0x90, 0x88, 0x7c, 0x80, 0x77, 0x71, 0x6e, 0x6f, 0x79, 0x7e, 0x7d, 0x86, 0x90, -0x93, 0x95, 0x94, 0x89, 0x82, 0x76, 0x66, 0x62, 0x63, 0x67, 0x75, 0x8f, 0x9b, 0x9b, 0x99, 0x9c, -0x94, 0x7e, 0x6e, 0x6e, 0x67, 0x5e, 0x65, 0x70, 0x7d, 0x85, 0x8e, 0x99, 0x99, 0x93, 0x8c, 0x7d, -0x74, 0x70, 0x6e, 0x71, 0x70, 0x74, 0x86, 0x8a, 0x88, 0x86, 0x8b, 0x8c, 0x7b, 0x73, 0x7c, 0x7b, -0x7a, 0x7a, 0x7b, 0x82, 0x85, 0x81, 0x7d, 0x79, 0x7b, 0x7b, 0x78, 0x80, 0x85, 0x87, 0x89, 0x89, -0x85, 0x7c, 0x7a, 0x7b, 0x71, 0x6d, 0x7b, 0x83, 0x84, 0x86, 0x90, 0x97, 0x86, 0x80, 0x82, 0x76, -0x6a, 0x65, 0x73, 0x80, 0x7c, 0x7c, 0x8e, 0x9b, 0x8e, 0x7a, 0x7a, 0x7d, 0x71, 0x5e, 0x65, 0x87, -0x8a, 0x7d, 0x8d, 0xa4, 0x94, 0x7a, 0x7b, 0x7a, 0x6d, 0x63, 0x70, 0x7e, 0x81, 0x8c, 0x94, 0x8b, -0x7c, 0x7d, 0x84, 0x7d, 0x76, 0x7d, 0x83, 0x7b, 0x7c, 0x7b, 0x78, 0x79, 0x78, 0x77, 0x82, 0x8f, -0x89, 0x7c, 0x85, 0x8e, 0x80, 0x6c, 0x75, 0x82, 0x7b, 0x76, 0x7a, 0x84, 0x85, 0x80, 0x7a, 0x84, -0x8b, 0x83, 0x7e, 0x7d, 0x87, 0x86, 0x72, 0x70, 0x72, 0x75, 0x78, 0x75, 0x80, 0x90, 0x94, 0x8a, -0x89, 0x87, 0x84, 0x7b, 0x6e, 0x72, 0x76, 0x6f, 0x74, 0x85, 0x88, 0x84, 0x91, 0x94, 0x83, 0x82, -0x7e, 0x76, 0x6b, 0x68, 0x7b, 0x7e, 0x7d, 0x8c, 0x91, 0x91, 0x84, 0x78, 0x7d, 0x7a, 0x70, 0x6e, -0x75, 0x7c, 0x85, 0x87, 0x86, 0x91, 0x8d, 0x78, 0x76, 0x7c, 0x76, 0x69, 0x6e, 0x82, 0x93, 0x82, -0x75, 0x92, 0x9b, 0x78, 0x64, 0x87, 0x8f, 0x6f, 0x69, 0x8b, 0x8f, 0x76, 0x7a, 0x81, 0x88, 0x86, -0x7b, 0x6e, 0x76, 0x90, 0x83, 0x71, 0x7e, 0x91, 0x8a, 0x6f, 0x7a, 0x8e, 0x7e, 0x6a, 0x77, 0x8a, -0x7b, 0x73, 0x83, 0x86, 0x7c, 0x81, 0x85, 0x7c, 0x7a, 0x83, 0x7e, 0x78, 0x7d, 0x80, 0x7c, 0x83, -0x88, 0x83, 0x7c, 0x7c, 0x85, 0x83, 0x85, 0x84, 0x87, 0x86, 0x7a, 0x82, 0x80, 0x72, 0x71, 0x79, -0x80, 0x84, 0x81, 0x84, 0x8d, 0x88, 0x80, 0x78, 0x77, 0x79, 0x7c, 0x82, 0x7c, 0x7c, 0x85, 0x87, -0x7c, 0x78, 0x81, 0x7d, 0x75, 0x7d, 0x8c, 0x85, 0x7c, 0x81, 0x86, 0x82, 0x76, 0x77, 0x86, 0x83, -0x7b, 0x80, 0x84, 0x85, 0x7e, 0x74, 0x77, 0x82, 0x80, 0x7e, 0x82, 0x8c, 0x8f, 0x84, 0x7d, 0x7e, -0x7a, 0x6f, 0x73, 0x7c, 0x7e, 0x7e, 0x83, 0x8c, 0x89, 0x7d, 0x80, 0x86, 0x82, 0x7a, 0x77, 0x7b, -0x7c, 0x78, 0x79, 0x80, 0x83, 0x82, 0x88, 0x89, 0x7e, 0x7e, 0x82, 0x7a, 0x76, 0x7e, 0x83, 0x7b, -0x75, 0x82, 0x8d, 0x81, 0x75, 0x80, 0x88, 0x80, 0x77, 0x7a, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, -0x82, 0x82, 0x7a, 0x78, 0x7e, 0x82, 0x7d, 0x78, 0x7b, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x7e, 0x7d, -0x83, 0x80, 0x78, 0x79, 0x7e, 0x81, 0x7c, 0x7c, 0x84, 0x85, 0x7d, 0x7c, 0x84, 0x87, 0x80, 0x7a, -0x7a, 0x7d, 0x79, 0x75, 0x7a, 0x7e, 0x81, 0x82, 0x83, 0x88, 0x87, 0x81, 0x7d, 0x7b, 0x7b, 0x77, -0x75, 0x79, 0x80, 0x82, 0x84, 0x86, 0x86, 0x85, 0x83, 0x80, 0x7d, 0x7b, 0x79, 0x79, 0x7d, 0x7e, -0x80, 0x82, 0x84, 0x82, 0x84, 0x82, 0x80, 0x80, 0x81, 0x81, 0x7d, 0x80, 0x7e, 0x7b, 0x7b, 0x7d, -0x7e, 0x7e, 0x7e, 0x80, 0x7d, 0x7c, 0x7c, 0x7c, 0x7e, 0x82, 0x84, 0x83, 0x84, 0x82, 0x7e, 0x7b, -0x78, 0x79, 0x7a, 0x7b, 0x80, 0x7e, 0x7d, 0x81, 0x85, 0x88, 0x8b, 0x8a, 0x86, 0x80, 0x7a, 0x74, -0x70, 0x70, 0x74, 0x7a, 0x82, 0x8b, 0x91, 0x91, 0x8e, 0x89, 0x82, 0x7c, 0x75, 0x71, 0x74, 0x74, -0x78, 0x7e, 0x81, 0x84, 0x88, 0x89, 0x87, 0x84, 0x81, 0x7e, 0x7d, 0x80, 0x80, 0x7d, 0x7d, 0x81, -0x82, 0x83, 0x83, 0x7e, 0x7d, 0x7b, 0x7a, 0x7c, 0x7d, 0x84, 0x88, 0x87, 0x88, 0x86, 0x80, 0x7b, -0x76, 0x73, 0x73, 0x75, 0x78, 0x7e, 0x82, 0x85, 0x87, 0x85, 0x82, 0x7e, 0x7d, 0x7b, 0x7b, 0x7e, -0x7d, 0x7e, 0x82, 0x82, 0x84, 0x84, 0x81, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7e, 0x81, 0x82, 0x82, -0x80, 0x7d, 0x7c, 0x7b, 0x79, 0x77, 0x7a, 0x7c, 0x7e, 0x83, 0x83, 0x83, 0x83, 0x82, 0x7e, 0x78, -0x77, 0x78, 0x7b, 0x82, 0x83, 0x84, 0x85, 0x81, 0x7e, 0x7e, 0x7a, 0x76, 0x79, 0x7e, 0x84, 0x86, -0x86, 0x83, 0x81, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x81, 0x83, 0x82, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, -0x7b, 0x7e, 0x82, 0x81, 0x84, 0x84, 0x81, 0x81, 0x7e, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x81, 0x82, -0x81, 0x81, 0x82, 0x83, 0x80, 0x7e, 0x81, 0x7e, 0x7d, 0x7e, 0x80, 0x7d, 0x7e, 0x80, 0x7d, 0x7e, -0x81, 0x81, 0x80, 0x81, 0x80, 0x81, 0x7e, 0x7a, 0x77, 0x76, 0x79, 0x80, 0x84, 0x89, 0x8a, 0x89, -0x86, 0x7e, 0x7b, 0x77, 0x74, 0x76, 0x7b, 0x7e, 0x82, 0x89, 0x88, 0x85, 0x83, 0x7b, 0x78, 0x78, -0x7a, 0x7b, 0x82, 0x87, 0x8a, 0x87, 0x84, 0x82, 0x79, 0x78, 0x76, 0x74, 0x78, 0x7b, 0x82, 0x88, -0x89, 0x8c, 0x87, 0x7e, 0x7b, 0x78, 0x75, 0x77, 0x7a, 0x7a, 0x7e, 0x83, 0x85, 0x85, 0x87, 0x83, -0x81, 0x83, 0x7d, 0x7c, 0x7a, 0x77, 0x7a, 0x7b, 0x7a, 0x7c, 0x7e, 0x80, 0x81, 0x83, 0x81, 0x7e, -0x81, 0x81, 0x80, 0x81, 0x84, 0x80, 0x7e, 0x81, 0x7c, 0x7a, 0x79, 0x78, 0x7c, 0x82, 0x88, 0x8b, -0x8a, 0x87, 0x84, 0x81, 0x7b, 0x79, 0x76, 0x76, 0x7d, 0x84, 0x86, 0x89, 0x8a, 0x84, 0x81, 0x7d, -0x79, 0x78, 0x78, 0x7a, 0x7d, 0x82, 0x85, 0x87, 0x88, 0x86, 0x81, 0x7c, 0x7c, 0x79, 0x78, 0x78, -0x79, 0x7e, 0x84, 0x84, 0x86, 0x86, 0x83, 0x82, 0x81, 0x7a, 0x79, 0x79, 0x79, 0x7d, 0x7e, 0x83, -0x85, 0x86, 0x85, 0x82, 0x81, 0x7b, 0x79, 0x7a, 0x79, 0x7c, 0x81, 0x83, 0x84, 0x83, 0x83, 0x7d, -0x7c, 0x7d, 0x79, 0x78, 0x7c, 0x7c, 0x7c, 0x80, 0x82, 0x84, 0x88, 0x89, 0x88, 0x83, 0x81, 0x80, -0x7a, 0x7a, 0x78, 0x76, 0x7d, 0x83, 0x84, 0x87, 0x89, 0x86, 0x83, 0x82, 0x7e, 0x7d, 0x7b, 0x79, -0x7b, 0x7d, 0x81, 0x81, 0x82, 0x86, 0x85, 0x84, 0x82, 0x7e, 0x7d, 0x79, 0x79, 0x7c, 0x7b, 0x7d, -0x80, 0x7e, 0x81, 0x80, 0x7e, 0x81, 0x7d, 0x7d, 0x7d, 0x7a, 0x7d, 0x82, 0x82, 0x82, 0x84, 0x83, -0x81, 0x7e, 0x79, 0x77, 0x78, 0x7b, 0x7b, 0x7e, 0x82, 0x85, 0x86, 0x83, 0x84, 0x83, 0x80, 0x7d, -0x7c, 0x79, 0x78, 0x78, 0x77, 0x7b, 0x7d, 0x82, 0x85, 0x86, 0x87, 0x86, 0x84, 0x82, 0x7d, 0x79, -0x77, 0x75, 0x76, 0x7a, 0x7d, 0x81, 0x83, 0x83, 0x82, 0x82, 0x82, 0x80, 0x7d, 0x7e, 0x82, 0x82, -0x81, 0x7e, 0x7b, 0x7c, 0x80, 0x80, 0x82, 0x82, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x80, -0x81, 0x82, 0x84, 0x82, 0x7d, 0x7e, 0x7b, 0x7c, 0x7e, 0x7c, 0x82, 0x84, 0x82, 0x84, 0x81, 0x7e, -0x7e, 0x7b, 0x7b, 0x7d, 0x80, 0x83, 0x87, 0x89, 0x88, 0x86, 0x81, 0x7d, 0x7b, 0x7b, 0x7c, 0x7b, -0x7d, 0x7e, 0x81, 0x83, 0x85, 0x81, 0x7c, 0x7a, 0x77, 0x77, 0x7c, 0x81, 0x83, 0x84, 0x80, 0x7e, -0x81, 0x7d, 0x79, 0x78, 0x77, 0x78, 0x7c, 0x82, 0x88, 0x89, 0x89, 0x89, 0x86, 0x80, 0x78, 0x76, -0x73, 0x76, 0x79, 0x7c, 0x81, 0x87, 0x8a, 0x87, 0x86, 0x82, 0x7b, 0x79, 0x7b, 0x7a, 0x7b, 0x7e, -0x81, 0x81, 0x83, 0x83, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7b, 0x7b, 0x80, 0x7e, 0x80, 0x82, 0x81, -0x81, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7d, 0x82, 0x85, 0x87, 0x85, 0x82, 0x80, 0x7a, -0x75, 0x74, 0x76, 0x79, 0x7b, 0x82, 0x88, 0x88, 0x88, 0x87, 0x82, 0x7b, 0x79, 0x76, 0x73, 0x78, -0x80, 0x83, 0x88, 0x8a, 0x89, 0x87, 0x83, 0x7c, 0x78, 0x75, 0x75, 0x79, 0x7b, 0x7e, 0x81, 0x84, -0x84, 0x82, 0x84, 0x82, 0x7e, 0x80, 0x80, 0x7e, 0x81, 0x7e, 0x7c, 0x7d, 0x7a, 0x79, 0x7d, 0x82, -0x83, 0x86, 0x85, 0x85, 0x86, 0x83, 0x7c, 0x7c, 0x7d, 0x7a, 0x7a, 0x7d, 0x7e, 0x83, 0x87, 0x86, -0x84, 0x82, 0x81, 0x7c, 0x7b, 0x7b, 0x79, 0x7e, 0x83, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x7b, 0x78, -0x77, 0x78, 0x7a, 0x80, 0x83, 0x85, 0x84, 0x80, 0x7e, 0x80, 0x7e, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, -0x7c, 0x7b, 0x7b, 0x7d, 0x7d, 0x7d, 0x82, 0x83, 0x82, 0x83, 0x80, 0x7e, 0x7e, 0x7a, 0x7b, 0x7b, -0x7b, 0x7d, 0x7e, 0x84, 0x85, 0x82, 0x85, 0x83, 0x80, 0x7e, 0x7a, 0x79, 0x7d, 0x7d, 0x7c, 0x7e, -0x81, 0x83, 0x82, 0x82, 0x83, 0x82, 0x82, 0x80, 0x7e, 0x81, 0x82, 0x82, 0x7e, 0x7b, 0x7c, 0x80, -0x81, 0x81, 0x85, 0x85, 0x80, 0x7d, 0x7c, 0x7a, 0x7c, 0x7e, 0x7d, 0x7e, 0x81, 0x83, 0x83, 0x81, -0x7e, 0x7b, 0x7a, 0x7c, 0x7c, 0x7c, 0x7e, 0x82, 0x83, 0x83, 0x81, 0x81, 0x80, 0x7c, 0x7a, 0x7b, -0x7e, 0x81, 0x83, 0x83, 0x7d, 0x7c, 0x7a, 0x79, 0x7a, 0x7b, 0x81, 0x84, 0x86, 0x87, 0x84, 0x81, -0x7b, 0x78, 0x75, 0x76, 0x7c, 0x81, 0x84, 0x86, 0x84, 0x85, 0x86, 0x82, 0x7e, 0x7d, 0x7b, 0x7a, -0x7c, 0x7a, 0x78, 0x7a, 0x7c, 0x80, 0x82, 0x83, 0x86, 0x86, 0x83, 0x82, 0x7e, 0x7d, 0x7e, 0x7e, -0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x82, 0x86, 0x86, 0x85, 0x84, 0x82, 0x81, 0x7e, 0x7c, 0x7c, 0x7c, -0x7e, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x80, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x81, 0x83, 0x81, -0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x81, 0x81, 0x82, 0x84, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, 0x7b, 0x7e, -0x80, 0x82, 0x83, 0x82, 0x82, 0x80, 0x80, 0x80, 0x81, 0x83, 0x81, 0x80, 0x82, 0x81, 0x83, 0x84, -0x81, 0x7e, 0x7d, 0x80, 0x80, 0x7c, 0x7e, 0x80, 0x7e, 0x80, 0x82, 0x7e, 0x7e, 0x7e, 0x7d, 0x7a, -0x7b, 0x7e, 0x7d, 0x81, 0x82, 0x82, 0x83, 0x7e, 0x80, 0x80, 0x79, 0x78, 0x79, 0x78, 0x7b, 0x7d, -0x82, 0x87, 0x84, 0x84, 0x83, 0x7d, 0x7d, 0x7b, 0x7c, 0x7d, 0x7c, 0x80, 0x83, 0x84, 0x86, 0x85, -0x84, 0x84, 0x82, 0x80, 0x7e, 0x7d, 0x80, 0x80, 0x7b, 0x7e, 0x81, 0x80, 0x82, 0x82, 0x7e, 0x7d, -0x80, 0x7d, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x7e, 0x7e, 0x7e, 0x7b, -0x7b, 0x7a, 0x7a, 0x75, 0x70, 0x7d, 0x8a, 0x83, 0x82, 0x89, 0x80, 0x6b, 0x63, 0x75, 0x91, 0x9c, -0x91, 0x75, 0x6f, 0x7e, 0x81, 0x79, 0x74, 0x75, 0x7b, 0x80, 0x90, 0x9c, 0x8a, 0x74, 0x71, 0x7b, -0x7c, 0x72, 0x76, 0x89, 0x8d, 0x84, 0x7d, 0x81, 0x83, 0x72, 0x68, 0x78, 0x90, 0x96, 0x83, 0x70, -0x7a, 0x8e, 0x8c, 0x73, 0x70, 0x7e, 0x7c, 0x71, 0x75, 0x88, 0x89, 0x78, 0x76, 0x8a, 0x99, 0x8e, -0x7b, 0x74, 0x77, 0x73, 0x6e, 0x70, 0x72, 0x72, 0x85, 0xa2, 0xa9, 0x8e, 0x77, 0x7e, 0x7e, 0x6f, -0x6a, 0x73, 0x79, 0x7c, 0x82, 0x87, 0x82, 0x76, 0x76, 0x83, 0x8f, 0x8d, 0x85, 0x7e, 0x79, 0x70, -0x6d, 0x77, 0x82, 0x82, 0x86, 0x8f, 0x90, 0x85, 0x79, 0x79, 0x7b, 0x73, 0x6e, 0x76, 0x81, 0x88, -0x8a, 0x85, 0x79, 0x73, 0x7b, 0x83, 0x82, 0x86, 0x8a, 0x7d, 0x71, 0x76, 0x83, 0x86, 0x7c, 0x78, -0x78, 0x7b, 0x81, 0x89, 0x90, 0x86, 0x7a, 0x7d, 0x81, 0x7a, 0x77, 0x80, 0x88, 0x82, 0x73, 0x77, -0x8a, 0x8a, 0x81, 0x81, 0x84, 0x82, 0x7b, 0x7a, 0x7d, 0x7a, 0x75, 0x74, 0x7b, 0x86, 0x8e, 0x8b, -0x83, 0x80, 0x7c, 0x78, 0x78, 0x76, 0x7b, 0x85, 0x85, 0x83, 0x85, 0x89, 0x88, 0x7c, 0x75, 0x7d, -0x83, 0x7c, 0x79, 0x7b, 0x81, 0x7e, 0x79, 0x80, 0x87, 0x83, 0x80, 0x7c, 0x7a, 0x7e, 0x7e, 0x80, -0x83, 0x82, 0x81, 0x82, 0x83, 0x84, 0x82, 0x80, 0x7d, 0x7c, 0x83, 0x84, 0x81, 0x80, 0x82, 0x85, -0x83, 0x80, 0x7e, 0x80, 0x80, 0x7c, 0x7d, 0x82, 0x86, 0x88, 0x87, 0x86, 0x82, 0x7c, 0x79, 0x79, -0x80, 0x82, 0x7e, 0x80, 0x85, 0x86, 0x87, 0x87, 0x84, 0x81, 0x7e, 0x7c, 0x79, 0x7c, 0x83, 0x85, -0x86, 0x84, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7a, 0x7c, 0x7e, 0x81, 0x82, 0x84, 0x86, 0x84, 0x81, -0x7e, 0x7d, 0x7d, 0x81, 0x82, 0x80, 0x7d, 0x7c, 0x7d, 0x80, 0x83, 0x88, 0x88, 0x88, 0x87, 0x87, -0x86, 0x7d, 0x72, 0x69, 0x64, 0x68, 0x76, 0x8e, 0x9e, 0x9f, 0x91, 0x7b, 0x70, 0x71, 0x75, 0x7e, -0x82, 0x80, 0x80, 0x7d, 0x7c, 0x7e, 0x82, 0x85, 0x87, 0x89, 0x8e, 0x8f, 0x84, 0x73, 0x68, 0x60, -0x63, 0x74, 0x89, 0x97, 0x9a, 0x92, 0x88, 0x7b, 0x6e, 0x6b, 0x6d, 0x6e, 0x71, 0x7d, 0x8e, 0x90, -0x8f, 0x91, 0x8c, 0x85, 0x81, 0x82, 0x7b, 0x71, 0x6d, 0x6c, 0x6f, 0x76, 0x85, 0x96, 0x9c, 0x99, -0x8e, 0x7a, 0x6b, 0x60, 0x5f, 0x66, 0x70, 0x83, 0x91, 0x95, 0x91, 0x89, 0x7d, 0x73, 0x70, 0x75, -0x7b, 0x82, 0x86, 0x84, 0x82, 0x86, 0x87, 0x86, 0x84, 0x7e, 0x7c, 0x7d, 0x7d, 0x81, 0x81, 0x7c, -0x7e, 0x81, 0x7c, 0x79, 0x76, 0x77, 0x76, 0x76, 0x7d, 0x88, 0x8a, 0x84, 0x7a, 0x75, 0x78, 0x7e, -0x83, 0x89, 0x8e, 0x8d, 0x8b, 0x83, 0x79, 0x77, 0x7b, 0x83, 0x8b, 0x8f, 0x8d, 0x87, 0x7e, 0x75, -0x73, 0x75, 0x7a, 0x82, 0x87, 0x89, 0x89, 0x84, 0x7b, 0x71, 0x6a, 0x6c, 0x73, 0x7b, 0x85, 0x8a, -0x8b, 0x84, 0x7e, 0x80, 0x81, 0x83, 0x83, 0x7e, 0x7b, 0x78, 0x75, 0x6c, 0x60, 0x5d, 0x73, 0xa3, -0xcd, 0xd0, 0xa2, 0x54, 0x1d, 0x23, 0x62, 0xb0, 0xcd, 0xb6, 0x89, 0x68, 0x67, 0x77, 0x78, 0x6c, -0x69, 0x78, 0x94, 0xa5, 0xa3, 0x8b, 0x66, 0x4b, 0x50, 0x75, 0xa8, 0xc2, 0xac, 0x80, 0x60, 0x56, -0x5a, 0x6c, 0x8a, 0x9d, 0x9c, 0x93, 0x8f, 0x8b, 0x73, 0x5a, 0x5d, 0x70, 0x7c, 0x8b, 0xa4, 0xa5, -0x7c, 0x5d, 0x5f, 0x6d, 0x76, 0x8b, 0xa3, 0x9b, 0x7d, 0x70, 0x70, 0x6c, 0x6e, 0x81, 0x90, 0x8c, -0x8b, 0x92, 0x8a, 0x77, 0x72, 0x78, 0x7e, 0x84, 0x8d, 0x8d, 0x7a, 0x6c, 0x6d, 0x72, 0x78, 0x87, -0x96, 0x92, 0x85, 0x79, 0x70, 0x66, 0x61, 0x6a, 0x7b, 0x8c, 0x99, 0xa0, 0x9a, 0x88, 0x79, 0x69, -0x5c, 0x5e, 0x6d, 0x84, 0x94, 0x94, 0x92, 0x8b, 0x80, 0x75, 0x71, 0x79, 0x83, 0x88, 0x89, 0x84, -0x7e, 0x7b, 0x7a, 0x78, 0x7b, 0x82, 0x82, 0x82, 0x81, 0x7d, 0x7c, 0x7c, 0x7e, 0x82, 0x83, 0x82, -0x82, 0x7a, 0x76, 0x79, 0x7e, 0x86, 0x8b, 0x8c, 0x86, 0x75, 0x60, 0x56, 0x60, 0x82, 0xb3, 0xcd, -0xb5, 0x7a, 0x40, 0x27, 0x44, 0x86, 0xc0, 0xcf, 0xad, 0x73, 0x4e, 0x4d, 0x69, 0x85, 0x89, 0x81, -0x7e, 0x8d, 0x9e, 0x9c, 0x81, 0x58, 0x42, 0x52, 0x7e, 0xac, 0xba, 0xab, 0x87, 0x62, 0x58, 0x63, -0x7d, 0x97, 0x98, 0x88, 0x78, 0x70, 0x73, 0x76, 0x7c, 0x87, 0x8d, 0x93, 0x93, 0x88, 0x71, 0x5c, -0x55, 0x5e, 0x75, 0x92, 0xab, 0xb1, 0x99, 0x74, 0x5c, 0x52, 0x59, 0x6c, 0x84, 0x97, 0x9d, 0x9c, -0x97, 0x8a, 0x77, 0x6d, 0x68, 0x66, 0x69, 0x75, 0x83, 0x8a, 0x91, 0x95, 0x96, 0x92, 0x8b, 0x80, -0x6e, 0x5e, 0x56, 0x5d, 0x6d, 0x88, 0xa6, 0xb1, 0xa9, 0x9c, 0x88, 0x6b, 0x54, 0x4c, 0x54, 0x65, -0x7b, 0x97, 0xae, 0xb3, 0xa9, 0x91, 0x75, 0x64, 0x5b, 0x5a, 0x62, 0x6f, 0x83, 0x9a, 0xa8, 0xa7, -0x9e, 0x8d, 0x76, 0x64, 0x5b, 0x5a, 0x61, 0x73, 0x8f, 0xa6, 0xa3, 0x80, 0x5b, 0x5e, 0x88, 0xb3, -0xb6, 0x7d, 0x36, 0x1e, 0x53, 0xb6, 0xef, 0xdf, 0x9f, 0x5d, 0x3a, 0x3d, 0x55, 0x67, 0x74, 0x8a, -0xaa, 0xc0, 0xbb, 0x9d, 0x6d, 0x40, 0x27, 0x33, 0x61, 0xa2, 0xca, 0xca, 0xac, 0x82, 0x64, 0x5a, -0x5f, 0x6c, 0x81, 0x91, 0x91, 0x88, 0x88, 0x88, 0x7e, 0x71, 0x72, 0x7d, 0x83, 0x89, 0x92, 0x89, -0x6b, 0x57, 0x65, 0x7c, 0x87, 0x90, 0x9a, 0x94, 0x7d, 0x71, 0x74, 0x79, 0x7c, 0x84, 0x8b, 0x87, -0x7c, 0x7c, 0x81, 0x81, 0x86, 0x90, 0x94, 0x8c, 0x80, 0x76, 0x6e, 0x63, 0x64, 0x77, 0x8b, 0x98, -0x9f, 0x99, 0x86, 0x6a, 0x5b, 0x5f, 0x69, 0x7a, 0x91, 0x9c, 0x96, 0x89, 0x7a, 0x6c, 0x6d, 0x77, -0x87, 0x9b, 0x9a, 0x8b, 0x77, 0x6e, 0x73, 0x7c, 0x83, 0x85, 0x88, 0x8a, 0x7d, 0x71, 0x72, 0x79, -0x81, 0x84, 0x88, 0x8b, 0x88, 0x80, 0x75, 0x71, 0x76, 0x7e, 0x86, 0x8c, 0x93, 0x92, 0x85, 0x71, -0x5f, 0x55, 0x5b, 0x6f, 0x83, 0x91, 0x9d, 0xa6, 0x9e, 0x83, 0x6c, 0x63, 0x6c, 0x85, 0x99, 0x9b, -0x8a, 0x76, 0x6b, 0x69, 0x6f, 0x7e, 0x90, 0x99, 0x95, 0x87, 0x73, 0x61, 0x5a, 0x5b, 0x65, 0x79, -0x91, 0x9f, 0xa3, 0x98, 0x84, 0x73, 0x6a, 0x6b, 0x7a, 0x8f, 0x96, 0x93, 0x8a, 0x7e, 0x72, 0x6e, -0x78, 0x87, 0x8b, 0x86, 0x82, 0x79, 0x6a, 0x60, 0x6a, 0x7a, 0x86, 0x92, 0x9c, 0x96, 0x83, 0x74, -0x6f, 0x6c, 0x6a, 0x75, 0x8a, 0x93, 0x95, 0x99, 0x95, 0x84, 0x7a, 0x78, 0x76, 0x77, 0x77, 0x7a, -0x7b, 0x7a, 0x7d, 0x87, 0x8b, 0x88, 0x85, 0x80, 0x78, 0x74, 0x73, 0x74, 0x77, 0x7d, 0x88, 0x90, -0x90, 0x8f, 0x86, 0x78, 0x6d, 0x6d, 0x76, 0x80, 0x82, 0x82, 0x80, 0x7b, 0x7d, 0x81, 0x84, 0x8a, -0x88, 0x80, 0x7c, 0x7b, 0x7a, 0x7b, 0x83, 0x8a, 0x8c, 0x8b, 0x89, 0x81, 0x74, 0x70, 0x75, 0x7a, -0x81, 0x86, 0x86, 0x83, 0x7c, 0x76, 0x74, 0x77, 0x7d, 0x84, 0x89, 0x8a, 0x88, 0x80, 0x7a, 0x78, -0x79, 0x7b, 0x7b, 0x79, 0x75, 0x76, 0x89, 0x9d, 0xa3, 0x98, 0x7a, 0x57, 0x49, 0x61, 0x8b, 0xb3, -0xc0, 0xa4, 0x74, 0x50, 0x4b, 0x5c, 0x75, 0x8b, 0x93, 0x90, 0x8b, 0x86, 0x7e, 0x75, 0x6d, 0x68, -0x6a, 0x78, 0x8e, 0x9d, 0xa0, 0x96, 0x7d, 0x65, 0x5c, 0x66, 0x79, 0x8c, 0x94, 0x8a, 0x7c, 0x7a, -0x7b, 0x82, 0x87, 0x84, 0x81, 0x7a, 0x74, 0x74, 0x73, 0x76, 0x7d, 0x87, 0x90, 0x91, 0x8f, 0x86, -0x77, 0x69, 0x61, 0x64, 0x71, 0x83, 0x92, 0x99, 0x95, 0x88, 0x79, 0x6f, 0x71, 0x77, 0x7b, 0x7c, -0x78, 0x78, 0x80, 0x86, 0x87, 0x83, 0x7d, 0x7c, 0x81, 0x84, 0x80, 0x7c, 0x7b, 0x7b, 0x7d, 0x7e, -0x7e, 0x83, 0x88, 0x87, 0x82, 0x78, 0x74, 0x75, 0x7b, 0x89, 0x8c, 0x83, 0x7d, 0x7a, 0x7a, 0x80, -0x83, 0x85, 0x85, 0x80, 0x7a, 0x74, 0x61, 0x3f, 0x2b, 0x51, 0xa5, 0xe5, 0xee, 0xcc, 0x8f, 0x47, -0x26, 0x48, 0x8d, 0xbb, 0xc4, 0xb2, 0x92, 0x64, 0x43, 0x49, 0x68, 0x89, 0x97, 0x90, 0x82, 0x7a, -0x71, 0x58, 0x4b, 0x5f, 0x81, 0x9a, 0xb6, 0xcf, 0xbb, 0x7a, 0x45, 0x3d, 0x4c, 0x66, 0x97, 0xcf, -0xdc, 0xb4, 0x81, 0x5f, 0x4a, 0x41, 0x55, 0x84, 0xa2, 0xa3, 0xa3, 0x9e, 0x81, 0x5b, 0x4f, 0x5a, -0x64, 0x75, 0x93, 0xab, 0xa5, 0x8d, 0x79, 0x6c, 0x62, 0x6e, 0x8c, 0xa3, 0xa2, 0x93, 0x86, 0x74, -0x68, 0x6d, 0x82, 0x91, 0x8b, 0x81, 0x78, 0x67, 0x5f, 0x6b, 0x7d, 0x8a, 0x90, 0x95, 0x94, 0x87, -0x77, 0x6f, 0x6b, 0x6c, 0x7e, 0x94, 0x9f, 0x9d, 0x8d, 0x7b, 0x69, 0x5d, 0x66, 0x7d, 0x8d, 0x90, -0x8b, 0x84, 0x7e, 0x84, 0x8c, 0x8d, 0x84, 0x72, 0x69, 0x6d, 0x7a, 0x8a, 0x99, 0x9b, 0x8d, 0x7c, -0x71, 0x6b, 0x6b, 0x76, 0x80, 0x82, 0x81, 0x80, 0x82, 0x83, 0x83, 0x81, 0x7c, 0x76, 0x77, 0x7d, -0x83, 0x85, 0x84, 0x7a, 0x6b, 0x62, 0x67, 0x78, 0x94, 0xaf, 0xb8, 0xa4, 0x79, 0x4c, 0x38, 0x4a, -0x79, 0xae, 0xc5, 0xb8, 0x8d, 0x61, 0x51, 0x5b, 0x71, 0x85, 0x87, 0x84, 0x83, 0x86, 0x8c, 0x87, -0x76, 0x6c, 0x70, 0x7d, 0x92, 0xa0, 0x9c, 0x8c, 0x70, 0x58, 0x54, 0x66, 0x86, 0xa2, 0xb0, 0xa6, -0x8b, 0x6d, 0x59, 0x59, 0x68, 0x7a, 0x8e, 0x9a, 0x99, 0x8b, 0x7c, 0x75, 0x71, 0x6f, 0x71, 0x77, -0x79, 0x7c, 0x83, 0x85, 0x83, 0x80, 0x84, 0x89, 0x89, 0x85, 0x7a, 0x6c, 0x63, 0x64, 0x72, 0x87, -0x98, 0xa3, 0xa2, 0x90, 0x75, 0x5e, 0x56, 0x62, 0x78, 0x92, 0xa0, 0x9e, 0x92, 0x7b, 0x65, 0x5d, -0x5e, 0x6a, 0x7c, 0x92, 0x9d, 0x97, 0x8a, 0x80, 0x77, 0x78, 0x87, 0x93, 0x8d, 0x78, 0x5f, 0x4e, -0x52, 0x60, 0x5e, 0x56, 0x73, 0xb5, 0xe4, 0xd9, 0xb9, 0x87, 0x42, 0x22, 0x4d, 0xa4, 0xd3, 0xd5, -0xc9, 0x9f, 0x52, 0x1a, 0x27, 0x59, 0x85, 0x99, 0x9d, 0x95, 0x82, 0x68, 0x55, 0x5d, 0x71, 0x78, -0x87, 0xa9, 0xc2, 0xaa, 0x78, 0x62, 0x5f, 0x50, 0x5b, 0x97, 0xc7, 0xc0, 0xa1, 0x8c, 0x6c, 0x45, -0x40, 0x68, 0x91, 0x98, 0x95, 0x97, 0x82, 0x58, 0x45, 0x57, 0x6a, 0x7b, 0x96, 0xa8, 0xa0, 0x86, -0x74, 0x6d, 0x6d, 0x76, 0x89, 0x9d, 0xa2, 0x97, 0x89, 0x77, 0x66, 0x61, 0x70, 0x85, 0x95, 0x9b, -0x94, 0x82, 0x67, 0x58, 0x59, 0x69, 0x7e, 0x93, 0x9c, 0x96, 0x89, 0x7d, 0x78, 0x77, 0x7b, 0x84, -0x8a, 0x86, 0x7d, 0x74, 0x69, 0x63, 0x6f, 0x89, 0x9e, 0xa7, 0x9d, 0x83, 0x5e, 0x41, 0x41, 0x61, -0x95, 0xc1, 0xd7, 0xc4, 0x8b, 0x49, 0x22, 0x28, 0x5b, 0x9d, 0xcf, 0xda, 0xba, 0x86, 0x55, 0x3c, -0x42, 0x5d, 0x85, 0xa9, 0xb9, 0xb3, 0x98, 0x73, 0x57, 0x46, 0x45, 0x53, 0x6b, 0x8e, 0xb5, 0xce, -0xcd, 0xa9, 0x68, 0x2a, 0x1f, 0x52, 0xa0, 0xde, 0xe5, 0xb4, 0x6d, 0x3a, 0x37, 0x55, 0x75, 0x8f, -0x9d, 0xa1, 0x97, 0x7e, 0x67, 0x5b, 0x5f, 0x6f, 0x83, 0x91, 0x9e, 0xa7, 0x9d, 0x7d, 0x5a, 0x4c, -0x5a, 0x7e, 0xa9, 0xbf, 0xb8, 0x9c, 0x75, 0x56, 0x49, 0x51, 0x6f, 0x99, 0xb1, 0xb0, 0x9d, 0x82, -0x68, 0x5b, 0x5e, 0x6c, 0x7c, 0x8a, 0x92, 0x8f, 0x7c, 0x6c, 0x68, 0x6f, 0x7c, 0x8f, 0x9c, 0x9b, -0x90, 0x81, 0x72, 0x66, 0x65, 0x74, 0x89, 0x93, 0x8e, 0x86, 0x7c, 0x79, 0x78, 0x79, 0x84, 0x8f, -0x95, 0x8f, 0x7e, 0x6f, 0x6b, 0x6c, 0x70, 0x7d, 0x8f, 0x9a, 0x99, 0x91, 0x87, 0x7a, 0x74, 0x6f, -0x68, 0x5c, 0x53, 0x56, 0x55, 0x4e, 0x5f, 0x9b, 0xd7, 0xe9, 0xcf, 0x99, 0x56, 0x2b, 0x3d, 0x85, -0xc3, 0xd5, 0xcb, 0xae, 0x72, 0x33, 0x23, 0x44, 0x6f, 0x8e, 0x9e, 0xa1, 0x91, 0x75, 0x5c, 0x55, -0x59, 0x5f, 0x72, 0x96, 0xb9, 0xb9, 0x9a, 0x80, 0x6d, 0x57, 0x4f, 0x73, 0xa3, 0xb2, 0xaa, 0x9e, -0x89, 0x62, 0x4c, 0x5c, 0x7a, 0x86, 0x89, 0x92, 0x89, 0x6c, 0x5a, 0x61, 0x6b, 0x6f, 0x82, 0x9c, -0xa4, 0x98, 0x87, 0x7a, 0x6b, 0x60, 0x6d, 0x8c, 0x9d, 0xa1, 0x9f, 0x91, 0x79, 0x65, 0x63, 0x6e, -0x7a, 0x86, 0x90, 0x8c, 0x7b, 0x6f, 0x6a, 0x68, 0x6c, 0x7b, 0x8d, 0x93, 0x8f, 0x88, 0x7b, 0x6f, -0x6e, 0x7b, 0x8d, 0x94, 0x92, 0x88, 0x77, 0x6c, 0x6c, 0x76, 0x7d, 0x83, 0x83, 0x82, 0x80, 0x7c, -0x7c, 0x7d, 0x80, 0x82, 0x86, 0x88, 0x84, 0x81, 0x7d, 0x79, 0x79, 0x7d, 0x88, 0x93, 0x95, 0x8e, -0x80, 0x72, 0x6b, 0x6b, 0x6f, 0x71, 0x6d, 0x71, 0x84, 0x9f, 0xb4, 0xac, 0x86, 0x56, 0x3d, 0x4b, -0x7e, 0xac, 0xbe, 0xb4, 0x94, 0x73, 0x5c, 0x54, 0x5b, 0x6e, 0x8b, 0x9f, 0xa2, 0x98, 0x88, 0x76, -0x6a, 0x5e, 0x5b, 0x66, 0x7d, 0x98, 0xa7, 0xa2, 0x8b, 0x71, 0x60, 0x61, 0x6f, 0x80, 0x8c, 0x93, -0x8f, 0x7e, 0x72, 0x72, 0x79, 0x82, 0x8c, 0x93, 0x8a, 0x78, 0x71, 0x6f, 0x6b, 0x6b, 0x7a, 0x8d, -0x93, 0x90, 0x86, 0x78, 0x68, 0x65, 0x71, 0x80, 0x87, 0x8e, 0x91, 0x8a, 0x7e, 0x7c, 0x81, 0x85, -0x8b, 0x8f, 0x8d, 0x83, 0x7b, 0x76, 0x72, 0x71, 0x76, 0x7c, 0x80, 0x83, 0x84, 0x7e, 0x74, 0x75, -0x7a, 0x79, 0x75, 0x7e, 0x90, 0x9c, 0x9d, 0x91, 0x7c, 0x67, 0x5d, 0x61, 0x60, 0x51, 0x4b, 0x73, -0xbb, 0xe5, 0xdc, 0xb0, 0x6a, 0x29, 0x1a, 0x49, 0x98, 0xc8, 0xd1, 0xc2, 0x90, 0x53, 0x2b, 0x34, -0x5e, 0x83, 0x9a, 0xa1, 0x9e, 0x8f, 0x73, 0x60, 0x5d, 0x66, 0x6d, 0x81, 0xa9, 0xc3, 0xb0, 0x86, -0x68, 0x54, 0x3f, 0x4c, 0x88, 0xbb, 0xbd, 0xa9, 0x96, 0x72, 0x47, 0x42, 0x6b, 0x8a, 0x8a, 0x92, -0xa1, 0x8d, 0x66, 0x5b, 0x67, 0x67, 0x67, 0x84, 0xa3, 0xa1, 0x90, 0x89, 0x7c, 0x62, 0x5e, 0x76, -0x8f, 0x98, 0x9a, 0x99, 0x88, 0x6f, 0x66, 0x6b, 0x6f, 0x75, 0x87, 0x94, 0x8f, 0x87, 0x82, 0x77, -0x69, 0x68, 0x75, 0x83, 0x8a, 0x8d, 0x8b, 0x82, 0x78, 0x7b, 0x86, 0x8c, 0x89, 0x82, 0x76, 0x6a, -0x67, 0x74, 0x89, 0x96, 0x95, 0x89, 0x76, 0x67, 0x62, 0x6b, 0x7b, 0x89, 0x8f, 0x90, 0x8f, 0x90, -0x96, 0x99, 0x8f, 0x80, 0x70, 0x64, 0x60, 0x5e, 0x63, 0x6e, 0x7a, 0x92, 0xac, 0xb7, 0xad, 0x8d, -0x68, 0x50, 0x4d, 0x61, 0x7c, 0x91, 0x9d, 0x9d, 0x95, 0x88, 0x79, 0x70, 0x71, 0x76, 0x7c, 0x7e, -0x7c, 0x7d, 0x7d, 0x7b, 0x79, 0x79, 0x7b, 0x81, 0x88, 0x8c, 0x8d, 0x83, 0x74, 0x6d, 0x6b, 0x71, -0x7d, 0x8b, 0x95, 0x92, 0x88, 0x7c, 0x6e, 0x66, 0x6b, 0x7a, 0x8c, 0x99, 0x9f, 0x99, 0x85, 0x6e, -0x5d, 0x59, 0x64, 0x79, 0x8d, 0x95, 0x91, 0x87, 0x7b, 0x76, 0x76, 0x7e, 0x87, 0x88, 0x86, 0x7e, -0x79, 0x74, 0x73, 0x79, 0x87, 0x95, 0x98, 0x92, 0x86, 0x79, 0x6e, 0x66, 0x69, 0x72, 0x84, 0x92, -0x97, 0x92, 0x84, 0x73, 0x68, 0x68, 0x74, 0x86, 0x94, 0x96, 0x92, 0x85, 0x6a, 0x40, 0x22, 0x3c, -0x8c, 0xd5, 0xf1, 0xdd, 0x9e, 0x53, 0x24, 0x30, 0x68, 0xa3, 0xc6, 0xc8, 0xa7, 0x74, 0x4a, 0x3b, -0x45, 0x5e, 0x81, 0x9c, 0xae, 0xaf, 0x9e, 0x7e, 0x5b, 0x45, 0x43, 0x56, 0x81, 0xb7, 0xd4, 0xc1, -0x9a, 0x72, 0x50, 0x40, 0x51, 0x7d, 0x9d, 0xa4, 0xa2, 0x95, 0x7c, 0x63, 0x62, 0x70, 0x79, 0x83, -0x93, 0x99, 0x8d, 0x78, 0x6e, 0x68, 0x5d, 0x60, 0x78, 0x96, 0xa1, 0xa3, 0x9f, 0x8b, 0x6f, 0x5f, -0x66, 0x77, 0x8a, 0x9c, 0xa1, 0x93, 0x7e, 0x6e, 0x6b, 0x6c, 0x75, 0x86, 0x91, 0x92, 0x8a, 0x7b, -0x6d, 0x63, 0x61, 0x6f, 0x86, 0x99, 0xa4, 0xa4, 0x98, 0x7d, 0x66, 0x5d, 0x5d, 0x6b, 0x81, 0x92, -0x99, 0x92, 0x85, 0x7a, 0x77, 0x7b, 0x86, 0x8d, 0x8c, 0x86, 0x81, 0x7a, 0x78, 0x7a, 0x81, 0x86, -0x8b, 0x8d, 0x8a, 0x7c, 0x69, 0x59, 0x59, 0x72, 0x96, 0xb3, 0xb6, 0x9b, 0x73, 0x55, 0x55, 0x6e, -0x8c, 0x9a, 0x95, 0x86, 0x78, 0x75, 0x77, 0x79, 0x7c, 0x82, 0x85, 0x86, 0x86, 0x87, 0x83, 0x7c, -0x71, 0x67, 0x69, 0x75, 0x89, 0x9a, 0x9c, 0x8f, 0x7a, 0x69, 0x65, 0x6e, 0x7e, 0x8c, 0x91, 0x8b, -0x82, 0x7b, 0x7b, 0x7a, 0x7b, 0x7d, 0x7c, 0x78, 0x77, 0x79, 0x84, 0x89, 0x85, 0x7c, 0x6f, 0x68, -0x6e, 0x80, 0x93, 0x9d, 0x98, 0x89, 0x73, 0x65, 0x66, 0x70, 0x7d, 0x8b, 0x93, 0x91, 0x89, 0x81, -0x7d, 0x79, 0x77, 0x78, 0x7b, 0x7e, 0x83, 0x88, 0x8b, 0x87, 0x83, 0x80, 0x7b, 0x78, 0x74, 0x73, -0x73, 0x77, 0x7e, 0x8d, 0x9b, 0xa1, 0x97, 0x77, 0x4a, 0x28, 0x32, 0x6f, 0xc3, 0xf7, 0xee, 0xb2, -0x63, 0x2f, 0x2b, 0x4e, 0x7e, 0xa6, 0xb8, 0xaf, 0x95, 0x7a, 0x6d, 0x67, 0x5f, 0x5e, 0x6a, 0x7e, -0x90, 0x99, 0x97, 0x84, 0x67, 0x53, 0x56, 0x74, 0x99, 0xb6, 0xbc, 0xa0, 0x74, 0x50, 0x4a, 0x5a, -0x77, 0x98, 0xaf, 0xb0, 0x9c, 0x87, 0x73, 0x63, 0x56, 0x57, 0x68, 0x82, 0x99, 0xa9, 0xa9, 0x95, -0x74, 0x59, 0x4c, 0x52, 0x6b, 0x8e, 0xa6, 0xa8, 0x9b, 0x85, 0x72, 0x66, 0x65, 0x6f, 0x83, 0x95, -0xa0, 0xa2, 0x96, 0x83, 0x6f, 0x64, 0x66, 0x73, 0x87, 0x92, 0x92, 0x85, 0x74, 0x69, 0x68, 0x74, -0x88, 0x98, 0x9c, 0x95, 0x86, 0x75, 0x6c, 0x68, 0x69, 0x73, 0x7e, 0x89, 0x8f, 0x92, 0x92, 0x8e, -0x87, 0x78, 0x70, 0x6b, 0x71, 0x80, 0x93, 0x9e, 0x94, 0x77, 0x58, 0x54, 0x72, 0xa0, 0xc0, 0xb3, -0x83, 0x4c, 0x35, 0x50, 0x85, 0xb1, 0xbd, 0xa6, 0x7c, 0x60, 0x61, 0x6c, 0x76, 0x79, 0x74, 0x72, -0x7d, 0x92, 0xa2, 0xa1, 0x8b, 0x68, 0x51, 0x52, 0x6b, 0x91, 0xad, 0xb2, 0x9e, 0x7e, 0x65, 0x5e, -0x69, 0x7b, 0x88, 0x8a, 0x86, 0x84, 0x86, 0x8a, 0x8a, 0x82, 0x74, 0x6d, 0x70, 0x7d, 0x8e, 0x94, -0x8d, 0x7c, 0x6c, 0x69, 0x70, 0x7c, 0x8c, 0x90, 0x8b, 0x81, 0x77, 0x72, 0x71, 0x77, 0x80, 0x83, -0x83, 0x84, 0x87, 0x89, 0x89, 0x86, 0x7b, 0x73, 0x71, 0x74, 0x7d, 0x86, 0x8a, 0x88, 0x84, 0x84, -0x80, 0x7a, 0x74, 0x73, 0x76, 0x79, 0x80, 0x8a, 0x92, 0x94, 0x8e, 0x81, 0x67, 0x45, 0x2b, 0x35, -0x6d, 0xb5, 0xe1, 0xdf, 0xb9, 0x77, 0x38, 0x25, 0x4c, 0x8b, 0xb6, 0xc7, 0xbf, 0xa1, 0x74, 0x59, -0x54, 0x54, 0x57, 0x67, 0x86, 0x9f, 0xa8, 0xa8, 0x9a, 0x77, 0x4f, 0x3e, 0x4d, 0x6b, 0x8c, 0xab, -0xb8, 0xa2, 0x7d, 0x66, 0x5b, 0x5a, 0x64, 0x7c, 0x8e, 0x91, 0x96, 0x9d, 0x98, 0x88, 0x78, 0x6b, -0x63, 0x66, 0x76, 0x8e, 0x99, 0x96, 0x8e, 0x82, 0x71, 0x6a, 0x6b, 0x73, 0x7a, 0x82, 0x8b, 0x8d, -0x89, 0x82, 0x7a, 0x74, 0x72, 0x78, 0x82, 0x8c, 0x90, 0x91, 0x8b, 0x80, 0x73, 0x6b, 0x6a, 0x72, -0x83, 0x91, 0x9d, 0x9e, 0x91, 0x7b, 0x66, 0x5e, 0x60, 0x6b, 0x80, 0x96, 0xa3, 0x9f, 0x8e, 0x7a, -0x6b, 0x66, 0x66, 0x6e, 0x7b, 0x8b, 0x98, 0x9c, 0x99, 0x8e, 0x81, 0x6d, 0x55, 0x4b, 0x57, 0x81, -0xaf, 0xc9, 0xc3, 0x98, 0x61, 0x3d, 0x41, 0x68, 0x94, 0xae, 0xad, 0x97, 0x7d, 0x70, 0x70, 0x74, -0x77, 0x77, 0x77, 0x7a, 0x82, 0x8e, 0x93, 0x8f, 0x83, 0x72, 0x66, 0x66, 0x73, 0x89, 0x9a, 0x9d, -0x92, 0x7e, 0x6b, 0x5f, 0x62, 0x72, 0x84, 0x90, 0x91, 0x8b, 0x87, 0x86, 0x87, 0x86, 0x7d, 0x72, -0x6a, 0x6d, 0x78, 0x89, 0x94, 0x98, 0x94, 0x87, 0x77, 0x6b, 0x67, 0x6e, 0x76, 0x7e, 0x87, 0x8c, -0x8c, 0x87, 0x82, 0x7d, 0x76, 0x70, 0x6e, 0x75, 0x80, 0x88, 0x8c, 0x8a, 0x85, 0x7e, 0x7a, 0x75, -0x77, 0x7c, 0x82, 0x83, 0x82, 0x7e, 0x7a, 0x77, 0x78, 0x7c, 0x7e, 0x82, 0x86, 0x8a, 0x88, 0x7e, -0x71, 0x65, 0x62, 0x67, 0x75, 0x88, 0x94, 0x92, 0x82, 0x72, 0x6d, 0x74, 0x85, 0x97, 0x99, 0x8a, -0x77, 0x6d, 0x73, 0x7e, 0x8f, 0x97, 0x8b, 0x73, 0x63, 0x65, 0x75, 0x8a, 0x9b, 0x9c, 0x90, 0x7e, -0x73, 0x72, 0x78, 0x86, 0x8d, 0x86, 0x78, 0x74, 0x74, 0x78, 0x83, 0x89, 0x85, 0x7c, 0x79, 0x7e, -0x85, 0x89, 0x8e, 0x89, 0x7b, 0x74, 0x71, 0x73, 0x77, 0x82, 0x8a, 0x86, 0x7c, 0x77, 0x75, 0x73, -0x75, 0x7e, 0x88, 0x88, 0x86, 0x86, 0x83, 0x7e, 0x7c, 0x7a, 0x75, 0x75, 0x7c, 0x86, 0x8b, 0x8a, -0x8a, 0x87, 0x7c, 0x74, 0x71, 0x77, 0x83, 0x8c, 0x90, 0x8b, 0x81, 0x75, 0x71, 0x72, 0x76, 0x80, -0x84, 0x84, 0x80, 0x7d, 0x7d, 0x7c, 0x80, 0x83, 0x86, 0x88, 0x82, 0x7a, 0x6e, 0x67, 0x67, 0x6d, -0x7e, 0x8d, 0x93, 0x8d, 0x82, 0x77, 0x72, 0x78, 0x85, 0x90, 0x8f, 0x82, 0x75, 0x6d, 0x73, 0x83, -0x91, 0x96, 0x8a, 0x7c, 0x76, 0x76, 0x80, 0x88, 0x88, 0x83, 0x7c, 0x7a, 0x7d, 0x86, 0x90, 0x93, -0x88, 0x76, 0x67, 0x61, 0x66, 0x74, 0x85, 0x91, 0x96, 0x93, 0x89, 0x82, 0x7d, 0x7c, 0x7a, 0x74, -0x6f, 0x71, 0x78, 0x86, 0x91, 0x95, 0x91, 0x86, 0x7a, 0x73, 0x73, 0x77, 0x7a, 0x7c, 0x7c, 0x7b, -0x7d, 0x83, 0x8b, 0x90, 0x8f, 0x8a, 0x81, 0x78, 0x75, 0x78, 0x7c, 0x80, 0x81, 0x80, 0x83, 0x86, -0x8b, 0x8d, 0x89, 0x82, 0x78, 0x72, 0x6f, 0x71, 0x78, 0x83, 0x8a, 0x8d, 0x8b, 0x82, 0x76, 0x69, -0x65, 0x6b, 0x76, 0x85, 0x8d, 0x89, 0x81, 0x7b, 0x79, 0x7b, 0x85, 0x8d, 0x8d, 0x84, 0x79, 0x73, -0x71, 0x74, 0x7e, 0x85, 0x81, 0x7a, 0x7c, 0x85, 0x8e, 0x94, 0x94, 0x8b, 0x77, 0x69, 0x6a, 0x77, -0x86, 0x8e, 0x8f, 0x86, 0x76, 0x6f, 0x79, 0x85, 0x88, 0x87, 0x81, 0x73, 0x6d, 0x75, 0x83, 0x89, -0x8b, 0x8c, 0x87, 0x7d, 0x7b, 0x83, 0x84, 0x7c, 0x75, 0x71, 0x6e, 0x71, 0x83, 0x95, 0x95, 0x8d, -0x84, 0x79, 0x71, 0x6f, 0x77, 0x81, 0x84, 0x84, 0x85, 0x82, 0x81, 0x88, 0x8c, 0x86, 0x7c, 0x77, -0x77, 0x79, 0x82, 0x8d, 0x92, 0x8b, 0x82, 0x7b, 0x76, 0x76, 0x7c, 0x80, 0x7e, 0x7b, 0x78, 0x7a, -0x7d, 0x84, 0x89, 0x87, 0x7e, 0x78, 0x78, 0x79, 0x7d, 0x83, 0x83, 0x7c, 0x73, 0x6e, 0x75, 0x82, -0x8e, 0x91, 0x88, 0x79, 0x6e, 0x6d, 0x77, 0x84, 0x8c, 0x8c, 0x86, 0x7e, 0x7c, 0x82, 0x88, 0x89, -0x80, 0x74, 0x6b, 0x6d, 0x7a, 0x8d, 0x97, 0x94, 0x8b, 0x7e, 0x73, 0x76, 0x80, 0x8b, 0x8e, 0x88, -0x7c, 0x73, 0x70, 0x73, 0x7a, 0x82, 0x84, 0x81, 0x7c, 0x7d, 0x84, 0x8a, 0x8a, 0x85, 0x7a, 0x74, -0x75, 0x79, 0x82, 0x8a, 0x8e, 0x88, 0x7d, 0x77, 0x77, 0x79, 0x7e, 0x82, 0x7e, 0x7b, 0x7d, 0x84, -0x8b, 0x8e, 0x8d, 0x87, 0x7d, 0x77, 0x78, 0x80, 0x85, 0x87, 0x85, 0x7e, 0x78, 0x76, 0x7d, 0x85, -0x89, 0x87, 0x81, 0x79, 0x73, 0x76, 0x7d, 0x86, 0x8a, 0x88, 0x80, 0x70, 0x68, 0x6d, 0x77, 0x82, -0x89, 0x8c, 0x85, 0x79, 0x73, 0x76, 0x7e, 0x89, 0x94, 0x91, 0x81, 0x73, 0x6a, 0x67, 0x6d, 0x7c, -0x87, 0x88, 0x84, 0x81, 0x82, 0x84, 0x89, 0x8a, 0x83, 0x77, 0x6e, 0x6e, 0x7a, 0x8b, 0x94, 0x95, -0x8e, 0x7b, 0x6e, 0x6f, 0x7a, 0x83, 0x86, 0x85, 0x7d, 0x75, 0x79, 0x85, 0x89, 0x88, 0x83, 0x77, -0x6c, 0x68, 0x73, 0x82, 0x89, 0x8c, 0x8c, 0x86, 0x7d, 0x7e, 0x84, 0x81, 0x79, 0x77, 0x76, 0x73, -0x79, 0x87, 0x8c, 0x85, 0x7c, 0x78, 0x72, 0x70, 0x7c, 0x89, 0x8e, 0x8b, 0x84, 0x7c, 0x77, 0x7a, -0x85, 0x8a, 0x88, 0x84, 0x7d, 0x77, 0x74, 0x79, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x83, 0x87, -0x85, 0x80, 0x7a, 0x7a, 0x7d, 0x84, 0x86, 0x82, 0x7b, 0x75, 0x76, 0x7a, 0x7d, 0x81, 0x82, 0x81, -0x7c, 0x7b, 0x80, 0x85, 0x87, 0x83, 0x7a, 0x71, 0x71, 0x77, 0x80, 0x86, 0x87, 0x85, 0x7e, 0x79, -0x7a, 0x7e, 0x83, 0x83, 0x80, 0x7a, 0x75, 0x75, 0x7e, 0x8b, 0x90, 0x8d, 0x83, 0x75, 0x70, 0x72, -0x7c, 0x86, 0x8b, 0x89, 0x83, 0x7d, 0x7b, 0x80, 0x80, 0x7a, 0x73, 0x71, 0x75, 0x7c, 0x86, 0x8d, -0x8e, 0x88, 0x7e, 0x76, 0x6f, 0x6f, 0x73, 0x79, 0x81, 0x84, 0x85, 0x85, 0x84, 0x84, 0x84, 0x7e, -0x76, 0x72, 0x73, 0x79, 0x82, 0x8a, 0x8d, 0x8b, 0x85, 0x81, 0x7e, 0x7e, 0x81, 0x81, 0x7b, 0x75, -0x76, 0x7b, 0x83, 0x8e, 0x93, 0x93, 0x8e, 0x84, 0x7b, 0x73, 0x70, 0x71, 0x73, 0x76, 0x79, 0x7d, -0x81, 0x81, 0x81, 0x82, 0x81, 0x82, 0x87, 0x86, 0x81, 0x7b, 0x76, 0x74, 0x75, 0x7b, 0x83, 0x84, -0x83, 0x7d, 0x7a, 0x7c, 0x80, 0x81, 0x80, 0x7e, 0x7b, 0x7b, 0x80, 0x85, 0x89, 0x8b, 0x88, 0x7e, -0x79, 0x78, 0x7a, 0x7e, 0x81, 0x84, 0x82, 0x7b, 0x7a, 0x7b, 0x80, 0x83, 0x84, 0x82, 0x7c, 0x7b, -0x7e, 0x84, 0x85, 0x83, 0x7d, 0x76, 0x71, 0x75, 0x7d, 0x83, 0x86, 0x86, 0x84, 0x82, 0x81, 0x81, -0x7c, 0x76, 0x73, 0x72, 0x73, 0x79, 0x84, 0x8c, 0x8e, 0x8a, 0x81, 0x79, 0x75, 0x78, 0x80, 0x86, -0x88, 0x85, 0x7c, 0x74, 0x75, 0x7a, 0x81, 0x85, 0x85, 0x81, 0x7e, 0x83, 0x88, 0x87, 0x84, 0x7c, -0x70, 0x64, 0x64, 0x75, 0x90, 0x9e, 0x9d, 0x94, 0x89, 0x82, 0x74, 0x5f, 0x5b, 0x72, 0x94, 0x96, -0x7b, 0x6b, 0x78, 0x92, 0x97, 0x89, 0x77, 0x6d, 0x6f, 0x77, 0x8a, 0xa2, 0xad, 0x97, 0x6c, 0x4d, -0x4e, 0x69, 0x8b, 0xa2, 0xa6, 0x95, 0x7a, 0x68, 0x69, 0x7b, 0x8a, 0x86, 0x79, 0x74, 0x78, 0x84, -0x8f, 0x94, 0x8c, 0x74, 0x5f, 0x60, 0x74, 0x93, 0xa2, 0x9a, 0x87, 0x71, 0x64, 0x63, 0x70, 0x84, -0x8e, 0x88, 0x7a, 0x76, 0x7c, 0x86, 0x8c, 0x8a, 0x82, 0x77, 0x70, 0x76, 0x84, 0x8c, 0x85, 0x72, -0x64, 0x6b, 0x84, 0x97, 0x9b, 0x90, 0x83, 0x81, 0x7c, 0x74, 0x6f, 0x79, 0x88, 0x8a, 0x83, 0x84, -0x8d, 0x89, 0x67, 0x3c, 0x2f, 0x57, 0x9b, 0xce, 0xdf, 0xc9, 0x92, 0x4a, 0x19, 0x17, 0x48, 0x90, -0xbf, 0xc5, 0xad, 0x91, 0x7d, 0x70, 0x66, 0x60, 0x5d, 0x67, 0x81, 0x9b, 0xba, 0xc9, 0xb2, 0x75, -0x3a, 0x2c, 0x4a, 0x7c, 0xb4, 0xce, 0xc3, 0x97, 0x63, 0x46, 0x46, 0x5b, 0x74, 0x82, 0x86, 0x91, -0x9b, 0x9a, 0x8f, 0x7c, 0x67, 0x56, 0x5b, 0x79, 0x97, 0xa5, 0x9e, 0x84, 0x65, 0x58, 0x63, 0x79, -0x8f, 0x9c, 0x9c, 0x8f, 0x7c, 0x73, 0x6d, 0x6a, 0x6e, 0x76, 0x80, 0x88, 0x91, 0x94, 0x8c, 0x7e, -0x71, 0x69, 0x6b, 0x77, 0x88, 0x94, 0x94, 0x8c, 0x80, 0x73, 0x70, 0x77, 0x7a, 0x7b, 0x7b, 0x7d, -0x83, 0x87, 0x89, 0x85, 0x7a, 0x70, 0x6b, 0x72, 0x82, 0x91, 0x99, 0x96, 0x85, 0x65, 0x40, 0x37, -0x58, 0x9b, 0xd2, 0xd5, 0xa5, 0x68, 0x42, 0x3f, 0x54, 0x6b, 0x8a, 0xa7, 0xb4, 0xa9, 0x90, 0x7a, -0x72, 0x69, 0x58, 0x4f, 0x62, 0x94, 0xbd, 0xbf, 0x9c, 0x6f, 0x52, 0x46, 0x4a, 0x66, 0x96, 0xb8, -0xb3, 0x8e, 0x6a, 0x60, 0x6b, 0x74, 0x70, 0x70, 0x7a, 0x89, 0x93, 0x93, 0x8f, 0x86, 0x73, 0x60, -0x61, 0x7a, 0x98, 0xa4, 0x9b, 0x85, 0x71, 0x68, 0x6b, 0x78, 0x84, 0x89, 0x85, 0x7c, 0x7b, 0x84, -0x8b, 0x87, 0x79, 0x6c, 0x65, 0x69, 0x78, 0x8e, 0x98, 0x92, 0x85, 0x75, 0x6f, 0x71, 0x7c, 0x87, -0x8d, 0x8d, 0x86, 0x81, 0x7d, 0x7e, 0x80, 0x7e, 0x80, 0x85, 0x8c, 0x8e, 0x87, 0x6f, 0x45, 0x27, -0x38, 0x77, 0xc1, 0xe1, 0xcc, 0x94, 0x58, 0x2f, 0x29, 0x51, 0x8f, 0xb9, 0xbe, 0xab, 0x94, 0x81, -0x70, 0x65, 0x5d, 0x5f, 0x70, 0x93, 0xba, 0xc4, 0xae, 0x88, 0x58, 0x35, 0x38, 0x64, 0x99, 0xb5, -0xb2, 0x99, 0x79, 0x5e, 0x54, 0x5f, 0x70, 0x81, 0x8e, 0x92, 0x8d, 0x88, 0x83, 0x78, 0x6c, 0x68, -0x6d, 0x7c, 0x96, 0xac, 0xa8, 0x8f, 0x71, 0x60, 0x5e, 0x6c, 0x87, 0x9c, 0xa0, 0x97, 0x89, 0x79, -0x6f, 0x6d, 0x72, 0x79, 0x7d, 0x83, 0x85, 0x84, 0x83, 0x80, 0x7a, 0x75, 0x77, 0x7e, 0x84, 0x87, -0x86, 0x81, 0x7e, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7d, 0x7c, 0x7d, 0x82, 0x82, 0x81, 0x7d, 0x80, -0x89, 0x91, 0x8e, 0x6f, 0x3d, 0x23, 0x47, 0x9b, 0xe2, 0xea, 0xb9, 0x75, 0x43, 0x2e, 0x36, 0x5c, -0x95, 0xc0, 0xc1, 0xa2, 0x87, 0x82, 0x80, 0x6c, 0x50, 0x49, 0x69, 0x9a, 0xb9, 0xba, 0xa7, 0x85, -0x5a, 0x3d, 0x46, 0x73, 0xa1, 0xb4, 0xa6, 0x85, 0x69, 0x5e, 0x60, 0x67, 0x74, 0x8a, 0x9b, 0x9d, -0x93, 0x88, 0x79, 0x66, 0x58, 0x5c, 0x75, 0x9a, 0xb4, 0xb4, 0x9b, 0x7a, 0x60, 0x56, 0x5e, 0x78, -0x94, 0xa0, 0x9c, 0x8b, 0x79, 0x6c, 0x69, 0x6e, 0x76, 0x80, 0x8c, 0x94, 0x8e, 0x83, 0x75, 0x6b, -0x6b, 0x76, 0x8a, 0x99, 0x9c, 0x94, 0x81, 0x6c, 0x63, 0x67, 0x76, 0x89, 0x95, 0x96, 0x8d, 0x86, -0x7c, 0x75, 0x70, 0x71, 0x76, 0x82, 0x93, 0xa1, 0x9a, 0x72, 0x3d, 0x29, 0x51, 0xa2, 0xe2, 0xe7, -0xa9, 0x4e, 0x1d, 0x2d, 0x64, 0x9d, 0xb4, 0xab, 0x9a, 0x8e, 0x86, 0x7e, 0x72, 0x65, 0x58, 0x57, -0x6d, 0x95, 0xbc, 0xc6, 0xa5, 0x6a, 0x3a, 0x34, 0x59, 0x8d, 0xae, 0xb0, 0x9c, 0x81, 0x6a, 0x61, -0x67, 0x77, 0x83, 0x85, 0x84, 0x87, 0x92, 0x95, 0x88, 0x71, 0x60, 0x63, 0x7b, 0x96, 0xa5, 0xa3, -0x8e, 0x70, 0x5c, 0x5a, 0x6b, 0x86, 0x9a, 0x9e, 0x92, 0x84, 0x77, 0x70, 0x6d, 0x6c, 0x70, 0x77, -0x83, 0x8e, 0x91, 0x8c, 0x83, 0x76, 0x71, 0x76, 0x83, 0x90, 0x94, 0x8f, 0x84, 0x78, 0x71, 0x72, -0x78, 0x82, 0x8b, 0x8c, 0x87, 0x7d, 0x73, 0x63, 0x4f, 0x4a, 0x65, 0x94, 0xba, 0xc1, 0xab, 0x85, -0x58, 0x3f, 0x49, 0x6b, 0x91, 0xae, 0xb7, 0xa8, 0x8c, 0x76, 0x6e, 0x69, 0x65, 0x6f, 0x85, 0x99, -0xa5, 0xa1, 0x8e, 0x6f, 0x54, 0x4d, 0x5c, 0x7b, 0x9d, 0xae, 0xa8, 0x8e, 0x6f, 0x5a, 0x53, 0x5c, -0x72, 0x86, 0x94, 0x9b, 0x98, 0x8b, 0x7a, 0x71, 0x6e, 0x6f, 0x79, 0x8a, 0x99, 0x9e, 0x94, 0x82, -0x70, 0x66, 0x69, 0x75, 0x88, 0x97, 0x9d, 0x94, 0x82, 0x71, 0x6a, 0x68, 0x6d, 0x79, 0x86, 0x8d, -0x90, 0x8c, 0x83, 0x75, 0x6b, 0x69, 0x6f, 0x7d, 0x90, 0x9a, 0x9a, 0x8d, 0x77, 0x67, 0x64, 0x6f, -0x81, 0x91, 0x9a, 0x94, 0x85, 0x76, 0x74, 0x7d, 0x84, 0x76, 0x55, 0x3a, 0x4d, 0x8f, 0xcf, 0xdd, -0xb2, 0x73, 0x45, 0x36, 0x48, 0x70, 0xa5, 0xc4, 0xb8, 0x91, 0x71, 0x6f, 0x78, 0x75, 0x6b, 0x68, -0x74, 0x8e, 0xa8, 0xae, 0x9b, 0x76, 0x54, 0x47, 0x54, 0x7b, 0xa8, 0xbe, 0xae, 0x84, 0x5f, 0x51, -0x5a, 0x6a, 0x7a, 0x8b, 0x96, 0x9c, 0x9a, 0x8f, 0x7c, 0x68, 0x5a, 0x5c, 0x70, 0x91, 0xac, 0xb0, -0x9d, 0x79, 0x5b, 0x53, 0x61, 0x78, 0x8e, 0x9b, 0x98, 0x8a, 0x7a, 0x71, 0x72, 0x76, 0x79, 0x7a, -0x7e, 0x88, 0x8f, 0x90, 0x88, 0x7a, 0x71, 0x6f, 0x77, 0x85, 0x8c, 0x8b, 0x82, 0x75, 0x6e, 0x73, -0x80, 0x8b, 0x91, 0x8e, 0x87, 0x82, 0x83, 0x80, 0x69, 0x44, 0x2e, 0x4a, 0x8f, 0xd4, 0xec, 0xc6, -0x81, 0x45, 0x27, 0x30, 0x5c, 0x9a, 0xc7, 0xc5, 0xa5, 0x83, 0x71, 0x6d, 0x67, 0x61, 0x61, 0x75, -0x97, 0xb7, 0xc0, 0xa8, 0x76, 0x48, 0x32, 0x40, 0x6f, 0xa7, 0xc6, 0xbf, 0x9d, 0x71, 0x54, 0x4f, -0x5c, 0x6e, 0x7d, 0x8a, 0x95, 0x9b, 0x98, 0x8b, 0x77, 0x66, 0x60, 0x6a, 0x82, 0x9b, 0xab, 0xa7, -0x8e, 0x6e, 0x5a, 0x5b, 0x6d, 0x89, 0x9f, 0xa3, 0x96, 0x81, 0x71, 0x6c, 0x6e, 0x76, 0x7d, 0x84, -0x89, 0x8a, 0x87, 0x7d, 0x74, 0x6d, 0x6a, 0x74, 0x87, 0x97, 0x9d, 0x94, 0x85, 0x74, 0x69, 0x69, -0x73, 0x82, 0x8b, 0x8d, 0x89, 0x83, 0x7d, 0x7b, 0x81, 0x85, 0x87, 0x81, 0x6e, 0x58, 0x53, 0x6e, -0x9a, 0xb6, 0xac, 0x87, 0x65, 0x56, 0x59, 0x6f, 0x8a, 0x9e, 0xa3, 0x97, 0x85, 0x7a, 0x76, 0x75, -0x73, 0x71, 0x71, 0x78, 0x89, 0x9a, 0xa0, 0x97, 0x82, 0x6b, 0x60, 0x65, 0x79, 0x90, 0x99, 0x94, -0x87, 0x75, 0x6e, 0x72, 0x7b, 0x81, 0x81, 0x81, 0x83, 0x87, 0x88, 0x84, 0x7c, 0x76, 0x72, 0x74, -0x7b, 0x84, 0x8c, 0x8d, 0x87, 0x7d, 0x77, 0x73, 0x77, 0x7d, 0x80, 0x7e, 0x7d, 0x7e, 0x81, 0x82, -0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x7e, 0x81, 0x84, 0x83, 0x81, 0x81, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, -0x7c, 0x7e, 0x84, 0x86, 0x86, 0x83, 0x7d, 0x79, 0x77, 0x79, 0x7c, 0x80, 0x81, 0x81, 0x80, 0x7e, -0x7e, 0x80, 0x81, 0x81, 0x7d, 0x7b, 0x7c, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, -0x7e, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x84, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7b, 0x7a, 0x7b, 0x7d, -0x7e, 0x80, 0x82, 0x84, 0x84, 0x84, 0x84, 0x81, 0x7d, 0x7c, 0x7c, 0x7c, 0x7a, 0x7b, 0x80, 0x82, -0x84, 0x86, 0x85, 0x82, 0x80, 0x80, 0x7e, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7e, 0x82, 0x84, 0x84, -0x83, 0x80, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, -0x7e, 0x80, 0x80, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x7d, 0x7c, 0x7a, 0x78, 0x7a, 0x7d, 0x82, 0x84, -0x83, 0x7e, 0x7b, 0x7b, 0x7d, 0x80, 0x80, 0x7d, 0x7a, 0x79, 0x7a, 0x7d, 0x83, 0x86, 0x87, 0x86, -0x81, 0x7c, 0x79, 0x78, 0x77, 0x78, 0x7b, 0x80, 0x84, 0x88, 0x89, 0x87, 0x83, 0x7e, 0x7a, 0x7a, -0x7a, 0x7c, 0x80, 0x82, 0x83, 0x83, 0x83, 0x84, 0x82, 0x80, 0x7d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7e, -0x80, 0x83, 0x86, 0x86, 0x83, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x80, 0x7e, 0x80, -0x82, 0x82, 0x82, 0x80, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7c, 0x80, 0x82, 0x81, -0x82, 0x82, 0x83, 0x81, 0x7c, 0x7b, 0x7b, 0x7b, 0x7d, 0x7e, 0x82, 0x84, 0x85, 0x84, 0x83, 0x7e, -0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7c, 0x7a, 0x7a, 0x7d, 0x84, 0x88, -0x8b, 0x88, 0x80, 0x78, 0x73, 0x72, 0x75, 0x78, 0x7c, 0x80, 0x83, 0x84, 0x85, 0x85, 0x85, 0x82, -0x7d, 0x77, 0x75, 0x76, 0x7a, 0x80, 0x84, 0x86, 0x86, 0x86, 0x85, 0x83, 0x7e, 0x7b, 0x78, 0x76, -0x78, 0x7b, 0x80, 0x83, 0x85, 0x84, 0x80, 0x7d, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x82, 0x83, 0x84, -0x84, 0x82, 0x7e, 0x7c, 0x7c, 0x7d, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, -0x81, 0x81, 0x80, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7a, -0x7b, 0x7e, 0x81, 0x82, 0x84, 0x83, 0x80, 0x7b, 0x78, 0x77, 0x79, 0x7b, 0x81, 0x88, 0x8b, 0x8a, -0x86, 0x7d, 0x77, 0x75, 0x76, 0x7a, 0x7d, 0x81, 0x81, 0x81, 0x81, 0x82, 0x83, 0x83, 0x80, 0x7c, -0x7c, 0x7d, 0x7d, 0x7e, 0x7b, 0x78, 0x76, 0x78, 0x7c, 0x82, 0x85, 0x83, 0x81, 0x7d, 0x79, 0x77, -0x76, 0x76, 0x79, 0x7a, 0x7d, 0x81, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x7b, 0x79, 0x79, 0x7b, 0x81, -0x82, 0x82, 0x82, 0x80, 0x7d, 0x7b, 0x7b, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x7e, -0x7b, 0x7c, 0x7e, 0x81, 0x82, 0x83, 0x80, 0x7b, 0x7a, 0x7c, 0x80, 0x83, 0x87, 0x87, 0x82, 0x7e, -0x7c, 0x7c, 0x7e, 0x82, 0x84, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7c, 0x7a, 0x77, 0x76, -0x77, 0x7a, 0x81, 0x85, 0x87, 0x87, 0x83, 0x7e, 0x7c, 0x7b, 0x7a, 0x7c, 0x7d, 0x7c, 0x7e, 0x83, -0x87, 0x89, 0x87, 0x82, 0x7c, 0x79, 0x79, 0x7b, 0x84, 0x88, 0x87, 0x82, 0x7e, 0x7c, 0x7b, 0x7d, -0x7e, 0x7e, 0x81, 0x82, 0x81, 0x82, 0x84, 0x83, 0x81, 0x7d, 0x7b, 0x7b, 0x7d, 0x82, 0x85, 0x85, -0x83, 0x80, 0x80, 0x81, 0x82, 0x83, 0x80, 0x7a, 0x79, 0x7a, 0x7d, 0x81, 0x82, 0x80, 0x7b, 0x79, -0x7b, 0x7d, 0x80, 0x82, 0x83, 0x81, 0x7e, 0x80, 0x80, 0x83, 0x83, 0x80, 0x7c, 0x79, 0x78, 0x7a, -0x7e, 0x80, 0x81, 0x80, 0x80, 0x83, 0x84, 0x84, 0x84, 0x81, 0x7b, 0x76, 0x76, 0x78, 0x7c, 0x82, -0x86, 0x87, 0x84, 0x81, 0x79, 0x74, 0x75, 0x79, 0x81, 0x86, 0x88, 0x83, 0x7c, 0x7a, 0x7d, 0x83, -0x87, 0x86, 0x80, 0x79, 0x78, 0x7a, 0x7e, 0x83, 0x81, 0x7a, 0x76, 0x77, 0x7e, 0x89, 0x8f, 0x8d, -0x85, 0x7c, 0x79, 0x7a, 0x80, 0x84, 0x83, 0x80, 0x7c, 0x7c, 0x80, 0x84, 0x85, 0x7e, 0x78, 0x74, -0x76, 0x7e, 0x86, 0x8c, 0x8b, 0x82, 0x78, 0x78, 0x7c, 0x80, 0x83, 0x84, 0x7e, 0x79, 0x7a, 0x7d, -0x81, 0x83, 0x82, 0x7c, 0x7c, 0x82, 0x87, 0x89, 0x86, 0x7e, 0x74, 0x6f, 0x72, 0x79, 0x7e, 0x82, -0x82, 0x82, 0x84, 0x87, 0x89, 0x89, 0x85, 0x7e, 0x78, 0x77, 0x7a, 0x7e, 0x82, 0x82, 0x80, 0x7e, -0x7e, 0x80, 0x7e, 0x76, 0x6e, 0x6b, 0x70, 0x7b, 0x85, 0x8d, 0x89, 0x80, 0x7a, 0x7c, 0x82, 0x86, -0x87, 0x81, 0x77, 0x74, 0x79, 0x83, 0x8a, 0x8a, 0x80, 0x74, 0x70, 0x73, 0x80, 0x8c, 0x8f, 0x8a, -0x85, 0x82, 0x83, 0x88, 0x89, 0x82, 0x76, 0x70, 0x70, 0x77, 0x86, 0x8f, 0x8d, 0x85, 0x7b, 0x77, -0x79, 0x81, 0x86, 0x83, 0x7a, 0x76, 0x79, 0x82, 0x89, 0x8a, 0x84, 0x79, 0x72, 0x74, 0x7a, 0x82, -0x87, 0x84, 0x7b, 0x78, 0x7d, 0x86, 0x8d, 0x8e, 0x87, 0x7d, 0x75, 0x75, 0x77, 0x7b, 0x7d, 0x7c, -0x7b, 0x7e, 0x86, 0x8c, 0x8f, 0x8b, 0x81, 0x76, 0x72, 0x76, 0x7a, 0x7e, 0x80, 0x7e, 0x81, 0x82, -0x86, 0x87, 0x82, 0x79, 0x6b, 0x64, 0x65, 0x72, 0x85, 0x8d, 0x8e, 0x87, 0x7b, 0x78, 0x7d, 0x84, -0x84, 0x80, 0x77, 0x6f, 0x73, 0x7d, 0x89, 0x8e, 0x89, 0x7d, 0x74, 0x77, 0x80, 0x8c, 0x90, 0x8a, -0x80, 0x79, 0x80, 0x87, 0x8c, 0x8c, 0x84, 0x77, 0x6f, 0x73, 0x7e, 0x88, 0x8a, 0x86, 0x7e, 0x78, -0x7b, 0x84, 0x87, 0x83, 0x7a, 0x72, 0x70, 0x75, 0x80, 0x86, 0x82, 0x7d, 0x7a, 0x7a, 0x82, 0x88, -0x89, 0x85, 0x7e, 0x7a, 0x79, 0x7d, 0x82, 0x81, 0x79, 0x75, 0x73, 0x77, 0x80, 0x86, 0x89, 0x87, -0x84, 0x85, 0x84, 0x85, 0x83, 0x7e, 0x79, 0x75, 0x76, 0x78, 0x7b, 0x7e, 0x80, 0x81, 0x82, 0x83, -0x82, 0x7a, 0x70, 0x68, 0x68, 0x72, 0x7e, 0x86, 0x86, 0x7e, 0x78, 0x7c, 0x85, 0x8e, 0x8f, 0x84, -0x72, 0x65, 0x69, 0x76, 0x85, 0x8d, 0x88, 0x7b, 0x75, 0x7a, 0x85, 0x90, 0x91, 0x84, 0x76, 0x73, -0x79, 0x84, 0x8e, 0x8e, 0x81, 0x74, 0x73, 0x79, 0x83, 0x88, 0x86, 0x7c, 0x75, 0x79, 0x84, 0x8b, -0x8d, 0x85, 0x79, 0x71, 0x71, 0x79, 0x82, 0x82, 0x7d, 0x77, 0x74, 0x7b, 0x86, 0x87, 0x83, 0x7b, -0x76, 0x75, 0x7d, 0x88, 0x8b, 0x85, 0x7c, 0x76, 0x75, 0x79, 0x83, 0x84, 0x81, 0x7e, 0x7d, 0x81, -0x86, 0x8a, 0x88, 0x83, 0x7e, 0x7e, 0x81, 0x82, 0x82, 0x7e, 0x7a, 0x79, 0x7b, 0x84, 0x89, 0x86, -0x7d, 0x6e, 0x64, 0x67, 0x75, 0x82, 0x88, 0x85, 0x7a, 0x75, 0x7b, 0x89, 0x91, 0x90, 0x87, 0x74, -0x6a, 0x6e, 0x7a, 0x88, 0x8a, 0x82, 0x78, 0x75, 0x7d, 0x89, 0x92, 0x8f, 0x81, 0x74, 0x72, 0x7b, -0x87, 0x8d, 0x8b, 0x7d, 0x74, 0x76, 0x80, 0x89, 0x8b, 0x85, 0x7b, 0x76, 0x78, 0x83, 0x89, 0x86, -0x80, 0x7a, 0x78, 0x80, 0x89, 0x8b, 0x86, 0x7d, 0x76, 0x74, 0x78, 0x80, 0x82, 0x80, 0x80, 0x83, -0x85, 0x89, 0x8d, 0x89, 0x7e, 0x78, 0x76, 0x78, 0x79, 0x7c, 0x80, 0x7e, 0x81, 0x86, 0x89, 0x89, -0x88, 0x85, 0x81, 0x80, 0x81, 0x81, 0x7e, 0x7c, 0x7b, 0x7a, 0x7d, 0x83, 0x85, 0x81, 0x76, 0x6c, -0x65, 0x6a, 0x77, 0x82, 0x87, 0x86, 0x7c, 0x77, 0x80, 0x8b, 0x91, 0x8e, 0x82, 0x73, 0x6b, 0x6f, -0x7b, 0x85, 0x87, 0x80, 0x77, 0x78, 0x82, 0x8a, 0x90, 0x8a, 0x7b, 0x73, 0x76, 0x81, 0x8a, 0x8f, -0x8b, 0x7e, 0x77, 0x78, 0x7c, 0x82, 0x82, 0x7c, 0x78, 0x78, 0x7e, 0x89, 0x8b, 0x88, 0x82, 0x7b, -0x79, 0x7c, 0x81, 0x80, 0x7a, 0x77, 0x76, 0x78, 0x80, 0x86, 0x86, 0x83, 0x82, 0x82, 0x83, 0x85, -0x84, 0x7c, 0x77, 0x78, 0x7a, 0x7e, 0x82, 0x82, 0x7c, 0x7a, 0x7b, 0x7d, 0x82, 0x84, 0x83, 0x83, -0x84, 0x86, 0x88, 0x87, 0x82, 0x7d, 0x7b, 0x7b, 0x7e, 0x81, 0x81, 0x7e, 0x78, 0x6f, 0x6d, 0x73, -0x7c, 0x85, 0x87, 0x82, 0x79, 0x77, 0x80, 0x89, 0x8e, 0x8c, 0x81, 0x73, 0x6e, 0x72, 0x7c, 0x83, -0x81, 0x7b, 0x77, 0x7a, 0x85, 0x8e, 0x91, 0x89, 0x7c, 0x77, 0x79, 0x81, 0x8a, 0x8b, 0x85, 0x7b, -0x79, 0x7d, 0x82, 0x84, 0x82, 0x7b, 0x75, 0x78, 0x81, 0x84, 0x86, 0x82, 0x7c, 0x79, 0x7c, 0x83, -0x84, 0x7e, 0x7a, 0x77, 0x75, 0x7a, 0x81, 0x82, 0x80, 0x80, 0x7e, 0x7e, 0x82, 0x85, 0x84, 0x82, -0x81, 0x80, 0x7e, 0x7d, 0x7b, 0x79, 0x78, 0x7b, 0x81, 0x85, 0x89, 0x88, 0x86, 0x84, 0x81, 0x81, -0x81, 0x80, 0x81, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7a, 0x74, 0x6e, 0x6d, 0x73, 0x7c, 0x85, -0x88, 0x87, 0x83, 0x82, 0x84, 0x85, 0x83, 0x7a, 0x73, 0x70, 0x73, 0x7c, 0x83, 0x84, 0x80, 0x7b, -0x7a, 0x7e, 0x84, 0x87, 0x84, 0x7c, 0x7a, 0x7c, 0x80, 0x85, 0x86, 0x85, 0x83, 0x83, 0x85, 0x84, -0x80, 0x7b, 0x79, 0x78, 0x7c, 0x83, 0x85, 0x85, 0x83, 0x80, 0x7c, 0x7c, 0x7e, 0x7c, 0x7a, 0x7c, -0x7e, 0x81, 0x83, 0x82, 0x80, 0x7d, 0x7d, 0x80, 0x7d, 0x7a, 0x7a, 0x7a, 0x7c, 0x81, 0x84, 0x84, -0x81, 0x7d, 0x7a, 0x78, 0x79, 0x79, 0x7b, 0x80, 0x83, 0x87, 0x88, 0x87, 0x85, 0x82, 0x80, 0x7e, -0x7d, 0x7c, 0x79, 0x76, 0x76, 0x7a, 0x7d, 0x7e, 0x7c, 0x74, 0x6e, 0x6f, 0x75, 0x7e, 0x85, 0x8a, -0x8a, 0x86, 0x84, 0x81, 0x79, 0x76, 0x76, 0x76, 0x79, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x81, 0x83, -0x83, 0x7e, 0x7a, 0x76, 0x77, 0x7e, 0x85, 0x8a, 0x8d, 0x8b, 0x86, 0x7e, 0x79, 0x76, 0x76, 0x79, -0x81, 0x84, 0x84, 0x84, 0x83, 0x83, 0x85, 0x8a, 0x89, 0x83, 0x7c, 0x78, 0x76, 0x77, 0x7b, 0x82, -0x85, 0x86, 0x87, 0x83, 0x7c, 0x7a, 0x79, 0x79, 0x7b, 0x7e, 0x7d, 0x7d, 0x80, 0x83, 0x86, 0x88, -0x87, 0x83, 0x7d, 0x7a, 0x79, 0x7a, 0x7d, 0x83, 0x85, 0x87, 0x86, 0x83, 0x81, 0x7e, 0x7c, 0x7c, -0x7b, 0x78, 0x77, 0x77, 0x77, 0x7a, 0x7e, 0x82, 0x82, 0x80, 0x7b, 0x77, 0x77, 0x7c, 0x84, 0x8b, -0x8e, 0x8b, 0x83, 0x79, 0x73, 0x70, 0x70, 0x74, 0x79, 0x7c, 0x7e, 0x7d, 0x7c, 0x7e, 0x85, 0x8a, -0x8d, 0x8b, 0x84, 0x7b, 0x77, 0x79, 0x80, 0x86, 0x89, 0x88, 0x83, 0x7d, 0x7b, 0x7a, 0x7c, 0x7e, -0x80, 0x80, 0x7e, 0x7c, 0x7c, 0x82, 0x89, 0x8e, 0x8d, 0x88, 0x80, 0x77, 0x76, 0x78, 0x7d, 0x83, -0x86, 0x86, 0x84, 0x82, 0x81, 0x82, 0x83, 0x83, 0x81, 0x7b, 0x77, 0x76, 0x7b, 0x82, 0x88, 0x89, -0x86, 0x81, 0x7b, 0x79, 0x79, 0x7c, 0x80, 0x80, 0x7e, 0x7c, 0x7b, 0x7c, 0x7c, 0x7e, 0x80, 0x81, -0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x82, 0x83, 0x82, 0x81, 0x7b, 0x73, 0x6e, 0x6e, -0x72, 0x79, 0x83, 0x89, 0x89, 0x86, 0x80, 0x7b, 0x78, 0x78, 0x7c, 0x80, 0x83, 0x83, 0x81, 0x80, -0x82, 0x85, 0x86, 0x83, 0x7d, 0x77, 0x74, 0x75, 0x79, 0x81, 0x88, 0x8c, 0x8a, 0x86, 0x82, 0x7e, -0x7e, 0x80, 0x81, 0x7e, 0x7c, 0x7a, 0x7a, 0x7d, 0x83, 0x86, 0x86, 0x85, 0x81, 0x7d, 0x7b, 0x7c, -0x80, 0x82, 0x84, 0x84, 0x81, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x7d, 0x7a, 0x79, 0x7c, 0x81, 0x87, -0x89, 0x88, 0x85, 0x7e, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x7d, 0x7a, 0x7a, 0x7b, 0x7e, 0x83, 0x84, -0x84, 0x80, 0x7b, 0x7b, 0x7d, 0x81, 0x83, 0x84, 0x85, 0x86, 0x85, 0x85, 0x85, 0x84, 0x83, 0x81, -0x7d, 0x79, 0x77, 0x78, 0x7c, 0x81, 0x84, 0x86, 0x85, 0x82, 0x7d, 0x7a, 0x78, 0x7a, 0x80, 0x82, -0x81, 0x7d, 0x7a, 0x7b, 0x80, 0x84, 0x87, 0x87, 0x83, 0x7d, 0x79, 0x79, 0x7d, 0x82, 0x85, 0x85, -0x83, 0x82, 0x81, 0x82, 0x82, 0x82, 0x7e, 0x7b, 0x78, 0x76, 0x77, 0x7d, 0x84, 0x88, 0x88, 0x84, -0x80, 0x7b, 0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, 0x7e, 0x82, 0x84, 0x84, 0x82, 0x80, 0x7c, 0x7a, -0x79, 0x79, 0x7a, 0x7c, 0x7d, 0x7e, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, -0x7d, 0x80, 0x83, 0x85, 0x86, 0x85, 0x83, 0x7e, 0x7c, 0x7a, 0x7a, 0x7b, 0x7c, 0x7e, 0x81, 0x83, -0x83, 0x82, 0x81, 0x7e, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x79, 0x7b, 0x7e, 0x83, 0x85, 0x85, 0x83, -0x80, 0x7c, 0x78, 0x77, 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x83, 0x84, 0x84, 0x83, 0x81, 0x7d, 0x7a, -0x78, 0x77, 0x79, 0x7c, 0x80, 0x83, 0x84, 0x84, 0x84, 0x85, 0x84, 0x83, 0x83, 0x7e, 0x7c, 0x7c, -0x7c, 0x7d, 0x81, 0x83, 0x84, 0x85, 0x84, 0x83, 0x82, 0x80, 0x7e, 0x7c, 0x7c, 0x7b, 0x7d, 0x81, -0x82, 0x85, 0x87, 0x87, 0x85, 0x82, 0x7e, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x83, 0x85, 0x85, 0x84, -0x81, 0x7e, 0x7c, 0x79, 0x78, 0x78, 0x7a, 0x7e, 0x81, 0x83, 0x83, 0x82, 0x7e, 0x7b, 0x78, 0x77, -0x79, 0x7b, 0x7e, 0x81, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x82, -0x7e, 0x7b, 0x7b, 0x7c, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x78, 0x77, -0x79, 0x7c, 0x82, 0x86, 0x87, 0x87, 0x85, 0x80, 0x7c, 0x79, 0x75, 0x75, 0x77, 0x7a, 0x80, 0x84, -0x87, 0x89, 0x87, 0x85, 0x81, 0x7a, 0x76, 0x75, 0x76, 0x79, 0x7d, 0x82, 0x85, 0x86, 0x85, 0x83, -0x81, 0x7c, 0x7a, 0x7a, 0x7b, 0x7d, 0x80, 0x82, 0x85, 0x86, 0x85, 0x84, 0x82, 0x80, 0x7d, 0x7d, -0x7c, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x83, 0x84, 0x85, 0x83, 0x81, 0x7e, 0x7d, 0x7a, 0x7a, -0x7b, 0x7b, 0x7c, 0x80, 0x83, 0x84, 0x84, 0x83, 0x82, 0x7e, 0x7a, 0x78, 0x78, 0x79, 0x7b, 0x7e, -0x82, 0x84, 0x85, 0x84, 0x80, 0x7c, 0x7a, 0x78, 0x77, 0x75, 0x75, 0x77, 0x7b, 0x7e, 0x82, 0x84, -0x83, 0x81, 0x7d, 0x7b, 0x77, 0x76, 0x78, 0x79, 0x79, 0x79, 0x7b, 0x7e, 0x82, 0x85, 0x87, 0x86, -0x82, 0x7c, 0x77, 0x76, 0x76, 0x77, 0x79, 0x7b, 0x80, 0x83, 0x86, 0x88, 0x87, 0x83, 0x7d, 0x77, -0x74, 0x75, 0x79, 0x7e, 0x85, 0x87, 0x87, 0x84, 0x80, 0x7c, 0x7a, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, -0x7e, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7e, -0x81, 0x83, 0x84, 0x83, 0x83, 0x81, 0x7e, 0x7d, 0x7b, 0x7a, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x84, -0x85, 0x86, 0x85, 0x82, 0x80, 0x7d, 0x7a, 0x79, 0x7b, 0x7d, 0x81, 0x84, 0x85, 0x85, 0x84, 0x83, -0x81, 0x7e, 0x7b, 0x79, 0x78, 0x76, 0x78, 0x7a, 0x7e, 0x82, 0x83, 0x82, 0x81, 0x80, 0x7d, 0x7a, -0x79, 0x7b, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x82, 0x83, 0x83, 0x80, 0x7d, 0x7d, 0x7e, 0x80, 0x81, -0x81, 0x80, 0x7d, 0x7d, 0x80, 0x84, 0x87, 0x89, 0x88, 0x85, 0x81, 0x7c, 0x79, 0x77, 0x78, 0x7d, -0x84, 0x88, 0x8a, 0x89, 0x87, 0x85, 0x83, 0x82, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, -0x80, 0x81, 0x83, 0x83, 0x83, 0x81, 0x7e, 0x7a, 0x77, 0x77, 0x78, 0x7b, 0x7e, 0x83, 0x86, 0x86, -0x85, 0x84, 0x82, 0x7e, 0x7b, 0x78, 0x75, 0x76, 0x7b, 0x7e, 0x84, 0x8a, 0x8c, 0x8b, 0x87, 0x80, -0x7a, 0x76, 0x75, 0x76, 0x79, 0x7d, 0x83, 0x86, 0x87, 0x87, 0x85, 0x82, 0x80, 0x7e, 0x7d, 0x7b, -0x7a, 0x79, 0x78, 0x79, 0x7d, 0x81, 0x83, 0x85, 0x85, 0x84, 0x82, 0x7e, 0x7d, 0x7c, 0x7a, 0x7a, -0x7c, 0x7d, 0x81, 0x84, 0x87, 0x88, 0x87, 0x84, 0x7e, 0x7b, 0x7a, 0x78, 0x79, 0x7b, 0x7d, 0x81, -0x84, 0x87, 0x88, 0x88, 0x86, 0x82, 0x7c, 0x79, 0x78, 0x79, 0x7b, 0x7d, 0x81, 0x83, 0x84, 0x84, -0x85, 0x84, 0x82, 0x80, 0x7c, 0x7b, 0x79, 0x79, 0x78, 0x7b, 0x88, 0x90, 0x8e, 0x89, 0x82, 0x7a, -0x76, 0x77, 0x79, 0x7b, 0x81, 0x86, 0x89, 0x89, 0x82, 0x7b, 0x79, 0x7a, 0x7d, 0x80, 0x81, 0x82, -0x81, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, 0x78, 0x78, 0x87, 0x94, 0x92, 0x83, 0x7a, 0x78, 0x75, 0x74, -0x73, 0x7c, 0x8b, 0x90, 0x8f, 0x8e, 0x89, 0x81, 0x7a, 0x77, 0x78, 0x77, 0x6e, 0x63, 0x60, 0x66, -0x77, 0x8f, 0xa3, 0xa9, 0xa3, 0x95, 0x83, 0x70, 0x64, 0x60, 0x5e, 0x58, 0x53, 0x5c, 0x74, 0x95, -0xb6, 0xc8, 0xc1, 0xa5, 0x85, 0x66, 0x51, 0x4f, 0x5c, 0x6f, 0x80, 0x8a, 0x97, 0xa9, 0xb6, 0xb8, -0xaa, 0x85, 0x54, 0x33, 0x30, 0x3e, 0x59, 0x80, 0xa0, 0xaf, 0xae, 0xa9, 0xa2, 0x96, 0x89, 0x74, -0x56, 0x3b, 0x3b, 0x56, 0x78, 0x9e, 0xbb, 0xbe, 0xaa, 0x93, 0x7c, 0x67, 0x60, 0x63, 0x63, 0x61, -0x68, 0x83, 0xa8, 0xc1, 0xc5, 0xae, 0x81, 0x52, 0x38, 0x33, 0x43, 0x64, 0x8a, 0xa4, 0xb0, 0xb0, -0xaa, 0x9c, 0x87, 0x71, 0x5f, 0x57, 0x5d, 0x6c, 0x7d, 0x8c, 0x96, 0x97, 0x90, 0x84, 0x77, 0x72, -0x70, 0x71, 0x72, 0x73, 0x7b, 0x8e, 0xa3, 0xa9, 0x92, 0x64, 0x33, 0x1e, 0x39, 0x79, 0xb4, 0xd1, -0xd3, 0xbe, 0xa1, 0x88, 0x71, 0x65, 0x61, 0x5c, 0x53, 0x53, 0x6d, 0xa1, 0xd2, 0xdd, 0xbf, 0x87, -0x53, 0x35, 0x32, 0x43, 0x5d, 0x79, 0x8d, 0x97, 0x9e, 0xa7, 0xb0, 0xb0, 0x95, 0x67, 0x3f, 0x33, -0x4b, 0x78, 0xa3, 0xba, 0xbb, 0xb0, 0xa0, 0x8b, 0x77, 0x6d, 0x63, 0x54, 0x4b, 0x53, 0x6f, 0x97, -0xb8, 0xbc, 0xa2, 0x7c, 0x5c, 0x4d, 0x4d, 0x5b, 0x72, 0x8a, 0x9b, 0xa1, 0xa2, 0xa3, 0x9f, 0x92, -0x79, 0x5e, 0x52, 0x5e, 0x78, 0x94, 0xa3, 0xa2, 0x92, 0x79, 0x69, 0x65, 0x6c, 0x75, 0x76, 0x73, -0x76, 0x83, 0x91, 0x9d, 0x9c, 0x8b, 0x75, 0x67, 0x63, 0x6d, 0x81, 0x99, 0xae, 0xb5, 0xa1, 0x66, -0x1f, 0x8, 0x2d, 0x74, 0xbb, 0xda, 0xce, 0xb5, 0x9f, 0x88, 0x6e, 0x5d, 0x55, 0x51, 0x4d, 0x54, -0x72, 0xa6, 0xd0, 0xd6, 0xb5, 0x7b, 0x4a, 0x34, 0x35, 0x4b, 0x66, 0x7e, 0x90, 0x9d, 0xa8, 0xb2, -0xb6, 0xa6, 0x81, 0x53, 0x39, 0x3f, 0x5c, 0x84, 0xaa, 0xc0, 0xb7, 0x9a, 0x84, 0x77, 0x6b, 0x5e, -0x55, 0x54, 0x58, 0x6c, 0x91, 0xab, 0xb4, 0xad, 0x94, 0x6f, 0x52, 0x50, 0x61, 0x75, 0x86, 0x93, -0x9c, 0xa1, 0xa4, 0x9f, 0x8d, 0x70, 0x5b, 0x50, 0x55, 0x68, 0x84, 0x9a, 0x9e, 0x93, 0x84, 0x76, -0x6f, 0x6f, 0x75, 0x79, 0x7c, 0x85, 0x8d, 0x90, 0x8d, 0x88, 0x7e, 0x71, 0x67, 0x68, 0x73, 0x84, -0x93, 0x9f, 0xa0, 0x93, 0x6c, 0x35, 0x17, 0x26, 0x57, 0x9b, 0xd4, 0xf0, 0xe9, 0xc5, 0x98, 0x6c, -0x4d, 0x3f, 0x3b, 0x40, 0x56, 0x7c, 0xaf, 0xdb, 0xe1, 0xba, 0x76, 0x3d, 0x1e, 0x1e, 0x39, 0x60, -0x91, 0xb9, 0xc6, 0xc2, 0xc0, 0xb9, 0x9a, 0x6a, 0x44, 0x38, 0x42, 0x69, 0xa0, 0xc2, 0xc5, 0xb5, -0x9b, 0x71, 0x4a, 0x3f, 0x46, 0x4a, 0x54, 0x6d, 0x90, 0xaf, 0xc1, 0xc0, 0xa7, 0x7e, 0x5f, 0x55, -0x56, 0x66, 0x83, 0x9e, 0xa8, 0xa6, 0xa2, 0x9a, 0x88, 0x6c, 0x54, 0x40, 0x3d, 0x4e, 0x6e, 0x8e, -0xa5, 0xb1, 0xab, 0x9a, 0x86, 0x79, 0x75, 0x72, 0x70, 0x70, 0x71, 0x79, 0x86, 0x90, 0x91, 0x89, -0x7d, 0x72, 0x67, 0x64, 0x6b, 0x75, 0x7b, 0x82, 0x8a, 0x93, 0x98, 0x99, 0x94, 0x89, 0x79, 0x61, -0x40, 0x2a, 0x3c, 0x7a, 0xc5, 0xf6, 0xed, 0xb9, 0x7d, 0x56, 0x49, 0x46, 0x41, 0x45, 0x5a, 0x7e, -0xa8, 0xc4, 0xcd, 0xbe, 0x97, 0x61, 0x33, 0x21, 0x3a, 0x6d, 0x9e, 0xb3, 0xb5, 0xb3, 0xad, 0x9d, -0x81, 0x5d, 0x41, 0x3b, 0x4b, 0x6e, 0x9a, 0xbf, 0xc9, 0xad, 0x80, 0x54, 0x3f, 0x47, 0x59, 0x6b, -0x7c, 0x94, 0xac, 0xb7, 0xb0, 0xa0, 0x89, 0x6c, 0x52, 0x49, 0x54, 0x6d, 0x8a, 0x99, 0x99, 0x94, -0x90, 0x8b, 0x80, 0x71, 0x68, 0x67, 0x6a, 0x74, 0x85, 0x93, 0x9b, 0x99, 0x91, 0x85, 0x7b, 0x78, -0x76, 0x72, 0x72, 0x77, 0x82, 0x89, 0x8b, 0x89, 0x83, 0x7a, 0x74, 0x6f, 0x6f, 0x76, 0x85, 0x91, -0x91, 0x89, 0x82, 0x7c, 0x7c, 0x80, 0x8a, 0x94, 0x99, 0x8c, 0x54, 0x20, 0x1c, 0x43, 0x92, 0xda, -0xef, 0xd6, 0xb0, 0x90, 0x71, 0x53, 0x3f, 0x44, 0x56, 0x61, 0x71, 0x9a, 0xca, 0xd8, 0xb0, 0x66, -0x2c, 0x25, 0x3f, 0x63, 0x83, 0x9f, 0xb7, 0xc2, 0xb8, 0xa3, 0x8f, 0x7b, 0x61, 0x41, 0x32, 0x4b, -0x8a, 0xc0, 0xc3, 0xa9, 0x8d, 0x73, 0x57, 0x43, 0x49, 0x5f, 0x74, 0x84, 0x96, 0xa7, 0xb4, 0xbb, -0xad, 0x85, 0x5c, 0x53, 0x5d, 0x63, 0x6b, 0x81, 0x94, 0x9a, 0x96, 0x92, 0x8c, 0x80, 0x6f, 0x5b, -0x4d, 0x53, 0x74, 0x95, 0xa1, 0xa0, 0x9d, 0x94, 0x83, 0x73, 0x6d, 0x6f, 0x71, 0x78, 0x83, 0x8a, -0x91, 0x96, 0x8b, 0x74, 0x63, 0x61, 0x69, 0x72, 0x7d, 0x8b, 0x91, 0x8e, 0x87, 0x7e, 0x7e, 0x84, -0x87, 0x84, 0x81, 0x81, 0x84, 0x85, 0x86, 0x89, 0x8b, 0x85, 0x6b, 0x47, 0x31, 0x40, 0x77, 0xbc, -0xe3, 0xda, 0xae, 0x7e, 0x64, 0x5f, 0x62, 0x5a, 0x50, 0x57, 0x73, 0x9b, 0xba, 0xc3, 0xb0, 0x89, -0x5a, 0x39, 0x34, 0x4f, 0x7a, 0x9a, 0xa3, 0x9f, 0xa0, 0xa4, 0x9e, 0x88, 0x6a, 0x57, 0x51, 0x58, -0x6d, 0x8b, 0xa0, 0xa4, 0x95, 0x7e, 0x6d, 0x68, 0x6f, 0x72, 0x6d, 0x6b, 0x77, 0x8e, 0x9e, 0xa2, -0x9e, 0x93, 0x7e, 0x6e, 0x69, 0x6f, 0x78, 0x7e, 0x81, 0x7b, 0x7a, 0x85, 0x8d, 0x8b, 0x83, 0x7a, -0x75, 0x73, 0x75, 0x7d, 0x87, 0x87, 0x84, 0x81, 0x81, 0x84, 0x88, 0x88, 0x81, 0x7a, 0x7b, 0x80, -0x82, 0x7e, 0x7a, 0x75, 0x72, 0x74, 0x7a, 0x83, 0x89, 0x8b, 0x86, 0x81, 0x7c, 0x7b, 0x7a, 0x76, -0x71, 0x74, 0x82, 0x92, 0x9e, 0x9f, 0x92, 0x7b, 0x6b, 0x6a, 0x75, 0x7e, 0x75, 0x56, 0x3f, 0x4b, -0x81, 0xc9, 0xf2, 0xe0, 0xa2, 0x61, 0x44, 0x51, 0x6a, 0x72, 0x6b, 0x65, 0x72, 0x92, 0xab, 0xaf, -0x9e, 0x7a, 0x55, 0x3c, 0x41, 0x60, 0x92, 0xb3, 0xb4, 0xa1, 0x8e, 0x8d, 0x8f, 0x84, 0x6a, 0x55, -0x53, 0x63, 0x7d, 0x99, 0xa8, 0xa5, 0x8d, 0x70, 0x5f, 0x5f, 0x6b, 0x78, 0x80, 0x80, 0x83, 0x92, -0xa2, 0xa2, 0x91, 0x7c, 0x6d, 0x64, 0x65, 0x72, 0x82, 0x87, 0x83, 0x78, 0x72, 0x74, 0x7d, 0x84, -0x82, 0x7c, 0x7c, 0x85, 0x8c, 0x8d, 0x8b, 0x86, 0x7a, 0x72, 0x72, 0x78, 0x7e, 0x81, 0x80, 0x7a, -0x77, 0x7d, 0x87, 0x8a, 0x86, 0x7d, 0x77, 0x73, 0x73, 0x7a, 0x82, 0x86, 0x84, 0x82, 0x80, 0x7b, -0x79, 0x78, 0x76, 0x76, 0x7d, 0x84, 0x87, 0x86, 0x83, 0x7e, 0x7d, 0x80, 0x84, 0x85, 0x82, 0x7b, -0x76, 0x75, 0x79, 0x80, 0x87, 0x8a, 0x84, 0x73, 0x61, 0x58, 0x60, 0x7b, 0x9e, 0xb5, 0xb5, 0xa0, -0x83, 0x6a, 0x60, 0x65, 0x6f, 0x74, 0x73, 0x74, 0x80, 0x91, 0xa0, 0x9f, 0x8a, 0x6c, 0x5a, 0x5b, -0x6b, 0x83, 0x95, 0x9e, 0x9a, 0x92, 0x8b, 0x85, 0x80, 0x78, 0x6d, 0x66, 0x67, 0x75, 0x8c, 0x9c, -0x9f, 0x94, 0x81, 0x71, 0x6a, 0x6c, 0x74, 0x7b, 0x82, 0x87, 0x8d, 0x92, 0x95, 0x91, 0x87, 0x76, -0x6a, 0x68, 0x6f, 0x79, 0x81, 0x83, 0x81, 0x7c, 0x7b, 0x80, 0x85, 0x89, 0x8a, 0x88, 0x85, 0x82, -0x81, 0x80, 0x7a, 0x75, 0x73, 0x74, 0x7a, 0x83, 0x88, 0x87, 0x82, 0x7d, 0x79, 0x78, 0x7a, 0x7d, -0x7d, 0x7e, 0x83, 0x85, 0x84, 0x80, 0x7c, 0x7c, 0x7b, 0x78, 0x76, 0x7b, 0x84, 0x89, 0x8b, 0x86, -0x81, 0x7e, 0x81, 0x83, 0x84, 0x85, 0x8b, 0x91, 0x92, 0x8d, 0x81, 0x5e, 0x30, 0x25, 0x3e, 0x65, -0xa8, 0xe9, 0xf8, 0xda, 0xac, 0x83, 0x5b, 0x3a, 0x28, 0x30, 0x4a, 0x6a, 0x91, 0xbd, 0xdc, 0xd4, -0x9a, 0x52, 0x24, 0x1f, 0x3c, 0x69, 0x93, 0xb0, 0xc4, 0xc7, 0xbb, 0xa5, 0x85, 0x5f, 0x40, 0x32, -0x3a, 0x58, 0x8a, 0xb8, 0xc3, 0xa8, 0x88, 0x77, 0x66, 0x52, 0x4f, 0x61, 0x75, 0x86, 0x9a, 0xb3, -0xbd, 0xb1, 0x98, 0x77, 0x55, 0x46, 0x52, 0x69, 0x79, 0x87, 0x94, 0x9d, 0x95, 0x85, 0x7b, 0x71, -0x63, 0x5d, 0x68, 0x7e, 0x96, 0xa8, 0xb2, 0xa5, 0x8d, 0x79, 0x6b, 0x5f, 0x58, 0x61, 0x71, 0x7c, -0x85, 0x90, 0x96, 0x91, 0x85, 0x78, 0x6f, 0x6e, 0x77, 0x86, 0x8e, 0x8c, 0x89, 0x86, 0x80, 0x78, -0x76, 0x75, 0x72, 0x71, 0x75, 0x7c, 0x84, 0x88, 0x88, 0x83, 0x7d, 0x7d, 0x86, 0x8c, 0x8e, 0x8c, -0x89, 0x82, 0x78, 0x72, 0x6f, 0x70, 0x72, 0x76, 0x80, 0x86, 0x8a, 0x8c, 0x89, 0x82, 0x7a, 0x73, -0x67, 0x5a, 0x57, 0x65, 0x85, 0xb0, 0xcf, 0xcf, 0xaf, 0x7a, 0x4f, 0x3f, 0x47, 0x5f, 0x76, 0x81, -0x85, 0x8f, 0x9e, 0xa9, 0xa2, 0x86, 0x63, 0x4b, 0x4c, 0x66, 0x8a, 0xa5, 0xb0, 0xaa, 0x97, 0x83, -0x76, 0x71, 0x6c, 0x63, 0x5e, 0x63, 0x75, 0x8f, 0xa3, 0xa5, 0x96, 0x80, 0x6b, 0x63, 0x69, 0x76, -0x84, 0x8a, 0x8e, 0x91, 0x93, 0x92, 0x8c, 0x81, 0x6e, 0x60, 0x62, 0x6d, 0x79, 0x82, 0x85, 0x83, -0x80, 0x80, 0x84, 0x87, 0x84, 0x7c, 0x79, 0x7c, 0x84, 0x8d, 0x91, 0x8c, 0x80, 0x74, 0x6f, 0x6f, -0x72, 0x78, 0x7d, 0x81, 0x83, 0x85, 0x87, 0x86, 0x83, 0x80, 0x7e, 0x80, 0x84, 0x88, 0x8a, 0x88, -0x82, 0x77, 0x6f, 0x6c, 0x6f, 0x77, 0x82, 0x8a, 0x8c, 0x8d, 0x8d, 0x88, 0x7c, 0x72, 0x6f, 0x73, -0x7c, 0x87, 0x8e, 0x91, 0x8e, 0x87, 0x80, 0x7a, 0x76, 0x76, 0x76, 0x76, 0x79, 0x81, 0x88, 0x88, -0x7c, 0x6a, 0x5c, 0x5b, 0x6f, 0x93, 0xb4, 0xc5, 0xb9, 0x97, 0x6d, 0x55, 0x55, 0x64, 0x73, 0x79, -0x77, 0x78, 0x84, 0x97, 0xa3, 0x9c, 0x83, 0x61, 0x50, 0x58, 0x71, 0x92, 0xa5, 0xa4, 0x98, 0x8b, -0x85, 0x83, 0x7b, 0x6f, 0x63, 0x5d, 0x66, 0x7d, 0x96, 0xa4, 0xa2, 0x8e, 0x74, 0x64, 0x65, 0x71, -0x81, 0x89, 0x8e, 0x8f, 0x90, 0x92, 0x91, 0x8a, 0x7a, 0x6b, 0x66, 0x6b, 0x78, 0x87, 0x92, 0x94, -0x8b, 0x7d, 0x73, 0x6f, 0x70, 0x73, 0x7a, 0x85, 0x90, 0x95, 0x93, 0x8b, 0x7e, 0x73, 0x6d, 0x6e, -0x75, 0x80, 0x86, 0x88, 0x85, 0x82, 0x81, 0x80, 0x7d, 0x7a, 0x77, 0x77, 0x78, 0x7e, 0x85, 0x8c, -0x8e, 0x8b, 0x85, 0x82, 0x83, 0x82, 0x7d, 0x76, 0x73, 0x78, 0x7e, 0x82, 0x82, 0x84, 0x87, 0x86, -0x82, 0x7b, 0x77, 0x79, 0x7b, 0x79, 0x79, 0x83, 0x92, 0x9b, 0x98, 0x87, 0x65, 0x38, 0x24, 0x38, -0x66, 0xb3, 0xf1, 0xfe, 0xd9, 0xa3, 0x78, 0x56, 0x37, 0x21, 0x24, 0x41, 0x68, 0x95, 0xc5, 0xe6, -0xdd, 0xa3, 0x51, 0x1b, 0x17, 0x3b, 0x73, 0xa4, 0xc6, 0xd2, 0xcc, 0xb9, 0x9a, 0x73, 0x4b, 0x30, -0x2e, 0x41, 0x64, 0x99, 0xc9, 0xcd, 0xa8, 0x7e, 0x67, 0x5c, 0x51, 0x55, 0x71, 0x8d, 0x9d, 0xa9, -0xb2, 0xab, 0x93, 0x76, 0x5c, 0x49, 0x49, 0x62, 0x82, 0x8f, 0x8f, 0x92, 0x92, 0x88, 0x77, 0x6f, -0x6f, 0x6d, 0x6c, 0x7a, 0x90, 0x9e, 0xa3, 0xa1, 0x90, 0x75, 0x68, 0x6a, 0x6c, 0x6c, 0x74, 0x82, -0x8a, 0x8b, 0x8b, 0x8b, 0x87, 0x7d, 0x76, 0x76, 0x7d, 0x86, 0x8f, 0x93, 0x8e, 0x85, 0x80, 0x7d, -0x78, 0x74, 0x76, 0x78, 0x77, 0x79, 0x7e, 0x82, 0x85, 0x87, 0x89, 0x88, 0x86, 0x83, 0x80, 0x7b, -0x78, 0x78, 0x7a, 0x7d, 0x82, 0x87, 0x8d, 0x8d, 0x86, 0x7e, 0x74, 0x6c, 0x6c, 0x71, 0x78, 0x81, -0x89, 0x8c, 0x89, 0x86, 0x85, 0x84, 0x81, 0x7a, 0x78, 0x7a, 0x80, 0x87, 0x8c, 0x8e, 0x88, 0x7e, -0x75, 0x70, 0x6f, 0x72, 0x71, 0x68, 0x5f, 0x64, 0x7d, 0xa7, 0xcc, 0xd9, 0xc0, 0x8a, 0x51, 0x2d, -0x2f, 0x53, 0x80, 0x9f, 0xa9, 0xa0, 0x92, 0x88, 0x7e, 0x72, 0x61, 0x52, 0x52, 0x66, 0x8b, 0xae, -0xbf, 0xb8, 0x9b, 0x77, 0x5f, 0x5a, 0x62, 0x6f, 0x79, 0x81, 0x86, 0x8e, 0x97, 0x98, 0x8e, 0x78, -0x63, 0x59, 0x60, 0x74, 0x8e, 0x9d, 0xa0, 0x99, 0x8c, 0x81, 0x77, 0x6f, 0x69, 0x65, 0x68, 0x73, -0x84, 0x92, 0x97, 0x92, 0x83, 0x71, 0x68, 0x68, 0x70, 0x7c, 0x88, 0x8f, 0x91, 0x8e, 0x87, 0x7d, -0x74, 0x6c, 0x6a, 0x73, 0x83, 0x92, 0x9a, 0x98, 0x8b, 0x79, 0x6b, 0x65, 0x67, 0x6f, 0x7b, 0x87, -0x8f, 0x92, 0x92, 0x8f, 0x86, 0x79, 0x6c, 0x65, 0x67, 0x72, 0x83, 0x90, 0x97, 0x96, 0x8e, 0x7e, -0x6e, 0x67, 0x66, 0x6a, 0x73, 0x7e, 0x8c, 0x99, 0xa1, 0x9f, 0x94, 0x82, 0x6e, 0x5f, 0x5a, 0x63, -0x78, 0x92, 0x9e, 0x9b, 0x8f, 0x82, 0x75, 0x6b, 0x68, 0x6a, 0x72, 0x82, 0x92, 0x9b, 0x97, 0x81, -0x5c, 0x3d, 0x44, 0x76, 0xbf, 0xef, 0xe6, 0xa9, 0x61, 0x38, 0x3d, 0x5c, 0x74, 0x72, 0x64, 0x65, -0x82, 0xaf, 0xcb, 0xbb, 0x87, 0x50, 0x37, 0x48, 0x74, 0x9d, 0xb2, 0xb0, 0xa0, 0x8c, 0x7c, 0x78, -0x77, 0x70, 0x5e, 0x4e, 0x53, 0x71, 0x9a, 0xb0, 0xa9, 0x92, 0x77, 0x66, 0x62, 0x6a, 0x78, 0x80, -0x81, 0x85, 0x91, 0x9b, 0x9e, 0x94, 0x81, 0x64, 0x4c, 0x50, 0x70, 0x8d, 0x96, 0x99, 0x93, 0x84, -0x74, 0x72, 0x79, 0x79, 0x78, 0x7b, 0x84, 0x8c, 0x91, 0x94, 0x8c, 0x78, 0x68, 0x68, 0x74, 0x7d, -0x83, 0x87, 0x83, 0x79, 0x75, 0x7b, 0x82, 0x87, 0x8a, 0x86, 0x7e, 0x78, 0x7b, 0x7e, 0x81, 0x83, -0x84, 0x84, 0x81, 0x7b, 0x76, 0x74, 0x76, 0x7a, 0x83, 0x8c, 0x91, 0x8f, 0x85, 0x76, 0x68, 0x65, -0x6c, 0x76, 0x81, 0x8b, 0x92, 0x95, 0x93, 0x8e, 0x85, 0x79, 0x6e, 0x66, 0x65, 0x6e, 0x7e, 0x90, -0x98, 0x95, 0x8b, 0x7c, 0x70, 0x6c, 0x6d, 0x74, 0x7b, 0x82, 0x88, 0x8a, 0x88, 0x85, 0x82, 0x7c, -0x78, 0x76, 0x78, 0x7a, 0x7d, 0x81, 0x86, 0x89, 0x8a, 0x86, 0x80, 0x77, 0x6f, 0x6e, 0x73, 0x7e, -0x8c, 0x94, 0x93, 0x87, 0x75, 0x65, 0x5b, 0x5c, 0x6b, 0x86, 0xa0, 0xad, 0xaa, 0x98, 0x7c, 0x62, -0x57, 0x59, 0x63, 0x72, 0x81, 0x8d, 0x95, 0x97, 0x93, 0x88, 0x78, 0x6a, 0x64, 0x69, 0x75, 0x87, -0x95, 0x9b, 0x98, 0x90, 0x85, 0x78, 0x6f, 0x6c, 0x6c, 0x71, 0x7a, 0x85, 0x8d, 0x91, 0x8b, 0x81, -0x75, 0x6d, 0x6d, 0x74, 0x7d, 0x87, 0x8d, 0x8d, 0x8a, 0x85, 0x7d, 0x77, 0x74, 0x73, 0x74, 0x78, -0x7e, 0x85, 0x89, 0x89, 0x86, 0x81, 0x7a, 0x76, 0x76, 0x77, 0x7c, 0x83, 0x88, 0x89, 0x88, 0x84, -0x7d, 0x7a, 0x78, 0x77, 0x7a, 0x7e, 0x82, 0x84, 0x85, 0x83, 0x7e, 0x79, 0x74, 0x72, 0x76, 0x80, -0x8a, 0x92, 0x95, 0x93, 0x8b, 0x81, 0x79, 0x73, 0x6f, 0x6e, 0x70, 0x76, 0x7d, 0x88, 0x8f, 0x8f, -0x8a, 0x82, 0x7b, 0x79, 0x79, 0x7d, 0x83, 0x85, 0x86, 0x88, 0x83, 0x7a, 0x78, 0x7e, 0x81, 0x80, -0x82, 0x86, 0x86, 0x83, 0x7d, 0x76, 0x6f, 0x6d, 0x74, 0x81, 0x8e, 0x99, 0x9e, 0x99, 0x86, 0x73, -0x69, 0x66, 0x6a, 0x75, 0x88, 0x99, 0x9f, 0x95, 0x72, 0x3e, 0x20, 0x3f, 0x90, 0xdb, 0xf9, 0xe4, -0xad, 0x78, 0x57, 0x48, 0x3d, 0x3e, 0x50, 0x71, 0x8f, 0x9f, 0xaf, 0xb5, 0xa4, 0x76, 0x47, 0x3c, -0x55, 0x80, 0xa5, 0xb3, 0xad, 0xa0, 0x90, 0x7a, 0x6a, 0x64, 0x61, 0x5d, 0x61, 0x76, 0x92, 0xa4, -0xa8, 0x9e, 0x82, 0x5d, 0x4e, 0x5f, 0x79, 0x88, 0x92, 0xa4, 0xaa, 0x9a, 0x87, 0x7d, 0x74, 0x62, -0x57, 0x62, 0x76, 0x87, 0x97, 0xa0, 0x98, 0x81, 0x71, 0x6c, 0x67, 0x63, 0x6b, 0x83, 0x94, 0x9b, -0xa0, 0xa2, 0x95, 0x79, 0x64, 0x5c, 0x5e, 0x66, 0x77, 0x88, 0x8e, 0x8d, 0x8e, 0x8c, 0x81, 0x73, -0x71, 0x73, 0x72, 0x76, 0x85, 0x93, 0x96, 0x91, 0x89, 0x7e, 0x74, 0x72, 0x74, 0x75, 0x75, 0x79, -0x7c, 0x7e, 0x80, 0x82, 0x86, 0x85, 0x82, 0x7e, 0x7b, 0x78, 0x79, 0x7c, 0x81, 0x85, 0x85, 0x82, -0x7d, 0x76, 0x72, 0x75, 0x7a, 0x82, 0x89, 0x8b, 0x87, 0x81, 0x7a, 0x76, 0x76, 0x79, 0x7c, 0x7d, -0x7d, 0x7d, 0x7e, 0x81, 0x83, 0x85, 0x85, 0x85, 0x84, 0x81, 0x7d, 0x79, 0x77, 0x75, 0x74, 0x77, -0x7c, 0x82, 0x87, 0x88, 0x84, 0x7d, 0x77, 0x73, 0x73, 0x7a, 0x84, 0x8b, 0x90, 0x8f, 0x8b, 0x85, -0x7d, 0x79, 0x76, 0x74, 0x74, 0x78, 0x7d, 0x84, 0x88, 0x8b, 0x89, 0x84, 0x7e, 0x7b, 0x7a, 0x77, -0x6e, 0x62, 0x5a, 0x62, 0x7a, 0xa2, 0xc5, 0xcb, 0xae, 0x77, 0x45, 0x31, 0x42, 0x6a, 0x8f, 0x9a, -0x94, 0x87, 0x84, 0x8c, 0x93, 0x88, 0x6a, 0x50, 0x4f, 0x6a, 0x97, 0xb9, 0xbf, 0xa8, 0x85, 0x65, -0x57, 0x5c, 0x69, 0x77, 0x80, 0x82, 0x86, 0x92, 0x9e, 0x9e, 0x8b, 0x6d, 0x58, 0x56, 0x67, 0x83, -0x9a, 0xa6, 0xa3, 0x91, 0x81, 0x77, 0x71, 0x6b, 0x68, 0x6c, 0x76, 0x82, 0x8e, 0x97, 0x97, 0x86, -0x71, 0x68, 0x6b, 0x73, 0x7d, 0x88, 0x8d, 0x88, 0x84, 0x84, 0x85, 0x81, 0x7a, 0x75, 0x72, 0x74, -0x7a, 0x84, 0x8b, 0x89, 0x81, 0x7b, 0x79, 0x78, 0x79, 0x81, 0x87, 0x88, 0x87, 0x87, 0x86, 0x81, -0x7b, 0x78, 0x77, 0x7a, 0x81, 0x87, 0x8a, 0x85, 0x7c, 0x77, 0x74, 0x75, 0x7b, 0x84, 0x88, 0x86, -0x83, 0x7e, 0x7b, 0x79, 0x77, 0x78, 0x7d, 0x87, 0x8f, 0x91, 0x89, 0x7b, 0x71, 0x6a, 0x69, 0x6f, -0x7d, 0x8e, 0x96, 0x95, 0x8f, 0x87, 0x7c, 0x72, 0x6d, 0x6c, 0x71, 0x7d, 0x88, 0x8b, 0x88, 0x85, -0x82, 0x7b, 0x74, 0x73, 0x7c, 0x88, 0x8e, 0x8e, 0x8a, 0x84, 0x7a, 0x74, 0x73, 0x78, 0x83, 0x8c, -0x8e, 0x7e, 0x60, 0x45, 0x45, 0x6b, 0xac, 0xe2, 0xec, 0xc1, 0x77, 0x3e, 0x34, 0x52, 0x72, 0x7d, -0x75, 0x70, 0x7e, 0x9d, 0xb2, 0xa9, 0x85, 0x59, 0x44, 0x49, 0x67, 0x91, 0xb2, 0xbc, 0xad, 0x8e, -0x71, 0x67, 0x69, 0x6c, 0x68, 0x60, 0x67, 0x81, 0x9f, 0xae, 0xa5, 0x8d, 0x6e, 0x57, 0x51, 0x66, -0x89, 0x9d, 0x9c, 0x91, 0x8a, 0x86, 0x81, 0x81, 0x80, 0x72, 0x63, 0x63, 0x76, 0x88, 0x8c, 0x8e, -0x8b, 0x7b, 0x6c, 0x6f, 0x7e, 0x89, 0x8a, 0x88, 0x85, 0x80, 0x7d, 0x84, 0x8a, 0x86, 0x7b, 0x76, -0x7a, 0x7c, 0x7e, 0x87, 0x8b, 0x83, 0x78, 0x78, 0x7d, 0x82, 0x85, 0x87, 0x84, 0x7b, 0x76, 0x78, -0x7d, 0x7e, 0x80, 0x83, 0x86, 0x86, 0x88, 0x8b, 0x87, 0x79, 0x6b, 0x66, 0x66, 0x6b, 0x76, 0x84, -0x8f, 0x93, 0x94, 0x93, 0x8d, 0x81, 0x74, 0x6a, 0x63, 0x63, 0x6d, 0x7c, 0x8c, 0x97, 0x9b, 0x96, -0x87, 0x75, 0x6b, 0x69, 0x6e, 0x77, 0x81, 0x86, 0x86, 0x87, 0x89, 0x8a, 0x88, 0x83, 0x7c, 0x76, -0x73, 0x75, 0x7b, 0x82, 0x85, 0x84, 0x81, 0x80, 0x80, 0x81, 0x84, 0x84, 0x82, 0x80, 0x7e, 0x7c, -0x79, 0x77, 0x75, 0x77, 0x7e, 0x87, 0x90, 0x94, 0x90, 0x89, 0x7d, 0x73, 0x6b, 0x68, 0x6a, 0x71, -0x79, 0x86, 0x90, 0x97, 0x96, 0x8f, 0x82, 0x74, 0x6d, 0x6f, 0x77, 0x82, 0x8b, 0x8f, 0x8c, 0x84, -0x7b, 0x76, 0x76, 0x76, 0x77, 0x79, 0x7c, 0x81, 0x87, 0x8a, 0x8a, 0x87, 0x81, 0x75, 0x63, 0x53, -0x51, 0x68, 0x99, 0xcc, 0xe8, 0xd5, 0x98, 0x51, 0x29, 0x2b, 0x4e, 0x7b, 0x93, 0x92, 0x86, 0x84, -0x90, 0x98, 0x8d, 0x6f, 0x54, 0x4d, 0x64, 0x90, 0xb5, 0xc4, 0xb0, 0x8a, 0x66, 0x4e, 0x50, 0x62, -0x79, 0x89, 0x8a, 0x89, 0x8e, 0x93, 0x91, 0x82, 0x6b, 0x5a, 0x59, 0x69, 0x86, 0xa3, 0xb2, 0xad, -0x94, 0x77, 0x67, 0x61, 0x62, 0x69, 0x75, 0x80, 0x85, 0x8c, 0x96, 0x98, 0x89, 0x75, 0x6b, 0x69, -0x6d, 0x7b, 0x8e, 0x96, 0x91, 0x87, 0x7e, 0x7a, 0x79, 0x7a, 0x7c, 0x7c, 0x7b, 0x7d, 0x84, 0x88, -0x84, 0x7c, 0x77, 0x75, 0x77, 0x7e, 0x8a, 0x90, 0x8d, 0x86, 0x7d, 0x78, 0x75, 0x76, 0x79, 0x7c, -0x7e, 0x80, 0x83, 0x86, 0x84, 0x7d, 0x77, 0x72, 0x70, 0x74, 0x7c, 0x84, 0x87, 0x89, 0x8a, 0x8a, -0x89, 0x87, 0x82, 0x79, 0x70, 0x6a, 0x6b, 0x71, 0x79, 0x80, 0x86, 0x87, 0x85, 0x84, 0x83, 0x81, -0x7e, 0x7d, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x78, 0x73, 0x73, 0x77, 0x7e, 0x85, 0x8c, 0x8f, 0x8d, -0x86, 0x7c, 0x76, 0x77, 0x7b, 0x83, 0x88, 0x87, 0x82, 0x7b, 0x77, 0x76, 0x79, 0x7e, 0x82, 0x82, -0x81, 0x82, 0x86, 0x88, 0x86, 0x80, 0x78, 0x74, 0x74, 0x77, 0x7d, 0x85, 0x88, 0x86, 0x80, 0x78, -0x75, 0x78, 0x7d, 0x83, 0x88, 0x8d, 0x91, 0x94, 0x91, 0x87, 0x73, 0x58, 0x40, 0x3e, 0x5c, 0x94, -0xcf, 0xe9, 0xd4, 0x99, 0x54, 0x30, 0x34, 0x54, 0x78, 0x90, 0x9a, 0x9a, 0x9d, 0x9e, 0x93, 0x74, -0x4f, 0x38, 0x3c, 0x5f, 0x92, 0xbe, 0xcc, 0xbc, 0x98, 0x6e, 0x53, 0x4c, 0x58, 0x6c, 0x7b, 0x87, -0x90, 0x9a, 0x9e, 0x98, 0x83, 0x68, 0x57, 0x55, 0x62, 0x7e, 0x9b, 0xab, 0xa5, 0x90, 0x7c, 0x6f, -0x6b, 0x6c, 0x73, 0x7b, 0x7d, 0x7e, 0x85, 0x8c, 0x8a, 0x82, 0x79, 0x72, 0x6d, 0x6f, 0x7d, 0x8d, -0x92, 0x8d, 0x86, 0x7d, 0x77, 0x76, 0x78, 0x7d, 0x7e, 0x7d, 0x80, 0x85, 0x86, 0x82, 0x7d, 0x78, -0x72, 0x70, 0x78, 0x85, 0x8e, 0x90, 0x8c, 0x84, 0x7c, 0x78, 0x77, 0x7a, 0x7a, 0x79, 0x7b, 0x82, -0x86, 0x88, 0x88, 0x83, 0x79, 0x72, 0x73, 0x7a, 0x82, 0x87, 0x88, 0x86, 0x82, 0x7c, 0x79, 0x7a, -0x7a, 0x7c, 0x81, 0x85, 0x87, 0x87, 0x83, 0x7c, 0x78, 0x76, 0x77, 0x7c, 0x82, 0x83, 0x83, 0x83, -0x84, 0x85, 0x87, 0x89, 0x88, 0x86, 0x82, 0x7b, 0x76, 0x71, 0x6f, 0x73, 0x7b, 0x84, 0x8c, 0x91, -0x8e, 0x88, 0x82, 0x7c, 0x79, 0x76, 0x71, 0x6d, 0x6a, 0x6f, 0x7b, 0x8b, 0x9a, 0xa0, 0x9a, 0x8c, -0x77, 0x67, 0x5f, 0x61, 0x6c, 0x7b, 0x8c, 0x99, 0x9d, 0x98, 0x8b, 0x79, 0x6c, 0x66, 0x69, 0x76, -0x88, 0x95, 0x97, 0x90, 0x84, 0x75, 0x6b, 0x6a, 0x6e, 0x76, 0x81, 0x89, 0x8d, 0x8c, 0x8c, 0x88, -0x81, 0x7a, 0x78, 0x7a, 0x7e, 0x82, 0x84, 0x80, 0x78, 0x74, 0x76, 0x7c, 0x86, 0x8d, 0x8f, 0x85, -0x6e, 0x51, 0x44, 0x54, 0x85, 0xbf, 0xdf, 0xda, 0xab, 0x6a, 0x3d, 0x37, 0x4e, 0x69, 0x7c, 0x86, -0x8a, 0x96, 0xa3, 0xa7, 0x95, 0x72, 0x53, 0x4a, 0x5b, 0x7e, 0xa5, 0xbd, 0xbd, 0xa2, 0x7c, 0x60, -0x59, 0x64, 0x74, 0x7e, 0x80, 0x7e, 0x84, 0x8a, 0x8a, 0x84, 0x79, 0x70, 0x6d, 0x73, 0x87, 0x9c, -0xa2, 0x97, 0x83, 0x70, 0x65, 0x65, 0x6c, 0x7b, 0x8a, 0x8e, 0x8a, 0x88, 0x85, 0x7b, 0x73, 0x70, -0x71, 0x73, 0x79, 0x89, 0x96, 0x97, 0x8d, 0x81, 0x75, 0x71, 0x70, 0x76, 0x81, 0x84, 0x83, 0x83, -0x86, 0x85, 0x7d, 0x78, 0x76, 0x74, 0x78, 0x81, 0x8c, 0x93, 0x8e, 0x83, 0x7a, 0x75, 0x72, 0x76, -0x81, 0x87, 0x86, 0x85, 0x85, 0x81, 0x7a, 0x74, 0x70, 0x70, 0x74, 0x7c, 0x89, 0x90, 0x8f, 0x8a, -0x82, 0x79, 0x75, 0x74, 0x78, 0x7e, 0x81, 0x82, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x7b, 0x7b, 0x7a, -0x79, 0x7b, 0x7b, 0x7e, 0x85, 0x89, 0x89, 0x87, 0x81, 0x7d, 0x7e, 0x7c, 0x7d, 0x80, 0x7d, 0x79, -0x78, 0x7c, 0x80, 0x82, 0x84, 0x86, 0x84, 0x81, 0x81, 0x81, 0x81, 0x80, 0x79, 0x70, 0x65, 0x62, -0x6a, 0x7b, 0x91, 0xa4, 0xaa, 0xa0, 0x8d, 0x71, 0x5e, 0x59, 0x61, 0x74, 0x89, 0x96, 0x9c, 0x99, -0x8d, 0x7b, 0x6b, 0x60, 0x5f, 0x69, 0x7c, 0x95, 0xa6, 0xa6, 0x98, 0x81, 0x6d, 0x63, 0x62, 0x6c, -0x7b, 0x86, 0x8a, 0x8c, 0x8b, 0x84, 0x7b, 0x74, 0x71, 0x75, 0x7e, 0x88, 0x8d, 0x8b, 0x82, 0x75, -0x6b, 0x6c, 0x77, 0x88, 0x94, 0x94, 0x84, 0x64, 0x45, 0x3b, 0x59, 0x90, 0xc3, 0xdd, 0xca, 0x92, -0x5a, 0x47, 0x53, 0x6f, 0x82, 0x81, 0x76, 0x71, 0x7c, 0x8e, 0x95, 0x8c, 0x79, 0x68, 0x69, 0x7b, -0x95, 0xa9, 0xab, 0x97, 0x74, 0x57, 0x53, 0x64, 0x7e, 0x95, 0x9b, 0x93, 0x89, 0x82, 0x78, 0x6b, -0x61, 0x5f, 0x65, 0x73, 0x8c, 0xa7, 0xb6, 0xad, 0x91, 0x72, 0x60, 0x5e, 0x65, 0x73, 0x85, 0x8b, -0x8b, 0x89, 0x88, 0x89, 0x83, 0x78, 0x71, 0x6e, 0x6d, 0x77, 0x87, 0x93, 0x94, 0x8b, 0x82, 0x7d, -0x79, 0x7a, 0x80, 0x85, 0x86, 0x82, 0x7d, 0x7b, 0x79, 0x77, 0x7a, 0x80, 0x84, 0x86, 0x87, 0x87, -0x83, 0x7b, 0x76, 0x76, 0x78, 0x7b, 0x81, 0x87, 0x8a, 0x8a, 0x87, 0x83, 0x7b, 0x74, 0x71, 0x73, -0x78, 0x7e, 0x84, 0x87, 0x89, 0x86, 0x81, 0x7d, 0x7b, 0x79, 0x7a, 0x7e, 0x84, 0x86, 0x86, 0x85, -0x83, 0x7d, 0x7a, 0x7b, 0x7d, 0x80, 0x81, 0x81, 0x81, 0x7c, 0x79, 0x79, 0x7a, 0x78, 0x78, 0x81, -0x8b, 0x92, 0x93, 0x8d, 0x82, 0x74, 0x68, 0x63, 0x68, 0x75, 0x84, 0x90, 0x98, 0x96, 0x8b, 0x7b, -0x70, 0x67, 0x63, 0x6c, 0x7b, 0x8a, 0x96, 0x9f, 0x9e, 0x93, 0x7e, 0x66, 0x4e, 0x41, 0x48, 0x60, -0x88, 0xae, 0xc4, 0xc4, 0xb0, 0x90, 0x6b, 0x54, 0x4e, 0x57, 0x68, 0x7d, 0x95, 0xa3, 0xa4, 0x98, -0x83, 0x68, 0x57, 0x58, 0x66, 0x7a, 0x8f, 0x9b, 0x99, 0x8d, 0x7d, 0x75, 0x75, 0x7a, 0x83, 0x86, -0x84, 0x7e, 0x76, 0x6f, 0x6b, 0x6b, 0x70, 0x7d, 0x8c, 0x97, 0x9e, 0x9a, 0x8b, 0x76, 0x63, 0x56, -0x59, 0x68, 0x7c, 0x92, 0xa1, 0xa7, 0xa1, 0x94, 0x7d, 0x60, 0x44, 0x35, 0x41, 0x6d, 0xa8, 0xd7, -0xe2, 0xbf, 0x81, 0x45, 0x29, 0x3a, 0x67, 0x93, 0xa7, 0xa6, 0x99, 0x8c, 0x82, 0x78, 0x69, 0x58, -0x54, 0x64, 0x84, 0xa7, 0xbe, 0xb9, 0x9c, 0x71, 0x4d, 0x43, 0x57, 0x78, 0x97, 0xa2, 0x9b, 0x8f, -0x84, 0x77, 0x6c, 0x64, 0x64, 0x6a, 0x78, 0x8c, 0x9d, 0xa2, 0x96, 0x7d, 0x65, 0x5e, 0x66, 0x77, -0x8b, 0x97, 0x94, 0x89, 0x7a, 0x71, 0x6e, 0x70, 0x73, 0x7b, 0x85, 0x8a, 0x8f, 0x91, 0x8d, 0x80, -0x71, 0x66, 0x67, 0x72, 0x85, 0x95, 0x9d, 0x9a, 0x8e, 0x7d, 0x70, 0x69, 0x65, 0x68, 0x71, 0x7c, -0x87, 0x90, 0x96, 0x97, 0x8f, 0x82, 0x73, 0x69, 0x66, 0x6b, 0x76, 0x81, 0x87, 0x8a, 0x8c, 0x8a, -0x88, 0x84, 0x7e, 0x77, 0x72, 0x6e, 0x70, 0x75, 0x7c, 0x84, 0x89, 0x8b, 0x8b, 0x88, 0x82, 0x7b, -0x74, 0x6f, 0x70, 0x78, 0x83, 0x8c, 0x91, 0x90, 0x88, 0x7b, 0x71, 0x6c, 0x6d, 0x73, 0x7d, 0x89, -0x8f, 0x91, 0x8d, 0x87, 0x80, 0x78, 0x6f, 0x66, 0x68, 0x7a, 0x91, 0xa1, 0xa9, 0xa3, 0x8b, 0x6a, -0x56, 0x53, 0x60, 0x78, 0x91, 0xa0, 0x9f, 0x95, 0x86, 0x79, 0x70, 0x68, 0x6a, 0x73, 0x83, 0x93, -0x9b, 0x9a, 0x8f, 0x7a, 0x6a, 0x63, 0x63, 0x69, 0x70, 0x77, 0x82, 0x8c, 0x95, 0x9a, 0x93, 0x80, -0x6a, 0x5f, 0x63, 0x76, 0x94, 0xae, 0xb6, 0xaa, 0x8f, 0x6f, 0x55, 0x47, 0x47, 0x52, 0x66, 0x7e, -0x97, 0xab, 0xb3, 0xac, 0x98, 0x7e, 0x69, 0x5e, 0x5d, 0x68, 0x78, 0x86, 0x8f, 0x95, 0x92, 0x8d, -0x87, 0x7e, 0x76, 0x72, 0x72, 0x72, 0x75, 0x79, 0x7e, 0x84, 0x89, 0x8c, 0x90, 0x95, 0x96, 0x94, -0x8b, 0x77, 0x5f, 0x45, 0x34, 0x3b, 0x5f, 0x9b, 0xd2, 0xed, 0xdc, 0xab, 0x6e, 0x3e, 0x30, 0x43, -0x68, 0x89, 0x9b, 0x9e, 0x99, 0x91, 0x87, 0x7a, 0x68, 0x59, 0x58, 0x67, 0x82, 0x98, 0xa3, 0x9e, -0x8d, 0x78, 0x6e, 0x71, 0x7e, 0x90, 0x97, 0x8f, 0x7d, 0x69, 0x5d, 0x5b, 0x63, 0x74, 0x89, 0x9d, -0xab, 0xad, 0xa4, 0x90, 0x71, 0x53, 0x42, 0x47, 0x61, 0x8a, 0xb0, 0xc7, 0xc1, 0xa1, 0x7c, 0x5b, -0x4a, 0x48, 0x57, 0x70, 0x8a, 0x9f, 0xab, 0xab, 0xa0, 0x89, 0x6a, 0x55, 0x53, 0x65, 0x7e, 0x98, -0xa6, 0xa4, 0x93, 0x7c, 0x6c, 0x66, 0x67, 0x6e, 0x79, 0x84, 0x89, 0x8d, 0x8c, 0x87, 0x7c, 0x71, -0x6d, 0x71, 0x7b, 0x8b, 0x96, 0x98, 0x93, 0x83, 0x72, 0x68, 0x66, 0x6c, 0x75, 0x80, 0x8a, 0x90, -0x94, 0x94, 0x8d, 0x81, 0x74, 0x6c, 0x69, 0x6d, 0x76, 0x80, 0x89, 0x8f, 0x93, 0x92, 0x8c, 0x83, -0x79, 0x71, 0x6d, 0x6e, 0x73, 0x7b, 0x85, 0x8c, 0x91, 0x92, 0x8d, 0x85, 0x79, 0x72, 0x70, 0x73, -0x79, 0x80, 0x85, 0x87, 0x85, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7a, 0x77, 0x75, 0x6f, 0x66, -0x6f, 0x8f, 0xaf, 0xbe, 0xb9, 0x9c, 0x72, 0x47, 0x33, 0x3f, 0x5d, 0x83, 0xa7, 0xb9, 0xb9, 0xa9, -0x8c, 0x70, 0x58, 0x49, 0x4d, 0x65, 0x87, 0xa3, 0xb0, 0xac, 0x94, 0x75, 0x5f, 0x5a, 0x65, 0x7a, -0x91, 0x99, 0x90, 0x78, 0x64, 0x5d, 0x60, 0x6d, 0x7e, 0x92, 0xa0, 0xa5, 0xa2, 0x96, 0x86, 0x72, -0x63, 0x61, 0x6a, 0x7a, 0x8a, 0x92, 0x8e, 0x7b, 0x6a, 0x61, 0x62, 0x6d, 0x81, 0x96, 0xa4, 0xa7, -0x9d, 0x8c, 0x76, 0x66, 0x5d, 0x5b, 0x65, 0x78, 0x8e, 0xa1, 0xa7, 0x9e, 0x8d, 0x7a, 0x6c, 0x66, -0x68, 0x73, 0x80, 0x86, 0x85, 0x7d, 0x76, 0x73, 0x75, 0x7d, 0x87, 0x8d, 0x8f, 0x8e, 0x89, 0x83, -0x7b, 0x73, 0x67, 0x59, 0x57, 0x6d, 0x94, 0xb4, 0xbe, 0xac, 0x89, 0x67, 0x58, 0x59, 0x65, 0x77, -0x8a, 0x99, 0x9d, 0x93, 0x82, 0x70, 0x64, 0x5e, 0x5f, 0x6b, 0x80, 0x98, 0xa9, 0xaa, 0x98, 0x7c, -0x6a, 0x64, 0x69, 0x74, 0x82, 0x8f, 0x94, 0x8f, 0x82, 0x77, 0x72, 0x71, 0x70, 0x72, 0x7c, 0x8b, -0x93, 0x93, 0x88, 0x78, 0x6d, 0x66, 0x68, 0x73, 0x86, 0x96, 0x9e, 0x9b, 0x91, 0x7d, 0x6e, 0x68, -0x69, 0x6c, 0x71, 0x7d, 0x8d, 0x96, 0x95, 0x90, 0x88, 0x7d, 0x73, 0x6f, 0x71, 0x78, 0x82, 0x87, -0x87, 0x83, 0x7d, 0x7c, 0x80, 0x83, 0x85, 0x85, 0x84, 0x81, 0x7b, 0x76, 0x74, 0x74, 0x76, 0x7b, -0x84, 0x8b, 0x90, 0x90, 0x8a, 0x81, 0x78, 0x74, 0x73, 0x77, 0x7d, 0x84, 0x89, 0x8c, 0x89, 0x81, -0x79, 0x75, 0x74, 0x77, 0x7e, 0x84, 0x88, 0x88, 0x84, 0x7e, 0x7b, 0x79, 0x78, 0x7c, 0x81, 0x86, -0x89, 0x88, 0x85, 0x7e, 0x76, 0x72, 0x73, 0x77, 0x7d, 0x83, 0x87, 0x87, 0x85, 0x82, 0x80, 0x7d, -0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7e, 0x81, 0x83, 0x85, 0x84, 0x81, 0x7b, 0x77, 0x76, -0x78, 0x7c, 0x81, 0x86, 0x88, 0x82, 0x75, 0x6f, 0x74, 0x80, 0x8b, 0x92, 0x92, 0x8a, 0x7b, 0x72, -0x72, 0x76, 0x79, 0x7b, 0x7e, 0x7e, 0x7e, 0x83, 0x86, 0x83, 0x7a, 0x74, 0x7a, 0x87, 0x90, 0x92, -0x8e, 0x81, 0x70, 0x67, 0x6c, 0x77, 0x87, 0x92, 0x93, 0x8a, 0x7a, 0x71, 0x70, 0x73, 0x78, 0x7d, -0x82, 0x85, 0x89, 0x8c, 0x8c, 0x86, 0x79, 0x6e, 0x6a, 0x6f, 0x7b, 0x8a, 0x94, 0x95, 0x8b, 0x7e, -0x75, 0x70, 0x6b, 0x68, 0x68, 0x6b, 0x71, 0x7d, 0x8f, 0x9e, 0xa4, 0xa0, 0x93, 0x82, 0x73, 0x6c, -0x6d, 0x76, 0x80, 0x87, 0x8a, 0x88, 0x82, 0x7b, 0x76, 0x73, 0x72, 0x74, 0x7a, 0x84, 0x8c, 0x8f, -0x8d, 0x88, 0x81, 0x7a, 0x78, 0x7c, 0x84, 0x8b, 0x8d, 0x8a, 0x82, 0x78, 0x71, 0x70, 0x73, 0x77, -0x7d, 0x86, 0x8a, 0x8a, 0x88, 0x82, 0x7a, 0x76, 0x78, 0x7d, 0x86, 0x8d, 0x8f, 0x8c, 0x85, 0x7e, -0x7b, 0x7a, 0x79, 0x79, 0x7c, 0x81, 0x84, 0x83, 0x81, 0x7c, 0x77, 0x77, 0x7a, 0x7d, 0x80, 0x7d, -0x7a, 0x79, 0x80, 0x8b, 0x91, 0x90, 0x88, 0x7c, 0x75, 0x75, 0x77, 0x79, 0x7c, 0x80, 0x82, 0x82, -0x7e, 0x7b, 0x77, 0x76, 0x76, 0x78, 0x7c, 0x83, 0x89, 0x8b, 0x87, 0x7e, 0x75, 0x6f, 0x70, 0x78, -0x85, 0x92, 0x9a, 0x97, 0x8b, 0x7b, 0x6d, 0x65, 0x63, 0x69, 0x74, 0x84, 0x93, 0x9e, 0xa1, 0x9a, -0x8b, 0x78, 0x69, 0x63, 0x68, 0x73, 0x7e, 0x8a, 0x91, 0x93, 0x91, 0x8d, 0x85, 0x7a, 0x70, 0x6c, -0x6d, 0x74, 0x7e, 0x88, 0x8d, 0x8f, 0x8b, 0x83, 0x7c, 0x77, 0x74, 0x73, 0x75, 0x79, 0x7b, 0x82, -0x8d, 0x95, 0x94, 0x8b, 0x7c, 0x6d, 0x62, 0x64, 0x74, 0x89, 0x96, 0x9b, 0x97, 0x88, 0x76, 0x6b, -0x68, 0x69, 0x6f, 0x7a, 0x86, 0x8f, 0x93, 0x91, 0x8c, 0x83, 0x77, 0x6e, 0x6d, 0x73, 0x7c, 0x87, -0x8d, 0x8c, 0x85, 0x7a, 0x75, 0x72, 0x72, 0x74, 0x79, 0x7d, 0x82, 0x87, 0x8a, 0x89, 0x84, 0x7c, -0x77, 0x76, 0x7b, 0x80, 0x84, 0x85, 0x82, 0x7d, 0x7c, 0x81, 0x85, 0x86, 0x84, 0x80, 0x79, 0x75, -0x77, 0x7b, 0x82, 0x87, 0x89, 0x8a, 0x89, 0x86, 0x84, 0x80, 0x7a, 0x74, 0x70, 0x72, 0x76, 0x79, -0x7d, 0x82, 0x85, 0x86, 0x84, 0x83, 0x84, 0x82, 0x81, 0x78, 0x68, 0x5d, 0x65, 0x85, 0xa9, 0xc3, -0xca, 0xb2, 0x84, 0x54, 0x37, 0x35, 0x47, 0x68, 0x8a, 0x9e, 0xa2, 0x9d, 0x92, 0x85, 0x74, 0x6b, -0x6e, 0x7d, 0x92, 0x9f, 0xa1, 0x95, 0x7d, 0x66, 0x5b, 0x5f, 0x6f, 0x83, 0x94, 0x9c, 0x95, 0x87, -0x78, 0x6e, 0x68, 0x6c, 0x77, 0x87, 0x92, 0x97, 0x95, 0x89, 0x7a, 0x6f, 0x69, 0x71, 0x80, 0x91, -0x9d, 0x9e, 0x90, 0x76, 0x60, 0x54, 0x58, 0x6a, 0x86, 0x9d, 0xaa, 0xa7, 0x98, 0x81, 0x68, 0x59, -0x55, 0x5e, 0x72, 0x8b, 0xa1, 0xad, 0xa9, 0x97, 0x80, 0x68, 0x5a, 0x57, 0x5f, 0x6d, 0x7d, 0x8c, -0x94, 0x96, 0x92, 0x88, 0x7d, 0x76, 0x73, 0x76, 0x7c, 0x83, 0x86, 0x85, 0x81, 0x7a, 0x78, 0x79, -0x7b, 0x82, 0x85, 0x84, 0x81, 0x7d, 0x7b, 0x7b, 0x7d, 0x7e, 0x7e, 0x80, 0x82, 0x84, 0x87, 0x86, -0x82, 0x7e, 0x7c, 0x7e, 0x80, 0x7e, 0x7c, 0x78, 0x78, 0x7a, 0x81, 0x86, 0x88, 0x8a, 0x88, 0x85, -0x80, 0x7b, 0x77, 0x74, 0x75, 0x77, 0x7b, 0x80, 0x85, 0x87, 0x88, 0x89, 0x88, 0x86, 0x84, 0x80, -0x79, 0x75, 0x72, 0x72, 0x77, 0x7e, 0x86, 0x8a, 0x8d, 0x8d, 0x88, 0x81, 0x7b, 0x74, 0x6f, 0x70, -0x74, 0x7b, 0x81, 0x87, 0x8a, 0x8a, 0x88, 0x85, 0x82, 0x7e, 0x7c, 0x76, 0x72, 0x72, 0x77, 0x83, -0x8e, 0x92, 0x8d, 0x81, 0x75, 0x71, 0x74, 0x7b, 0x82, 0x86, 0x86, 0x88, 0x89, 0x8a, 0x87, 0x81, -0x7a, 0x76, 0x77, 0x7b, 0x80, 0x81, 0x81, 0x81, 0x82, 0x83, 0x81, 0x7e, 0x7d, 0x7e, 0x81, 0x83, -0x82, 0x7e, 0x7a, 0x78, 0x7b, 0x82, 0x88, 0x8a, 0x89, 0x85, 0x80, 0x7d, 0x7c, 0x7a, 0x74, 0x6e, -0x6a, 0x6e, 0x7c, 0x8d, 0x9b, 0xa2, 0x9e, 0x93, 0x83, 0x70, 0x64, 0x5e, 0x60, 0x6d, 0x7d, 0x8d, -0x98, 0x9a, 0x94, 0x87, 0x7a, 0x73, 0x70, 0x71, 0x75, 0x7b, 0x81, 0x85, 0x85, 0x84, 0x81, 0x7b, -0x78, 0x76, 0x79, 0x80, 0x88, 0x8d, 0x8c, 0x86, 0x7d, 0x76, 0x74, 0x76, 0x7c, 0x85, 0x8b, 0x8d, -0x8b, 0x84, 0x7a, 0x70, 0x6d, 0x72, 0x7c, 0x89, 0x93, 0x96, 0x91, 0x87, 0x7a, 0x6e, 0x69, 0x6c, -0x77, 0x86, 0x91, 0x95, 0x90, 0x88, 0x7e, 0x76, 0x73, 0x75, 0x78, 0x7d, 0x83, 0x87, 0x89, 0x87, -0x82, 0x7b, 0x79, 0x78, 0x78, 0x7a, 0x7e, 0x7d, 0x7b, 0x7c, 0x7e, 0x82, 0x88, 0x8d, 0x8e, 0x8a, -0x83, 0x7a, 0x71, 0x6d, 0x6e, 0x75, 0x81, 0x8d, 0x95, 0x99, 0x95, 0x89, 0x78, 0x6a, 0x65, 0x69, -0x76, 0x88, 0x95, 0x9b, 0x97, 0x8c, 0x7d, 0x6f, 0x67, 0x67, 0x6d, 0x77, 0x84, 0x8e, 0x93, 0x93, -0x8e, 0x85, 0x7b, 0x73, 0x6f, 0x6f, 0x73, 0x7a, 0x81, 0x85, 0x87, 0x88, 0x87, 0x86, 0x82, 0x7e, -0x7c, 0x7a, 0x7a, 0x79, 0x79, 0x7b, 0x7d, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x82, 0x84, -0x85, 0x83, 0x80, 0x7b, 0x79, 0x7a, 0x7a, 0x7a, 0x7c, 0x80, 0x85, 0x8a, 0x8c, 0x88, 0x7e, 0x75, -0x6f, 0x6d, 0x71, 0x7a, 0x84, 0x8b, 0x8f, 0x8e, 0x8a, 0x84, 0x7a, 0x71, 0x6b, 0x69, 0x6e, 0x7b, -0x8a, 0x95, 0x98, 0x94, 0x8c, 0x80, 0x75, 0x6e, 0x6c, 0x6f, 0x76, 0x7e, 0x86, 0x89, 0x8a, 0x89, -0x86, 0x80, 0x78, 0x71, 0x6d, 0x6e, 0x78, 0x89, 0x98, 0xa1, 0x9d, 0x8f, 0x7e, 0x6f, 0x67, 0x66, -0x6b, 0x74, 0x7a, 0x7d, 0x7e, 0x7e, 0x81, 0x86, 0x8c, 0x91, 0x92, 0x90, 0x8c, 0x83, 0x77, 0x69, -0x5f, 0x5f, 0x69, 0x7d, 0x92, 0xa0, 0xa0, 0x95, 0x83, 0x6f, 0x62, 0x5c, 0x5f, 0x69, 0x78, 0x8b, -0x9a, 0xa2, 0x9e, 0x90, 0x7b, 0x69, 0x60, 0x64, 0x70, 0x80, 0x8c, 0x90, 0x8d, 0x87, 0x80, 0x79, -0x76, 0x78, 0x80, 0x89, 0x8f, 0x8f, 0x86, 0x79, 0x6e, 0x6a, 0x6e, 0x77, 0x82, 0x89, 0x8d, 0x8c, -0x87, 0x7e, 0x75, 0x71, 0x73, 0x7b, 0x86, 0x8b, 0x89, 0x84, 0x80, 0x7e, 0x7d, 0x7b, 0x7a, 0x7b, -0x7c, 0x7e, 0x7e, 0x7a, 0x78, 0x7a, 0x7e, 0x84, 0x88, 0x89, 0x88, 0x81, 0x74, 0x69, 0x68, 0x70, -0x80, 0x8e, 0x95, 0x93, 0x8c, 0x83, 0x79, 0x70, 0x6c, 0x6c, 0x73, 0x7c, 0x88, 0x94, 0x99, 0x96, -0x89, 0x79, 0x6b, 0x65, 0x66, 0x6e, 0x7a, 0x86, 0x90, 0x97, 0x96, 0x8f, 0x83, 0x75, 0x6f, 0x6c, -0x6f, 0x77, 0x82, 0x8d, 0x94, 0x93, 0x8b, 0x7b, 0x6d, 0x67, 0x6a, 0x74, 0x82, 0x90, 0x97, 0x95, -0x8c, 0x7e, 0x73, 0x6d, 0x6e, 0x73, 0x7d, 0x88, 0x8f, 0x8f, 0x88, 0x7d, 0x78, 0x79, 0x7b, 0x7b, -0x79, 0x78, 0x7a, 0x7e, 0x85, 0x89, 0x8c, 0x8c, 0x89, 0x83, 0x79, 0x73, 0x71, 0x70, 0x72, 0x78, -0x81, 0x8a, 0x8e, 0x8e, 0x88, 0x80, 0x78, 0x74, 0x76, 0x7c, 0x82, 0x84, 0x82, 0x7c, 0x7b, 0x80, -0x86, 0x87, 0x85, 0x81, 0x78, 0x71, 0x6d, 0x70, 0x7a, 0x88, 0x92, 0x97, 0x94, 0x8a, 0x7c, 0x6d, -0x61, 0x5e, 0x66, 0x77, 0x8a, 0x98, 0x9d, 0x99, 0x8d, 0x7d, 0x6e, 0x64, 0x64, 0x6c, 0x78, 0x84, -0x8d, 0x92, 0x91, 0x8b, 0x83, 0x7a, 0x74, 0x73, 0x76, 0x7a, 0x81, 0x89, 0x8d, 0x88, 0x7d, 0x77, -0x77, 0x7d, 0x85, 0x89, 0x86, 0x80, 0x7a, 0x77, 0x79, 0x7c, 0x81, 0x84, 0x83, 0x81, 0x7c, 0x7a, -0x76, 0x72, 0x6f, 0x73, 0x7c, 0x8a, 0x93, 0x95, 0x8e, 0x81, 0x72, 0x6a, 0x6b, 0x71, 0x7c, 0x87, -0x8f, 0x91, 0x8c, 0x84, 0x7a, 0x73, 0x70, 0x74, 0x7b, 0x83, 0x89, 0x8d, 0x8d, 0x88, 0x81, 0x77, -0x71, 0x71, 0x74, 0x7b, 0x83, 0x87, 0x87, 0x82, 0x7d, 0x7c, 0x7d, 0x80, 0x81, 0x80, 0x81, 0x83, -0x85, 0x84, 0x80, 0x7a, 0x76, 0x75, 0x78, 0x7c, 0x82, 0x88, 0x8b, 0x8b, 0x8a, 0x85, 0x81, 0x7e, -0x7c, 0x7b, 0x7a, 0x79, 0x77, 0x77, 0x7c, 0x82, 0x85, 0x88, 0x89, 0x86, 0x83, 0x7e, 0x78, 0x75, -0x77, 0x7c, 0x85, 0x8c, 0x8e, 0x89, 0x7e, 0x77, 0x73, 0x74, 0x7a, 0x83, 0x88, 0x88, 0x89, 0x88, -0x87, 0x85, 0x80, 0x79, 0x72, 0x6d, 0x70, 0x7a, 0x85, 0x90, 0x95, 0x94, 0x8d, 0x82, 0x76, 0x69, -0x5f, 0x5f, 0x68, 0x79, 0x8e, 0x9f, 0xa6, 0xa1, 0x92, 0x7d, 0x6a, 0x5e, 0x5b, 0x60, 0x6d, 0x7c, -0x8b, 0x95, 0x97, 0x94, 0x8d, 0x84, 0x79, 0x71, 0x6e, 0x6e, 0x71, 0x76, 0x7d, 0x85, 0x8b, 0x8d, -0x8f, 0x8c, 0x86, 0x7e, 0x77, 0x71, 0x70, 0x73, 0x7a, 0x84, 0x8c, 0x90, 0x91, 0x90, 0x88, 0x7c, -0x70, 0x67, 0x66, 0x6f, 0x7e, 0x8f, 0x9a, 0x9c, 0x93, 0x84, 0x73, 0x66, 0x62, 0x68, 0x74, 0x87, -0x96, 0x9c, 0x9b, 0x92, 0x85, 0x78, 0x6f, 0x6c, 0x6e, 0x74, 0x7c, 0x85, 0x8b, 0x8d, 0x89, 0x82, -0x7c, 0x7a, 0x7c, 0x7d, 0x7e, 0x7d, 0x7a, 0x79, 0x7a, 0x7d, 0x81, 0x84, 0x85, 0x85, 0x83, 0x80, -0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x7a, 0x7b, 0x7d, 0x80, 0x83, 0x84, 0x83, 0x80, 0x7d, 0x7e, -0x83, 0x86, 0x86, 0x83, 0x80, 0x7a, 0x74, 0x6e, 0x6b, 0x6f, 0x7c, 0x8c, 0x9a, 0xa0, 0x9b, 0x8c, -0x79, 0x6b, 0x67, 0x69, 0x71, 0x7b, 0x82, 0x87, 0x8a, 0x8b, 0x88, 0x80, 0x77, 0x74, 0x76, 0x7a, -0x81, 0x84, 0x83, 0x7e, 0x79, 0x78, 0x7a, 0x7d, 0x83, 0x87, 0x8a, 0x88, 0x82, 0x7a, 0x75, 0x73, -0x76, 0x7a, 0x7e, 0x82, 0x84, 0x85, 0x83, 0x81, 0x80, 0x7d, 0x7b, 0x78, 0x77, 0x77, 0x7a, 0x7c, -0x80, 0x81, 0x83, 0x86, 0x87, 0x87, 0x85, 0x81, 0x7c, 0x7a, 0x79, 0x7b, 0x7c, 0x7e, 0x81, 0x83, -0x85, 0x87, 0x84, 0x7e, 0x7a, 0x7a, 0x7d, 0x80, 0x81, 0x7d, 0x78, 0x75, 0x76, 0x7c, 0x86, 0x8b, -0x8a, 0x85, 0x7e, 0x7b, 0x7b, 0x7d, 0x7d, 0x7d, 0x7d, 0x80, 0x84, 0x88, 0x89, 0x86, 0x81, 0x7b, -0x78, 0x77, 0x78, 0x7c, 0x80, 0x83, 0x85, 0x85, 0x83, 0x82, 0x7e, 0x7b, 0x7a, 0x7d, 0x82, 0x87, -0x89, 0x88, 0x86, 0x82, 0x7d, 0x7a, 0x78, 0x78, 0x79, 0x7e, 0x83, 0x86, 0x86, 0x85, 0x84, 0x82, -0x7d, 0x7a, 0x76, 0x74, 0x76, 0x7a, 0x80, 0x83, 0x83, 0x82, 0x81, 0x80, 0x82, 0x85, 0x85, 0x82, -0x7d, 0x7a, 0x79, 0x7a, 0x7d, 0x80, 0x82, 0x84, 0x85, 0x83, 0x81, 0x7d, 0x79, 0x77, 0x77, 0x7a, -0x80, 0x86, 0x89, 0x8a, 0x88, 0x84, 0x7e, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, 0x82, 0x85, 0x87, -0x87, 0x83, 0x7d, 0x78, 0x75, 0x75, 0x78, 0x7e, 0x86, 0x8d, 0x90, 0x8d, 0x85, 0x7b, 0x73, 0x6f, -0x70, 0x76, 0x7e, 0x87, 0x8d, 0x8e, 0x8a, 0x82, 0x79, 0x73, 0x70, 0x70, 0x74, 0x7b, 0x84, 0x8b, -0x8f, 0x8d, 0x86, 0x7c, 0x75, 0x72, 0x73, 0x78, 0x7d, 0x83, 0x87, 0x8a, 0x8b, 0x88, 0x83, 0x7b, -0x73, 0x70, 0x70, 0x72, 0x77, 0x7e, 0x85, 0x8c, 0x8f, 0x8f, 0x8a, 0x82, 0x79, 0x71, 0x6e, 0x6f, -0x75, 0x7c, 0x84, 0x89, 0x8b, 0x8b, 0x88, 0x83, 0x7e, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7a, 0x78, -0x78, 0x78, 0x7b, 0x80, 0x84, 0x87, 0x8a, 0x8a, 0x89, 0x84, 0x7c, 0x75, 0x70, 0x71, 0x76, 0x7c, -0x84, 0x88, 0x88, 0x86, 0x83, 0x80, 0x7c, 0x7b, 0x7a, 0x7a, 0x7b, 0x7c, 0x7e, 0x82, 0x85, 0x86, -0x85, 0x81, 0x7c, 0x79, 0x77, 0x77, 0x7a, 0x7e, 0x83, 0x88, 0x8a, 0x89, 0x85, 0x7e, 0x79, 0x77, -0x77, 0x7a, 0x7d, 0x7e, 0x81, 0x81, 0x80, 0x80, 0x80, 0x84, 0x88, 0x89, 0x88, 0x83, 0x7a, 0x75, -0x73, 0x73, 0x77, 0x7c, 0x82, 0x87, 0x8a, 0x89, 0x85, 0x7e, 0x79, 0x75, 0x71, 0x72, 0x77, 0x7d, -0x86, 0x8c, 0x90, 0x8e, 0x89, 0x82, 0x79, 0x74, 0x73, 0x75, 0x7a, 0x81, 0x87, 0x8b, 0x8a, 0x85, -0x80, 0x79, 0x75, 0x73, 0x76, 0x7c, 0x82, 0x88, 0x8d, 0x8f, 0x8d, 0x86, 0x7c, 0x73, 0x6d, 0x6d, -0x72, 0x7a, 0x83, 0x8a, 0x90, 0x92, 0x8f, 0x87, 0x7d, 0x75, 0x70, 0x6f, 0x72, 0x77, 0x7d, 0x84, -0x88, 0x89, 0x88, 0x86, 0x84, 0x81, 0x7d, 0x7a, 0x78, 0x77, 0x78, 0x7b, 0x7e, 0x82, 0x84, 0x84, -0x82, 0x81, 0x81, 0x82, 0x83, 0x83, 0x80, 0x7b, 0x77, 0x77, 0x78, 0x7b, 0x80, 0x80, 0x7d, 0x7b, -0x7b, 0x80, 0x86, 0x8c, 0x8d, 0x8b, 0x83, 0x79, 0x72, 0x6e, 0x6f, 0x73, 0x79, 0x7e, 0x86, 0x8d, -0x92, 0x94, 0x8f, 0x87, 0x7d, 0x74, 0x6e, 0x6c, 0x6d, 0x72, 0x7a, 0x83, 0x8a, 0x90, 0x91, 0x8d, -0x86, 0x7d, 0x76, 0x72, 0x72, 0x74, 0x78, 0x7b, 0x7d, 0x82, 0x87, 0x8b, 0x8b, 0x86, 0x7e, 0x78, -0x75, 0x76, 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x83, 0x83, 0x80, 0x7c, 0x7b, 0x7a, 0x7a, 0x7e, 0x83, -0x85, 0x86, 0x85, 0x81, 0x7c, 0x78, 0x75, 0x77, 0x7b, 0x82, 0x87, 0x89, 0x87, 0x81, 0x79, 0x75, -0x75, 0x78, 0x7e, 0x84, 0x88, 0x88, 0x85, 0x83, 0x80, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, -0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7d, 0x7b, 0x78, 0x78, 0x7a, 0x7e, 0x86, -0x8c, 0x8d, 0x89, 0x81, 0x79, 0x74, 0x72, 0x75, 0x7a, 0x80, 0x84, 0x88, 0x88, 0x86, 0x83, 0x7b, -0x74, 0x71, 0x71, 0x76, 0x80, 0x87, 0x8b, 0x8c, 0x8b, 0x87, 0x80, 0x79, 0x74, 0x72, 0x73, 0x77, -0x7d, 0x83, 0x87, 0x88, 0x85, 0x82, 0x7e, 0x7b, 0x7b, 0x7a, 0x78, 0x79, 0x7d, 0x81, 0x84, 0x85, -0x84, 0x82, 0x7e, 0x7c, 0x7a, 0x79, 0x78, 0x79, 0x7d, 0x81, 0x83, 0x84, 0x82, 0x7d, 0x7b, 0x7a, -0x7c, 0x80, 0x83, 0x84, 0x83, 0x80, 0x7d, 0x7b, 0x7a, 0x7b, 0x7e, 0x82, 0x84, 0x87, 0x88, 0x86, -0x84, 0x7d, 0x78, 0x75, 0x73, 0x75, 0x7a, 0x82, 0x88, 0x8c, 0x8e, 0x8b, 0x85, 0x7d, 0x74, 0x70, -0x6e, 0x70, 0x79, 0x83, 0x8b, 0x8f, 0x8b, 0x86, 0x83, 0x7e, 0x7d, 0x7a, 0x78, 0x76, 0x74, 0x74, -0x77, 0x7d, 0x86, 0x8d, 0x8f, 0x8f, 0x8b, 0x86, 0x7e, 0x75, 0x6e, 0x6a, 0x6a, 0x71, 0x7b, 0x88, -0x92, 0x98, 0x97, 0x8f, 0x83, 0x76, 0x6e, 0x6c, 0x6f, 0x78, 0x82, 0x8a, 0x8f, 0x8e, 0x8a, 0x83, -0x7c, 0x75, 0x72, 0x72, 0x78, 0x81, 0x8a, 0x91, 0x92, 0x8d, 0x84, 0x78, 0x71, 0x6c, 0x6b, 0x70, -0x79, 0x85, 0x8c, 0x90, 0x8e, 0x86, 0x7d, 0x77, 0x74, 0x75, 0x76, 0x78, 0x7c, 0x84, 0x8a, 0x8d, -0x8a, 0x85, 0x7d, 0x76, 0x74, 0x75, 0x77, 0x7a, 0x7e, 0x82, 0x85, 0x85, 0x84, 0x83, 0x82, 0x7d, -0x7a, 0x78, 0x76, 0x77, 0x79, 0x7c, 0x80, 0x81, 0x84, 0x85, 0x82, 0x80, 0x7c, 0x7b, 0x7b, 0x7b, -0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x82, 0x81, 0x7d, 0x79, 0x76, -0x75, 0x78, 0x7b, 0x7d, 0x81, 0x84, 0x86, 0x8a, 0x8c, 0x8c, 0x84, 0x7a, 0x70, 0x6a, 0x6b, 0x70, -0x78, 0x83, 0x8b, 0x91, 0x94, 0x90, 0x88, 0x7d, 0x71, 0x6a, 0x69, 0x6e, 0x77, 0x81, 0x8a, 0x8e, -0x8c, 0x88, 0x84, 0x80, 0x7a, 0x76, 0x75, 0x77, 0x7d, 0x83, 0x86, 0x85, 0x81, 0x7c, 0x7b, 0x7d, -0x82, 0x84, 0x83, 0x81, 0x7c, 0x7a, 0x7a, 0x7c, 0x7c, 0x7d, 0x80, 0x84, 0x88, 0x89, 0x84, 0x7a, -0x73, 0x70, 0x73, 0x78, 0x7e, 0x84, 0x86, 0x87, 0x87, 0x86, 0x83, 0x7e, 0x7a, 0x7a, 0x7b, 0x7c, -0x7b, 0x78, 0x78, 0x78, 0x7b, 0x81, 0x85, 0x87, 0x88, 0x87, 0x85, 0x80, 0x79, 0x75, 0x73, 0x74, -0x77, 0x7b, 0x81, 0x86, 0x88, 0x89, 0x86, 0x81, 0x7b, 0x77, 0x75, 0x77, 0x79, 0x7b, 0x7e, 0x84, -0x89, 0x8c, 0x8c, 0x88, 0x81, 0x79, 0x74, 0x72, 0x73, 0x78, 0x7d, 0x83, 0x88, 0x8a, 0x88, 0x84, -0x80, 0x7a, 0x77, 0x76, 0x79, 0x7c, 0x7d, 0x80, 0x83, 0x86, 0x88, 0x87, 0x85, 0x81, 0x7b, 0x78, -0x75, 0x75, 0x78, 0x7c, 0x82, 0x88, 0x8b, 0x8b, 0x87, 0x7e, 0x76, 0x72, 0x70, 0x72, 0x77, 0x7c, -0x82, 0x86, 0x88, 0x87, 0x83, 0x7c, 0x78, 0x77, 0x78, 0x79, 0x7a, 0x7c, 0x7e, 0x83, 0x88, 0x8c, -0x8b, 0x86, 0x7d, 0x74, 0x71, 0x74, 0x77, 0x7b, 0x80, 0x82, 0x82, 0x83, 0x86, 0x87, 0x85, 0x83, -0x81, 0x80, 0x7e, 0x7c, 0x7b, 0x79, 0x79, 0x7d, 0x82, 0x86, 0x88, 0x87, 0x85, 0x82, 0x7e, 0x7b, -0x78, 0x78, 0x7a, 0x7d, 0x81, 0x84, 0x85, 0x84, 0x82, 0x83, 0x84, 0x84, 0x82, 0x7b, 0x75, 0x71, -0x71, 0x77, 0x80, 0x87, 0x8c, 0x8f, 0x90, 0x8b, 0x83, 0x77, 0x6d, 0x67, 0x67, 0x6c, 0x78, 0x86, -0x91, 0x98, 0x99, 0x94, 0x8a, 0x7b, 0x6e, 0x66, 0x64, 0x6b, 0x76, 0x84, 0x8d, 0x94, 0x96, 0x93, -0x8d, 0x83, 0x78, 0x70, 0x6d, 0x6e, 0x74, 0x7a, 0x82, 0x88, 0x8d, 0x8e, 0x8a, 0x84, 0x7b, 0x77, -0x76, 0x77, 0x78, 0x7a, 0x7d, 0x81, 0x83, 0x84, 0x83, 0x81, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7b, -0x7b, 0x7b, 0x7c, 0x7e, 0x82, 0x84, 0x85, 0x85, 0x81, 0x7c, 0x79, 0x79, 0x7c, 0x7d, 0x7e, 0x81, -0x83, 0x83, 0x85, 0x84, 0x82, 0x7c, 0x78, 0x79, 0x7c, 0x80, 0x83, 0x83, 0x82, 0x83, 0x83, 0x82, -0x7d, 0x78, 0x74, 0x73, 0x76, 0x7b, 0x80, 0x84, 0x87, 0x89, 0x8a, 0x89, 0x83, 0x7b, 0x76, 0x75, -0x78, 0x7a, 0x7c, 0x7e, 0x81, 0x84, 0x88, 0x8a, 0x8a, 0x85, 0x80, 0x7a, 0x77, 0x76, 0x75, 0x77, -0x7b, 0x83, 0x8a, 0x8e, 0x8c, 0x87, 0x80, 0x79, 0x76, 0x74, 0x73, 0x74, 0x78, 0x7d, 0x84, 0x89, -0x8d, 0x8d, 0x8a, 0x87, 0x81, 0x7a, 0x72, 0x6e, 0x70, 0x76, 0x80, 0x88, 0x8f, 0x91, 0x8e, 0x88, -0x81, 0x77, 0x70, 0x6f, 0x72, 0x78, 0x7e, 0x84, 0x88, 0x8b, 0x8e, 0x8e, 0x8b, 0x81, 0x73, 0x69, -0x63, 0x67, 0x75, 0x84, 0x92, 0x9a, 0x9a, 0x96, 0x8c, 0x80, 0x72, 0x67, 0x62, 0x64, 0x6c, 0x79, -0x88, 0x94, 0x99, 0x98, 0x92, 0x87, 0x7b, 0x70, 0x68, 0x67, 0x6d, 0x76, 0x80, 0x89, 0x8d, 0x8e, -0x8c, 0x8a, 0x86, 0x82, 0x7d, 0x78, 0x75, 0x73, 0x73, 0x74, 0x77, 0x7e, 0x87, 0x8d, 0x8f, 0x8e, -0x89, 0x83, 0x7b, 0x74, 0x71, 0x70, 0x72, 0x78, 0x80, 0x86, 0x88, 0x86, 0x85, 0x84, 0x82, 0x80, -0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7b, 0x7b, 0x7c, 0x7e, 0x83, 0x85, 0x84, 0x83, 0x80, 0x7e, -0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x82, 0x86, 0x88, 0x86, -0x82, 0x7e, 0x7a, 0x79, 0x7a, 0x7b, 0x7d, 0x81, 0x82, 0x82, 0x81, 0x7c, 0x7a, 0x7b, 0x81, 0x87, -0x8a, 0x89, 0x85, 0x7d, 0x78, 0x75, 0x76, 0x79, 0x7d, 0x82, 0x85, 0x89, 0x8b, 0x89, 0x84, 0x7d, -0x78, 0x76, 0x75, 0x77, 0x79, 0x7b, 0x7d, 0x80, 0x85, 0x89, 0x89, 0x88, 0x86, 0x82, 0x7c, 0x78, -0x74, 0x73, 0x75, 0x7a, 0x82, 0x88, 0x8a, 0x8a, 0x88, 0x83, 0x7d, 0x7a, 0x78, 0x77, 0x77, 0x79, -0x7d, 0x83, 0x89, 0x8b, 0x89, 0x84, 0x7c, 0x75, 0x71, 0x71, 0x77, 0x82, 0x8a, 0x8f, 0x8d, 0x86, -0x7d, 0x77, 0x74, 0x75, 0x78, 0x7d, 0x84, 0x87, 0x89, 0x86, 0x82, 0x7d, 0x7b, 0x78, 0x79, 0x7b, -0x7c, 0x7b, 0x7b, 0x7d, 0x7e, 0x81, 0x83, 0x85, 0x85, 0x83, 0x80, 0x7b, 0x78, 0x77, 0x79, 0x79, -0x80, 0x86, 0x84, 0x86, 0x87, 0x81, 0x7c, 0x7a, 0x7b, 0x7e, 0x7c, 0x7e, 0x80, 0x7b, 0x7b, 0x7b, -0x7c, 0x82, 0x82, 0x81, 0x82, 0x82, 0x83, 0x82, 0x7c, 0x7a, 0x78, 0x77, 0x7a, 0x80, 0x83, 0x81, -0x80, 0x7e, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x7e, 0x7e, 0x81, 0x80, 0x7d, 0x7d, 0x80, 0x81, 0x80, -0x7e, 0x7d, 0x7c, 0x7c, 0x7e, 0x81, 0x81, 0x7d, 0x7b, 0x7b, 0x7d, 0x80, 0x82, 0x83, 0x86, 0x86, -0x85, 0x81, 0x7b, 0x77, 0x72, 0x73, 0x75, 0x7a, 0x80, 0x84, 0x8a, 0x8e, 0x90, 0x8b, 0x81, 0x75, -0x6d, 0x68, 0x69, 0x71, 0x7b, 0x86, 0x8f, 0x91, 0x90, 0x89, 0x7d, 0x72, 0x6c, 0x6e, 0x73, 0x7a, -0x82, 0x87, 0x89, 0x87, 0x85, 0x83, 0x80, 0x7d, 0x7b, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x83, 0x84, -0x84, 0x84, 0x84, 0x82, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7d, 0x7d, -0x7e, 0x7d, 0x7d, 0x7c, 0x7d, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7c, 0x7e, 0x81, 0x82, 0x82, 0x81, -0x80, 0x7e, 0x7c, 0x7b, 0x7a, 0x7b, 0x7b, 0x7e, 0x84, 0x87, 0x87, 0x85, 0x82, 0x7e, 0x79, 0x76, -0x75, 0x77, 0x79, 0x7d, 0x83, 0x88, 0x8b, 0x8b, 0x8a, 0x86, 0x7d, 0x75, 0x72, 0x73, 0x76, 0x7c, -0x84, 0x89, 0x8b, 0x87, 0x84, 0x80, 0x7a, 0x75, 0x74, 0x79, 0x7e, 0x83, 0x86, 0x88, 0x86, 0x81, -0x7d, 0x7a, 0x76, 0x75, 0x78, 0x7c, 0x82, 0x86, 0x88, 0x86, 0x81, 0x7e, 0x7c, 0x79, 0x78, 0x7b, -0x7e, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x81, 0x83, 0x82, 0x81, 0x80, 0x7e, 0x7b, 0x77, 0x75, 0x75, -0x77, 0x7d, 0x85, 0x8a, 0x8c, 0x8b, 0x88, 0x82, 0x79, 0x72, 0x6f, 0x71, 0x75, 0x7d, 0x86, 0x8a, -0x8c, 0x8d, 0x8b, 0x86, 0x7e, 0x77, 0x72, 0x70, 0x72, 0x79, 0x81, 0x85, 0x89, 0x8c, 0x8c, 0x89, -0x86, 0x82, 0x7c, 0x77, 0x73, 0x73, 0x74, 0x78, 0x80, 0x86, 0x88, 0x87, 0x85, 0x82, 0x7d, 0x7a, -0x79, 0x79, 0x7a, 0x7e, 0x84, 0x86, 0x85, 0x82, 0x80, 0x80, 0x81, 0x82, 0x80, 0x7c, 0x79, 0x7a, -0x7e, 0x82, 0x84, 0x85, 0x86, 0x85, 0x84, 0x81, 0x7d, 0x78, 0x75, 0x78, 0x7e, 0x84, 0x88, 0x8b, -0x8c, 0x88, 0x83, 0x7e, 0x77, 0x72, 0x72, 0x74, 0x78, 0x81, 0x88, 0x8b, 0x8c, 0x8b, 0x86, 0x82, -0x7d, 0x77, 0x73, 0x71, 0x70, 0x72, 0x79, 0x82, 0x8c, 0x93, 0x94, 0x90, 0x89, 0x7d, 0x75, 0x70, -0x6e, 0x70, 0x74, 0x7a, 0x84, 0x8d, 0x92, 0x93, 0x8f, 0x88, 0x7e, 0x75, 0x6f, 0x6e, 0x72, 0x79, -0x82, 0x89, 0x8e, 0x8f, 0x8c, 0x84, 0x7b, 0x74, 0x70, 0x6f, 0x74, 0x7a, 0x82, 0x88, 0x8b, 0x89, -0x85, 0x81, 0x7b, 0x76, 0x73, 0x72, 0x74, 0x79, 0x80, 0x86, 0x8b, 0x8d, 0x8b, 0x89, 0x83, 0x7b, -0x75, 0x72, 0x71, 0x73, 0x78, 0x80, 0x87, 0x8d, 0x91, 0x90, 0x8c, 0x86, 0x7b, 0x72, 0x6f, 0x6f, -0x72, 0x76, 0x7c, 0x82, 0x86, 0x88, 0x88, 0x86, 0x84, 0x82, 0x80, 0x7c, 0x78, 0x76, 0x74, 0x75, -0x79, 0x7d, 0x83, 0x87, 0x8b, 0x8b, 0x88, 0x84, 0x7d, 0x75, 0x70, 0x6f, 0x71, 0x78, 0x80, 0x88, -0x8d, 0x8d, 0x8b, 0x86, 0x82, 0x7c, 0x7a, 0x7a, 0x79, 0x79, 0x7a, 0x7a, 0x7d, 0x84, 0x89, 0x8b, -0x8c, 0x89, 0x84, 0x7d, 0x77, 0x73, 0x72, 0x74, 0x78, 0x7c, 0x82, 0x87, 0x8c, 0x90, 0x91, 0x8d, -0x85, 0x79, 0x6f, 0x69, 0x69, 0x6d, 0x75, 0x80, 0x8a, 0x92, 0x97, 0x95, 0x8d, 0x82, 0x75, 0x6e, -0x6c, 0x6e, 0x75, 0x7c, 0x84, 0x89, 0x8d, 0x8f, 0x8c, 0x85, 0x7c, 0x73, 0x6d, 0x6d, 0x72, 0x7b, -0x86, 0x8f, 0x92, 0x91, 0x8c, 0x84, 0x79, 0x71, 0x6f, 0x70, 0x75, 0x7d, 0x86, 0x8b, 0x8c, 0x88, -0x82, 0x7d, 0x7a, 0x78, 0x77, 0x76, 0x77, 0x7b, 0x80, 0x83, 0x83, 0x82, 0x81, 0x82, 0x83, 0x82, -0x83, 0x82, 0x7e, 0x7b, 0x7a, 0x79, 0x7a, 0x7b, 0x7e, 0x82, 0x86, 0x89, 0x89, 0x85, 0x80, 0x78, -0x74, 0x73, 0x75, 0x79, 0x7e, 0x84, 0x88, 0x8b, 0x8b, 0x89, 0x83, 0x7b, 0x76, 0x73, 0x73, 0x76, -0x7b, 0x81, 0x84, 0x87, 0x88, 0x89, 0x87, 0x83, 0x7e, 0x7a, 0x77, 0x78, 0x7a, 0x7d, 0x80, 0x82, -0x82, 0x82, 0x81, 0x7f, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, -0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7d, -0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x79, 0x7a, 0x7b, 0x7a, 0x79, 0x78, -0x78, 0x79, 0x7a, 0x7a, 0x78, 0x77, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x7c, 0x7b, 0x7b, -0x7d, 0x81, 0x83, 0x85, 0x85, 0x84, 0x83, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x83, -0x84, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x85, 0x87, 0x87, 0x85, 0x80, 0x75, 0x77, 0x80, 0x85, -0x88, 0x87, 0x85, 0x82, 0x7e, 0x7e, 0x7e, 0x81, 0x84, 0x86, 0x84, 0x83, 0x85, 0x88, 0x89, 0x8a, -0x8a, 0x87, 0x81, 0x7a, 0x78, 0x77, 0x77, 0x79, 0x79, 0x75, 0x70, 0x6d, 0x6b, 0x6f, 0x73, 0x77, -0x79, 0x77, 0x75, 0x74, 0x71, 0x70, 0x71, 0x7a, 0x83, 0x7d, 0x76, 0x76, 0x7c, 0x7d, 0x7c, 0x7a, -0x77, 0x75, 0x72, 0x77, 0x7a, 0x83, 0x8b, 0x8a, 0x8b, 0x87, 0x85, 0x87, 0x8c, 0x94, 0x9e, 0xa8, -0xac, 0xa8, 0xa3, 0x9d, 0x98, 0x92, 0x89, 0x87, 0x86, 0x7e, 0x79, 0x7e, 0x81, 0x7d, 0x72, 0x6a, -0x67, 0x61, 0x66, 0x6c, 0x70, 0x74, 0x71, 0x6a, 0x67, 0x69, 0x6a, 0x6c, 0x6e, 0x71, 0x70, 0x6b, -0x68, 0x69, 0x6b, 0x6e, 0x6f, 0x6f, 0x6a, 0x64, 0x61, 0x5e, 0x6c, 0x7a, 0x82, 0x84, 0x86, 0x89, -0x8a, 0x8e, 0x97, 0x9f, 0xa6, 0xa4, 0xa5, 0xa7, 0xa3, 0x9d, 0xa0, 0xa2, 0xa3, 0xb1, 0xb1, 0xab, -0xa8, 0xa4, 0xa0, 0x9a, 0x93, 0x8a, 0x83, 0x7e, 0x76, 0x7b, 0x86, 0x8c, 0x8b, 0x83, 0x7d, 0x7d, -0x7e, 0x82, 0x86, 0x89, 0x85, 0x7d, 0x7e, 0x7c, 0x79, 0x7c, 0x78, 0x71, 0x6f, 0x69, 0x68, 0x66, -0x62, 0x63, 0x63, 0x5f, 0x5a, 0x4c, 0x49, 0x5e, 0x64, 0x6c, 0x74, 0x74, 0x6d, 0x6e, 0x76, 0x81, -0x89, 0x8e, 0x90, 0x8e, 0x88, 0x87, 0x86, 0x86, 0x88, 0x86, 0x7b, 0x7e, 0x84, 0x8a, 0x92, 0x99, -0xa2, 0xa5, 0x9c, 0x91, 0x88, 0x7c, 0x7e, 0x81, 0x73, 0x70, 0x69, 0x61, 0x5e, 0x5c, 0x58, 0x5e, -0x5b, 0x5f, 0x67, 0x6a, 0x71, 0x76, 0x83, 0x8a, 0x8d, 0x8a, 0x81, 0x84, 0x89, 0x8c, 0x90, 0x8f, -0x8d, 0x85, 0x79, 0x75, 0x70, 0x72, 0x7e, 0x70, 0x68, 0x6d, 0x6e, 0x72, 0x7c, 0x87, 0x8b, 0x8a, -0x87, 0x7d, 0x72, 0x78, 0x82, 0x8a, 0x8d, 0x86, 0x77, 0x69, 0x67, 0x7a, 0x8c, 0x92, 0x98, 0xa3, -0xa2, 0x97, 0x89, 0x80, 0x7b, 0x88, 0x95, 0x8e, 0x92, 0x96, 0x98, 0x9b, 0x9c, 0x9a, 0x9e, 0x9b, -0x95, 0x93, 0x94, 0x94, 0x96, 0x93, 0x8c, 0x83, 0x78, 0x6d, 0x6f, 0x72, 0x6d, 0x68, 0x67, 0x66, -0x63, 0x5f, 0x59, 0x5a, 0x63, 0x6b, 0x67, 0x68, 0x70, 0x7a, 0x7a, 0x7c, 0x7a, 0x79, 0x7b, 0x7a, -0x76, 0x6c, 0x68, 0x70, 0x6a, 0x67, 0x6e, 0x74, 0x71, 0x78, 0x8e, 0x91, 0x87, 0x86, 0x8d, 0x8c, -0x84, 0x7b, 0x7e, 0x80, 0x72, 0x5f, 0x63, 0x71, 0x7e, 0x85, 0x88, 0x83, 0x74, 0x72, 0x70, 0x74, -0x82, 0x8d, 0x8f, 0x89, 0x82, 0x7b, 0x7a, 0x80, 0x88, 0x95, 0x96, 0x90, 0x90, 0x91, 0x8d, 0x8a, -0x8c, 0x8b, 0x8f, 0x93, 0x90, 0x98, 0xa9, 0xa6, 0x9a, 0x8f, 0x89, 0x83, 0x74, 0x6a, 0x68, 0x6e, -0x7a, 0x7a, 0x76, 0x6c, 0x67, 0x80, 0x88, 0x80, 0x83, 0x8d, 0x91, 0x91, 0x8d, 0x8b, 0x89, 0x8b, -0x8b, 0x83, 0x7a, 0x72, 0x6c, 0x76, 0x7c, 0x7b, 0x81, 0x87, 0x86, 0x89, 0x8e, 0x94, 0xa2, 0xb7, -0xb1, 0x97, 0x86, 0x81, 0x8a, 0x82, 0x7a, 0x80, 0x7d, 0x77, 0x78, 0x6d, 0x66, 0x6e, 0x75, 0x7b, -0x6a, 0x5c, 0x5d, 0x69, 0x79, 0x80, 0x7b, 0x77, 0x77, 0x76, 0x73, 0x74, 0x72, 0x77, 0x7a, 0x72, -0x63, 0x60, 0x62, 0x64, 0x6b, 0x6d, 0x69, 0x68, 0x6d, 0x82, 0x80, 0x75, 0x6e, 0x74, 0x7a, 0x67, -0x66, 0x6d, 0x67, 0x74, 0x8d, 0x8f, 0x8d, 0x8e, 0x89, 0x84, 0x78, 0x73, 0x78, 0x87, 0x85, 0x77, -0x74, 0x76, 0x76, 0x7c, 0x83, 0x7a, 0x71, 0x70, 0x72, 0x73, 0x78, 0x83, 0x9d, 0xa6, 0x91, 0x86, -0x86, 0x87, 0x9e, 0xad, 0xa6, 0xa2, 0xa2, 0xa0, 0x95, 0x90, 0x8d, 0x81, 0x7d, 0x94, 0x90, 0x83, -0x8a, 0x94, 0x9f, 0x9c, 0x88, 0x7d, 0x8c, 0x8f, 0x83, 0x89, 0x93, 0x8a, 0x7d, 0x73, 0x72, 0x78, -0x70, 0x6b, 0x75, 0x72, 0x6f, 0x71, 0x79, 0x83, 0x8a, 0x82, 0x91, 0x9a, 0x82, 0x6d, 0x63, 0x70, -0x77, 0x6a, 0x6b, 0x6a, 0x69, 0x71, 0x72, 0x6c, 0x78, 0x89, 0x88, 0x7b, 0x74, 0x6e, 0x6a, 0x6a, -0x80, 0x95, 0x8a, 0x7a, 0x6e, 0x5f, 0x5b, 0x64, 0x65, 0x65, 0x69, 0x6b, 0x67, 0x68, 0x6f, 0x78, -0x82, 0x86, 0x7d, 0x85, 0x89, 0x79, 0x76, 0x82, 0x79, 0x70, 0x64, 0x5e, 0x61, 0x6b, 0x73, 0x65, -0x6e, 0x85, 0x87, 0x87, 0x88, 0x8a, 0x8b, 0x8d, 0x99, 0xac, 0xbc, 0xba, 0xaf, 0xa4, 0x9d, 0xa0, -0x9a, 0x7e, 0x75, 0x7c, 0x77, 0x81, 0x9b, 0x9d, 0x95, 0x8b, 0x89, 0x85, 0x8f, 0x96, 0x86, 0x80, -0x7e, 0x77, 0x6b, 0x68, 0x6b, 0x65, 0x61, 0x70, 0x7b, 0x83, 0x8e, 0x90, 0x91, 0x8e, 0x85, 0x7d, -0x7a, 0x7c, 0x82, 0x8e, 0xa8, 0x9c, 0x91, 0x9b, 0x93, 0x88, 0x7b, 0x78, 0x74, 0x68, 0x74, 0x74, -0x63, 0x5d, 0x68, 0x69, 0x6a, 0x82, 0x86, 0x78, 0x77, 0x77, 0x77, 0x73, 0x70, 0x7b, 0x85, 0x83, -0x81, 0x87, 0x98, 0xac, 0xab, 0xad, 0xa0, 0x98, 0x99, 0x96, 0x97, 0x87, 0x71, 0x77, 0x6f, 0x6c, -0x75, 0x7c, 0x79, 0x71, 0x7e, 0x84, 0x83, 0x82, 0x81, 0x7e, 0x7a, 0x6f, 0x5e, 0x61, 0x68, 0x5f, -0x5f, 0x73, 0x76, 0x5f, 0x48, 0x4a, 0x53, 0x53, 0x55, 0x56, 0x48, 0x48, 0x62, 0x67, 0x62, 0x61, -0x64, 0x68, 0x7d, 0x91, 0x87, 0x81, 0x95, 0xa3, 0x9d, 0x83, 0x6d, 0x64, 0x62, 0x65, 0x6e, 0x71, -0x6e, 0x86, 0x8c, 0x8f, 0x8f, 0x89, 0x91, 0x9a, 0x92, 0x80, 0x73, 0x79, 0x78, 0x73, 0x82, 0x99, -0xa7, 0xab, 0xa3, 0x95, 0xa6, 0xbc, 0xbe, 0xb9, 0xb3, 0xae, 0xab, 0xa4, 0xa6, 0xa7, 0xae, 0xb4, -0xc5, 0xc8, 0xb6, 0xb3, 0xb6, 0xb1, 0xae, 0x9b, 0x7a, 0x73, 0x79, 0x83, 0x86, 0x82, 0x78, 0x81, -0x86, 0x7d, 0x84, 0x8c, 0x88, 0x77, 0x6f, 0x65, 0x59, 0x57, 0x5a, 0x5c, 0x68, 0x83, 0x8a, 0x7a, -0x68, 0x5f, 0x59, 0x57, 0x60, 0x6b, 0x6c, 0x5c, 0x4c, 0x54, 0x4d, 0x41, 0x3f, 0x40, 0x55, 0x6d, -0x68, 0x6f, 0x76, 0x78, 0x79, 0x73, 0x6a, 0x74, 0x80, 0x7e, 0x7e, 0x84, 0x85, 0x84, 0x78, 0x78, -0x81, 0x84, 0x83, 0x7e, 0x71, 0x62, 0x5c, 0x64, 0x6c, 0x7b, 0x8b, 0x90, 0x94, 0xa3, 0x9e, 0x98, -0x99, 0x93, 0x95, 0x99, 0x93, 0x89, 0x92, 0x99, 0x9b, 0x90, 0x8f, 0xa1, 0xa0, 0xa3, 0xa1, 0xa2, -0xaf, 0xb5, 0xa8, 0x99, 0x97, 0x8a, 0x7a, 0x73, 0x7a, 0x83, 0x83, 0x88, 0x88, 0x79, 0x70, 0x83, -0x9e, 0x9a, 0x8a, 0x7d, 0x79, 0x6b, 0x65, 0x78, 0x78, 0x79, 0x73, 0x62, 0x5b, 0x5d, 0x5f, 0x6b, -0x6e, 0x6b, 0x68, 0x67, 0x64, 0x64, 0x64, 0x66, 0x62, 0x77, 0x94, 0x8b, 0x84, 0x83, 0x87, 0x84, -0x72, 0x66, 0x73, 0x7e, 0x81, 0x8b, 0x7c, 0x68, 0x70, 0x88, 0x92, 0x8d, 0x8c, 0x8a, 0x8a, 0x80, -0x73, 0x72, 0x6c, 0x5a, 0x4d, 0x4f, 0x66, 0x6f, 0x72, 0x80, 0x8c, 0x8e, 0x86, 0x86, 0x92, 0x91, -0x8c, 0x93, 0x98, 0x94, 0x91, 0x88, 0x85, 0x87, 0x6c, 0x5a, 0x69, 0x74, 0x79, 0x7c, 0x6e, 0x67, -0x61, 0x64, 0x6d, 0x7b, 0x8b, 0x8e, 0x88, 0x9b, 0xa4, 0xa3, 0xa4, 0xac, 0xad, 0xa0, 0x94, 0x9f, -0xa1, 0x99, 0x9f, 0x9d, 0xa3, 0xad, 0xa5, 0x90, 0x9c, 0xae, 0xb3, 0xb5, 0x9d, 0x97, 0x94, 0x84, -0x6d, 0x5a, 0x67, 0x79, 0x83, 0x90, 0x9a, 0x91, 0x7b, 0x6c, 0x83, 0x97, 0x93, 0xa0, 0xaf, 0xa6, -0xa1, 0x9a, 0x90, 0x8d, 0x86, 0x87, 0x6e, 0x5a, 0x60, 0x61, 0x58, 0x59, 0x6b, 0x6a, 0x57, 0x46, -0x49, 0x56, 0x62, 0x7a, 0x86, 0x79, 0x71, 0x66, 0x5d, 0x54, 0x43, 0x3e, 0x46, 0x46, 0x4b, 0x43, -0x39, 0x3d, 0x46, 0x62, 0x68, 0x5d, 0x5b, 0x6f, 0x67, 0x4f, 0x48, 0x57, 0x68, 0x6b, 0x72, 0x82, -0x7a, 0x6d, 0x68, 0x80, 0x97, 0x94, 0x88, 0x81, 0x89, 0x86, 0x89, 0x9a, 0xb7, 0xbb, 0xae, 0xa5, -0x91, 0x8b, 0x84, 0x78, 0x86, 0x8f, 0x90, 0x89, 0x72, 0x68, 0x65, 0x60, 0x68, 0x7b, 0x90, 0x9c, -0xa1, 0x9c, 0x92, 0x8d, 0x92, 0x9d, 0x9e, 0x94, 0x8d, 0x81, 0x78, 0x92, 0xaf, 0xc4, 0xc1, 0xaa, -0x98, 0x9b, 0xa3, 0xa5, 0x99, 0xa7, 0xa2, 0x91, 0x8b, 0x84, 0x7d, 0x70, 0x6b, 0x6d, 0x72, 0x70, -0x7b, 0x85, 0x7b, 0x6e, 0x64, 0x69, 0x6d, 0x75, 0x77, 0x78, 0x73, 0x74, 0x94, 0xa5, 0xa2, 0x94, -0x81, 0x76, 0x67, 0x55, 0x5c, 0x70, 0x7a, 0x7a, 0x8a, 0x9d, 0xa2, 0xa2, 0x98, 0x9b, 0x9c, 0x9a, -0x99, 0x90, 0x8c, 0x83, 0x6e, 0x6a, 0x75, 0x79, 0x75, 0x6a, 0x6d, 0x71, 0x68, 0x55, 0x5c, 0x80, -0x8d, 0x84, 0x78, 0x64, 0x66, 0x74, 0x81, 0x8d, 0x9a, 0xa3, 0xa8, 0xa1, 0x9f, 0x8c, 0x81, 0x89, -0x91, 0x99, 0x99, 0x8a, 0x8e, 0x9c, 0xb4, 0xb4, 0xb1, 0xb4, 0x9b, 0x77, 0x5e, 0x5c, 0x60, 0x5b, -0x53, 0x4c, 0x42, 0x3b, 0x37, 0x33, 0x2f, 0x41, 0x61, 0x78, 0x83, 0x76, 0x6c, 0x75, 0x89, 0x96, -0x95, 0x88, 0x84, 0x84, 0x85, 0x7e, 0x77, 0x8f, 0xad, 0xb4, 0xab, 0x91, 0x7e, 0x79, 0x84, 0x89, -0x70, 0x5c, 0x68, 0x6b, 0x6e, 0x6f, 0x6b, 0x66, 0x64, 0x6b, 0x6f, 0x74, 0x76, 0x6f, 0x6b, 0x69, -0x74, 0x89, 0x9d, 0x97, 0x7e, 0x76, 0x77, 0x80, 0x87, 0x83, 0x76, 0x6f, 0x6f, 0x68, 0x56, 0x4c, -0x50, 0x67, 0x75, 0x7b, 0x80, 0x8b, 0x97, 0xb7, 0xc5, 0x9b, 0x77, 0x6f, 0x74, 0x6c, 0x4d, 0x37, -0x3f, 0x5f, 0x6d, 0x78, 0x79, 0x65, 0x50, 0x3b, 0x39, 0x5c, 0x81, 0x84, 0x75, 0x71, 0x6e, 0x6a, -0x73, 0x79, 0x8e, 0x90, 0x90, 0xa0, 0xa6, 0x9b, 0x8a, 0x80, 0x98, 0xb4, 0xb5, 0xa8, 0xa7, 0xc4, -0xda, 0xd4, 0xc6, 0xb8, 0xa9, 0xa9, 0x8b, 0x6e, 0x6c, 0x6e, 0x76, 0x78, 0x7e, 0x84, 0x80, 0x79, -0x7b, 0x8c, 0x9f, 0xa3, 0xa8, 0xa9, 0x99, 0x8f, 0x96, 0xa5, 0xab, 0xad, 0xa2, 0x9f, 0xa4, 0x93, -0x8a, 0x8c, 0x90, 0x93, 0x91, 0x88, 0x7b, 0x77, 0x86, 0x96, 0x83, 0x6e, 0x65, 0x64, 0x6d, 0x74, -0x74, 0x70, 0x81, 0x97, 0x90, 0x84, 0x79, 0x78, 0x6e, 0x57, 0x4a, 0x5a, 0x81, 0x92, 0x8d, 0x8a, -0x83, 0x7b, 0x79, 0x77, 0x71, 0x74, 0x7a, 0x72, 0x5b, 0x59, 0x66, 0x66, 0x67, 0x76, 0x8a, 0x86, -0x85, 0xa1, 0xbb, 0xa4, 0x7d, 0x68, 0x5d, 0x53, 0x50, 0x4d, 0x5b, 0x75, 0x80, 0x87, 0x8f, 0x93, -0x94, 0x79, 0x4d, 0x3c, 0x4c, 0x5f, 0x64, 0x59, 0x62, 0x62, 0x5b, 0x67, 0x83, 0x95, 0x80, 0x6a, -0x6d, 0x77, 0x6d, 0x69, 0x7b, 0x7d, 0x7c, 0x8a, 0x8e, 0xad, 0xd1, 0xcd, 0xaf, 0x9b, 0x86, 0x70, -0x4f, 0x3b, 0x38, 0x2e, 0x21, 0x16, 0x2a, 0x49, 0x56, 0x57, 0x59, 0x64, 0x63, 0x71, 0x9f, 0xab, -0xac, 0xa0, 0x95, 0x99, 0x9b, 0xa0, 0xa4, 0xa9, 0xb4, 0xb8, 0xc1, 0xc6, 0xbc, 0xb1, 0xa3, 0x8b, -0x86, 0x96, 0xb1, 0xc2, 0xb3, 0xa8, 0x9e, 0x94, 0x86, 0x7c, 0x8f, 0x8b, 0x87, 0x89, 0x8d, 0x96, -0x9b, 0x93, 0x75, 0x5a, 0x4d, 0x5e, 0x82, 0xa0, 0xae, 0xb2, 0xa1, 0x91, 0x95, 0x86, 0x6a, 0x5f, -0x5a, 0x5e, 0x56, 0x53, 0x6e, 0x80, 0x8d, 0x95, 0x9d, 0x9f, 0x9e, 0xb8, 0xbc, 0xaf, 0xb0, 0xa7, -0x9b, 0x84, 0x6f, 0x67, 0x6a, 0x68, 0x64, 0x64, 0x67, 0x75, 0x78, 0x63, 0x43, 0x2b, 0x27, 0x27, -0x37, 0x3b, 0x40, 0x54, 0x5a, 0x5b, 0x5e, 0x65, 0x5c, 0x60, 0x6f, 0x6c, 0x70, 0x75, 0x77, 0x75, -0x73, 0x6d, 0x71, 0x8a, 0xac, 0xaf, 0xa6, 0xa2, 0x93, 0x83, 0x6b, 0x4f, 0x46, 0x4f, 0x57, 0x5b, -0x68, 0x86, 0xa3, 0xac, 0xad, 0xa6, 0x9c, 0x99, 0xa3, 0xac, 0xb9, 0xb6, 0xa8, 0x95, 0x82, 0x7c, -0x77, 0x84, 0x91, 0x91, 0x8e, 0x91, 0x9e, 0xaf, 0xa8, 0x90, 0x79, 0x75, 0x85, 0x96, 0x7e, 0x7c, -0x88, 0x89, 0x84, 0x82, 0x92, 0x88, 0x7b, 0x74, 0x6a, 0x6a, 0x68, 0x73, 0x74, 0x69, 0x62, 0x65, -0x6f, 0x6e, 0x71, 0x7b, 0x81, 0x7a, 0x74, 0x6e, 0x59, 0x3e, 0x39, 0x37, 0x2c, 0x2e, 0x4c, 0x68, -0x83, 0x93, 0x9c, 0x94, 0x98, 0xb7, 0xac, 0x9f, 0x9d, 0x97, 0x91, 0x77, 0x6d, 0x7d, 0x8c, 0x91, -0x95, 0x9b, 0xa8, 0xb4, 0xb7, 0xa0, 0x81, 0x5e, 0x4c, 0x5a, 0x72, 0x74, 0x84, 0x8f, 0x91, 0x92, -0x85, 0x82, 0x6f, 0x6d, 0x7d, 0x84, 0x93, 0x9f, 0xa5, 0xa2, 0xa4, 0xa5, 0xac, 0xbd, 0xc7, 0xc4, -0xbe, 0xb7, 0xc2, 0xb4, 0x88, 0x65, 0x55, 0x4f, 0x3e, 0x34, 0x2a, 0x34, 0x4d, 0x57, 0x5c, 0x6e, -0x71, 0x6e, 0x89, 0x92, 0x97, 0xa2, 0x9a, 0x96, 0xa4, 0xa3, 0x98, 0xa1, 0xa0, 0x96, 0x91, 0x9b, -0xae, 0xb0, 0xa2, 0x97, 0x81, 0x7a, 0x8e, 0x8b, 0x79, 0x79, 0x90, 0xa5, 0xa0, 0xa9, 0xb9, 0xb5, -0xae, 0xa6, 0x8e, 0x7e, 0x84, 0x83, 0x70, 0x60, 0x5c, 0x67, 0x80, 0x80, 0x7a, 0x80, 0x88, 0x8b, -0x71, 0x54, 0x3c, 0x1b, 0x1b, 0x2e, 0x42, 0x53, 0x57, 0x60, 0x5f, 0x57, 0x56, 0x55, 0x53, 0x65, -0x62, 0x4c, 0x53, 0x5f, 0x53, 0x3b, 0x36, 0x42, 0x54, 0x4c, 0x3a, 0x36, 0x45, 0x6a, 0x7b, 0x6d, -0x59, 0x3c, 0x37, 0x4e, 0x51, 0x52, 0x5c, 0x66, 0x72, 0x80, 0x97, 0x95, 0x82, 0x7c, 0x82, 0x82, -0x82, 0x8c, 0x95, 0x96, 0x98, 0xa7, 0xbb, 0xd5, 0xce, 0xb1, 0x9a, 0x9c, 0xbc, 0xc3, 0xb6, 0xac, -0x97, 0x90, 0x89, 0x80, 0x7c, 0x7a, 0x87, 0x99, 0xa4, 0x9f, 0x9b, 0xaf, 0xb1, 0xa9, 0xa4, 0xad, -0xb2, 0x9c, 0x84, 0x81, 0x7c, 0x7d, 0x84, 0x8d, 0x9f, 0xab, 0xbd, 0xcd, 0xbd, 0x9f, 0x86, 0x7a, -0x8a, 0x87, 0x7e, 0x80, 0x81, 0x8c, 0x94, 0x98, 0x95, 0x8b, 0x88, 0x8a, 0x8e, 0x8e, 0x99, 0x9a, -0x91, 0x8e, 0x86, 0x85, 0x92, 0x89, 0x7c, 0x79, 0x89, 0xa3, 0x9f, 0x7e, 0x64, 0x4b, 0x3a, 0x35, -0x34, 0x3e, 0x47, 0x55, 0x69, 0x83, 0x97, 0xa1, 0xab, 0xac, 0x90, 0x75, 0x70, 0x78, 0x7e, 0x7e, -0x80, 0x86, 0x8e, 0x82, 0x67, 0x53, 0x47, 0x44, 0x57, 0x6b, 0x6f, 0x63, 0x4f, 0x52, 0x59, 0x55, -0x52, 0x57, 0x59, 0x68, 0x73, 0x7e, 0x84, 0x80, 0x82, 0x77, 0x74, 0x89, 0x95, 0x8f, 0x93, 0x97, -0xa1, 0xbc, 0xbd, 0xa8, 0x9d, 0x99, 0x9b, 0xab, 0xac, 0xa0, 0x86, 0x75, 0x7a, 0x76, 0x5e, 0x5e, -0x6a, 0x5f, 0x61, 0x6a, 0x61, 0x55, 0x5d, 0x66, 0x66, 0x69, 0x72, 0x7e, 0x80, 0x76, 0x76, 0x7d, -0x82, 0x8c, 0x8a, 0x9b, 0xa4, 0xa8, 0xb2, 0xa8, 0x9c, 0x98, 0x9e, 0x93, 0x83, 0x78, 0x7c, 0x76, -0x80, 0xa2, 0xaa, 0xa0, 0x95, 0x91, 0x7d, 0x6e, 0x73, 0x7e, 0x83, 0x80, 0x78, 0x80, 0x88, 0x7d, -0x6a, 0x5e, 0x50, 0x4c, 0x62, 0x71, 0x6c, 0x5e, 0x47, 0x42, 0x45, 0x45, 0x45, 0x4e, 0x56, 0x67, -0x83, 0x98, 0x9c, 0x90, 0x7a, 0x6f, 0x73, 0x7a, 0x74, 0x74, 0x8a, 0x95, 0x92, 0x87, 0x87, 0x79, -0x71, 0x75, 0x77, 0x78, 0x72, 0x62, 0x54, 0x57, 0x5e, 0x60, 0x5f, 0x66, 0x69, 0x6c, 0x66, 0x68, -0x69, 0x64, 0x6e, 0x7b, 0x87, 0x8d, 0x99, 0xa8, 0xa9, 0xab, 0xaf, 0xc0, 0xc2, 0xb5, 0xb7, 0xbf, -0xb3, 0xa8, 0xac, 0xb8, 0xb2, 0x99, 0x83, 0x86, 0x8e, 0x99, 0xa6, 0xaa, 0xae, 0xb4, 0xb7, 0xb5, -0xb4, 0xaa, 0x9b, 0x94, 0x8f, 0x90, 0x94, 0x91, 0x88, 0x8d, 0x8f, 0x80, 0x6c, 0x68, 0x65, 0x6a, -0x7c, 0x81, 0x7d, 0x75, 0x76, 0x6f, 0x62, 0x5b, 0x5b, 0x63, 0x6b, 0x7c, 0x9c, 0x99, 0x76, 0x5b, -0x49, 0x53, 0x6d, 0x71, 0x72, 0x78, 0x7a, 0x84, 0x90, 0x8b, 0x89, 0x84, 0x78, 0x67, 0x61, 0x63, -0x5a, 0x48, 0x46, 0x47, 0x40, 0x41, 0x48, 0x56, 0x5b, 0x56, 0x55, 0x62, 0x6d, 0x77, 0x74, 0x6d, -0x75, 0x88, 0x90, 0x8e, 0x8d, 0x90, 0x8c, 0x7d, 0x75, 0x81, 0x8f, 0x8e, 0x86, 0x80, 0x74, 0x7a, -0x82, 0x82, 0x72, 0x72, 0x77, 0x71, 0x6a, 0x66, 0x73, 0x73, 0x6f, 0x7b, 0x87, 0x85, 0x7e, 0x85, -0x98, 0xa0, 0xa8, 0xb1, 0xc0, 0xce, 0xc6, 0xab, 0x92, 0x91, 0x97, 0x9b, 0x9d, 0x9a, 0x9b, 0x99, -0x86, 0x6c, 0x6a, 0x65, 0x6c, 0x7d, 0x8b, 0x9d, 0x8c, 0x73, 0x6c, 0x6b, 0x6a, 0x71, 0x78, 0x74, -0x77, 0x8a, 0x9a, 0xaa, 0xbf, 0xbc, 0xa5, 0x9f, 0xa3, 0xa3, 0x9e, 0x9f, 0xa0, 0xa5, 0xb3, 0xa9, -0x9b, 0x97, 0x91, 0x96, 0x93, 0x8e, 0x84, 0x83, 0x88, 0x84, 0x7c, 0x7a, 0x7e, 0x8c, 0x8a, 0x87, -0x77, 0x6b, 0x73, 0x78, 0x84, 0x90, 0x83, 0x5f, 0x45, 0x40, 0x44, 0x3d, 0x3d, 0x4b, 0x44, 0x39, -0x3b, 0x4a, 0x5d, 0x60, 0x64, 0x6b, 0x71, 0x81, 0x7e, 0x70, 0x61, 0x68, 0x73, 0x6e, 0x74, 0x78, -0x7e, 0x7e, 0x6f, 0x5e, 0x53, 0x56, 0x65, 0x6c, 0x71, 0x69, 0x63, 0x6e, 0x6b, 0x64, 0x5c, 0x58, -0x5c, 0x5f, 0x77, 0x91, 0x77, 0x5e, 0x73, 0x7d, 0x74, 0x6b, 0x80, 0x93, 0x95, 0x9c, 0xa8, 0xc0, -0xc8, 0xb1, 0xa6, 0xaa, 0xb8, 0xb7, 0xad, 0x9d, 0x8b, 0x9e, 0xa5, 0x93, 0x79, 0x66, 0x65, 0x71, -0x82, 0x8c, 0x7e, 0x6a, 0x75, 0x83, 0x89, 0x86, 0x84, 0x77, 0x5a, 0x5a, 0x75, 0x8d, 0x99, 0xa4, -0xac, 0xa0, 0x8c, 0x88, 0x87, 0x84, 0x79, 0x6a, 0x81, 0x96, 0x8d, 0x76, 0x73, 0x8a, 0x8c, 0x89, -0x95, 0x8c, 0x82, 0x8b, 0x88, 0x75, 0x6e, 0x80, 0x93, 0x91, 0x91, 0x8e, 0x8b, 0x89, 0x83, 0x76, -0x62, 0x53, 0x47, 0x3e, 0x3c, 0x48, 0x53, 0x4c, 0x52, 0x55, 0x44, 0x50, 0x67, 0x7d, 0x90, 0x8e, -0x78, 0x7e, 0xa0, 0xa4, 0x8f, 0x76, 0x7d, 0x82, 0x80, 0x8f, 0x9c, 0xad, 0xa9, 0x98, 0x8d, 0x87, -0x8c, 0x91, 0x8c, 0x77, 0x79, 0x8f, 0x9d, 0x9e, 0x8d, 0x7c, 0x7c, 0x77, 0x81, 0x89, 0x84, 0x74, -0x6f, 0x8e, 0xa3, 0x9f, 0x9b, 0x93, 0x92, 0x9d, 0xaf, 0xc5, 0xd9, 0xe3, 0xd1, 0xb2, 0x9d, 0x9b, -0x98, 0x82, 0x6b, 0x62, 0x77, 0x93, 0x93, 0x74, 0x6a, 0x6f, 0x6c, 0x75, 0x77, 0x68, 0x63, 0x6b, -0x71, 0x6d, 0x72, 0x73, 0x69, 0x5f, 0x60, 0x6b, 0x7c, 0x85, 0x8c, 0x8b, 0x7e, 0x77, 0x7b, 0x87, -0x7e, 0x7d, 0x80, 0x87, 0x92, 0x82, 0x78, 0x7b, 0x7b, 0x7e, 0x6d, 0x54, 0x45, 0x4d, 0x6d, 0x77, -0x5e, 0x53, 0x58, 0x65, 0x6f, 0x70, 0x78, 0x8f, 0x8f, 0x81, 0x78, 0x70, 0x62, 0x4f, 0x37, 0x2e, -0x42, 0x4f, 0x51, 0x54, 0x4a, 0x43, 0x3e, 0x49, 0x61, 0x62, 0x53, 0x54, 0x74, 0x97, 0x96, 0x96, -0x95, 0x91, 0x88, 0x82, 0x8a, 0x92, 0xa3, 0xae, 0xa4, 0x96, 0x93, 0x94, 0x92, 0x87, 0x74, 0x75, -0x84, 0x94, 0x86, 0x79, 0x7b, 0x78, 0x74, 0x6e, 0x71, 0x7a, 0x82, 0x86, 0x99, 0xa4, 0xa9, 0xa9, -0xa8, 0xaa, 0xb2, 0xb1, 0xb3, 0xc4, 0xc3, 0xac, 0x96, 0x93, 0x9b, 0x89, 0x6d, 0x6a, 0x6d, 0x7b, -0x92, 0x92, 0x94, 0x96, 0x92, 0x8e, 0x87, 0x7b, 0x79, 0x84, 0x95, 0x95, 0x82, 0x6c, 0x62, 0x5c, -0x5a, 0x64, 0x74, 0x8f, 0x88, 0x82, 0x8f, 0x88, 0x7d, 0x77, 0x79, 0x85, 0x95, 0x93, 0x90, 0x8a, -0x77, 0x6f, 0x6a, 0x6c, 0x67, 0x56, 0x45, 0x50, 0x7b, 0x9c, 0xa2, 0x95, 0x8f, 0x8d, 0x86, 0x92, -0xa0, 0xa7, 0xb3, 0xb1, 0xa5, 0x98, 0x89, 0x7e, 0x6a, 0x54, 0x4b, 0x51, 0x52, 0x4b, 0x4d, 0x5f, -0x68, 0x63, 0x62, 0x6c, 0x72, 0x75, 0x7d, 0x8f, 0x9a, 0x9e, 0x9d, 0x9a, 0x8b, 0x7a, 0x76, 0x71, -0x73, 0x7d, 0x8c, 0x95, 0x7e, 0x73, 0x7e, 0x7a, 0x79, 0x7c, 0x7d, 0x76, 0x78, 0x82, 0x89, 0x90, -0x92, 0x7b, 0x61, 0x5d, 0x6c, 0x80, 0x7b, 0x7c, 0x84, 0x81, 0x74, 0x70, 0x80, 0x91, 0x9f, 0xa4, -0xa6, 0xa8, 0xa3, 0x9b, 0x9b, 0x99, 0x93, 0x92, 0x8f, 0x82, 0x73, 0x75, 0x82, 0x7a, 0x75, 0x6c, -0x63, 0x6b, 0x6b, 0x70, 0x77, 0x73, 0x6c, 0x5f, 0x57, 0x57, 0x4e, 0x5c, 0x76, 0x98, 0xac, 0x9b, -0x91, 0x94, 0x94, 0x93, 0x8f, 0x8f, 0x8e, 0x89, 0x75, 0x6f, 0x7d, 0x90, 0x9a, 0x97, 0x85, 0x6d, -0x69, 0x73, 0x7e, 0x8f, 0xae, 0xc6, 0xb8, 0xac, 0x9e, 0x8e, 0x8d, 0x89, 0x8b, 0x79, 0x76, 0x7a, -0x69, 0x58, 0x4c, 0x37, 0x2f, 0x37, 0x3f, 0x3d, 0x2c, 0x3b, 0x57, 0x64, 0x68, 0x59, 0x53, 0x60, -0x6e, 0x85, 0x95, 0x99, 0x95, 0x91, 0x8e, 0x8a, 0x8c, 0x88, 0x8f, 0x93, 0x8c, 0x9d, 0xa6, 0x98, -0x95, 0x91, 0x93, 0xa5, 0xa5, 0x92, 0x75, 0x62, 0x64, 0x66, 0x67, 0x5d, 0x48, 0x4d, 0x5d, 0x6c, -0x7c, 0x78, 0x7d, 0x81, 0x83, 0x87, 0x86, 0x94, 0x9e, 0xb6, 0xc3, 0xb6, 0xa3, 0x94, 0x94, 0x9d, -0x95, 0x86, 0x7a, 0x6f, 0x5f, 0x64, 0x80, 0x99, 0x92, 0x86, 0x7d, 0x6e, 0x82, 0x96, 0x9f, 0xa5, -0xad, 0xb4, 0xa8, 0x9f, 0x86, 0x5f, 0x49, 0x56, 0x78, 0x72, 0x61, 0x62, 0x55, 0x49, 0x49, 0x4e, -0x5a, 0x5a, 0x5a, 0x62, 0x69, 0x76, 0x83, 0x86, 0x8f, 0x88, 0x6b, 0x67, 0x76, 0x8d, 0xa3, 0xbb, -0xbd, 0xa5, 0x98, 0x90, 0x92, 0x9b, 0xae, 0xb4, 0x9d, 0x8a, 0x8a, 0x91, 0x8b, 0x74, 0x61, 0x61, -0x61, 0x5c, 0x4c, 0x34, 0x36, 0x3e, 0x44, 0x50, 0x5e, 0x65, 0x5e, 0x66, 0x84, 0x94, 0x9c, 0x8f, -0x8c, 0x98, 0x91, 0x7b, 0x73, 0x8b, 0x9a, 0x9b, 0x9f, 0xa2, 0x9b, 0x94, 0x91, 0x96, 0xa2, 0x9b, -0x82, 0x6f, 0x72, 0x7e, 0x82, 0x7d, 0x73, 0x5e, 0x63, 0x83, 0xa1, 0xa5, 0x97, 0xa0, 0x9b, 0x9a, -0x97, 0x8c, 0x82, 0x92, 0xb4, 0xbc, 0xc0, 0xb3, 0x99, 0x8a, 0x8e, 0x90, 0x87, 0x75, 0x6d, 0x7a, -0x8b, 0x9d, 0xa3, 0x9c, 0xa4, 0x9f, 0x90, 0x92, 0x9d, 0xa0, 0x91, 0x83, 0x7e, 0x78, 0x72, 0x63, -0x55, 0x55, 0x78, 0x85, 0x7a, 0x6a, 0x75, 0x89, 0x87, 0x84, 0x85, 0x87, 0x7b, 0x74, 0x74, 0x72, -0x67, 0x60, 0x6a, 0x78, 0x7d, 0x69, 0x4e, 0x53, 0x6b, 0x7a, 0x90, 0x8a, 0x82, 0x8a, 0x88, 0x77, -0x82, 0x96, 0x93, 0x7b, 0x61, 0x5c, 0x5e, 0x51, 0x3b, 0x24, 0x29, 0x34, 0x33, 0x31, 0x38, 0x46, -0x4b, 0x45, 0x4a, 0x54, 0x5e, 0x68, 0x81, 0x94, 0x9e, 0x9a, 0x93, 0x99, 0x9a, 0x8a, 0x6b, 0x6e, -0x8a, 0x94, 0xa2, 0xa8, 0x92, 0x76, 0x75, 0x7a, 0x7a, 0x78, 0x72, 0x6a, 0x5a, 0x57, 0x5c, 0x64, -0x6c, 0x60, 0x50, 0x5c, 0x77, 0x8a, 0x85, 0x77, 0x77, 0x82, 0x84, 0x87, 0x91, 0x98, 0xa6, 0xa0, -0xa1, 0xad, 0xa3, 0x9a, 0x9b, 0x9e, 0x8f, 0x89, 0x89, 0x87, 0x8a, 0x8d, 0x9a, 0x95, 0x8a, 0x92, -0xa2, 0x9f, 0x96, 0x91, 0x95, 0x92, 0x94, 0x93, 0x9c, 0xa0, 0x93, 0x7e, 0x8b, 0xa1, 0x9e, 0x8c, -0x79, 0x76, 0x77, 0x75, 0x6d, 0x6b, 0x72, 0x76, 0x74, 0x79, 0x89, 0x8e, 0x84, 0x80, 0x8d, 0x8a, -0x7e, 0x81, 0x93, 0xa1, 0xa2, 0xa2, 0x98, 0x8c, 0x84, 0x86, 0x8a, 0x9d, 0xa2, 0x99, 0x99, 0x8e, -0x76, 0x66, 0x67, 0x60, 0x60, 0x63, 0x64, 0x61, 0x54, 0x59, 0x69, 0x6e, 0x77, 0x81, 0x82, 0x88, -0x92, 0x9a, 0x9f, 0x9d, 0x8d, 0x8d, 0x91, 0x95, 0x93, 0x8a, 0x8c, 0x8a, 0x8c, 0x95, 0x9a, 0x90, -0x89, 0x7e, 0x78, 0x79, 0x76, 0x74, 0x69, 0x69, 0x75, 0x75, 0x71, 0x7a, 0x7e, 0x6d, 0x62, 0x61, -0x6a, 0x73, 0x75, 0x75, 0x87, 0x8a, 0x85, 0x87, 0x99, 0xa5, 0xa2, 0xa2, 0xa2, 0x92, 0x88, 0x86, -0x7c, 0x73, 0x66, 0x65, 0x6b, 0x6c, 0x84, 0x9f, 0x93, 0x86, 0x90, 0x96, 0x90, 0xa2, 0xab, 0x95, -0x80, 0x6c, 0x64, 0x62, 0x59, 0x4d, 0x4c, 0x5c, 0x5f, 0x5f, 0x64, 0x5c, 0x4a, 0x44, 0x4d, 0x56, -0x63, 0x68, 0x6c, 0x6c, 0x72, 0x84, 0x82, 0x82, 0x8d, 0x89, 0x72, 0x60, 0x6f, 0x74, 0x72, 0x76, -0x79, 0x7a, 0x76, 0x7a, 0x87, 0x9b, 0xa9, 0x9f, 0x99, 0x96, 0x90, 0x94, 0x8e, 0x76, 0x62, 0x5a, -0x59, 0x56, 0x51, 0x54, 0x52, 0x48, 0x4e, 0x5c, 0x69, 0x64, 0x65, 0x70, 0x79, 0x96, 0x9f, 0x91, -0x92, 0x9b, 0xa0, 0x9e, 0xa2, 0xac, 0xaf, 0xa3, 0x99, 0x8e, 0x8a, 0x83, 0x7c, 0x71, 0x68, 0x69, -0x66, 0x60, 0x6c, 0x77, 0x79, 0x7b, 0x78, 0x73, 0x7a, 0x98, 0xa3, 0x9c, 0x99, 0x90, 0x92, 0x9a, -0xa6, 0xad, 0xad, 0xaa, 0xa6, 0xa1, 0xac, 0x9e, 0x86, 0x85, 0x93, 0x9f, 0x90, 0x7b, 0x76, 0x73, -0x6a, 0x6f, 0x7c, 0x88, 0x95, 0x92, 0x88, 0x86, 0x93, 0x97, 0x95, 0x8a, 0x89, 0x8d, 0x8a, 0x86, -0x91, 0x9f, 0x9e, 0x87, 0x77, 0x64, 0x4d, 0x59, 0x61, 0x55, 0x50, 0x4d, 0x50, 0x51, 0x54, 0x60, -0x5b, 0x50, 0x5d, 0x68, 0x6f, 0x68, 0x6a, 0x72, 0x7c, 0x84, 0x8e, 0x99, 0x9c, 0x9c, 0xa1, 0xa9, -0xb4, 0xb8, 0xb1, 0x9e, 0x88, 0x77, 0x7d, 0x8a, 0x83, 0x72, 0x74, 0x74, 0x6e, 0x6d, 0x6b, 0x64, -0x6e, 0x77, 0x72, 0x6f, 0x7b, 0x87, 0x87, 0x83, 0x87, 0x86, 0x85, 0x8b, 0x96, 0xa2, 0x9d, 0x94, -0x89, 0x7c, 0x72, 0x67, 0x63, 0x65, 0x6c, 0x74, 0x75, 0x7a, 0x7a, 0x72, 0x6a, 0x6b, 0x75, 0x8b, -0x94, 0x7d, 0x6a, 0x6a, 0x6f, 0x82, 0x85, 0x73, 0x6e, 0x74, 0x78, 0x7e, 0x96, 0xa5, 0x9d, 0x8a, -0x7d, 0x84, 0x81, 0x87, 0x96, 0x98, 0x93, 0x90, 0x97, 0x97, 0x8d, 0x83, 0x7c, 0x7d, 0x83, 0x83, -0x84, 0x84, 0x82, 0x80, 0x89, 0x88, 0x89, 0x8b, 0x87, 0x84, 0x85, 0x92, 0x9e, 0xa4, 0xa9, 0x92, -0x68, 0x55, 0x65, 0x7d, 0x7d, 0x7b, 0x80, 0x80, 0x74, 0x70, 0x8f, 0x9a, 0xa1, 0xa2, 0x9d, 0x96, -0x89, 0x86, 0x89, 0x7a, 0x6c, 0x77, 0x82, 0x84, 0x88, 0x95, 0x9b, 0x88, 0x79, 0x6f, 0x5f, 0x53, -0x52, 0x54, 0x53, 0x4d, 0x50, 0x54, 0x4f, 0x48, 0x42, 0x3b, 0x48, 0x6e, 0x84, 0x72, 0x60, 0x5f, -0x69, 0x7e, 0x84, 0x95, 0xa1, 0xa2, 0xa0, 0xa1, 0xae, 0xae, 0xa2, 0x90, 0x74, 0x62, 0x63, 0x6b, -0x6b, 0x5f, 0x64, 0x6e, 0x71, 0x71, 0x66, 0x63, 0x65, 0x6f, 0x79, 0x7b, 0x72, 0x6a, 0x64, 0x68, -0x76, 0x73, 0x6d, 0x6b, 0x71, 0x71, 0x74, 0x84, 0x8d, 0x92, 0x91, 0x78, 0x76, 0x82, 0x8f, 0x93, -0x8d, 0x89, 0x81, 0x81, 0x73, 0x63, 0x75, 0x93, 0xa3, 0x9d, 0x98, 0x94, 0x88, 0x8b, 0x98, 0x90, -0x8d, 0xa0, 0xad, 0xae, 0xab, 0xb3, 0xb8, 0xa5, 0x97, 0x8e, 0x7b, 0x6e, 0x6b, 0x73, 0x75, 0x70, -0x6e, 0x6a, 0x61, 0x56, 0x5c, 0x72, 0x8b, 0x9e, 0x9e, 0x83, 0x6c, 0x60, 0x71, 0x7c, 0x74, 0x80, -0x94, 0x96, 0x8d, 0x96, 0xb5, 0xc3, 0xb2, 0x9b, 0x80, 0x72, 0x73, 0x77, 0x77, 0x6f, 0x71, 0x75, -0x78, 0x70, 0x5e, 0x56, 0x4f, 0x53, 0x64, 0x67, 0x5f, 0x5a, 0x60, 0x6e, 0x7c, 0x90, 0xa4, 0xa7, -0x9d, 0x97, 0xa6, 0xb7, 0xb5, 0xb3, 0xa0, 0x78, 0x71, 0x72, 0x70, 0x71, 0x76, 0x77, 0x75, 0x76, -0x6c, 0x62, 0x7e, 0xa1, 0xa9, 0xa2, 0x93, 0x88, 0x7c, 0x85, 0x93, 0x9b, 0x9f, 0x90, 0x91, 0x95, -0x8e, 0x8e, 0x8e, 0x80, 0x77, 0x76, 0x7e, 0x92, 0x90, 0x89, 0x8f, 0x98, 0x9b, 0x97, 0x90, 0x7c, -0x7c, 0x97, 0xad, 0xb2, 0xa8, 0x90, 0x75, 0x6b, 0x7d, 0x85, 0x83, 0x85, 0x86, 0x7c, 0x6e, 0x70, -0x8d, 0x97, 0x85, 0x79, 0x72, 0x64, 0x54, 0x53, 0x5b, 0x64, 0x63, 0x64, 0x67, 0x64, 0x5c, 0x69, -0x82, 0x87, 0x81, 0x75, 0x6d, 0x5e, 0x60, 0x6b, 0x6a, 0x7b, 0x89, 0x82, 0x72, 0x6b, 0x7b, 0x82, -0x77, 0x77, 0x69, 0x52, 0x4c, 0x52, 0x51, 0x4e, 0x4d, 0x4c, 0x4e, 0x4d, 0x4b, 0x4e, 0x62, 0x6f, -0x72, 0x6e, 0x66, 0x57, 0x4b, 0x59, 0x6a, 0x7e, 0xa5, 0xb0, 0x9f, 0x90, 0x8c, 0x90, 0x85, 0x7b, -0x77, 0x72, 0x7b, 0x8a, 0x8d, 0x7e, 0x84, 0x8f, 0x8b, 0x86, 0x77, 0x62, 0x65, 0x7e, 0x9b, 0xaa, -0x9e, 0x82, 0x71, 0x6e, 0x7a, 0x8c, 0x99, 0x9a, 0x83, 0x7c, 0x8c, 0x9c, 0xa8, 0xaf, 0xa5, 0x95, -0x99, 0xa2, 0x9a, 0x84, 0x77, 0x81, 0x8c, 0x8d, 0x8a, 0x78, 0x68, 0x73, 0x87, 0x92, 0x90, 0x92, -0x93, 0x96, 0x9d, 0x9d, 0x99, 0xaa, 0xb3, 0xaa, 0xa2, 0x9f, 0xa0, 0x9d, 0x96, 0x97, 0x9b, 0x8e, -0x74, 0x60, 0x5a, 0x62, 0x60, 0x5a, 0x58, 0x57, 0x57, 0x72, 0xa1, 0xb5, 0x9f, 0x82, 0x6b, 0x5f, -0x56, 0x5e, 0x6a, 0x76, 0x8d, 0x8f, 0x81, 0x7c, 0x86, 0x87, 0x82, 0x7e, 0x7b, 0x7d, 0x86, 0x91, -0x8e, 0x79, 0x76, 0x73, 0x69, 0x61, 0x57, 0x5b, 0x6c, 0x75, 0x7a, 0x8a, 0x8a, 0x6e, 0x5b, 0x57, -0x67, 0x7a, 0x88, 0x9a, 0x92, 0x84, 0x8b, 0x9f, 0xad, 0xa7, 0x97, 0x88, 0x82, 0x81, 0x73, 0x63, -0x6d, 0x89, 0x91, 0x90, 0x8d, 0x81, 0x77, 0x80, 0x96, 0xa2, 0x9d, 0x90, 0x8d, 0x94, 0x93, 0x90, -0x98, 0xa0, 0x89, 0x6a, 0x6d, 0x81, 0x84, 0x80, 0x7d, 0x90, 0x9e, 0x9f, 0xa6, 0x99, 0x89, 0x88, -0x7b, 0x77, 0x76, 0x73, 0x6e, 0x80, 0x9d, 0xaa, 0xa2, 0x94, 0x86, 0x7b, 0x72, 0x72, 0x7b, 0x88, -0x93, 0x8d, 0x81, 0x80, 0x77, 0x66, 0x5e, 0x58, 0x5c, 0x6a, 0x70, 0x66, 0x50, 0x4a, 0x5d, 0x66, -0x5a, 0x52, 0x4e, 0x58, 0x73, 0x96, 0x9c, 0x9a, 0x87, 0x68, 0x5b, 0x53, 0x59, 0x58, 0x57, 0x5f, -0x55, 0x52, 0x65, 0x7b, 0x82, 0x7d, 0x75, 0x70, 0x6b, 0x68, 0x62, 0x63, 0x70, 0x7c, 0x7e, 0x78, -0x6d, 0x5f, 0x61, 0x69, 0x6e, 0x73, 0x75, 0x72, 0x7a, 0x82, 0x80, 0x84, 0x9d, 0xb7, 0xbb, 0x9f, -0x94, 0x9d, 0xa6, 0xa7, 0x9c, 0xaa, 0xae, 0xa3, 0x9b, 0x87, 0x7d, 0x76, 0x71, 0x72, 0x73, 0x70, -0x72, 0x84, 0x9f, 0xb1, 0xa8, 0x91, 0x7c, 0x75, 0x76, 0x81, 0x8e, 0xa5, 0xa8, 0x95, 0x84, 0x8c, -0x92, 0x85, 0x70, 0x67, 0x6f, 0x7a, 0x88, 0x8c, 0x6d, 0x59, 0x5d, 0x67, 0x64, 0x4f, 0x4b, 0x5b, -0x75, 0x93, 0xa2, 0xa7, 0x94, 0x84, 0x82, 0x83, 0x86, 0x83, 0x83, 0x88, 0x90, 0x91, 0xa1, 0xa8, -0x9f, 0x8f, 0x83, 0x83, 0x80, 0x73, 0x5d, 0x5d, 0x6b, 0x7a, 0x83, 0x7e, 0x6e, 0x67, 0x70, 0x88, -0x9f, 0x98, 0x80, 0x76, 0x86, 0x8a, 0x75, 0x6d, 0x81, 0x91, 0x8b, 0x80, 0x7e, 0x87, 0x8b, 0x8c, -0x8a, 0x96, 0x92, 0x7e, 0x6b, 0x5f, 0x5e, 0x5a, 0x51, 0x56, 0x54, 0x49, 0x54, 0x6f, 0x82, 0x81, -0x78, 0x6c, 0x6a, 0x72, 0x79, 0x82, 0x91, 0xa8, 0xb6, 0xbf, 0xaa, 0x94, 0x97, 0x99, 0x89, 0x7c, -0x87, 0x90, 0x97, 0x8f, 0x77, 0x68, 0x6b, 0x76, 0x77, 0x6e, 0x72, 0x7e, 0x95, 0xad, 0xbd, 0xc7, -0xbb, 0xac, 0x9e, 0x9c, 0x98, 0x94, 0x95, 0x97, 0x91, 0x8b, 0x9e, 0xb2, 0xac, 0x9c, 0x97, 0x94, -0x8f, 0x93, 0x95, 0x81, 0x78, 0x85, 0x92, 0x80, 0x61, 0x62, 0x6f, 0x85, 0x91, 0x90, 0x7a, 0x6e, -0x77, 0x7d, 0x75, 0x6d, 0x72, 0x6f, 0x67, 0x61, 0x5f, 0x6b, 0x6a, 0x62, 0x6f, 0x89, 0x87, 0x76, -0x63, 0x43, 0x34, 0x3b, 0x46, 0x52, 0x49, 0x41, 0x4f, 0x6e, 0x8d, 0x98, 0x7d, 0x62, 0x64, 0x70, -0x71, 0x69, 0x6c, 0x79, 0x7c, 0x7b, 0x76, 0x69, 0x68, 0x67, 0x6b, 0x76, 0x82, 0x89, 0x85, 0x76, -0x61, 0x61, 0x6f, 0x72, 0x68, 0x60, 0x65, 0x73, 0x88, 0x92, 0x8f, 0x8c, 0x80, 0x7a, 0x79, 0x7c, -0x77, 0x75, 0x7d, 0x98, 0xa4, 0x91, 0x9b, 0xaf, 0xa6, 0x8e, 0x88, 0x89, 0x87, 0x89, 0x86, 0x7e, -0x76, 0x72, 0x72, 0x6b, 0x61, 0x64, 0x6f, 0x7a, 0x87, 0x8c, 0x86, 0x8a, 0x8f, 0x90, 0x8a, 0x84, -0x8b, 0x90, 0x8e, 0x84, 0x7a, 0x85, 0x8c, 0x8d, 0x9c, 0xa8, 0x9b, 0x89, 0x82, 0x71, 0x58, 0x57, -0x60, 0x61, 0x4d, 0x48, 0x5e, 0x77, 0x8b, 0x90, 0x8b, 0x78, 0x75, 0x83, 0x98, 0xa2, 0xa1, 0x9d, -0x97, 0x97, 0x95, 0x98, 0x98, 0x86, 0x81, 0x8b, 0x8f, 0x8d, 0x84, 0x6c, 0x48, 0x47, 0x5d, 0x67, -0x66, 0x6a, 0x6b, 0x78, 0x8b, 0xa6, 0xbb, 0xac, 0x92, 0x8b, 0x81, 0x71, 0x70, 0x68, 0x73, 0x86, -0x8b, 0x98, 0xa0, 0x96, 0x8f, 0x91, 0x9b, 0xa8, 0x9f, 0x92, 0x8c, 0x87, 0x90, 0x8f, 0x82, 0x7d, -0x78, 0x77, 0x81, 0x84, 0x85, 0x7a, 0x75, 0x7c, 0x82, 0x83, 0x82, 0x7e, 0x7d, 0x82, 0x8e, 0x8d, -0x89, 0x8b, 0x8a, 0x85, 0x88, 0x92, 0x82, 0x6e, 0x5f, 0x50, 0x51, 0x52, 0x55, 0x5e, 0x6a, 0x7b, -0x91, 0x98, 0x98, 0x98, 0x9f, 0xaa, 0xa4, 0x9c, 0xa4, 0xa4, 0x9b, 0x97, 0x98, 0x8e, 0x7c, 0x80, -0x7d, 0x76, 0x76, 0x7b, 0x83, 0x7e, 0x74, 0x72, 0x60, 0x5a, 0x68, 0x6d, 0x64, 0x5b, 0x5c, 0x67, -0x75, 0x90, 0xa7, 0xa3, 0x8b, 0x75, 0x6a, 0x6c, 0x71, 0x6c, 0x66, 0x67, 0x65, 0x7d, 0x97, 0x86, -0x73, 0x6c, 0x77, 0x82, 0x7b, 0x72, 0x62, 0x52, 0x57, 0x5f, 0x5e, 0x62, 0x60, 0x5d, 0x63, 0x6b, -0x84, 0x7d, 0x70, 0x74, 0x74, 0x75, 0x6d, 0x6c, 0x6e, 0x75, 0x86, 0x92, 0x9d, 0x95, 0x8b, 0x95, -0xab, 0xba, 0xaa, 0x8d, 0x72, 0x69, 0x73, 0x79, 0x6f, 0x68, 0x6a, 0x72, 0x7e, 0x83, 0x84, 0x7e, -0x75, 0x7c, 0x85, 0x87, 0x8f, 0x92, 0x92, 0x90, 0x97, 0xa9, 0xa8, 0xa9, 0x99, 0x8b, 0x86, 0x7c, -0x72, 0x68, 0x62, 0x60, 0x61, 0x66, 0x61, 0x56, 0x5c, 0x6a, 0x6f, 0x76, 0x7a, 0x84, 0x92, 0x98, -0x8e, 0x7e, 0x71, 0x74, 0x80, 0x79, 0x70, 0x74, 0x72, 0x87, 0x99, 0x8a, 0x82, 0x7b, 0x84, 0x88, -0x83, 0x7e, 0x87, 0x86, 0x87, 0x86, 0x83, 0x85, 0x76, 0x6d, 0x6c, 0x79, 0x90, 0x96, 0x90, 0x8e, -0x8d, 0x94, 0x9e, 0xa9, 0xa3, 0x96, 0x96, 0xa1, 0xb8, 0xaf, 0xa0, 0xa0, 0xa0, 0x9b, 0x85, 0x6e, -0x55, 0x4b, 0x51, 0x54, 0x4c, 0x4f, 0x59, 0x64, 0x6c, 0x73, 0x83, 0x8e, 0x87, 0x90, 0x97, 0x91, -0x8f, 0x89, 0x82, 0x72, 0x7a, 0x8a, 0x96, 0x93, 0x76, 0x6f, 0x78, 0x82, 0x84, 0x82, 0x73, 0x67, -0x71, 0x88, 0x87, 0x75, 0x6e, 0x69, 0x67, 0x69, 0x76, 0x7e, 0x7b, 0x76, 0x6f, 0x69, 0x68, 0x6a, -0x6c, 0x5d, 0x57, 0x71, 0x8c, 0xa7, 0xb0, 0xa1, 0x9a, 0x92, 0x88, 0x82, 0x7e, 0x80, 0x87, 0x92, -0x8f, 0x7d, 0x76, 0x7e, 0x82, 0x85, 0x8b, 0x8f, 0x96, 0xa5, 0xb1, 0xb2, 0xad, 0xa6, 0x9f, 0x97, -0x82, 0x7b, 0x7b, 0x83, 0x98, 0x98, 0x98, 0x9e, 0xa2, 0x95, 0x79, 0x6b, 0x68, 0x70, 0x71, 0x65, -0x5b, 0x65, 0x6f, 0x76, 0x7a, 0x7a, 0x84, 0x86, 0x83, 0x81, 0x7b, 0x79, 0x83, 0x8f, 0x8c, 0x83, -0x80, 0x85, 0x9c, 0xa3, 0x92, 0x84, 0x82, 0x7b, 0x6b, 0x64, 0x61, 0x5b, 0x5c, 0x66, 0x60, 0x5d, -0x62, 0x63, 0x68, 0x72, 0x83, 0x8a, 0x8d, 0x88, 0x7d, 0x79, 0x81, 0x87, 0x77, 0x5a, 0x55, 0x6f, -0x90, 0xa5, 0x98, 0x88, 0x7b, 0x78, 0x7c, 0x7d, 0x7b, 0x6f, 0x74, 0x8b, 0x90, 0x85, 0x7b, 0x73, -0x6b, 0x6a, 0x68, 0x6b, 0x6c, 0x63, 0x6a, 0x74, 0x7e, 0x8a, 0x8b, 0x81, 0x76, 0x78, 0x81, 0x96, -0xa0, 0xa1, 0xa4, 0x9c, 0x91, 0x76, 0x58, 0x51, 0x5e, 0x67, 0x61, 0x48, 0x3f, 0x49, 0x5e, 0x71, -0x7e, 0x80, 0x75, 0x73, 0x81, 0x90, 0x97, 0x99, 0x99, 0x91, 0x85, 0x78, 0x74, 0x74, 0x7a, 0x80, -0x7a, 0x7e, 0x86, 0x7c, 0x6f, 0x6c, 0x6f, 0x73, 0x7c, 0x80, 0x7c, 0x7d, 0x7d, 0x78, 0x7d, 0x8c, -0x9b, 0xa3, 0xa1, 0x9a, 0x8f, 0x89, 0x8b, 0x8c, 0x7e, 0x6e, 0x71, 0x83, 0xa4, 0xb7, 0xb0, 0xa9, -0x98, 0x82, 0x72, 0x6e, 0x6e, 0x6a, 0x6e, 0x76, 0x7b, 0x77, 0x79, 0x7c, 0x7a, 0x7e, 0x80, 0x7d, -0x81, 0x86, 0x8f, 0x98, 0xa1, 0x9f, 0x8e, 0x7b, 0x73, 0x80, 0x8a, 0x92, 0x97, 0x99, 0x96, 0x86, -0x80, 0x70, 0x69, 0x6a, 0x6d, 0x79, 0x78, 0x6c, 0x6c, 0x72, 0x7a, 0x7e, 0x85, 0x81, 0x75, 0x69, -0x6e, 0x81, 0x8c, 0x93, 0xa0, 0xa0, 0x96, 0x8e, 0x8e, 0x97, 0xa6, 0xa5, 0xa4, 0xa6, 0x9d, 0x86, -0x73, 0x79, 0x8c, 0x91, 0x86, 0x7e, 0x7d, 0x71, 0x69, 0x72, 0x81, 0x94, 0x94, 0x90, 0x9c, 0xa5, -0xa0, 0x9b, 0x96, 0x8d, 0x79, 0x66, 0x70, 0x7e, 0x87, 0x8f, 0x8c, 0x8e, 0x8b, 0x79, 0x69, 0x65, -0x67, 0x66, 0x73, 0x81, 0x7d, 0x77, 0x76, 0x76, 0x6c, 0x65, 0x6f, 0x7b, 0x7e, 0x7a, 0x84, 0x87, -0x86, 0x83, 0x77, 0x6e, 0x6d, 0x71, 0x6f, 0x7c, 0x8c, 0x8d, 0x89, 0x79, 0x70, 0x5e, 0x4a, 0x48, -0x49, 0x45, 0x3a, 0x3c, 0x4c, 0x5f, 0x6f, 0x78, 0x7e, 0x7b, 0x6d, 0x70, 0x7d, 0x89, 0x8d, 0x8e, -0x91, 0x88, 0x75, 0x76, 0x8b, 0x92, 0x91, 0x8e, 0x8a, 0x8a, 0x7e, 0x70, 0x68, 0x6f, 0x76, 0x77, -0x74, 0x75, 0x7a, 0x76, 0x74, 0x7e, 0x8e, 0x95, 0x8d, 0x84, 0x8d, 0x87, 0x79, 0x78, 0x81, 0x83, -0x7a, 0x72, 0x78, 0x77, 0x85, 0x97, 0x94, 0x97, 0x8d, 0x6c, 0x4f, 0x4e, 0x60, 0x6f, 0x77, 0x75, -0x72, 0x69, 0x66, 0x70, 0x70, 0x70, 0x72, 0x70, 0x73, 0x7d, 0x8f, 0x9a, 0x97, 0x8d, 0x82, 0x7a, -0x77, 0x7a, 0x7b, 0x83, 0x84, 0x88, 0x92, 0x98, 0x9f, 0x91, 0x82, 0x83, 0x83, 0x92, 0x9b, 0x99, -0x9c, 0x99, 0x92, 0x8c, 0x93, 0xa0, 0x9e, 0x99, 0x9d, 0xa2, 0x99, 0x95, 0x9b, 0x9b, 0x91, 0x8d, -0x92, 0x98, 0x98, 0x96, 0x9b, 0x98, 0x88, 0x76, 0x74, 0x78, 0x7a, 0x71, 0x5f, 0x50, 0x4c, 0x51, -0x61, 0x69, 0x6b, 0x68, 0x5e, 0x5e, 0x85, 0x8a, 0x77, 0x6f, 0x6c, 0x68, 0x5c, 0x5b, 0x71, 0x76, -0x7b, 0x88, 0x95, 0x98, 0x89, 0x79, 0x6d, 0x6c, 0x71, 0x77, 0x80, 0x83, 0x84, 0x84, 0x8a, 0x95, -0x90, 0x8d, 0x89, 0x87, 0x89, 0x8c, 0x8c, 0x91, 0x97, 0x97, 0x91, 0x88, 0x86, 0x88, 0x88, 0x9c, -0xa1, 0x9f, 0x9d, 0x95, 0x89, 0x6c, 0x63, 0x6a, 0x6d, 0x75, 0x7c, 0x78, 0x76, 0x7b, 0x83, 0x89, -0x8d, 0x8c, 0x86, 0x87, 0x8f, 0x95, 0x97, 0x91, 0x95, 0x94, 0x88, 0x84, 0x85, 0x8a, 0x7d, 0x6c, -0x71, 0x73, 0x6f, 0x63, 0x61, 0x65, 0x69, 0x63, 0x6a, 0x6f, 0x6d, 0x73, 0x74, 0x66, 0x5f, 0x61, -0x6a, 0x76, 0x8d, 0x93, 0x8a, 0x7d, 0x7b, 0x85, 0x7e, 0x6d, 0x6f, 0x74, 0x7c, 0x82, 0x8b, 0x8f, -0x82, 0x74, 0x68, 0x67, 0x67, 0x69, 0x6f, 0x6b, 0x6a, 0x77, 0x89, 0x92, 0x88, 0x80, 0x82, 0x85, -0x8a, 0xa5, 0xb2, 0xad, 0xa2, 0x8f, 0x80, 0x78, 0x7e, 0x8a, 0x8a, 0x8d, 0x8e, 0x8b, 0x82, 0x7d, -0x7e, 0x69, 0x5c, 0x60, 0x66, 0x69, 0x6a, 0x68, 0x74, 0x7d, 0x80, 0x80, 0x80, 0x79, 0x73, 0x72, -0x70, 0x6e, 0x72, 0x76, 0x86, 0x8b, 0x88, 0x8e, 0x8f, 0x96, 0xa3, 0x9e, 0x98, 0x8f, 0x7c, 0x69, -0x66, 0x74, 0x74, 0x60, 0x57, 0x5e, 0x67, 0x6b, 0x69, 0x65, 0x60, 0x5a, 0x63, 0x73, 0x85, 0x87, -0x89, 0x89, 0x87, 0x90, 0x8d, 0x82, 0x85, 0x87, 0x93, 0x8f, 0x8b, 0x8d, 0x81, 0x75, 0x67, 0x61, -0x63, 0x65, 0x73, 0x91, 0x9b, 0x9d, 0xa0, 0x97, 0x84, 0x79, 0x84, 0x8e, 0x8d, 0x8d, 0x99, 0xa2, -0x98, 0x89, 0x8c, 0x8a, 0x8a, 0x8f, 0x92, 0x96, 0x8d, 0x8c, 0x91, 0x8c, 0x8d, 0x7c, 0x71, 0x6d, -0x69, 0x69, 0x5f, 0x5f, 0x70, 0x79, 0x7d, 0x7a, 0x73, 0x6d, 0x69, 0x6f, 0x85, 0x88, 0x7c, 0x74, -0x79, 0x7c, 0x79, 0x8a, 0x93, 0x95, 0x8c, 0x87, 0x8c, 0x84, 0x7a, 0x7a, 0x78, 0x79, 0x7b, 0x6f, -0x6a, 0x6f, 0x7c, 0x8a, 0x88, 0x82, 0x79, 0x75, 0x78, 0x7e, 0x8a, 0x7d, 0x76, 0x7b, 0x83, 0x8c, -0x81, 0x73, 0x76, 0x7e, 0x9e, 0xb6, 0xb0, 0xa0, 0x84, 0x75, 0x6f, 0x66, 0x6f, 0x78, 0x79, 0x7e, -0x8e, 0x97, 0x98, 0x90, 0x86, 0x7d, 0x7a, 0x88, 0x92, 0x96, 0x9f, 0xa8, 0xa6, 0x9c, 0x9b, 0x94, -0x93, 0x92, 0x91, 0x8f, 0x79, 0x76, 0x80, 0x7e, 0x83, 0x75, 0x5f, 0x5a, 0x5e, 0x69, 0x7b, 0x7e, -0x74, 0x6e, 0x76, 0x7e, 0x78, 0x79, 0x78, 0x73, 0x75, 0x7e, 0x84, 0x8a, 0x96, 0x99, 0x90, 0x93, -0x9f, 0xa2, 0x97, 0x8f, 0x94, 0x8f, 0x83, 0x83, 0x82, 0x79, 0x6f, 0x61, 0x5f, 0x63, 0x71, 0x7c, -0x79, 0x70, 0x69, 0x62, 0x67, 0x76, 0x93, 0x9c, 0x8f, 0x82, 0x7c, 0x86, 0x7b, 0x6f, 0x74, 0x81, -0x8c, 0x88, 0x80, 0x74, 0x64, 0x5a, 0x5d, 0x57, 0x5f, 0x71, 0x73, 0x77, 0x88, 0x94, 0x93, 0x83, -0x79, 0x72, 0x6a, 0x66, 0x69, 0x6e, 0x6e, 0x76, 0x77, 0x76, 0x7c, 0x78, 0x76, 0x7a, 0x83, 0x8d, -0x8f, 0x86, 0x79, 0x6e, 0x74, 0x6a, 0x57, 0x5c, 0x5b, 0x52, 0x51, 0x57, 0x62, 0x6e, 0x75, 0x79, -0x6c, 0x68, 0x6c, 0x6d, 0x7b, 0x92, 0x9d, 0xa0, 0xa6, 0xa6, 0xa6, 0xa5, 0xa1, 0xa6, 0x9d, 0x8a, -0x87, 0x8a, 0x8a, 0x8d, 0x8a, 0x82, 0x7e, 0x77, 0x85, 0x9c, 0x99, 0x88, 0x74, 0x6e, 0x6b, 0x68, -0x73, 0x7c, 0x88, 0x86, 0x83, 0x86, 0x8b, 0x91, 0x85, 0x73, 0x7d, 0x9b, 0xa3, 0x9e, 0x96, 0x8f, -0x80, 0x6e, 0x71, 0x75, 0x72, 0x71, 0x6f, 0x72, 0x77, 0x81, 0x85, 0x7b, 0x77, 0x6e, 0x67, 0x69, -0x7d, 0x9a, 0xab, 0xa0, 0x8c, 0x87, 0x8d, 0x88, 0x81, 0x80, 0x7e, 0x78, 0x71, 0x71, 0x74, 0x70, -0x74, 0x71, 0x65, 0x6b, 0x6e, 0x67, 0x69, 0x6f, 0x84, 0x93, 0x90, 0x8e, 0x83, 0x74, 0x6a, 0x73, -0x83, 0x84, 0x89, 0x96, 0xa3, 0xa0, 0xa0, 0xa1, 0xa5, 0xb3, 0xb8, 0xb5, 0x9f, 0x8b, 0x88, 0x8c, -0x8c, 0x89, 0x84, 0x73, 0x74, 0x7b, 0x7d, 0x82, 0x78, 0x73, 0x75, 0x72, 0x79, 0x83, 0x94, 0x9a, -0x9b, 0xa3, 0xa7, 0xa3, 0x94, 0x89, 0x8b, 0x99, 0x9d, 0x8c, 0x77, 0x6c, 0x61, 0x5c, 0x65, 0x6c, -0x6c, 0x69, 0x6e, 0x84, 0x9b, 0x97, 0x91, 0x88, 0x82, 0x79, 0x74, 0x77, 0x82, 0x8d, 0x8f, 0x8f, -0x8f, 0x8b, 0x88, 0x7b, 0x70, 0x78, 0x81, 0x7b, 0x7c, 0x80, 0x7c, 0x76, 0x78, 0x72, 0x6c, 0x5f, -0x4f, 0x4f, 0x54, 0x52, 0x68, 0x77, 0x74, 0x6e, 0x64, 0x5a, 0x59, 0x70, 0x8d, 0x9a, 0x8e, 0x88, -0x88, 0x86, 0x89, 0x8a, 0x8e, 0x8d, 0x7a, 0x70, 0x6b, 0x61, 0x61, 0x68, 0x6d, 0x6c, 0x65, 0x59, -0x5b, 0x64, 0x6d, 0x7b, 0x70, 0x64, 0x63, 0x60, 0x5b, 0x6a, 0x89, 0x8c, 0x7b, 0x79, 0x7b, 0x79, -0x71, 0x6f, 0x7b, 0x92, 0x9c, 0x99, 0x9a, 0x84, 0x6d, 0x6b, 0x74, 0x7e, 0x7c, 0x70, 0x69, 0x73, -0x82, 0x90, 0x93, 0x87, 0x82, 0x78, 0x70, 0x7b, 0x95, 0xa8, 0xad, 0xac, 0xaf, 0xa3, 0x92, 0x83, -0x80, 0x8b, 0x92, 0x91, 0x8f, 0x8c, 0x83, 0x84, 0x97, 0x97, 0x8f, 0x76, 0x62, 0x69, 0x77, 0x80, -0x84, 0x7e, 0x6b, 0x63, 0x5f, 0x5b, 0x64, 0x73, 0x82, 0x8b, 0x8f, 0x96, 0x96, 0x95, 0x93, 0x96, -0x9f, 0x9f, 0x92, 0x8b, 0x8c, 0x89, 0x85, 0x85, 0x84, 0x80, 0x6c, 0x55, 0x57, 0x5a, 0x58, 0x63, -0x60, 0x5e, 0x5d, 0x58, 0x59, 0x74, 0x9a, 0xa3, 0xa0, 0x8f, 0x87, 0x7e, 0x77, 0x78, 0x89, 0x99, -0x8e, 0x7e, 0x84, 0x83, 0x76, 0x7a, 0x86, 0x8b, 0x85, 0x75, 0x78, 0x88, 0x91, 0x9f, 0xa0, 0x8f, -0x7c, 0x6a, 0x65, 0x77, 0x8a, 0x95, 0x99, 0x95, 0x9b, 0x94, 0x8c, 0x88, 0x8d, 0x98, 0x9f, 0xa0, -0xa0, 0xa9, 0x98, 0x90, 0xa1, 0xa0, 0x91, 0x76, 0x5f, 0x61, 0x65, 0x6f, 0x82, 0x83, 0x6f, 0x63, -0x5c, 0x5d, 0x6e, 0x84, 0x8f, 0x94, 0x9c, 0xa6, 0x9d, 0x91, 0x8a, 0x8f, 0x97, 0x8e, 0x7a, 0x6d, -0x66, 0x64, 0x65, 0x6c, 0x6b, 0x66, 0x53, 0x46, 0x54, 0x65, 0x7c, 0x7d, 0x6d, 0x63, 0x60, 0x60, -0x61, 0x76, 0x8e, 0x88, 0x7e, 0x7b, 0x79, 0x73, 0x71, 0x74, 0x86, 0x92, 0x84, 0x79, 0x78, 0x77, -0x71, 0x70, 0x76, 0x79, 0x73, 0x6a, 0x6c, 0x77, 0x81, 0x86, 0x89, 0x83, 0x77, 0x6c, 0x6f, 0x80, -0x9b, 0xa7, 0xac, 0xb8, 0xa9, 0x90, 0x88, 0x8e, 0x97, 0x9e, 0x98, 0x86, 0x7e, 0x85, 0x82, 0x85, -0x94, 0x90, 0x82, 0x72, 0x68, 0x74, 0x7c, 0x83, 0x92, 0x8d, 0x78, 0x6a, 0x62, 0x65, 0x6e, 0x79, -0x7d, 0x7d, 0x7a, 0x82, 0x83, 0x80, 0x84, 0x8e, 0x99, 0x98, 0x8b, 0x8e, 0xa0, 0x94, 0x83, 0x81, -0x82, 0x7d, 0x63, 0x4a, 0x50, 0x60, 0x72, 0x7b, 0x70, 0x64, 0x5c, 0x5b, 0x62, 0x87, 0xad, 0xa5, -0x92, 0x8d, 0x89, 0x80, 0x77, 0x76, 0x86, 0x88, 0x78, 0x72, 0x6f, 0x66, 0x60, 0x5e, 0x65, 0x70, -0x6e, 0x66, 0x68, 0x74, 0x8c, 0x9d, 0x90, 0x79, 0x67, 0x61, 0x65, 0x6d, 0x79, 0x7c, 0x7b, 0x88, -0x8c, 0x7e, 0x79, 0x80, 0x87, 0x90, 0x97, 0x99, 0x98, 0x91, 0x88, 0x8c, 0x95, 0x8c, 0x81, 0x6f, -0x5c, 0x5f, 0x69, 0x6e, 0x6d, 0x68, 0x5e, 0x52, 0x53, 0x5a, 0x69, 0x7a, 0x84, 0x9c, 0xa9, 0x9a, -0x8c, 0x89, 0x90, 0x95, 0x95, 0x8d, 0x80, 0x7e, 0x89, 0x8b, 0x7d, 0x74, 0x75, 0x79, 0x68, 0x5d, -0x72, 0x82, 0x83, 0x82, 0x7b, 0x75, 0x6f, 0x6e, 0x75, 0x8c, 0x9f, 0x9b, 0x95, 0x8b, 0x8b, 0x94, -0x98, 0x9b, 0xa7, 0xa9, 0xa0, 0x9e, 0xb0, 0xb0, 0x95, 0x7d, 0x78, 0x8a, 0x83, 0x6b, 0x6b, 0x73, -0x7d, 0x8d, 0x96, 0x8b, 0x76, 0x6e, 0x76, 0x85, 0x98, 0xa1, 0x9c, 0x9e, 0xa0, 0x96, 0x9a, 0x9a, -0x94, 0x93, 0x8a, 0x83, 0x84, 0x79, 0x68, 0x72, 0x80, 0x81, 0x80, 0x6e, 0x69, 0x73, 0x81, 0x98, -0x9e, 0x86, 0x69, 0x5d, 0x63, 0x6a, 0x6f, 0x72, 0x74, 0x83, 0x93, 0x9d, 0x9b, 0x97, 0x92, 0x9a, -0xa2, 0xa2, 0xa3, 0xa1, 0x98, 0x91, 0x88, 0x7c, 0x7b, 0x78, 0x65, 0x58, 0x63, 0x6e, 0x6d, 0x65, -0x64, 0x65, 0x66, 0x63, 0x6d, 0x8a, 0x9c, 0x9b, 0xa1, 0x98, 0x7d, 0x73, 0x6f, 0x6d, 0x72, 0x6a, -0x5d, 0x55, 0x5d, 0x65, 0x66, 0x5d, 0x60, 0x72, 0x6e, 0x66, 0x76, 0x84, 0x87, 0x87, 0x88, 0x7e, -0x76, 0x70, 0x70, 0x79, 0x79, 0x73, 0x71, 0x74, 0x6d, 0x64, 0x70, 0x71, 0x6b, 0x73, 0x79, 0x7e, -0x89, 0x91, 0x8c, 0x89, 0x85, 0x7e, 0x81, 0x68, 0x56, 0x55, 0x4f, 0x56, 0x64, 0x62, 0x53, 0x4f, -0x57, 0x63, 0x6c, 0x7c, 0x92, 0x94, 0x8c, 0x91, 0x95, 0x94, 0x8b, 0x92, 0x9a, 0x8f, 0x86, 0x87, -0x83, 0x78, 0x73, 0x6d, 0x75, 0x78, 0x6a, 0x68, 0x77, 0x8a, 0x95, 0x8e, 0x76, 0x68, 0x66, 0x6b, -0x75, 0x89, 0x98, 0x8d, 0x87, 0x8e, 0x93, 0x90, 0x8c, 0x89, 0x95, 0x92, 0x8e, 0x96, 0x94, 0x8a, -0x8c, 0x8c, 0x8b, 0x91, 0x87, 0x80, 0x7b, 0x74, 0x79, 0x7d, 0x74, 0x6c, 0x6e, 0x70, 0x72, 0x7a, -0x84, 0x94, 0xa3, 0xae, 0xa7, 0x8f, 0x8d, 0x90, 0x95, 0x99, 0x93, 0x86, 0x75, 0x75, 0x88, 0x9d, -0x9f, 0x92, 0x8d, 0x7e, 0x76, 0x7b, 0x82, 0x84, 0x80, 0x7b, 0x7c, 0x85, 0x84, 0x86, 0x8a, 0x86, -0x8e, 0x95, 0x8f, 0x91, 0x93, 0x92, 0x92, 0x98, 0xa0, 0xa0, 0xa2, 0xa8, 0xaf, 0xa2, 0x89, 0x78, -0x82, 0x89, 0x74, 0x66, 0x65, 0x63, 0x6b, 0x74, 0x72, 0x67, 0x60, 0x6c, 0x86, 0x9b, 0xb0, 0xac, -0x98, 0x90, 0x98, 0x9a, 0x93, 0x8b, 0x8a, 0x7e, 0x6c, 0x6b, 0x6c, 0x6b, 0x64, 0x5b, 0x5f, 0x68, -0x5e, 0x63, 0x73, 0x7a, 0x86, 0x97, 0x8c, 0x75, 0x6b, 0x6f, 0x75, 0x72, 0x6d, 0x6b, 0x69, 0x69, -0x70, 0x72, 0x6e, 0x6f, 0x82, 0x89, 0x82, 0x79, 0x7a, 0x7d, 0x87, 0x98, 0xa3, 0x96, 0x86, 0x76, -0x69, 0x5f, 0x5b, 0x5c, 0x5d, 0x53, 0x4f, 0x54, 0x52, 0x5a, 0x6b, 0x7a, 0x89, 0x92, 0x98, 0x96, -0x88, 0x77, 0x80, 0x8f, 0x85, 0x74, 0x6d, 0x6c, 0x70, 0x75, 0x73, 0x6e, 0x74, 0x7a, 0x79, 0x76, -0x7c, 0x83, 0x7e, 0x79, 0x7a, 0x79, 0x75, 0x7b, 0x8d, 0x93, 0x96, 0x91, 0x8d, 0x8a, 0x80, 0x78, -0x75, 0x7b, 0x82, 0x84, 0x8a, 0x90, 0x96, 0xa3, 0x9c, 0x8c, 0x89, 0x8a, 0x7d, 0x74, 0x71, 0x6b, -0x66, 0x6b, 0x71, 0x72, 0x6b, 0x6f, 0x82, 0x8c, 0x8d, 0x98, 0x9e, 0x92, 0x8a, 0x90, 0x97, 0x97, -0x9c, 0x90, 0x78, 0x65, 0x67, 0x78, 0x83, 0x85, 0x8a, 0x85, 0x78, 0x6d, 0x6e, 0x79, 0x7b, 0x7a, -0x86, 0x7d, 0x6c, 0x67, 0x6f, 0x7c, 0x7c, 0x7c, 0x81, 0x7e, 0x7e, 0x89, 0x8d, 0x84, 0x92, 0xa5, -0x9e, 0x92, 0x8b, 0x8e, 0x88, 0x81, 0x89, 0x92, 0x8d, 0x7b, 0x6f, 0x66, 0x67, 0x6b, 0x6a, 0x68, -0x5c, 0x51, 0x56, 0x6a, 0x80, 0x9a, 0xb0, 0xab, 0xa8, 0xaa, 0x99, 0x8d, 0x87, 0x90, 0x8e, 0x79, -0x6d, 0x6b, 0x70, 0x79, 0x84, 0x85, 0x83, 0x84, 0x83, 0x87, 0x88, 0x84, 0x7d, 0x76, 0x71, 0x77, -0x7b, 0x7b, 0x84, 0x83, 0x7c, 0x7d, 0x83, 0x87, 0x8b, 0x89, 0x86, 0x86, 0x8a, 0x7e, 0x7d, 0x7d, -0x85, 0x98, 0xaa, 0xaa, 0xa9, 0x97, 0x84, 0x74, 0x65, 0x66, 0x64, 0x56, 0x59, 0x5a, 0x54, 0x57, -0x6d, 0x87, 0x90, 0x8f, 0x8e, 0x8b, 0x81, 0x81, 0x92, 0x96, 0x99, 0x93, 0x7c, 0x6d, 0x65, 0x70, -0x74, 0x70, 0x6b, 0x68, 0x64, 0x5a, 0x66, 0x77, 0x85, 0x7e, 0x7c, 0x8b, 0x80, 0x71, 0x6f, 0x84, -0x94, 0x99, 0xa4, 0x9b, 0x8b, 0x84, 0x84, 0x89, 0x8d, 0x9c, 0x9d, 0x90, 0x85, 0x87, 0x91, 0x8f, -0x97, 0xa3, 0xa3, 0x96, 0x87, 0x83, 0x80, 0x7b, 0x77, 0x76, 0x73, 0x67, 0x63, 0x6c, 0x76, 0x7a, -0x82, 0x8a, 0x89, 0x92, 0xa6, 0xa1, 0x94, 0x85, 0x84, 0x75, 0x66, 0x61, 0x65, 0x6e, 0x79, 0x89, -0x92, 0x8b, 0x7e, 0x77, 0x73, 0x75, 0x70, 0x63, 0x5d, 0x59, 0x5e, 0x67, 0x72, 0x79, 0x7a, 0x75, -0x75, 0x7b, 0x7b, 0x78, 0x79, 0x77, 0x81, 0x7e, 0x76, 0x7b, 0x83, 0x8a, 0x93, 0x9a, 0x8e, 0x84, -0x74, 0x6e, 0x77, 0x74, 0x73, 0x62, 0x53, 0x57, 0x5a, 0x5a, 0x66, 0x83, 0x95, 0x9c, 0xa6, 0xa0, -0x90, 0x7b, 0x79, 0x86, 0x89, 0x85, 0x72, 0x5c, 0x56, 0x60, 0x6e, 0x73, 0x76, 0x77, 0x75, 0x70, -0x69, 0x72, 0x82, 0x87, 0x81, 0x86, 0x8e, 0x81, 0x78, 0x75, 0x7a, 0x77, 0x71, 0x73, 0x70, 0x71, -0x7b, 0x7e, 0x81, 0x86, 0x8c, 0x84, 0x7a, 0x73, 0x77, 0x80, 0x82, 0x89, 0x9e, 0x9a, 0x82, 0x6d, -0x69, 0x6f, 0x6c, 0x62, 0x5c, 0x56, 0x55, 0x5c, 0x6c, 0x7b, 0x8a, 0x91, 0x96, 0x9a, 0xa1, 0xaa, -0xa2, 0xa0, 0x9f, 0x98, 0x88, 0x80, 0x84, 0x81, 0x7d, 0x7b, 0x84, 0x8c, 0x8c, 0x95, 0x9e, 0x99, -0x91, 0x82, 0x76, 0x72, 0x74, 0x76, 0x86, 0x98, 0x9d, 0xa1, 0xaa, 0xa6, 0x9d, 0x8c, 0x86, 0x8b, -0x8e, 0x86, 0x7c, 0x7b, 0x81, 0x8d, 0x93, 0xa1, 0xad, 0xa3, 0x95, 0x86, 0x81, 0x7e, 0x80, 0x7d, -0x6f, 0x67, 0x6e, 0x77, 0x7e, 0x8c, 0x9b, 0x9c, 0x9c, 0x9b, 0x9a, 0x9d, 0x99, 0x90, 0x96, 0xa2, -0x9d, 0x8f, 0x81, 0x76, 0x7d, 0x86, 0x86, 0x8d, 0x9a, 0x85, 0x6e, 0x67, 0x73, 0x81, 0x7b, 0x6c, -0x6e, 0x71, 0x62, 0x5e, 0x66, 0x74, 0x78, 0x72, 0x6f, 0x6d, 0x66, 0x66, 0x6d, 0x7e, 0x90, 0x95, -0x90, 0x8b, 0x89, 0x84, 0x7d, 0x78, 0x80, 0x86, 0x85, 0x84, 0x77, 0x67, 0x5f, 0x59, 0x55, 0x54, -0x52, 0x4d, 0x50, 0x5c, 0x6e, 0x8e, 0xa4, 0x9e, 0x90, 0x88, 0x8c, 0x87, 0x8a, 0x7e, 0x74, 0x67, -0x5d, 0x63, 0x69, 0x6f, 0x75, 0x77, 0x73, 0x73, 0x74, 0x73, 0x79, 0x79, 0x71, 0x6b, 0x65, 0x6b, -0x76, 0x7c, 0x79, 0x72, 0x73, 0x74, 0x81, 0x86, 0x7c, 0x6c, 0x6c, 0x6f, 0x6a, 0x6d, 0x73, 0x75, -0x7e, 0x82, 0x94, 0xb0, 0xad, 0x93, 0x7e, 0x71, 0x6f, 0x6f, 0x67, 0x5a, 0x54, 0x4f, 0x53, 0x61, -0x77, 0x89, 0x91, 0x90, 0x92, 0x90, 0x80, 0x74, 0x77, 0x8e, 0x98, 0x88, 0x75, 0x6e, 0x70, 0x76, -0x77, 0x77, 0x79, 0x77, 0x73, 0x7a, 0x7e, 0x82, 0x81, 0x82, 0x80, 0x84, 0x8b, 0x7b, 0x78, 0x7d, -0x90, 0xa6, 0xa8, 0x99, 0x88, 0x79, 0x78, 0x85, 0x96, 0x96, 0x94, 0x89, 0x81, 0x88, 0x8d, 0x90, -0x90, 0x8f, 0x90, 0x93, 0x88, 0x78, 0x7e, 0x81, 0x83, 0x7e, 0x73, 0x77, 0x79, 0x76, 0x80, 0x8f, -0x9f, 0xa3, 0xa7, 0xa5, 0xa8, 0x9e, 0x91, 0x96, 0x88, 0x82, 0x75, 0x6b, 0x6d, 0x72, 0x86, 0x99, -0x9d, 0x92, 0x8e, 0x88, 0x8b, 0x8f, 0x87, 0x7a, 0x69, 0x5f, 0x68, 0x7a, 0x8e, 0x93, 0x8f, 0x88, -0x84, 0x87, 0x80, 0x75, 0x78, 0x86, 0x86, 0x84, 0x89, 0x8d, 0x8f, 0x8f, 0x8e, 0x9d, 0xa6, 0x95, -0x8e, 0x89, 0x83, 0x79, 0x6d, 0x67, 0x61, 0x5b, 0x5a, 0x5d, 0x6d, 0x83, 0x9e, 0xb3, 0xb3, 0xa0, -0x8a, 0x77, 0x77, 0x88, 0x9a, 0x95, 0x83, 0x70, 0x66, 0x6b, 0x76, 0x7c, 0x77, 0x6a, 0x60, 0x5f, -0x5f, 0x62, 0x71, 0x74, 0x73, 0x69, 0x6a, 0x73, 0x6a, 0x69, 0x6b, 0x77, 0x79, 0x75, 0x71, 0x6a, -0x6c, 0x6b, 0x7a, 0x8e, 0x8b, 0x89, 0x82, 0x7d, 0x83, 0x8a, 0x93, 0x9e, 0x9e, 0x92, 0x89, 0x70, -0x6c, 0x70, 0x67, 0x62, 0x56, 0x49, 0x48, 0x53, 0x62, 0x75, 0x82, 0x85, 0x89, 0x88, 0x7e, 0x84, -0x8f, 0x95, 0x93, 0x85, 0x81, 0x7c, 0x7b, 0x7b, 0x7e, 0x86, 0x88, 0x86, 0x8c, 0x8d, 0x8e, 0x92, -0x90, 0x8a, 0x79, 0x67, 0x65, 0x6b, 0x7d, 0x92, 0x9a, 0xa0, 0xa0, 0x91, 0x80, 0x71, 0x6a, 0x74, -0x7e, 0x75, 0x72, 0x76, 0x79, 0x82, 0x8f, 0x94, 0x9c, 0x97, 0x88, 0x87, 0x7b, 0x76, 0x79, 0x74, -0x6d, 0x66, 0x63, 0x69, 0x74, 0x80, 0x89, 0x90, 0x91, 0x95, 0x92, 0x82, 0x78, 0x7b, 0x8b, 0x91, -0x85, 0x73, 0x63, 0x5d, 0x69, 0x7d, 0x84, 0x87, 0x7e, 0x71, 0x6b, 0x65, 0x75, 0x80, 0x74, 0x6c, -0x62, 0x69, 0x6d, 0x6e, 0x77, 0x7b, 0x7b, 0x78, 0x7b, 0x75, 0x71, 0x72, 0x82, 0x98, 0x99, 0x90, -0x8c, 0x8b, 0x8c, 0x8e, 0x89, 0x83, 0x85, 0x81, 0x83, 0x84, 0x81, 0x86, 0x7e, 0x76, 0x73, 0x63, -0x59, 0x5d, 0x75, 0x8a, 0x96, 0xab, 0xb1, 0xa5, 0x91, 0x83, 0x92, 0x9f, 0x96, 0x86, 0x7d, 0x78, -0x72, 0x78, 0x85, 0x8c, 0x88, 0x86, 0x88, 0x8c, 0x87, 0x87, 0x90, 0x8c, 0x85, 0x71, 0x68, 0x76, -0x84, 0x90, 0x95, 0x8e, 0x8b, 0x86, 0x7b, 0x78, 0x7a, 0x7c, 0x82, 0x87, 0x7d, 0x76, 0x76, 0x7a, -0x8c, 0x94, 0x95, 0xa7, 0x9f, 0x8c, 0x7c, 0x6d, 0x73, 0x72, 0x63, 0x5e, 0x5c, 0x5a, 0x67, 0x79, -0x8a, 0x90, 0x90, 0x97, 0x9b, 0x90, 0x80, 0x79, 0x8e, 0x9e, 0xa0, 0x96, 0x8f, 0x8e, 0x8e, 0x90, -0x90, 0x87, 0x77, 0x6a, 0x6f, 0x70, 0x79, 0x8b, 0x84, 0x77, 0x6c, 0x5e, 0x64, 0x6e, 0x80, 0x87, -0x88, 0x95, 0x97, 0x8a, 0x76, 0x71, 0x7b, 0x90, 0x90, 0x86, 0x82, 0x7d, 0x83, 0x8c, 0x90, 0x87, -0x7d, 0x82, 0x82, 0x87, 0x80, 0x79, 0x7b, 0x76, 0x73, 0x6b, 0x5e, 0x5f, 0x6a, 0x7b, 0x7d, 0x80, -0x8b, 0x8d, 0x87, 0x82, 0x8f, 0xa6, 0x9e, 0x8f, 0x7a, 0x6a, 0x64, 0x6d, 0x7e, 0x85, 0x87, 0x93, -0x95, 0x8a, 0x7e, 0x78, 0x80, 0x84, 0x75, 0x6c, 0x5d, 0x54, 0x62, 0x72, 0x80, 0x82, 0x7d, 0x80, -0x7e, 0x78, 0x71, 0x65, 0x68, 0x75, 0x7c, 0x6c, 0x6a, 0x77, 0x80, 0x83, 0x83, 0x85, 0x89, 0x77, -0x6f, 0x6e, 0x75, 0x7b, 0x6c, 0x5d, 0x51, 0x43, 0x47, 0x63, 0x76, 0x7c, 0x82, 0x94, 0x9a, 0x8c, -0x7c, 0x70, 0x74, 0x7e, 0x7a, 0x77, 0x6e, 0x67, 0x6a, 0x6e, 0x76, 0x75, 0x69, 0x65, 0x6c, 0x77, -0x6e, 0x6d, 0x7a, 0x81, 0x81, 0x76, 0x7b, 0x8f, 0x90, 0x8d, 0x84, 0x81, 0x7c, 0x73, 0x71, 0x78, -0x84, 0x93, 0x95, 0x8b, 0x7c, 0x74, 0x82, 0x97, 0x9f, 0x9a, 0x92, 0x9c, 0xa0, 0x9c, 0x95, 0x8d, -0x8e, 0x8a, 0x7d, 0x7b, 0x74, 0x6a, 0x71, 0x83, 0x90, 0x86, 0x85, 0x91, 0x92, 0x92, 0x8c, 0x93, -0xa2, 0xa0, 0x94, 0x82, 0x83, 0x8f, 0x91, 0x91, 0x90, 0x8a, 0x86, 0x85, 0x88, 0x8f, 0x9c, 0xa5, -0x99, 0x85, 0x6f, 0x5c, 0x65, 0x82, 0x93, 0x94, 0x93, 0x9d, 0x98, 0x8a, 0x7e, 0x72, 0x71, 0x76, -0x79, 0x7b, 0x6a, 0x6d, 0x81, 0x8a, 0x8e, 0x8c, 0x96, 0x97, 0x8c, 0x82, 0x71, 0x6b, 0x6b, 0x6b, -0x6b, 0x67, 0x67, 0x75, 0x82, 0x84, 0x83, 0x84, 0x86, 0x83, 0x83, 0x84, 0x87, 0x8d, 0x8b, 0x84, -0x72, 0x66, 0x74, 0x86, 0x8a, 0x88, 0x83, 0x84, 0x7d, 0x7d, 0x73, 0x60, 0x63, 0x67, 0x63, 0x65, -0x63, 0x71, 0x7e, 0x81, 0x80, 0x7a, 0x7c, 0x7b, 0x74, 0x79, 0x78, 0x78, 0x86, 0x8a, 0x83, 0x7e, -0x86, 0x99, 0xa1, 0x99, 0x8e, 0x83, 0x79, 0x7e, 0x89, 0x8a, 0x91, 0x8d, 0x7e, 0x72, 0x65, 0x5a, -0x66, 0x7e, 0x8d, 0x89, 0x84, 0x93, 0x8f, 0x88, 0x82, 0x7c, 0x91, 0x8c, 0x77, 0x6b, 0x60, 0x67, -0x71, 0x71, 0x75, 0x74, 0x73, 0x74, 0x77, 0x76, 0x73, 0x73, 0x79, 0x7e, 0x77, 0x6d, 0x68, 0x70, -0x80, 0x80, 0x7b, 0x78, 0x73, 0x6e, 0x6f, 0x75, 0x7b, 0x81, 0x77, 0x6d, 0x5e, 0x53, 0x67, 0x7c, -0x83, 0x82, 0x8d, 0xa6, 0x98, 0x8d, 0x79, 0x6a, 0x6d, 0x63, 0x5b, 0x5a, 0x57, 0x60, 0x73, 0x80, -0x85, 0x8a, 0x8f, 0x93, 0x8e, 0x8f, 0x8e, 0x83, 0x81, 0x88, 0x88, 0x84, 0x88, 0x94, 0x95, 0x8d, -0x88, 0x82, 0x7d, 0x84, 0x8c, 0x88, 0x86, 0x81, 0x79, 0x76, 0x6e, 0x79, 0x99, 0x9f, 0x9d, 0x92, -0x95, 0xa4, 0x94, 0x86, 0x7d, 0x77, 0x80, 0x81, 0x77, 0x74, 0x78, 0x86, 0x97, 0x9b, 0x9c, 0x9a, -0x91, 0x89, 0x92, 0x94, 0x8a, 0x81, 0x7c, 0x81, 0x7d, 0x72, 0x78, 0x86, 0x91, 0x8d, 0x7e, 0x71, -0x6b, 0x6b, 0x72, 0x81, 0x94, 0x9b, 0x80, 0x6b, 0x61, 0x69, 0x7c, 0x81, 0x80, 0x7e, 0x86, 0x95, -0x94, 0x8f, 0x7c, 0x72, 0x71, 0x6c, 0x68, 0x65, 0x63, 0x68, 0x73, 0x87, 0x90, 0x94, 0x94, 0x8d, -0x83, 0x7c, 0x7a, 0x7a, 0x83, 0x88, 0x86, 0x80, 0x7b, 0x86, 0x8b, 0x8c, 0x8a, 0x8e, 0x90, 0x87, -0x85, 0x83, 0x84, 0x79, 0x67, 0x60, 0x5c, 0x68, 0x7d, 0x92, 0x96, 0x92, 0x9d, 0xac, 0xa4, 0x95, -0x8e, 0x8d, 0x84, 0x76, 0x72, 0x77, 0x7e, 0x86, 0x8c, 0x8c, 0x8c, 0x8c, 0x8f, 0x8e, 0x8e, 0x87, -0x73, 0x5f, 0x5d, 0x6b, 0x71, 0x6a, 0x7b, 0x8d, 0x8a, 0x81, 0x76, 0x75, 0x6f, 0x65, 0x67, 0x76, -0x81, 0x7e, 0x72, 0x66, 0x69, 0x76, 0x85, 0x8f, 0x94, 0x95, 0x98, 0x9a, 0x8e, 0x8c, 0x81, 0x79, -0x73, 0x6a, 0x65, 0x5e, 0x65, 0x7a, 0x8b, 0x97, 0x97, 0x90, 0x87, 0x7f, 0x7d, 0x80, 0x82, 0x8a, -0x8c, 0x7e, 0x79, 0x78, 0x80, 0x84, 0x7b, 0x77, 0x72, 0x6c, 0x6c, 0x79, 0x81, 0x85, 0x82, 0x78, -0x6e, 0x6b, 0x6a, 0x6f, 0x75, 0x83, 0x90, 0x8f, 0x99, 0xa0, 0x8b, 0x74, 0x66, 0x6e, 0x73, 0x68, -0x61, 0x64, 0x68, 0x69, 0x6e, 0x7a, 0x84, 0x81, 0x8b, 0x87, 0x79, 0x71, 0x69, 0x63, 0x61, 0x62, -0x60, 0x60, 0x6b, 0x79, 0x88, 0x82, 0x7c, 0x78, 0x75, 0x77, 0x7d, 0x8d, 0x8e, 0x7c, 0x6b, 0x71, -0x7e, 0x86, 0x87, 0x87, 0x86, 0x84, 0x93, 0x9d, 0x90, 0x85, 0x77, 0x6b, 0x5d, 0x56, 0x62, 0x65, -0x70, 0x8f, 0x99, 0x96, 0x91, 0x8f, 0x8f, 0x81, 0x74, 0x72, 0x74, 0x72, 0x77, 0x82, 0x87, 0x8e, -0x8f, 0x93, 0x93, 0x93, 0x90, 0x87, 0x7e, 0x8c, 0x9a, 0x9e, 0x95, 0x83, 0x75, 0x73, 0x75, 0x8d, -0x9c, 0xa4, 0xa4, 0x99, 0x9d, 0x9a, 0x85, 0x83, 0x81, 0x86, 0x8e, 0x79, 0x6c, 0x70, 0x7c, 0x88, -0x87, 0x86, 0x8a, 0x86, 0x7e, 0x83, 0x89, 0x82, 0x7b, 0x6d, 0x6d, 0x77, 0x79, 0x7a, 0x84, 0x84, -0x89, 0x8c, 0x8a, 0x88, 0x7e, 0x7c, 0x7d, 0x85, 0x8a, 0x84, 0x79, 0x7e, 0x87, 0x85, 0x80, 0x86, -0x94, 0x94, 0xa2, 0xab, 0x94, 0x82, 0x76, 0x75, 0x6b, 0x5d, 0x5b, 0x5c, 0x6f, 0x84, 0x94, 0x9e, -0x9b, 0x98, 0x93, 0x8e, 0x8c, 0x8f, 0x8a, 0x7c, 0x77, 0x81, 0x8f, 0x94, 0x93, 0x8a, 0x80, 0x79, -0x7b, 0x7b, 0x78, 0x81, 0x82, 0x78, 0x68, 0x56, 0x55, 0x61, 0x6a, 0x86, 0x96, 0x91, 0x8a, 0x83, -0x91, 0x8c, 0x74, 0x6b, 0x67, 0x66, 0x64, 0x63, 0x66, 0x6f, 0x7d, 0x88, 0x8f, 0x95, 0x99, 0x94, -0x88, 0x82, 0x84, 0x84, 0x81, 0x74, 0x6e, 0x74, 0x76, 0x88, 0x9a, 0x97, 0x92, 0x8b, 0x7d, 0x74, -0x6e, 0x72, 0x84, 0x85, 0x87, 0x88, 0x75, 0x6e, 0x74, 0x7b, 0x7b, 0x7a, 0x7b, 0x77, 0x7e, 0x7b, -0x7a, 0x71, 0x66, 0x67, 0x5c, 0x56, 0x57, 0x5e, 0x74, 0x81, 0x85, 0x8a, 0x88, 0x86, 0x80, 0x74, -0x70, 0x74, 0x6f, 0x69, 0x6a, 0x70, 0x76, 0x72, 0x6e, 0x68, 0x6a, 0x73, 0x75, 0x7d, 0x80, 0x77, -0x6d, 0x6d, 0x6b, 0x63, 0x5b, 0x56, 0x62, 0x71, 0x7a, 0x8a, 0x89, 0x83, 0x91, 0x8d, 0x7e, 0x7e, -0x7d, 0x76, 0x73, 0x6d, 0x6e, 0x78, 0x87, 0x8d, 0x8c, 0x8c, 0x90, 0x93, 0x8d, 0x8b, 0x87, 0x7d, -0x6f, 0x63, 0x61, 0x70, 0x83, 0x99, 0xaf, 0xaa, 0x9c, 0x93, 0x8e, 0x8f, 0x8b, 0x89, 0x8e, 0x85, -0x7c, 0x85, 0x89, 0x89, 0x92, 0x9a, 0x9b, 0x9c, 0x99, 0x9c, 0xa6, 0x9c, 0x93, 0x8a, 0x85, 0x82, -0x74, 0x66, 0x63, 0x78, 0x97, 0xa2, 0xa2, 0xa2, 0x97, 0x83, 0x7c, 0x76, 0x7e, 0x89, 0x80, 0x88, -0x88, 0x82, 0x82, 0x89, 0x8d, 0x84, 0x7d, 0x78, 0x74, 0x73, 0x79, 0x85, 0x84, 0x82, 0x7c, 0x79, -0x70, 0x6d, 0x7e, 0x8c, 0x92, 0x94, 0x92, 0x95, 0x9f, 0x94, 0x86, 0x86, 0x84, 0x7c, 0x75, 0x6b, -0x6d, 0x72, 0x76, 0x7c, 0x7a, 0x82, 0x8a, 0x8f, 0x96, 0x8d, 0x7c, 0x71, 0x6a, 0x64, 0x61, 0x66, -0x6e, 0x7c, 0x83, 0x85, 0x89, 0x87, 0x83, 0x81, 0x81, 0x86, 0x8e, 0x8a, 0x88, 0x91, 0x89, 0x83, -0x8a, 0x8f, 0x89, 0x80, 0x7d, 0x85, 0x89, 0x82, 0x7c, 0x77, 0x6a, 0x5d, 0x56, 0x4c, 0x52, 0x6c, -0x89, 0x9d, 0x91, 0x85, 0x7b, 0x78, 0x77, 0x70, 0x73, 0x6a, 0x5d, 0x5f, 0x67, 0x73, 0x80, 0x88, -0x88, 0x80, 0x78, 0x7a, 0x80, 0x7e, 0x80, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x78, 0x7b, 0x91, 0x9f, -0xa1, 0x9a, 0x91, 0x82, 0x75, 0x71, 0x76, 0x89, 0x89, 0x8a, 0x89, 0x71, 0x68, 0x6d, 0x81, 0x83, -0x78, 0x76, 0x71, 0x6e, 0x6d, 0x71, 0x72, 0x6f, 0x68, 0x66, 0x64, 0x61, 0x74, 0x86, 0x8b, 0x86, -0x78, 0x75, 0x73, 0x6f, 0x69, 0x72, 0x7e, 0x82, 0x8c, 0x8c, 0x85, 0x7c, 0x78, 0x7a, 0x75, 0x73, -0x7c, 0x82, 0x88, 0x8a, 0x80, 0x7a, 0x73, 0x74, 0x70, 0x61, 0x60, 0x72, 0x83, 0x8d, 0x8f, 0x8d, -0x8c, 0x88, 0x87, 0x87, 0x8a, 0x89, 0x86, 0x84, 0x82, 0x83, 0x8d, 0x94, 0x8e, 0x7a, 0x74, 0x79, -0x7e, 0x84, 0x88, 0x85, 0x7d, 0x75, 0x79, 0x7d, 0x72, 0x7c, 0x92, 0xa5, 0xa8, 0x97, 0x8c, 0x85, -0x87, 0x82, 0x89, 0x8c, 0x80, 0x78, 0x6e, 0x6b, 0x75, 0x84, 0x92, 0x90, 0x85, 0x82, 0x87, 0x88, -0x88, 0x84, 0x78, 0x75, 0x6f, 0x6c, 0x68, 0x6a, 0x83, 0x94, 0x9d, 0x99, 0x89, 0x7c, 0x74, 0x74, -0x77, 0x82, 0x87, 0x91, 0xa0, 0x90, 0x7e, 0x7a, 0x82, 0x90, 0x85, 0x80, 0x7b, 0x71, 0x6c, 0x72, -0x78, 0x7a, 0x78, 0x70, 0x6f, 0x63, 0x65, 0x82, 0x90, 0x98, 0x91, 0x85, 0x87, 0x86, 0x7e, 0x80, -0x86, 0x86, 0x85, 0x7e, 0x78, 0x7d, 0x81, 0x83, 0x81, 0x73, 0x71, 0x77, 0x80, 0x8e, 0x87, 0x77, -0x74, 0x7d, 0x8d, 0x85, 0x77, 0x7b, 0x82, 0x8a, 0x94, 0x92, 0x90, 0x8c, 0x87, 0x8d, 0x96, 0x97, -0x98, 0x95, 0x87, 0x7a, 0x7c, 0x89, 0x90, 0x84, 0x79, 0x7d, 0x81, 0x83, 0x88, 0x81, 0x73, 0x68, -0x5d, 0x5f, 0x61, 0x6a, 0x80, 0x91, 0x96, 0x81, 0x6e, 0x66, 0x6d, 0x77, 0x71, 0x73, 0x74, 0x78, -0x7d, 0x75, 0x72, 0x76, 0x7a, 0x82, 0x87, 0x86, 0x85, 0x84, 0x86, 0x8c, 0x8b, 0x87, 0x89, 0x87, -0x80, 0x7b, 0x85, 0x92, 0x9a, 0x9d, 0x97, 0x8d, 0x86, 0x85, 0x85, 0x85, 0x86, 0x87, 0x8d, 0x8e, -0x7d, 0x79, 0x79, 0x81, 0x80, 0x6f, 0x6d, 0x6c, 0x6b, 0x6e, 0x6c, 0x69, 0x73, 0x81, 0x8f, 0x90, -0x84, 0x7b, 0x7a, 0x7c, 0x81, 0x83, 0x7c, 0x75, 0x6f, 0x67, 0x6b, 0x76, 0x7c, 0x7c, 0x78, 0x70, -0x6c, 0x6a, 0x6d, 0x6f, 0x6f, 0x70, 0x77, 0x86, 0x85, 0x73, 0x67, 0x60, 0x67, 0x6d, 0x67, 0x6c, -0x6d, 0x6a, 0x68, 0x62, 0x63, 0x68, 0x6f, 0x76, 0x76, 0x78, 0x84, 0x91, 0x97, 0x91, 0x8a, 0x85, -0x83, 0x7b, 0x79, 0x81, 0x85, 0x82, 0x83, 0x83, 0x7d, 0x79, 0x78, 0x7e, 0x83, 0x81, 0x83, 0x88, -0x96, 0x95, 0x8c, 0x89, 0x89, 0x91, 0x8b, 0x81, 0x81, 0x7e, 0x7b, 0x79, 0x76, 0x78, 0x7e, 0x83, -0x82, 0x7c, 0x79, 0x7a, 0x7e, 0x7e, 0x7a, 0x7a, 0x80, 0x89, 0x8b, 0x86, 0x86, 0x86, 0x85, 0x88, -0x90, 0x90, 0x87, 0x80, 0x81, 0x81, 0x86, 0x8a, 0x93, 0x9b, 0x91, 0x82, 0x7a, 0x7b, 0x86, 0x7e, -0x7a, 0x81, 0x84, 0x83, 0x7c, 0x73, 0x70, 0x74, 0x7d, 0x8a, 0x8d, 0x8d, 0x8a, 0x8a, 0x87, 0x83, -0x83, 0x82, 0x83, 0x7b, 0x7c, 0x8d, 0x9d, 0xa7, 0xa9, 0xa3, 0x94, 0x86, 0x84, 0x85, 0x8b, 0x90, -0x8d, 0x8f, 0x95, 0x8a, 0x7e, 0x79, 0x7b, 0x8a, 0x84, 0x7d, 0x81, 0x81, 0x7e, 0x7b, 0x7b, 0x82, -0x8b, 0x8e, 0x8c, 0x8a, 0x88, 0x88, 0x89, 0x88, 0x88, 0x86, 0x81, 0x7b, 0x71, 0x6d, 0x70, 0x73, -0x73, 0x74, 0x76, 0x78, 0x78, 0x7e, 0x87, 0x84, 0x80, 0x78, 0x78, 0x80, 0x81, 0x81, 0x7c, 0x75, -0x74, 0x71, 0x73, 0x78, 0x78, 0x74, 0x6d, 0x68, 0x68, 0x70, 0x74, 0x76, 0x7c, 0x83, 0x87, 0x86, -0x80, 0x78, 0x74, 0x76, 0x7d, 0x83, 0x84, 0x85, 0x82, 0x7d, 0x7d, 0x7c, 0x7b, 0x78, 0x77, 0x76, -0x7a, 0x84, 0x88, 0x8a, 0x8a, 0x85, 0x7a, 0x70, 0x6e, 0x6e, 0x71, 0x70, 0x6e, 0x6a, 0x69, 0x67, -0x65, 0x6a, 0x73, 0x7b, 0x7d, 0x7c, 0x7c, 0x79, 0x77, 0x75, 0x78, 0x7d, 0x7b, 0x74, 0x6d, 0x6c, -0x6c, 0x6c, 0x6b, 0x6d, 0x71, 0x6c, 0x65, 0x66, 0x67, 0x6b, 0x71, 0x73, 0x74, 0x74, 0x73, 0x75, -0x7a, 0x82, 0x8a, 0x89, 0x85, 0x82, 0x7d, 0x7c, 0x7d, 0x7b, 0x7e, 0x7e, 0x81, 0x87, 0x8c, 0x91, -0x8f, 0x8d, 0x8c, 0x8a, 0x86, 0x87, 0x89, 0x88, 0x8c, 0x8e, 0x8d, 0x87, 0x80, 0x7c, 0x7a, 0x7d, -0x85, 0x88, 0x8c, 0x91, 0x8d, 0x87, 0x84, 0x80, 0x81, 0x82, 0x82, 0x85, 0x89, 0x8b, 0x8d, 0x90, -0x92, 0x90, 0x8b, 0x87, 0x89, 0x89, 0x8c, 0x8e, 0x8e, 0x89, 0x87, 0x84, 0x83, 0x84, 0x84, 0x85, -0x83, 0x82, 0x80, 0x7d, 0x7c, 0x82, 0x8a, 0x8e, 0x8b, 0x88, 0x86, 0x88, 0x8b, 0x8a, 0x87, 0x84, -0x84, 0x81, 0x7b, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7b, 0x7b, 0x79, 0x7b, 0x84, 0x8d, 0x90, 0x8f, -0x90, 0x8d, 0x85, 0x82, 0x84, 0x85, 0x81, 0x7d, 0x82, 0x85, 0x89, 0x8b, 0x89, 0x86, 0x85, 0x85, -0x7c, 0x78, 0x7b, 0x82, 0x8a, 0x8e, 0x8b, 0x80, 0x72, 0x6d, 0x6e, 0x71, 0x71, 0x72, 0x76, 0x79, -0x76, 0x75, 0x76, 0x74, 0x74, 0x7a, 0x81, 0x85, 0x86, 0x8c, 0x90, 0x90, 0x93, 0x92, 0x8c, 0x81, -0x7a, 0x79, 0x7a, 0x79, 0x76, 0x72, 0x70, 0x6e, 0x70, 0x70, 0x70, 0x72, 0x73, 0x77, 0x77, 0x76, -0x75, 0x75, 0x76, 0x76, 0x74, 0x6e, 0x6d, 0x70, 0x71, 0x6f, 0x70, 0x72, 0x73, 0x72, 0x71, 0x75, -0x78, 0x78, 0x7b, 0x7e, 0x7e, 0x80, 0x81, 0x86, 0x8c, 0x93, 0x97, 0x98, 0x99, 0x94, 0x8e, 0x8a, -0x8c, 0x8e, 0x8a, 0x88, 0x8b, 0x8c, 0x90, 0x93, 0x8f, 0x8a, 0x85, 0x7d, 0x78, 0x78, 0x79, 0x7e, -0x80, 0x7b, 0x77, 0x71, 0x6b, 0x6a, 0x6c, 0x73, 0x79, 0x7b, 0x80, 0x83, 0x7e, 0x78, 0x78, 0x74, -0x73, 0x72, 0x72, 0x73, 0x74, 0x78, 0x7a, 0x7a, 0x7b, 0x7e, 0x7c, 0x74, 0x72, 0x76, 0x7b, 0x7d, -0x7b, 0x79, 0x76, 0x71, 0x71, 0x75, 0x79, 0x77, 0x79, 0x7d, 0x80, 0x82, 0x83, 0x85, 0x84, 0x82, -0x83, 0x83, 0x83, 0x83, 0x87, 0x86, 0x84, 0x88, 0x8a, 0x85, 0x7e, 0x82, 0x87, 0x82, 0x7d, 0x7a, -0x78, 0x74, 0x75, 0x7c, 0x83, 0x8a, 0x8f, 0x94, 0x97, 0x94, 0x8f, 0x8a, 0x88, 0x84, 0x81, 0x7d, -0x7c, 0x7d, 0x80, 0x82, 0x7e, 0x7d, 0x7c, 0x78, 0x76, 0x7d, 0x86, 0x89, 0x86, 0x84, 0x7e, 0x76, -0x72, 0x71, 0x73, 0x75, 0x79, 0x7c, 0x7e, 0x7c, 0x78, 0x78, 0x76, 0x74, 0x76, 0x78, 0x7a, 0x80, -0x87, 0x90, 0x94, 0x91, 0x92, 0x91, 0x8b, 0x85, 0x7e, 0x7e, 0x81, 0x7d, 0x7b, 0x78, 0x75, 0x72, -0x71, 0x76, 0x7e, 0x82, 0x82, 0x83, 0x84, 0x86, 0x87, 0x89, 0x88, 0x82, 0x7b, 0x78, 0x7b, 0x7e, -0x80, 0x7c, 0x7b, 0x7e, 0x80, 0x7e, 0x7a, 0x7b, 0x7b, 0x78, 0x7a, 0x7d, 0x7a, 0x76, 0x76, 0x78, -0x7e, 0x7d, 0x7e, 0x86, 0x8b, 0x8c, 0x8a, 0x8a, 0x8a, 0x86, 0x84, 0x88, 0x8e, 0x8f, 0x90, 0x91, -0x8c, 0x8a, 0x8b, 0x87, 0x85, 0x86, 0x8a, 0x88, 0x7e, 0x78, 0x74, 0x6c, 0x66, 0x6a, 0x72, 0x74, -0x76, 0x78, 0x7d, 0x81, 0x7e, 0x7b, 0x78, 0x73, 0x6f, 0x6e, 0x6e, 0x72, 0x78, 0x80, 0x84, 0x84, -0x8b, 0x90, 0x8d, 0x8f, 0x93, 0x96, 0x91, 0x89, 0x88, 0x85, 0x82, 0x81, 0x83, 0x87, 0x86, 0x89, -0x8b, 0x8a, 0x8a, 0x8c, 0x8a, 0x86, 0x83, 0x80, 0x7c, 0x7b, 0x80, 0x87, 0x88, 0x84, 0x80, 0x7e, -0x7b, 0x77, 0x76, 0x72, 0x6e, 0x68, 0x68, 0x6c, 0x68, 0x67, 0x68, 0x6c, 0x77, 0x84, 0x8d, 0x90, -0x8d, 0x8e, 0x8b, 0x89, 0x86, 0x80, 0x78, 0x76, 0x7e, 0x82, 0x83, 0x82, 0x7c, 0x7a, 0x77, 0x75, -0x78, 0x7c, 0x7e, 0x80, 0x7e, 0x7d, 0x78, 0x70, 0x6e, 0x71, 0x71, 0x73, 0x71, 0x71, 0x72, 0x77, -0x7a, 0x78, 0x77, 0x6f, 0x6a, 0x6d, 0x76, 0x82, 0x85, 0x89, 0x8e, 0x8d, 0x8f, 0x8e, 0x8b, 0x86, -0x82, 0x84, 0x81, 0x7b, 0x77, 0x74, 0x73, 0x70, 0x71, 0x74, 0x75, 0x76, 0x79, 0x7d, 0x82, 0x85, -0x84, 0x81, 0x7b, 0x76, 0x70, 0x6c, 0x6f, 0x76, 0x7c, 0x7a, 0x76, 0x76, 0x70, 0x70, 0x75, 0x7b, -0x7d, 0x74, 0x71, 0x72, 0x70, 0x70, 0x75, 0x80, 0x87, 0x8a, 0x91, 0x91, 0x8d, 0x8e, 0x8f, 0x8e, -0x87, 0x81, 0x7c, 0x7e, 0x8a, 0x94, 0x9a, 0x99, 0x94, 0x91, 0x8e, 0x8e, 0x92, 0x92, 0x8c, 0x87, -0x83, 0x84, 0x80, 0x7b, 0x7d, 0x80, 0x82, 0x86, 0x8b, 0x8c, 0x86, 0x85, 0x87, 0x86, 0x84, 0x7e, -0x7d, 0x79, 0x78, 0x80, 0x84, 0x8b, 0x8f, 0x92, 0x94, 0x90, 0x8d, 0x8c, 0x8c, 0x8d, 0x8a, 0x84, -0x7d, 0x7c, 0x82, 0x82, 0x82, 0x82, 0x7e, 0x7a, 0x77, 0x7b, 0x86, 0x8a, 0x87, 0x85, 0x7c, 0x78, -0x7b, 0x85, 0x8d, 0x92, 0x93, 0x8e, 0x85, 0x7e, 0x7d, 0x82, 0x7d, 0x7b, 0x7a, 0x6f, 0x69, 0x68, -0x6a, 0x6d, 0x6e, 0x73, 0x7b, 0x82, 0x88, 0x8b, 0x8a, 0x88, 0x86, 0x84, 0x7d, 0x75, 0x72, 0x72, -0x77, 0x7b, 0x80, 0x84, 0x80, 0x7c, 0x7c, 0x7c, 0x83, 0x8a, 0x93, 0x92, 0x89, 0x83, 0x81, 0x82, -0x82, 0x86, 0x89, 0x87, 0x85, 0x85, 0x83, 0x86, 0x87, 0x87, 0x83, 0x78, 0x72, 0x72, 0x75, 0x7e, -0x8b, 0x93, 0x92, 0x90, 0x8f, 0x8a, 0x86, 0x82, 0x7d, 0x78, 0x6d, 0x66, 0x6a, 0x6d, 0x74, 0x72, -0x6d, 0x70, 0x75, 0x77, 0x76, 0x75, 0x78, 0x78, 0x74, 0x70, 0x6d, 0x6a, 0x66, 0x67, 0x6d, 0x71, -0x70, 0x6d, 0x6c, 0x67, 0x64, 0x67, 0x69, 0x69, 0x69, 0x64, 0x63, 0x65, 0x68, 0x6c, 0x6f, 0x72, -0x79, 0x79, 0x77, 0x75, 0x76, 0x79, 0x7b, 0x7e, 0x7a, 0x74, 0x77, 0x81, 0x8d, 0x91, 0x91, 0x90, -0x8b, 0x84, 0x82, 0x87, 0x8a, 0x85, 0x82, 0x7e, 0x75, 0x74, 0x79, 0x83, 0x84, 0x7d, 0x7b, 0x7e, -0x80, 0x80, 0x84, 0x89, 0x8a, 0x8a, 0x87, 0x7e, 0x79, 0x78, 0x79, 0x80, 0x89, 0x8f, 0x91, 0x90, -0x91, 0x8f, 0x8c, 0x8c, 0x8e, 0x91, 0x88, 0x7e, 0x82, 0x89, 0x8d, 0x89, 0x8a, 0x8e, 0x8d, 0x89, -0x8a, 0x8a, 0x8d, 0x8f, 0x90, 0x8d, 0x85, 0x7d, 0x7e, 0x86, 0x8f, 0x97, 0x98, 0x93, 0x8d, 0x89, -0x88, 0x8b, 0x88, 0x83, 0x7b, 0x6f, 0x6e, 0x75, 0x7a, 0x83, 0x84, 0x86, 0x8d, 0x92, 0x91, 0x8c, -0x88, 0x87, 0x88, 0x87, 0x82, 0x81, 0x81, 0x81, 0x86, 0x88, 0x87, 0x82, 0x7b, 0x7c, 0x80, 0x7e, -0x80, 0x81, 0x82, 0x80, 0x79, 0x7a, 0x7c, 0x7b, 0x77, 0x72, 0x75, 0x7c, 0x79, 0x74, 0x74, 0x79, -0x7a, 0x79, 0x76, 0x70, 0x6f, 0x75, 0x80, 0x8c, 0x8f, 0x8f, 0x8c, 0x8a, 0x88, 0x87, 0x87, 0x84, -0x7c, 0x78, 0x70, 0x6d, 0x72, 0x78, 0x7b, 0x76, 0x70, 0x71, 0x75, 0x78, 0x7d, 0x81, 0x83, 0x82, -0x7c, 0x76, 0x6f, 0x6d, 0x6d, 0x70, 0x74, 0x79, 0x7d, 0x7d, 0x7a, 0x7a, 0x7d, 0x82, 0x82, 0x83, -0x7e, 0x75, 0x78, 0x84, 0x8d, 0x91, 0x91, 0x93, 0x96, 0x92, 0x8f, 0x8d, 0x87, 0x85, 0x86, 0x86, -0x83, 0x7c, 0x7b, 0x82, 0x89, 0x8c, 0x8d, 0x88, 0x82, 0x80, 0x80, 0x7e, 0x7e, 0x7a, 0x74, 0x6e, -0x69, 0x6c, 0x6f, 0x6e, 0x6c, 0x6c, 0x72, 0x79, 0x79, 0x77, 0x75, 0x77, 0x77, 0x75, 0x6f, 0x6a, -0x6c, 0x6f, 0x75, 0x7e, 0x83, 0x81, 0x7e, 0x7e, 0x83, 0x83, 0x7a, 0x76, 0x79, 0x7b, 0x7b, 0x7c, -0x80, 0x7e, 0x79, 0x71, 0x70, 0x75, 0x74, 0x73, 0x75, 0x75, 0x79, 0x7a, 0x79, 0x78, 0x76, 0x78, -0x7b, 0x82, 0x87, 0x8b, 0x8b, 0x8b, 0x8a, 0x89, 0x88, 0x88, 0x84, 0x7b, 0x72, 0x6e, 0x70, 0x78, -0x83, 0x8b, 0x88, 0x84, 0x87, 0x8c, 0x90, 0x91, 0x8f, 0x8c, 0x89, 0x85, 0x82, 0x81, 0x81, 0x80, -0x81, 0x83, 0x83, 0x82, 0x81, 0x83, 0x84, 0x85, 0x86, 0x84, 0x81, 0x7c, 0x7a, 0x79, 0x7c, 0x7e, -0x7c, 0x80, 0x86, 0x89, 0x87, 0x85, 0x82, 0x82, 0x80, 0x7b, 0x78, 0x74, 0x73, 0x7b, 0x89, 0x94, -0x96, 0x93, 0x91, 0x8e, 0x8e, 0x8b, 0x86, 0x83, 0x82, 0x80, 0x81, 0x83, 0x84, 0x84, 0x81, 0x7d, -0x80, 0x83, 0x84, 0x86, 0x85, 0x85, 0x87, 0x84, 0x80, 0x7c, 0x79, 0x76, 0x75, 0x77, 0x7c, 0x7e, -0x7d, 0x7e, 0x80, 0x82, 0x7c, 0x77, 0x78, 0x78, 0x76, 0x76, 0x78, 0x7b, 0x7a, 0x77, 0x76, 0x79, -0x7c, 0x7e, 0x82, 0x84, 0x83, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x83, 0x87, 0x8a, 0x8a, 0x8a, -0x8b, 0x8a, 0x88, 0x87, 0x86, 0x81, 0x77, 0x73, 0x72, 0x71, 0x74, 0x78, 0x79, 0x76, 0x79, 0x7e, -0x83, 0x84, 0x83, 0x82, 0x7c, 0x71, 0x6b, 0x6a, 0x6e, 0x76, 0x7d, 0x86, 0x88, 0x87, 0x89, 0x8b, -0x8d, 0x8d, 0x89, 0x88, 0x8a, 0x8c, 0x8d, 0x8f, 0x8f, 0x92, 0x93, 0x92, 0x96, 0x99, 0x96, 0x90, -0x8c, 0x8a, 0x89, 0x84, 0x81, 0x80, 0x79, 0x77, 0x7d, 0x85, 0x8a, 0x8c, 0x8b, 0x89, 0x82, 0x7b, -0x77, 0x77, 0x73, 0x6c, 0x6a, 0x6e, 0x73, 0x79, 0x7c, 0x7a, 0x76, 0x77, 0x7a, 0x7d, 0x81, 0x80, -0x7c, 0x79, 0x78, 0x76, 0x75, 0x73, 0x73, 0x73, 0x74, 0x76, 0x77, 0x79, 0x7b, 0x7c, 0x7a, 0x74, -0x71, 0x71, 0x70, 0x70, 0x6f, 0x6d, 0x69, 0x63, 0x66, 0x6e, 0x74, 0x73, 0x70, 0x6d, 0x6d, 0x70, -0x6c, 0x65, 0x62, 0x65, 0x6e, 0x7b, 0x84, 0x89, 0x89, 0x86, 0x86, 0x87, 0x89, 0x88, 0x84, 0x81, -0x81, 0x7a, 0x78, 0x78, 0x76, 0x79, 0x80, 0x81, 0x82, 0x85, 0x86, 0x86, 0x83, 0x82, 0x7e, 0x72, -0x6a, 0x6a, 0x74, 0x7a, 0x7b, 0x7e, 0x85, 0x88, 0x89, 0x89, 0x87, 0x80, 0x78, 0x7b, 0x7e, 0x7b, -0x79, 0x7d, 0x84, 0x88, 0x8a, 0x89, 0x8c, 0x91, 0x94, 0x93, 0x8f, 0x8f, 0x8e, 0x8b, 0x8b, 0x8d, -0x8b, 0x87, 0x89, 0x91, 0x98, 0x9c, 0x9c, 0x99, 0x94, 0x8a, 0x87, 0x81, 0x78, 0x7d, 0x7c, 0x79, -0x7a, 0x7c, 0x7e, 0x7d, 0x79, 0x7a, 0x83, 0x87, 0x86, 0x84, 0x82, 0x82, 0x78, 0x6d, 0x6c, 0x74, -0x7c, 0x82, 0x84, 0x84, 0x89, 0x87, 0x85, 0x87, 0x8e, 0x91, 0x8d, 0x88, 0x8f, 0x91, 0x8d, 0x87, -0x84, 0x86, 0x81, 0x7a, 0x7a, 0x7d, 0x79, 0x81, 0x89, 0x89, 0x84, 0x7b, 0x75, 0x70, 0x70, 0x79, -0x82, 0x85, 0x89, 0x8c, 0x8e, 0x8e, 0x88, 0x81, 0x7c, 0x79, 0x71, 0x6e, 0x70, 0x79, 0x7c, 0x7b, -0x7d, 0x7e, 0x78, 0x72, 0x72, 0x76, 0x78, 0x81, 0x86, 0x82, 0x7a, 0x76, 0x74, 0x70, 0x71, 0x76, -0x77, 0x7d, 0x8d, 0x92, 0x95, 0x98, 0x93, 0x8d, 0x8c, 0x83, 0x7e, 0x86, 0x8c, 0x92, 0x97, 0x98, -0x96, 0x96, 0x98, 0x95, 0x8c, 0x86, 0x8a, 0x87, 0x7d, 0x79, 0x7b, 0x7c, 0x7a, 0x83, 0x89, 0x8a, -0x88, 0x83, 0x85, 0x85, 0x86, 0x84, 0x78, 0x76, 0x72, 0x60, 0x5e, 0x5d, 0x67, 0x71, 0x75, 0x76, -0x76, 0x72, 0x6e, 0x6f, 0x6e, 0x6c, 0x6a, 0x64, 0x60, 0x61, 0x62, 0x62, 0x69, 0x6c, 0x6b, 0x73, -0x77, 0x7a, 0x81, 0x7d, 0x79, 0x79, 0x73, 0x75, 0x7a, 0x6e, 0x6e, 0x6f, 0x6b, 0x6c, 0x72, 0x70, -0x6c, 0x68, 0x67, 0x66, 0x6c, 0x67, 0x6e, 0x7b, 0x77, 0x7b, 0x80, 0x7d, 0x84, 0x8a, 0x8c, 0x8b, -0x8a, 0x8b, 0x8b, 0x89, 0x8b, 0x85, 0x7b, 0x80, 0x75, 0x6f, 0x81, 0x86, 0x88, 0x8b, 0x87, 0x84, -0x87, 0x8e, 0x91, 0x8a, 0x7b, 0x71, 0x70, 0x73, 0x76, 0x78, 0x75, 0x76, 0x84, 0x89, 0x8a, 0x8b, -0x9a, 0xa1, 0x9a, 0x93, 0x8e, 0x7e, 0x89, 0x93, 0x8b, 0x94, 0x9a, 0x98, 0x93, 0x8c, 0x88, 0x87, -0x84, 0x87, 0x86, 0x85, 0x89, 0x8d, 0x8b, 0x8d, 0x94, 0x9c, 0x99, 0x91, 0x8f, 0x8b, 0x86, 0x84, -0x88, 0x8a, 0x87, 0x7d, 0x78, 0x85, 0x85, 0x74, 0x7e, 0x86, 0x8d, 0x8b, 0x87, 0x88, 0x8a, 0x89, -0x87, 0x81, 0x74, 0x6a, 0x66, 0x63, 0x75, 0x86, 0x8a, 0x82, 0x7b, 0x7c, 0x7a, 0x75, 0x76, 0x7c, -0x84, 0x8d, 0x7e, 0x74, 0x76, 0x6f, 0x65, 0x62, 0x6b, 0x6f, 0x6b, 0x67, 0x6b, 0x6e, 0x6a, 0x73, -0x82, 0x7e, 0x79, 0x79, 0x87, 0x8e, 0x91, 0x8f, 0x86, 0x7d, 0x86, 0x89, 0x84, 0x85, 0x89, 0x89, -0x83, 0x78, 0x72, 0x77, 0x77, 0x7a, 0x7e, 0x88, 0x85, 0x85, 0x8b, 0x86, 0x80, 0x7b, 0x78, 0x72, -0x65, 0x68, 0x6d, 0x6f, 0x78, 0x7b, 0x71, 0x7a, 0x86, 0x89, 0x89, 0x81, 0x82, 0x89, 0x93, 0x8f, -0x8b, 0x8c, 0x88, 0x8e, 0x91, 0x86, 0x8b, 0x8f, 0x8a, 0x87, 0x86, 0x8a, 0x8e, 0x8e, 0x8b, 0x87, -0x87, 0x80, 0x81, 0x8c, 0x9e, 0x9c, 0x8f, 0x7d, 0x7a, 0x74, 0x6f, 0x7a, 0x7a, 0x71, 0x66, 0x62, -0x70, 0x7c, 0x80, 0x81, 0x75, 0x6e, 0x6c, 0x70, 0x79, 0x76, 0x7a, 0x7d, 0x78, 0x6d, 0x6a, 0x71, -0x78, 0x7e, 0x7c, 0x75, 0x6f, 0x72, 0x72, 0x71, 0x74, 0x74, 0x7c, 0x7d, 0x83, 0x80, 0x74, 0x76, -0x71, 0x70, 0x6c, 0x65, 0x67, 0x6b, 0x64, 0x5a, 0x5e, 0x62, 0x70, 0x7d, 0x7a, 0x75, 0x72, 0x6e, -0x72, 0x84, 0x8d, 0x8b, 0x8d, 0x8f, 0x80, 0x77, 0x7e, 0x8e, 0x8f, 0x84, 0x7e, 0x92, 0x98, 0x8c, -0x87, 0x83, 0x7b, 0x73, 0x7b, 0x8a, 0x85, 0x82, 0x87, 0x8a, 0x89, 0x74, 0x66, 0x76, 0x8f, 0x90, -0x84, 0x71, 0x79, 0x96, 0x9c, 0x8d, 0x83, 0x89, 0x88, 0x7e, 0x89, 0x9d, 0x98, 0x93, 0x8e, 0x89, -0x83, 0x7b, 0x7c, 0x88, 0x84, 0x83, 0x84, 0x87, 0x92, 0x91, 0x8a, 0x99, 0x97, 0x93, 0x99, 0x85, -0x7f, 0x85, 0x80, 0x80, 0x76, 0x79, 0x87, 0x89, 0x7d, 0x6a, 0x6b, 0x81, 0x91, 0x93, 0x8a, 0x7e, -0x6f, 0x6e, 0x74, 0x70, 0x7d, 0x88, 0x82, 0x80, 0x79, 0x6a, 0x6f, 0x72, 0x76, 0x7d, 0x7a, 0x75, -0x7c, 0x84, 0x83, 0x7d, 0x7a, 0x81, 0x81, 0x89, 0x8c, 0x85, 0x8a, 0x81, 0x73, 0x67, 0x65, 0x66, -0x5b, 0x5d, 0x6a, 0x72, 0x7e, 0x8d, 0x92, 0x88, 0x82, 0x8b, 0x92, 0x94, 0x8c, 0x86, 0x8a, 0x88, -0x91, 0x93, 0x85, 0x7c, 0x83, 0x7b, 0x75, 0x7c, 0x80, 0x86, 0x84, 0x86, 0x85, 0x81, 0x7c, 0x77, -0x83, 0x88, 0x88, 0x85, 0x85, 0x80, 0x6d, 0x77, 0x8d, 0x88, 0x7e, 0x79, 0x74, 0x79, 0x85, 0x8e, -0x91, 0x8c, 0x8d, 0x97, 0x94, 0x96, 0x8b, 0x93, 0xa9, 0xa3, 0x99, 0x92, 0x83, 0x76, 0x6d, 0x7b, -0x85, 0x89, 0x88, 0x8e, 0x89, 0x7e, 0x82, 0x81, 0x8d, 0x94, 0x85, 0x80, 0x7c, 0x73, 0x6f, 0x72, -0x7a, 0x78, 0x79, 0x7b, 0x7a, 0x76, 0x7d, 0x7d, 0x76, 0x6f, 0x6c, 0x6c, 0x67, 0x63, 0x72, 0x71, -0x72, 0x7e, 0x7b, 0x66, 0x5d, 0x75, 0x86, 0x80, 0x73, 0x72, 0x6c, 0x67, 0x64, 0x69, 0x78, 0x78, -0x71, 0x7d, 0x7e, 0x6e, 0x59, 0x54, 0x5c, 0x5b, 0x5e, 0x64, 0x5f, 0x54, 0x53, 0x5f, 0x67, 0x7a, -0x7e, 0x76, 0x70, 0x81, 0x87, 0x80, 0x7e, 0x83, 0x80, 0x77, 0x78, 0x88, 0x84, 0x85, 0x92, 0x97, -0x8e, 0x81, 0x8d, 0x89, 0x8b, 0x8a, 0x8e, 0x8c, 0x85, 0x83, 0x84, 0x7e, 0x8b, 0x8c, 0x84, 0x7a, -0x72, 0x6d, 0x6e, 0x73, 0x6e, 0x6e, 0x79, 0x87, 0x94, 0x95, 0x93, 0x90, 0x89, 0x8f, 0x96, 0xa1, -0xa3, 0xa1, 0x92, 0x84, 0x86, 0x81, 0x81, 0x88, 0x88, 0x82, 0x88, 0x93, 0x93, 0x8a, 0x7c, 0x78, -0x8b, 0x97, 0xa4, 0xae, 0xa3, 0x98, 0x8c, 0x83, 0x7c, 0x74, 0x7d, 0x89, 0x82, 0x7d, 0x83, 0x83, -0x7e, 0x87, 0x8b, 0x83, 0x76, 0x78, 0x81, 0x87, 0x81, 0x80, 0x84, 0x76, 0x6a, 0x6f, 0x71, 0x75, -0x80, 0x82, 0x81, 0x79, 0x7b, 0x80, 0x7c, 0x7c, 0x80, 0x80, 0x83, 0x8e, 0x8e, 0x79, 0x7c, 0x78, -0x7c, 0x73, 0x68, 0x6d, 0x6c, 0x6e, 0x6e, 0x66, 0x5d, 0x6b, 0x8b, 0x8e, 0x7e, 0x76, 0x80, 0x81, -0x87, 0x91, 0x8d, 0x84, 0x80, 0x7c, 0x83, 0x95, 0x97, 0x9f, 0x9c, 0x84, 0x85, 0x81, 0x7a, 0x82, -0x80, 0x85, 0x84, 0x7c, 0x88, 0x99, 0x96, 0x8f, 0x8b, 0x84, 0x76, 0x6b, 0x77, 0x83, 0x86, 0x87, -0x83, 0x7c, 0x79, 0x8a, 0x91, 0x90, 0x87, 0x84, 0x9a, 0x96, 0x88, 0x85, 0x7a, 0x6f, 0x70, 0x74, -0x84, 0x8c, 0x80, 0x7e, 0x85, 0x7b, 0x81, 0x85, 0x81, 0x77, 0x80, 0x83, 0x7b, 0x7c, 0x6e, 0x6e, -0x75, 0x72, 0x70, 0x72, 0x7d, 0x84, 0x8d, 0x8c, 0x69, 0x5c, 0x68, 0x6f, 0x77, 0x76, 0x75, 0x76, -0x70, 0x6d, 0x7b, 0x7e, 0x6b, 0x5c, 0x5c, 0x66, 0x5c, 0x56, 0x63, 0x69, 0x6a, 0x60, 0x5b, 0x68, -0x6b, 0x6a, 0x70, 0x77, 0x82, 0x9c, 0x91, 0x74, 0x73, 0x5b, 0x50, 0x59, 0x5b, 0x66, 0x6e, 0x69, -0x73, 0x7c, 0x79, 0x73, 0x7b, 0x89, 0x84, 0x83, 0x93, 0x9b, 0x9b, 0x9a, 0x94, 0x88, 0x8c, 0x93, -0x9d, 0x9e, 0x94, 0x97, 0x93, 0x88, 0x83, 0x87, 0x77, 0x7c, 0x8e, 0x90, 0x95, 0x91, 0xa7, 0xb1, -0xa2, 0x8e, 0x82, 0x87, 0x7a, 0x77, 0x87, 0x86, 0x83, 0x7e, 0x72, 0x74, 0x7b, 0x78, 0x8f, 0xa0, -0xa4, 0xb2, 0xb4, 0xa1, 0x91, 0x88, 0x8c, 0x82, 0x77, 0x83, 0x88, 0x78, 0x77, 0x90, 0x95, 0x8e, -0x81, 0x75, 0x72, 0x76, 0x77, 0x73, 0x82, 0x9b, 0x95, 0x85, 0x7c, 0x74, 0x6a, 0x69, 0x6f, 0x81, -0x89, 0x7d, 0x71, 0x65, 0x6c, 0x6b, 0x63, 0x64, 0x6f, 0x7c, 0x78, 0x7c, 0x8b, 0x93, 0x90, 0x87, -0x85, 0x85, 0x84, 0x75, 0x6c, 0x72, 0x7b, 0x7b, 0x6d, 0x6f, 0x77, 0x7c, 0x88, 0x95, 0x9a, 0x97, -0x96, 0x83, 0x74, 0x71, 0x72, 0x72, 0x66, 0x6a, 0x74, 0x6f, 0x74, 0x7b, 0x81, 0x81, 0x77, 0x78, -0x84, 0x85, 0x7d, 0x88, 0x90, 0x8b, 0x8a, 0x89, 0x83, 0x81, 0x88, 0x92, 0xa1, 0xa1, 0x95, 0x8e, -0x81, 0x72, 0x73, 0x7a, 0x7d, 0x71, 0x75, 0x82, 0x8a, 0x93, 0x92, 0x8f, 0x7e, 0x70, 0x6f, 0x70, -0x6d, 0x71, 0x78, 0x76, 0x74, 0x75, 0x75, 0x6e, 0x6e, 0x72, 0x7d, 0x8b, 0x89, 0x85, 0x7e, 0x76, -0x73, 0x79, 0x7a, 0x75, 0x75, 0x81, 0x8b, 0x90, 0x91, 0x95, 0x9b, 0x96, 0x92, 0x94, 0x8d, 0x85, -0x86, 0x8b, 0x8f, 0x8c, 0x83, 0x7b, 0x77, 0x7b, 0x7d, 0x82, 0x7d, 0x71, 0x68, 0x65, 0x65, 0x6d, -0x74, 0x71, 0x6c, 0x6e, 0x73, 0x78, 0x80, 0x81, 0x84, 0x85, 0x7d, 0x76, 0x73, 0x72, 0x75, 0x79, -0x7a, 0x7a, 0x7a, 0x7b, 0x7c, 0x7e, 0x83, 0x87, 0x88, 0x84, 0x81, 0x82, 0x7c, 0x75, 0x6e, 0x69, -0x69, 0x68, 0x69, 0x6e, 0x71, 0x70, 0x70, 0x75, 0x75, 0x6d, 0x69, 0x68, 0x6b, 0x72, 0x7a, 0x7e, -0x82, 0x84, 0x84, 0x84, 0x83, 0x83, 0x84, 0x84, 0x83, 0x79, 0x76, 0x7a, 0x82, 0x88, 0x8a, 0x8c, -0x8f, 0x90, 0x90, 0x93, 0x96, 0x9e, 0xa0, 0x94, 0x8a, 0x85, 0x7c, 0x7c, 0x7e, 0x7a, 0x75, 0x70, -0x74, 0x7e, 0x80, 0x7a, 0x78, 0x78, 0x77, 0x76, 0x77, 0x7a, 0x82, 0x84, 0x85, 0x83, 0x84, 0x89, -0x8d, 0x90, 0x8e, 0x8c, 0x8d, 0x8c, 0x89, 0x85, 0x84, 0x85, 0x89, 0x8a, 0x8d, 0x8f, 0x90, 0x8d, -0x85, 0x7e, 0x7d, 0x7e, 0x81, 0x7e, 0x7b, 0x76, 0x74, 0x7c, 0x80, 0x7b, 0x76, 0x70, 0x71, 0x78, -0x7b, 0x7d, 0x81, 0x81, 0x7b, 0x74, 0x70, 0x72, 0x76, 0x7a, 0x7e, 0x80, 0x7d, 0x80, 0x84, 0x87, -0x89, 0x88, 0x83, 0x81, 0x7d, 0x76, 0x77, 0x7d, 0x80, 0x7a, 0x78, 0x7b, 0x7c, 0x80, 0x81, 0x81, -0x81, 0x85, 0x8d, 0x91, 0x90, 0x89, 0x84, 0x83, 0x84, 0x89, 0x89, 0x89, 0x8b, 0x8b, 0x8a, 0x87, -0x85, 0x83, 0x82, 0x7c, 0x77, 0x79, 0x7e, 0x85, 0x86, 0x86, 0x8b, 0x8f, 0x91, 0x93, 0x91, 0x8f, -0x8c, 0x83, 0x7a, 0x76, 0x75, 0x7a, 0x7d, 0x7d, 0x79, 0x74, 0x77, 0x7d, 0x83, 0x83, 0x80, 0x7c, -0x7c, 0x80, 0x81, 0x85, 0x89, 0x8b, 0x89, 0x86, 0x83, 0x86, 0x8b, 0x8e, 0x90, 0x8d, 0x89, 0x87, -0x86, 0x85, 0x85, 0x87, 0x8b, 0x8a, 0x87, 0x87, 0x87, 0x86, 0x80, 0x7c, 0x7d, 0x7b, 0x76, 0x72, -0x6b, 0x62, 0x64, 0x6b, 0x75, 0x79, 0x75, 0x73, 0x72, 0x71, 0x76, 0x79, 0x7b, 0x82, 0x82, 0x7d, -0x78, 0x74, 0x74, 0x74, 0x70, 0x6c, 0x67, 0x66, 0x66, 0x69, 0x6d, 0x6d, 0x6a, 0x66, 0x61, 0x5b, -0x5d, 0x61, 0x62, 0x61, 0x5f, 0x63, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x61, 0x66, 0x6a, 0x6e, 0x6e, -0x70, 0x72, 0x75, 0x79, 0x7d, 0x80, 0x85, 0x8a, 0x8b, 0x8c, 0x8b, 0x8f, 0x92, 0x91, 0x90, 0x8f, -0x8f, 0x90, 0x8e, 0x8c, 0x8d, 0x8f, 0x8f, 0x91, 0x92, 0x8f, 0x8b, 0x86, 0x7e, 0x7d, 0x81, 0x83, -0x85, 0x87, 0x84, 0x81, 0x81, 0x84, 0x8a, 0x8b, 0x89, 0x83, 0x7c, 0x7a, 0x7c, 0x81, 0x8a, 0x92, -0x93, 0x91, 0x8d, 0x8f, 0x94, 0x96, 0x9b, 0x9b, 0x98, 0x98, 0x98, 0x99, 0x9b, 0x9b, 0x99, 0x98, -0x95, 0x91, 0x8a, 0x83, 0x7d, 0x78, 0x7a, 0x7b, 0x78, 0x73, 0x71, 0x6f, 0x6f, 0x72, 0x79, 0x7c, -0x7c, 0x80, 0x81, 0x80, 0x7d, 0x82, 0x83, 0x83, 0x81, 0x7d, 0x7c, 0x7b, 0x7c, 0x83, 0x86, 0x84, -0x82, 0x81, 0x82, 0x86, 0x87, 0x89, 0x8a, 0x8b, 0x8b, 0x88, 0x88, 0x89, 0x85, 0x80, 0x77, 0x74, -0x76, 0x78, 0x78, 0x79, 0x79, 0x75, 0x74, 0x74, 0x79, 0x7c, 0x7a, 0x7b, 0x7c, 0x7e, 0x83, 0x86, -0x88, 0x87, 0x84, 0x81, 0x80, 0x7a, 0x77, 0x78, 0x78, 0x7b, 0x80, 0x84, 0x86, 0x85, 0x85, 0x85, -0x88, 0x89, 0x87, 0x86, 0x89, 0x8d, 0x88, 0x83, 0x81, 0x82, 0x81, 0x7c, 0x75, 0x71, 0x6f, 0x6c, -0x6c, 0x6d, 0x6f, 0x6b, 0x63, 0x60, 0x64, 0x6a, 0x72, 0x78, 0x7c, 0x80, 0x80, 0x7e, 0x7e, 0x83, -0x87, 0x8b, 0x87, 0x85, 0x82, 0x83, 0x86, 0x87, 0x8a, 0x8a, 0x89, 0x88, 0x85, 0x85, 0x82, 0x7c, -0x76, 0x77, 0x7a, 0x7a, 0x7a, 0x78, 0x75, 0x72, 0x72, 0x73, 0x72, 0x73, 0x70, 0x69, 0x68, 0x6c, -0x71, 0x74, 0x75, 0x74, 0x73, 0x70, 0x6e, 0x72, 0x75, 0x76, 0x7a, 0x79, 0x76, 0x75, 0x76, 0x79, -0x79, 0x74, 0x6f, 0x6d, 0x6b, 0x6f, 0x71, 0x72, 0x72, 0x70, 0x76, 0x7a, 0x79, 0x7c, 0x7a, 0x78, -0x7d, 0x83, 0x8a, 0x8f, 0x8e, 0x8a, 0x86, 0x80, 0x82, 0x8a, 0x8c, 0x8c, 0x89, 0x88, 0x89, 0x89, -0x89, 0x8b, 0x8b, 0x88, 0x8b, 0x8f, 0x94, 0x9a, 0x9c, 0x9f, 0x9d, 0x9a, 0x98, 0x94, 0x92, 0x90, -0x8a, 0x87, 0x84, 0x82, 0x88, 0x8b, 0x88, 0x84, 0x81, 0x80, 0x82, 0x85, 0x85, 0x84, 0x7c, 0x73, -0x79, 0x81, 0x86, 0x88, 0x86, 0x82, 0x7e, 0x7b, 0x78, 0x76, 0x79, 0x7d, 0x7c, 0x7c, 0x7d, 0x7c, -0x7d, 0x7e, 0x80, 0x81, 0x81, 0x7e, 0x82, 0x85, 0x87, 0x86, 0x81, 0x7c, 0x7c, 0x7a, 0x78, 0x75, -0x71, 0x71, 0x73, 0x81, 0x8a, 0x8b, 0x86, 0x81, 0x7e, 0x81, 0x8e, 0x95, 0x93, 0x90, 0x8f, 0x8b, -0x87, 0x87, 0x86, 0x84, 0x82, 0x80, 0x79, 0x77, 0x78, 0x78, 0x77, 0x75, 0x75, 0x74, 0x70, 0x6c, -0x6e, 0x6f, 0x6e, 0x6d, 0x6f, 0x73, 0x73, 0x75, 0x79, 0x77, 0x76, 0x75, 0x78, 0x7b, 0x7c, 0x7c, -0x7e, 0x7b, 0x7a, 0x86, 0x8b, 0x8f, 0x8f, 0x8d, 0x8a, 0x83, 0x82, 0x85, 0x85, 0x83, 0x83, 0x84, -0x85, 0x86, 0x88, 0x88, 0x80, 0x7d, 0x7e, 0x7d, 0x7c, 0x7e, 0x80, 0x7d, 0x7a, 0x79, 0x7d, 0x81, -0x80, 0x7d, 0x7d, 0x78, 0x70, 0x72, 0x75, 0x74, 0x71, 0x6d, 0x6d, 0x6d, 0x6c, 0x73, 0x74, 0x78, -0x82, 0x83, 0x82, 0x8d, 0x91, 0x95, 0x94, 0x92, 0x92, 0x91, 0x95, 0x9a, 0x9e, 0x9d, 0x9b, 0x96, -0x92, 0x91, 0x8d, 0x83, 0x7d, 0x80, 0x87, 0x87, 0x85, 0x85, 0x76, 0x6d, 0x6f, 0x73, 0x7a, 0x7d, -0x80, 0x7c, 0x7b, 0x7c, 0x7a, 0x77, 0x6f, 0x6f, 0x6f, 0x73, 0x7e, 0x83, 0x85, 0x89, 0x89, 0x85, -0x81, 0x74, 0x71, 0x77, 0x81, 0x86, 0x88, 0x85, 0x81, 0x7a, 0x78, 0x77, 0x71, 0x6c, 0x6e, 0x70, -0x71, 0x73, 0x74, 0x71, 0x69, 0x63, 0x6a, 0x69, 0x65, 0x68, 0x6f, 0x78, 0x82, 0x89, 0x8e, 0x8d, -0x81, 0x78, 0x70, 0x66, 0x70, 0x75, 0x77, 0x7c, 0x84, 0x83, 0x7e, 0x83, 0x89, 0x87, 0x7d, 0x7b, -0x7d, 0x76, 0x7e, 0x86, 0x82, 0x7e, 0x7e, 0x81, 0x8c, 0x90, 0x8d, 0x8b, 0x8a, 0x89, 0x85, 0x81, -0x80, 0x81, 0x74, 0x73, 0x73, 0x6e, 0x68, 0x6b, 0x6e, 0x71, 0x77, 0x7a, 0x7c, 0x7c, 0x86, 0x8e, -0x8f, 0x91, 0x93, 0x8b, 0x82, 0x84, 0x8c, 0x91, 0x91, 0x8e, 0x91, 0x95, 0x92, 0x90, 0x85, 0x7c, -0x83, 0x88, 0x85, 0x8c, 0x89, 0x86, 0x84, 0x80, 0x7a, 0x80, 0x83, 0x7d, 0x76, 0x75, 0x7c, 0x7e, -0x7e, 0x80, 0x81, 0x79, 0x6e, 0x6f, 0x75, 0x76, 0x86, 0x96, 0x9f, 0x9d, 0x95, 0x89, 0x86, 0x8f, -0x94, 0x88, 0x84, 0x7c, 0x77, 0x76, 0x76, 0x75, 0x75, 0x79, 0x82, 0x85, 0x86, 0x87, 0x83, 0x7b, -0x85, 0x93, 0x90, 0x81, 0x80, 0x82, 0x79, 0x77, 0x7c, 0x87, 0x8d, 0x8c, 0x85, 0x7d, 0x78, 0x73, -0x6f, 0x71, 0x78, 0x78, 0x72, 0x74, 0x7b, 0x82, 0x89, 0x8b, 0x89, 0x81, 0x78, 0x7b, 0x82, 0x7b, -0x75, 0x72, 0x70, 0x6f, 0x76, 0x78, 0x7a, 0x82, 0x8f, 0x9a, 0x90, 0x7a, 0x6e, 0x73, 0x6d, 0x67, -0x71, 0x7b, 0x7e, 0x80, 0x7d, 0x77, 0x6e, 0x76, 0x8e, 0x8e, 0x84, 0x7e, 0x86, 0x86, 0x83, 0x83, -0x80, 0x7e, 0x84, 0x8e, 0x91, 0x90, 0x9c, 0xa0, 0x9c, 0x9c, 0x98, 0x92, 0x87, 0x7b, 0x72, 0x6b, -0x6a, 0x6d, 0x7d, 0x73, 0x71, 0x74, 0x77, 0x73, 0x61, 0x67, 0x7b, 0x78, 0x75, 0x6f, 0x66, 0x70, -0x83, 0x80, 0x7b, 0x72, 0x66, 0x70, 0x7d, 0x7d, 0x77, 0x75, 0x6f, 0x68, 0x67, 0x5f, 0x50, 0x5a, -0x69, 0x6a, 0x63, 0x66, 0x74, 0x7e, 0x82, 0x86, 0x7e, 0x73, 0x6d, 0x6f, 0x7b, 0x74, 0x67, 0x6f, -0x73, 0x71, 0x77, 0x86, 0x8e, 0x80, 0x87, 0x8d, 0x8d, 0xa1, 0x9e, 0x93, 0x88, 0x7e, 0x7d, 0x88, -0x8e, 0x85, 0x81, 0x87, 0x8d, 0x8e, 0x89, 0x86, 0x89, 0x87, 0x7d, 0x71, 0x6e, 0x75, 0x86, 0x96, -0x9a, 0x96, 0x8f, 0x8c, 0x8d, 0x93, 0x92, 0x85, 0x85, 0x83, 0x7d, 0x7b, 0x6f, 0x6e, 0x7c, 0x77, -0x75, 0x72, 0x83, 0x94, 0x97, 0x9a, 0x9a, 0x98, 0x94, 0x99, 0x96, 0x8d, 0x95, 0x9b, 0x94, 0x85, -0x87, 0x91, 0x99, 0x91, 0x86, 0x83, 0x88, 0x8b, 0x8a, 0x83, 0x7c, 0x6d, 0x64, 0x82, 0x88, 0x7c, -0x74, 0x75, 0x75, 0x76, 0x81, 0x82, 0x83, 0x87, 0x7e, 0x6b, 0x66, 0x7e, 0x92, 0x94, 0x8f, 0x8a, -0x88, 0x81, 0x7c, 0x93, 0xa4, 0x98, 0x8e, 0x84, 0x70, 0x63, 0x5d, 0x63, 0x6e, 0x69, 0x6a, 0x72, -0x80, 0x81, 0x79, 0x6e, 0x68, 0x70, 0x7e, 0x73, 0x5d, 0x64, 0x77, 0x7b, 0x7c, 0x7c, 0x83, 0x89, -0x82, 0x7c, 0x7c, 0x85, 0x87, 0x85, 0x85, 0x85, 0x76, 0x68, 0x65, 0x6e, 0x81, 0x8d, 0x89, 0x83, -0x81, 0x87, 0x88, 0x86, 0x83, 0x87, 0x82, 0x71, 0x6e, 0x83, 0x8c, 0x85, 0x7c, 0x7e, 0x8b, 0x88, -0x76, 0x6c, 0x65, 0x61, 0x60, 0x5c, 0x5c, 0x62, 0x6b, 0x6e, 0x70, 0x75, 0x81, 0x8b, 0x92, 0xa1, -0x9d, 0x8e, 0x8a, 0x8b, 0x8b, 0x89, 0x8e, 0x92, 0x94, 0x99, 0x9a, 0x93, 0x86, 0x82, 0x88, 0x94, -0xa9, 0xa8, 0x9e, 0x97, 0x8e, 0x7c, 0x6b, 0x66, 0x74, 0x7a, 0x72, 0x6e, 0x72, 0x75, 0x6a, 0x5f, -0x5f, 0x63, 0x68, 0x70, 0x68, 0x6b, 0x7e, 0x82, 0x84, 0x85, 0x7d, 0x78, 0x79, 0x81, 0x8e, 0x8f, -0x88, 0x81, 0x7b, 0x7b, 0x69, 0x5e, 0x60, 0x5c, 0x61, 0x6c, 0x6e, 0x6f, 0x7b, 0x87, 0x87, 0x88, -0x93, 0x94, 0x7d, 0x6e, 0x6b, 0x6c, 0x6b, 0x78, 0x8d, 0x8d, 0x87, 0x8b, 0x8f, 0x89, 0x7d, 0x7c, -0x7c, 0x7e, 0x82, 0x85, 0x87, 0x87, 0x81, 0x7a, 0x76, 0x81, 0x89, 0x92, 0x97, 0x95, 0x97, 0x93, -0x89, 0x86, 0x81, 0x85, 0x8e, 0x8c, 0x8d, 0x93, 0x94, 0x92, 0x95, 0x9d, 0x9d, 0x91, 0x87, 0x7e, -0x78, 0x76, 0x75, 0x74, 0x6e, 0x6a, 0x7c, 0x8d, 0x8b, 0x89, 0x86, 0x7a, 0x78, 0x80, 0x80, 0x72, -0x72, 0x7b, 0x87, 0x91, 0x87, 0x80, 0x84, 0x84, 0x87, 0x9a, 0x98, 0x8d, 0x7b, 0x74, 0x77, 0x75, -0x69, 0x6d, 0x7b, 0x71, 0x6a, 0x6c, 0x6d, 0x63, 0x6a, 0x80, 0x85, 0x87, 0x85, 0x7d, 0x74, 0x79, -0x8e, 0x91, 0x87, 0x85, 0x8f, 0x8f, 0x8f, 0x86, 0x89, 0x8a, 0x79, 0x6d, 0x72, 0x70, 0x6c, 0x6f, -0x7a, 0x7d, 0x71, 0x6a, 0x6d, 0x6b, 0x6e, 0x73, 0x78, 0x75, 0x7a, 0x83, 0x7c, 0x73, 0x73, 0x78, -0x75, 0x75, 0x7d, 0x82, 0x76, 0x6e, 0x82, 0x9a, 0x9c, 0x9c, 0x9a, 0x8f, 0x85, 0x84, 0x88, 0x8a, -0x82, 0x70, 0x66, 0x6f, 0x6d, 0x6b, 0x75, 0x77, 0x79, 0x83, 0x81, 0x7e, 0x7c, 0x7e, 0x81, 0x85, -0x84, 0x7c, 0x7a, 0x89, 0x9a, 0x8c, 0x82, 0x81, 0x71, 0x69, 0x67, 0x73, 0x7a, 0x84, 0x8c, 0x8c, -0x79, 0x72, 0x8a, 0x9b, 0xa5, 0xa6, 0xa2, 0xa5, 0xa1, 0x97, 0x9b, 0x9e, 0x99, 0x91, 0x91, 0x93, -0x92, 0x9b, 0x9e, 0x8b, 0x7c, 0x86, 0x7b, 0x72, 0x76, 0x74, 0x77, 0x6d, 0x6f, 0x6b, 0x63, 0x57, -0x51, 0x5e, 0x6a, 0x6e, 0x71, 0x77, 0x6d, 0x68, 0x65, 0x5c, 0x69, 0x7b, 0x83, 0x82, 0x7e, 0x79, -0x79, 0x83, 0x86, 0x86, 0x84, 0x6e, 0x58, 0x52, 0x67, 0x7c, 0x7c, 0x70, 0x6c, 0x62, 0x51, 0x52, -0x5e, 0x60, 0x63, 0x6a, 0x79, 0x75, 0x60, 0x5b, 0x63, 0x6e, 0x75, 0x6d, 0x6e, 0x79, 0x87, 0xa8, -0xb8, 0x9c, 0x92, 0x8c, 0x8f, 0x8a, 0x8c, 0x91, 0x9d, 0xa0, 0xa4, 0xaf, 0xa8, 0x8f, 0x87, 0x8d, -0x9d, 0xa5, 0xa8, 0x9c, 0x8e, 0x8a, 0x88, 0x89, 0x97, 0x99, 0x93, 0x95, 0x86, 0x8d, 0xa3, 0x92, -0x82, 0x80, 0x71, 0x62, 0x66, 0x70, 0x79, 0x83, 0x84, 0x88, 0x80, 0x6e, 0x68, 0x86, 0x9a, 0x9c, -0x94, 0x8b, 0x83, 0x7b, 0x73, 0x6f, 0x71, 0x81, 0x89, 0x8f, 0x95, 0x8f, 0x90, 0x8f, 0x91, 0x94, -0x8d, 0x70, 0x68, 0x78, 0x7c, 0x7e, 0x7d, 0x81, 0x7e, 0x6c, 0x5a, 0x55, 0x5a, 0x64, 0x6c, 0x6e, -0x6e, 0x6f, 0x6b, 0x63, 0x68, 0x72, 0x74, 0x7b, 0x8c, 0x92, 0x9f, 0xab, 0xa0, 0x92, 0x89, 0x80, -0x6e, 0x64, 0x72, 0x7b, 0x79, 0x7c, 0x8a, 0x90, 0x85, 0x71, 0x75, 0x82, 0x8c, 0x8a, 0x7e, 0x7d, -0x80, 0x7c, 0x7a, 0x85, 0x8a, 0x82, 0x81, 0x84, 0x8c, 0x92, 0x8e, 0x85, 0x7b, 0x75, 0x6d, 0x6b, -0x6d, 0x75, 0x82, 0x7d, 0x7c, 0x82, 0x87, 0x85, 0x82, 0x89, 0x8c, 0x8e, 0x87, 0x80, 0x80, 0x81, -0x80, 0x7c, 0x7a, 0x7a, 0x7d, 0x7d, 0x7d, 0x7d, 0x7a, 0x7a, 0x79, 0x7a, 0x79, 0x75, 0x72, 0x72, -0x76, 0x7a, 0x7b, 0x80, 0x7d, 0x79, 0x75, 0x74, 0x79, 0x7d, 0x82, 0x7e, 0x7a, 0x79, 0x7d, 0x84, -0x88, 0x86, 0x82, 0x7e, 0x7e, 0x87, 0x95, 0x99, 0x97, 0x93, 0x8e, 0x8b, 0x89, 0x89, 0x85, 0x7b, -0x74, 0x72, 0x72, 0x73, 0x77, 0x78, 0x77, 0x78, 0x79, 0x7a, 0x76, 0x75, 0x77, 0x77, 0x74, 0x71, -0x71, 0x72, 0x70, 0x6f, 0x6e, 0x6e, 0x6f, 0x72, 0x73, 0x71, 0x70, 0x6e, 0x6e, 0x6f, 0x72, 0x76, -0x7d, 0x7e, 0x80, 0x86, 0x87, 0x87, 0x84, 0x85, 0x85, 0x7c, 0x79, 0x79, 0x7b, 0x82, 0x82, 0x80, -0x82, 0x80, 0x7d, 0x81, 0x85, 0x8b, 0x90, 0x8e, 0x89, 0x8b, 0x90, 0x91, 0x91, 0x8f, 0x8c, 0x8d, -0x8f, 0x92, 0x92, 0x8c, 0x86, 0x83, 0x83, 0x83, 0x82, 0x81, 0x80, 0x81, 0x83, 0x86, 0x87, 0x87, -0x87, 0x86, 0x84, 0x7d, 0x7a, 0x83, 0x8c, 0x8f, 0x90, 0x8b, 0x83, 0x7e, 0x7c, 0x7e, 0x83, 0x84, -0x84, 0x80, 0x7d, 0x80, 0x84, 0x82, 0x7c, 0x79, 0x79, 0x7b, 0x7e, 0x81, 0x7d, 0x79, 0x78, 0x76, -0x74, 0x78, 0x7c, 0x80, 0x80, 0x7b, 0x79, 0x79, 0x77, 0x77, 0x74, 0x70, 0x70, 0x73, 0x7c, 0x82, -0x81, 0x7b, 0x77, 0x7a, 0x7a, 0x7a, 0x7e, 0x7c, 0x7b, 0x79, 0x7a, 0x7c, 0x80, 0x82, 0x7e, 0x7d, -0x82, 0x87, 0x8c, 0x8c, 0x89, 0x86, 0x81, 0x7b, 0x7b, 0x7a, 0x7c, 0x86, 0x8a, 0x89, 0x80, 0x77, -0x76, 0x76, 0x76, 0x72, 0x6f, 0x6f, 0x6f, 0x6f, 0x75, 0x7a, 0x79, 0x7a, 0x80, 0x81, 0x7b, 0x78, -0x7d, 0x83, 0x84, 0x83, 0x84, 0x84, 0x81, 0x80, 0x7e, 0x7d, 0x86, 0x8d, 0x8d, 0x89, 0x88, 0x88, -0x85, 0x83, 0x83, 0x85, 0x87, 0x87, 0x87, 0x85, 0x82, 0x80, 0x7e, 0x7c, 0x77, 0x71, 0x6f, 0x72, -0x74, 0x75, 0x72, 0x74, 0x75, 0x74, 0x75, 0x78, 0x7e, 0x88, 0x91, 0x8e, 0x89, 0x86, 0x86, 0x8c, -0x90, 0x91, 0x94, 0x97, 0x9a, 0x9a, 0x9a, 0x98, 0x96, 0x94, 0x93, 0x93, 0x98, 0x97, 0x95, 0x92, -0x8c, 0x86, 0x84, 0x83, 0x82, 0x7d, 0x77, 0x76, 0x78, 0x76, 0x72, 0x70, 0x71, 0x6f, 0x6b, 0x63, -0x5f, 0x64, 0x6a, 0x6b, 0x6a, 0x6b, 0x6d, 0x70, 0x73, 0x72, 0x6e, 0x6d, 0x6f, 0x72, 0x75, 0x75, -0x74, 0x72, 0x75, 0x78, 0x79, 0x7c, 0x84, 0x85, 0x82, 0x7e, 0x7d, 0x7a, 0x7a, 0x7a, 0x73, 0x6c, -0x6b, 0x70, 0x73, 0x75, 0x7b, 0x80, 0x80, 0x7b, 0x75, 0x74, 0x7a, 0x7d, 0x79, 0x76, 0x7c, 0x81, -0x82, 0x86, 0x89, 0x8a, 0x90, 0x96, 0x99, 0x95, 0x8d, 0x89, 0x8a, 0x8c, 0x8b, 0x8a, 0x8b, 0x8c, -0x8c, 0x8d, 0x8a, 0x85, 0x83, 0x82, 0x81, 0x7e, 0x79, 0x74, 0x70, 0x71, 0x78, 0x7a, 0x7b, 0x7b, -0x7a, 0x77, 0x78, 0x7e, 0x85, 0x81, 0x79, 0x78, 0x78, 0x78, 0x77, 0x76, 0x76, 0x75, 0x7a, 0x80, -0x82, 0x84, 0x86, 0x89, 0x88, 0x84, 0x86, 0x8d, 0x8f, 0x8d, 0x8a, 0x8a, 0x8c, 0x8b, 0x8c, 0x8a, -0x87, 0x86, 0x81, 0x7c, 0x7d, 0x82, 0x84, 0x83, 0x82, 0x7e, 0x79, 0x76, 0x79, 0x81, 0x83, 0x81, -0x84, 0x8a, 0x88, 0x85, 0x82, 0x81, 0x82, 0x82, 0x81, 0x7d, 0x7c, 0x80, 0x82, 0x83, 0x80, 0x85, -0x8a, 0x8b, 0x86, 0x7e, 0x7b, 0x7d, 0x7e, 0x80, 0x7e, 0x79, 0x74, 0x74, 0x73, 0x74, 0x7b, 0x81, -0x86, 0x85, 0x84, 0x87, 0x87, 0x86, 0x83, 0x7a, 0x79, 0x7d, 0x82, 0x86, 0x89, 0x8a, 0x8a, 0x8d, -0x8d, 0x87, 0x83, 0x81, 0x7d, 0x7d, 0x80, 0x81, 0x83, 0x85, 0x85, 0x82, 0x7e, 0x7e, 0x7e, 0x7c, -0x78, 0x73, 0x6d, 0x6b, 0x6b, 0x67, 0x65, 0x69, 0x70, 0x77, 0x7a, 0x7c, 0x7b, 0x7b, 0x83, 0x87, -0x85, 0x84, 0x84, 0x82, 0x82, 0x85, 0x86, 0x8a, 0x8d, 0x92, 0x93, 0x93, 0x92, 0x8c, 0x88, 0x86, -0x86, 0x89, 0x88, 0x84, 0x80, 0x7c, 0x7a, 0x7b, 0x7c, 0x7a, 0x7a, 0x77, 0x73, 0x6f, 0x6b, 0x69, -0x6c, 0x72, 0x75, 0x71, 0x6a, 0x66, 0x6a, 0x70, 0x71, 0x71, 0x71, 0x6e, 0x6c, 0x6a, 0x6c, 0x6f, -0x6f, 0x6d, 0x6c, 0x6c, 0x6a, 0x6c, 0x71, 0x73, 0x78, 0x81, 0x83, 0x81, 0x7e, 0x79, 0x75, 0x73, -0x72, 0x77, 0x78, 0x75, 0x75, 0x76, 0x75, 0x76, 0x7e, 0x89, 0x8c, 0x8b, 0x88, 0x84, 0x85, 0x88, -0x8c, 0x8c, 0x8a, 0x8b, 0x8c, 0x8f, 0x93, 0x96, 0x95, 0x94, 0x92, 0x94, 0x94, 0x93, 0x91, 0x90, -0x90, 0x8d, 0x8c, 0x90, 0x90, 0x91, 0x93, 0x93, 0x92, 0x8c, 0x87, 0x83, 0x7b, 0x74, 0x71, 0x72, -0x73, 0x78, 0x7e, 0x8a, 0x90, 0x8c, 0x8a, 0x8b, 0x8d, 0x8e, 0x8e, 0x8d, 0x90, 0x91, 0x8d, 0x8c, -0x8c, 0x85, 0x81, 0x81, 0x84, 0x85, 0x82, 0x7d, 0x7a, 0x79, 0x76, 0x75, 0x78, 0x75, 0x72, 0x70, -0x6e, 0x6d, 0x70, 0x70, 0x69, 0x6b, 0x74, 0x73, 0x6b, 0x68, 0x6c, 0x72, 0x76, 0x78, 0x74, 0x6b, -0x68, 0x6e, 0x76, 0x7b, 0x79, 0x77, 0x78, 0x7b, 0x81, 0x82, 0x7d, 0x7c, 0x7d, 0x84, 0x87, 0x87, -0x8a, 0x8f, 0x91, 0x92, 0x97, 0x9a, 0x96, 0x91, 0x8f, 0x8b, 0x87, 0x84, 0x81, 0x79, 0x73, 0x73, -0x76, 0x74, 0x77, 0x7b, 0x7d, 0x81, 0x82, 0x7d, 0x77, 0x77, 0x79, 0x7d, 0x80, 0x80, 0x80, 0x83, -0x87, 0x8a, 0x8c, 0x8a, 0x82, 0x7c, 0x86, 0x8b, 0x87, 0x84, 0x83, 0x81, 0x80, 0x82, 0x83, 0x82, -0x84, 0x80, 0x79, 0x71, 0x6e, 0x6f, 0x6a, 0x64, 0x64, 0x5c, 0x5b, 0x60, 0x68, 0x71, 0x76, 0x77, -0x78, 0x79, 0x7d, 0x83, 0x86, 0x84, 0x84, 0x84, 0x86, 0x8c, 0x90, 0x91, 0x91, 0x95, 0x9c, 0xa1, -0xa2, 0x9d, 0x98, 0x98, 0x96, 0x90, 0x8d, 0x8d, 0x92, 0x8f, 0x87, 0x81, 0x84, 0x81, 0x7e, 0x7c, -0x77, 0x6e, 0x66, 0x62, 0x65, 0x76, 0x82, 0x84, 0x81, 0x79, 0x6e, 0x6d, 0x6f, 0x70, 0x6f, 0x6e, -0x72, 0x74, 0x76, 0x78, 0x72, 0x6d, 0x6d, 0x6b, 0x6e, 0x70, 0x71, 0x7b, 0x83, 0x87, 0x88, 0x85, -0x85, 0x86, 0x82, 0x82, 0x80, 0x79, 0x75, 0x77, 0x7b, 0x78, 0x76, 0x7a, 0x79, 0x7b, 0x79, 0x87, -0x8b, 0x80, 0x7d, 0x84, 0x8b, 0x8e, 0x92, 0x95, 0x90, 0x87, 0x8d, 0x99, 0x9c, 0x97, 0x93, 0x91, -0x8f, 0x8e, 0x8f, 0x93, 0x96, 0x91, 0x8b, 0x89, 0x8b, 0x8d, 0x8b, 0x84, 0x79, 0x79, 0x77, 0x70, -0x69, 0x68, 0x6b, 0x6a, 0x6a, 0x70, 0x71, 0x70, 0x61, 0x5c, 0x74, 0x7d, 0x74, 0x7e, 0x85, 0x7d, -0x7a, 0x79, 0x78, 0x7c, 0x80, 0x79, 0x76, 0x75, 0x76, 0x7a, 0x76, 0x71, 0x75, 0x79, 0x74, 0x70, -0x75, 0x81, 0x89, 0x88, 0x88, 0x88, 0x82, 0x82, 0x7e, 0x81, 0x84, 0x81, 0x80, 0x7c, 0x7b, 0x78, -0x74, 0x74, 0x75, 0x7c, 0x85, 0x87, 0x8f, 0x98, 0x9b, 0x94, 0x8a, 0x87, 0x82, 0x84, 0x81, 0x82, -0x8f, 0x99, 0x9b, 0x9a, 0x9a, 0x8d, 0x89, 0x8e, 0x83, 0x87, 0x8b, 0x82, 0x74, 0x6c, 0x6c, 0x74, -0x7a, 0x76, 0x71, 0x69, 0x65, 0x68, 0x6a, 0x72, 0x7b, 0x7d, 0x75, 0x76, 0x7a, 0x7c, 0x8c, 0x8f, -0x91, 0x9a, 0x99, 0x93, 0x8d, 0x8c, 0x9d, 0x95, 0x85, 0x8c, 0x8f, 0x89, 0x89, 0x88, 0x83, 0x86, -0x83, 0x79, 0x84, 0x8e, 0x8f, 0x8c, 0x8a, 0x8e, 0x88, 0x70, 0x62, 0x63, 0x5f, 0x5b, 0x5a, 0x60, -0x70, 0x77, 0x75, 0x71, 0x6d, 0x79, 0x80, 0x74, 0x85, 0x89, 0x7b, 0x72, 0x72, 0x79, 0x7e, 0x88, -0x8e, 0x89, 0x88, 0x91, 0x9c, 0x9c, 0x95, 0x8d, 0x88, 0x82, 0x86, 0x91, 0x93, 0x8f, 0x90, 0x90, -0x82, 0x75, 0x6e, 0x64, 0x74, 0x7c, 0x6f, 0x70, 0x7b, 0x7a, 0x70, 0x69, 0x60, 0x6e, 0x76, 0x70, -0x6c, 0x73, 0x78, 0x72, 0x72, 0x71, 0x6d, 0x71, 0x6b, 0x60, 0x68, 0x72, 0x76, 0x7d, 0x88, 0x85, -0x81, 0x86, 0x8a, 0x92, 0x93, 0x87, 0x83, 0x8b, 0x84, 0x75, 0x71, 0x6b, 0x67, 0x64, 0x64, 0x6d, -0x71, 0x72, 0x78, 0x73, 0x6c, 0x76, 0x8c, 0x92, 0x88, 0x86, 0x87, 0x89, 0x8a, 0x85, 0x81, 0x83, -0x8d, 0x92, 0x8f, 0x8c, 0x89, 0x85, 0x86, 0x84, 0x7c, 0x79, 0x88, 0x93, 0x9a, 0x9c, 0x99, 0x94, -0x8b, 0x8c, 0x88, 0x80, 0x7c, 0x7d, 0x79, 0x6b, 0x6d, 0x73, 0x72, 0x70, 0x6e, 0x69, 0x75, 0x91, -0x99, 0x95, 0x8d, 0x79, 0x61, 0x6f, 0x7b, 0x75, 0x81, 0x8b, 0x8a, 0x84, 0x7d, 0x77, 0x74, 0x77, -0x72, 0x6d, 0x72, 0x75, 0x79, 0x84, 0x84, 0x83, 0x83, 0x7e, 0x8c, 0x89, 0x7c, 0x76, 0x75, 0x85, -0x81, 0x7a, 0x82, 0x8a, 0x8d, 0x8d, 0x81, 0x77, 0x8c, 0x98, 0x96, 0x8e, 0x81, 0x77, 0x81, 0x91, -0x8e, 0x8c, 0x91, 0x88, 0x8d, 0x9c, 0x99, 0x96, 0x91, 0x92, 0x94, 0x8d, 0x83, 0x85, 0x97, 0x92, -0x86, 0x78, 0x6d, 0x6e, 0x6c, 0x66, 0x60, 0x65, 0x6a, 0x65, 0x63, 0x64, 0x6c, 0x70, 0x6c, 0x5e, -0x68, 0x87, 0x94, 0x9c, 0xa9, 0x9a, 0x83, 0x78, 0x87, 0x88, 0x84, 0x81, 0x8b, 0x8b, 0x7c, 0x7a, -0x7a, 0x6d, 0x60, 0x67, 0x7e, 0x8b, 0x96, 0x95, 0x91, 0x87, 0x72, 0x7c, 0x8a, 0x79, 0x69, 0x5e, -0x5c, 0x60, 0x65, 0x6e, 0x6f, 0x6d, 0x70, 0x65, 0x61, 0x7e, 0x98, 0x92, 0x88, 0x82, 0x81, 0x7c, -0x6e, 0x70, 0x87, 0x8c, 0x8c, 0x98, 0xa3, 0x9f, 0x96, 0x86, 0x87, 0x8c, 0x89, 0x84, 0x84, 0x91, -0x9c, 0x98, 0x92, 0x88, 0x84, 0x96, 0x94, 0x89, 0x8d, 0x92, 0x7a, 0x63, 0x5d, 0x65, 0x63, 0x54, -0x4c, 0x60, 0x78, 0x82, 0x85, 0x8c, 0x89, 0x7e, 0x6f, 0x68, 0x64, 0x68, 0x72, 0x6f, 0x74, 0x87, -0x88, 0x80, 0x74, 0x6b, 0x6e, 0x73, 0x88, 0x9f, 0x99, 0x8a, 0x7b, 0x74, 0x6e, 0x70, 0x72, 0x69, -0x6f, 0x75, 0x71, 0x70, 0x77, 0x79, 0x7a, 0x86, 0x8d, 0x8c, 0x86, 0x89, 0x86, 0x7c, 0x7e, 0x8d, -0x8c, 0x83, 0x84, 0x90, 0x8f, 0x9a, 0xa8, 0xa0, 0x96, 0x8d, 0x82, 0x7c, 0x7d, 0x77, 0x70, 0x7d, -0x8d, 0x90, 0x8d, 0x91, 0x8b, 0x7b, 0x8d, 0x96, 0x83, 0x7a, 0x73, 0x71, 0x6f, 0x67, 0x67, 0x69, -0x68, 0x6b, 0x76, 0x7c, 0x96, 0x97, 0x89, 0x90, 0x8f, 0x85, 0x75, 0x71, 0x6a, 0x57, 0x61, 0x72, -0x81, 0x80, 0x81, 0x85, 0x85, 0x85, 0x80, 0x70, 0x6b, 0x7b, 0x87, 0x89, 0x82, 0x7a, 0x83, 0x83, -0x7a, 0x7e, 0x8b, 0x99, 0x8c, 0x78, 0x7d, 0x8c, 0x8a, 0x80, 0x78, 0x71, 0x7b, 0x8e, 0x86, 0x7d, -0x82, 0x86, 0x89, 0x88, 0x8c, 0x7d, 0x6f, 0x80, 0x9b, 0xa7, 0xa0, 0x9a, 0x96, 0x92, 0x8d, 0x88, -0x80, 0x8d, 0x9b, 0x92, 0x88, 0x82, 0x79, 0x76, 0x72, 0x61, 0x4f, 0x51, 0x60, 0x5b, 0x56, 0x5a, -0x63, 0x62, 0x5e, 0x63, 0x64, 0x71, 0x80, 0x8b, 0x9a, 0x9a, 0x8e, 0x85, 0x82, 0x88, 0x8c, 0x86, -0x7a, 0x8a, 0x86, 0x7a, 0x75, 0x78, 0x77, 0x7c, 0x86, 0x88, 0x8f, 0x98, 0x8e, 0x88, 0x84, 0x80, -0x81, 0x78, 0x70, 0x7a, 0x7e, 0x7c, 0x78, 0x7c, 0x80, 0x76, 0x6a, 0x5f, 0x61, 0x66, 0x87, 0xa6, -0xa6, 0x93, 0x8b, 0x8b, 0x87, 0x85, 0x90, 0x92, 0x8f, 0x93, 0x96, 0x99, 0x96, 0x8f, 0x93, 0x90, -0x7a, 0x75, 0x79, 0x82, 0x8d, 0x8d, 0x83, 0x76, 0x87, 0xa4, 0x9c, 0x89, 0x86, 0x8b, 0x7c, 0x62, -0x5c, 0x62, 0x62, 0x60, 0x6d, 0x73, 0x6d, 0x79, 0x8b, 0x88, 0x75, 0x74, 0x77, 0x6c, 0x61, 0x60, -0x61, 0x62, 0x63, 0x66, 0x77, 0x83, 0x82, 0x89, 0x8c, 0x90, 0x87, 0x80, 0x84, 0x86, 0x74, 0x6b, -0x5f, 0x5f, 0x6e, 0x72, 0x73, 0x74, 0x6f, 0x65, 0x5c, 0x69, 0x7c, 0x89, 0x84, 0x85, 0x78, 0x6e, -0x82, 0x95, 0x9a, 0x99, 0x90, 0x94, 0xa4, 0xa3, 0xa2, 0x9d, 0x8e, 0x92, 0x83, 0x77, 0x87, 0x8c, -0x8a, 0x7c, 0x7b, 0x84, 0x92, 0x90, 0x8c, 0x8d, 0x91, 0xa0, 0xa1, 0x89, 0x6b, 0x60, 0x62, 0x64, -0x5c, 0x5a, 0x6c, 0x7a, 0x8a, 0x96, 0x90, 0x8d, 0x7a, 0x87, 0xa4, 0xa3, 0x99, 0x93, 0x90, 0x8a, -0x80, 0x74, 0x76, 0x82, 0x7a, 0x71, 0x6d, 0x87, 0x98, 0x88, 0x75, 0x72, 0x74, 0x76, 0x78, 0x80, -0x86, 0x7c, 0x7e, 0x8b, 0x87, 0x84, 0x82, 0x74, 0x70, 0x74, 0x77, 0x6d, 0x68, 0x6c, 0x73, 0x70, -0x62, 0x61, 0x77, 0x84, 0x8a, 0x96, 0x96, 0x90, 0x84, 0x7c, 0x85, 0x87, 0x8c, 0x8d, 0x8b, 0x81, -0x7c, 0x8b, 0x8d, 0x88, 0x92, 0x95, 0x8a, 0x7e, 0x83, 0x87, 0x81, 0x84, 0x8d, 0x82, 0x76, 0x72, -0x67, 0x5a, 0x54, 0x5f, 0x6c, 0x6f, 0x71, 0x70, 0x6d, 0x72, 0x81, 0x8a, 0x90, 0x8e, 0x91, 0x98, -0x95, 0x8c, 0x87, 0x87, 0x8b, 0x92, 0x95, 0x93, 0x81, 0x6f, 0x71, 0x7d, 0x85, 0x86, 0x86, 0x81, -0x7d, 0x7c, 0x81, 0x88, 0x99, 0x98, 0x83, 0x79, 0x71, 0x6b, 0x67, 0x60, 0x63, 0x6b, 0x73, 0x77, -0x74, 0x6b, 0x6b, 0x6b, 0x76, 0x83, 0x81, 0x7d, 0x7e, 0x80, 0x82, 0x85, 0x87, 0x89, 0x8b, 0x8d, -0x8f, 0x8e, 0x84, 0x7e, 0x87, 0x8d, 0x8b, 0x86, 0x84, 0x88, 0x8e, 0x8d, 0x8b, 0x8c, 0x89, 0x84, -0x83, 0x7b, 0x77, 0x77, 0x74, 0x71, 0x70, 0x6c, 0x6d, 0x6f, 0x71, 0x73, 0x72, 0x73, 0x77, 0x81, -0x87, 0x84, 0x7a, 0x6d, 0x64, 0x65, 0x67, 0x68, 0x6d, 0x73, 0x78, 0x79, 0x75, 0x78, 0x83, 0x86, -0x82, 0x82, 0x87, 0x8b, 0x8a, 0x8a, 0x89, 0x87, 0x86, 0x88, 0x86, 0x84, 0x84, 0x87, 0x8c, 0x8b, -0x86, 0x84, 0x82, 0x80, 0x80, 0x7e, 0x81, 0x85, 0x8c, 0x8f, 0x91, 0x8d, 0x89, 0x87, 0x85, 0x81, -0x80, 0x7c, 0x78, 0x74, 0x72, 0x75, 0x7c, 0x80, 0x80, 0x7d, 0x7c, 0x80, 0x86, 0x8d, 0x8d, 0x84, -0x7c, 0x78, 0x72, 0x70, 0x70, 0x72, 0x7b, 0x82, 0x7d, 0x7c, 0x7b, 0x80, 0x81, 0x7b, 0x7b, 0x81, -0x84, 0x84, 0x80, 0x7e, 0x81, 0x81, 0x80, 0x7b, 0x78, 0x7a, 0x7e, 0x81, 0x82, 0x7d, 0x7a, 0x7a, -0x79, 0x75, 0x73, 0x75, 0x7a, 0x83, 0x8b, 0x8f, 0x8c, 0x85, 0x83, 0x83, 0x81, 0x83, 0x87, 0x8b, -0x8d, 0x86, 0x81, 0x82, 0x88, 0x90, 0x91, 0x8f, 0x91, 0x8e, 0x8b, 0x8b, 0x88, 0x85, 0x82, 0x7e, -0x7d, 0x7b, 0x7c, 0x7e, 0x80, 0x7c, 0x7c, 0x7d, 0x7d, 0x80, 0x82, 0x7e, 0x7b, 0x79, 0x79, 0x79, -0x79, 0x74, 0x6c, 0x68, 0x66, 0x65, 0x6a, 0x76, 0x7a, 0x78, 0x75, 0x71, 0x71, 0x77, 0x7a, 0x7a, -0x7a, 0x7e, 0x85, 0x87, 0x8c, 0x93, 0x93, 0x90, 0x8f, 0x8b, 0x88, 0x87, 0x87, 0x85, 0x7e, 0x7b, -0x7d, 0x82, 0x84, 0x85, 0x80, 0x7e, 0x84, 0x88, 0x8c, 0x8b, 0x88, 0x81, 0x78, 0x71, 0x6e, 0x70, -0x72, 0x70, 0x6c, 0x69, 0x68, 0x6b, 0x76, 0x7e, 0x7a, 0x75, 0x71, 0x6e, 0x6f, 0x76, 0x80, 0x83, -0x85, 0x89, 0x8a, 0x8a, 0x92, 0x9a, 0x9a, 0x98, 0x92, 0x8d, 0x8d, 0x8c, 0x87, 0x84, 0x84, 0x89, -0x8d, 0x8e, 0x8b, 0x86, 0x82, 0x80, 0x7d, 0x79, 0x78, 0x76, 0x74, 0x74, 0x73, 0x77, 0x7a, 0x78, -0x79, 0x77, 0x75, 0x79, 0x81, 0x85, 0x85, 0x87, 0x85, 0x7e, 0x77, 0x6d, 0x69, 0x6b, 0x70, 0x79, -0x80, 0x7e, 0x7e, 0x82, 0x82, 0x84, 0x87, 0x8a, 0x89, 0x86, 0x88, 0x86, 0x82, 0x7c, 0x77, 0x74, -0x74, 0x77, 0x7d, 0x7e, 0x79, 0x71, 0x6b, 0x68, 0x6a, 0x69, 0x68, 0x67, 0x6c, 0x70, 0x73, 0x7a, -0x7d, 0x81, 0x85, 0x83, 0x84, 0x87, 0x85, 0x82, 0x85, 0x87, 0x86, 0x83, 0x83, 0x86, 0x8c, 0x90, -0x93, 0x95, 0x99, 0x97, 0x92, 0x8b, 0x84, 0x80, 0x79, 0x75, 0x75, 0x79, 0x7d, 0x7d, 0x7a, 0x7b, -0x81, 0x87, 0x86, 0x80, 0x77, 0x71, 0x70, 0x74, 0x78, 0x79, 0x77, 0x74, 0x73, 0x75, 0x79, 0x7c, -0x7e, 0x83, 0x82, 0x81, 0x83, 0x83, 0x85, 0x87, 0x8a, 0x8c, 0x8b, 0x8c, 0x8e, 0x8c, 0x89, 0x8c, -0x90, 0x8d, 0x89, 0x88, 0x88, 0x87, 0x86, 0x85, 0x87, 0x8b, 0x89, 0x85, 0x84, 0x84, 0x82, 0x82, -0x87, 0x86, 0x80, 0x7c, 0x79, 0x77, 0x7a, 0x7b, 0x7b, 0x7a, 0x78, 0x79, 0x7c, 0x83, 0x8c, 0x91, -0x8f, 0x8a, 0x87, 0x84, 0x85, 0x86, 0x85, 0x83, 0x7c, 0x74, 0x70, 0x71, 0x73, 0x75, 0x75, 0x76, -0x78, 0x79, 0x7b, 0x79, 0x74, 0x73, 0x78, 0x7c, 0x7d, 0x84, 0x8b, 0x89, 0x88, 0x88, 0x86, 0x7e, -0x79, 0x77, 0x76, 0x76, 0x77, 0x76, 0x72, 0x72, 0x77, 0x7e, 0x89, 0x8b, 0x8b, 0x8d, 0x8c, 0x8a, -0x83, 0x75, 0x6d, 0x6b, 0x72, 0x7c, 0x80, 0x7d, 0x7a, 0x77, 0x75, 0x75, 0x74, 0x70, 0x65, 0x62, -0x6a, 0x6f, 0x76, 0x7e, 0x82, 0x7e, 0x7a, 0x7b, 0x81, 0x87, 0x8a, 0x8a, 0x87, 0x81, 0x7c, 0x7b, -0x78, 0x78, 0x7d, 0x83, 0x84, 0x84, 0x86, 0x86, 0x87, 0x87, 0x86, 0x82, 0x7d, 0x7e, 0x83, 0x87, -0x86, 0x85, 0x85, 0x89, 0x8d, 0x8e, 0x8e, 0x8e, 0x8b, 0x8a, 0x88, 0x86, 0x82, 0x7a, 0x73, 0x6b, -0x65, 0x66, 0x69, 0x69, 0x6b, 0x6a, 0x68, 0x6e, 0x76, 0x7c, 0x81, 0x83, 0x81, 0x82, 0x81, 0x80, -0x82, 0x7c, 0x76, 0x71, 0x6e, 0x72, 0x76, 0x79, 0x7a, 0x77, 0x72, 0x6b, 0x67, 0x67, 0x65, 0x66, -0x6a, 0x6c, 0x70, 0x7a, 0x87, 0x90, 0x9b, 0xa0, 0x9e, 0x9a, 0x97, 0x95, 0x93, 0x8f, 0x8f, 0x91, -0x92, 0x96, 0x9d, 0xa4, 0xa3, 0x9f, 0x9f, 0x9e, 0x9a, 0x92, 0x8b, 0x84, 0x79, 0x73, 0x71, 0x71, -0x75, 0x7b, 0x7d, 0x81, 0x8a, 0x94, 0x95, 0x90, 0x8a, 0x84, 0x81, 0x7c, 0x7b, 0x80, 0x88, 0x8a, -0x84, 0x83, 0x81, 0x7d, 0x7b, 0x7a, 0x73, 0x6d, 0x6c, 0x6c, 0x71, 0x78, 0x7a, 0x79, 0x7a, 0x7c, -0x80, 0x85, 0x87, 0x88, 0x86, 0x84, 0x85, 0x86, 0x87, 0x88, 0x86, 0x80, 0x7c, 0x7b, 0x78, 0x76, -0x77, 0x7b, 0x7e, 0x84, 0x89, 0x8a, 0x8a, 0x85, 0x7e, 0x78, 0x72, 0x6d, 0x6b, 0x69, 0x67, 0x69, -0x6e, 0x70, 0x73, 0x74, 0x7c, 0x84, 0x85, 0x86, 0x81, 0x81, 0x80, 0x7e, 0x7b, 0x73, 0x6e, 0x71, -0x75, 0x79, 0x80, 0x80, 0x78, 0x74, 0x6f, 0x6d, 0x6f, 0x6c, 0x68, 0x66, 0x68, 0x6c, 0x74, 0x83, -0x88, 0x88, 0x8b, 0x8e, 0x90, 0x91, 0x8e, 0x88, 0x83, 0x7d, 0x78, 0x7a, 0x7d, 0x7e, 0x87, 0x90, -0x92, 0x94, 0x91, 0x8a, 0x8a, 0x88, 0x83, 0x80, 0x7b, 0x7a, 0x7a, 0x7a, 0x7c, 0x80, 0x80, 0x7c, -0x7c, 0x7e, 0x7e, 0x7b, 0x78, 0x77, 0x7b, 0x83, 0x89, 0x88, 0x88, 0x8d, 0x92, 0x91, 0x8c, 0x87, -0x84, 0x7c, 0x77, 0x7b, 0x81, 0x83, 0x87, 0x84, 0x80, 0x79, 0x77, 0x7d, 0x81, 0x83, 0x81, 0x7c, -0x79, 0x7b, 0x80, 0x83, 0x85, 0x83, 0x82, 0x80, 0x7b, 0x7c, 0x7d, 0x7e, 0x7c, 0x79, 0x77, 0x79, -0x7b, 0x7a, 0x7c, 0x7b, 0x79, 0x76, 0x73, 0x6e, 0x69, 0x69, 0x70, 0x78, 0x7e, 0x87, 0x8b, 0x8c, -0x8a, 0x87, 0x89, 0x8e, 0x91, 0x93, 0x93, 0x8d, 0x84, 0x80, 0x79, 0x7a, 0x7c, 0x77, 0x6e, 0x6d, -0x72, 0x73, 0x74, 0x72, 0x71, 0x71, 0x71, 0x76, 0x80, 0x8b, 0x90, 0x90, 0x90, 0x90, 0x8d, 0x87, -0x80, 0x79, 0x75, 0x73, 0x79, 0x80, 0x86, 0x8c, 0x8c, 0x8b, 0x8d, 0x8f, 0x8f, 0x8e, 0x8f, 0x8b, -0x7e, 0x74, 0x72, 0x79, 0x80, 0x80, 0x80, 0x7c, 0x79, 0x79, 0x77, 0x76, 0x76, 0x75, 0x75, 0x73, -0x76, 0x7c, 0x86, 0x8c, 0x89, 0x8a, 0x8d, 0x8d, 0x8d, 0x87, 0x7d, 0x76, 0x71, 0x74, 0x7a, 0x7c, -0x7a, 0x78, 0x78, 0x7a, 0x80, 0x8a, 0x8d, 0x8c, 0x8d, 0x86, 0x7e, 0x7e, 0x84, 0x88, 0x88, 0x80, -0x77, 0x75, 0x73, 0x76, 0x7c, 0x7d, 0x7d, 0x7b, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x79, 0x79, 0x78, -0x75, 0x77, 0x7a, 0x7a, 0x7b, 0x7a, 0x7d, 0x84, 0x89, 0x8a, 0x86, 0x83, 0x89, 0x8d, 0x8a, 0x86, -0x87, 0x84, 0x7a, 0x78, 0x7c, 0x83, 0x85, 0x81, 0x7c, 0x75, 0x70, 0x6d, 0x6f, 0x74, 0x78, 0x77, -0x76, 0x77, 0x7d, 0x89, 0x90, 0x95, 0x94, 0x90, 0x8f, 0x8c, 0x86, 0x86, 0x80, 0x74, 0x72, 0x74, -0x77, 0x81, 0x87, 0x87, 0x83, 0x83, 0x85, 0x8a, 0x8c, 0x8b, 0x86, 0x7d, 0x76, 0x76, 0x79, 0x79, -0x7b, 0x7c, 0x77, 0x75, 0x77, 0x76, 0x73, 0x72, 0x72, 0x6f, 0x6e, 0x75, 0x7d, 0x84, 0x86, 0x85, -0x87, 0x89, 0x85, 0x80, 0x7b, 0x7a, 0x7a, 0x7b, 0x80, 0x84, 0x85, 0x82, 0x79, 0x75, 0x79, 0x82, -0x86, 0x88, 0x8c, 0x8d, 0x87, 0x85, 0x84, 0x82, 0x83, 0x83, 0x80, 0x77, 0x75, 0x74, 0x77, 0x81, -0x86, 0x84, 0x7b, 0x76, 0x7d, 0x85, 0x85, 0x82, 0x80, 0x7d, 0x77, 0x72, 0x71, 0x73, 0x73, 0x73, -0x71, 0x6d, 0x6d, 0x71, 0x76, 0x7b, 0x7d, 0x83, 0x8d, 0x8d, 0x85, 0x82, 0x80, 0x7c, 0x80, 0x84, -0x7c, 0x75, 0x77, 0x79, 0x75, 0x72, 0x72, 0x6f, 0x6e, 0x6e, 0x6c, 0x6f, 0x78, 0x84, 0x8f, 0x97, -0x98, 0x95, 0x93, 0x92, 0x91, 0x8f, 0x8e, 0x91, 0x93, 0x91, 0x8e, 0x8d, 0x92, 0x97, 0x95, 0x8f, -0x89, 0x87, 0x87, 0x83, 0x83, 0x84, 0x83, 0x86, 0x85, 0x83, 0x84, 0x83, 0x7e, 0x77, 0x74, 0x73, -0x74, 0x7b, 0x82, 0x80, 0x7b, 0x7d, 0x82, 0x7e, 0x7b, 0x7c, 0x7e, 0x82, 0x86, 0x88, 0x88, 0x88, -0x85, 0x82, 0x80, 0x7c, 0x79, 0x7e, 0x82, 0x83, 0x84, 0x87, 0x89, 0x87, 0x83, 0x82, 0x7d, 0x79, -0x7b, 0x7b, 0x74, 0x72, 0x77, 0x76, 0x6f, 0x6d, 0x72, 0x79, 0x7e, 0x7d, 0x7a, 0x74, 0x72, 0x78, -0x7c, 0x7e, 0x80, 0x7e, 0x7c, 0x7b, 0x7b, 0x81, 0x87, 0x88, 0x87, 0x86, 0x83, 0x82, 0x85, 0x8a, -0x8b, 0x8a, 0x8a, 0x8b, 0x89, 0x84, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x77, 0x6f, 0x6c, 0x69, 0x67, -0x67, 0x66, 0x66, 0x67, 0x69, 0x6e, 0x71, 0x78, 0x85, 0x89, 0x88, 0x87, 0x83, 0x7d, 0x76, 0x6f, -0x73, 0x7b, 0x7d, 0x7c, 0x78, 0x75, 0x7a, 0x83, 0x88, 0x8d, 0x8b, 0x89, 0x8c, 0x88, 0x85, 0x85, -0x84, 0x85, 0x87, 0x87, 0x88, 0x86, 0x81, 0x7a, 0x74, 0x72, 0x70, 0x6c, 0x6c, 0x69, 0x69, 0x6d, -0x77, 0x7d, 0x7d, 0x7c, 0x7c, 0x80, 0x81, 0x80, 0x80, 0x80, 0x83, 0x86, 0x86, 0x80, 0x77, 0x75, -0x7a, 0x83, 0x89, 0x8e, 0x92, 0x91, 0x8d, 0x89, 0x89, 0x8d, 0x8e, 0x88, 0x82, 0x7e, 0x7e, 0x80, -0x7e, 0x7c, 0x80, 0x82, 0x84, 0x89, 0x8a, 0x81, 0x7d, 0x82, 0x8b, 0x8c, 0x86, 0x85, 0x84, 0x84, -0x85, 0x86, 0x87, 0x87, 0x87, 0x83, 0x7c, 0x7c, 0x83, 0x83, 0x80, 0x83, 0x89, 0x8b, 0x87, 0x82, -0x7e, 0x81, 0x85, 0x88, 0x8a, 0x81, 0x76, 0x72, 0x6e, 0x69, 0x6a, 0x6b, 0x6b, 0x6b, 0x6c, 0x6f, -0x77, 0x7a, 0x7c, 0x84, 0x88, 0x8a, 0x8a, 0x87, 0x81, 0x7b, 0x80, 0x86, 0x8a, 0x89, 0x89, 0x87, -0x86, 0x8a, 0x8e, 0x8e, 0x8b, 0x8a, 0x8a, 0x88, 0x86, 0x82, 0x81, 0x84, 0x85, 0x83, 0x7b, 0x77, -0x73, 0x6f, 0x6f, 0x74, 0x79, 0x7c, 0x76, 0x6e, 0x70, 0x73, 0x77, 0x7e, 0x81, 0x80, 0x81, 0x84, -0x88, 0x8a, 0x89, 0x88, 0x8d, 0x94, 0x95, 0x90, 0x85, 0x7e, 0x83, 0x88, 0x89, 0x8e, 0x91, 0x8f, -0x8a, 0x89, 0x88, 0x83, 0x7c, 0x78, 0x70, 0x6a, 0x69, 0x6b, 0x6c, 0x68, 0x65, 0x6a, 0x6d, 0x66, -0x60, 0x60, 0x63, 0x67, 0x6d, 0x6e, 0x6a, 0x68, 0x68, 0x6a, 0x70, 0x73, 0x72, 0x72, 0x76, 0x7a, -0x80, 0x85, 0x89, 0x8d, 0x90, 0x92, 0x98, 0x9c, 0x9c, 0x9b, 0x97, 0x90, 0x92, 0x99, 0x97, 0x8f, -0x89, 0x83, 0x7c, 0x77, 0x73, 0x6d, 0x68, 0x67, 0x6b, 0x71, 0x78, 0x7d, 0x83, 0x88, 0x87, 0x85, -0x83, 0x83, 0x84, 0x83, 0x83, 0x84, 0x89, 0x90, 0x94, 0x90, 0x8c, 0x93, 0x9b, 0x97, 0x94, 0x93, -0x92, 0x92, 0x92, 0x91, 0x8d, 0x8d, 0x8e, 0x8c, 0x87, 0x7d, 0x73, 0x6c, 0x6a, 0x6a, 0x68, 0x64, -0x5c, 0x56, 0x53, 0x56, 0x5e, 0x62, 0x64, 0x62, 0x62, 0x65, 0x6f, 0x79, 0x77, 0x74, 0x73, 0x71, -0x71, 0x72, 0x72, 0x72, 0x76, 0x79, 0x7e, 0x81, 0x81, 0x80, 0x81, 0x83, 0x83, 0x82, 0x7c, 0x77, -0x77, 0x75, 0x75, 0x77, 0x7c, 0x82, 0x83, 0x83, 0x84, 0x84, 0x81, 0x82, 0x88, 0x8a, 0x8d, 0x96, -0x97, 0x94, 0x93, 0x94, 0x97, 0x98, 0x96, 0x91, 0x90, 0x93, 0x97, 0x99, 0x97, 0x94, 0x8f, 0x8b, -0x8d, 0x90, 0x95, 0x97, 0x97, 0x95, 0x96, 0x9b, 0x9e, 0x99, 0x8e, 0x84, 0x7c, 0x7b, 0x79, 0x75, -0x72, 0x6f, 0x6c, 0x6d, 0x72, 0x75, 0x76, 0x7c, 0x84, 0x82, 0x7b, 0x77, 0x7a, 0x7c, 0x7e, 0x82, -0x85, 0x88, 0x88, 0x88, 0x89, 0x8e, 0x90, 0x8d, 0x87, 0x84, 0x85, 0x84, 0x82, 0x82, 0x7e, 0x79, -0x76, 0x74, 0x73, 0x6f, 0x6a, 0x66, 0x6a, 0x70, 0x71, 0x6b, 0x64, 0x5e, 0x5c, 0x5d, 0x64, 0x6e, -0x76, 0x79, 0x7b, 0x79, 0x7c, 0x85, 0x8b, 0x88, 0x80, 0x7c, 0x80, 0x85, 0x8a, 0x8d, 0x8f, 0x8f, -0x8c, 0x8a, 0x8d, 0x91, 0x90, 0x8f, 0x8a, 0x84, 0x81, 0x7b, 0x76, 0x74, 0x72, 0x6f, 0x71, 0x75, -0x77, 0x7a, 0x7c, 0x7d, 0x80, 0x80, 0x7a, 0x7b, 0x82, 0x86, 0x87, 0x82, 0x7e, 0x80, 0x84, 0x85, -0x84, 0x80, 0x7b, 0x7d, 0x85, 0x89, 0x89, 0x86, 0x82, 0x7c, 0x79, 0x7d, 0x84, 0x88, 0x8a, 0x87, -0x86, 0x8b, 0x8d, 0x8b, 0x85, 0x7c, 0x72, 0x66, 0x62, 0x64, 0x67, 0x69, 0x6a, 0x69, 0x69, 0x6a, -0x6c, 0x71, 0x78, 0x7b, 0x75, 0x6d, 0x70, 0x78, 0x79, 0x76, 0x72, 0x6e, 0x70, 0x79, 0x7e, 0x7e, -0x7e, 0x84, 0x85, 0x83, 0x86, 0x8b, 0x8b, 0x8b, 0x8d, 0x90, 0x8f, 0x8c, 0x8d, 0x8d, 0x8a, 0x86, -0x83, 0x83, 0x81, 0x7a, 0x72, 0x6c, 0x67, 0x62, 0x5e, 0x5f, 0x66, 0x6e, 0x72, 0x70, 0x70, 0x7a, -0x83, 0x81, 0x79, 0x78, 0x7a, 0x7c, 0x83, 0x8c, 0x92, 0x8e, 0x88, 0x87, 0x8a, 0x8f, 0x96, 0x98, -0x92, 0x8f, 0x8b, 0x85, 0x87, 0x8d, 0x8f, 0x91, 0x93, 0x94, 0x96, 0x97, 0x98, 0x9c, 0xa0, 0x9f, -0x9c, 0x9b, 0x9b, 0x9c, 0x9d, 0x98, 0x90, 0x8a, 0x85, 0x82, 0x83, 0x7e, 0x7d, 0x82, 0x82, 0x81, -0x7e, 0x76, 0x6a, 0x66, 0x6a, 0x72, 0x78, 0x7e, 0x82, 0x80, 0x78, 0x73, 0x74, 0x77, 0x76, 0x76, -0x73, 0x70, 0x6e, 0x6d, 0x72, 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x7c, 0x7c, 0x78, 0x73, -0x6f, 0x71, 0x78, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x82, 0x81, 0x83, 0x8a, 0x8e, -0x8a, 0x82, 0x7c, 0x7a, 0x7a, 0x79, 0x7c, 0x81, 0x83, 0x7d, 0x75, 0x6f, 0x6a, 0x66, 0x66, 0x67, -0x68, 0x6e, 0x74, 0x7c, 0x87, 0x8d, 0x91, 0x90, 0x8e, 0x8f, 0x92, 0x92, 0x90, 0x92, 0x92, 0x93, -0x93, 0x95, 0x96, 0x90, 0x8a, 0x87, 0x86, 0x86, 0x86, 0x80, 0x76, 0x74, 0x76, 0x78, 0x75, 0x71, -0x74, 0x74, 0x71, 0x6e, 0x6c, 0x6b, 0x6b, 0x6d, 0x75, 0x76, 0x76, 0x76, 0x74, 0x76, 0x7c, 0x7e, -0x7c, 0x7a, 0x7b, 0x82, 0x8a, 0x8d, 0x89, 0x85, 0x83, 0x85, 0x86, 0x81, 0x7b, 0x78, 0x79, 0x80, -0x8a, 0x93, 0x96, 0x91, 0x8d, 0x8f, 0x91, 0x8e, 0x86, 0x85, 0x87, 0x84, 0x7e, 0x79, 0x77, 0x77, -0x73, 0x70, 0x70, 0x71, 0x70, 0x6e, 0x70, 0x77, 0x80, 0x7e, 0x76, 0x72, 0x71, 0x72, 0x75, 0x7a, -0x7d, 0x7e, 0x7a, 0x7a, 0x81, 0x85, 0x85, 0x85, 0x8b, 0x91, 0x94, 0x93, 0x90, 0x8d, 0x8b, 0x8a, -0x8b, 0x8d, 0x8d, 0x8a, 0x82, 0x79, 0x71, 0x6a, 0x66, 0x61, 0x5d, 0x5b, 0x5c, 0x63, 0x69, 0x6e, -0x70, 0x6e, 0x69, 0x6a, 0x6d, 0x6f, 0x75, 0x7b, 0x85, 0x8c, 0x8a, 0x85, 0x82, 0x84, 0x82, 0x83, -0x8a, 0x92, 0x97, 0x9a, 0x9d, 0x9c, 0x97, 0x8f, 0x8b, 0x88, 0x85, 0x89, 0x8d, 0x8d, 0x87, 0x82, -0x7d, 0x81, 0x88, 0x87, 0x86, 0x8c, 0x91, 0x90, 0x8d, 0x8b, 0x89, 0x87, 0x89, 0x8b, 0x89, 0x88, -0x83, 0x7a, 0x71, 0x6c, 0x69, 0x65, 0x62, 0x62, 0x64, 0x69, 0x71, 0x77, 0x7c, 0x7c, 0x79, 0x76, -0x76, 0x7a, 0x7e, 0x85, 0x8e, 0x90, 0x87, 0x7b, 0x74, 0x70, 0x73, 0x7c, 0x7e, 0x7e, 0x7c, 0x7a, -0x77, 0x76, 0x7a, 0x7b, 0x7c, 0x7c, 0x7a, 0x7a, 0x7d, 0x81, 0x83, 0x88, 0x8c, 0x8a, 0x8b, 0x8e, -0x8e, 0x8d, 0x90, 0x94, 0x95, 0x93, 0x92, 0x91, 0x8e, 0x8f, 0x93, 0x92, 0x92, 0x8e, 0x88, 0x7e, -0x76, 0x72, 0x72, 0x76, 0x77, 0x77, 0x77, 0x78, 0x79, 0x7c, 0x83, 0x81, 0x7a, 0x7c, 0x80, 0x80, -0x80, 0x84, 0x88, 0x89, 0x89, 0x8c, 0x8d, 0x8e, 0x93, 0x92, 0x8c, 0x8a, 0x88, 0x85, 0x85, 0x85, -0x84, 0x7c, 0x71, 0x69, 0x68, 0x6b, 0x6c, 0x6d, 0x6f, 0x6e, 0x6c, 0x6c, 0x6d, 0x6d, 0x72, 0x74, -0x75, 0x76, 0x79, 0x80, 0x84, 0x83, 0x83, 0x85, 0x85, 0x85, 0x87, 0x83, 0x7d, 0x7a, 0x7c, 0x80, -0x7e, 0x7c, 0x7c, 0x80, 0x85, 0x8d, 0x93, 0x96, 0x95, 0x91, 0x8c, 0x89, 0x89, 0x8d, 0x8f, 0x8e, -0x85, 0x77, 0x6b, 0x62, 0x5a, 0x5a, 0x59, 0x57, 0x58, 0x5f, 0x65, 0x6a, 0x6f, 0x71, 0x70, 0x69, -0x65, 0x69, 0x6f, 0x75, 0x7b, 0x80, 0x80, 0x7b, 0x7a, 0x7c, 0x7d, 0x7c, 0x7e, 0x82, 0x87, 0x8d, -0x90, 0x90, 0x8c, 0x8c, 0x8e, 0x8d, 0x8c, 0x8f, 0x8c, 0x83, 0x78, 0x73, 0x70, 0x69, 0x63, 0x61, -0x61, 0x5f, 0x5e, 0x60, 0x62, 0x62, 0x5f, 0x5d, 0x5e, 0x61, 0x69, 0x75, 0x81, 0x84, 0x83, 0x7e, -0x80, 0x89, 0x93, 0x98, 0x96, 0x94, 0x9b, 0x9e, 0x9e, 0xa2, 0xa6, 0xa2, 0x9a, 0x95, 0x94, 0x9a, -0x9e, 0x9c, 0x9a, 0x95, 0x91, 0x90, 0x92, 0x91, 0x92, 0x98, 0x9b, 0x9e, 0x9e, 0xa0, 0xa2, 0xa0, -0xa2, 0xa1, 0x9b, 0x95, 0x92, 0x91, 0x88, 0x7d, 0x7b, 0x7d, 0x7d, 0x7e, 0x7d, 0x76, 0x72, 0x71, -0x71, 0x76, 0x7e, 0x82, 0x7e, 0x7a, 0x78, 0x7a, 0x7e, 0x80, 0x7c, 0x74, 0x6b, 0x67, 0x6b, 0x72, -0x71, 0x6f, 0x6d, 0x6c, 0x6e, 0x70, 0x6f, 0x71, 0x74, 0x70, 0x6c, 0x6d, 0x71, 0x75, 0x77, 0x7b, -0x7e, 0x82, 0x85, 0x87, 0x88, 0x86, 0x82, 0x7e, 0x7d, 0x80, 0x86, 0x8d, 0x91, 0x8a, 0x83, 0x84, -0x81, 0x7c, 0x7c, 0x7c, 0x76, 0x71, 0x6e, 0x6e, 0x6e, 0x6d, 0x6e, 0x6d, 0x6d, 0x6f, 0x73, 0x7c, -0x81, 0x82, 0x7d, 0x7c, 0x82, 0x8a, 0x93, 0x94, 0x8e, 0x8b, 0x8c, 0x90, 0x97, 0x9c, 0x99, 0x94, -0x90, 0x8d, 0x90, 0x91, 0x8a, 0x7d, 0x70, 0x5e, 0x5c, 0x6d, 0x71, 0x71, 0x72, 0x6f, 0x64, 0x60, -0x61, 0x5f, 0x5e, 0x61, 0x69, 0x70, 0x6f, 0x6d, 0x71, 0x79, 0x7c, 0x79, 0x77, 0x77, 0x79, 0x80, -0x82, 0x80, 0x80, 0x7e, 0x81, 0x88, 0x8d, 0x8d, 0x8a, 0x8b, 0x91, 0x9a, 0xa1, 0xa4, 0x9d, 0x96, -0x97, 0x99, 0x93, 0x95, 0x96, 0x8b, 0x7a, 0x6f, 0x6a, 0x67, 0x6b, 0x6f, 0x68, 0x65, 0x67, 0x64, -0x60, 0x62, 0x61, 0x5e, 0x60, 0x65, 0x6a, 0x71, 0x77, 0x7a, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x87, -0x8c, 0x88, 0x85, 0x87, 0x8a, 0x8d, 0x92, 0x97, 0x95, 0x8f, 0x86, 0x84, 0x86, 0x83, 0x8b, 0x89, -0x7d, 0x77, 0x74, 0x71, 0x70, 0x6b, 0x6a, 0x69, 0x67, 0x6a, 0x73, 0x7b, 0x76, 0x7a, 0x8b, 0x93, -0x97, 0x97, 0x95, 0x93, 0x97, 0xa1, 0xaa, 0xaf, 0xab, 0x9f, 0x9a, 0x9a, 0x99, 0x99, 0x99, 0x99, -0x97, 0x98, 0x98, 0x94, 0x90, 0x90, 0x93, 0x8e, 0x93, 0x94, 0x8e, 0x8a, 0x88, 0x8f, 0x91, 0x8f, -0x8b, 0x84, 0x81, 0x80, 0x80, 0x79, 0x6f, 0x64, 0x5c, 0x5a, 0x5b, 0x57, 0x55, 0x5d, 0x5a, 0x57, -0x66, 0x6b, 0x66, 0x64, 0x70, 0x7e, 0x89, 0x90, 0x90, 0x8e, 0x8e, 0x8c, 0x84, 0x86, 0x83, 0x75, -0x6d, 0x67, 0x63, 0x6d, 0x70, 0x71, 0x74, 0x75, 0x73, 0x71, 0x78, 0x7e, 0x7e, 0x74, 0x6e, 0x71, -0x70, 0x6f, 0x6c, 0x6e, 0x74, 0x77, 0x7a, 0x80, 0x85, 0x86, 0x90, 0x8f, 0x87, 0x8f, 0x90, 0x8b, -0x89, 0x85, 0x8c, 0x8e, 0x8b, 0x8d, 0x94, 0x94, 0x89, 0x7d, 0x73, 0x6b, 0x66, 0x66, 0x60, 0x65, -0x71, 0x75, 0x72, 0x76, 0x87, 0x8a, 0x88, 0x8f, 0x92, 0x9a, 0xa0, 0x91, 0x91, 0x95, 0x90, 0x92, -0x9d, 0xa2, 0x9e, 0x9a, 0x95, 0x94, 0x92, 0x8d, 0x8c, 0x84, 0x77, 0x73, 0x6f, 0x62, 0x61, 0x6d, -0x70, 0x6b, 0x6f, 0x6d, 0x6c, 0x7a, 0x87, 0x9b, 0xa0, 0xa0, 0x92, 0x81, 0x80, 0x7e, 0x7e, 0x7c, -0x78, 0x76, 0x76, 0x74, 0x78, 0x7d, 0x7b, 0x7b, 0x7c, 0x7b, 0x7d, 0x86, 0x83, 0x74, 0x7d, 0x8d, -0x92, 0x95, 0x99, 0x96, 0x92, 0x8c, 0x81, 0x76, 0x7a, 0x73, 0x60, 0x5c, 0x59, 0x4f, 0x4e, 0x50, -0x51, 0x5a, 0x54, 0x50, 0x54, 0x57, 0x60, 0x6e, 0x6f, 0x72, 0x72, 0x6e, 0x62, 0x66, 0x73, 0x72, -0x74, 0x84, 0x95, 0x9a, 0x9a, 0x95, 0x92, 0x9a, 0x9a, 0x88, 0x8a, 0x88, 0x87, 0x82, 0x7a, 0x7e, -0x8d, 0x9c, 0xa4, 0xa0, 0x8e, 0x79, 0x84, 0x8d, 0x87, 0x7a, 0x70, 0x6a, 0x62, 0x5f, 0x5d, 0x5d, -0x65, 0x6b, 0x73, 0x7c, 0x7b, 0x71, 0x72, 0x75, 0x72, 0x89, 0x9d, 0xa0, 0x94, 0x8e, 0x92, 0x96, -0xa9, 0xb8, 0xae, 0xa2, 0x98, 0x8e, 0x8c, 0x8a, 0x8a, 0x8d, 0x8d, 0x8b, 0x83, 0x71, 0x85, 0x9e, -0xa7, 0xaa, 0xa8, 0x9a, 0x93, 0x8c, 0x85, 0x83, 0x80, 0x85, 0x86, 0x7a, 0x70, 0x71, 0x6f, 0x6d, -0x70, 0x69, 0x6b, 0x70, 0x6f, 0x6c, 0x6a, 0x66, 0x75, 0x81, 0x8f, 0x97, 0x89, 0x85, 0x84, 0x80, -0x77, 0x77, 0x80, 0x7d, 0x6f, 0x6b, 0x64, 0x60, 0x75, 0x81, 0x7c, 0x71, 0x67, 0x68, 0x7a, 0x80, -0x79, 0x81, 0x85, 0x80, 0x79, 0x7e, 0x85, 0x7e, 0x80, 0x75, 0x6c, 0x76, 0x86, 0x90, 0x96, 0x98, -0x91, 0x95, 0x9a, 0x9e, 0x9b, 0x8b, 0x75, 0x8a, 0x99, 0x8c, 0x82, 0x85, 0x91, 0x8d, 0x7c, 0x6a, -0x61, 0x74, 0x7e, 0x78, 0x6f, 0x68, 0x67, 0x74, 0x83, 0x81, 0x8b, 0x9d, 0xa0, 0x94, 0x90, 0x8f, -0x93, 0x8f, 0x87, 0x88, 0x8a, 0x83, 0x90, 0x9d, 0x8a, 0x7e, 0x7c, 0x8c, 0x9c, 0x89, 0x73, 0x71, -0x75, 0x73, 0x64, 0x61, 0x68, 0x63, 0x65, 0x67, 0x5b, 0x72, 0x93, 0x93, 0x82, 0x78, 0x75, 0x5e, -0x4e, 0x58, 0x69, 0x6c, 0x66, 0x70, 0x71, 0x65, 0x6c, 0x79, 0x82, 0x87, 0x81, 0x77, 0x73, 0x7a, -0x82, 0x81, 0x80, 0x8b, 0x97, 0x98, 0x8d, 0x86, 0x9b, 0xa4, 0x92, 0x86, 0x8e, 0x83, 0x6b, 0x5b, -0x4c, 0x51, 0x66, 0x66, 0x63, 0x5e, 0x51, 0x4f, 0x61, 0x6c, 0x75, 0x7e, 0x79, 0x6f, 0x67, 0x66, -0x64, 0x5d, 0x5c, 0x6b, 0x76, 0x75, 0x75, 0x8b, 0x9d, 0x9e, 0x9e, 0x99, 0x88, 0x84, 0x8c, 0x8f, -0x93, 0x9e, 0xa2, 0x9c, 0x97, 0x96, 0x95, 0x92, 0x92, 0x92, 0x8c, 0x93, 0x94, 0x90, 0x89, 0x7a, -0x6f, 0x66, 0x66, 0x66, 0x6d, 0x73, 0x7e, 0x88, 0x86, 0x90, 0x93, 0x88, 0x85, 0x83, 0x83, 0x87, -0x8a, 0x91, 0x93, 0x94, 0x96, 0x95, 0xa1, 0xae, 0xa9, 0xa1, 0x9f, 0xa1, 0x9e, 0x95, 0x95, 0x92, -0x87, 0x84, 0x8b, 0x8e, 0x98, 0xa5, 0xaa, 0x9e, 0x94, 0x8b, 0x79, 0x6d, 0x68, 0x6e, 0x83, 0x8c, -0x78, 0x69, 0x70, 0x6f, 0x6e, 0x6c, 0x64, 0x57, 0x56, 0x6f, 0x8a, 0x8b, 0x81, 0x7c, 0x7a, 0x7c, -0x6e, 0x62, 0x6c, 0x76, 0x7c, 0x82, 0x8a, 0x8c, 0x75, 0x67, 0x61, 0x63, 0x6d, 0x7c, 0x85, 0x75, -0x67, 0x6d, 0x70, 0x71, 0x71, 0x72, 0x69, 0x6f, 0x7b, 0x84, 0x7d, 0x75, 0x7c, 0x84, 0x83, 0x79, -0x70, 0x70, 0x81, 0x8e, 0x93, 0x94, 0x82, 0x6e, 0x6d, 0x83, 0x98, 0xa5, 0xa7, 0x9a, 0x85, 0x84, -0x85, 0x74, 0x67, 0x60, 0x60, 0x6f, 0x84, 0x8a, 0x85, 0x7a, 0x79, 0x7d, 0x7c, 0x79, 0x78, 0x6f, -0x73, 0x87, 0x9a, 0x9d, 0x99, 0x92, 0x83, 0x7d, 0x7e, 0x7c, 0x87, 0x92, 0x8c, 0x86, 0x8d, 0x91, -0x99, 0x9b, 0x88, 0x7b, 0x71, 0x72, 0x6c, 0x5f, 0x65, 0x73, 0x87, 0x8b, 0x81, 0x77, 0x80, 0x8b, -0x85, 0x7d, 0x81, 0x73, 0x67, 0x6a, 0x7a, 0x81, 0x7a, 0x75, 0x83, 0x81, 0x70, 0x74, 0x7c, 0x75, -0x6f, 0x70, 0x74, 0x79, 0x7b, 0x77, 0x78, 0x81, 0x89, 0x98, 0x96, 0x92, 0x90, 0x88, 0x81, 0x78, -0x7d, 0x87, 0x73, 0x5d, 0x55, 0x56, 0x57, 0x5c, 0x68, 0x6a, 0x62, 0x6a, 0x75, 0x79, 0x74, 0x70, -0x65, 0x52, 0x48, 0x4d, 0x5c, 0x66, 0x6d, 0x88, 0x99, 0x8f, 0x88, 0x96, 0x9c, 0x9e, 0x9f, 0x92, -0x8d, 0x8b, 0x9b, 0xac, 0xaa, 0xa9, 0x9f, 0x96, 0x89, 0x86, 0x84, 0x94, 0xa1, 0x9a, 0x8d, 0x7d, -0x87, 0xa2, 0x9e, 0x91, 0x93, 0x97, 0x94, 0x8c, 0x7b, 0x74, 0x71, 0x6c, 0x81, 0x80, 0x80, 0x79, -0x64, 0x5e, 0x61, 0x6a, 0x78, 0x80, 0x79, 0x78, 0x87, 0x81, 0x88, 0x99, 0x99, 0x93, 0x8d, 0x85, -0x72, 0x69, 0x6e, 0x7b, 0x8e, 0x98, 0x92, 0x7e, 0x76, 0x81, 0x96, 0xa1, 0x95, 0x88, 0x7d, 0x6f, -0x68, 0x76, 0x7e, 0x75, 0x6a, 0x62, 0x68, 0x6d, 0x66, 0x5d, 0x50, 0x50, 0x61, 0x6a, 0x6c, 0x62, -0x5b, 0x5a, 0x64, 0x79, 0x7b, 0x74, 0x7d, 0x7b, 0x74, 0x80, 0x86, 0x85, 0x83, 0x85, 0x8d, 0x86, -0x86, 0x8c, 0x9d, 0x9f, 0x9b, 0x9f, 0x8e, 0x83, 0x88, 0x89, 0x81, 0x76, 0x80, 0x87, 0x84, 0x82, -0x8d, 0x9a, 0x9a, 0x8e, 0x8d, 0x9b, 0x9c, 0xa3, 0xa5, 0x93, 0x8b, 0x85, 0x92, 0xa1, 0xaa, 0xa3, -0x9c, 0x98, 0x8a, 0x8a, 0x8d, 0x89, 0x8c, 0x93, 0x86, 0x69, 0x62, 0x7e, 0x8d, 0x8b, 0x8c, 0x91, -0x91, 0x8c, 0x89, 0x85, 0x82, 0x84, 0x8e, 0x88, 0x74, 0x73, 0x76, 0x6a, 0x73, 0x8e, 0x95, 0x93, -0x8f, 0x89, 0x89, 0x83, 0x80, 0x8c, 0x86, 0x7b, 0x71, 0x65, 0x57, 0x4a, 0x4e, 0x5d, 0x72, 0x74, -0x64, 0x53, 0x4c, 0x4a, 0x56, 0x69, 0x6c, 0x69, 0x68, 0x5f, 0x57, 0x5b, 0x6e, 0x84, 0x86, 0x83, -0x89, 0x8a, 0x79, 0x6e, 0x6e, 0x6a, 0x6b, 0x6c, 0x70, 0x72, 0x6a, 0x6b, 0x81, 0xac, 0xb8, 0xa4, -0x9d, 0x93, 0x89, 0x82, 0x72, 0x6f, 0x7c, 0x85, 0x86, 0x82, 0x75, 0x72, 0x6c, 0x6c, 0x86, 0x90, -0x87, 0x75, 0x65, 0x61, 0x5d, 0x5e, 0x65, 0x69, 0x6b, 0x6a, 0x64, 0x56, 0x54, 0x68, 0x76, 0x75, -0x7c, 0x8c, 0x90, 0x91, 0x93, 0x8f, 0x9f, 0xa9, 0xa2, 0xa1, 0xa0, 0x9e, 0x94, 0x9f, 0xab, 0xa8, -0xa1, 0x94, 0x85, 0x78, 0x6f, 0x64, 0x6b, 0x77, 0x7d, 0x7e, 0x7a, 0x73, 0x62, 0x58, 0x5d, 0x65, -0x6d, 0x70, 0x70, 0x72, 0x66, 0x5d, 0x6b, 0x78, 0x7b, 0x86, 0x91, 0x92, 0x92, 0x95, 0xa1, 0xb0, -0xa6, 0x9d, 0x98, 0x93, 0x8e, 0x88, 0x8c, 0x93, 0x92, 0x8b, 0x82, 0x7c, 0x82, 0x8d, 0x94, 0x93, -0x9a, 0x99, 0x93, 0x8f, 0x87, 0x84, 0x86, 0x8c, 0x8d, 0x8c, 0x89, 0x89, 0x84, 0x72, 0x61, 0x59, -0x61, 0x69, 0x6e, 0x78, 0x7c, 0x7d, 0x86, 0x96, 0x9c, 0x90, 0x86, 0x7d, 0x7e, 0x85, 0x8c, 0x94, -0x96, 0x92, 0x89, 0x83, 0x7b, 0x82, 0x91, 0x8f, 0x8c, 0x92, 0x8e, 0x8a, 0x7d, 0x74, 0x7a, 0x83, -0x82, 0x7c, 0x73, 0x6e, 0x6d, 0x6d, 0x6b, 0x60, 0x53, 0x5d, 0x6a, 0x73, 0x7c, 0x88, 0x8d, 0x8f, -0x98, 0x94, 0x8c, 0x8a, 0x8a, 0x8f, 0x8d, 0x8d, 0x92, 0x94, 0x8e, 0x81, 0x73, 0x6d, 0x73, 0x7b, -0x78, 0x6f, 0x74, 0x72, 0x6f, 0x6e, 0x6e, 0x6b, 0x6e, 0x73, 0x70, 0x6e, 0x6f, 0x72, 0x77, 0x77, -0x72, 0x69, 0x68, 0x75, 0x80, 0x87, 0x92, 0x98, 0x9b, 0xa3, 0x93, 0x81, 0x7b, 0x7e, 0x84, 0x76, -0x6f, 0x6f, 0x70, 0x71, 0x6e, 0x62, 0x5f, 0x67, 0x64, 0x63, 0x66, 0x6c, 0x6a, 0x65, 0x6b, 0x73, -0x78, 0x80, 0x82, 0x85, 0x86, 0x87, 0x8e, 0x89, 0x78, 0x69, 0x5c, 0x58, 0x68, 0x7a, 0x84, 0x89, -0x8c, 0x96, 0x9e, 0x8f, 0x82, 0x7c, 0x84, 0x88, 0x85, 0x89, 0x8d, 0x8e, 0x92, 0x95, 0x93, 0x8f, -0x8b, 0x7c, 0x6c, 0x6d, 0x73, 0x6c, 0x66, 0x62, 0x64, 0x67, 0x67, 0x65, 0x64, 0x62, 0x68, 0x75, -0x7e, 0x7a, 0x72, 0x6d, 0x70, 0x7a, 0x8d, 0x9b, 0x9f, 0xa0, 0xa5, 0xa5, 0x9f, 0xa2, 0xa6, 0xa7, -0xa6, 0xa3, 0xa4, 0xa7, 0xa6, 0xa1, 0x9f, 0x9b, 0x99, 0x96, 0x8b, 0x7e, 0x79, 0x79, 0x7d, 0x7b, -0x74, 0x6d, 0x6a, 0x6a, 0x6a, 0x6a, 0x6e, 0x76, 0x7d, 0x83, 0x83, 0x7e, 0x78, 0x76, 0x79, 0x83, -0x8c, 0x8f, 0x8a, 0x85, 0x80, 0x7c, 0x7e, 0x85, 0x87, 0x83, 0x80, 0x83, 0x89, 0x8d, 0x8c, 0x8d, -0x8c, 0x8d, 0x91, 0x8e, 0x8a, 0x87, 0x87, 0x8c, 0x91, 0x91, 0x91, 0x90, 0x8a, 0x85, 0x81, 0x81, -0x84, 0x82, 0x78, 0x6e, 0x65, 0x61, 0x63, 0x68, 0x6a, 0x6c, 0x6f, 0x72, 0x6b, 0x5f, 0x5c, 0x61, -0x6a, 0x6d, 0x6a, 0x6a, 0x70, 0x75, 0x7a, 0x7d, 0x7e, 0x7d, 0x7c, 0x78, 0x75, 0x76, 0x7b, 0x81, -0x7c, 0x77, 0x72, 0x6f, 0x73, 0x72, 0x6e, 0x6a, 0x6e, 0x79, 0x83, 0x81, 0x78, 0x73, 0x72, 0x74, -0x79, 0x7e, 0x83, 0x83, 0x80, 0x80, 0x84, 0x8a, 0x91, 0x96, 0x98, 0x96, 0x93, 0x93, 0x94, 0x93, -0x90, 0x8b, 0x84, 0x80, 0x7b, 0x79, 0x78, 0x7e, 0x84, 0x83, 0x7b, 0x77, 0x78, 0x7d, 0x83, 0x84, -0x80, 0x82, 0x8c, 0x93, 0x9a, 0x9f, 0x9e, 0x9e, 0x9f, 0xa4, 0xab, 0xa9, 0xa3, 0x9a, 0x90, 0x87, -0x85, 0x83, 0x7d, 0x77, 0x6f, 0x6c, 0x70, 0x72, 0x6f, 0x6b, 0x66, 0x64, 0x65, 0x63, 0x62, 0x66, -0x70, 0x78, 0x76, 0x73, 0x77, 0x7d, 0x86, 0x8a, 0x85, 0x82, 0x85, 0x88, 0x89, 0x88, 0x84, 0x82, -0x7c, 0x79, 0x79, 0x7e, 0x88, 0x8f, 0x8f, 0x88, 0x83, 0x84, 0x88, 0x8c, 0x8c, 0x87, 0x84, 0x84, -0x86, 0x8d, 0x8d, 0x87, 0x7d, 0x76, 0x73, 0x71, 0x71, 0x74, 0x71, 0x6c, 0x65, 0x61, 0x61, 0x60, -0x60, 0x5e, 0x5c, 0x60, 0x65, 0x67, 0x69, 0x6a, 0x6a, 0x6b, 0x6d, 0x6f, 0x78, 0x86, 0x8f, 0x92, -0x91, 0x8e, 0x8d, 0x94, 0x9e, 0xa5, 0xa7, 0xa7, 0xa5, 0xa4, 0xa1, 0x9b, 0x92, 0x88, 0x7d, 0x74, -0x6e, 0x70, 0x75, 0x71, 0x65, 0x5d, 0x5b, 0x5d, 0x5d, 0x5b, 0x57, 0x58, 0x5f, 0x66, 0x6a, 0x6c, -0x70, 0x73, 0x73, 0x6f, 0x6d, 0x74, 0x7e, 0x82, 0x80, 0x7c, 0x7a, 0x7d, 0x84, 0x8d, 0x93, 0x95, -0x97, 0x93, 0x8c, 0x8b, 0x8e, 0x94, 0x97, 0x96, 0x98, 0x98, 0x97, 0x97, 0x94, 0x8b, 0x82, 0x7e, -0x7a, 0x77, 0x75, 0x72, 0x72, 0x6f, 0x70, 0x75, 0x76, 0x72, 0x6d, 0x6e, 0x6c, 0x6b, 0x6f, 0x73, -0x75, 0x73, 0x6f, 0x6f, 0x71, 0x75, 0x7a, 0x81, 0x88, 0x8a, 0x8a, 0x8a, 0x8c, 0x92, 0x97, 0x95, -0x93, 0x92, 0x8d, 0x8e, 0x8e, 0x93, 0x99, 0x9a, 0x9a, 0x9a, 0x9b, 0x96, 0x92, 0x94, 0x93, 0x93, -0x92, 0x90, 0x92, 0x93, 0x93, 0x8f, 0x8f, 0x95, 0x9c, 0x9c, 0x96, 0x92, 0x94, 0x98, 0x90, 0x8a, -0x8e, 0x92, 0x93, 0x91, 0x92, 0x95, 0x96, 0x93, 0x90, 0x90, 0x8c, 0x86, 0x84, 0x84, 0x86, 0x84, -0x7c, 0x79, 0x74, 0x6c, 0x67, 0x68, 0x6e, 0x75, 0x78, 0x75, 0x70, 0x6d, 0x69, 0x64, 0x63, 0x66, -0x68, 0x67, 0x67, 0x66, 0x6b, 0x6f, 0x71, 0x73, 0x74, 0x73, 0x75, 0x75, 0x72, 0x6f, 0x6a, 0x63, -0x5d, 0x5d, 0x5f, 0x60, 0x62, 0x66, 0x69, 0x6a, 0x6c, 0x6f, 0x71, 0x71, 0x71, 0x73, 0x78, 0x79, -0x79, 0x7b, 0x76, 0x71, 0x72, 0x73, 0x77, 0x79, 0x79, 0x7c, 0x7e, 0x7c, 0x7c, 0x81, 0x83, 0x83, -0x80, 0x81, 0x84, 0x8a, 0x8d, 0x8b, 0x86, 0x85, 0x87, 0x81, 0x79, 0x74, 0x73, 0x72, 0x6a, 0x65, -0x65, 0x63, 0x64, 0x6b, 0x70, 0x71, 0x6d, 0x6d, 0x70, 0x74, 0x79, 0x7d, 0x80, 0x7d, 0x7e, 0x84, -0x88, 0x89, 0x89, 0x85, 0x81, 0x85, 0x90, 0x99, 0x99, 0x97, 0x96, 0x97, 0x96, 0x93, 0x94, 0x96, -0x94, 0x92, 0x95, 0x99, 0x98, 0x97, 0x94, 0x8e, 0x88, 0x87, 0x88, 0x84, 0x7a, 0x78, 0x78, 0x72, -0x70, 0x74, 0x76, 0x73, 0x74, 0x78, 0x77, 0x73, 0x77, 0x7c, 0x7e, 0x7e, 0x80, 0x87, 0x91, 0x9b, -0xa4, 0xa5, 0xa1, 0x99, 0x94, 0x93, 0x96, 0x98, 0x99, 0x97, 0x90, 0x84, 0x7e, 0x81, 0x84, 0x85, -0x7d, 0x73, 0x6d, 0x72, 0x7b, 0x82, 0x83, 0x82, 0x81, 0x82, 0x81, 0x85, 0x8a, 0x8e, 0x8e, 0x8b, -0x88, 0x83, 0x82, 0x81, 0x7c, 0x79, 0x76, 0x78, 0x7b, 0x78, 0x75, 0x74, 0x79, 0x80, 0x86, 0x8b, -0x8b, 0x88, 0x85, 0x80, 0x7c, 0x82, 0x88, 0x8e, 0x8e, 0x86, 0x7d, 0x7a, 0x79, 0x7a, 0x7e, 0x7d, -0x77, 0x70, 0x6d, 0x6e, 0x6f, 0x74, 0x78, 0x75, 0x6c, 0x68, 0x6e, 0x77, 0x7e, 0x7d, 0x78, 0x75, -0x7b, 0x86, 0x88, 0x89, 0x8c, 0x89, 0x83, 0x7e, 0x80, 0x84, 0x84, 0x81, 0x81, 0x80, 0x7d, 0x81, -0x84, 0x80, 0x7a, 0x73, 0x6c, 0x6b, 0x6d, 0x71, 0x78, 0x7c, 0x7c, 0x78, 0x71, 0x6b, 0x6e, 0x79, -0x7b, 0x75, 0x74, 0x7b, 0x82, 0x84, 0x83, 0x81, 0x7e, 0x80, 0x87, 0x90, 0x94, 0x8b, 0x7e, 0x75, -0x75, 0x7d, 0x83, 0x82, 0x7c, 0x72, 0x6a, 0x68, 0x69, 0x6d, 0x6c, 0x64, 0x5d, 0x5f, 0x64, 0x67, -0x6d, 0x74, 0x78, 0x75, 0x6f, 0x6d, 0x6f, 0x76, 0x81, 0x88, 0x8c, 0x88, 0x82, 0x80, 0x86, 0x8e, -0x93, 0x94, 0x96, 0x9d, 0xa1, 0x9f, 0x9a, 0x94, 0x8d, 0x8a, 0x8a, 0x8d, 0x94, 0x93, 0x86, 0x79, -0x7a, 0x7e, 0x7d, 0x7a, 0x73, 0x69, 0x61, 0x63, 0x6e, 0x75, 0x77, 0x75, 0x76, 0x7c, 0x82, 0x85, -0x8b, 0x92, 0x92, 0x8b, 0x82, 0x7a, 0x7a, 0x7e, 0x84, 0x89, 0x8e, 0x92, 0x91, 0x8c, 0x8d, 0x91, -0x91, 0x8d, 0x8c, 0x8e, 0x90, 0x94, 0x9d, 0xa4, 0xa1, 0x99, 0x92, 0x90, 0x8f, 0x8a, 0x82, 0x78, -0x73, 0x72, 0x74, 0x73, 0x6e, 0x67, 0x60, 0x5c, 0x5f, 0x63, 0x65, 0x65, 0x6a, 0x74, 0x7b, 0x7c, -0x81, 0x87, 0x85, 0x7e, 0x7d, 0x84, 0x8c, 0x8f, 0x8d, 0x89, 0x8a, 0x8f, 0x8e, 0x8c, 0x8c, 0x89, -0x83, 0x80, 0x7e, 0x7b, 0x78, 0x76, 0x74, 0x6e, 0x6a, 0x68, 0x68, 0x6f, 0x7a, 0x81, 0x7b, 0x71, -0x66, 0x60, 0x5f, 0x67, 0x72, 0x73, 0x6c, 0x61, 0x5e, 0x64, 0x68, 0x6c, 0x74, 0x7e, 0x83, 0x7d, -0x7c, 0x82, 0x82, 0x82, 0x87, 0x8c, 0x8e, 0x8f, 0x90, 0x90, 0x92, 0x96, 0x97, 0x93, 0x88, 0x7b, -0x74, 0x76, 0x86, 0x94, 0x98, 0x96, 0x93, 0x91, 0x8e, 0x88, 0x89, 0x90, 0x96, 0x95, 0x8f, 0x87, -0x7e, 0x78, 0x7a, 0x84, 0x8a, 0x89, 0x83, 0x81, 0x89, 0x90, 0x90, 0x91, 0x93, 0x93, 0x90, 0x8d, -0x91, 0x9a, 0x9d, 0x98, 0x90, 0x8a, 0x88, 0x84, 0x7c, 0x7b, 0x80, 0x81, 0x80, 0x79, 0x70, 0x6c, -0x6c, 0x70, 0x79, 0x7d, 0x7d, 0x7b, 0x7d, 0x83, 0x84, 0x7e, 0x7d, 0x80, 0x80, 0x80, 0x82, 0x85, -0x84, 0x7e, 0x7a, 0x74, 0x6e, 0x6c, 0x6e, 0x73, 0x7d, 0x86, 0x84, 0x79, 0x74, 0x75, 0x75, 0x75, -0x74, 0x70, 0x6a, 0x63, 0x65, 0x6c, 0x71, 0x73, 0x75, 0x79, 0x77, 0x70, 0x71, 0x7a, 0x7c, 0x7b, -0x7a, 0x76, 0x72, 0x75, 0x7a, 0x81, 0x87, 0x8b, 0x89, 0x82, 0x7a, 0x7a, 0x7e, 0x82, 0x83, 0x86, -0x84, 0x7c, 0x74, 0x72, 0x78, 0x7b, 0x7d, 0x7c, 0x76, 0x6b, 0x62, 0x62, 0x6a, 0x72, 0x78, 0x77, -0x6f, 0x69, 0x6d, 0x6e, 0x71, 0x78, 0x81, 0x87, 0x83, 0x80, 0x82, 0x84, 0x84, 0x8b, 0x8d, 0x86, -0x81, 0x80, 0x87, 0x93, 0x99, 0x9a, 0x9b, 0x97, 0x8f, 0x8d, 0x91, 0x99, 0x9e, 0x9f, 0x99, 0x8e, -0x88, 0x86, 0x81, 0x7c, 0x80, 0x80, 0x7b, 0x73, 0x6c, 0x6b, 0x6c, 0x6e, 0x71, 0x74, 0x72, 0x6f, -0x6f, 0x73, 0x79, 0x80, 0x85, 0x84, 0x82, 0x80, 0x82, 0x82, 0x81, 0x82, 0x7e, 0x78, 0x72, 0x70, -0x70, 0x73, 0x78, 0x80, 0x81, 0x7a, 0x75, 0x75, 0x77, 0x75, 0x71, 0x6e, 0x6f, 0x73, 0x74, 0x77, -0x7d, 0x84, 0x88, 0x87, 0x85, 0x80, 0x7d, 0x7d, 0x7a, 0x78, 0x79, 0x7b, 0x7d, 0x85, 0x8d, 0x92, -0x95, 0x9b, 0x9d, 0x99, 0x96, 0x96, 0x9a, 0x9f, 0xa1, 0xa0, 0x9b, 0x95, 0x92, 0x95, 0x99, 0x97, -0x95, 0x97, 0x92, 0x8c, 0x89, 0x8b, 0x8a, 0x88, 0x85, 0x83, 0x81, 0x7e, 0x83, 0x8a, 0x8e, 0x8f, -0x8b, 0x7a, 0x6a, 0x62, 0x69, 0x77, 0x80, 0x83, 0x81, 0x7a, 0x79, 0x78, 0x80, 0x8e, 0x94, 0x91, -0x90, 0x8c, 0x89, 0x87, 0x86, 0x87, 0x8b, 0x91, 0x92, 0x8d, 0x87, 0x82, 0x7e, 0x7d, 0x7b, 0x78, -0x6f, 0x67, 0x68, 0x72, 0x7c, 0x7b, 0x78, 0x75, 0x70, 0x68, 0x5e, 0x5b, 0x60, 0x69, 0x70, 0x72, -0x71, 0x6e, 0x6c, 0x6a, 0x6b, 0x71, 0x72, 0x6c, 0x61, 0x5d, 0x60, 0x64, 0x68, 0x6d, 0x6f, 0x6a, -0x63, 0x63, 0x67, 0x66, 0x61, 0x5c, 0x5b, 0x5f, 0x64, 0x6b, 0x6f, 0x6c, 0x69, 0x68, 0x69, 0x6a, -0x6e, 0x72, 0x75, 0x7b, 0x82, 0x83, 0x84, 0x89, 0x8e, 0x92, 0x95, 0x99, 0x9a, 0x94, 0x93, 0x95, -0x97, 0x99, 0x95, 0x95, 0x93, 0x93, 0x98, 0x99, 0x99, 0x94, 0x92, 0x96, 0x97, 0x93, 0x8e, 0x8e, -0x8c, 0x89, 0x88, 0x85, 0x7b, 0x6f, 0x6e, 0x78, 0x83, 0x8a, 0x8b, 0x82, 0x6f, 0x64, 0x61, 0x6a, -0x70, 0x6f, 0x6f, 0x72, 0x7c, 0x83, 0x85, 0x87, 0x88, 0x85, 0x84, 0x86, 0x86, 0x85, 0x89, 0x8f, -0x92, 0x8f, 0x87, 0x7d, 0x77, 0x76, 0x77, 0x77, 0x76, 0x6d, 0x62, 0x5d, 0x60, 0x68, 0x6e, 0x70, -0x70, 0x6f, 0x6c, 0x6a, 0x65, 0x5f, 0x5c, 0x5f, 0x68, 0x74, 0x79, 0x77, 0x76, 0x7a, 0x7d, 0x7e, -0x7e, 0x80, 0x81, 0x87, 0x93, 0xa0, 0xa7, 0xac, 0xac, 0xa9, 0xa8, 0xa8, 0xaa, 0xa8, 0xa2, 0x9c, -0x9a, 0x9c, 0x9a, 0x97, 0x97, 0x97, 0x95, 0x94, 0x96, 0x93, 0x90, 0x8e, 0x90, 0x94, 0x94, 0x8e, -0x88, 0x86, 0x86, 0x88, 0x86, 0x84, 0x88, 0x8b, 0x8d, 0x91, 0x96, 0x9b, 0x9a, 0x97, 0x92, 0x8e, -0x8e, 0x8c, 0x8b, 0x8c, 0x8c, 0x8a, 0x87, 0x83, 0x7d, 0x7a, 0x79, 0x7c, 0x7e, 0x79, 0x75, 0x74, -0x73, 0x73, 0x74, 0x77, 0x75, 0x6d, 0x66, 0x63, 0x62, 0x5f, 0x5a, 0x59, 0x59, 0x5c, 0x66, 0x70, -0x71, 0x6d, 0x68, 0x65, 0x66, 0x6a, 0x6d, 0x6e, 0x74, 0x7c, 0x83, 0x86, 0x85, 0x83, 0x7e, 0x75, -0x6e, 0x6c, 0x6d, 0x6f, 0x73, 0x76, 0x78, 0x7a, 0x78, 0x76, 0x73, 0x75, 0x7e, 0x86, 0x85, 0x7e, -0x7a, 0x78, 0x78, 0x7a, 0x78, 0x74, 0x75, 0x7e, 0x87, 0x85, 0x7b, 0x74, 0x77, 0x7d, 0x85, 0x8c, -0x8d, 0x89, 0x80, 0x7a, 0x7b, 0x7d, 0x80, 0x7b, 0x75, 0x72, 0x74, 0x77, 0x7b, 0x79, 0x73, 0x6d, -0x6a, 0x6a, 0x6c, 0x6c, 0x6f, 0x76, 0x7d, 0x84, 0x85, 0x83, 0x84, 0x88, 0x8c, 0x8b, 0x88, 0x8a, -0x8f, 0x92, 0x91, 0x8e, 0x8d, 0x8c, 0x8a, 0x8a, 0x8c, 0x86, 0x7d, 0x78, 0x76, 0x79, 0x7e, 0x82, -0x80, 0x76, 0x6b, 0x68, 0x6a, 0x6b, 0x67, 0x62, 0x62, 0x6a, 0x73, 0x77, 0x7a, 0x81, 0x85, 0x82, -0x7c, 0x7a, 0x7a, 0x80, 0x83, 0x82, 0x81, 0x87, 0x92, 0x9e, 0xa3, 0xa1, 0x9c, 0x9b, 0x9b, 0x9a, -0x9a, 0x99, 0x95, 0x94, 0x95, 0x96, 0x93, 0x93, 0x93, 0x8a, 0x7d, 0x71, 0x71, 0x75, 0x77, 0x7a, -0x7a, 0x79, 0x77, 0x77, 0x76, 0x78, 0x7d, 0x7e, 0x7d, 0x80, 0x83, 0x85, 0x87, 0x8c, 0x8b, 0x85, -0x80, 0x83, 0x8a, 0x8d, 0x8c, 0x87, 0x84, 0x88, 0x8c, 0x90, 0x94, 0x93, 0x8f, 0x8e, 0x93, 0x96, -0x95, 0x8f, 0x85, 0x77, 0x72, 0x74, 0x75, 0x72, 0x6c, 0x64, 0x5b, 0x54, 0x51, 0x52, 0x59, 0x61, -0x65, 0x6a, 0x6f, 0x73, 0x78, 0x7e, 0x85, 0x85, 0x84, 0x87, 0x8e, 0x95, 0x98, 0x95, 0x93, 0x8f, -0x8a, 0x89, 0x88, 0x89, 0x8a, 0x84, 0x7c, 0x79, 0x7b, 0x82, 0x86, 0x80, 0x72, 0x6b, 0x6e, 0x70, -0x73, 0x71, 0x6b, 0x67, 0x67, 0x69, 0x6b, 0x71, 0x74, 0x6e, 0x63, 0x5c, 0x61, 0x6d, 0x75, 0x7a, -0x7e, 0x80, 0x85, 0x8e, 0x95, 0x97, 0x94, 0x8f, 0x8e, 0x94, 0x9b, 0x9c, 0x99, 0x96, 0x96, 0x96, -0x94, 0x92, 0x91, 0x90, 0x8b, 0x82, 0x7a, 0x78, 0x78, 0x7a, 0x7d, 0x80, 0x7d, 0x7c, 0x7e, 0x84, -0x8b, 0x8c, 0x86, 0x7a, 0x74, 0x78, 0x81, 0x85, 0x83, 0x7a, 0x6e, 0x6a, 0x6f, 0x79, 0x86, 0x87, -0x82, 0x82, 0x86, 0x8a, 0x8c, 0x89, 0x80, 0x7a, 0x78, 0x78, 0x7a, 0x7d, 0x82, 0x82, 0x80, 0x80, -0x80, 0x7d, 0x79, 0x74, 0x71, 0x6d, 0x6b, 0x69, 0x66, 0x69, 0x6e, 0x70, 0x72, 0x77, 0x7d, 0x87, -0x91, 0x94, 0x8d, 0x86, 0x84, 0x85, 0x8b, 0x8f, 0x8e, 0x86, 0x79, 0x78, 0x7e, 0x87, 0x8c, 0x88, -0x84, 0x7e, 0x7c, 0x80, 0x84, 0x88, 0x85, 0x79, 0x74, 0x78, 0x7c, 0x7e, 0x7e, 0x7a, 0x75, 0x76, -0x77, 0x79, 0x7a, 0x75, 0x70, 0x6c, 0x6c, 0x71, 0x77, 0x7b, 0x80, 0x81, 0x7e, 0x83, 0x89, 0x8d, -0x8c, 0x87, 0x82, 0x7a, 0x74, 0x70, 0x6b, 0x6b, 0x70, 0x72, 0x6f, 0x6a, 0x67, 0x6f, 0x7e, 0x86, -0x82, 0x79, 0x77, 0x7d, 0x86, 0x8d, 0x8b, 0x83, 0x7d, 0x7e, 0x89, 0x90, 0x8f, 0x86, 0x7a, 0x74, -0x74, 0x79, 0x7e, 0x7c, 0x70, 0x68, 0x69, 0x74, 0x7b, 0x7c, 0x7b, 0x78, 0x77, 0x7c, 0x80, 0x80, -0x7d, 0x7e, 0x83, 0x88, 0x8a, 0x87, 0x86, 0x85, 0x87, 0x85, 0x7d, 0x74, 0x6c, 0x6c, 0x71, 0x73, -0x74, 0x72, 0x71, 0x74, 0x7b, 0x86, 0x88, 0x83, 0x80, 0x86, 0x91, 0x9d, 0xa4, 0x9e, 0x91, 0x8c, -0x93, 0x9d, 0xa3, 0xa1, 0x99, 0x94, 0x90, 0x90, 0x93, 0x94, 0x94, 0x93, 0x8f, 0x8e, 0x92, 0x99, -0x9b, 0x97, 0x8e, 0x8a, 0x88, 0x85, 0x84, 0x82, 0x7d, 0x7c, 0x7b, 0x77, 0x75, 0x77, 0x7c, 0x84, -0x8c, 0x93, 0x98, 0x9d, 0xa2, 0xa8, 0xa2, 0x98, 0x93, 0x96, 0x9b, 0x9d, 0x99, 0x93, 0x89, 0x7e, -0x73, 0x71, 0x77, 0x7a, 0x76, 0x71, 0x6e, 0x6e, 0x73, 0x73, 0x6e, 0x65, 0x5e, 0x60, 0x69, 0x74, -0x78, 0x75, 0x72, 0x70, 0x74, 0x78, 0x78, 0x77, 0x73, 0x71, 0x6e, 0x6c, 0x70, 0x74, 0x72, 0x6e, -0x6c, 0x6f, 0x75, 0x78, 0x7b, 0x81, 0x82, 0x80, 0x76, 0x6f, 0x70, 0x76, 0x7c, 0x7c, 0x79, 0x77, -0x77, 0x78, 0x7d, 0x7e, 0x7a, 0x76, 0x75, 0x77, 0x75, 0x6d, 0x67, 0x65, 0x65, 0x67, 0x6c, 0x70, -0x6f, 0x6c, 0x69, 0x69, 0x6e, 0x78, 0x80, 0x7b, 0x73, 0x72, 0x76, 0x79, 0x7c, 0x80, 0x84, 0x84, -0x83, 0x81, 0x7e, 0x84, 0x8b, 0x8c, 0x86, 0x79, 0x6f, 0x6d, 0x70, 0x73, 0x72, 0x6c, 0x67, 0x69, -0x6b, 0x6c, 0x6a, 0x69, 0x6a, 0x6a, 0x6d, 0x6e, 0x6d, 0x6b, 0x69, 0x6f, 0x7a, 0x82, 0x8a, 0x92, -0x92, 0x8f, 0x94, 0x9a, 0x9a, 0x98, 0x92, 0x8a, 0x83, 0x7d, 0x78, 0x76, 0x76, 0x76, 0x78, 0x74, -0x71, 0x77, 0x82, 0x88, 0x8d, 0x8e, 0x88, 0x84, 0x86, 0x8c, 0x93, 0x99, 0x9c, 0x98, 0x94, 0x92, -0x93, 0x93, 0x92, 0x8f, 0x8c, 0x8e, 0x95, 0x98, 0x99, 0x93, 0x8d, 0x92, 0x9c, 0xa1, 0xa0, 0xa1, -0xa1, 0x9e, 0x9b, 0x9b, 0x9f, 0xa1, 0x9e, 0x98, 0x94, 0x92, 0x95, 0x95, 0x8f, 0x8b, 0x84, 0x79, -0x76, 0x77, 0x7b, 0x7d, 0x7e, 0x83, 0x84, 0x83, 0x7b, 0x74, 0x73, 0x78, 0x7b, 0x7c, 0x7e, 0x81, -0x83, 0x83, 0x7d, 0x79, 0x7d, 0x82, 0x89, 0x92, 0x94, 0x8d, 0x80, 0x77, 0x7d, 0x86, 0x8d, 0x8f, -0x8a, 0x86, 0x88, 0x8b, 0x8c, 0x8d, 0x88, 0x78, 0x6d, 0x69, 0x66, 0x63, 0x5f, 0x59, 0x53, 0x50, -0x51, 0x51, 0x52, 0x54, 0x5e, 0x6f, 0x7e, 0x81, 0x7b, 0x75, 0x72, 0x77, 0x82, 0x8a, 0x8c, 0x8f, -0x95, 0x94, 0x8b, 0x82, 0x80, 0x81, 0x83, 0x8a, 0x8c, 0x82, 0x74, 0x6d, 0x6e, 0x74, 0x77, 0x78, -0x72, 0x6c, 0x6f, 0x76, 0x7d, 0x82, 0x7e, 0x76, 0x72, 0x73, 0x74, 0x78, 0x78, 0x76, 0x75, 0x74, -0x72, 0x71, 0x73, 0x76, 0x78, 0x7d, 0x86, 0x86, 0x7c, 0x71, 0x6b, 0x67, 0x68, 0x6f, 0x73, 0x77, -0x79, 0x79, 0x77, 0x73, 0x7b, 0x86, 0x8a, 0x90, 0x94, 0x95, 0x92, 0x8b, 0x87, 0x86, 0x81, 0x7a, -0x75, 0x74, 0x75, 0x79, 0x7b, 0x80, 0x7e, 0x75, 0x69, 0x62, 0x61, 0x65, 0x68, 0x68, 0x6a, 0x6c, -0x74, 0x84, 0x8c, 0x8a, 0x86, 0x88, 0x8d, 0x8f, 0x8e, 0x89, 0x81, 0x7a, 0x7a, 0x80, 0x8a, 0x91, -0x93, 0x94, 0x90, 0x8b, 0x89, 0x87, 0x84, 0x83, 0x82, 0x7e, 0x82, 0x87, 0x8d, 0x97, 0xa0, 0xa2, -0xa0, 0x9b, 0x95, 0x97, 0x9a, 0x9e, 0x9f, 0x98, 0x94, 0x91, 0x8c, 0x89, 0x81, 0x76, 0x6f, 0x6b, -0x6a, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x63, 0x62, 0x58, 0x5a, 0x59, 0x59, 0x61, 0x6c, 0x71, 0x75, -0x7a, 0x78, 0x71, 0x6b, 0x6c, 0x74, 0x7c, 0x82, 0x84, 0x85, 0x86, 0x88, 0x91, 0x9f, 0xa5, 0xa5, -0xa7, 0xa8, 0xa7, 0xa7, 0xa7, 0xa3, 0x98, 0x8a, 0x82, 0x82, 0x89, 0x8f, 0x8e, 0x8b, 0x89, 0x83, -0x78, 0x6e, 0x64, 0x68, 0x70, 0x7b, 0x83, 0x84, 0x84, 0x80, 0x79, 0x74, 0x78, 0x7d, 0x81, 0x87, -0x89, 0x85, 0x7d, 0x74, 0x6c, 0x6c, 0x78, 0x80, 0x7a, 0x78, 0x7b, 0x80, 0x84, 0x89, 0x83, 0x74, -0x68, 0x65, 0x6a, 0x73, 0x7d, 0x7e, 0x7c, 0x87, 0x8c, 0x8c, 0x86, 0x82, 0x7d, 0x7d, 0x87, 0x83, -0x7d, 0x7b, 0x6e, 0x5a, 0x4f, 0x58, 0x63, 0x6e, 0x7e, 0x83, 0x87, 0x8b, 0x90, 0x99, 0xa2, 0xad, -0xb5, 0xb3, 0xac, 0xa5, 0x9a, 0x8d, 0x97, 0xa6, 0xa7, 0x9e, 0x97, 0x96, 0x97, 0x96, 0x8f, 0x89, -0x83, 0x77, 0x6f, 0x6f, 0x72, 0x76, 0x83, 0x7b, 0x77, 0x82, 0x81, 0x77, 0x6b, 0x62, 0x65, 0x6e, -0x74, 0x73, 0x68, 0x5f, 0x61, 0x68, 0x7c, 0x8c, 0x92, 0x86, 0x85, 0x89, 0x88, 0x89, 0x8d, 0x8d, -0x88, 0x81, 0x76, 0x73, 0x7b, 0x83, 0x81, 0x7b, 0x83, 0x87, 0x88, 0x86, 0x85, 0x87, 0x86, 0x7d, -0x73, 0x6a, 0x6e, 0x80, 0x81, 0x7a, 0x86, 0x86, 0x84, 0x86, 0x85, 0x7d, 0x75, 0x70, 0x6c, 0x69, -0x69, 0x70, 0x7a, 0x7a, 0x77, 0x78, 0x77, 0x77, 0x7b, 0x71, 0x66, 0x57, 0x55, 0x72, 0x81, 0x7e, -0x7d, 0x80, 0x89, 0x8b, 0x73, 0x68, 0x6a, 0x67, 0x69, 0x6a, 0x65, 0x5b, 0x5c, 0x5e, 0x55, 0x4f, -0x53, 0x5a, 0x62, 0x66, 0x69, 0x6a, 0x67, 0x6c, 0x78, 0x83, 0x94, 0x9a, 0x95, 0x8d, 0x86, 0x83, -0x89, 0x99, 0xa2, 0x90, 0x7d, 0x83, 0x8b, 0x89, 0x7d, 0x71, 0x68, 0x5f, 0x5b, 0x5d, 0x65, 0x7b, -0x89, 0x93, 0x94, 0x88, 0x80, 0x71, 0x67, 0x6c, 0x76, 0x7e, 0x82, 0x82, 0x80, 0x7a, 0x7e, 0x8a, -0x99, 0xaa, 0xab, 0xa1, 0xa4, 0xa6, 0xa5, 0x9f, 0x9a, 0x96, 0x94, 0x8c, 0x86, 0x8b, 0x89, 0x8a, -0x8b, 0x84, 0x77, 0x6e, 0x6d, 0x69, 0x76, 0x90, 0x92, 0x8b, 0x83, 0x8b, 0xa2, 0xa3, 0x9f, 0xa5, -0xab, 0xa9, 0x91, 0x8b, 0x87, 0x7e, 0x74, 0x6f, 0x72, 0x79, 0x85, 0x94, 0xa1, 0xa6, 0xa6, 0xa9, -0xa5, 0x9c, 0x99, 0x98, 0x94, 0x9d, 0xb6, 0xb1, 0x9f, 0x97, 0x91, 0x8e, 0x8b, 0x95, 0x9a, 0x92, -0x83, 0x69, 0x57, 0x61, 0x75, 0x77, 0x6e, 0x65, 0x57, 0x54, 0x5f, 0x5c, 0x5d, 0x69, 0x62, 0x5b, -0x65, 0x6a, 0x78, 0x8c, 0x92, 0x99, 0x8e, 0x83, 0x85, 0x8a, 0x91, 0x9a, 0xa5, 0xa4, 0x92, 0x86, -0x82, 0x76, 0x78, 0x78, 0x70, 0x65, 0x64, 0x6c, 0x6d, 0x62, 0x5d, 0x6a, 0x6e, 0x77, 0x7b, 0x6d, -0x60, 0x58, 0x56, 0x5e, 0x6e, 0x6b, 0x67, 0x6d, 0x6e, 0x72, 0x73, 0x80, 0x88, 0x74, 0x69, 0x7b, -0x88, 0x92, 0x97, 0x90, 0x90, 0x8a, 0x7c, 0x6b, 0x64, 0x71, 0x77, 0x76, 0x6f, 0x63, 0x61, 0x62, -0x6d, 0x7e, 0x83, 0x7b, 0x7b, 0x75, 0x82, 0x9a, 0x9e, 0x93, 0x92, 0x90, 0x76, 0x6d, 0x78, 0x70, -0x66, 0x6b, 0x64, 0x5a, 0x5f, 0x65, 0x6a, 0x73, 0x7b, 0x87, 0x88, 0x78, 0x65, 0x52, 0x60, 0x7b, -0x8d, 0xa3, 0x9d, 0x8b, 0x83, 0x82, 0x8c, 0x89, 0x83, 0x8a, 0x85, 0x73, 0x6a, 0x6a, 0x61, 0x77, -0x8d, 0x83, 0x75, 0x6e, 0x69, 0x5d, 0x5c, 0x70, 0x7b, 0x76, 0x6c, 0x63, 0x5d, 0x67, 0x7d, 0x8e, -0xa3, 0xa7, 0xa3, 0xa4, 0xa6, 0xa6, 0xad, 0xac, 0x9a, 0x8a, 0x7e, 0x6b, 0x53, 0x44, 0x4a, 0x57, -0x5d, 0x69, 0x75, 0x7e, 0x80, 0x73, 0x65, 0x77, 0x8a, 0x84, 0x76, 0x78, 0x8c, 0x9a, 0xa2, 0xa7, -0xae, 0xb9, 0xbd, 0xbe, 0xc6, 0xd1, 0xcb, 0xb6, 0xa5, 0xa2, 0xa7, 0xab, 0xaa, 0xaa, 0xa7, 0x98, -0x8e, 0x92, 0x8f, 0x92, 0x8d, 0x83, 0x7b, 0x6f, 0x5d, 0x4f, 0x56, 0x6c, 0x7e, 0x82, 0x83, 0x82, -0x8f, 0xaf, 0xba, 0xc4, 0xc8, 0xad, 0x87, 0x61, 0x47, 0x4a, 0x62, 0x66, 0x63, 0x71, 0x7a, 0x70, -0x6c, 0x71, 0x76, 0x85, 0x95, 0x96, 0x84, 0x74, 0x6e, 0x6d, 0x73, 0x89, 0x9e, 0x9f, 0x8b, 0x7b, -0x78, 0x83, 0x87, 0x85, 0x76, 0x63, 0x52, 0x4b, 0x3e, 0x40, 0x53, 0x5a, 0x61, 0x60, 0x56, 0x50, -0x4e, 0x60, 0x74, 0x81, 0x82, 0x6d, 0x65, 0x66, 0x62, 0x65, 0x7d, 0x9f, 0xa6, 0xa8, 0xb4, 0xc0, -0xc2, 0xc2, 0xaa, 0x8f, 0x8b, 0x86, 0x77, 0x6a, 0x65, 0x62, 0x62, 0x6b, 0x6e, 0x72, 0x76, 0x7a, -0x75, 0x71, 0x7c, 0x75, 0x63, 0x5a, 0x5a, 0x5e, 0x63, 0x69, 0x7a, 0x78, 0x67, 0x74, 0x8a, 0x99, -0x93, 0x91, 0x98, 0x9b, 0x99, 0x95, 0x8b, 0x8d, 0x8f, 0x83, 0x7c, 0x6f, 0x77, 0x8c, 0x93, 0x8c, -0x83, 0x76, 0x61, 0x4c, 0x4e, 0x60, 0x7b, 0x97, 0xa1, 0x98, 0x91, 0x9e, 0xa9, 0xb5, 0xbf, 0xb2, -0x8f, 0x73, 0x6c, 0x6f, 0x64, 0x5d, 0x69, 0x75, 0x7a, 0x77, 0x70, 0x76, 0x79, 0x81, 0x84, 0x82, -0x81, 0x77, 0x87, 0x9a, 0xa0, 0xae, 0xc4, 0xc0, 0xa5, 0x90, 0x85, 0x82, 0x80, 0x89, 0x8d, 0x79, -0x64, 0x52, 0x4f, 0x4e, 0x5b, 0x61, 0x59, 0x55, 0x4b, 0x3e, 0x45, 0x4f, 0x51, 0x52, 0x50, 0x46, -0x42, 0x48, 0x52, 0x6d, 0x8e, 0xa3, 0xad, 0xa0, 0x95, 0x98, 0x98, 0x9e, 0x9c, 0x8c, 0x7c, 0x6f, -0x68, 0x67, 0x63, 0x74, 0x7e, 0x7b, 0x78, 0x70, 0x66, 0x61, 0x5a, 0x50, 0x47, 0x41, 0x3b, 0x47, -0x55, 0x64, 0x76, 0x94, 0xaa, 0xad, 0xa7, 0xa2, 0xa2, 0xaf, 0xc2, 0xc2, 0xb9, 0xb8, 0xb9, 0xbb, -0xba, 0xb7, 0xb3, 0xb7, 0xaf, 0x96, 0x8a, 0x86, 0x88, 0x88, 0x7a, 0x71, 0x6c, 0x68, 0x75, 0x88, -0x9b, 0xb0, 0xc0, 0xc4, 0xc1, 0xb0, 0xa8, 0x9f, 0x8f, 0x86, 0x71, 0x59, 0x51, 0x53, 0x56, 0x53, -0x66, 0x7e, 0x87, 0x7a, 0x77, 0x84, 0x94, 0xa1, 0x9d, 0x90, 0x86, 0x71, 0x6e, 0x79, 0x86, 0x97, -0xaa, 0xb1, 0xad, 0xa2, 0x9b, 0x9b, 0x8f, 0x90, 0x91, 0x73, 0x67, 0x60, 0x61, 0x66, 0x62, 0x68, -0x72, 0x71, 0x5b, 0x4e, 0x55, 0x5b, 0x5b, 0x54, 0x4c, 0x3c, 0x2f, 0x32, 0x43, 0x5b, 0x79, 0x98, -0xac, 0xb1, 0xa9, 0xb0, 0xb6, 0xac, 0xac, 0xaa, 0x98, 0x81, 0x81, 0x8c, 0x95, 0x99, 0x9e, 0xa9, -0x9f, 0x84, 0x7a, 0x77, 0x7a, 0x7d, 0x7c, 0x70, 0x5d, 0x54, 0x57, 0x65, 0x7a, 0x94, 0xa3, 0xab, -0xa8, 0xa9, 0xbb, 0xb7, 0xad, 0xa1, 0x8c, 0x7e, 0x75, 0x7c, 0x80, 0x81, 0x82, 0x88, 0x8d, 0x7d, -0x69, 0x6a, 0x6c, 0x6c, 0x67, 0x61, 0x53, 0x4c, 0x54, 0x57, 0x5f, 0x76, 0x8a, 0x9c, 0xa9, 0xa1, -0xa1, 0x9e, 0x85, 0x75, 0x61, 0x41, 0x38, 0x45, 0x4c, 0x4e, 0x57, 0x63, 0x69, 0x61, 0x4e, 0x47, -0x53, 0x5e, 0x67, 0x64, 0x5a, 0x4c, 0x47, 0x4a, 0x4f, 0x5b, 0x6c, 0x78, 0x83, 0x83, 0x82, 0x88, -0x85, 0x84, 0x87, 0x75, 0x52, 0x5a, 0x73, 0x7e, 0x85, 0x88, 0x90, 0x89, 0x70, 0x5a, 0x5e, 0x6d, -0x76, 0x72, 0x66, 0x59, 0x50, 0x52, 0x58, 0x6a, 0x84, 0x9a, 0xb3, 0xbf, 0xbc, 0xc0, 0xbb, 0xb6, -0xb3, 0xaa, 0x9b, 0x82, 0x7e, 0x92, 0x96, 0x92, 0x9c, 0xb0, 0xb2, 0x9b, 0x84, 0x86, 0x8e, 0x94, -0x8b, 0x82, 0x81, 0x7c, 0x71, 0x71, 0x84, 0x8f, 0x98, 0xa2, 0x9f, 0xa0, 0xa0, 0x9f, 0xa0, 0xa0, -0x9b, 0x8e, 0x81, 0x78, 0x8e, 0x99, 0x9c, 0xaa, 0xb5, 0xb3, 0xa0, 0x90, 0x8e, 0x8e, 0x88, 0x72, -0x65, 0x5f, 0x61, 0x6a, 0x71, 0x7e, 0x89, 0x90, 0x96, 0x9e, 0xa0, 0x9b, 0x91, 0x82, 0x71, 0x65, -0x58, 0x54, 0x56, 0x6a, 0x79, 0x81, 0x92, 0x97, 0x8d, 0x78, 0x6e, 0x6f, 0x76, 0x72, 0x6e, 0x75, -0x78, 0x7c, 0x83, 0x80, 0x81, 0x89, 0x8d, 0x8d, 0x90, 0x90, 0x94, 0x97, 0x93, 0x89, 0x7d, 0x72, -0x6d, 0x68, 0x79, 0x8a, 0x94, 0x9a, 0x91, 0x7a, 0x63, 0x60, 0x69, 0x6b, 0x61, 0x5c, 0x5a, 0x59, -0x5d, 0x65, 0x71, 0x83, 0x97, 0x9e, 0xa3, 0xa7, 0xa3, 0xa2, 0x9a, 0x86, 0x76, 0x6a, 0x63, 0x61, -0x6a, 0x77, 0x83, 0x88, 0x87, 0x81, 0x74, 0x6b, 0x6c, 0x6f, 0x6e, 0x67, 0x66, 0x63, 0x61, 0x61, -0x65, 0x6a, 0x76, 0x85, 0x8d, 0x91, 0x91, 0x92, 0x93, 0x8c, 0x84, 0x81, 0x7c, 0x77, 0x71, 0x77, -0x83, 0x91, 0x97, 0x94, 0x8b, 0x82, 0x7c, 0x82, 0x87, 0x86, 0x7d, 0x71, 0x6c, 0x6f, 0x79, 0x8c, -0x9a, 0xa0, 0x9b, 0x8e, 0x82, 0x79, 0x76, 0x76, 0x6e, 0x5e, 0x55, 0x52, 0x53, 0x56, 0x60, 0x6c, -0x75, 0x74, 0x6b, 0x66, 0x69, 0x70, 0x79, 0x7c, 0x79, 0x73, 0x6a, 0x67, 0x67, 0x6f, 0x7b, 0x85, -0x88, 0x87, 0x85, 0x89, 0x8e, 0x91, 0x95, 0x96, 0x8f, 0x86, 0x81, 0x7e, 0x79, 0x7b, 0x82, 0x86, -0x85, 0x77, 0x67, 0x5e, 0x5a, 0x5b, 0x5b, 0x5c, 0x59, 0x55, 0x57, 0x5e, 0x6e, 0x80, 0x8d, 0x94, -0x93, 0x92, 0x97, 0x9f, 0xa7, 0xae, 0xad, 0xa6, 0xa5, 0xab, 0xaf, 0xb5, 0xbb, 0xbf, 0xba, 0xad, -0xa1, 0x97, 0x8f, 0x8e, 0x8f, 0x8a, 0x81, 0x74, 0x6b, 0x64, 0x61, 0x65, 0x68, 0x61, 0x56, 0x4d, -0x51, 0x56, 0x5b, 0x5f, 0x5c, 0x5a, 0x5c, 0x68, 0x77, 0x82, 0x93, 0xa3, 0xaa, 0xa7, 0x9b, 0x92, -0x8a, 0x87, 0x89, 0x8b, 0x8b, 0x86, 0x80, 0x7d, 0x82, 0x8e, 0x9c, 0xa1, 0x9b, 0x8d, 0x7e, 0x7a, -0x7c, 0x80, 0x7c, 0x70, 0x68, 0x62, 0x64, 0x66, 0x6f, 0x81, 0x89, 0x88, 0x81, 0x73, 0x6a, 0x6b, -0x73, 0x7b, 0x80, 0x7e, 0x74, 0x6a, 0x69, 0x70, 0x80, 0x91, 0x96, 0x93, 0x8a, 0x85, 0x86, 0x91, -0x9c, 0x99, 0x93, 0x91, 0x92, 0x96, 0x9c, 0xa5, 0xb0, 0xb5, 0xad, 0x9b, 0x84, 0x72, 0x66, 0x5f, -0x60, 0x62, 0x5f, 0x57, 0x58, 0x5e, 0x66, 0x75, 0x82, 0x88, 0x84, 0x7d, 0x82, 0x8b, 0x94, 0x96, -0x93, 0x8f, 0x8c, 0x8b, 0x8a, 0x89, 0x8d, 0x94, 0x9a, 0x97, 0x8d, 0x88, 0x87, 0x83, 0x82, 0x86, -0x8a, 0x83, 0x79, 0x78, 0x7b, 0x88, 0x95, 0x98, 0x91, 0x87, 0x88, 0x92, 0x99, 0x9c, 0x94, 0x89, -0x81, 0x7d, 0x81, 0x84, 0x8a, 0x94, 0x97, 0x90, 0x86, 0x7b, 0x79, 0x7a, 0x7b, 0x80, 0x80, 0x77, -0x6c, 0x66, 0x64, 0x6e, 0x7d, 0x82, 0x78, 0x65, 0x56, 0x56, 0x5e, 0x63, 0x63, 0x5a, 0x4f, 0x48, -0x49, 0x4f, 0x58, 0x6a, 0x82, 0x8f, 0x88, 0x77, 0x70, 0x6c, 0x6f, 0x77, 0x7e, 0x80, 0x73, 0x67, -0x5e, 0x5c, 0x67, 0x76, 0x7d, 0x77, 0x69, 0x60, 0x64, 0x6d, 0x75, 0x7b, 0x79, 0x76, 0x75, 0x74, -0x73, 0x74, 0x7b, 0x83, 0x80, 0x6c, 0x55, 0x4a, 0x45, 0x4c, 0x58, 0x65, 0x6c, 0x6c, 0x69, 0x66, -0x69, 0x79, 0x89, 0x8f, 0x8d, 0x8d, 0x97, 0xa0, 0xa5, 0xa8, 0xa4, 0x9a, 0x95, 0x9a, 0xa0, 0x9f, -0xa3, 0xab, 0xb3, 0xb1, 0xa7, 0x9b, 0x93, 0x8a, 0x87, 0x84, 0x7c, 0x70, 0x67, 0x62, 0x61, 0x65, -0x6b, 0x6c, 0x62, 0x56, 0x54, 0x58, 0x5e, 0x64, 0x68, 0x6f, 0x78, 0x86, 0x97, 0xa0, 0xa9, 0xb6, -0xbe, 0xbd, 0xad, 0x9c, 0x94, 0x97, 0xa0, 0xad, 0xb0, 0xa7, 0x9c, 0x94, 0x92, 0x99, 0xa5, 0xac, -0xa4, 0x92, 0x82, 0x81, 0x83, 0x83, 0x82, 0x78, 0x6a, 0x63, 0x67, 0x6a, 0x6a, 0x75, 0x86, 0x8e, -0x8a, 0x7c, 0x75, 0x76, 0x7a, 0x82, 0x88, 0x87, 0x7e, 0x79, 0x7c, 0x84, 0x90, 0x9e, 0xa4, 0xa0, -0x99, 0x94, 0x8e, 0x87, 0x89, 0x92, 0x99, 0x97, 0x95, 0x97, 0x91, 0x8e, 0x96, 0x9e, 0x9d, 0x91, -0x7e, 0x70, 0x64, 0x62, 0x6b, 0x71, 0x6c, 0x63, 0x61, 0x63, 0x67, 0x74, 0x80, 0x83, 0x7b, 0x75, -0x72, 0x70, 0x70, 0x74, 0x74, 0x6e, 0x66, 0x66, 0x69, 0x69, 0x6f, 0x7e, 0x88, 0x87, 0x83, 0x82, -0x7e, 0x78, 0x78, 0x79, 0x7a, 0x77, 0x7a, 0x81, 0x7d, 0x7e, 0x88, 0x8c, 0x87, 0x84, 0x88, 0x8e, -0x92, 0x97, 0x97, 0x90, 0x89, 0x88, 0x8a, 0x83, 0x7c, 0x86, 0x94, 0x96, 0x8b, 0x7e, 0x79, 0x78, -0x75, 0x75, 0x71, 0x68, 0x5c, 0x57, 0x5c, 0x61, 0x69, 0x70, 0x6d, 0x68, 0x66, 0x67, 0x64, 0x63, -0x65, 0x5e, 0x4f, 0x45, 0x42, 0x47, 0x4f, 0x5a, 0x65, 0x6b, 0x66, 0x59, 0x54, 0x57, 0x63, 0x72, -0x7c, 0x7d, 0x7a, 0x78, 0x7c, 0x88, 0x97, 0xa2, 0xa0, 0x9a, 0x98, 0x96, 0x94, 0x95, 0x9a, 0xa2, -0xa5, 0x9d, 0x96, 0x96, 0x94, 0x96, 0x99, 0x98, 0x8e, 0x79, 0x63, 0x5e, 0x63, 0x6d, 0x76, 0x76, -0x72, 0x6d, 0x6a, 0x66, 0x65, 0x6f, 0x80, 0x8c, 0x91, 0x92, 0x93, 0x91, 0x8d, 0x8b, 0x8a, 0x8b, -0x8c, 0x88, 0x87, 0x86, 0x88, 0x90, 0x96, 0x94, 0x86, 0x7b, 0x7e, 0x84, 0x8d, 0x95, 0x98, 0x98, -0x91, 0x8b, 0x86, 0x88, 0x94, 0x9a, 0x91, 0x7c, 0x6b, 0x64, 0x64, 0x6b, 0x70, 0x70, 0x6e, 0x6d, -0x76, 0x85, 0x90, 0x98, 0x97, 0x8f, 0x84, 0x7c, 0x82, 0x8c, 0x92, 0x95, 0x94, 0x8f, 0x89, 0x89, -0x91, 0x94, 0x97, 0x96, 0x8e, 0x87, 0x84, 0x88, 0x83, 0x74, 0x6d, 0x6a, 0x65, 0x60, 0x65, 0x6e, -0x6f, 0x6d, 0x6e, 0x72, 0x78, 0x71, 0x63, 0x59, 0x5a, 0x62, 0x6b, 0x74, 0x75, 0x70, 0x6c, 0x71, -0x7d, 0x8e, 0x99, 0x93, 0x80, 0x6e, 0x71, 0x7e, 0x8f, 0x9f, 0xa2, 0x96, 0x8a, 0x91, 0xa1, 0xb5, -0xc6, 0xca, 0xbb, 0xa3, 0x84, 0x71, 0x73, 0x80, 0x87, 0x7b, 0x70, 0x6f, 0x74, 0x87, 0x96, 0xa0, -0xa1, 0x9c, 0x95, 0x8e, 0x91, 0x98, 0x99, 0x94, 0x8e, 0x86, 0x7d, 0x7b, 0x83, 0x86, 0x82, 0x85, -0x88, 0x87, 0x7e, 0x6a, 0x5a, 0x5a, 0x6b, 0x7e, 0x8e, 0x94, 0x8c, 0x81, 0x7c, 0x7e, 0x89, 0x94, -0x95, 0x88, 0x72, 0x68, 0x69, 0x6f, 0x75, 0x71, 0x61, 0x4b, 0x47, 0x55, 0x6a, 0x83, 0x93, 0x94, -0x89, 0x79, 0x6f, 0x71, 0x81, 0x90, 0x90, 0x84, 0x70, 0x62, 0x67, 0x71, 0x75, 0x75, 0x71, 0x6c, -0x62, 0x64, 0x6f, 0x71, 0x6c, 0x62, 0x53, 0x4a, 0x54, 0x66, 0x72, 0x75, 0x7d, 0x89, 0x8b, 0x85, -0x79, 0x6f, 0x6b, 0x70, 0x77, 0x7d, 0x7a, 0x6d, 0x65, 0x60, 0x60, 0x6b, 0x76, 0x7b, 0x76, 0x69, -0x65, 0x6d, 0x79, 0x84, 0x88, 0x81, 0x73, 0x73, 0x82, 0x8d, 0x99, 0xa4, 0xa3, 0x8f, 0x73, 0x68, -0x6b, 0x79, 0x89, 0x8a, 0x7b, 0x66, 0x5a, 0x5c, 0x67, 0x76, 0x85, 0x89, 0x88, 0x86, 0x8a, 0x96, -0xa1, 0xa4, 0x9d, 0x95, 0x8c, 0x89, 0x93, 0x9c, 0xa0, 0x9f, 0x9d, 0x9b, 0x9a, 0x96, 0x92, 0x90, -0x96, 0xa1, 0xa6, 0xa1, 0x93, 0x85, 0x79, 0x73, 0x78, 0x7e, 0x80, 0x75, 0x60, 0x54, 0x55, 0x5e, -0x64, 0x63, 0x5a, 0x4e, 0x4a, 0x57, 0x69, 0x77, 0x7d, 0x80, 0x7c, 0x74, 0x77, 0x83, 0x95, 0xa9, -0xb4, 0xad, 0x9a, 0x8d, 0x89, 0x8d, 0x97, 0x9c, 0x95, 0x89, 0x80, 0x77, 0x7e, 0x89, 0x87, 0x79, -0x6b, 0x63, 0x64, 0x6f, 0x7a, 0x7c, 0x76, 0x75, 0x7a, 0x7a, 0x79, 0x7a, 0x76, 0x76, 0x7d, 0x86, -0x87, 0x82, 0x7d, 0x7a, 0x7e, 0x8d, 0x9d, 0xa9, 0xab, 0xa1, 0x94, 0x91, 0x99, 0x9e, 0x9f, 0x9e, -0x98, 0x93, 0x97, 0xa2, 0xaa, 0xb3, 0xb9, 0xb5, 0x9f, 0x8e, 0x8c, 0x92, 0x9b, 0x9d, 0x9a, 0x90, -0x89, 0x87, 0x87, 0x8c, 0x8c, 0x80, 0x70, 0x6d, 0x6a, 0x6b, 0x74, 0x78, 0x6e, 0x63, 0x62, 0x6a, -0x7a, 0x8d, 0x95, 0x8d, 0x83, 0x85, 0x8c, 0x94, 0x97, 0x94, 0x90, 0x8e, 0x93, 0x92, 0x8d, 0x89, -0x7c, 0x6b, 0x67, 0x6b, 0x6b, 0x6e, 0x6d, 0x64, 0x5e, 0x5f, 0x5f, 0x5c, 0x5b, 0x5d, 0x5c, 0x5c, -0x65, 0x6f, 0x74, 0x7a, 0x7d, 0x78, 0x70, 0x71, 0x74, 0x75, 0x71, 0x69, 0x59, 0x49, 0x49, 0x4f, -0x58, 0x63, 0x64, 0x5b, 0x51, 0x51, 0x5c, 0x6c, 0x73, 0x66, 0x4c, 0x44, 0x52, 0x68, 0x7c, 0x89, -0x8a, 0x81, 0x7b, 0x79, 0x7c, 0x87, 0x91, 0x8e, 0x85, 0x80, 0x7b, 0x7a, 0x81, 0x85, 0x81, 0x81, -0x89, 0x8e, 0x92, 0x8f, 0x8b, 0x85, 0x7d, 0x7b, 0x7b, 0x7e, 0x84, 0x86, 0x88, 0x8d, 0x96, 0xa0, -0xa8, 0xa5, 0x95, 0x7d, 0x75, 0x7a, 0x85, 0x94, 0x98, 0x8e, 0x7e, 0x76, 0x75, 0x7e, 0x8c, 0x92, -0x86, 0x75, 0x6f, 0x6f, 0x71, 0x77, 0x79, 0x71, 0x6a, 0x6c, 0x73, 0x83, 0x8c, 0x8d, 0x86, 0x87, -0x92, 0x9e, 0xab, 0xb4, 0xb5, 0xae, 0xa4, 0x99, 0x96, 0x98, 0x8e, 0x73, 0x5d, 0x56, 0x5b, 0x65, -0x6c, 0x70, 0x6f, 0x65, 0x5e, 0x5d, 0x62, 0x6a, 0x6a, 0x5f, 0x5a, 0x5f, 0x69, 0x7b, 0x91, 0x9f, -0x9f, 0x9c, 0x9e, 0xa4, 0xa9, 0xa3, 0x96, 0x8d, 0x89, 0x86, 0x84, 0x8d, 0x94, 0x90, 0x84, 0x7b, -0x7e, 0x83, 0x86, 0x84, 0x74, 0x66, 0x68, 0x70, 0x80, 0x8e, 0x8f, 0x86, 0x7b, 0x79, 0x83, 0x93, -0xa1, 0x9f, 0x8d, 0x7d, 0x74, 0x74, 0x83, 0x8e, 0x8d, 0x86, 0x83, 0x84, 0x86, 0x8a, 0x8b, 0x8a, -0x86, 0x89, 0x8d, 0x92, 0x9c, 0xa3, 0xa6, 0xa5, 0xa7, 0xa8, 0xab, 0xae, 0xab, 0x9d, 0x94, 0x97, -0x9c, 0xa0, 0xa4, 0xa2, 0x9b, 0x90, 0x87, 0x82, 0x83, 0x81, 0x6e, 0x51, 0x3e, 0x37, 0x3a, 0x4d, -0x5d, 0x5c, 0x51, 0x4a, 0x4d, 0x5b, 0x6b, 0x73, 0x6f, 0x68, 0x6f, 0x7a, 0x87, 0x98, 0xa2, 0x9f, -0x91, 0x87, 0x82, 0x84, 0x7d, 0x6d, 0x5c, 0x5b, 0x64, 0x69, 0x71, 0x74, 0x6f, 0x5e, 0x52, 0x53, -0x5b, 0x60, 0x5d, 0x5a, 0x5a, 0x61, 0x69, 0x77, 0x8d, 0x9d, 0x9c, 0x8e, 0x89, 0x88, 0x89, 0x8b, -0x8b, 0x87, 0x88, 0x8d, 0x90, 0x99, 0xa9, 0xad, 0x9f, 0x8b, 0x80, 0x74, 0x6f, 0x6f, 0x6a, 0x5f, -0x54, 0x4f, 0x57, 0x6d, 0x79, 0x78, 0x6d, 0x6a, 0x71, 0x7e, 0x87, 0x83, 0x72, 0x61, 0x5c, 0x60, -0x6f, 0x84, 0x8b, 0x84, 0x7b, 0x81, 0x8a, 0x8e, 0x8a, 0x7b, 0x64, 0x56, 0x54, 0x58, 0x60, 0x66, -0x6f, 0x74, 0x78, 0x7c, 0x79, 0x7a, 0x7b, 0x73, 0x68, 0x64, 0x64, 0x68, 0x6f, 0x72, 0x6e, 0x64, -0x62, 0x66, 0x72, 0x82, 0x81, 0x6e, 0x5f, 0x60, 0x69, 0x7c, 0x91, 0x98, 0x92, 0x89, 0x8b, 0x9a, -0xb2, 0xbe, 0xb7, 0xaa, 0xa9, 0xb4, 0xc0, 0xd0, 0xdd, 0xda, 0xc8, 0xb7, 0xb0, 0xaf, 0xaf, 0xa8, -0x9b, 0x92, 0x96, 0x9b, 0x9a, 0x9c, 0x97, 0x86, 0x6f, 0x65, 0x64, 0x67, 0x68, 0x5c, 0x50, 0x51, -0x60, 0x71, 0x84, 0x95, 0x9f, 0x9a, 0x8f, 0x90, 0x9a, 0xa2, 0x9c, 0x8d, 0x80, 0x7c, 0x80, 0x88, -0x9b, 0xab, 0xa7, 0x96, 0x89, 0x7e, 0x79, 0x76, 0x6f, 0x5f, 0x51, 0x4e, 0x51, 0x62, 0x75, 0x7a, -0x72, 0x69, 0x6c, 0x76, 0x82, 0x7c, 0x6d, 0x5c, 0x55, 0x5a, 0x64, 0x73, 0x7e, 0x7e, 0x74, 0x71, -0x78, 0x82, 0x88, 0x82, 0x73, 0x6b, 0x6f, 0x79, 0x8b, 0x9f, 0xab, 0xb2, 0xb5, 0xb8, 0xbc, 0xc1, -0xc2, 0xbb, 0xaa, 0x9e, 0x9a, 0x9b, 0xa7, 0xb3, 0xaf, 0xa1, 0x93, 0x87, 0x83, 0x89, 0x89, 0x77, -0x5e, 0x52, 0x54, 0x5f, 0x72, 0x7a, 0x71, 0x60, 0x55, 0x55, 0x62, 0x6e, 0x6a, 0x5c, 0x50, 0x53, -0x5c, 0x6b, 0x79, 0x7e, 0x75, 0x67, 0x5f, 0x5e, 0x68, 0x71, 0x6a, 0x59, 0x52, 0x57, 0x61, 0x6f, -0x7c, 0x7d, 0x73, 0x6e, 0x71, 0x79, 0x82, 0x7d, 0x6b, 0x5b, 0x5d, 0x6a, 0x7e, 0x95, 0x9e, 0x9b, -0x90, 0x89, 0x87, 0x8a, 0x88, 0x7a, 0x6c, 0x63, 0x64, 0x69, 0x75, 0x83, 0x84, 0x77, 0x67, 0x5e, -0x5d, 0x69, 0x72, 0x6c, 0x5d, 0x54, 0x58, 0x68, 0x83, 0x9b, 0xa6, 0x9d, 0x92, 0x8e, 0x96, 0xa1, -0x9e, 0x8c, 0x78, 0x74, 0x7d, 0x98, 0xad, 0xb0, 0xa4, 0x97, 0x92, 0x90, 0x91, 0x90, 0x82, 0x6d, -0x68, 0x6f, 0x75, 0x7e, 0x83, 0x7b, 0x72, 0x70, 0x73, 0x7b, 0x82, 0x7e, 0x76, 0x6c, 0x6c, 0x72, -0x80, 0x97, 0xa6, 0xa7, 0xa1, 0x98, 0x90, 0x92, 0x99, 0x97, 0x87, 0x6f, 0x64, 0x66, 0x76, 0x8b, -0x91, 0x84, 0x73, 0x6b, 0x6c, 0x7c, 0x90, 0x99, 0x92, 0x8a, 0x8a, 0x95, 0xa9, 0xb2, 0xa7, 0x93, -0x87, 0x84, 0x88, 0x88, 0x79, 0x61, 0x4f, 0x4e, 0x5b, 0x6c, 0x77, 0x78, 0x72, 0x70, 0x70, 0x6b, -0x6d, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x78, 0x89, 0x91, 0x94, 0x95, 0x91, 0x8a, 0x85, 0x89, 0x89, -0x80, 0x71, 0x69, 0x6d, 0x7a, 0x8c, 0x98, 0x9a, 0x8e, 0x82, 0x77, 0x7d, 0x8c, 0x88, 0x6e, 0x56, -0x4d, 0x52, 0x67, 0x7d, 0x89, 0x86, 0x80, 0x7b, 0x84, 0x97, 0x9d, 0x8d, 0x72, 0x67, 0x6a, 0x76, -0x87, 0x93, 0x97, 0x97, 0x95, 0x96, 0x9a, 0x9b, 0x8e, 0x79, 0x71, 0x79, 0x81, 0x87, 0x8f, 0x94, -0x94, 0x92, 0x9a, 0xa4, 0xac, 0xae, 0xa8, 0x9e, 0x95, 0x8d, 0x8b, 0x95, 0xa0, 0xa3, 0x9a, 0x8d, -0x80, 0x78, 0x7c, 0x7a, 0x65, 0x47, 0x33, 0x34, 0x48, 0x64, 0x75, 0x74, 0x67, 0x60, 0x65, 0x6f, -0x76, 0x77, 0x6f, 0x62, 0x63, 0x70, 0x89, 0x98, 0x96, 0x89, 0x83, 0x85, 0x85, 0x89, 0x8b, 0x87, -0x7e, 0x78, 0x79, 0x83, 0x93, 0x99, 0x98, 0x9a, 0x9d, 0x9a, 0x96, 0x92, 0x8d, 0x84, 0x76, 0x75, -0x7e, 0x8b, 0x99, 0x9e, 0x99, 0x8d, 0x83, 0x7d, 0x81, 0x82, 0x74, 0x63, 0x58, 0x5a, 0x68, 0x7c, -0x88, 0x86, 0x7c, 0x76, 0x73, 0x79, 0x8b, 0x8f, 0x80, 0x68, 0x58, 0x57, 0x62, 0x75, 0x82, 0x81, -0x78, 0x76, 0x77, 0x7e, 0x87, 0x82, 0x72, 0x62, 0x60, 0x6b, 0x7c, 0x8d, 0x93, 0x8e, 0x87, 0x82, -0x7d, 0x7c, 0x76, 0x68, 0x59, 0x53, 0x52, 0x53, 0x58, 0x5f, 0x65, 0x67, 0x6a, 0x71, 0x78, 0x7d, -0x7c, 0x6f, 0x60, 0x5e, 0x65, 0x75, 0x8a, 0x94, 0x95, 0x8c, 0x84, 0x84, 0x87, 0x89, 0x82, 0x6f, -0x61, 0x5d, 0x65, 0x7b, 0x8e, 0x8d, 0x7e, 0x75, 0x74, 0x7d, 0x8b, 0x8f, 0x85, 0x74, 0x72, 0x7a, -0x84, 0x8c, 0x91, 0x93, 0x91, 0x8f, 0x8f, 0x94, 0x93, 0x8a, 0x7c, 0x6c, 0x6b, 0x70, 0x7a, 0x86, -0x87, 0x83, 0x79, 0x74, 0x72, 0x75, 0x7c, 0x7d, 0x75, 0x6d, 0x6c, 0x6f, 0x7c, 0x87, 0x88, 0x83, -0x83, 0x8b, 0x94, 0x9d, 0x9a, 0x90, 0x84, 0x85, 0x90, 0xa0, 0xb0, 0xb9, 0xb8, 0xaf, 0xab, 0xab, -0xb0, 0xb3, 0xa6, 0x8c, 0x79, 0x79, 0x84, 0x9b, 0xae, 0xb1, 0xa5, 0x9c, 0x9d, 0x9f, 0xa2, 0xa2, -0x91, 0x75, 0x61, 0x59, 0x63, 0x72, 0x78, 0x78, 0x71, 0x6b, 0x6b, 0x68, 0x63, 0x5b, 0x50, 0x4c, -0x52, 0x59, 0x65, 0x74, 0x7d, 0x85, 0x8f, 0x9e, 0xa9, 0xad, 0xb0, 0xaf, 0xa2, 0x98, 0x97, 0x9b, -0xab, 0xb3, 0xae, 0xa2, 0x95, 0x8e, 0x8e, 0x90, 0x8b, 0x78, 0x5c, 0x4d, 0x4d, 0x5e, 0x74, 0x7c, -0x74, 0x67, 0x62, 0x64, 0x6e, 0x78, 0x76, 0x6a, 0x61, 0x61, 0x68, 0x75, 0x7e, 0x82, 0x7c, 0x7a, -0x88, 0x97, 0xa2, 0xa5, 0xa1, 0x97, 0x8d, 0x8d, 0x92, 0x95, 0x8f, 0x87, 0x7e, 0x79, 0x7b, 0x80, -0x83, 0x80, 0x72, 0x64, 0x5f, 0x5f, 0x65, 0x6e, 0x6e, 0x67, 0x60, 0x5c, 0x5d, 0x64, 0x68, 0x66, -0x5f, 0x53, 0x49, 0x45, 0x4c, 0x5a, 0x65, 0x65, 0x62, 0x67, 0x72, 0x79, 0x71, 0x5f, 0x4b, 0x43, -0x48, 0x5e, 0x7a, 0x87, 0x85, 0x7b, 0x7e, 0x8b, 0x9b, 0xa2, 0x95, 0x7b, 0x6c, 0x6e, 0x7c, 0x92, -0x9e, 0x9e, 0x94, 0x88, 0x85, 0x83, 0x7e, 0x77, 0x6a, 0x5a, 0x53, 0x4e, 0x4b, 0x59, 0x6a, 0x74, -0x7d, 0x87, 0x8d, 0x8b, 0x87, 0x83, 0x7e, 0x7c, 0x80, 0x84, 0x8d, 0x9d, 0xa3, 0x9c, 0x90, 0x8d, -0x93, 0x9c, 0x9f, 0x94, 0x80, 0x71, 0x74, 0x80, 0x91, 0x9e, 0x9c, 0x92, 0x92, 0x9c, 0xae, 0xbd, -0xbe, 0xb3, 0xa0, 0x94, 0x92, 0x98, 0xa3, 0xa4, 0x9e, 0x97, 0x98, 0x9e, 0xa3, 0xa4, 0x9b, 0x8a, -0x7a, 0x78, 0x76, 0x78, 0x7d, 0x7d, 0x74, 0x70, 0x74, 0x7d, 0x8c, 0x8f, 0x84, 0x72, 0x66, 0x66, -0x6b, 0x75, 0x7e, 0x7d, 0x7a, 0x7b, 0x7e, 0x85, 0x8e, 0x93, 0x8c, 0x7e, 0x75, 0x71, 0x74, 0x80, -0x80, 0x76, 0x6c, 0x68, 0x69, 0x6b, 0x66, 0x57, 0x43, 0x3a, 0x3d, 0x43, 0x52, 0x5a, 0x5a, 0x57, -0x57, 0x5e, 0x70, 0x84, 0x85, 0x72, 0x62, 0x68, 0x78, 0x8b, 0x9d, 0xa4, 0x9d, 0x92, 0x8f, 0x8f, -0x93, 0x9e, 0xa1, 0x91, 0x81, 0x7b, 0x77, 0x7a, 0x89, 0x95, 0x99, 0x9c, 0xa1, 0xa6, 0xb0, 0xb0, -0xa6, 0x96, 0x8d, 0x8a, 0x8a, 0x93, 0x9f, 0xa1, 0x98, 0x94, 0x94, 0x95, 0x94, 0x84, 0x69, 0x54, -0x55, 0x58, 0x5a, 0x63, 0x67, 0x5c, 0x50, 0x57, 0x69, 0x80, 0x8f, 0x8b, 0x75, 0x64, 0x5e, 0x5d, -0x69, 0x7a, 0x81, 0x80, 0x82, 0x8d, 0x9e, 0xad, 0xb0, 0xa6, 0x99, 0x92, 0x8d, 0x8f, 0x9b, 0xa3, -0x9c, 0x8d, 0x85, 0x81, 0x7e, 0x82, 0x7e, 0x71, 0x60, 0x5b, 0x5e, 0x64, 0x67, 0x66, 0x66, 0x6a, -0x72, 0x7b, 0x88, 0x8c, 0x88, 0x7b, 0x6c, 0x61, 0x67, 0x7b, 0x86, 0x87, 0x81, 0x7e, 0x84, 0x8d, -0x96, 0x92, 0x82, 0x73, 0x76, 0x83, 0x8e, 0x98, 0x9f, 0xa1, 0xa0, 0x9d, 0x9e, 0xa8, 0xac, 0xa1, -0x8c, 0x7d, 0x7c, 0x7d, 0x80, 0x80, 0x7b, 0x77, 0x72, 0x6f, 0x76, 0x82, 0x7b, 0x68, 0x57, 0x50, -0x4d, 0x4d, 0x5f, 0x70, 0x78, 0x75, 0x72, 0x74, 0x85, 0x92, 0x8f, 0x88, 0x7e, 0x79, 0x78, 0x7e, -0x86, 0x89, 0x87, 0x80, 0x7d, 0x7c, 0x80, 0x78, 0x6c, 0x62, 0x5e, 0x60, 0x60, 0x68, 0x72, 0x72, -0x6a, 0x6c, 0x76, 0x86, 0x90, 0x88, 0x78, 0x6b, 0x67, 0x63, 0x6b, 0x78, 0x82, 0x81, 0x7b, 0x84, -0x94, 0xa0, 0xa8, 0xa4, 0x96, 0x8b, 0x89, 0x8b, 0x8d, 0x88, 0x83, 0x7b, 0x6f, 0x6c, 0x67, 0x63, -0x60, 0x59, 0x51, 0x4a, 0x47, 0x47, 0x47, 0x44, 0x42, 0x48, 0x55, 0x68, 0x7d, 0x93, 0xa1, 0x9f, -0x95, 0x93, 0x94, 0x91, 0x8c, 0x83, 0x72, 0x6d, 0x71, 0x77, 0x86, 0x8f, 0x83, 0x6a, 0x61, 0x6b, -0x76, 0x81, 0x83, 0x81, 0x80, 0x82, 0x85, 0x8d, 0x9d, 0xaa, 0xab, 0xa6, 0xa6, 0xac, 0xac, 0xa6, -0xae, 0xb0, 0xac, 0xb1, 0xc4, 0xdb, 0xe3, 0xd3, 0xb9, 0xa2, 0x97, 0x92, 0x94, 0x9b, 0x98, 0x92, -0x8c, 0x94, 0xa6, 0xb5, 0xb1, 0x9b, 0x83, 0x7b, 0x84, 0x92, 0xa3, 0xa9, 0xa4, 0x9e, 0x9c, 0x9d, -0xa3, 0x9d, 0x89, 0x6e, 0x58, 0x55, 0x55, 0x51, 0x4b, 0x3f, 0x37, 0x3b, 0x4b, 0x5f, 0x6b, 0x6a, -0x60, 0x48, 0x4c, 0x60, 0x6a, 0x6d, 0x70, 0x75, 0x7a, 0x86, 0x91, 0x95, 0xa2, 0xa4, 0x9a, 0x9a, -0xa8, 0xa9, 0x9f, 0x98, 0x97, 0x98, 0x9a, 0x9e, 0x96, 0x89, 0x87, 0x84, 0x7d, 0x76, 0x6a, 0x5a, -0x52, 0x51, 0x51, 0x53, 0x4f, 0x4b, 0x51, 0x63, 0x72, 0x77, 0x7b, 0x75, 0x6d, 0x6c, 0x5f, 0x60, -0x65, 0x57, 0x4b, 0x45, 0x4f, 0x5e, 0x72, 0x79, 0x69, 0x63, 0x66, 0x6d, 0x7c, 0x87, 0x8a, 0x84, -0x80, 0x8a, 0x97, 0xa3, 0xa3, 0x8f, 0x7a, 0x78, 0x7a, 0x85, 0x8a, 0x83, 0x81, 0x73, 0x68, 0x78, -0x84, 0x83, 0x78, 0x63, 0x54, 0x55, 0x5e, 0x6b, 0x6a, 0x5d, 0x58, 0x58, 0x5b, 0x6f, 0x86, 0x80, -0x6f, 0x73, 0x79, 0x87, 0x9d, 0xa8, 0xa7, 0xac, 0xa7, 0xa3, 0xaf, 0xbc, 0xb8, 0x9a, 0x8a, 0x85, -0x8f, 0x95, 0x8b, 0x78, 0x6a, 0x5e, 0x59, 0x62, 0x6f, 0x76, 0x70, 0x68, 0x6a, 0x77, 0x7c, 0x68, -0x4f, 0x51, 0x58, 0x5b, 0x69, 0x77, 0x7d, 0x83, 0x83, 0x72, 0x7c, 0x8c, 0x77, 0x6d, 0x77, 0x7c, -0x81, 0x83, 0x81, 0x7d, 0x85, 0x90, 0x92, 0x89, 0x82, 0x81, 0x77, 0x80, 0x90, 0x9d, 0x97, 0x8a, -0x93, 0xa5, 0xb2, 0xbf, 0xce, 0xc3, 0xab, 0x9a, 0x8f, 0x8c, 0x89, 0x80, 0x7c, 0x86, 0x8e, 0x99, -0x93, 0x87, 0x81, 0x74, 0x77, 0x85, 0x86, 0x86, 0x87, 0x7d, 0x76, 0x7c, 0x85, 0x8e, 0x93, 0x8c, -0x79, 0x6f, 0x77, 0x81, 0x91, 0x9f, 0x99, 0x86, 0x7e, 0x7d, 0x8b, 0xaf, 0xbb, 0xa8, 0x98, 0x8e, -0x8d, 0x99, 0x9d, 0x98, 0x99, 0x99, 0x90, 0x8d, 0x8b, 0x93, 0x9b, 0x87, 0x76, 0x77, 0x90, 0x9a, -0x85, 0x73, 0x70, 0x73, 0x82, 0x97, 0xa4, 0x88, 0x66, 0x52, 0x48, 0x56, 0x60, 0x52, 0x3b, 0x3a, -0x45, 0x56, 0x69, 0x71, 0x77, 0x6f, 0x5e, 0x6c, 0x82, 0x78, 0x5a, 0x4f, 0x5b, 0x6f, 0x88, 0x95, -0x8f, 0x91, 0xa5, 0xa7, 0x9d, 0x9f, 0x91, 0x78, 0x7d, 0x78, 0x77, 0x85, 0x74, 0x5e, 0x5e, 0x6b, -0x6d, 0x65, 0x5c, 0x56, 0x51, 0x4f, 0x61, 0x77, 0x79, 0x6f, 0x67, 0x60, 0x64, 0x6f, 0x7b, 0x85, -0x83, 0x73, 0x64, 0x54, 0x58, 0x5d, 0x62, 0x72, 0x6e, 0x6b, 0x73, 0x7c, 0x81, 0x7e, 0x8e, 0x9f, -0xaa, 0xb9, 0xd0, 0xc8, 0xaf, 0xa4, 0x9e, 0xa3, 0xb2, 0xb9, 0xb2, 0x9e, 0x9a, 0x98, 0xa0, 0xa3, -0x93, 0x78, 0x6b, 0x67, 0x62, 0x61, 0x6b, 0x71, 0x68, 0x6a, 0x66, 0x63, 0x67, 0x65, 0x5d, 0x59, -0x5e, 0x65, 0x74, 0x7b, 0x7b, 0x86, 0x8c, 0x94, 0xa5, 0xa7, 0x94, 0x81, 0x81, 0x77, 0x75, 0x88, -0x9f, 0x94, 0x83, 0x80, 0x87, 0x8d, 0x8d, 0x81, 0x76, 0x6b, 0x6d, 0x7b, 0x8c, 0x8e, 0x81, 0x86, -0x8a, 0x77, 0x6e, 0x69, 0x53, 0x3c, 0x3f, 0x48, 0x5c, 0x75, 0x72, 0x69, 0x6a, 0x88, 0x9e, 0xa1, -0x8d, 0x73, 0x60, 0x57, 0x56, 0x60, 0x5f, 0x5e, 0x59, 0x6e, 0x80, 0x84, 0x8b, 0x8b, 0x78, 0x6b, -0x66, 0x71, 0x85, 0x84, 0x7b, 0x82, 0x8d, 0x93, 0x9e, 0xa1, 0x9e, 0x90, 0x85, 0x83, 0x71, 0x6b, -0x6d, 0x69, 0x6e, 0x78, 0x72, 0x76, 0x87, 0x8c, 0x85, 0x88, 0x87, 0x87, 0x8f, 0x8f, 0x97, 0xa1, -0xa2, 0xa0, 0xa7, 0xa4, 0x99, 0x90, 0x88, 0x88, 0x88, 0x9e, 0xae, 0xb0, 0xaf, 0xa8, 0xa1, 0x9c, -0x97, 0x9a, 0x9c, 0x9a, 0x84, 0x7d, 0x95, 0x9d, 0x8e, 0x85, 0x89, 0x91, 0x9d, 0xa7, 0xad, 0xa6, -0x98, 0x8e, 0x8b, 0x88, 0x85, 0x7d, 0x72, 0x6c, 0x7b, 0x92, 0xa0, 0x92, 0x70, 0x59, 0x50, 0x58, -0x60, 0x59, 0x51, 0x43, 0x46, 0x5e, 0x72, 0x6c, 0x57, 0x5f, 0x73, 0x86, 0x96, 0x9a, 0x91, 0x89, -0x84, 0x7a, 0x76, 0x81, 0x94, 0x90, 0x79, 0x7e, 0xa3, 0xbe, 0xb6, 0x9d, 0x89, 0x7e, 0x84, 0x87, -0x79, 0x65, 0x4f, 0x4f, 0x56, 0x58, 0x5d, 0x6a, 0x72, 0x6f, 0x7d, 0x8e, 0x8c, 0x89, 0x81, 0x71, -0x68, 0x5e, 0x5c, 0x71, 0x74, 0x6a, 0x6e, 0x7a, 0x85, 0x7a, 0x7a, 0x7a, 0x73, 0x77, 0x80, 0x7b, -0x76, 0x7a, 0x86, 0x93, 0x95, 0x99, 0xb1, 0xb8, 0xad, 0x9d, 0x90, 0x8e, 0x96, 0x9a, 0x96, 0x92, -0x93, 0x8b, 0x80, 0x83, 0x7b, 0x7c, 0x82, 0x85, 0x81, 0x84, 0x87, 0x95, 0x92, 0x81, 0x6d, 0x58, -0x5d, 0x6a, 0x5d, 0x4a, 0x47, 0x50, 0x61, 0x6d, 0x74, 0x7c, 0x79, 0x83, 0x90, 0x96, 0x8d, 0x79, -0x68, 0x5d, 0x57, 0x52, 0x63, 0x73, 0x60, 0x56, 0x5b, 0x5f, 0x60, 0x5c, 0x48, 0x30, 0x2b, 0x39, -0x57, 0x56, 0x4a, 0x4d, 0x5a, 0x53, 0x4b, 0x4b, 0x47, 0x3f, 0x34, 0x3d, 0x54, 0x5e, 0x59, 0x54, -0x50, 0x4d, 0x5e, 0x70, 0x73, 0x69, 0x57, 0x55, 0x64, 0x74, 0x7c, 0x72, 0x6a, 0x6b, 0x83, 0x95, -0x9f, 0xad, 0xb0, 0xaa, 0xad, 0xbd, 0xca, 0xd4, 0xe3, 0xe5, 0xec, 0xec, 0xea, 0xf4, 0xee, 0xd5, -0xbc, 0xac, 0xac, 0xb6, 0xb3, 0xb1, 0xae, 0xb6, 0xb9, 0xb5, 0xaf, 0xb5, 0xb4, 0x9f, 0x9f, 0xaa, -0xb9, 0xbf, 0xaf, 0xa0, 0x98, 0x87, 0x85, 0x8f, 0x98, 0x94, 0x8a, 0x8c, 0xae, 0xbd, 0xc0, 0xb4, -0xa0, 0xa1, 0x8c, 0x72, 0x81, 0x95, 0xa0, 0x88, 0x71, 0x77, 0x95, 0x92, 0x72, 0x75, 0x84, 0x8e, -0x95, 0x88, 0x68, 0x4a, 0x4e, 0x51, 0x57, 0x6f, 0x82, 0x81, 0x76, 0x72, 0x76, 0x7b, 0x61, 0x3c, -0x36, 0x41, 0x46, 0x50, 0x63, 0x66, 0x5b, 0x50, 0x59, 0x64, 0x5f, 0x53, 0x57, 0x62, 0x70, 0x73, -0x72, 0x72, 0x6d, 0x6b, 0x71, 0x81, 0x95, 0xa7, 0xa9, 0x9d, 0x90, 0x92, 0x97, 0x9a, 0x96, 0x8d, -0x86, 0x84, 0x82, 0x80, 0x7b, 0x73, 0x5e, 0x50, 0x50, 0x5d, 0x7e, 0x9a, 0x9e, 0x9a, 0x8f, 0x85, -0x88, 0x8c, 0x7c, 0x64, 0x58, 0x60, 0x71, 0x80, 0x71, 0x5c, 0x54, 0x54, 0x50, 0x5c, 0x76, 0x80, -0x82, 0x83, 0x82, 0x7e, 0x8b, 0x99, 0xa7, 0xaf, 0xaf, 0xac, 0xa8, 0xa0, 0x97, 0x89, 0x7d, 0x77, -0x7c, 0x7e, 0x73, 0x67, 0x6c, 0x68, 0x5e, 0x5b, 0x5b, 0x52, 0x3c, 0x2f, 0x35, 0x4c, 0x57, 0x53, -0x4d, 0x3e, 0x31, 0x30, 0x34, 0x34, 0x38, 0x3b, 0x4b, 0x63, 0x7a, 0x84, 0x7d, 0x7b, 0x97, 0xab, -0xa4, 0x96, 0x84, 0x72, 0x6a, 0x71, 0x86, 0x9d, 0xa3, 0x98, 0x8f, 0x8c, 0x88, 0x93, 0x9d, 0x95, -0x86, 0x83, 0x84, 0x84, 0x81, 0x78, 0x76, 0x74, 0x78, 0x7a, 0x78, 0x75, 0x69, 0x62, 0x64, 0x5e, -0x6c, 0x82, 0x87, 0x82, 0x7a, 0x7a, 0x85, 0x8f, 0x9a, 0xa2, 0xa4, 0xa3, 0x9f, 0xa4, 0xb0, 0xbd, -0xbd, 0xbb, 0xbb, 0xbc, 0xc1, 0xcb, 0xcb, 0xc4, 0xc1, 0xc1, 0xcc, 0xce, 0xc4, 0xaf, 0xa0, 0xa3, -0xa9, 0xa9, 0x98, 0x84, 0x6f, 0x67, 0x6b, 0x77, 0x81, 0x80, 0x7c, 0x82, 0x83, 0x86, 0x8f, 0x88, -0x7a, 0x77, 0x7d, 0x85, 0x8d, 0x8c, 0x85, 0x81, 0x87, 0x94, 0x9b, 0x94, 0x80, 0x69, 0x68, 0x74, -0x82, 0x8e, 0x8f, 0x84, 0x79, 0x79, 0x83, 0x8f, 0x8c, 0x77, 0x63, 0x55, 0x4d, 0x52, 0x62, 0x6f, -0x71, 0x70, 0x75, 0x76, 0x74, 0x6a, 0x5b, 0x50, 0x4e, 0x4c, 0x51, 0x5a, 0x5c, 0x5b, 0x62, 0x6b, -0x74, 0x7d, 0x82, 0x73, 0x5c, 0x56, 0x5e, 0x6e, 0x7b, 0x85, 0x89, 0x8e, 0x96, 0x9d, 0xa7, 0xaa, -0x9e, 0x8b, 0x7b, 0x70, 0x6d, 0x72, 0x7c, 0x87, 0x90, 0x90, 0x92, 0x96, 0x92, 0x83, 0x77, 0x7c, -0x84, 0x8e, 0x90, 0x89, 0x80, 0x7d, 0x7a, 0x7d, 0x85, 0x80, 0x71, 0x69, 0x68, 0x73, 0x8a, 0x94, -0x8c, 0x7e, 0x7e, 0x81, 0x82, 0x7a, 0x69, 0x53, 0x46, 0x4b, 0x57, 0x62, 0x61, 0x55, 0x4c, 0x50, -0x5c, 0x6d, 0x73, 0x69, 0x58, 0x55, 0x61, 0x7d, 0x9b, 0xb0, 0xbb, 0xc4, 0xce, 0xd4, 0xd8, 0xce, -0xb8, 0xa1, 0x98, 0x96, 0x98, 0x9b, 0x93, 0x84, 0x7c, 0x7a, 0x7e, 0x88, 0x84, 0x71, 0x5f, 0x59, -0x5c, 0x66, 0x73, 0x75, 0x69, 0x5f, 0x5a, 0x5c, 0x68, 0x70, 0x70, 0x71, 0x79, 0x7e, 0x84, 0x88, -0x89, 0x8f, 0x97, 0x96, 0x91, 0x88, 0x7d, 0x71, 0x6e, 0x72, 0x7c, 0x8b, 0x91, 0x90, 0x8a, 0x8c, -0x89, 0x86, 0x88, 0x81, 0x73, 0x68, 0x5e, 0x5e, 0x67, 0x6d, 0x6d, 0x69, 0x62, 0x57, 0x55, 0x5b, -0x5a, 0x4f, 0x4d, 0x54, 0x60, 0x6c, 0x6d, 0x66, 0x65, 0x6e, 0x7c, 0x93, 0xa2, 0x9a, 0x84, 0x72, -0x6a, 0x73, 0x81, 0x84, 0x7e, 0x7a, 0x82, 0x93, 0xa5, 0xaf, 0xaa, 0x98, 0x90, 0x93, 0xa2, 0xaa, -0xa3, 0x97, 0x95, 0x95, 0x96, 0x95, 0x87, 0x6c, 0x54, 0x4d, 0x56, 0x69, 0x73, 0x6c, 0x62, 0x68, -0x77, 0x86, 0x96, 0x9f, 0x98, 0x8f, 0x86, 0x82, 0x8c, 0x93, 0x8e, 0x87, 0x8c, 0x93, 0x98, 0x97, -0x8a, 0x77, 0x6c, 0x6c, 0x76, 0x87, 0x90, 0x90, 0x94, 0x9a, 0x9d, 0xa4, 0xa6, 0x98, 0x82, 0x78, -0x77, 0x7b, 0x87, 0x8e, 0x8e, 0x8b, 0x8c, 0x8f, 0x92, 0x90, 0x8b, 0x88, 0x8e, 0x95, 0x9e, 0xa2, -0xa1, 0x9c, 0x9b, 0xa1, 0xa7, 0xac, 0xaa, 0x9b, 0x84, 0x73, 0x70, 0x75, 0x7a, 0x80, 0x84, 0x83, -0x7c, 0x79, 0x80, 0x7e, 0x74, 0x6a, 0x65, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x73, 0x78, 0x7a, 0x7b, -0x79, 0x6d, 0x62, 0x60, 0x6c, 0x87, 0x9a, 0x98, 0x87, 0x7a, 0x74, 0x7b, 0x8b, 0x91, 0x89, 0x7a, -0x75, 0x7c, 0x8f, 0x9f, 0xa9, 0xa9, 0xa3, 0x99, 0x95, 0x93, 0x85, 0x6c, 0x5d, 0x5c, 0x67, 0x72, -0x6e, 0x61, 0x57, 0x58, 0x63, 0x74, 0x7c, 0x75, 0x64, 0x5f, 0x6a, 0x83, 0x9c, 0xa8, 0xa5, 0xa0, -0x9c, 0x99, 0x9d, 0x9f, 0x92, 0x7b, 0x6f, 0x6f, 0x78, 0x81, 0x80, 0x7d, 0x88, 0x8e, 0x8a, 0x85, -0x7b, 0x6f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x57, 0x47, 0x42, 0x44, 0x45, 0x45, 0x44, 0x40, 0x39, -0x35, 0x3c, 0x4b, 0x51, 0x4d, 0x4e, 0x5a, 0x66, 0x6e, 0x71, 0x6d, 0x66, 0x60, 0x5e, 0x61, 0x6f, -0x7d, 0x85, 0x86, 0x86, 0x81, 0x81, 0x7d, 0x72, 0x63, 0x5d, 0x59, 0x5b, 0x69, 0x73, 0x71, 0x6b, -0x6f, 0x74, 0x73, 0x6f, 0x69, 0x5e, 0x5b, 0x5b, 0x63, 0x75, 0x80, 0x82, 0x81, 0x82, 0x88, 0x96, -0x9e, 0x95, 0x81, 0x73, 0x6b, 0x74, 0x8a, 0x9c, 0xa6, 0xb0, 0xb9, 0xc8, 0xd6, 0xdc, 0xd9, 0xd0, -0xc7, 0xc5, 0xce, 0xd5, 0xd4, 0xc9, 0xbf, 0xbb, 0xbd, 0xbe, 0xb7, 0xa2, 0x8f, 0x88, 0x89, 0x93, -0x99, 0x93, 0x8c, 0x8a, 0x8e, 0x9b, 0xa9, 0xa5, 0x93, 0x8a, 0x89, 0x8d, 0x9a, 0xa8, 0xa9, 0xa3, -0xa0, 0xa0, 0xa4, 0xa5, 0x9b, 0x8e, 0x8c, 0x93, 0x9a, 0x9d, 0x96, 0x91, 0x91, 0x91, 0x90, 0x8c, -0x84, 0x76, 0x62, 0x56, 0x51, 0x52, 0x54, 0x53, 0x50, 0x48, 0x42, 0x43, 0x4d, 0x54, 0x4a, 0x3d, -0x39, 0x3d, 0x46, 0x52, 0x61, 0x6d, 0x7a, 0x80, 0x7d, 0x81, 0x8a, 0x8c, 0x88, 0x8a, 0x8f, 0x97, -0x99, 0x91, 0x8a, 0x86, 0x82, 0x82, 0x8a, 0x8b, 0x84, 0x7c, 0x7b, 0x7d, 0x82, 0x85, 0x81, 0x76, -0x71, 0x6d, 0x72, 0x80, 0x84, 0x79, 0x6d, 0x67, 0x68, 0x73, 0x75, 0x6e, 0x67, 0x63, 0x61, 0x5e, -0x60, 0x5f, 0x51, 0x45, 0x43, 0x4e, 0x61, 0x6a, 0x72, 0x75, 0x77, 0x79, 0x86, 0x90, 0x8c, 0x85, -0x81, 0x86, 0x94, 0xa2, 0xa8, 0xa2, 0x9d, 0x9e, 0xa4, 0xb4, 0xbe, 0xb5, 0xa1, 0x94, 0x91, 0x9f, -0xa7, 0x98, 0x8a, 0x86, 0x80, 0x79, 0x7e, 0x81, 0x75, 0x65, 0x5b, 0x5b, 0x64, 0x67, 0x68, 0x69, -0x77, 0x88, 0x91, 0x93, 0x90, 0x83, 0x71, 0x68, 0x62, 0x5f, 0x57, 0x4e, 0x4c, 0x51, 0x55, 0x53, -0x4f, 0x4b, 0x42, 0x37, 0x38, 0x46, 0x59, 0x68, 0x72, 0x7b, 0x85, 0x86, 0x82, 0x86, 0x8f, 0x98, -0x97, 0x91, 0x8e, 0x8d, 0x8c, 0x8d, 0x93, 0x9c, 0x9e, 0x9b, 0x92, 0x8a, 0x83, 0x7c, 0x7b, 0x7b, -0x7d, 0x7e, 0x7c, 0x80, 0x86, 0x8a, 0x8a, 0x8a, 0x8a, 0x88, 0x7a, 0x6f, 0x75, 0x89, 0x99, 0xa5, -0xaf, 0xb1, 0xaa, 0x9f, 0x98, 0x99, 0x97, 0x8d, 0x81, 0x7d, 0x83, 0x8a, 0x8a, 0x89, 0x8e, 0x96, -0x9d, 0xac, 0xbb, 0xba, 0xad, 0xa1, 0xa0, 0xa6, 0xa3, 0x94, 0x84, 0x7a, 0x77, 0x80, 0x89, 0x81, -0x70, 0x67, 0x63, 0x67, 0x6c, 0x66, 0x5b, 0x57, 0x5d, 0x64, 0x6b, 0x68, 0x5f, 0x58, 0x54, 0x55, -0x5c, 0x5b, 0x53, 0x55, 0x64, 0x76, 0x8b, 0x93, 0x96, 0xa1, 0xac, 0xb4, 0xba, 0xb3, 0xa2, 0x9b, -0x9f, 0xa0, 0xa3, 0xa0, 0x8e, 0x7c, 0x72, 0x71, 0x74, 0x6c, 0x5b, 0x4d, 0x46, 0x49, 0x50, 0x52, -0x4e, 0x53, 0x62, 0x74, 0x84, 0x84, 0x78, 0x75, 0x80, 0x85, 0x88, 0x87, 0x80, 0x78, 0x74, 0x74, -0x77, 0x79, 0x73, 0x6c, 0x6c, 0x69, 0x71, 0x83, 0x8a, 0x8a, 0x92, 0x9c, 0xa2, 0x9d, 0x91, 0x8a, -0x94, 0xa2, 0xab, 0xb6, 0xb3, 0xa0, 0x93, 0x91, 0x95, 0x9d, 0x9d, 0x92, 0x88, 0x81, 0x7d, 0x7e, -0x79, 0x73, 0x71, 0x6e, 0x6a, 0x71, 0x79, 0x78, 0x75, 0x75, 0x79, 0x86, 0x8d, 0x89, 0x84, 0x84, -0x86, 0x91, 0x94, 0x89, 0x82, 0x7d, 0x78, 0x87, 0x99, 0xa1, 0xa1, 0x9f, 0x98, 0x97, 0x96, 0x8f, -0x88, 0x87, 0x8c, 0x9a, 0xa3, 0xa0, 0x97, 0x95, 0x9b, 0xa2, 0xa4, 0x94, 0x7e, 0x73, 0x6c, 0x6c, -0x70, 0x6a, 0x60, 0x60, 0x67, 0x78, 0x8a, 0x8b, 0x83, 0x7e, 0x79, 0x7a, 0x7d, 0x7a, 0x6e, 0x60, -0x55, 0x56, 0x5b, 0x51, 0x3f, 0x35, 0x36, 0x40, 0x4f, 0x59, 0x5e, 0x68, 0x74, 0x7d, 0x85, 0x85, -0x7e, 0x7b, 0x7d, 0x85, 0x8f, 0x90, 0x87, 0x80, 0x79, 0x70, 0x6b, 0x62, 0x55, 0x4e, 0x50, 0x55, -0x5d, 0x5f, 0x57, 0x4e, 0x53, 0x5e, 0x6b, 0x70, 0x67, 0x5a, 0x5d, 0x63, 0x69, 0x6c, 0x63, 0x57, -0x51, 0x50, 0x5e, 0x72, 0x83, 0x8b, 0x8b, 0x88, 0x8b, 0x93, 0x96, 0x91, 0x87, 0x7e, 0x83, 0x8c, -0x89, 0x7c, 0x7b, 0x85, 0x96, 0xa5, 0xa6, 0xa2, 0xa8, 0xaa, 0xab, 0xab, 0xa3, 0x99, 0x97, 0x9d, -0xa6, 0xb2, 0xb7, 0xb4, 0xb0, 0xac, 0xa8, 0xa5, 0x9b, 0x82, 0x71, 0x6c, 0x76, 0x8c, 0x93, 0x83, -0x72, 0x76, 0x82, 0x8c, 0x8b, 0x7a, 0x6c, 0x6c, 0x7a, 0x92, 0xa5, 0xa3, 0x9a, 0x94, 0x92, 0xa0, -0xb3, 0xb7, 0xaf, 0xac, 0xb0, 0xb5, 0xb0, 0xa2, 0x9b, 0x9a, 0x91, 0x8d, 0x8c, 0x7e, 0x70, 0x6e, -0x71, 0x76, 0x75, 0x68, 0x5c, 0x60, 0x68, 0x71, 0x79, 0x71, 0x63, 0x65, 0x70, 0x80, 0x8b, 0x86, -0x76, 0x71, 0x70, 0x70, 0x6f, 0x61, 0x4f, 0x4b, 0x53, 0x69, 0x85, 0x91, 0x89, 0x7c, 0x7b, 0x83, -0x8d, 0x8e, 0x81, 0x77, 0x7c, 0x8b, 0x9d, 0xa6, 0x9e, 0x94, 0x8f, 0x8c, 0x89, 0x84, 0x7e, 0x83, -0x8d, 0x94, 0x97, 0x97, 0x8c, 0x7c, 0x75, 0x73, 0x7b, 0x7e, 0x70, 0x60, 0x63, 0x70, 0x7a, 0x75, -0x66, 0x5d, 0x65, 0x72, 0x7e, 0x84, 0x79, 0x69, 0x6b, 0x7a, 0x93, 0xa4, 0xa6, 0xa2, 0xa1, 0xa2, -0xa7, 0xa3, 0x90, 0x78, 0x72, 0x7b, 0x8b, 0x9c, 0xa1, 0x96, 0x8c, 0x8a, 0x8e, 0x8f, 0x88, 0x76, -0x6c, 0x6b, 0x6e, 0x73, 0x73, 0x6e, 0x6d, 0x70, 0x77, 0x7a, 0x75, 0x6e, 0x70, 0x79, 0x84, 0x82, -0x6a, 0x4d, 0x3d, 0x3a, 0x3c, 0x40, 0x3f, 0x32, 0x28, 0x2f, 0x43, 0x52, 0x51, 0x4a, 0x44, 0x45, -0x4f, 0x63, 0x6b, 0x61, 0x61, 0x72, 0x86, 0x8e, 0x84, 0x74, 0x6e, 0x6d, 0x6d, 0x75, 0x79, 0x72, -0x6c, 0x6c, 0x6f, 0x77, 0x84, 0x83, 0x6f, 0x66, 0x6f, 0x7b, 0x76, 0x65, 0x5c, 0x62, 0x72, 0x82, -0x85, 0x7b, 0x73, 0x77, 0x80, 0x8c, 0x93, 0x8b, 0x82, 0x8c, 0xa1, 0xba, 0xc0, 0xb1, 0xa0, 0x9a, -0x9b, 0xa5, 0xb1, 0xb4, 0xaf, 0xaf, 0xb5, 0xc1, 0xc3, 0xb8, 0xac, 0xab, 0xb2, 0xbd, 0xc5, 0xbd, -0xab, 0xa1, 0xa0, 0xa6, 0xb0, 0xaa, 0x96, 0x8c, 0x87, 0x8c, 0x95, 0x8c, 0x76, 0x71, 0x79, 0x84, -0x87, 0x80, 0x78, 0x73, 0x6f, 0x72, 0x79, 0x77, 0x6d, 0x6a, 0x6f, 0x74, 0x7e, 0x86, 0x81, 0x78, -0x7c, 0x8d, 0xa4, 0xa8, 0x97, 0x92, 0x9f, 0xa9, 0xaf, 0xa9, 0x91, 0x7b, 0x71, 0x6e, 0x6c, 0x68, -0x66, 0x69, 0x69, 0x68, 0x70, 0x73, 0x65, 0x57, 0x55, 0x5d, 0x69, 0x6b, 0x65, 0x60, 0x65, 0x70, -0x80, 0x84, 0x73, 0x5a, 0x4f, 0x4d, 0x51, 0x58, 0x52, 0x4b, 0x54, 0x5e, 0x69, 0x72, 0x7b, 0x84, -0x86, 0x85, 0x8a, 0x8d, 0x86, 0x7e, 0x84, 0x8a, 0x8e, 0x89, 0x7c, 0x73, 0x71, 0x77, 0x86, 0x94, -0x96, 0x8e, 0x8a, 0x89, 0x8f, 0x9a, 0x96, 0x85, 0x75, 0x75, 0x82, 0x85, 0x78, 0x70, 0x79, 0x89, -0x95, 0x99, 0x96, 0x8b, 0x7e, 0x7a, 0x81, 0x86, 0x82, 0x80, 0x8a, 0x97, 0xa4, 0xb4, 0xc0, 0xbf, -0xb7, 0xae, 0xa6, 0xa8, 0xa8, 0x9f, 0x97, 0x9a, 0x9d, 0x9b, 0x92, 0x87, 0x89, 0x92, 0x97, 0x98, -0x8c, 0x73, 0x62, 0x5d, 0x5e, 0x5e, 0x58, 0x50, 0x4b, 0x4b, 0x4a, 0x52, 0x5d, 0x63, 0x67, 0x6d, -0x6e, 0x6a, 0x65, 0x5b, 0x4b, 0x44, 0x43, 0x46, 0x45, 0x3d, 0x3d, 0x48, 0x4e, 0x51, 0x55, 0x54, -0x4c, 0x4c, 0x52, 0x5a, 0x5b, 0x56, 0x5a, 0x68, 0x74, 0x77, 0x76, 0x73, 0x6f, 0x6f, 0x6e, 0x6c, -0x69, 0x63, 0x54, 0x4a, 0x4a, 0x53, 0x5e, 0x66, 0x6a, 0x78, 0x8a, 0x99, 0xa0, 0x9d, 0x96, 0x97, -0x9d, 0xa4, 0xa3, 0x9a, 0x92, 0x98, 0xa0, 0xa8, 0xb4, 0xba, 0xb9, 0xbb, 0xb9, 0xb6, 0xb7, 0xb6, -0xb0, 0xaf, 0xb3, 0xba, 0xbd, 0xb7, 0xaf, 0xb2, 0xbd, 0xbd, 0xb3, 0xa5, 0x9b, 0x9a, 0x9f, 0xa4, -0xa9, 0xa0, 0x8f, 0x89, 0x93, 0xa0, 0xa9, 0xaa, 0xa4, 0x9e, 0x9c, 0x98, 0x8f, 0x82, 0x74, 0x6d, -0x6e, 0x73, 0x77, 0x6c, 0x58, 0x55, 0x66, 0x74, 0x7b, 0x77, 0x6d, 0x6c, 0x75, 0x79, 0x7a, 0x78, -0x71, 0x64, 0x61, 0x6e, 0x82, 0x89, 0x7e, 0x73, 0x74, 0x70, 0x63, 0x52, 0x3f, 0x35, 0x3c, 0x4b, -0x5c, 0x63, 0x57, 0x4c, 0x54, 0x62, 0x6f, 0x71, 0x6b, 0x60, 0x54, 0x50, 0x52, 0x53, 0x51, 0x55, -0x64, 0x74, 0x84, 0x8d, 0x8e, 0x87, 0x86, 0x86, 0x82, 0x7a, 0x6a, 0x5e, 0x61, 0x6d, 0x83, 0x98, -0x9f, 0x9f, 0xa6, 0xb3, 0xc0, 0xc4, 0xbc, 0xb5, 0xba, 0xc2, 0xc1, 0xb6, 0xa4, 0x92, 0x8d, 0x94, -0x9f, 0xaa, 0xaa, 0xa2, 0x9c, 0x9b, 0x99, 0x99, 0x98, 0x90, 0x83, 0x76, 0x74, 0x7d, 0x7d, 0x76, -0x79, 0x8d, 0xa0, 0xa7, 0xa1, 0x96, 0x8f, 0x90, 0x8e, 0x87, 0x77, 0x65, 0x5e, 0x61, 0x6d, 0x82, -0x9a, 0xa7, 0xa8, 0xa8, 0xa4, 0xa1, 0x99, 0x88, 0x75, 0x6f, 0x6c, 0x6f, 0x6c, 0x60, 0x55, 0x5c, -0x6d, 0x83, 0x8a, 0x7c, 0x6d, 0x6b, 0x6b, 0x70, 0x75, 0x71, 0x69, 0x66, 0x63, 0x67, 0x71, 0x79, -0x7e, 0x88, 0x8e, 0x8e, 0x88, 0x7b, 0x6d, 0x65, 0x5d, 0x59, 0x57, 0x49, 0x39, 0x38, 0x41, 0x51, -0x61, 0x62, 0x5b, 0x58, 0x59, 0x5e, 0x5e, 0x51, 0x42, 0x3f, 0x44, 0x49, 0x49, 0x4d, 0x55, 0x60, -0x71, 0x85, 0x90, 0x8f, 0x85, 0x7e, 0x79, 0x7b, 0x8c, 0x99, 0x98, 0x94, 0x93, 0x96, 0xa0, 0xa1, -0x9a, 0x98, 0x9a, 0x9c, 0x9c, 0x93, 0x85, 0x78, 0x75, 0x79, 0x80, 0x7c, 0x75, 0x77, 0x85, 0x92, -0x9c, 0x9d, 0x95, 0x87, 0x7e, 0x7a, 0x7e, 0x83, 0x7b, 0x75, 0x80, 0x8e, 0x97, 0x96, 0x8c, 0x82, -0x87, 0x97, 0xac, 0xb7, 0xac, 0x9e, 0x97, 0x8f, 0x8e, 0x91, 0x93, 0x8c, 0x80, 0x72, 0x6d, 0x66, -0x5c, 0x5a, 0x64, 0x69, 0x67, 0x61, 0x58, 0x51, 0x51, 0x5a, 0x6b, 0x75, 0x6d, 0x66, 0x6a, 0x74, -0x84, 0x91, 0x8f, 0x85, 0x7d, 0x78, 0x7b, 0x82, 0x82, 0x85, 0x99, 0xb0, 0xbf, 0xbd, 0xac, 0x99, -0x8e, 0x8d, 0x92, 0x96, 0x8f, 0x85, 0x83, 0x82, 0x86, 0x93, 0x99, 0x91, 0x83, 0x75, 0x6c, 0x68, -0x63, 0x5f, 0x64, 0x6f, 0x7a, 0x80, 0x7e, 0x7a, 0x73, 0x74, 0x7b, 0x85, 0x85, 0x77, 0x70, 0x78, -0x83, 0x94, 0x9f, 0xa4, 0xad, 0xb8, 0xc0, 0xc6, 0xc3, 0xb2, 0xac, 0xb8, 0xc1, 0xc3, 0xb7, 0xa3, -0x8c, 0x82, 0x85, 0x91, 0x96, 0x92, 0x90, 0x92, 0x98, 0xa3, 0xac, 0xad, 0xa2, 0x96, 0x8e, 0x85, -0x7e, 0x73, 0x67, 0x6c, 0x79, 0x87, 0x8d, 0x87, 0x75, 0x6c, 0x6c, 0x79, 0x88, 0x88, 0x7b, 0x76, -0x78, 0x7c, 0x80, 0x7b, 0x78, 0x7b, 0x80, 0x83, 0x7e, 0x6e, 0x5b, 0x58, 0x5f, 0x62, 0x5e, 0x4e, -0x3a, 0x34, 0x40, 0x58, 0x71, 0x79, 0x74, 0x76, 0x7e, 0x84, 0x8a, 0x8c, 0x85, 0x7a, 0x6e, 0x65, -0x64, 0x5d, 0x54, 0x5e, 0x74, 0x84, 0x8b, 0x83, 0x70, 0x5c, 0x51, 0x4f, 0x51, 0x4d, 0x40, 0x3a, -0x44, 0x52, 0x5c, 0x5c, 0x59, 0x59, 0x5f, 0x63, 0x65, 0x66, 0x5f, 0x5b, 0x66, 0x71, 0x75, 0x71, -0x67, 0x64, 0x69, 0x6d, 0x74, 0x78, 0x73, 0x6b, 0x6a, 0x69, 0x6c, 0x6a, 0x60, 0x54, 0x4f, 0x53, -0x5e, 0x68, 0x68, 0x65, 0x6f, 0x7b, 0x87, 0x8c, 0x88, 0x7d, 0x75, 0x6e, 0x72, 0x7d, 0x82, 0x84, -0x93, 0xa0, 0xa3, 0xa0, 0x99, 0x96, 0x9b, 0x9d, 0xa1, 0xa4, 0x9e, 0x92, 0x93, 0xa1, 0xb3, 0xc1, -0xc1, 0xb7, 0xad, 0xa9, 0xad, 0xb4, 0xb8, 0xb6, 0xb7, 0xbd, 0xc4, 0xc7, 0xb9, 0xa4, 0x98, 0x95, -0x93, 0x94, 0x8f, 0x83, 0x7a, 0x7c, 0x85, 0x8e, 0x89, 0x78, 0x6a, 0x66, 0x6c, 0x7e, 0x8f, 0x95, -0x97, 0x9f, 0xa0, 0x9b, 0x92, 0x8b, 0x87, 0x8a, 0x8e, 0x98, 0x9c, 0x94, 0x8f, 0x9f, 0xb3, 0xbb, -0xb4, 0xa4, 0x93, 0x8a, 0x82, 0x83, 0x80, 0x70, 0x66, 0x6b, 0x76, 0x80, 0x81, 0x78, 0x6c, 0x64, -0x60, 0x62, 0x62, 0x5b, 0x53, 0x57, 0x61, 0x6e, 0x75, 0x6e, 0x63, 0x62, 0x69, 0x74, 0x7e, 0x80, -0x7b, 0x80, 0x86, 0x87, 0x80, 0x6e, 0x65, 0x6a, 0x6f, 0x78, 0x82, 0x81, 0x77, 0x77, 0x7b, 0x80, -0x7e, 0x72, 0x64, 0x62, 0x65, 0x6b, 0x79, 0x81, 0x7d, 0x82, 0x90, 0xa1, 0xaa, 0xa4, 0x96, 0x8e, -0x8c, 0x90, 0x94, 0x8f, 0x83, 0x7d, 0x83, 0x8c, 0x93, 0x8f, 0x85, 0x80, 0x7c, 0x77, 0x79, 0x7a, -0x74, 0x76, 0x85, 0x90, 0x99, 0x95, 0x8a, 0x83, 0x84, 0x88, 0x92, 0x91, 0x85, 0x7c, 0x80, 0x86, -0x89, 0x7a, 0x63, 0x57, 0x57, 0x59, 0x61, 0x68, 0x68, 0x68, 0x6f, 0x78, 0x81, 0x7c, 0x6b, 0x56, -0x4d, 0x4a, 0x50, 0x57, 0x53, 0x4a, 0x4d, 0x59, 0x69, 0x6f, 0x69, 0x60, 0x5c, 0x5d, 0x65, 0x6a, -0x61, 0x54, 0x56, 0x61, 0x6b, 0x67, 0x5b, 0x54, 0x57, 0x5b, 0x60, 0x69, 0x6a, 0x64, 0x6a, 0x78, -0x88, 0x91, 0x8d, 0x82, 0x7e, 0x81, 0x87, 0x93, 0x97, 0x94, 0x94, 0x9c, 0xa9, 0xaf, 0xa1, 0x88, -0x7a, 0x79, 0x83, 0x91, 0x98, 0x9c, 0xa9, 0xb8, 0xc3, 0xc6, 0xb8, 0xa3, 0x98, 0x94, 0x97, 0x9f, -0xa0, 0x9a, 0x98, 0x9f, 0xaa, 0xb5, 0xb2, 0xa3, 0x98, 0x92, 0x91, 0x9c, 0xa0, 0x92, 0x89, 0x90, -0x9b, 0xa5, 0x9e, 0x8d, 0x84, 0x85, 0x87, 0x88, 0x8a, 0x84, 0x7e, 0x84, 0x8a, 0x91, 0x91, 0x85, -0x74, 0x6d, 0x6b, 0x73, 0x7a, 0x77, 0x72, 0x74, 0x7a, 0x8d, 0x93, 0x88, 0x72, 0x66, 0x64, 0x6c, -0x74, 0x6f, 0x69, 0x6f, 0x78, 0x7e, 0x7a, 0x67, 0x54, 0x4c, 0x46, 0x47, 0x4d, 0x49, 0x3e, 0x3c, -0x44, 0x53, 0x5f, 0x5d, 0x50, 0x49, 0x46, 0x4d, 0x5d, 0x65, 0x61, 0x67, 0x74, 0x83, 0x8f, 0x8c, -0x7e, 0x7a, 0x7d, 0x82, 0x8a, 0x8a, 0x82, 0x81, 0x86, 0x8d, 0x91, 0x86, 0x75, 0x69, 0x63, 0x69, -0x78, 0x82, 0x86, 0x8a, 0x90, 0x9a, 0xa1, 0x9d, 0x91, 0x86, 0x89, 0x8e, 0x96, 0x9a, 0x92, 0x8d, -0x97, 0xa5, 0xb2, 0xb3, 0xa6, 0x9a, 0x98, 0x98, 0x9c, 0xa1, 0x9f, 0x9e, 0xa6, 0xab, 0xb4, 0xb4, -0xa3, 0x94, 0x92, 0x91, 0x94, 0x98, 0x92, 0x88, 0x88, 0x8e, 0x98, 0x97, 0x86, 0x71, 0x69, 0x6c, -0x78, 0x83, 0x83, 0x81, 0x88, 0x8e, 0x96, 0x98, 0x90, 0x88, 0x83, 0x80, 0x86, 0x8f, 0x8e, 0x85, -0x85, 0x8b, 0x93, 0x96, 0x8c, 0x79, 0x6d, 0x69, 0x6f, 0x7a, 0x7e, 0x7d, 0x86, 0x90, 0x9a, 0xa2, -0x96, 0x80, 0x78, 0x7a, 0x7d, 0x80, 0x7b, 0x6f, 0x6c, 0x70, 0x77, 0x84, 0x83, 0x71, 0x63, 0x5c, -0x5e, 0x6a, 0x70, 0x6e, 0x70, 0x74, 0x76, 0x78, 0x70, 0x5e, 0x4e, 0x47, 0x48, 0x4f, 0x52, 0x4a, -0x47, 0x51, 0x62, 0x74, 0x76, 0x6c, 0x62, 0x5e, 0x5d, 0x65, 0x70, 0x70, 0x72, 0x7d, 0x81, 0x7d, -0x74, 0x68, 0x5f, 0x5f, 0x65, 0x6f, 0x77, 0x73, 0x6e, 0x76, 0x86, 0x97, 0xa0, 0x98, 0x8a, 0x83, -0x80, 0x85, 0x85, 0x7b, 0x73, 0x78, 0x7d, 0x83, 0x86, 0x7d, 0x72, 0x6e, 0x6f, 0x71, 0x72, 0x6d, -0x6a, 0x6d, 0x71, 0x7a, 0x83, 0x7a, 0x6a, 0x59, 0x4b, 0x4a, 0x50, 0x54, 0x57, 0x69, 0x81, 0x90, -0x96, 0x91, 0x87, 0x89, 0x92, 0x9a, 0xa4, 0xa4, 0x95, 0x8d, 0x8c, 0x89, 0x88, 0x82, 0x75, 0x6d, -0x67, 0x6a, 0x79, 0x84, 0x82, 0x80, 0x83, 0x8a, 0x91, 0x8d, 0x82, 0x78, 0x74, 0x76, 0x7b, 0x7d, -0x76, 0x79, 0x87, 0x97, 0xaa, 0xb3, 0xad, 0xa8, 0xa3, 0xa0, 0xa2, 0xa2, 0x9e, 0xa2, 0xad, 0xb2, -0xb4, 0xae, 0x9d, 0x89, 0x81, 0x77, 0x83, 0x91, 0x8f, 0x8c, 0x90, 0x94, 0x98, 0x96, 0x8e, 0x7b, -0x6d, 0x6c, 0x75, 0x80, 0x79, 0x6c, 0x77, 0x86, 0x8e, 0x8f, 0x84, 0x7b, 0x7c, 0x78, 0x7d, 0x8a, -0x8b, 0x8e, 0x96, 0x9e, 0xa9, 0xb0, 0xa7, 0x90, 0x8a, 0x8a, 0x8c, 0x97, 0x90, 0x84, 0x93, 0x9e, -0xa5, 0xac, 0xa8, 0x9e, 0x99, 0x9c, 0xa5, 0xa7, 0x9c, 0x88, 0x85, 0x8e, 0x99, 0x98, 0x8a, 0x74, -0x68, 0x61, 0x65, 0x6c, 0x6e, 0x72, 0x79, 0x86, 0x97, 0xa9, 0xad, 0x9d, 0x92, 0x91, 0x8f, 0x93, -0x8d, 0x80, 0x7e, 0x83, 0x8f, 0x8f, 0x7c, 0x6b, 0x60, 0x5f, 0x5f, 0x5f, 0x55, 0x49, 0x4d, 0x55, -0x59, 0x5d, 0x53, 0x46, 0x3e, 0x3d, 0x49, 0x52, 0x4f, 0x42, 0x3c, 0x4a, 0x51, 0x57, 0x5f, 0x59, -0x54, 0x57, 0x5e, 0x6c, 0x6b, 0x5d, 0x59, 0x66, 0x75, 0x73, 0x64, 0x5b, 0x58, 0x56, 0x4c, 0x3c, -0x37, 0x39, 0x39, 0x44, 0x4c, 0x4d, 0x4c, 0x41, 0x31, 0x1d, 0xe, 0x14, 0x1f, 0x24, 0x31, 0x4a, -0x5e, 0x6a, 0x77, 0x82, 0x7e, 0x7b, 0x88, 0x95, 0xa0, 0xae, 0xaa, 0xaa, 0xb9, 0xca, 0xd5, 0xc8, -0xb0, 0xac, 0xa8, 0xb0, 0xc3, 0xbe, 0xaa, 0x9f, 0xa3, 0xba, 0xd2, 0xda, 0xcf, 0xbb, 0xb1, 0xb5, -0xbc, 0xaf, 0x8d, 0x81, 0x95, 0xae, 0xc6, 0xc1, 0xa4, 0xa3, 0xa7, 0xa7, 0xb3, 0xa9, 0x9a, 0x9e, -0xaa, 0xbd, 0xcb, 0xca, 0xb3, 0xaf, 0xbb, 0xb9, 0xac, 0x96, 0x81, 0x81, 0x9b, 0xb3, 0xb7, 0xa0, -0x7d, 0x6b, 0x69, 0x6c, 0x69, 0x58, 0x46, 0x45, 0x55, 0x65, 0x59, 0x45, 0x3d, 0x46, 0x53, 0x51, -0x44, 0x3f, 0x3e, 0x42, 0x4f, 0x50, 0x4d, 0x4c, 0x44, 0x45, 0x4e, 0x44, 0x41, 0x50, 0x55, 0x6c, -0x89, 0x86, 0x86, 0x90, 0x99, 0xb2, 0xbf, 0xb8, 0xb2, 0xb1, 0xab, 0xa5, 0xad, 0xbb, 0xc9, 0xd1, -0xd3, 0xd4, 0xc9, 0xb5, 0xa6, 0x9d, 0x9f, 0x91, 0x80, 0x81, 0x84, 0x89, 0x92, 0x88, 0x7a, 0x7a, -0x7e, 0x87, 0x80, 0x66, 0x59, 0x60, 0x7c, 0x8d, 0x7e, 0x6c, 0x66, 0x67, 0x6d, 0x80, 0x8a, 0x7e, -0x7a, 0x7b, 0x88, 0x8c, 0x7e, 0x73, 0x74, 0x78, 0x73, 0x77, 0x68, 0x57, 0x62, 0x6e, 0x7c, 0x85, -0x73, 0x60, 0x63, 0x69, 0x83, 0x8f, 0x80, 0x6f, 0x6c, 0x8b, 0xa3, 0xad, 0xa9, 0x99, 0x9b, 0xb0, -0xa9, 0x93, 0x7b, 0x69, 0x6b, 0x78, 0x7e, 0x72, 0x64, 0x58, 0x49, 0x4c, 0x4c, 0x3b, 0x38, 0x3c, -0x34, 0x3f, 0x4b, 0x45, 0x48, 0x52, 0x68, 0x85, 0x79, 0x6e, 0x7c, 0x81, 0x94, 0x9d, 0x98, 0xa0, -0x95, 0x8f, 0x8d, 0x81, 0x70, 0x63, 0x53, 0x54, 0x5f, 0x68, 0x77, 0x86, 0x88, 0x8e, 0x80, 0x70, -0x68, 0x62, 0x6a, 0x6d, 0x72, 0x67, 0x61, 0x82, 0x96, 0xa6, 0xad, 0x99, 0x87, 0x84, 0x92, 0xa0, -0x9c, 0x9a, 0xa7, 0xb3, 0xc6, 0xc3, 0xa7, 0xa7, 0xa5, 0x97, 0x9a, 0xa1, 0x8e, 0x7e, 0x87, 0xa1, -0xb9, 0xba, 0xa8, 0x94, 0x85, 0x7d, 0x83, 0x82, 0x81, 0x84, 0x94, 0xa6, 0x9c, 0x82, 0x61, 0x59, -0x69, 0x7d, 0x82, 0x72, 0x58, 0x5d, 0x66, 0x76, 0x8b, 0x7b, 0x6a, 0x5a, 0x53, 0x5e, 0x5a, 0x4d, -0x52, 0x5f, 0x71, 0x83, 0x83, 0x77, 0x6c, 0x72, 0x7a, 0x70, 0x67, 0x66, 0x62, 0x5d, 0x64, 0x6e, -0x6f, 0x67, 0x58, 0x5c, 0x64, 0x57, 0x49, 0x51, 0x67, 0x82, 0x88, 0x81, 0x7b, 0x6a, 0x6a, 0x6d, -0x77, 0x74, 0x63, 0x72, 0x80, 0x88, 0x7d, 0x6c, 0x7a, 0x8f, 0x97, 0x9e, 0x93, 0x79, 0x6f, 0x72, -0x81, 0x79, 0x6c, 0x6f, 0x87, 0x90, 0x8d, 0x8b, 0x84, 0x74, 0x6e, 0x79, 0x68, 0x58, 0x61, 0x68, -0x7b, 0x97, 0xab, 0xaa, 0x9d, 0xa2, 0xa4, 0x9e, 0xa0, 0x96, 0x8a, 0xa2, 0xb6, 0xbb, 0xad, 0x98, -0x94, 0x9e, 0xa8, 0xaa, 0x95, 0x8d, 0x82, 0x87, 0x99, 0x97, 0x85, 0x80, 0x9c, 0xb6, 0xb2, 0x9b, -0x8e, 0x9a, 0xaf, 0xb2, 0xc6, 0xc6, 0xa2, 0x85, 0x8e, 0x9e, 0xa4, 0x9c, 0x7e, 0x7a, 0x88, 0x94, -0xa2, 0xa4, 0xa5, 0xb3, 0xa4, 0xa2, 0x9d, 0x76, 0x73, 0x75, 0x77, 0x71, 0x6a, 0x62, 0x58, 0x66, -0x8f, 0x90, 0x94, 0x85, 0x75, 0x81, 0x84, 0x8c, 0x83, 0x8b, 0x98, 0x9a, 0x92, 0x83, 0x73, 0x70, -0x86, 0x90, 0x8f, 0x7e, 0x77, 0x75, 0x6c, 0x75, 0x73, 0x64, 0x58, 0x59, 0x5f, 0x58, 0x54, 0x53, -0x5b, 0x61, 0x61, 0x5a, 0x45, 0x37, 0x16, 0x13, 0x3b, 0x4d, 0x49, 0x42, 0x43, 0x59, 0x76, 0x78, -0x63, 0x57, 0x50, 0x57, 0x61, 0x61, 0x69, 0x86, 0x9f, 0xa5, 0xab, 0xa4, 0x94, 0x7d, 0x7b, 0x97, -0xa2, 0x81, 0x6d, 0x59, 0x57, 0x5d, 0x5b, 0x54, 0x44, 0x38, 0x5d, 0x76, 0x76, 0x73, 0x7a, 0x87, -0x93, 0x8b, 0x92, 0x95, 0x7b, 0x69, 0x7e, 0x70, 0x67, 0x66, 0x74, 0x76, 0x76, 0x84, 0x7c, 0x7b, -0x89, 0x78, 0x7a, 0x86, 0x76, 0x83, 0x9d, 0xb1, 0xb0, 0x98, 0x7b, 0x82, 0x9e, 0xad, 0xa3, 0x83, -0x66, 0x65, 0x6f, 0x64, 0x62, 0x63, 0x6b, 0x6b, 0x82, 0x88, 0x79, 0x7d, 0x76, 0x81, 0x94, 0x95, -0x7e, 0x72, 0x69, 0x84, 0xa5, 0x95, 0x6c, 0x65, 0x6f, 0x73, 0x71, 0x7c, 0x7d, 0x7c, 0x80, 0x91, -0xae, 0x9b, 0x8b, 0x9d, 0xb5, 0xd9, 0xd1, 0xb7, 0xa9, 0x9a, 0x97, 0x99, 0xb1, 0xbd, 0xab, 0x9f, -0x87, 0x7b, 0x66, 0x4f, 0x45, 0x57, 0x6f, 0x75, 0x89, 0x87, 0x97, 0xb0, 0xb0, 0xa9, 0x9c, 0x92, -0x9e, 0xa2, 0xa3, 0xa2, 0xac, 0xbb, 0xaa, 0xab, 0xab, 0xa3, 0xad, 0xa2, 0xa8, 0xbe, 0xc1, 0xa6, -0x9b, 0xad, 0xb0, 0xb0, 0x9b, 0x7e, 0x84, 0x82, 0x91, 0x8c, 0x91, 0x97, 0x86, 0x77, 0x68, 0x5c, -0x59, 0x46, 0x38, 0x51, 0x5a, 0x64, 0x56, 0x57, 0x69, 0x76, 0x70, 0x60, 0x3f, 0x49, 0x68, 0x7d, -0xa1, 0x88, 0x7b, 0x7e, 0x73, 0x89, 0x84, 0x69, 0x6f, 0x68, 0x83, 0x8b, 0x6f, 0x66, 0x73, 0x88, -0x88, 0x87, 0x6c, 0x54, 0x53, 0x59, 0x73, 0x74, 0x69, 0x75, 0x75, 0x6c, 0x75, 0x69, 0x4f, 0x2a, -0x2a, 0x3f, 0x4f, 0x64, 0x62, 0x4b, 0x6b, 0x9c, 0xa1, 0x6e, 0x59, 0x4e, 0x50, 0x53, 0x6b, 0x85, -0x80, 0x7a, 0x79, 0x86, 0x8c, 0x87, 0x69, 0x64, 0x85, 0x80, 0x67, 0x4d, 0x4e, 0x63, 0x6d, 0x71, -0x69, 0x3c, 0x36, 0x4f, 0x71, 0x8f, 0x86, 0x95, 0x92, 0x81, 0x9b, 0xa7, 0x8a, 0x71, 0x82, 0x97, -0x96, 0xac, 0x93, 0x99, 0xa6, 0xb0, 0xa7, 0x85, 0x82, 0x8a, 0x80, 0x88, 0x95, 0x94, 0x97, 0x99, -0xa0, 0xa6, 0x96, 0x8e, 0x8f, 0xa2, 0xbf, 0xb6, 0x97, 0x8e, 0x7c, 0x90, 0xaf, 0xbe, 0xba, 0xa5, -0xa9, 0xbb, 0xab, 0x9c, 0x86, 0x84, 0x9e, 0xa5, 0xa7, 0x95, 0x83, 0x8a, 0x96, 0x90, 0x96, 0x98, -0x71, 0x69, 0x89, 0x8b, 0x69, 0x44, 0x42, 0x41, 0x3e, 0x54, 0x57, 0x44, 0x3c, 0x52, 0x6a, 0x83, -0x7a, 0x70, 0x7d, 0x8e, 0xaa, 0xb1, 0x8c, 0x87, 0x97, 0x92, 0xad, 0xa5, 0x88, 0x60, 0x6d, 0x82, -0x7c, 0x8f, 0x74, 0x6d, 0x82, 0x83, 0x73, 0x62, 0x3d, 0x47, 0x52, 0x5f, 0x76, 0x77, 0x62, 0x56, -0x60, 0x7d, 0x8b, 0x6f, 0x66, 0x5a, 0x77, 0x8d, 0x6c, 0x65, 0x7b, 0x7a, 0x84, 0x85, 0x78, 0x8d, -0x98, 0xb1, 0xc4, 0xb8, 0x9d, 0x94, 0x9a, 0xa7, 0xb3, 0x98, 0x78, 0x74, 0x73, 0x6e, 0x68, 0x68, -0x63, 0x4f, 0x56, 0x5b, 0x5f, 0x63, 0x5d, 0x58, 0x7e, 0x9a, 0x8a, 0x77, 0x6a, 0x6c, 0x6a, 0x72, -0x6c, 0x6a, 0x6d, 0x74, 0x8d, 0x8e, 0x6e, 0x8f, 0x90, 0x80, 0xa3, 0xa3, 0x8b, 0x89, 0x9d, 0x9f, -0xa7, 0x9b, 0x92, 0x93, 0x95, 0x9f, 0xa5, 0x9e, 0x71, 0x6d, 0x6c, 0x70, 0x78, 0x8e, 0x8b, 0x8a, -0x97, 0x7d, 0x6c, 0x68, 0x70, 0x82, 0x93, 0x96, 0x92, 0x88, 0x8f, 0x87, 0x7b, 0x91, 0x8d, 0x92, -0xa8, 0xaf, 0xc5, 0xb3, 0x94, 0x8d, 0x80, 0x68, 0x5f, 0x54, 0x46, 0x4e, 0x67, 0x86, 0x94, 0xa7, -0x99, 0x99, 0xba, 0xbb, 0xbc, 0xa8, 0x7b, 0x77, 0x9d, 0x97, 0x94, 0xa0, 0x82, 0x55, 0x5c, 0x61, -0x51, 0x60, 0x61, 0x65, 0x83, 0x86, 0x75, 0x79, 0x72, 0x6b, 0x99, 0xa1, 0x7a, 0x83, 0x8f, 0x7c, -0x98, 0xa2, 0x98, 0x9a, 0x95, 0x82, 0x94, 0x7a, 0x5d, 0x60, 0x84, 0x9d, 0xae, 0x9e, 0x83, 0x7c, -0x91, 0xad, 0xa3, 0x90, 0x81, 0x7b, 0x8f, 0x83, 0x74, 0x84, 0x6b, 0x58, 0x5a, 0x48, 0x2f, 0x2b, -0x38, 0x3b, 0x46, 0x45, 0x34, 0x22, 0x37, 0x3b, 0x4a, 0x52, 0x4b, 0x62, 0x8a, 0xa0, 0xa0, 0x9a, -0x7d, 0x76, 0x84, 0x7b, 0x6b, 0x56, 0x46, 0x4d, 0x64, 0x63, 0x70, 0x88, 0x86, 0x82, 0x83, 0x84, -0x87, 0x76, 0x61, 0x6c, 0x72, 0x62, 0x52, 0x5c, 0x5c, 0x5d, 0x74, 0x6e, 0x50, 0x55, 0x71, 0x83, -0x86, 0x88, 0x83, 0x70, 0x71, 0x84, 0x86, 0x71, 0x77, 0x8a, 0x9a, 0xb0, 0xaf, 0xa2, 0x8e, 0x98, -0x96, 0x8c, 0x7e, 0x67, 0x70, 0x8b, 0x9f, 0xb9, 0xaa, 0x98, 0xa1, 0x80, 0x81, 0x93, 0x7e, 0x6d, -0x76, 0x97, 0xab, 0xa9, 0xa8, 0xad, 0x99, 0x92, 0x9d, 0x9e, 0x75, 0x64, 0x8d, 0xa2, 0x9a, 0xa0, -0xab, 0x9e, 0x8a, 0x96, 0x9f, 0x96, 0x88, 0x8b, 0xb7, 0xd4, 0xc2, 0xc1, 0xb5, 0xa9, 0xae, 0x9e, -0x84, 0x7c, 0x74, 0x87, 0xa2, 0x9f, 0x9c, 0x94, 0x95, 0x99, 0xab, 0xb0, 0xac, 0x93, 0x88, 0xa0, -0x87, 0x85, 0x75, 0x67, 0x62, 0x6a, 0x7c, 0x92, 0x7d, 0x60, 0x6a, 0x76, 0x7b, 0x7a, 0x6c, 0x6a, -0x6b, 0x6d, 0x5e, 0x4b, 0x57, 0x65, 0x76, 0x90, 0x9e, 0x8d, 0x88, 0x75, 0x84, 0x85, 0x4d, 0x34, -0x46, 0x7a, 0x8b, 0x85, 0x79, 0x89, 0x8b, 0x77, 0xa7, 0x9a, 0x90, 0x84, 0x81, 0x93, 0x90, 0x8b, -0x6f, 0x74, 0x72, 0x65, 0x6f, 0x5d, 0x3b, 0x32, 0x2c, 0x44, 0x68, 0x44, 0x29, 0x2f, 0x21, 0x39, -0x51, 0x3d, 0x41, 0x64, 0x8b, 0xa2, 0x9c, 0x8a, 0x84, 0x7a, 0x8e, 0x94, 0x77, 0x53, 0x6c, 0x97, -0xa3, 0xa4, 0xae, 0x97, 0x87, 0x90, 0x94, 0x82, 0x61, 0x5e, 0x6c, 0x6e, 0x4c, 0x49, 0x55, 0x4e, -0x52, 0x6e, 0x81, 0x6e, 0x69, 0x6b, 0x76, 0x8b, 0x8e, 0x7a, 0x76, 0x6b, 0x67, 0x6e, 0x71, 0x6e, -0x5d, 0x7b, 0xa3, 0xa2, 0x9a, 0x98, 0x9a, 0x86, 0x7a, 0x7a, 0x5a, 0x58, 0x70, 0x7b, 0x94, 0x90, -0x8d, 0x89, 0x8f, 0x8c, 0x75, 0x57, 0x4a, 0x5e, 0x71, 0x8a, 0x8f, 0x91, 0x96, 0x90, 0x90, 0x8c, -0x94, 0x72, 0x55, 0x62, 0x68, 0x70, 0x6f, 0x73, 0x86, 0x8e, 0x99, 0xa4, 0xa4, 0xa2, 0xb1, 0xcd, -0xdf, 0xe2, 0xd6, 0xc4, 0xab, 0xa5, 0xa3, 0x95, 0x77, 0x8c, 0x87, 0x9b, 0xc4, 0xb0, 0xb1, 0xcb, -0xcd, 0xb5, 0x8e, 0x87, 0x82, 0x7a, 0x7e, 0x81, 0x8c, 0x93, 0x8d, 0x81, 0xac, 0xd6, 0xb7, 0x93, -0x82, 0x81, 0x87, 0x6c, 0x58, 0x6c, 0x7a, 0x7e, 0x8b, 0x90, 0x7d, 0x71, 0x74, 0x81, 0x8d, 0x8e, -0x73, 0x74, 0x87, 0x84, 0x82, 0x7e, 0x68, 0x63, 0x78, 0x97, 0x98, 0x6e, 0x5a, 0x81, 0x91, 0x75, -0x74, 0x7a, 0x65, 0x48, 0x4d, 0x69, 0x7d, 0x7b, 0x6e, 0x5f, 0x6e, 0x75, 0x57, 0x3e, 0x3a, 0x3c, -0x3b, 0x46, 0x4d, 0x55, 0x58, 0x55, 0x5c, 0x53, 0x4b, 0x55, 0x71, 0x86, 0x8e, 0x98, 0x80, 0x73, -0x6c, 0x66, 0x55, 0x60, 0x6f, 0x77, 0xa1, 0xc9, 0xbb, 0xb1, 0xad, 0xb2, 0x8f, 0x6c, 0x58, 0x54, -0x52, 0x54, 0x46, 0x3e, 0x4c, 0x49, 0x5e, 0x74, 0x8f, 0x9e, 0x91, 0x8b, 0x8e, 0x92, 0x9f, 0x9a, -0x71, 0x5f, 0x68, 0x6c, 0x7b, 0x6a, 0x5f, 0x7d, 0x9f, 0xb2, 0xb6, 0x9e, 0x83, 0x98, 0x9d, 0x97, -0x8a, 0x7a, 0x6f, 0x6f, 0x8c, 0xb2, 0xa3, 0x8b, 0x8b, 0x8e, 0x91, 0x91, 0x7a, 0x62, 0x56, 0x61, -0x72, 0x88, 0x82, 0x7a, 0x86, 0x9c, 0xa6, 0x97, 0x74, 0x60, 0x5d, 0x60, 0x6a, 0x79, 0x64, 0x4c, -0x70, 0xa8, 0xbf, 0xac, 0xaa, 0xba, 0xd1, 0xf2, 0xd3, 0xa7, 0xa3, 0x86, 0x66, 0x6f, 0x79, 0x70, -0x61, 0x6b, 0x88, 0x9c, 0x88, 0x8a, 0xa2, 0x97, 0x9d, 0x82, 0x60, 0x5f, 0x5c, 0x68, 0x7d, 0x9b, -0x9e, 0x8d, 0xaf, 0xc8, 0xc1, 0xb8, 0x81, 0x78, 0x81, 0x75, 0x74, 0x6d, 0x66, 0x75, 0x7b, 0x81, -0x7d, 0x75, 0x5d, 0x7d, 0xaf, 0xb6, 0xa6, 0x95, 0x8c, 0x71, 0x6f, 0x5a, 0x43, 0x41, 0x39, 0x58, -0x7b, 0x8b, 0xae, 0xb9, 0xba, 0xc6, 0xbc, 0x84, 0x6c, 0x78, 0x87, 0x91, 0x88, 0x8e, 0x7b, 0x61, -0x69, 0x79, 0x69, 0x3a, 0x1e, 0x2d, 0x31, 0x3d, 0x4d, 0x37, 0x40, 0x49, 0x3a, 0x4d, 0x5f, 0x57, -0x69, 0x90, 0x8b, 0x83, 0x7c, 0x73, 0x6e, 0x4e, 0x5c, 0x6c, 0x55, 0x6a, 0x92, 0x9a, 0x9e, 0xae, -0xb9, 0xb2, 0xb2, 0xa0, 0x81, 0x65, 0x5a, 0x59, 0x3e, 0x26, 0x46, 0x5c, 0x52, 0x7b, 0xa4, 0xb4, -0xba, 0xa7, 0x9e, 0x9b, 0x79, 0x83, 0x8e, 0x7c, 0x76, 0x59, 0x69, 0x73, 0x6e, 0x8f, 0x98, 0x8e, -0x88, 0x8b, 0x9c, 0x8e, 0x9c, 0xa4, 0x84, 0x7c, 0x66, 0x6d, 0x67, 0x5c, 0x74, 0x7d, 0x9c, 0xbc, -0xc5, 0xb2, 0x8c, 0x78, 0x77, 0x7a, 0x82, 0x84, 0x84, 0x93, 0x96, 0x99, 0x9d, 0x94, 0x85, 0x71, -0x59, 0x69, 0x72, 0x5f, 0x73, 0x74, 0x70, 0x6b, 0x78, 0x7a, 0x7c, 0xaf, 0xdc, 0xe4, 0xea, 0xf4, -0xfe, 0xc0, 0xa9, 0xa7, 0x83, 0x6d, 0x6c, 0x86, 0x96, 0x96, 0xa3, 0xa4, 0xb0, 0xb2, 0xa1, 0x86, -0x6a, 0x4a, 0x3d, 0x3c, 0x45, 0x4e, 0x5c, 0x74, 0x93, 0x98, 0x99, 0xa9, 0x96, 0x7a, 0x90, 0x9c, -0x80, 0x6f, 0x67, 0x64, 0x75, 0x77, 0x78, 0x74, 0x70, 0x92, 0xac, 0x97, 0x7e, 0x6f, 0x88, 0x86, -0x85, 0x78, 0x6e, 0x5a, 0x4d, 0x48, 0x53, 0x6f, 0x7e, 0x95, 0xbe, 0xd1, 0xdb, 0xdb, 0xa4, 0x81, -0x6f, 0x5e, 0x6a, 0x71, 0x57, 0x60, 0x7b, 0x78, 0x79, 0x7c, 0x48, 0x33, 0x27, 0x25, 0x28, 0x2e, -0x3b, 0x43, 0x47, 0x3f, 0x48, 0x51, 0x48, 0x49, 0x50, 0x4a, 0x3b, 0x5a, 0x65, 0x60, 0x5f, 0x59, -0x64, 0x76, 0x7a, 0x77, 0x93, 0x98, 0x9f, 0xb0, 0xd6, 0xdb, 0xb4, 0x8e, 0x66, 0x58, 0x5a, 0x5c, -0x55, 0x54, 0x52, 0x56, 0x6a, 0x82, 0x8e, 0x87, 0x7a, 0x8f, 0x91, 0x7d, 0x89, 0x9a, 0x9c, 0x8a, -0x94, 0x91, 0x9a, 0xa2, 0x9e, 0xb3, 0xc8, 0xce, 0x98, 0x72, 0x9a, 0x9f, 0x84, 0x78, 0x72, 0x69, -0x5c, 0x63, 0x87, 0x96, 0x99, 0xa9, 0xbb, 0xaf, 0xb9, 0xaf, 0x7e, 0x84, 0x7a, 0x6e, 0x87, 0x80, -0x7d, 0x74, 0x80, 0x76, 0x66, 0x69, 0x4d, 0x49, 0x42, 0x51, 0x7a, 0x92, 0x9c, 0x91, 0x8e, 0x8d, -0x71, 0x71, 0xaa, 0xbc, 0xb3, 0xbb, 0xbd, 0xd2, 0xdc, 0xbe, 0x9c, 0x9b, 0x93, 0x8c, 0x84, 0x76, -0x90, 0xa6, 0xaa, 0xc1, 0xc6, 0x9d, 0xa2, 0x8c, 0x64, 0x6c, 0x55, 0x57, 0x6a, 0x67, 0x7a, 0x92, -0x9c, 0x84, 0x67, 0x66, 0x68, 0x5c, 0x6e, 0x5d, 0x6d, 0x89, 0x76, 0x82, 0x8a, 0x7b, 0x79, 0x8a, -0x90, 0x95, 0x87, 0x7a, 0x79, 0x7c, 0x81, 0x6b, 0x66, 0x68, 0x63, 0x57, 0x45, 0x48, 0x52, 0x63, -0x87, 0x9f, 0xc2, 0xd1, 0xc7, 0xc8, 0xb2, 0x9d, 0x8e, 0x80, 0x80, 0x95, 0xa2, 0x91, 0x7c, 0x80, -0x83, 0x75, 0x47, 0x28, 0x31, 0x3b, 0x4f, 0x4d, 0x45, 0x46, 0x41, 0x3d, 0x42, 0x6c, 0x73, 0x5b, -0x4f, 0x3b, 0x42, 0x4f, 0x65, 0x76, 0x7b, 0x75, 0x84, 0x78, 0x83, 0x7e, 0x79, 0x9b, 0xbc, 0xcf, -0xcc, 0xa6, 0x89, 0x7b, 0x5c, 0x5c, 0x4d, 0x3b, 0x3f, 0x3e, 0x3e, 0x3d, 0x4a, 0x6d, 0x67, 0x5c, -0x58, 0x52, 0x76, 0x7b, 0x70, 0x6e, 0x6d, 0x74, 0x79, 0x79, 0x91, 0xae, 0xb7, 0xa0, 0x8e, 0x81, -0x71, 0x63, 0x6d, 0x85, 0x94, 0xa2, 0x95, 0x72, 0x85, 0x9a, 0xa6, 0x9f, 0xa2, 0xaf, 0xb6, 0xa0, -0x6c, 0x8b, 0x89, 0x75, 0x6d, 0x6b, 0x91, 0x96, 0x7d, 0x7c, 0x8f, 0xac, 0xa8, 0x85, 0x81, 0x7e, -0x8a, 0xa5, 0x9b, 0x9c, 0x8c, 0x51, 0x60, 0x94, 0x8b, 0x99, 0x8f, 0x82, 0x97, 0x9d, 0xcb, 0xd7, -0xd2, 0xc8, 0xae, 0xb1, 0xb2, 0xba, 0xc6, 0xb3, 0xaa, 0xab, 0xc2, 0xd5, 0xbf, 0x9b, 0x7a, 0x75, -0x73, 0x61, 0x63, 0x6f, 0x73, 0x82, 0x90, 0x95, 0x8a, 0x82, 0x77, 0x6d, 0x60, 0x61, 0x69, 0x6b, -0x69, 0x7e, 0x8c, 0x89, 0x86, 0x77, 0x7a, 0x7b, 0x88, 0x7c, 0x78, 0x6b, 0x4c, 0x55, 0x5b, 0x6b, -0x7d, 0x68, 0x56, 0x51, 0x51, 0x5c, 0x6b, 0x83, 0x98, 0xaf, 0xc0, 0xa7, 0x93, 0x88, 0x7d, 0x8d, -0x87, 0x79, 0x7d, 0x70, 0x5d, 0x74, 0x85, 0x72, 0x82, 0x65, 0x41, 0x36, 0x44, 0x67, 0x66, 0x62, -0x59, 0x52, 0x45, 0x4b, 0x5d, 0x52, 0x48, 0x38, 0x32, 0x2a, 0x2a, 0x3c, 0x52, 0x5d, 0x64, 0x7e, -0x89, 0x7e, 0x83, 0x92, 0xac, 0xbc, 0xda, 0xe1, 0xc4, 0xa0, 0x98, 0x95, 0x91, 0x6e, 0x4c, 0x4b, -0x40, 0x4c, 0x62, 0x5e, 0x68, 0x56, 0x51, 0x5a, 0x63, 0x77, 0x80, 0x83, 0x8f, 0x93, 0x9f, 0xa2, -0xa2, 0xb7, 0xbf, 0xc7, 0xc3, 0x9c, 0x97, 0x81, 0x6c, 0x85, 0x8e, 0x94, 0x8e, 0x82, 0x73, 0x56, -0x68, 0x7a, 0x72, 0x8f, 0x99, 0x96, 0xa8, 0x93, 0x8b, 0x8c, 0x7d, 0x71, 0x7a, 0x7a, 0x78, 0x76, -0x8c, 0x8b, 0x78, 0x7e, 0x85, 0x9d, 0x94, 0x7b, 0x84, 0x7b, 0x60, 0x6a, 0x75, 0x6f, 0x78, 0x85, -0x7c, 0x87, 0x8f, 0x90, 0x9b, 0x99, 0x87, 0x8b, 0xa4, 0xa5, 0xa8, 0xc3, 0xc1, 0x98, 0x8c, 0x87, -0x97, 0xb0, 0xaf, 0xba, 0xae, 0x95, 0x93, 0xb0, 0xb0, 0x9d, 0x92, 0x80, 0x86, 0x8b, 0x76, 0x61, -0x63, 0x5d, 0x61, 0x75, 0x79, 0x76, 0x6f, 0x76, 0x78, 0x6c, 0x79, 0x82, 0x8b, 0x88, 0x8a, 0x93, -0xaa, 0xa3, 0x89, 0x78, 0x5a, 0x59, 0x79, 0x75, 0x63, 0x5c, 0x5b, 0x48, 0x4e, 0x7c, 0x9f, 0x95, -0x8c, 0x8f, 0x7b, 0x69, 0x81, 0x8b, 0x8c, 0x80, 0x86, 0x91, 0x91, 0x99, 0x91, 0x81, 0x6d, 0x5f, -0x5e, 0x58, 0x5b, 0x4b, 0x50, 0x65, 0x5f, 0x49, 0x31, 0x40, 0x50, 0x5f, 0x58, 0x4f, 0x5e, 0x66, -0x71, 0x81, 0x6d, 0x6f, 0x90, 0x96, 0x7a, 0x74, 0x79, 0x7d, 0x77, 0x85, 0x9b, 0x98, 0xb0, 0xb4, -0x97, 0xa1, 0x9e, 0x76, 0x5f, 0x51, 0x53, 0x45, 0x52, 0x68, 0x57, 0x3f, 0x4c, 0x55, 0x65, 0x6e, -0x6e, 0x5f, 0x68, 0x83, 0x89, 0x9f, 0xa5, 0x9a, 0xa1, 0x94, 0x88, 0x84, 0x85, 0x94, 0x97, 0x71, -0x66, 0x78, 0x8e, 0x91, 0x88, 0x7b, 0x76, 0x6f, 0x79, 0x8e, 0x91, 0xa0, 0xa9, 0xa4, 0xa7, 0x8d, -0x76, 0x6c, 0x77, 0x68, 0x56, 0x68, 0x7e, 0x8a, 0x88, 0x8d, 0xa9, 0xa7, 0xa5, 0xb0, 0xb8, 0xa7, -0x9e, 0x99, 0x93, 0x93, 0x77, 0x70, 0x85, 0x9f, 0xa3, 0x97, 0x99, 0xab, 0x97, 0x80, 0x7b, 0x8d, -0xa6, 0xb3, 0x9b, 0x8f, 0x9c, 0xa6, 0x9a, 0x98, 0xa4, 0xa9, 0xac, 0xaa, 0xb3, 0xac, 0xa8, 0xa1, -0x94, 0x79, 0x61, 0x59, 0x5c, 0x4f, 0x52, 0x5f, 0x5a, 0x66, 0x72, 0x6f, 0x7c, 0x86, 0x97, 0xa3, -0x94, 0x80, 0x8d, 0x93, 0xa6, 0xa2, 0x83, 0x75, 0x76, 0x6b, 0x68, 0x63, 0x55, 0x44, 0x50, 0x65, -0x6c, 0x6c, 0x6d, 0x71, 0x62, 0x59, 0x71, 0x86, 0x77, 0x72, 0x69, 0x56, 0x5e, 0x52, 0x5a, 0x5f, -0x56, 0x71, 0x78, 0x6d, 0x6d, 0x44, 0x50, 0x63, 0x68, 0x65, 0x5c, 0x71, 0x6a, 0x57, 0x4f, 0x51, -0x55, 0x42, 0x48, 0x4f, 0x63, 0x75, 0x89, 0x95, 0x81, 0x72, 0x6c, 0x52, 0x5f, 0x7b, 0x70, 0x73, -0x88, 0x93, 0xab, 0xc0, 0xc3, 0xcf, 0xdc, 0xdf, 0xc8, 0x88, 0x81, 0x9b, 0x90, 0x8b, 0x84, 0x74, -0x5b, 0x46, 0x36, 0x34, 0x54, 0x57, 0x42, 0x50, 0x6c, 0x87, 0x9e, 0xa3, 0xa6, 0x97, 0x9f, 0xc1, -0xce, 0xbb, 0xb5, 0xa8, 0x8f, 0xa1, 0xb1, 0x99, 0x8c, 0x81, 0x90, 0x93, 0x87, 0x91, 0x86, 0x81, -0x7e, 0x72, 0x78, 0x96, 0x94, 0x8e, 0x93, 0x7a, 0x74, 0x83, 0x87, 0x8b, 0x80, 0x77, 0x92, 0xa1, -0x91, 0x78, 0x62, 0x77, 0x82, 0x7d, 0x7e, 0x7c, 0x7c, 0x7e, 0x77, 0x5e, 0x79, 0x88, 0x83, 0x85, -0x8b, 0x8b, 0x81, 0x76, 0x79, 0x90, 0x94, 0x90, 0x95, 0x88, 0x86, 0x78, 0x69, 0x7e, 0x8a, 0x90, -0x94, 0xa3, 0xb7, 0xb5, 0xac, 0xb3, 0xa8, 0x9a, 0x9d, 0x9c, 0x86, 0x78, 0x65, 0x61, 0x68, 0x5c, -0x4f, 0x60, 0x76, 0x72, 0x60, 0x54, 0x6e, 0x6e, 0x6b, 0x7d, 0x89, 0x84, 0x83, 0x9c, 0xa3, 0x91, -0xa2, 0xa3, 0x97, 0x93, 0x95, 0x74, 0x80, 0x97, 0x95, 0x78, 0x66, 0x65, 0x5a, 0x54, 0x6a, 0x73, -0x72, 0x67, 0x66, 0x76, 0x78, 0x7e, 0x96, 0x7c, 0x6c, 0x75, 0x6f, 0x75, 0x76, 0x6f, 0x6c, 0x6d, -0x7c, 0x78, 0x67, 0x5c, 0x5a, 0x3d, 0x41, 0x5b, 0x54, 0x54, 0x62, 0x71, 0x6e, 0x6d, 0x65, 0x72, -0x6d, 0x5b, 0x67, 0x55, 0x63, 0x74, 0x67, 0x70, 0x6c, 0x6e, 0x7b, 0x9c, 0x99, 0x96, 0x82, 0x86, -0x9b, 0x81, 0x73, 0x7a, 0x7b, 0x65, 0x59, 0x49, 0x4f, 0x5e, 0x57, 0x59, 0x56, 0x6c, 0x75, 0x6c, -0x7c, 0x89, 0x7b, 0x60, 0x6d, 0x82, 0x86, 0x94, 0x98, 0x93, 0x9f, 0x9d, 0x99, 0xa4, 0xaf, 0xae, -0xa0, 0x99, 0xa3, 0xa5, 0x9c, 0x9c, 0x9c, 0x8a, 0x79, 0x9b, 0x9c, 0x89, 0x93, 0xa1, 0x7b, 0x76, -0x8f, 0x9f, 0x9e, 0x9e, 0x94, 0x78, 0x8f, 0xa4, 0xa5, 0x96, 0x9d, 0xb0, 0xae, 0xad, 0xac, 0x8e, -0x78, 0x8d, 0x8f, 0x94, 0x92, 0x8f, 0x94, 0x8e, 0x8e, 0xa4, 0xa6, 0x86, 0x8d, 0x9d, 0x92, 0x87, -0x73, 0x70, 0x82, 0x85, 0x89, 0x99, 0x9b, 0xa1, 0x9d, 0x97, 0xaa, 0x9f, 0x84, 0x88, 0x84, 0x84, -0x8a, 0x7e, 0x6b, 0x69, 0x5c, 0x5f, 0x74, 0x65, 0x5c, 0x5f, 0x66, 0x91, 0x7e, 0x66, 0x6b, 0x73, -0x74, 0x5c, 0x5c, 0x82, 0x7a, 0x63, 0x6a, 0x65, 0x6b, 0x72, 0x63, 0x6e, 0x7c, 0x70, 0x5e, 0x6a, -0x76, 0x70, 0x67, 0x76, 0x7a, 0x72, 0x71, 0x6a, 0x5e, 0x5a, 0x69, 0x81, 0x6c, 0x57, 0x67, 0x62, -0x62, 0x52, 0x64, 0x7a, 0x71, 0x75, 0x71, 0x68, 0x6c, 0x72, 0x56, 0x55, 0x74, 0x7d, 0x72, 0x78, -0x76, 0x80, 0x72, 0x62, 0x67, 0x5a, 0x56, 0x6a, 0x6b, 0x76, 0x7b, 0x65, 0x6e, 0x84, 0x8d, 0x8c, -0x8d, 0x9d, 0x9b, 0x8e, 0xbc, 0xce, 0xbc, 0xb1, 0xac, 0x9c, 0x8a, 0x7d, 0x79, 0x7e, 0x75, 0x76, -0x78, 0x6f, 0x6c, 0x72, 0x77, 0x81, 0x88, 0x80, 0x76, 0x72, 0x68, 0x62, 0x8a, 0x96, 0x98, 0xb1, -0x9a, 0x8a, 0x8d, 0x95, 0xa2, 0x8e, 0x8d, 0x8e, 0x7d, 0x79, 0x76, 0x91, 0x91, 0x77, 0x8f, 0x98, -0x7b, 0x64, 0x66, 0x74, 0x79, 0x8b, 0x8b, 0x9d, 0xa2, 0x97, 0x8a, 0x83, 0x7b, 0x6c, 0x70, 0x7a, -0x7b, 0x85, 0x81, 0x8c, 0x93, 0x88, 0x85, 0x80, 0x83, 0x8a, 0x86, 0x8e, 0x8e, 0xa7, 0xae, 0x7e, -0x86, 0x88, 0x78, 0x72, 0x6a, 0x6f, 0x72, 0x6d, 0x6e, 0x7c, 0x8f, 0x7b, 0x85, 0x8c, 0x81, 0x8e, -0x93, 0xa0, 0xb3, 0xa7, 0x98, 0xb6, 0xa6, 0x9a, 0x96, 0x78, 0x6e, 0x6d, 0x70, 0x78, 0x6c, 0x67, -0x79, 0x89, 0x8a, 0x81, 0x6e, 0x65, 0x75, 0x86, 0x75, 0x73, 0x87, 0x8b, 0x78, 0x6b, 0x7c, 0x8a, -0x8f, 0x97, 0x7d, 0x83, 0x6b, 0x55, 0x5b, 0x67, 0x74, 0x73, 0x81, 0x77, 0x87, 0x79, 0x7a, 0x8b, -0x70, 0x75, 0x7c, 0x74, 0x72, 0x78, 0x80, 0x88, 0x69, 0x6f, 0x83, 0x6d, 0x61, 0x60, 0x4b, 0x4f, -0x6d, 0x6a, 0x73, 0x6a, 0x5f, 0x73, 0x70, 0x72, 0x6a, 0x67, 0x57, 0x59, 0x5a, 0x5f, 0x7c, 0x8d, -0x71, 0x6e, 0x6b, 0x66, 0x74, 0x76, 0x87, 0x7e, 0x77, 0xa0, 0x96, 0x79, 0x85, 0xa4, 0xa4, 0x92, -0x9d, 0xa1, 0x84, 0x7e, 0x77, 0x78, 0x64, 0x64, 0x77, 0x7e, 0x80, 0x75, 0x5c, 0x62, 0x7a, 0x6c, -0x55, 0x62, 0x67, 0x69, 0x6d, 0x84, 0x95, 0x8e, 0x80, 0x70, 0x5d, 0x7d, 0x9a, 0x9d, 0x91, 0x94, -0xae, 0x8d, 0x80, 0xa0, 0xa4, 0x92, 0x90, 0x8c, 0x81, 0x8e, 0xa1, 0xa5, 0xa5, 0xa6, 0x9f, 0x9b, -0x95, 0x9a, 0xa1, 0x82, 0x7d, 0x95, 0x95, 0xaf, 0xa6, 0x93, 0x89, 0x9e, 0xaa, 0xa1, 0x99, 0x97, -0x8b, 0x96, 0xa9, 0xb0, 0xa2, 0x8c, 0x92, 0x87, 0x87, 0x8e, 0x95, 0x7e, 0x6a, 0x5f, 0x62, 0x6c, -0x7d, 0x90, 0x90, 0x8c, 0x83, 0x75, 0x70, 0x87, 0x8f, 0x97, 0x91, 0x9a, 0xa7, 0x93, 0x8e, 0x9c, -0x89, 0x7d, 0x6e, 0x63, 0x75, 0x7b, 0x89, 0x71, 0x66, 0x80, 0x62, 0x4e, 0x5f, 0x5b, 0x49, 0x4e, -0x5c, 0x62, 0x5d, 0x62, 0x6f, 0x73, 0x5e, 0x5c, 0x69, 0x73, 0x6b, 0x51, 0x42, 0x43, 0x4d, 0x66, -0x7b, 0x71, 0x5b, 0x5b, 0x6b, 0x78, 0x7d, 0x74, 0x64, 0x70, 0x7d, 0x88, 0x85, 0x82, 0x71, 0x68, -0x6d, 0x5e, 0x6f, 0x77, 0x59, 0x4f, 0x64, 0x73, 0x73, 0x6a, 0x76, 0x88, 0x80, 0x78, 0x7a, 0x90, -0xa8, 0x9c, 0x8c, 0x7c, 0x85, 0x97, 0xa3, 0x97, 0x92, 0x8d, 0x6c, 0x63, 0x75, 0x8e, 0x96, 0x8c, -0x81, 0x8e, 0x9d, 0x9c, 0x7a, 0x8b, 0xa9, 0x97, 0x81, 0x8b, 0x83, 0x74, 0x68, 0x7c, 0x86, 0x8a, -0x8c, 0x88, 0x9c, 0x94, 0x8d, 0x8f, 0x7d, 0x7e, 0x84, 0x89, 0x84, 0x8b, 0x89, 0x8e, 0xa3, 0xa2, -0x92, 0x85, 0x7b, 0x87, 0x9b, 0x97, 0x7d, 0x6e, 0x72, 0x73, 0x6d, 0x87, 0x87, 0x79, 0x62, 0x67, -0x6d, 0x74, 0x84, 0x74, 0x72, 0x6a, 0x6f, 0x80, 0x79, 0x88, 0x8c, 0x8b, 0x83, 0x86, 0x84, 0x9f, -0xaa, 0x95, 0x8e, 0x8c, 0x91, 0x98, 0x94, 0x93, 0x9a, 0x8a, 0x99, 0x9c, 0x8f, 0x95, 0x7a, 0x6a, -0x7a, 0x7b, 0x73, 0x6d, 0x65, 0x71, 0x7b, 0x76, 0x8a, 0x97, 0x87, 0x9a, 0xa0, 0x90, 0x96, 0x95, -0x96, 0x92, 0x9a, 0x91, 0x94, 0x87, 0x7b, 0x8a, 0x89, 0x82, 0x6c, 0x6a, 0x7c, 0x7b, 0x77, 0x63, -0x51, 0x7b, 0x85, 0x77, 0x80, 0x87, 0x87, 0x62, 0x66, 0x76, 0x7a, 0x84, 0x71, 0x68, 0x6f, 0x79, -0x6c, 0x65, 0x72, 0x7e, 0x6e, 0x5f, 0x75, 0x8e, 0x94, 0x93, 0x91, 0x7d, 0x6e, 0x6b, 0x7d, 0x6e, -0x6f, 0x69, 0x5f, 0x74, 0x7a, 0x70, 0x68, 0x70, 0x6c, 0x5d, 0x64, 0x68, 0x58, 0x53, 0x58, 0x69, -0x76, 0x7d, 0x84, 0x86, 0x8b, 0x89, 0x8d, 0x8f, 0x7e, 0x74, 0x72, 0x74, 0x70, 0x6c, 0x5f, 0x65, -0x71, 0x6e, 0x73, 0x6f, 0x6b, 0x7a, 0x89, 0x8f, 0x86, 0x74, 0x80, 0x85, 0x83, 0x91, 0x87, 0x6e, -0x6c, 0x6f, 0x67, 0x65, 0x71, 0x66, 0x6c, 0x7c, 0x78, 0x7c, 0x69, 0x6c, 0x76, 0x6d, 0x7b, 0x86, -0x95, 0xa4, 0xa3, 0x9d, 0x9e, 0x87, 0x93, 0xa0, 0x83, 0x7b, 0x80, 0x7b, 0x83, 0x8b, 0x8d, 0x8a, -0x88, 0x8e, 0x8a, 0x88, 0x9c, 0x9b, 0x89, 0x8a, 0x92, 0xaa, 0xad, 0xa9, 0xa0, 0xa2, 0xa5, 0xaf, -0xaa, 0x9a, 0xaa, 0xae, 0x90, 0x8b, 0x90, 0x99, 0x7e, 0x84, 0x95, 0x8f, 0x8d, 0x83, 0x9b, 0x97, -0x94, 0x8c, 0x82, 0x93, 0x94, 0x8e, 0x84, 0x88, 0x71, 0x6b, 0x6b, 0x61, 0x5d, 0x67, 0x7b, 0x73, -0x79, 0x82, 0x84, 0x8a, 0x8b, 0x8b, 0x91, 0x91, 0x92, 0xa2, 0x8f, 0x8e, 0x93, 0x86, 0x83, 0x6d, -0x6f, 0x7c, 0x65, 0x56, 0x58, 0x69, 0x63, 0x4d, 0x5d, 0x68, 0x71, 0x6a, 0x65, 0x6e, 0x71, 0x6b, -0x67, 0x70, 0x7b, 0x87, 0x76, 0x66, 0x67, 0x67, 0x6e, 0x6a, 0x67, 0x71, 0x87, 0x6f, 0x6c, 0x78, -0x77, 0x7e, 0x75, 0x71, 0x6b, 0x68, 0x6e, 0x67, 0x61, 0x5f, 0x68, 0x5e, 0x66, 0x69, 0x6f, 0x78, -0x70, 0x6b, 0x61, 0x5a, 0x60, 0x5b, 0x48, 0x6c, 0x85, 0x81, 0x8a, 0x8b, 0x90, 0x92, 0x8c, 0x8e, -0x94, 0x8a, 0x95, 0x90, 0x8d, 0x9f, 0x8c, 0x90, 0xa0, 0x97, 0x91, 0x8c, 0x89, 0x88, 0x8b, 0x92, -0x9d, 0xa4, 0xa4, 0x8c, 0x8a, 0x8f, 0x8e, 0x80, 0x75, 0x82, 0x84, 0x7b, 0x7b, 0x7e, 0x82, 0x7e, -0x83, 0x78, 0x6e, 0x76, 0x6b, 0x6e, 0x79, 0x92, 0x9e, 0x9c, 0x96, 0x9f, 0xa6, 0x9e, 0x9f, 0x91, -0x94, 0x92, 0x8d, 0x81, 0x76, 0x82, 0x8d, 0x86, 0x80, 0x83, 0x87, 0x7c, 0x6c, 0x75, 0x84, 0x7a, -0x71, 0x70, 0x7b, 0x77, 0x75, 0x6e, 0x6c, 0x76, 0x70, 0x71, 0x75, 0x85, 0x8a, 0x77, 0x85, 0x83, -0x6f, 0x73, 0x81, 0x87, 0x77, 0x82, 0x8e, 0x87, 0x8c, 0x8b, 0x8b, 0x8e, 0x86, 0x83, 0x7e, 0x7a, -0x76, 0x60, 0x65, 0x80, 0x96, 0x87, 0x7e, 0x84, 0x80, 0x85, 0x8d, 0x8d, 0x95, 0x94, 0x8e, 0x81, -0x89, 0x8d, 0x8b, 0x8b, 0x94, 0x9c, 0x8b, 0x8a, 0x95, 0x8a, 0x85, 0x92, 0x93, 0x83, 0x7d, 0x87, -0x7b, 0x75, 0x7c, 0x86, 0x87, 0x74, 0x7b, 0x6f, 0x77, 0x81, 0x70, 0x76, 0x80, 0x78, 0x69, 0x59, -0x60, 0x67, 0x71, 0x7a, 0x83, 0x86, 0x78, 0x7b, 0x79, 0x70, 0x76, 0x71, 0x6a, 0x5f, 0x5c, 0x58, -0x54, 0x62, 0x5c, 0x5e, 0x7b, 0x79, 0x7d, 0x6c, 0x69, 0x7b, 0x74, 0x6c, 0x70, 0x7b, 0x76, 0x78, -0x86, 0x94, 0x95, 0x7e, 0x78, 0x7e, 0x86, 0x78, 0x73, 0x7b, 0x81, 0x75, 0x6c, 0x61, 0x77, 0x7e, -0x69, 0x7e, 0x86, 0x73, 0x71, 0x72, 0x7e, 0x8f, 0x9c, 0x88, 0x81, 0x84, 0x7b, 0x72, 0x78, 0x83, -0x77, 0x7b, 0x74, 0x72, 0x7e, 0x78, 0x77, 0x79, 0x77, 0x82, 0x8b, 0x7c, 0x83, 0x92, 0x99, 0x93, -0x9a, 0x96, 0x96, 0x91, 0x90, 0x8b, 0x85, 0x92, 0x8f, 0x77, 0x71, 0x74, 0x6c, 0x6e, 0x80, 0x8d, -0x8f, 0x8e, 0x97, 0x91, 0x9a, 0xa1, 0xa4, 0x98, 0x9d, 0x97, 0x88, 0x8d, 0x84, 0x84, 0x8b, 0x8d, -0xa4, 0xa4, 0x96, 0x94, 0x92, 0x89, 0x86, 0x92, 0x95, 0x92, 0x95, 0x97, 0x98, 0x9a, 0x9d, 0x95, -0x91, 0x89, 0x8e, 0x8e, 0x87, 0x80, 0x7d, 0x73, 0x79, 0x79, 0x73, 0x70, 0x7d, 0x77, 0x75, 0x84, -0x84, 0x83, 0x7e, 0x89, 0x9d, 0x94, 0x8b, 0x87, 0x7d, 0x7a, 0x87, 0x83, 0x7e, 0x77, 0x82, 0x70, -0x6b, 0x6b, 0x67, 0x59, 0x60, 0x5b, 0x6a, 0x73, 0x62, 0x55, 0x5e, 0x6c, 0x6a, 0x5b, 0x5c, 0x6a, -0x63, 0x5e, 0x5c, 0x5f, 0x5c, 0x59, 0x5a, 0x4e, 0x58, 0x5e, 0x70, 0x6f, 0x7e, 0x81, 0x6d, 0x77, -0x80, 0x77, 0x77, 0x75, 0x68, 0x6a, 0x6b, 0x6a, 0x73, 0x65, 0x68, 0x70, 0x71, 0x73, 0x77, 0x66, -0x64, 0x68, 0x70, 0x79, 0x80, 0x83, 0x8b, 0x91, 0x95, 0x9d, 0x99, 0x95, 0x97, 0xa4, 0xa9, 0xa4, -0xa2, 0xa6, 0xa1, 0xa1, 0xa4, 0x96, 0x9c, 0x8b, 0x87, 0x9a, 0x95, 0x8d, 0x8a, 0x8b, 0x91, 0x91, -0x94, 0x88, 0x7e, 0x7a, 0x72, 0x78, 0x80, 0x7a, 0x82, 0x8d, 0x88, 0x83, 0x86, 0x77, 0x7d, 0x77, -0x6e, 0x84, 0x82, 0x8e, 0x8c, 0x83, 0x8e, 0x8a, 0x8c, 0x8a, 0x7b, 0x7c, 0x7e, 0x7d, 0x78, 0x71, -0x7b, 0x70, 0x79, 0x71, 0x67, 0x68, 0x79, 0x7b, 0x65, 0x6a, 0x84, 0x7c, 0x75, 0x6a, 0x7b, 0x7a, -0x6e, 0x7d, 0x7d, 0x86, 0x80, 0x8a, 0x8f, 0x96, 0x9d, 0x98, 0x8e, 0x99, 0x9e, 0x82, 0x92, 0x91, -0x95, 0x8e, 0x8b, 0x8b, 0x83, 0x90, 0x8b, 0x87, 0x82, 0x85, 0x85, 0x7d, 0x78, 0x7b, 0x76, 0x68, -0x7a, 0x7d, 0x68, 0x6b, 0x6f, 0x68, 0x68, 0x78, 0x78, 0x79, 0x83, 0x83, 0x86, 0x83, 0x81, 0x7e, -0x83, 0x82, 0x8c, 0x89, 0x8a, 0x88, 0x8f, 0x84, 0x87, 0x89, 0x79, 0x6f, 0x71, 0x88, 0x8a, 0x80, -0x81, 0x7b, 0x7b, 0x7c, 0x92, 0x8f, 0x7a, 0x8f, 0x95, 0x88, 0x8e, 0x82, 0x84, 0x77, 0x6d, 0x7e, -0x72, 0x77, 0x80, 0x74, 0x76, 0x81, 0x83, 0x75, 0x6f, 0x76, 0x6b, 0x66, 0x75, 0x79, 0x7c, 0x78, -0x74, 0x79, 0x79, 0x73, 0x79, 0x7a, 0x77, 0x7b, 0x72, 0x68, 0x73, 0x73, 0x74, 0x74, 0x6e, 0x6e, -0x6b, 0x78, 0x76, 0x7d, 0x85, 0x7d, 0x7c, 0x7b, 0x79, 0x75, 0x6e, 0x72, 0x6b, 0x60, 0x62, 0x68, -0x6a, 0x6a, 0x74, 0x78, 0x83, 0x81, 0x7b, 0x7c, 0x76, 0x77, 0x71, 0x71, 0x80, 0x89, 0x84, 0x7b, -0x83, 0x85, 0x81, 0x89, 0x7a, 0x7c, 0x7d, 0x79, 0x7b, 0x84, 0x8b, 0x8d, 0x8a, 0x87, 0x90, 0x8e, -0x85, 0x90, 0x9b, 0x99, 0x8d, 0x8e, 0x90, 0x8c, 0x89, 0x8e, 0x8f, 0x93, 0x87, 0x84, 0x82, 0x7a, -0x85, 0x8b, 0x8f, 0x9a, 0x8f, 0x78, 0x7a, 0x88, 0x8f, 0x82, 0x9a, 0xa2, 0x92, 0x9d, 0x9b, 0x8d, -0x85, 0x89, 0x90, 0x95, 0x94, 0x8e, 0x84, 0x83, 0x82, 0x80, 0x8e, 0x8b, 0x85, 0x89, 0x7e, 0x93, -0x91, 0x85, 0x92, 0x80, 0x72, 0x81, 0x75, 0x73, 0x6a, 0x6b, 0x76, 0x6c, 0x7c, 0x7a, 0x75, 0x83, -0x7e, 0x7b, 0x77, 0x82, 0x80, 0x6f, 0x6c, 0x7d, 0x87, 0x74, 0x70, 0x6f, 0x6b, 0x66, 0x65, 0x5d, -0x64, 0x67, 0x68, 0x66, 0x73, 0x77, 0x6d, 0x64, 0x6d, 0x78, 0x77, 0x75, 0x71, 0x7e, 0x89, 0x8d, -0x83, 0x89, 0x7a, 0x79, 0x8c, 0x81, 0x87, 0x81, 0x7a, 0x81, 0x7a, 0x7a, 0x80, 0x83, 0x77, 0x6e, -0x6c, 0x6b, 0x66, 0x5f, 0x6d, 0x7b, 0x87, 0x82, 0x7e, 0x85, 0x7b, 0x77, 0x80, 0x89, 0x88, 0x87, -0x7a, 0x77, 0x73, 0x83, 0x75, 0x6f, 0x7e, 0x7d, 0x86, 0x80, 0x8b, 0x90, 0x92, 0x9b, 0x9b, 0xa4, -0x9b, 0x90, 0x8b, 0x81, 0x7b, 0x79, 0x80, 0x87, 0x81, 0x75, 0x7c, 0x89, 0x79, 0x76, 0x84, 0x77, -0x6a, 0x78, 0x7d, 0x7c, 0x85, 0x95, 0x8a, 0x83, 0x92, 0x8b, 0x7d, 0x77, 0x86, 0x97, 0x8b, 0x89, -0x90, 0x89, 0x89, 0x92, 0x86, 0x8b, 0x8f, 0x89, 0x94, 0x94, 0x92, 0x94, 0x93, 0x8b, 0x88, 0x86, -0x8f, 0x7c, 0x68, 0x68, 0x70, 0x71, 0x66, 0x5c, 0x61, 0x68, 0x60, 0x64, 0x7c, 0x77, 0x69, 0x6c, -0x6d, 0x6f, 0x72, 0x73, 0x72, 0x75, 0x7b, 0x73, 0x72, 0x82, 0x82, 0x85, 0x8d, 0x8b, 0x81, 0x82, -0x7e, 0x7d, 0x89, 0x83, 0x94, 0x94, 0x84, 0x84, 0x89, 0x89, 0x83, 0x8a, 0x81, 0x71, 0x82, 0x84, -0x73, 0x79, 0x7a, 0x77, 0x77, 0x81, 0x8f, 0x8b, 0x8e, 0x88, 0x8d, 0x8d, 0x90, 0x8c, 0x84, 0x8b, -0x97, 0x84, 0x7a, 0x8a, 0x7d, 0x75, 0x7e, 0x8b, 0x90, 0x91, 0x91, 0x8c, 0x84, 0x86, 0x8d, 0x79, -0x7a, 0x7a, 0x73, 0x7b, 0x7c, 0x82, 0x80, 0x79, 0x8c, 0x8b, 0x74, 0x76, 0x76, 0x6d, 0x76, 0x74, -0x77, 0x72, 0x71, 0x7c, 0x73, 0x74, 0x7a, 0x6d, 0x6f, 0x78, 0x7d, 0x79, 0x6e, 0x76, 0x87, 0x80, -0x79, 0x75, 0x7b, 0x77, 0x6e, 0x75, 0x80, 0x85, 0x81, 0x78, 0x78, 0x71, 0x72, 0x67, 0x70, 0x72, -0x74, 0x7e, 0x7c, 0x7a, 0x7b, 0x7e, 0x85, 0x7a, 0x7c, 0x80, 0x80, 0x71, 0x6c, 0x6c, 0x66, 0x75, -0x86, 0x87, 0x7b, 0x76, 0x7c, 0x6d, 0x77, 0x87, 0x83, 0x70, 0x6f, 0x7c, 0x6e, 0x73, 0x7e, 0x6d, -0x68, 0x82, 0x84, 0x83, 0x89, 0x90, 0x90, 0x89, 0x93, 0x89, 0x82, 0x82, 0x86, 0x83, 0x81, 0x87, -0x8e, 0x85, 0x8c, 0x9d, 0x93, 0x8b, 0x99, 0x90, 0x8c, 0x8f, 0x80, 0x76, 0x7d, 0x74, 0x7c, 0x7c, -0x82, 0x8a, 0x75, 0x78, 0x96, 0x9b, 0x92, 0x9d, 0x90, 0x96, 0x9d, 0x9b, 0x9a, 0x95, 0x9a, 0x93, -0x8e, 0x9e, 0x9e, 0x93, 0x89, 0x87, 0x8f, 0x89, 0x85, 0x8b, 0x98, 0x88, 0x87, 0x89, 0x84, 0x89, -0x83, 0x7c, 0x7d, 0x7a, 0x79, 0x6c, 0x6d, 0x75, 0x72, 0x77, 0x7d, 0x7d, 0x87, 0x7d, 0x87, 0x8d, -0x84, 0x8b, 0x81, 0x7e, 0x88, 0x87, 0x77, 0x7a, 0x7a, 0x76, 0x73, 0x67, 0x6f, 0x5f, 0x55, 0x7c, -0x84, 0x71, 0x71, 0x7a, 0x70, 0x60, 0x5f, 0x67, 0x62, 0x5c, 0x5e, 0x60, 0x5a, 0x68, 0x69, 0x60, -0x74, 0x76, 0x6a, 0x75, 0x7a, 0x75, 0x71, 0x68, 0x71, 0x77, 0x77, 0x73, 0x6c, 0x63, 0x68, 0x80, -0x7c, 0x7c, 0x83, 0x7b, 0x78, 0x71, 0x74, 0x7c, 0x86, 0x86, 0x7d, 0x82, 0x82, 0x8e, 0x85, 0x80, -0x9a, 0x99, 0x8f, 0x8b, 0x8e, 0x98, 0x9b, 0xa5, 0x9f, 0x9a, 0xa1, 0xa0, 0x97, 0x9c, 0xa3, 0xa3, -0x9a, 0x90, 0x88, 0x8a, 0x80, 0x77, 0x80, 0x7c, 0x84, 0x8e, 0x85, 0x71, 0x7b, 0x80, 0x71, 0x73, -0x76, 0x72, 0x75, 0x65, 0x5f, 0x6c, 0x73, 0x77, 0x6d, 0x6a, 0x77, 0x7d, 0x86, 0x88, 0x86, 0x80, -0x80, 0x86, 0x81, 0x7e, 0x82, 0x84, 0x76, 0x7e, 0x8d, 0x86, 0x7d, 0x7e, 0x8a, 0x7d, 0x76, 0x75, -0x69, 0x67, 0x6b, 0x66, 0x6c, 0x64, 0x69, 0x6e, 0x6a, 0x71, 0x7c, 0x76, 0x79, 0x85, 0x86, 0x8b, -0x8a, 0x87, 0x83, 0x7a, 0x8c, 0x8d, 0x7c, 0x7e, 0x84, 0x7c, 0x93, 0x80, 0x86, 0x8f, 0x88, 0x8e, -0x87, 0x93, 0x99, 0x8b, 0x8c, 0x8c, 0x8a, 0x81, 0x83, 0x7a, 0x81, 0x86, 0x7d, 0x76, 0x76, 0x7e, -0x83, 0x82, 0x84, 0x87, 0x83, 0x8c, 0x87, 0x85, 0x90, 0x8d, 0x95, 0x91, 0x8a, 0x82, 0x84, 0x7b, -0x7e, 0x81, 0x83, 0x7b, 0x82, 0x89, 0x8c, 0x93, 0x95, 0x9a, 0x91, 0x91, 0x94, 0x89, 0x83, 0x7e, -0x78, 0x77, 0x85, 0x85, 0x7d, 0x81, 0x8d, 0x85, 0x83, 0x86, 0x81, 0x7a, 0x6e, 0x78, 0x7b, 0x7a, -0x80, 0x7c, 0x6e, 0x77, 0x76, 0x6e, 0x70, 0x72, 0x77, 0x6c, 0x6d, 0x72, 0x6f, 0x66, 0x6b, 0x6b, -0x68, 0x6e, 0x77, 0x6b, 0x65, 0x6f, 0x76, 0x7a, 0x77, 0x72, 0x6b, 0x77, 0x84, 0x73, 0x69, 0x7b, -0x76, 0x71, 0x72, 0x73, 0x7b, 0x85, 0x7c, 0x80, 0x8b, 0x8a, 0x7c, 0x74, 0x7b, 0x86, 0x82, 0x78, -0x72, 0x7e, 0x78, 0x72, 0x76, 0x6f, 0x73, 0x70, 0x6c, 0x75, 0x76, 0x75, 0x7b, 0x77, 0x78, 0x87, -0x86, 0x8d, 0x8c, 0x91, 0x94, 0x94, 0x9b, 0x8d, 0x84, 0x8a, 0x8b, 0x7d, 0x83, 0x8d, 0x82, 0x82, -0x89, 0x8e, 0x95, 0x8f, 0x8f, 0x92, 0x8a, 0x80, 0x78, 0x7c, 0x81, 0x89, 0x80, 0x83, 0x88, 0x81, -0x75, 0x81, 0x8a, 0x8a, 0x8e, 0x8b, 0x99, 0x8e, 0x89, 0x8e, 0x7d, 0x7e, 0x80, 0x84, 0x83, 0x8a, -0x89, 0x83, 0x84, 0x87, 0x89, 0x7c, 0x85, 0x87, 0x83, 0x77, 0x83, 0x80, 0x78, 0x7c, 0x7d, 0x80, -0x80, 0x79, 0x7a, 0x7e, 0x84, 0x73, 0x6d, 0x88, 0x92, 0x89, 0x83, 0x7c, 0x8c, 0x8b, 0x84, 0x90, -0x90, 0x85, 0x7a, 0x73, 0x73, 0x6b, 0x6d, 0x6b, 0x61, 0x6d, 0x6c, 0x6e, 0x78, 0x78, 0x76, 0x77, -0x84, 0x89, 0x7e, 0x79, 0x84, 0x7c, 0x77, 0x7d, 0x7a, 0x73, 0x79, 0x7d, 0x7d, 0x87, 0x88, 0x85, -0x76, 0x7d, 0x86, 0x70, 0x6f, 0x75, 0x80, 0x87, 0x7d, 0x77, 0x83, 0x74, 0x79, 0x79, 0x66, 0x68, -0x71, 0x6c, 0x5e, 0x64, 0x63, 0x59, 0x56, 0x67, 0x6c, 0x70, 0x79, 0x82, 0x87, 0x90, 0x9a, 0x94, -0x93, 0x9d, 0x9d, 0x93, 0x8d, 0x97, 0x9c, 0x93, 0x9a, 0xa6, 0x98, 0x98, 0x93, 0x8c, 0x8d, 0x94, -0x94, 0x85, 0x88, 0x8e, 0x8a, 0x8e, 0x8e, 0x7d, 0x8d, 0x8e, 0x8c, 0x92, 0x7e, 0x7e, 0x7b, 0x78, -0x7a, 0x7b, 0x72, 0x71, 0x72, 0x70, 0x77, 0x7c, 0x8a, 0x7e, 0x7c, 0x8c, 0x8c, 0x88, 0x89, 0x76, -0x6e, 0x81, 0x7d, 0x83, 0x84, 0x7d, 0x75, 0x7c, 0x7e, 0x7d, 0x7a, 0x72, 0x67, 0x6a, 0x67, 0x5f, -0x68, 0x64, 0x69, 0x70, 0x79, 0x6c, 0x6a, 0x72, 0x67, 0x70, 0x77, 0x81, 0x78, 0x72, 0x7d, 0x7d, -0x69, 0x69, 0x7e, 0x74, 0x73, 0x80, 0x8e, 0x92, 0x8d, 0x8a, 0x8c, 0x91, 0x97, 0x90, 0x7d, 0x8c, -0x83, 0x87, 0x8e, 0x89, 0x8a, 0x83, 0x7b, 0x83, 0x7e, 0x7e, 0x77, 0x6e, 0x75, 0x74, 0x78, 0x83, -0x85, 0x8c, 0x8a, 0x84, 0x97, 0xa0, 0x92, 0x8b, 0x95, 0x8f, 0x8a, 0x96, 0x95, 0x8d, 0x85, 0x83, -0x8c, 0x90, 0x8c, 0x7b, 0x86, 0x8f, 0x88, 0x81, 0x88, 0x90, 0x8a, 0x82, 0x84, 0x86, 0x81, 0x7d, -0x79, 0x79, 0x82, 0x84, 0x86, 0x79, 0x7e, 0x78, 0x6f, 0x6e, 0x6e, 0x6f, 0x6b, 0x6c, 0x6f, 0x6a, -0x6d, 0x6f, 0x6f, 0x71, 0x6f, 0x79, 0x7b, 0x6d, 0x72, 0x7b, 0x73, 0x69, 0x62, 0x68, 0x65, 0x62, -0x6e, 0x74, 0x7b, 0x84, 0x7c, 0x85, 0x86, 0x87, 0x89, 0x83, 0x87, 0x88, 0x77, 0x7d, 0x8f, 0x84, -0x79, 0x84, 0x8d, 0x86, 0x87, 0x82, 0x84, 0x89, 0x8a, 0x8a, 0x90, 0x84, 0x89, 0x88, 0x73, 0x7b, -0x7d, 0x78, 0x78, 0x7b, 0x77, 0x7c, 0x7a, 0x73, 0x6b, 0x76, 0x73, 0x67, 0x73, 0x71, 0x6a, 0x80, -0x89, 0x7e, 0x7e, 0x8c, 0x80, 0x7b, 0x7d, 0x81, 0x7d, 0x79, 0x80, 0x80, 0x8e, 0x8d, 0x88, 0x93, -0x92, 0x90, 0x90, 0x8a, 0x80, 0x87, 0x80, 0x7c, 0x84, 0x87, 0x8d, 0x83, 0x77, 0x82, 0x89, 0x8e, -0x86, 0x7e, 0x8f, 0x98, 0x8d, 0x84, 0x8b, 0x8f, 0x82, 0x75, 0x80, 0x8c, 0x88, 0x91, 0x9a, 0x99, -0x9a, 0x98, 0x8e, 0x94, 0x94, 0x87, 0x86, 0x81, 0x7b, 0x81, 0x85, 0x80, 0x8b, 0x8b, 0x7a, 0x81, -0x82, 0x79, 0x78, 0x77, 0x79, 0x78, 0x7c, 0x82, 0x7e, 0x83, 0x73, 0x7c, 0x7d, 0x79, 0x7b, 0x6d, -0x73, 0x73, 0x6a, 0x73, 0x6a, 0x63, 0x67, 0x62, 0x6c, 0x6f, 0x68, 0x6e, 0x81, 0x79, 0x7b, 0x7b, -0x76, 0x7c, 0x7a, 0x78, 0x77, 0x76, 0x70, 0x75, 0x83, 0x7e, 0x76, 0x87, 0x83, 0x72, 0x77, 0x79, -0x74, 0x73, 0x71, 0x78, 0x79, 0x86, 0x85, 0x82, 0x7e, 0x70, 0x73, 0x7b, 0x76, 0x77, 0x7d, 0x74, -0x78, 0x75, 0x6c, 0x70, 0x71, 0x6b, 0x6d, 0x7a, 0x78, 0x8c, 0x98, 0x92, 0x90, 0x9c, 0x9f, 0xa0, -0x92, 0x9b, 0x98, 0x7b, 0x84, 0x8e, 0x8f, 0x85, 0x86, 0x88, 0x8b, 0x90, 0x82, 0x7a, 0x7d, 0x81, -0x7d, 0x84, 0x81, 0x8b, 0x8e, 0x82, 0x85, 0x89, 0x87, 0x7c, 0x7c, 0x7a, 0x7a, 0x81, 0x83, 0x7d, -0x76, 0x7c, 0x78, 0x6e, 0x75, 0x84, 0x81, 0x81, 0x80, 0x8c, 0x81, 0x78, 0x7e, 0x85, 0x86, 0x8a, -0x7e, 0x6e, 0x7c, 0x7c, 0x71, 0x79, 0x7d, 0x7e, 0x76, 0x68, 0x69, 0x78, 0x6f, 0x67, 0x6e, 0x6c, -0x6c, 0x77, 0x73, 0x6f, 0x78, 0x7a, 0x81, 0x7d, 0x85, 0x88, 0x79, 0x7b, 0x81, 0x79, 0x81, 0x7d, -0x7a, 0x7e, 0x7d, 0x90, 0x91, 0x82, 0x80, 0x85, 0x88, 0x84, 0x87, 0x93, 0x9a, 0x92, 0x8c, 0x85, -0x8f, 0x96, 0x7a, 0x7e, 0x89, 0x81, 0x88, 0x80, 0x7a, 0x84, 0x73, 0x75, 0x88, 0x84, 0x7b, 0x80, -0x87, 0x8d, 0x8d, 0x88, 0x8c, 0x91, 0x89, 0x8b, 0x8f, 0x8f, 0x8c, 0x7a, 0x76, 0x7a, 0x7a, 0x82, -0x79, 0x80, 0x86, 0x81, 0x83, 0x82, 0x88, 0x88, 0x84, 0x81, 0x8b, 0x87, 0x81, 0x85, 0x90, 0x96, -0x8d, 0x99, 0x95, 0x85, 0x86, 0x7e, 0x82, 0x80, 0x73, 0x87, 0x89, 0x80, 0x7d, 0x7d, 0x78, 0x74, -0x6f, 0x70, 0x7e, 0x7a, 0x74, 0x75, 0x77, 0x71, 0x6c, 0x6c, 0x6d, 0x68, 0x62, 0x69, 0x63, 0x67, -0x71, 0x6f, 0x74, 0x68, 0x66, 0x6a, 0x66, 0x65, 0x6d, 0x72, 0x70, 0x7e, 0x81, 0x7c, 0x89, 0x8b, -0x81, 0x84, 0x80, 0x76, 0x7e, 0x75, 0x6a, 0x7d, 0x80, 0x79, 0x78, 0x78, 0x83, 0x86, 0x7e, 0x82, -0x89, 0x83, 0x82, 0x86, 0x8d, 0x8a, 0x90, 0x94, 0x83, 0x7c, 0x7e, 0x80, 0x81, 0x7d, 0x7d, 0x7e, -0x85, 0x80, 0x7e, 0x8c, 0x86, 0x87, 0x89, 0x86, 0x81, 0x7e, 0x83, 0x89, 0x8d, 0x8f, 0x8d, 0x8d, -0x87, 0x7d, 0x83, 0x82, 0x78, 0x78, 0x7c, 0x84, 0x79, 0x79, 0x7e, 0x79, 0x77, 0x76, 0x76, 0x7e, -0x7e, 0x7a, 0x83, 0x88, 0x7a, 0x79, 0x81, 0x7b, 0x88, 0x87, 0x7c, 0x86, 0x8b, 0x8a, 0x8e, 0x8e, -0x8a, 0x8d, 0x8e, 0x88, 0x92, 0x96, 0x89, 0x89, 0x94, 0x91, 0x8e, 0x8b, 0x85, 0x88, 0x8a, 0x80, -0x77, 0x7e, 0x80, 0x75, 0x75, 0x76, 0x7a, 0x75, 0x70, 0x77, 0x85, 0x82, 0x76, 0x81, 0x84, 0x75, -0x72, 0x73, 0x73, 0x6d, 0x6f, 0x67, 0x6f, 0x81, 0x7d, 0x79, 0x7e, 0x7c, 0x7c, 0x77, 0x70, 0x7d, -0x77, 0x76, 0x75, 0x81, 0x81, 0x7a, 0x78, 0x78, 0x82, 0x86, 0x79, 0x74, 0x7b, 0x75, 0x73, 0x6d, -0x7d, 0x77, 0x6b, 0x6a, 0x6f, 0x74, 0x6f, 0x6f, 0x79, 0x6d, 0x6e, 0x85, 0x81, 0x76, 0x7c, 0x7c, -0x7b, 0x77, 0x78, 0x80, 0x82, 0x7a, 0x80, 0x90, 0x91, 0x8e, 0x87, 0x88, 0x91, 0x8f, 0x8b, 0x8d, -0x8e, 0x8e, 0x89, 0x90, 0x94, 0x8a, 0x8b, 0x8d, 0x8e, 0x8c, 0x87, 0x82, 0x7d, 0x80, 0x88, 0x87, -0x88, 0x8c, 0x8b, 0x84, 0x86, 0x92, 0x8f, 0x83, 0x87, 0x8d, 0x8b, 0x88, 0x93, 0x8d, 0x84, 0x7c, -0x7b, 0x86, 0x86, 0x7e, 0x7d, 0x83, 0x8d, 0x79, 0x7a, 0x88, 0x7c, 0x72, 0x6b, 0x7d, 0x85, 0x73, -0x6f, 0x72, 0x7a, 0x75, 0x76, 0x7c, 0x82, 0x77, 0x6c, 0x6c, 0x71, 0x73, 0x6c, 0x65, 0x69, 0x74, -0x75, 0x6b, 0x68, 0x6e, 0x68, 0x6c, 0x6b, 0x75, 0x7a, 0x72, 0x70, 0x72, 0x82, 0x7b, 0x77, 0x7c, -0x78, 0x79, 0x81, 0x80, 0x7a, 0x78, 0x7e, 0x8d, 0x86, 0x83, 0x85, 0x89, 0x85, 0x7d, 0x8e, 0x8d, -0x90, 0x87, 0x82, 0x8f, 0x91, 0x81, 0x7c, 0x82, 0x7d, 0x83, 0x86, 0x82, 0x86, 0x88, 0x85, 0x98, -0x9e, 0x97, 0x99, 0x97, 0x9a, 0x93, 0x96, 0x98, 0x90, 0x8b, 0x88, 0x82, 0x8b, 0x8c, 0x79, 0x7b, -0x7e, 0x83, 0x81, 0x73, 0x7a, 0x80, 0x73, 0x70, 0x79, 0x7e, 0x7b, 0x6a, 0x71, 0x70, 0x76, 0x7b, -0x6c, 0x7a, 0x79, 0x71, 0x70, 0x78, 0x7c, 0x71, 0x76, 0x73, 0x7b, 0x79, 0x74, 0x7b, 0x77, 0x77, -0x77, 0x79, 0x7c, 0x7d, 0x7b, 0x75, 0x86, 0x8c, 0x79, 0x7a, 0x8e, 0x84, 0x76, 0x79, 0x7c, 0x76, -0x77, 0x75, 0x78, 0x80, 0x78, 0x70, 0x6e, 0x79, 0x7a, 0x71, 0x70, 0x76, 0x7c, 0x7a, 0x79, 0x7a, -0x79, 0x75, 0x83, 0x7e, 0x76, 0x7c, 0x77, 0x77, 0x7d, 0x7e, 0x85, 0x86, 0x82, 0x7c, 0x7c, 0x7c, -0x81, 0x81, 0x7d, 0x78, 0x7b, 0x82, 0x7a, 0x7c, 0x85, 0x80, 0x80, 0x7d, 0x80, 0x7e, 0x81, 0x83, -0x76, 0x7e, 0x88, 0x88, 0x8b, 0x87, 0x93, 0x8e, 0x90, 0x8f, 0x8e, 0x8a, 0x8e, 0x90, 0x8c, 0x89, -0x8a, 0x89, 0x85, 0x8e, 0x91, 0x88, 0x81, 0x84, 0x7e, 0x7b, 0x83, 0x87, 0x84, 0x7b, 0x83, 0x86, -0x82, 0x87, 0x7d, 0x79, 0x7d, 0x8f, 0x8c, 0x7d, 0x85, 0x89, 0x84, 0x89, 0x92, 0x8b, 0x87, 0x95, -0x91, 0x8c, 0x8d, 0x89, 0x87, 0x80, 0x7a, 0x81, 0x81, 0x79, 0x7b, 0x71, 0x73, 0x76, 0x76, 0x70, -0x72, 0x80, 0x81, 0x83, 0x88, 0x8b, 0x83, 0x7a, 0x80, 0x82, 0x79, 0x77, 0x76, 0x77, 0x6f, 0x73, -0x7e, 0x76, 0x70, 0x70, 0x71, 0x71, 0x73, 0x70, 0x6e, 0x74, 0x74, 0x77, 0x74, 0x79, 0x75, 0x65, -0x6e, 0x76, 0x71, 0x74, 0x74, 0x76, 0x7a, 0x7e, 0x7b, 0x78, 0x77, 0x7c, 0x7c, 0x7b, 0x83, 0x82, -0x7b, 0x75, 0x74, 0x81, 0x7b, 0x6f, 0x79, 0x74, 0x76, 0x81, 0x7a, 0x78, 0x87, 0x82, 0x79, 0x86, -0x7e, 0x80, 0x85, 0x88, 0x7d, 0x7e, 0x86, 0x83, 0x86, 0x83, 0x85, 0x96, 0x98, 0x93, 0x95, 0x8c, -0x94, 0x97, 0x85, 0x80, 0x8c, 0x8e, 0x77, 0x80, 0x8d, 0x86, 0x85, 0x7b, 0x76, 0x81, 0x84, 0x82, -0x84, 0x81, 0x85, 0x8c, 0x89, 0x82, 0x7e, 0x7e, 0x74, 0x7d, 0x88, 0x81, 0x82, 0x84, 0x7e, 0x7e, -0x87, 0x81, 0x7a, 0x7c, 0x77, 0x80, 0x85, 0x7e, 0x84, 0x81, 0x80, 0x85, 0x77, 0x73, 0x79, 0x76, -0x6f, 0x6e, 0x79, 0x7e, 0x6e, 0x6e, 0x78, 0x77, 0x74, 0x6f, 0x76, 0x7a, 0x79, 0x77, 0x6e, 0x6c, -0x71, 0x73, 0x72, 0x77, 0x84, 0x7b, 0x6f, 0x80, 0x7d, 0x80, 0x82, 0x80, 0x80, 0x82, 0x85, 0x7c, -0x80, 0x7e, 0x80, 0x7e, 0x81, 0x81, 0x7a, 0x7e, 0x80, 0x88, 0x83, 0x87, 0x93, 0x93, 0x83, 0x82, -0x7d, 0x7a, 0x81, 0x83, 0x7d, 0x82, 0x8a, 0x83, 0x83, 0x85, 0x86, 0x88, 0x92, 0x8d, 0x8d, 0x8f, -0x93, 0x91, 0x8d, 0x92, 0x91, 0x95, 0x91, 0x88, 0x8c, 0x91, 0x8f, 0x8c, 0x88, 0x84, 0x86, 0x81, -0x76, 0x7b, 0x81, 0x84, 0x7e, 0x7c, 0x80, 0x83, 0x75, 0x73, 0x7a, 0x85, 0x7b, 0x77, 0x83, 0x83, -0x84, 0x85, 0x84, 0x82, 0x83, 0x85, 0x85, 0x8a, 0x83, 0x7e, 0x7a, 0x77, 0x79, 0x76, 0x70, 0x6f, -0x6b, 0x67, 0x69, 0x6e, 0x71, 0x73, 0x71, 0x69, 0x73, 0x71, 0x6b, 0x6b, 0x6e, 0x6f, 0x6b, 0x74, -0x78, 0x70, 0x6f, 0x76, 0x7d, 0x7a, 0x73, 0x74, 0x7c, 0x7c, 0x75, 0x76, 0x7d, 0x80, 0x79, 0x75, -0x7c, 0x7d, 0x79, 0x78, 0x7d, 0x82, 0x82, 0x88, 0x86, 0x86, 0x8d, 0x90, 0x80, 0x87, 0x8a, 0x83, -0x7b, 0x85, 0x90, 0x81, 0x7e, 0x85, 0x8e, 0x8b, 0x81, 0x80, 0x7c, 0x85, 0x7d, 0x7b, 0x8b, 0x8b, -0x84, 0x81, 0x84, 0x8e, 0x8a, 0x85, 0x82, 0x83, 0x86, 0x85, 0x81, 0x82, 0x87, 0x87, 0x84, 0x88, -0x88, 0x8c, 0x85, 0x7c, 0x85, 0x83, 0x7d, 0x86, 0x8a, 0x7e, 0x73, 0x78, 0x80, 0x79, 0x76, 0x76, -0x7c, 0x7c, 0x83, 0x7d, 0x82, 0x82, 0x79, 0x83, 0x7e, 0x80, 0x85, 0x7e, 0x85, 0x88, 0x84, 0x8a, -0x8e, 0x8b, 0x7e, 0x7c, 0x87, 0x7b, 0x78, 0x79, 0x80, 0x83, 0x7b, 0x80, 0x7d, 0x85, 0x88, 0x83, -0x83, 0x7e, 0x85, 0x8a, 0x81, 0x86, 0x88, 0x80, 0x7d, 0x89, 0x87, 0x76, 0x81, 0x7c, 0x74, 0x7d, -0x84, 0x7c, 0x7a, 0x7a, 0x72, 0x75, 0x7e, 0x78, 0x6f, 0x72, 0x7b, 0x7a, 0x73, 0x7a, 0x79, 0x78, -0x71, 0x73, 0x78, 0x69, 0x6a, 0x75, 0x75, 0x6f, 0x72, 0x77, 0x72, 0x7c, 0x7e, 0x7d, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x85, 0x7c, 0x79, 0x7e, 0x80, 0x89, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7a, 0x82, -0x85, 0x7c, 0x79, 0x7c, 0x81, 0x81, 0x79, 0x84, 0x8e, 0x88, 0x86, 0x87, 0x95, 0x96, 0x85, 0x82, -0x8f, 0x83, 0x81, 0x83, 0x7e, 0x85, 0x81, 0x7a, 0x79, 0x80, 0x8e, 0x8a, 0x7e, 0x88, 0x91, 0x91, -0x8b, 0x87, 0x84, 0x86, 0x8d, 0x85, 0x87, 0x8a, 0x8a, 0x86, 0x82, 0x8b, 0x87, 0x85, 0x88, 0x7d, -0x7d, 0x82, 0x78, 0x7e, 0x86, 0x84, 0x84, 0x83, 0x7e, 0x80, 0x7c, 0x71, 0x6f, 0x73, 0x6a, 0x6e, -0x73, 0x75, 0x73, 0x77, 0x6d, 0x74, 0x7b, 0x75, 0x78, 0x76, 0x79, 0x7b, 0x7e, 0x84, 0x81, 0x87, -0x7d, 0x76, 0x7d, 0x74, 0x70, 0x70, 0x6d, 0x70, 0x75, 0x7a, 0x7b, 0x77, 0x73, 0x6d, 0x74, 0x6f, -0x72, 0x7a, 0x75, 0x7b, 0x83, 0x83, 0x84, 0x89, 0x88, 0x7d, 0x80, 0x87, 0x83, 0x7b, 0x7d, 0x7b, -0x82, 0x89, 0x86, 0x8e, 0x8d, 0x83, 0x81, 0x8c, 0x93, 0x8f, 0x8a, 0x8c, 0x99, 0x9e, 0x94, 0x8e, -0x99, 0x97, 0x94, 0x93, 0x8e, 0x8e, 0x8e, 0x88, 0x87, 0x83, 0x87, 0x85, 0x7b, 0x73, 0x74, 0x80, -0x7c, 0x75, 0x7a, 0x81, 0x83, 0x84, 0x87, 0x79, 0x83, 0x85, 0x84, 0x7d, 0x7d, 0x89, 0x84, 0x7c, -0x7c, 0x80, 0x7b, 0x77, 0x7d, 0x82, 0x7b, 0x76, 0x78, 0x73, 0x7e, 0x82, 0x7d, 0x7c, 0x7a, 0x83, -0x84, 0x7c, 0x73, 0x6a, 0x6f, 0x74, 0x70, 0x69, 0x6d, 0x73, 0x6c, 0x66, 0x73, 0x77, 0x6f, 0x70, -0x70, 0x76, 0x7e, 0x77, 0x74, 0x72, 0x7a, 0x78, 0x71, 0x77, 0x77, 0x76, 0x79, 0x7d, 0x7a, 0x83, -0x7e, 0x71, 0x75, 0x7b, 0x82, 0x7a, 0x7a, 0x78, 0x7b, 0x7d, 0x77, 0x7a, 0x7e, 0x78, 0x80, 0x83, -0x84, 0x85, 0x8b, 0x8b, 0x84, 0x88, 0x8f, 0x8c, 0x86, 0x82, 0x7e, 0x89, 0x91, 0x8d, 0x8b, 0x88, -0x84, 0x87, 0x83, 0x7c, 0x86, 0x85, 0x81, 0x8b, 0x8b, 0x8a, 0x8c, 0x90, 0x8c, 0x88, 0x84, 0x89, -0x88, 0x7d, 0x86, 0x8c, 0x83, 0x82, 0x85, 0x83, 0x80, 0x81, 0x82, 0x7d, 0x87, 0x8a, 0x87, 0x88, -0x8d, 0x86, 0x83, 0x88, 0x82, 0x7e, 0x82, 0x82, 0x81, 0x85, 0x81, 0x87, 0x90, 0x8e, 0x88, 0x84, -0x84, 0x84, 0x7e, 0x7b, 0x7b, 0x81, 0x6f, 0x77, 0x84, 0x80, 0x81, 0x73, 0x70, 0x7b, 0x7a, 0x79, -0x7c, 0x78, 0x7a, 0x78, 0x82, 0x84, 0x77, 0x75, 0x73, 0x79, 0x74, 0x79, 0x7b, 0x78, 0x78, 0x7a, -0x83, 0x7e, 0x74, 0x71, 0x78, 0x73, 0x75, 0x75, 0x78, 0x7c, 0x79, 0x79, 0x78, 0x79, 0x75, 0x70, -0x6f, 0x74, 0x73, 0x7e, 0x7b, 0x79, 0x86, 0x87, 0x7e, 0x79, 0x84, 0x7e, 0x7b, 0x82, 0x80, 0x78, -0x81, 0x7b, 0x75, 0x74, 0x76, 0x7b, 0x7d, 0x80, 0x7a, 0x80, 0x85, 0x87, 0x87, 0x8e, 0x8c, 0x81, -0x86, 0x8a, 0x8a, 0x89, 0x87, 0x8b, 0x8f, 0x8f, 0x8b, 0x8b, 0x88, 0x86, 0x87, 0x85, 0x81, 0x7e, -0x7c, 0x86, 0x88, 0x85, 0x7c, 0x7e, 0x81, 0x7b, 0x7b, 0x7b, 0x7b, 0x84, 0x86, 0x85, 0x85, 0x85, -0x81, 0x80, 0x80, 0x81, 0x80, 0x79, 0x78, 0x82, 0x86, 0x82, 0x87, 0x88, 0x7e, 0x81, 0x86, 0x87, -0x84, 0x7a, 0x7c, 0x8a, 0x88, 0x84, 0x7e, 0x79, 0x78, 0x77, 0x71, 0x72, 0x6c, 0x6f, 0x6c, 0x6c, -0x70, 0x73, 0x74, 0x73, 0x74, 0x78, 0x79, 0x75, 0x7b, 0x7d, 0x77, 0x81, 0x86, 0x81, 0x7d, 0x80, -0x7d, 0x76, 0x74, 0x79, 0x78, 0x78, 0x72, 0x6d, 0x79, 0x76, 0x73, 0x78, 0x75, 0x76, 0x78, 0x73, -0x78, 0x80, 0x83, 0x7b, 0x7b, 0x88, 0x84, 0x86, 0x82, 0x82, 0x7c, 0x82, 0x88, 0x84, 0x8e, 0x8b, -0x8c, 0x8f, 0x8c, 0x89, 0x8f, 0x8d, 0x8c, 0x95, 0x95, 0x98, 0x93, 0x8e, 0x8f, 0x93, 0x93, 0x94, -0x8f, 0x8b, 0x92, 0x8d, 0x83, 0x8a, 0x92, 0x8b, 0x84, 0x81, 0x7a, 0x85, 0x83, 0x7e, 0x85, 0x88, -0x85, 0x82, 0x7e, 0x83, 0x7d, 0x7e, 0x81, 0x7b, 0x81, 0x7b, 0x7e, 0x88, 0x86, 0x80, 0x7e, 0x89, -0x79, 0x70, 0x77, 0x78, 0x79, 0x78, 0x73, 0x7a, 0x79, 0x74, 0x7a, 0x76, 0x78, 0x7c, 0x77, 0x6f, -0x70, 0x72, 0x6a, 0x66, 0x66, 0x68, 0x67, 0x64, 0x68, 0x69, 0x6b, 0x6e, 0x69, 0x74, 0x7b, 0x78, -0x77, 0x79, 0x77, 0x7b, 0x7e, 0x78, 0x7b, 0x80, 0x7b, 0x7e, 0x80, 0x76, 0x79, 0x7d, 0x6b, 0x71, -0x78, 0x77, 0x79, 0x7a, 0x7d, 0x89, 0x88, 0x82, 0x85, 0x8e, 0x8b, 0x80, 0x84, 0x8a, 0x88, 0x8b, -0x88, 0x83, 0x8f, 0x8f, 0x81, 0x82, 0x87, 0x83, 0x89, 0x8e, 0x8e, 0x95, 0x8e, 0x8c, 0x8b, 0x82, -0x85, 0x83, 0x81, 0x89, 0x86, 0x81, 0x86, 0x90, 0x8c, 0x87, 0x8b, 0x8c, 0x82, 0x7e, 0x7d, 0x7d, -0x7e, 0x86, 0x83, 0x89, 0x84, 0x7c, 0x7e, 0x7d, 0x7d, 0x7c, 0x7e, 0x7c, 0x7c, 0x78, 0x78, 0x7e, -0x82, 0x76, 0x73, 0x82, 0x83, 0x76, 0x6d, 0x79, 0x7a, 0x7c, 0x7b, 0x7d, 0x85, 0x87, 0x7b, 0x7b, -0x85, 0x85, 0x84, 0x7c, 0x80, 0x88, 0x85, 0x81, 0x82, 0x7b, 0x7b, 0x7c, 0x7a, 0x82, 0x7d, 0x82, -0x80, 0x80, 0x7e, 0x83, 0x89, 0x84, 0x7e, 0x83, 0x85, 0x7e, 0x81, 0x7d, 0x81, 0x82, 0x82, 0x81, -0x7a, 0x7c, 0x7d, 0x74, 0x74, 0x80, 0x79, 0x7d, 0x79, 0x77, 0x7c, 0x76, 0x75, 0x77, 0x7c, 0x78, -0x7d, 0x75, 0x72, 0x7a, 0x82, 0x82, 0x80, 0x77, 0x72, 0x7b, 0x7b, 0x7b, 0x76, 0x79, 0x7c, 0x77, -0x79, 0x84, 0x79, 0x76, 0x7b, 0x77, 0x85, 0x83, 0x79, 0x7c, 0x78, 0x7b, 0x80, 0x7e, 0x81, 0x83, -0x82, 0x7d, 0x7e, 0x86, 0x83, 0x89, 0x87, 0x84, 0x8b, 0x83, 0x87, 0x8f, 0x8b, 0x85, 0x86, 0x8c, -0x88, 0x8a, 0x82, 0x79, 0x84, 0x88, 0x80, 0x84, 0x84, 0x84, 0x81, 0x80, 0x89, 0x81, 0x86, 0x81, -0x77, 0x88, 0x89, 0x8a, 0x87, 0x7a, 0x88, 0x8e, 0x88, 0x84, 0x7d, 0x80, 0x81, 0x80, 0x81, 0x84, -0x85, 0x7a, 0x79, 0x7e, 0x7d, 0x77, 0x75, 0x72, 0x73, 0x79, 0x76, 0x75, 0x6d, 0x76, 0x7a, 0x7a, -0x77, 0x75, 0x7a, 0x7c, 0x71, 0x71, 0x74, 0x76, 0x7c, 0x73, 0x73, 0x79, 0x79, 0x74, 0x6e, 0x77, -0x75, 0x6f, 0x75, 0x75, 0x82, 0x85, 0x7c, 0x78, 0x75, 0x7b, 0x83, 0x79, 0x7a, 0x7c, 0x7c, 0x7d, -0x79, 0x7e, 0x86, 0x79, 0x79, 0x7d, 0x7b, 0x7b, 0x78, 0x7c, 0x7b, 0x85, 0x93, 0x8b, 0x8b, 0x90, -0x8b, 0x90, 0x90, 0x8a, 0x8d, 0x91, 0x96, 0x95, 0x8f, 0x9a, 0x95, 0x90, 0x95, 0x95, 0x90, 0x8a, -0x8d, 0x93, 0x90, 0x8e, 0x94, 0x92, 0x8d, 0x91, 0x90, 0x87, 0x80, 0x7d, 0x82, 0x82, 0x84, 0x7e, -0x7d, 0x7d, 0x7d, 0x7e, 0x77, 0x75, 0x7d, 0x78, 0x74, 0x80, 0x7d, 0x82, 0x81, 0x7b, 0x7d, 0x78, -0x79, 0x72, 0x6d, 0x74, 0x71, 0x6e, 0x6e, 0x75, 0x74, 0x70, 0x72, 0x77, 0x73, 0x70, 0x74, 0x74, -0x72, 0x69, 0x72, 0x72, 0x6e, 0x75, 0x72, 0x74, 0x77, 0x71, 0x77, 0x72, 0x72, 0x79, 0x72, 0x7b, -0x83, 0x7a, 0x77, 0x75, 0x77, 0x7c, 0x7d, 0x80, 0x77, 0x77, 0x78, 0x79, 0x7c, 0x77, 0x7c, 0x7e, -0x79, 0x7a, 0x80, 0x80, 0x7b, 0x7b, 0x7e, 0x79, 0x80, 0x83, 0x7d, 0x7d, 0x80, 0x82, 0x83, 0x80, -0x83, 0x81, 0x83, 0x82, 0x82, 0x8d, 0x91, 0x8e, 0x8b, 0x83, 0x88, 0x8a, 0x83, 0x89, 0x84, 0x80, -0x84, 0x82, 0x82, 0x87, 0x8e, 0x89, 0x87, 0x92, 0x92, 0x8d, 0x8b, 0x83, 0x87, 0x8d, 0x8e, 0x8b, -0x86, 0x88, 0x87, 0x82, 0x88, 0x83, 0x80, 0x80, 0x83, 0x83, 0x82, 0x8a, 0x8d, 0x83, 0x81, 0x87, -0x89, 0x85, 0x78, 0x79, 0x84, 0x80, 0x7e, 0x84, 0x84, 0x7a, 0x78, 0x7a, 0x77, 0x76, 0x7b, 0x74, -0x71, 0x77, 0x7c, 0x7d, 0x77, 0x79, 0x75, 0x73, 0x74, 0x74, 0x71, 0x72, 0x76, 0x7c, 0x7d, 0x7d, -0x7e, 0x7c, 0x78, 0x7c, 0x75, 0x71, 0x7c, 0x7c, 0x79, 0x7b, 0x7c, 0x88, 0x87, 0x83, 0x83, 0x89, -0x85, 0x81, 0x80, 0x81, 0x85, 0x84, 0x7d, 0x79, 0x80, 0x80, 0x7a, 0x74, 0x6e, 0x7b, 0x78, 0x78, -0x7d, 0x80, 0x7e, 0x7e, 0x84, 0x84, 0x7d, 0x88, 0x8b, 0x7c, 0x84, 0x86, 0x86, 0x8a, 0x88, 0x84, -0x89, 0x85, 0x7e, 0x81, 0x7e, 0x81, 0x80, 0x7c, 0x7e, 0x83, 0x85, 0x80, 0x7d, 0x7b, 0x7b, 0x7d, -0x79, 0x79, 0x80, 0x77, 0x7d, 0x83, 0x81, 0x86, 0x82, 0x7e, 0x7a, 0x7d, 0x82, 0x7d, 0x78, 0x78, -0x7b, 0x82, 0x85, 0x7c, 0x75, 0x7b, 0x7c, 0x76, 0x7c, 0x86, 0x88, 0x84, 0x80, 0x88, 0x87, 0x81, -0x7d, 0x7a, 0x7d, 0x81, 0x76, 0x72, 0x7c, 0x7e, 0x7b, 0x81, 0x82, 0x84, 0x8e, 0x85, 0x81, 0x81, -0x7d, 0x7b, 0x7d, 0x80, 0x7c, 0x7b, 0x79, 0x7b, 0x7d, 0x7a, 0x76, 0x78, 0x77, 0x75, 0x77, 0x7d, -0x7d, 0x73, 0x75, 0x83, 0x82, 0x7c, 0x7c, 0x81, 0x84, 0x7a, 0x7c, 0x7d, 0x77, 0x78, 0x7a, 0x80, -0x7c, 0x7b, 0x7a, 0x74, 0x73, 0x7b, 0x73, 0x71, 0x7d, 0x7d, 0x7e, 0x7a, 0x81, 0x85, 0x82, 0x82, -0x7e, 0x81, 0x7d, 0x7d, 0x83, 0x7c, 0x81, 0x81, 0x81, 0x86, 0x87, 0x83, 0x7b, 0x7b, 0x82, 0x85, -0x8a, 0x8e, 0x88, 0x86, 0x8c, 0x95, 0x95, 0x92, 0x8e, 0x8a, 0x84, 0x85, 0x8c, 0x8a, 0x87, 0x86, -0x8a, 0x8f, 0x8c, 0x88, 0x83, 0x86, 0x8e, 0x8d, 0x8a, 0x89, 0x8c, 0x87, 0x85, 0x88, 0x83, 0x8a, -0x84, 0x79, 0x7d, 0x81, 0x81, 0x83, 0x87, 0x89, 0x88, 0x89, 0x83, 0x80, 0x7e, 0x82, 0x7c, 0x78, -0x7c, 0x83, 0x80, 0x7c, 0x79, 0x79, 0x78, 0x79, 0x76, 0x6a, 0x66, 0x6c, 0x6b, 0x6e, 0x6a, 0x6a, -0x70, 0x6a, 0x65, 0x69, 0x70, 0x69, 0x60, 0x66, 0x6a, 0x77, 0x78, 0x6c, 0x6f, 0x73, 0x75, 0x72, -0x6f, 0x72, 0x74, 0x76, 0x79, 0x79, 0x78, 0x76, 0x7b, 0x7e, 0x7c, 0x80, 0x81, 0x7b, 0x77, 0x7d, -0x7b, 0x7d, 0x80, 0x88, 0x8a, 0x85, 0x82, 0x7e, 0x82, 0x81, 0x85, 0x87, 0x86, 0x8b, 0x92, 0x8d, -0x90, 0x94, 0x91, 0x94, 0x91, 0x8b, 0x8b, 0x90, 0x8c, 0x85, 0x8c, 0x91, 0x8e, 0x87, 0x8b, 0x91, -0x88, 0x85, 0x88, 0x85, 0x89, 0x8b, 0x84, 0x88, 0x83, 0x82, 0x87, 0x86, 0x7e, 0x83, 0x80, 0x7d, -0x83, 0x89, 0x8a, 0x88, 0x7e, 0x7b, 0x7d, 0x7e, 0x7e, 0x7d, 0x7a, 0x7a, 0x7a, 0x74, 0x78, 0x7c, -0x7b, 0x80, 0x7d, 0x80, 0x7e, 0x7b, 0x7c, 0x7a, 0x75, 0x78, 0x6c, 0x70, 0x78, 0x71, 0x6d, 0x78, -0x7a, 0x79, 0x78, 0x74, 0x79, 0x82, 0x7c, 0x81, 0x81, 0x85, 0x83, 0x85, 0x84, 0x80, 0x85, 0x85, -0x80, 0x86, 0x80, 0x7c, 0x83, 0x84, 0x81, 0x82, 0x85, 0x80, 0x7e, 0x81, 0x7d, 0x82, 0x8c, 0x86, -0x80, 0x83, 0x82, 0x7c, 0x74, 0x77, 0x70, 0x6d, 0x76, 0x75, 0x76, 0x7c, 0x83, 0x82, 0x83, 0x86, -0x81, 0x85, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x7c, 0x80, 0x82, 0x7d, -0x76, 0x75, 0x75, 0x76, 0x79, 0x73, 0x75, 0x75, 0x74, 0x79, 0x79, 0x77, 0x7c, 0x7e, 0x80, 0x82, -0x88, 0x85, 0x8a, 0x88, 0x82, 0x7e, 0x82, 0x80, 0x7b, 0x7d, 0x81, 0x80, 0x83, 0x85, 0x83, 0x84, -0x80, 0x7b, 0x82, 0x88, 0x85, 0x83, 0x82, 0x82, 0x82, 0x89, 0x8a, 0x8c, 0x89, 0x81, 0x7c, 0x84, -0x83, 0x82, 0x82, 0x7d, 0x7e, 0x84, 0x85, 0x87, 0x81, 0x7c, 0x86, 0x85, 0x85, 0x81, 0x7a, 0x78, -0x7e, 0x7c, 0x75, 0x77, 0x78, 0x74, 0x77, 0x77, 0x7b, 0x7c, 0x75, 0x76, 0x75, 0x7a, 0x7e, 0x72, -0x77, 0x76, 0x75, 0x79, 0x79, 0x77, 0x79, 0x81, 0x84, 0x81, 0x7d, 0x84, 0x82, 0x78, 0x74, 0x79, -0x7c, 0x79, 0x70, 0x78, 0x82, 0x7a, 0x79, 0x7d, 0x86, 0x85, 0x82, 0x85, 0x88, 0x8b, 0x86, 0x82, -0x84, 0x7e, 0x7c, 0x86, 0x81, 0x82, 0x87, 0x81, 0x83, 0x8c, 0x87, 0x87, 0x8b, 0x88, 0x8a, 0x91, -0x93, 0x92, 0x8f, 0x90, 0x92, 0x90, 0x92, 0x8d, 0x8c, 0x8c, 0x87, 0x87, 0x84, 0x88, 0x85, 0x7d, -0x82, 0x86, 0x85, 0x7a, 0x77, 0x81, 0x84, 0x84, 0x7c, 0x7e, 0x85, 0x7c, 0x76, 0x80, 0x86, 0x80, -0x80, 0x81, 0x84, 0x85, 0x7e, 0x7d, 0x80, 0x7c, 0x78, 0x77, 0x7c, 0x78, 0x78, 0x78, 0x79, 0x76, -0x6e, 0x73, 0x76, 0x72, 0x74, 0x7a, 0x79, 0x73, 0x74, 0x76, 0x75, 0x76, 0x75, 0x72, 0x72, 0x74, -0x73, 0x74, 0x77, 0x79, 0x76, 0x75, 0x75, 0x77, 0x7b, 0x71, 0x71, 0x76, 0x77, 0x79, 0x7a, 0x76, -0x77, 0x77, 0x75, 0x76, 0x7a, 0x74, 0x6f, 0x79, 0x7e, 0x79, 0x79, 0x7a, 0x76, 0x76, 0x77, 0x78, -0x7d, 0x78, 0x7a, 0x81, 0x82, 0x84, 0x86, 0x85, 0x88, 0x8e, 0x8c, 0x82, 0x85, 0x8a, 0x87, 0x82, -0x7d, 0x84, 0x88, 0x89, 0x86, 0x88, 0x90, 0x89, 0x86, 0x87, 0x84, 0x88, 0x8b, 0x87, 0x86, 0x8e, -0x8f, 0x85, 0x87, 0x88, 0x8a, 0x8b, 0x8b, 0x87, 0x88, 0x8c, 0x8d, 0x89, 0x8a, 0x8d, 0x8a, 0x84, -0x87, 0x8e, 0x8c, 0x89, 0x87, 0x84, 0x86, 0x89, 0x83, 0x7c, 0x7b, 0x80, 0x7d, 0x79, 0x7b, 0x7c, -0x7d, 0x81, 0x7b, 0x7d, 0x84, 0x81, 0x79, 0x7b, 0x7b, 0x7b, 0x7a, 0x76, 0x7a, 0x77, 0x70, 0x75, -0x76, 0x79, 0x7b, 0x7c, 0x78, 0x7b, 0x82, 0x7a, 0x7a, 0x77, 0x75, 0x75, 0x77, 0x78, 0x77, 0x7c, -0x7c, 0x73, 0x78, 0x7c, 0x7a, 0x7d, 0x79, 0x75, 0x7d, 0x83, 0x80, 0x7c, 0x7a, 0x79, 0x77, 0x7a, -0x7c, 0x7e, 0x7d, 0x7e, 0x80, 0x7a, 0x81, 0x84, 0x7c, 0x7b, 0x85, 0x86, 0x85, 0x80, 0x82, 0x86, -0x84, 0x83, 0x85, 0x8e, 0x87, 0x81, 0x83, 0x87, 0x8d, 0x85, 0x81, 0x84, 0x86, 0x86, 0x86, 0x84, -0x84, 0x80, 0x82, 0x87, 0x83, 0x83, 0x7e, 0x7a, 0x79, 0x7e, 0x86, 0x80, 0x7a, 0x80, 0x82, 0x81, -0x81, 0x79, 0x7c, 0x78, 0x78, 0x80, 0x80, 0x80, 0x82, 0x7c, 0x7c, 0x77, 0x7c, 0x80, 0x77, 0x76, -0x7d, 0x83, 0x81, 0x7c, 0x7d, 0x82, 0x7d, 0x79, 0x7c, 0x80, 0x82, 0x7b, 0x80, 0x7e, 0x7a, 0x79, -0x77, 0x7c, 0x78, 0x77, 0x7d, 0x7d, 0x7d, 0x7c, 0x80, 0x7e, 0x7a, 0x83, 0x80, 0x74, 0x77, 0x7d, -0x81, 0x7e, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7b, 0x79, 0x7b, 0x7c, 0x84, 0x87, 0x89, 0x83, -0x83, 0x8e, 0x8b, 0x87, 0x8a, 0x81, 0x85, 0x8a, 0x7e, 0x7c, 0x7b, 0x7a, 0x75, 0x74, 0x7c, 0x7d, -0x7b, 0x76, 0x77, 0x7b, 0x7c, 0x7d, 0x79, 0x7b, 0x7a, 0x80, 0x85, 0x81, 0x83, 0x88, 0x7e, 0x79, -0x82, 0x83, 0x83, 0x82, 0x80, 0x80, 0x82, 0x80, 0x84, 0x80, 0x84, 0x86, 0x80, 0x81, 0x85, 0x84, -0x83, 0x83, 0x87, 0x89, 0x87, 0x87, 0x82, 0x80, 0x84, 0x89, 0x87, 0x85, 0x86, 0x81, 0x81, 0x85, -0x83, 0x87, 0x86, 0x85, 0x86, 0x8a, 0x88, 0x84, 0x87, 0x84, 0x82, 0x87, 0x84, 0x85, 0x84, 0x81, -0x88, 0x8b, 0x86, 0x81, 0x83, 0x81, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x83, 0x80, 0x7b, 0x82, 0x7c, -0x73, 0x75, 0x78, 0x74, 0x74, 0x76, 0x74, 0x71, 0x6f, 0x70, 0x6f, 0x68, 0x6d, 0x71, 0x69, 0x67, -0x69, 0x6c, 0x6c, 0x69, 0x6d, 0x70, 0x73, 0x74, 0x73, 0x79, 0x78, 0x7a, 0x79, 0x78, 0x77, 0x76, -0x7a, 0x73, 0x79, 0x7d, 0x76, 0x7c, 0x7c, 0x7a, 0x7e, 0x7b, 0x74, 0x7d, 0x83, 0x82, 0x85, 0x86, -0x84, 0x85, 0x84, 0x89, 0x8b, 0x88, 0x8a, 0x8b, 0x8a, 0x89, 0x8c, 0x8f, 0x85, 0x88, 0x94, 0x91, -0x8e, 0x8d, 0x8a, 0x8f, 0x90, 0x8c, 0x90, 0x93, 0x8a, 0x87, 0x86, 0x88, 0x8a, 0x87, 0x87, 0x86, -0x81, 0x82, 0x82, 0x82, 0x81, 0x85, 0x86, 0x81, 0x82, 0x83, 0x7d, 0x80, 0x85, 0x85, 0x81, 0x80, -0x86, 0x85, 0x88, 0x81, 0x7d, 0x87, 0x83, 0x7c, 0x7e, 0x7d, 0x7d, 0x7c, 0x77, 0x7a, 0x7c, 0x79, -0x76, 0x73, 0x77, 0x7c, 0x80, 0x7a, 0x73, 0x78, 0x7c, 0x79, 0x73, 0x73, 0x76, 0x76, 0x72, 0x72, -0x7b, 0x7e, 0x7b, 0x75, 0x7a, 0x80, 0x7c, 0x7c, 0x78, 0x7c, 0x82, 0x80, 0x80, 0x81, 0x80, 0x85, -0x8b, 0x7c, 0x7d, 0x86, 0x7e, 0x79, 0x7d, 0x7d, 0x7b, 0x79, 0x79, 0x7b, 0x81, 0x81, 0x7c, 0x7b, -0x7b, 0x81, 0x83, 0x7c, 0x79, 0x7e, 0x85, 0x7b, 0x79, 0x86, 0x81, 0x7c, 0x7d, 0x7b, 0x84, 0x87, -0x85, 0x88, 0x87, 0x89, 0x86, 0x7e, 0x7c, 0x81, 0x83, 0x7d, 0x7d, 0x84, 0x83, 0x85, 0x88, 0x7e, -0x7b, 0x81, 0x7d, 0x76, 0x75, 0x78, 0x74, 0x71, 0x7c, 0x79, 0x75, 0x78, 0x75, 0x76, 0x76, 0x7a, -0x80, 0x74, 0x78, 0x84, 0x80, 0x7d, 0x80, 0x83, 0x83, 0x80, 0x81, 0x86, 0x7a, 0x83, 0x88, 0x87, -0x86, 0x81, 0x83, 0x83, 0x82, 0x84, 0x88, 0x87, 0x83, 0x81, 0x80, 0x84, 0x87, 0x82, 0x7c, 0x81, -0x81, 0x81, 0x7a, 0x7c, 0x7e, 0x80, 0x81, 0x7e, 0x84, 0x85, 0x80, 0x7a, 0x7a, 0x84, 0x81, 0x78, -0x7a, 0x7c, 0x7a, 0x78, 0x7b, 0x7d, 0x7b, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x82, 0x7c, 0x7d, 0x7d, -0x7e, 0x83, 0x79, 0x76, 0x81, 0x86, 0x81, 0x80, 0x83, 0x84, 0x84, 0x7e, 0x80, 0x82, 0x7b, 0x7b, -0x7b, 0x7b, 0x7d, 0x7d, 0x7a, 0x7a, 0x7b, 0x85, 0x85, 0x7d, 0x82, 0x83, 0x83, 0x88, 0x7e, 0x81, -0x82, 0x80, 0x7b, 0x7d, 0x83, 0x82, 0x82, 0x82, 0x83, 0x85, 0x89, 0x88, 0x85, 0x85, 0x8a, 0x8b, -0x86, 0x84, 0x81, 0x86, 0x83, 0x7d, 0x86, 0x86, 0x81, 0x81, 0x7c, 0x80, 0x7c, 0x7b, 0x83, 0x82, -0x81, 0x83, 0x8a, 0x88, 0x82, 0x83, 0x86, 0x83, 0x82, 0x86, 0x84, 0x80, 0x7d, 0x80, 0x7c, 0x7d, -0x81, 0x7a, 0x78, 0x7a, 0x79, 0x7e, 0x81, 0x7d, 0x85, 0x84, 0x7d, 0x7b, 0x78, 0x78, 0x70, 0x76, -0x79, 0x77, 0x7a, 0x7c, 0x7d, 0x7a, 0x7b, 0x7d, 0x78, 0x74, 0x75, 0x74, 0x74, 0x71, 0x77, 0x75, -0x71, 0x73, 0x76, 0x79, 0x76, 0x72, 0x77, 0x78, 0x7a, 0x79, 0x75, 0x73, 0x73, 0x72, 0x72, 0x75, -0x71, 0x72, 0x75, 0x76, 0x77, 0x7d, 0x7c, 0x7c, 0x7b, 0x80, 0x80, 0x82, 0x7e, 0x7c, 0x7e, 0x83, -0x88, 0x86, 0x85, 0x87, 0x8a, 0x89, 0x87, 0x84, 0x84, 0x84, 0x82, 0x7d, 0x86, 0x89, 0x87, 0x85, -0x89, 0x8d, 0x8c, 0x88, 0x8a, 0x85, 0x85, 0x85, 0x88, 0x87, 0x83, 0x89, 0x8a, 0x86, 0x87, 0x90, -0x8c, 0x88, 0x8c, 0x8b, 0x8d, 0x8e, 0x8c, 0x8b, 0x8d, 0x8b, 0x87, 0x84, 0x82, 0x84, 0x81, 0x7e, -0x83, 0x84, 0x83, 0x7d, 0x7d, 0x83, 0x7b, 0x7a, 0x7e, 0x7a, 0x7c, 0x80, 0x80, 0x7d, 0x80, 0x80, -0x7c, 0x7d, 0x85, 0x84, 0x7a, 0x76, 0x7a, 0x73, 0x6e, 0x73, 0x72, 0x6f, 0x6b, 0x71, 0x77, 0x72, -0x6f, 0x76, 0x74, 0x75, 0x77, 0x72, 0x76, 0x77, 0x76, 0x7a, 0x7c, 0x7a, 0x78, 0x78, 0x7c, 0x7c, -0x77, 0x7a, 0x7b, 0x76, 0x77, 0x7d, 0x7d, 0x7b, 0x7a, 0x7d, 0x80, 0x7d, 0x84, 0x82, 0x81, 0x83, -0x87, 0x87, 0x82, 0x85, 0x88, 0x84, 0x83, 0x88, 0x83, 0x86, 0x89, 0x8a, 0x8c, 0x8a, 0x91, 0x91, -0x8a, 0x8e, 0x8e, 0x8c, 0x88, 0x8a, 0x89, 0x82, 0x84, 0x86, 0x82, 0x85, 0x86, 0x87, 0x81, 0x80, -0x81, 0x80, 0x7a, 0x7a, 0x7b, 0x74, 0x77, 0x7b, 0x7b, 0x76, 0x78, 0x7b, 0x7b, 0x7b, 0x7e, 0x7d, -0x7d, 0x7e, 0x7c, 0x7a, 0x77, 0x79, 0x74, 0x74, 0x79, 0x79, 0x78, 0x79, 0x7c, 0x7e, 0x78, 0x7d, -0x80, 0x75, 0x72, 0x79, 0x78, 0x78, 0x79, 0x7b, 0x83, 0x80, 0x7e, 0x83, 0x7c, 0x7b, 0x7a, 0x7c, -0x7d, 0x79, 0x7a, 0x82, 0x84, 0x7e, 0x7e, 0x86, 0x83, 0x80, 0x82, 0x81, 0x85, 0x83, 0x80, 0x82, -0x84, 0x87, 0x85, 0x7b, 0x81, 0x83, 0x84, 0x83, 0x7e, 0x81, 0x86, 0x86, 0x7c, 0x7c, 0x81, 0x85, -0x80, 0x7b, 0x80, 0x7e, 0x80, 0x7c, 0x7e, 0x85, 0x82, 0x85, 0x84, 0x81, 0x7e, 0x7d, 0x82, 0x7b, -0x79, 0x84, 0x82, 0x7b, 0x7a, 0x83, 0x87, 0x80, 0x7c, 0x82, 0x81, 0x7b, 0x7e, 0x7b, 0x75, 0x77, -0x76, 0x7a, 0x7d, 0x78, 0x80, 0x7b, 0x77, 0x7b, 0x80, 0x80, 0x7c, 0x7e, 0x82, 0x7e, 0x7d, 0x7a, -0x7b, 0x80, 0x81, 0x86, 0x87, 0x83, 0x84, 0x87, 0x8b, 0x89, 0x81, 0x82, 0x83, 0x81, 0x7d, 0x82, -0x85, 0x80, 0x80, 0x85, 0x87, 0x85, 0x82, 0x82, 0x86, 0x82, 0x84, 0x86, 0x81, 0x81, 0x84, 0x88, -0x89, 0x84, 0x87, 0x8a, 0x83, 0x8a, 0x8a, 0x84, 0x85, 0x7c, 0x80, 0x83, 0x7d, 0x7e, 0x82, 0x7d, -0x7c, 0x80, 0x80, 0x7a, 0x74, 0x78, 0x7a, 0x73, 0x71, 0x70, 0x70, 0x73, 0x6c, 0x6f, 0x71, 0x6f, -0x6c, 0x6c, 0x72, 0x70, 0x72, 0x77, 0x75, 0x73, 0x77, 0x74, 0x74, 0x74, 0x73, 0x72, 0x74, 0x78, -0x82, 0x83, 0x7b, 0x7d, 0x7d, 0x7c, 0x7d, 0x80, 0x7e, 0x7c, 0x7b, 0x7c, 0x7e, 0x83, 0x83, 0x83, -0x87, 0x87, 0x86, 0x84, 0x89, 0x88, 0x80, 0x85, 0x89, 0x8f, 0x8d, 0x8b, 0x92, 0x92, 0x8e, 0x8e, -0x90, 0x8e, 0x8a, 0x8c, 0x88, 0x87, 0x8f, 0x8b, 0x82, 0x82, 0x85, 0x83, 0x81, 0x81, 0x84, 0x82, -0x83, 0x87, 0x86, 0x83, 0x85, 0x81, 0x80, 0x7d, 0x82, 0x86, 0x7e, 0x7e, 0x89, 0x88, 0x87, 0x85, -0x82, 0x81, 0x7e, 0x7e, 0x78, 0x75, 0x77, 0x7a, 0x79, 0x7b, 0x7b, 0x7a, 0x78, 0x75, 0x79, 0x78, -0x79, 0x78, 0x73, 0x74, 0x77, 0x75, 0x77, 0x79, 0x77, 0x73, 0x72, 0x79, 0x7c, 0x79, 0x79, 0x7a, -0x7e, 0x7b, 0x7c, 0x83, 0x80, 0x7d, 0x79, 0x7c, 0x82, 0x78, 0x7b, 0x78, 0x7a, 0x85, 0x7e, 0x7c, -0x7e, 0x7a, 0x7a, 0x7b, 0x79, 0x79, 0x7a, 0x78, 0x78, 0x80, 0x84, 0x82, 0x7d, 0x7d, 0x7d, 0x7b, -0x82, 0x7e, 0x7c, 0x81, 0x81, 0x85, 0x8b, 0x85, 0x83, 0x86, 0x87, 0x83, 0x83, 0x86, 0x86, 0x83, -0x7e, 0x87, 0x8b, 0x89, 0x88, 0x8a, 0x8b, 0x84, 0x85, 0x85, 0x86, 0x84, 0x82, 0x81, 0x82, 0x83, -0x7d, 0x7b, 0x7d, 0x7b, 0x7c, 0x7a, 0x7e, 0x81, 0x7c, 0x7b, 0x7b, 0x81, 0x86, 0x81, 0x7e, 0x7c, -0x7c, 0x7c, 0x75, 0x73, 0x76, 0x75, 0x79, 0x7c, 0x83, 0x81, 0x7b, 0x7e, 0x81, 0x7e, 0x7a, 0x7c, -0x7c, 0x7a, 0x80, 0x85, 0x84, 0x7c, 0x7b, 0x81, 0x82, 0x7e, 0x81, 0x7e, 0x7a, 0x7c, 0x82, 0x7e, -0x7e, 0x82, 0x80, 0x7b, 0x81, 0x7e, 0x7a, 0x7b, 0x79, 0x79, 0x7b, 0x7b, 0x7d, 0x7d, 0x79, 0x79, -0x7a, 0x7a, 0x7c, 0x7a, 0x7d, 0x80, 0x81, 0x81, 0x85, 0x84, 0x80, 0x84, 0x81, 0x7e, 0x82, 0x80, -0x82, 0x80, 0x83, 0x84, 0x81, 0x86, 0x88, 0x84, 0x80, 0x81, 0x80, 0x7a, 0x79, 0x7c, 0x7e, 0x7a, -0x7c, 0x7d, 0x7d, 0x80, 0x85, 0x84, 0x7e, 0x81, 0x83, 0x82, 0x81, 0x85, 0x86, 0x85, 0x84, 0x86, -0x88, 0x7e, 0x85, 0x87, 0x81, 0x86, 0x86, 0x84, 0x84, 0x81, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7b, -0x7b, 0x82, 0x7d, 0x7c, 0x82, 0x81, 0x82, 0x7c, 0x80, 0x7e, 0x78, 0x7c, 0x80, 0x78, 0x7d, 0x82, -0x7e, 0x82, 0x86, 0x7e, 0x7d, 0x80, 0x7b, 0x7d, 0x7b, 0x81, 0x7e, 0x7b, 0x7e, 0x85, 0x8a, 0x85, -0x84, 0x85, 0x81, 0x83, 0x83, 0x7d, 0x7b, 0x7c, 0x7b, 0x7a, 0x7a, 0x80, 0x7d, 0x78, 0x7a, 0x7b, -0x7c, 0x7c, 0x7a, 0x7b, 0x7b, 0x76, 0x7b, 0x7b, 0x78, 0x77, 0x78, 0x79, 0x82, 0x80, 0x7b, 0x83, -0x86, 0x82, 0x82, 0x84, 0x81, 0x7d, 0x7c, 0x75, 0x74, 0x78, 0x79, 0x76, 0x75, 0x7a, 0x7b, 0x7a, -0x7a, 0x7b, 0x7d, 0x7a, 0x76, 0x78, 0x79, 0x77, 0x79, 0x82, 0x81, 0x7c, 0x80, 0x83, 0x82, 0x83, -0x82, 0x85, 0x83, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x81, 0x80, 0x7e, 0x7d, 0x7e, 0x83, 0x84, 0x82, -0x83, 0x82, 0x83, 0x84, 0x85, 0x82, 0x80, 0x84, 0x86, 0x85, 0x89, 0x85, 0x84, 0x86, 0x87, 0x8b, -0x8c, 0x88, 0x84, 0x87, 0x8b, 0x86, 0x84, 0x87, 0x87, 0x86, 0x84, 0x86, 0x87, 0x81, 0x81, 0x88, -0x83, 0x82, 0x80, 0x82, 0x7e, 0x7b, 0x81, 0x7e, 0x7e, 0x82, 0x82, 0x81, 0x81, 0x82, 0x81, 0x79, -0x7d, 0x7c, 0x74, 0x77, 0x77, 0x76, 0x77, 0x76, 0x78, 0x76, 0x73, 0x75, 0x75, 0x76, 0x77, 0x74, -0x70, 0x73, 0x75, 0x70, 0x72, 0x75, 0x76, 0x75, 0x75, 0x79, 0x7b, 0x7a, 0x79, 0x81, 0x82, 0x7d, -0x80, 0x80, 0x79, 0x79, 0x7b, 0x7a, 0x7d, 0x7b, 0x7e, 0x7c, 0x7d, 0x81, 0x7e, 0x80, 0x80, 0x82, -0x85, 0x85, 0x86, 0x88, 0x87, 0x88, 0x89, 0x87, 0x88, 0x86, 0x87, 0x8b, 0x8e, 0x8c, 0x89, 0x8e, -0x8d, 0x89, 0x8b, 0x8b, 0x8d, 0x8a, 0x84, 0x8d, 0x8b, 0x83, 0x86, 0x85, 0x86, 0x84, 0x82, 0x84, -0x81, 0x7d, 0x7b, 0x7b, 0x81, 0x82, 0x7b, 0x79, 0x7a, 0x7d, 0x7b, 0x7d, 0x7a, 0x76, 0x78, 0x76, -0x79, 0x78, 0x7c, 0x79, 0x76, 0x7c, 0x7a, 0x78, 0x7a, 0x7b, 0x78, 0x78, 0x77, 0x78, 0x79, 0x78, -0x77, 0x7b, 0x7b, 0x79, 0x7b, 0x7c, 0x7b, 0x79, 0x7b, 0x7d, 0x80, 0x81, 0x7d, 0x7c, 0x7c, 0x7b, -0x78, 0x78, 0x78, 0x7a, 0x7a, 0x78, 0x7b, 0x7e, 0x7e, 0x82, 0x81, 0x7e, 0x82, 0x81, 0x83, 0x85, -0x84, 0x80, 0x81, 0x88, 0x82, 0x85, 0x85, 0x84, 0x86, 0x85, 0x85, 0x86, 0x83, 0x82, 0x82, 0x82, -0x82, 0x80, 0x81, 0x82, 0x7e, 0x83, 0x83, 0x81, 0x84, 0x85, 0x82, 0x7e, 0x7b, 0x7a, 0x79, 0x7e, -0x80, 0x7e, 0x7d, 0x7d, 0x82, 0x81, 0x81, 0x7e, 0x7e, 0x81, 0x7c, 0x7d, 0x84, 0x84, 0x7e, 0x79, -0x7e, 0x83, 0x80, 0x7c, 0x7a, 0x83, 0x82, 0x7b, 0x82, 0x81, 0x7b, 0x7c, 0x7e, 0x81, 0x81, 0x7c, -0x80, 0x81, 0x7d, 0x7d, 0x7d, 0x83, 0x81, 0x80, 0x81, 0x7e, 0x82, 0x82, 0x80, 0x83, 0x87, 0x82, -0x7e, 0x83, 0x88, 0x80, 0x7e, 0x81, 0x84, 0x84, 0x80, 0x84, 0x85, 0x81, 0x83, 0x82, 0x83, 0x88, -0x87, 0x84, 0x89, 0x8c, 0x86, 0x83, 0x88, 0x89, 0x84, 0x81, 0x80, 0x84, 0x82, 0x7e, 0x7b, 0x7b, -0x7a, 0x78, 0x76, 0x78, 0x77, 0x79, 0x77, 0x75, 0x78, 0x77, 0x76, 0x76, 0x74, 0x79, 0x77, 0x75, -0x79, 0x78, 0x75, 0x79, 0x78, 0x76, 0x75, 0x77, 0x74, 0x73, 0x76, 0x77, 0x77, 0x75, 0x76, 0x77, -0x7a, 0x7c, 0x78, 0x7c, 0x82, 0x82, 0x7c, 0x7d, 0x83, 0x85, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x83, -0x84, 0x87, 0x85, 0x84, 0x85, 0x87, 0x88, 0x89, 0x88, 0x88, 0x8c, 0x8c, 0x88, 0x89, 0x8a, 0x88, -0x8a, 0x89, 0x85, 0x84, 0x87, 0x86, 0x85, 0x88, 0x84, 0x82, 0x83, 0x82, 0x81, 0x83, 0x84, 0x86, -0x80, 0x81, 0x88, 0x84, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7a, 0x79, 0x7b, 0x7c, 0x7d, 0x7b, -0x7a, 0x7c, 0x79, 0x77, 0x77, 0x78, 0x75, 0x73, 0x78, 0x79, 0x7b, 0x7c, 0x7a, 0x7e, 0x7c, 0x7e, -0x84, 0x7d, 0x7c, 0x7d, 0x7c, 0x7d, 0x7b, 0x78, 0x7a, 0x7c, 0x77, 0x78, 0x7d, 0x80, 0x78, 0x77, -0x7c, 0x81, 0x81, 0x7e, 0x7c, 0x7a, 0x83, 0x7e, 0x7a, 0x7d, 0x7a, 0x7c, 0x7c, 0x7a, 0x82, 0x80, -0x7c, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x82, 0x83, 0x80, 0x7d, 0x82, 0x7d, 0x7e, 0x86, 0x87, -0x81, 0x81, 0x84, 0x81, 0x83, 0x86, 0x82, 0x84, 0x85, 0x7e, 0x84, 0x88, 0x86, 0x89, 0x84, 0x84, -0x89, 0x87, 0x87, 0x87, 0x85, 0x83, 0x82, 0x83, 0x85, 0x85, 0x80, 0x83, 0x83, 0x80, 0x83, 0x84, -0x7e, 0x7b, 0x7a, 0x7e, 0x7c, 0x7d, 0x7d, 0x7b, 0x7b, 0x7e, 0x82, 0x80, 0x80, 0x7e, 0x7d, 0x80, -0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7b, 0x7c, 0x7d, 0x7c, 0x7b, 0x79, 0x80, 0x80, 0x79, -0x7a, 0x7b, 0x7b, 0x79, 0x73, 0x77, 0x7d, 0x79, 0x79, 0x7e, 0x80, 0x7b, 0x7e, 0x7d, 0x7e, 0x7e, -0x7b, 0x7d, 0x77, 0x78, 0x7e, 0x78, 0x79, 0x79, 0x78, 0x7b, 0x79, 0x7c, 0x7d, 0x7a, 0x7a, 0x7a, -0x7d, 0x7e, 0x7d, 0x80, 0x80, 0x7e, 0x80, 0x85, 0x81, 0x7c, 0x7e, 0x81, 0x80, 0x80, 0x80, 0x7e, -0x81, 0x80, 0x80, 0x85, 0x86, 0x85, 0x83, 0x84, 0x8a, 0x85, 0x82, 0x83, 0x83, 0x82, 0x81, 0x80, -0x81, 0x7e, 0x81, 0x84, 0x81, 0x83, 0x86, 0x84, 0x87, 0x8a, 0x88, 0x84, 0x85, 0x83, 0x86, 0x83, -0x83, 0x84, 0x82, 0x82, 0x7d, 0x85, 0x88, 0x81, 0x82, 0x81, 0x81, 0x82, 0x7d, 0x7c, 0x7e, 0x7e, -0x78, 0x78, 0x80, 0x7d, 0x7a, 0x7b, 0x80, 0x7c, 0x79, 0x7d, 0x83, 0x7e, 0x7b, 0x7d, 0x82, 0x81, -0x7c, 0x7e, 0x7c, 0x7e, 0x80, 0x7e, 0x7e, 0x81, 0x82, 0x79, 0x7b, 0x7d, 0x7d, 0x7d, 0x7a, 0x7b, -0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x80, 0x83, 0x80, 0x7b, 0x81, 0x81, 0x7e, 0x81, 0x82, -0x83, 0x81, 0x7e, 0x81, 0x88, 0x83, 0x7d, 0x81, 0x82, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x82, -0x83, 0x81, 0x80, 0x7c, 0x7c, 0x7e, 0x7c, 0x77, 0x78, 0x7c, 0x7a, 0x79, 0x7d, 0x7c, 0x7b, 0x77, -0x75, 0x7e, 0x7c, 0x7a, 0x7c, 0x7a, 0x7b, 0x7b, 0x78, 0x77, 0x78, 0x79, 0x7a, 0x76, 0x7d, 0x7d, -0x7b, 0x7d, 0x7d, 0x81, 0x80, 0x7e, 0x82, 0x80, 0x80, 0x82, 0x85, 0x84, 0x85, 0x84, 0x81, 0x82, -0x83, 0x84, 0x86, 0x85, 0x83, 0x83, 0x85, 0x87, 0x86, 0x83, 0x87, 0x89, 0x84, 0x82, 0x86, 0x87, -0x82, 0x7c, 0x80, 0x85, 0x84, 0x80, 0x80, 0x82, 0x83, 0x84, 0x86, 0x86, 0x87, 0x8a, 0x87, 0x82, -0x85, 0x86, 0x7e, 0x7d, 0x83, 0x82, 0x7c, 0x7c, 0x80, 0x7e, 0x7d, 0x7e, 0x81, 0x81, 0x80, 0x7c, -0x7d, 0x7d, 0x79, 0x77, 0x77, 0x7a, 0x79, 0x75, 0x75, 0x77, 0x75, 0x72, 0x74, 0x77, 0x77, 0x76, -0x77, 0x79, 0x78, 0x76, 0x78, 0x79, 0x77, 0x76, 0x78, 0x7a, 0x7b, 0x7c, 0x7a, 0x78, 0x7e, 0x7d, -0x77, 0x79, 0x7c, 0x7a, 0x76, 0x7a, 0x7d, 0x82, 0x82, 0x7d, 0x81, 0x86, 0x88, 0x83, 0x82, 0x83, -0x85, 0x84, 0x84, 0x87, 0x8a, 0x87, 0x87, 0x8e, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8a, -0x8b, 0x89, 0x88, 0x8a, 0x8a, 0x8a, 0x8c, 0x8d, 0x8b, 0x85, 0x85, 0x86, 0x85, 0x82, 0x81, 0x86, -0x85, 0x7e, 0x7b, 0x81, 0x84, 0x7c, 0x7d, 0x7c, 0x7a, 0x80, 0x7a, 0x74, 0x77, 0x7b, 0x7d, 0x75, -0x75, 0x79, 0x76, 0x72, 0x73, 0x76, 0x75, 0x78, 0x76, 0x74, 0x75, 0x78, 0x75, 0x70, 0x6f, 0x71, -0x73, 0x72, 0x6f, 0x72, 0x76, 0x79, 0x7b, 0x78, 0x79, 0x7c, 0x7e, 0x7b, 0x76, 0x7a, 0x7d, 0x7a, -0x78, 0x7a, 0x7e, 0x7b, 0x7b, 0x7a, 0x7b, 0x85, 0x83, 0x7d, 0x81, 0x83, 0x85, 0x85, 0x87, 0x8b, -0x89, 0x89, 0x88, 0x88, 0x89, 0x8a, 0x8b, 0x86, 0x84, 0x86, 0x88, 0x85, 0x83, 0x86, 0x81, 0x81, -0x86, 0x83, 0x81, 0x85, 0x86, 0x85, 0x80, 0x81, 0x82, 0x7e, 0x7e, 0x7b, 0x7d, 0x7e, 0x7c, 0x7c, -0x83, 0x84, 0x81, 0x80, 0x80, 0x81, 0x81, 0x7d, 0x7e, 0x80, 0x7e, 0x7c, 0x7e, 0x81, 0x7b, 0x7d, -0x7e, 0x7c, 0x81, 0x81, 0x80, 0x7a, 0x7d, 0x80, 0x7d, 0x7c, 0x7b, 0x7c, 0x78, 0x78, 0x7a, 0x7b, -0x79, 0x7c, 0x7c, 0x7a, 0x7c, 0x7e, 0x7d, 0x7c, 0x7e, 0x7e, 0x81, 0x7e, 0x80, 0x81, 0x82, 0x84, -0x83, 0x81, 0x85, 0x88, 0x85, 0x83, 0x84, 0x82, 0x83, 0x81, 0x82, 0x86, 0x85, 0x82, 0x84, 0x82, -0x81, 0x82, 0x82, 0x80, 0x7e, 0x83, 0x80, 0x81, 0x82, 0x81, 0x7e, 0x7e, 0x80, 0x80, 0x7d, 0x7d, -0x7e, 0x7d, 0x7c, 0x7c, 0x80, 0x7e, 0x7c, 0x7c, 0x80, 0x7c, 0x7a, 0x7c, 0x80, 0x81, 0x7d, 0x7d, -0x81, 0x7c, 0x7b, 0x7c, 0x78, 0x78, 0x79, 0x75, 0x76, 0x76, 0x74, 0x75, 0x77, 0x78, 0x78, 0x7a, -0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x77, 0x76, 0x77, 0x76, 0x7a, 0x7b, 0x7e, 0x81, 0x85, 0x83, 0x86, -0x83, 0x84, 0x87, 0x85, 0x85, 0x85, 0x86, 0x84, 0x84, 0x82, 0x83, 0x85, 0x83, 0x83, 0x86, 0x86, -0x83, 0x84, 0x84, 0x84, 0x84, 0x83, 0x81, 0x82, 0x83, 0x81, 0x81, 0x81, 0x83, 0x84, 0x85, 0x85, -0x88, 0x85, 0x81, 0x82, 0x83, 0x81, 0x7d, 0x83, 0x84, 0x81, 0x80, 0x7e, 0x80, 0x7d, 0x7b, 0x7d, -0x7b, 0x79, 0x7b, 0x79, 0x7a, 0x79, 0x79, 0x78, 0x7b, 0x80, 0x7d, 0x79, 0x7c, 0x7b, 0x7a, 0x7c, -0x7b, 0x7d, 0x7b, 0x7a, 0x79, 0x7a, 0x7d, 0x7b, 0x7b, 0x7b, 0x7e, 0x81, 0x7d, 0x7e, 0x7e, 0x7d, -0x7c, 0x7b, 0x7b, 0x7d, 0x7b, 0x7e, 0x81, 0x7d, 0x7e, 0x84, 0x83, 0x80, 0x7e, 0x82, 0x81, 0x7e, -0x7d, 0x7e, 0x81, 0x82, 0x7d, 0x7a, 0x82, 0x85, 0x80, 0x7e, 0x83, 0x82, 0x82, 0x7e, 0x80, 0x80, -0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x81, 0x83, 0x83, 0x85, 0x86, 0x83, 0x83, 0x84, 0x86, -0x85, 0x83, 0x82, 0x82, 0x84, 0x82, 0x81, 0x81, 0x84, 0x83, 0x7e, 0x80, 0x80, 0x81, 0x83, 0x7c, -0x7c, 0x82, 0x80, 0x80, 0x83, 0x81, 0x7e, 0x81, 0x83, 0x81, 0x7d, 0x7d, 0x84, 0x81, 0x7d, 0x82, -0x82, 0x82, 0x81, 0x83, 0x83, 0x80, 0x80, 0x7c, 0x7a, 0x7d, 0x7b, 0x76, 0x76, 0x7b, 0x7c, 0x76, -0x77, 0x79, 0x78, 0x7a, 0x79, 0x7a, 0x7b, 0x77, 0x75, 0x75, 0x79, 0x79, 0x75, 0x76, 0x79, 0x79, -0x79, 0x77, 0x77, 0x7a, 0x7c, 0x7a, 0x7b, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7b, -0x7e, 0x81, 0x7e, 0x7b, 0x7e, 0x82, 0x83, 0x84, 0x7e, 0x7e, 0x81, 0x82, 0x83, 0x82, 0x81, 0x80, -0x81, 0x82, 0x81, 0x83, 0x83, 0x81, 0x7d, 0x81, 0x84, 0x82, 0x83, 0x86, 0x84, 0x84, 0x84, 0x83, -0x86, 0x85, 0x84, 0x82, 0x85, 0x88, 0x86, 0x84, 0x87, 0x88, 0x87, 0x87, 0x88, 0x88, 0x88, 0x84, -0x83, 0x86, 0x86, 0x80, 0x80, 0x81, 0x7e, 0x7c, 0x7b, 0x7e, 0x7a, 0x79, 0x7c, 0x79, 0x7c, 0x7d, -0x7b, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x80, 0x80, 0x7e, 0x82, 0x7d, 0x7b, 0x80, 0x7d, 0x80, 0x80, -0x7c, 0x7d, 0x81, 0x7e, 0x7a, 0x7b, 0x7d, 0x7b, 0x79, 0x7a, 0x7e, 0x7a, 0x76, 0x74, 0x79, 0x7e, -0x7b, 0x78, 0x79, 0x7e, 0x7e, 0x7a, 0x7a, 0x7c, 0x7d, 0x7c, 0x7c, 0x7e, 0x7d, 0x80, 0x83, 0x84, -0x80, 0x83, 0x84, 0x84, 0x81, 0x80, 0x82, 0x83, 0x83, 0x82, 0x81, 0x83, 0x82, 0x80, 0x80, 0x82, -0x83, 0x80, 0x7d, 0x7d, 0x84, 0x88, 0x82, 0x80, 0x82, 0x80, 0x81, 0x82, 0x7e, 0x7e, 0x80, 0x80, -0x7e, 0x7d, 0x80, 0x7e, 0x77, 0x7a, 0x7e, 0x7d, 0x79, 0x79, 0x7b, 0x7b, 0x7b, 0x81, 0x7c, 0x79, -0x7b, 0x7c, 0x7a, 0x7c, 0x80, 0x7c, 0x79, 0x79, 0x7b, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, -0x7b, 0x79, 0x7b, 0x7b, 0x7c, 0x81, 0x84, 0x85, 0x80, 0x7e, 0x84, 0x87, 0x88, 0x83, 0x82, 0x83, -0x83, 0x83, 0x84, 0x84, 0x84, 0x86, 0x83, 0x85, 0x84, 0x84, 0x84, 0x85, 0x86, 0x87, 0x86, 0x84, -0x83, 0x83, 0x83, 0x82, 0x83, 0x7e, 0x80, 0x81, 0x7c, 0x7c, 0x7c, 0x7b, 0x7d, 0x7c, 0x7b, 0x7b, -0x7a, 0x7c, 0x79, 0x7b, 0x7e, 0x79, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x79, 0x77, 0x76, 0x77, 0x78, -0x76, 0x76, 0x7a, 0x7b, 0x7b, 0x80, 0x7d, 0x7b, 0x79, 0x7a, 0x7b, 0x7c, 0x79, 0x79, 0x7c, 0x7d, -0x7d, 0x7e, 0x81, 0x80, 0x7c, 0x7e, 0x83, 0x82, 0x81, 0x81, 0x81, 0x84, 0x80, 0x81, 0x85, 0x85, -0x84, 0x83, 0x85, 0x87, 0x86, 0x87, 0x89, 0x85, 0x8b, 0x8b, 0x85, 0x85, 0x85, 0x83, 0x80, 0x83, -0x87, 0x84, 0x81, 0x84, 0x86, 0x84, 0x83, 0x85, 0x86, 0x81, 0x82, 0x86, 0x83, 0x83, 0x85, 0x86, -0x86, 0x84, 0x83, 0x81, 0x7e, 0x7e, 0x80, 0x7b, 0x79, 0x7c, 0x79, 0x79, 0x7c, 0x7b, 0x7a, 0x79, -0x7c, 0x7c, 0x7a, 0x78, 0x79, 0x78, 0x79, 0x7c, 0x7b, 0x78, 0x76, 0x77, 0x79, 0x77, 0x79, 0x78, -0x74, 0x79, 0x79, 0x77, 0x77, 0x77, 0x76, 0x74, 0x77, 0x7a, 0x79, 0x76, 0x77, 0x7a, 0x79, 0x7a, -0x7c, 0x7e, 0x7d, 0x7d, 0x80, 0x7d, 0x7c, 0x80, 0x80, 0x7c, 0x7e, 0x84, 0x86, 0x83, 0x83, 0x84, -0x83, 0x85, 0x86, 0x84, 0x84, 0x84, 0x83, 0x83, 0x81, 0x84, 0x86, 0x83, 0x81, 0x83, 0x83, 0x80, -0x7e, 0x81, 0x81, 0x81, 0x82, 0x83, 0x84, 0x82, 0x80, 0x81, 0x82, 0x83, 0x8a, 0x87, 0x80, 0x81, -0x85, 0x88, 0x82, 0x82, 0x82, 0x7e, 0x81, 0x80, 0x82, 0x83, 0x82, 0x7e, 0x7e, 0x80, 0x81, 0x7d, -0x7b, 0x7c, 0x7d, 0x7e, 0x7b, 0x78, 0x7a, 0x7d, 0x7e, 0x80, 0x7d, 0x80, 0x7d, 0x7c, 0x7d, 0x7d, -0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x82, 0x84, 0x7b, 0x79, 0x7e, 0x7d, -0x7c, 0x7c, 0x7d, 0x82, 0x81, 0x80, 0x80, 0x81, 0x82, 0x7e, 0x80, 0x80, 0x81, 0x83, 0x82, 0x82, -0x82, 0x81, 0x7d, 0x7e, 0x7c, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x7d, 0x7e, 0x7e, 0x7b, 0x7a, 0x81, -0x80, 0x7c, 0x7a, 0x7d, 0x80, 0x7e, 0x7d, 0x80, 0x82, 0x81, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, -0x7c, 0x80, 0x7d, 0x78, 0x7a, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x79, 0x78, 0x7d, 0x7c, 0x7b, 0x7c, -0x7b, 0x7c, 0x7c, 0x7c, 0x80, 0x7e, 0x7d, 0x80, 0x82, 0x81, 0x83, 0x83, 0x80, 0x82, 0x83, 0x82, -0x80, 0x83, 0x85, 0x83, 0x81, 0x86, 0x85, 0x83, 0x82, 0x7e, 0x7e, 0x80, 0x7e, 0x81, 0x7e, 0x7c, -0x80, 0x80, 0x83, 0x83, 0x82, 0x81, 0x81, 0x83, 0x84, 0x83, 0x81, 0x83, 0x83, 0x83, 0x85, 0x82, -0x7e, 0x7e, 0x80, 0x7e, 0x82, 0x81, 0x7c, 0x7e, 0x81, 0x7d, 0x80, 0x82, 0x82, 0x80, 0x81, 0x80, -0x7d, 0x7c, 0x7b, 0x7e, 0x7e, 0x7e, 0x7e, 0x7b, 0x80, 0x7e, 0x7a, 0x7b, 0x7c, 0x7d, 0x7d, 0x7b, -0x7c, 0x7c, 0x7a, 0x7e, 0x7d, 0x7c, 0x7d, 0x79, 0x7b, 0x80, 0x7e, 0x7c, 0x7d, 0x7c, 0x80, 0x7d, -0x7b, 0x7d, 0x80, 0x7c, 0x7e, 0x83, 0x80, 0x81, 0x82, 0x82, 0x84, 0x84, 0x82, 0x82, 0x82, 0x81, -0x84, 0x82, 0x7e, 0x80, 0x80, 0x82, 0x80, 0x7c, 0x7a, 0x7b, 0x7d, 0x80, 0x7d, 0x7d, 0x82, 0x82, -0x7d, 0x80, 0x81, 0x81, 0x81, 0x80, 0x84, 0x85, 0x83, 0x84, 0x84, 0x82, 0x87, 0x89, 0x83, 0x82, -0x86, 0x84, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x80, 0x80, 0x80, 0x81, 0x7e, 0x80, 0x84, -0x83, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7d, 0x81, 0x83, 0x80, 0x7d, 0x81, 0x83, 0x80, 0x80, 0x7d, -0x80, 0x81, 0x7e, 0x80, 0x81, 0x7d, 0x7b, 0x7e, 0x7d, 0x7c, 0x7a, 0x7a, 0x78, 0x7a, 0x7b, 0x78, -0x75, 0x72, 0x74, 0x75, 0x77, 0x7a, 0x7a, 0x78, 0x79, 0x7d, 0x7d, 0x7a, 0x7a, 0x7c, 0x7b, 0x7b, -0x7a, 0x7a, 0x78, 0x77, 0x79, 0x78, 0x7a, 0x7a, 0x77, 0x7b, 0x7b, 0x78, 0x7b, 0x7c, 0x7a, 0x7a, -0x7b, 0x7d, 0x7d, 0x7b, 0x7c, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x84, 0x81, 0x83, 0x85, 0x84, -0x84, 0x82, 0x83, 0x86, 0x87, 0x84, 0x83, 0x87, 0x88, 0x88, 0x89, 0x8a, 0x88, 0x88, 0x89, 0x86, -0x85, 0x88, 0x84, 0x83, 0x89, 0x89, 0x88, 0x86, 0x84, 0x86, 0x85, 0x83, 0x82, 0x83, 0x80, 0x80, -0x82, 0x82, 0x82, 0x83, 0x82, 0x7e, 0x82, 0x83, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7b, -0x7c, 0x7d, 0x7d, 0x7a, 0x7b, 0x81, 0x80, 0x7a, 0x7b, 0x7c, 0x7a, 0x7b, 0x7a, 0x78, 0x7b, 0x7b, -0x78, 0x7b, 0x7b, 0x79, 0x7d, 0x7c, 0x7b, 0x7c, 0x7d, 0x7a, 0x7b, 0x7b, 0x7a, 0x7c, 0x7c, 0x78, -0x79, 0x7b, 0x7c, 0x80, 0x80, 0x7c, 0x7e, 0x80, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, -0x80, 0x7e, 0x7e, 0x83, 0x83, 0x80, 0x82, 0x82, 0x81, 0x84, 0x85, 0x81, 0x83, 0x81, 0x81, 0x84, -0x84, 0x82, 0x84, 0x85, 0x84, 0x83, 0x83, 0x83, 0x83, 0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x7d, -0x7d, 0x7e, 0x7c, 0x7a, 0x7c, 0x81, 0x7e, 0x7b, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, -0x7e, 0x7e, 0x7e, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x78, 0x78, 0x7a, 0x7a, 0x79, 0x79, 0x7c, 0x7e, -0x7c, 0x7d, 0x7e, 0x7b, 0x7a, 0x7d, 0x82, 0x7d, 0x7e, 0x82, 0x82, 0x80, 0x7e, 0x83, 0x83, 0x84, -0x87, 0x88, 0x85, 0x82, 0x83, 0x83, 0x83, 0x81, 0x81, 0x82, 0x82, 0x81, 0x83, 0x82, 0x84, 0x84, -0x82, 0x82, 0x84, 0x83, 0x7d, 0x80, 0x82, 0x81, 0x82, 0x80, 0x7d, 0x81, 0x81, 0x82, 0x82, 0x80, -0x80, 0x80, 0x80, 0x81, 0x81, 0x7e, 0x7d, 0x7e, 0x7e, 0x7c, 0x7c, 0x7d, 0x7b, 0x7b, 0x7b, 0x79, -0x7b, 0x7b, 0x79, 0x7a, 0x79, 0x7a, 0x7e, 0x7c, 0x7b, 0x7d, 0x7d, 0x7a, 0x7b, 0x7d, 0x7b, 0x7b, -0x79, 0x7a, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x82, 0x85, 0x84, 0x83, 0x82, 0x84, 0x85, 0x85, -0x84, 0x85, 0x86, 0x85, 0x84, 0x88, 0x86, 0x86, 0x87, 0x87, 0x88, 0x8b, 0x8b, 0x86, 0x85, 0x87, -0x84, 0x84, 0x86, 0x81, 0x82, 0x81, 0x81, 0x81, 0x7e, 0x80, 0x82, 0x82, 0x7e, 0x83, 0x83, 0x81, -0x82, 0x81, 0x80, 0x81, 0x83, 0x80, 0x7c, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7a, 0x79, 0x78, 0x7b, -0x7b, 0x79, 0x78, 0x7a, 0x76, 0x78, 0x7a, 0x76, 0x76, 0x76, 0x76, 0x75, 0x77, 0x79, 0x78, 0x77, -0x7a, 0x7a, 0x79, 0x7a, 0x7c, 0x7b, 0x79, 0x7d, 0x80, 0x7c, 0x79, 0x7e, 0x80, 0x7b, 0x7c, 0x7c, -0x7d, 0x7d, 0x7b, 0x7d, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7e, 0x7e, 0x7c, 0x7c, 0x7e, 0x80, 0x80, -0x80, 0x81, 0x83, 0x82, 0x81, 0x83, 0x84, 0x85, 0x84, 0x82, 0x82, 0x85, 0x86, 0x85, 0x87, 0x84, -0x83, 0x85, 0x85, 0x7e, 0x7e, 0x83, 0x83, 0x83, 0x82, 0x83, 0x86, 0x85, 0x84, 0x85, 0x85, 0x85, -0x82, 0x82, 0x84, 0x83, 0x84, 0x82, 0x82, 0x84, 0x84, 0x83, 0x82, 0x80, 0x81, 0x85, 0x82, 0x80, -0x81, 0x82, 0x82, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7b, 0x7d, 0x82, -0x7e, 0x7b, 0x7e, 0x81, 0x80, 0x7d, 0x7b, 0x7d, 0x7c, 0x7e, 0x7e, 0x7b, 0x7b, 0x7b, 0x7d, 0x7b, -0x7d, 0x7d, 0x7b, 0x79, 0x79, 0x7c, 0x7c, 0x7b, 0x7a, 0x7b, 0x7b, 0x7d, 0x7c, 0x7b, 0x7e, 0x7d, -0x80, 0x81, 0x80, 0x82, 0x81, 0x7b, 0x7e, 0x81, 0x7e, 0x80, 0x7d, 0x7d, 0x7d, 0x7b, 0x7e, 0x7e, -0x7d, 0x7b, 0x7c, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7c, -0x7e, 0x80, 0x7d, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x81, 0x7e, 0x7d, 0x7e, 0x7e, 0x81, 0x80, 0x7d, -0x81, 0x80, 0x7e, 0x81, 0x82, 0x80, 0x82, 0x84, 0x82, 0x84, 0x84, 0x82, 0x83, 0x82, 0x80, 0x82, -0x83, 0x81, 0x7e, 0x7d, 0x7e, 0x82, 0x82, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x82, 0x81, 0x7d, -0x7c, 0x7d, 0x80, 0x82, 0x81, 0x7d, 0x7e, 0x82, 0x82, 0x82, 0x81, 0x80, 0x81, 0x82, 0x81, 0x7e, -0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x81, 0x7c, 0x7b, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, -0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x7b, 0x7c, 0x80, 0x7e, 0x7e, 0x81, 0x82, 0x81, 0x83, 0x84, 0x82, -0x80, 0x82, 0x83, 0x83, 0x83, 0x81, 0x80, 0x83, 0x82, 0x82, 0x81, 0x7d, 0x80, 0x81, 0x7e, 0x7e, -0x7d, 0x7e, 0x7e, 0x81, 0x82, 0x82, 0x85, 0x81, 0x7e, 0x82, 0x83, 0x82, 0x80, 0x82, 0x83, 0x81, -0x82, 0x81, 0x81, 0x83, 0x80, 0x81, 0x83, 0x80, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x80, 0x82, -0x7e, 0x80, 0x82, 0x81, 0x7e, 0x81, 0x83, 0x84, 0x82, 0x82, 0x84, 0x83, 0x7e, 0x7d, 0x81, 0x81, -0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7c, 0x7c, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, -0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x82, 0x83, 0x80, 0x7e, 0x81, 0x83, 0x81, 0x7d, 0x80, -0x7d, 0x7c, 0x7c, 0x7b, 0x7d, 0x7c, 0x79, 0x78, 0x78, 0x78, 0x79, 0x78, 0x7a, 0x7a, 0x79, 0x7a, -0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x79, 0x7b, 0x7e, 0x7b, 0x79, -0x7b, 0x7c, 0x7d, 0x7b, 0x78, 0x7b, 0x7c, 0x78, 0x78, 0x7a, 0x78, 0x78, 0x7a, 0x7c, 0x7b, 0x7b, -0x7c, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x84, 0x83, 0x85, 0x88, 0x86, 0x86, 0x88, 0x89, -0x84, 0x84, 0x88, 0x87, 0x85, 0x85, 0x85, 0x84, 0x84, 0x85, 0x85, 0x85, 0x84, 0x83, 0x85, 0x87, -0x87, 0x84, 0x84, 0x87, 0x88, 0x88, 0x86, 0x87, 0x88, 0x87, 0x85, 0x87, 0x87, 0x85, 0x83, 0x82, -0x83, 0x86, 0x84, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x83, 0x81, 0x7d, 0x80, 0x80, 0x7c, 0x7d, -0x7e, 0x7a, 0x79, 0x7b, 0x7d, 0x7c, 0x7a, 0x78, 0x78, 0x79, 0x7b, 0x78, 0x75, 0x75, 0x77, 0x78, -0x76, 0x78, 0x79, 0x76, 0x76, 0x77, 0x7a, 0x7b, 0x78, 0x78, 0x7b, 0x7d, 0x7e, 0x80, 0x7d, 0x7b, -0x7c, 0x7b, 0x7c, 0x7e, 0x7a, 0x7b, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x80, 0x7e, -0x80, 0x81, 0x7d, 0x80, 0x82, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x81, 0x81, 0x81, 0x82, 0x84, -0x85, 0x84, 0x86, 0x88, 0x86, 0x82, 0x83, 0x85, 0x84, 0x82, 0x7d, 0x7d, 0x82, 0x81, 0x7c, 0x7c, -0x80, 0x82, 0x80, 0x80, 0x80, 0x82, 0x80, 0x7d, 0x81, 0x82, 0x80, 0x80, 0x7d, 0x7c, 0x80, 0x80, -0x7c, 0x7d, 0x7c, 0x7c, 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x7e, 0x7c, 0x79, 0x7b, 0x7c, 0x7d, 0x7a, -0x7d, 0x80, 0x7d, 0x7c, 0x7c, 0x7e, 0x7d, 0x7b, 0x7c, 0x7d, 0x81, 0x7e, 0x7b, 0x7d, 0x7e, 0x80, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x80, 0x80, 0x80, 0x81, 0x81, -0x81, 0x82, 0x83, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x80, 0x81, 0x81, 0x82, 0x80, 0x81, 0x82, -0x82, 0x82, 0x81, 0x82, 0x84, 0x81, 0x80, 0x81, 0x81, 0x7e, 0x7d, 0x81, 0x80, 0x7e, 0x81, 0x7e, -0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7e, 0x7e, 0x7d, 0x80, 0x7d, 0x7c, 0x7c, -0x7d, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x7e, 0x80, 0x83, 0x82, 0x82, 0x84, 0x82, -0x81, 0x82, 0x83, 0x84, 0x82, 0x82, 0x83, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x84, 0x84, -0x82, 0x81, 0x81, 0x85, 0x83, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x81, 0x81, 0x82, 0x80, 0x7c, 0x7d, -0x7e, 0x7b, 0x7b, 0x7c, 0x7a, 0x7b, 0x7a, 0x7c, 0x7b, 0x78, 0x7a, 0x7b, 0x79, 0x7a, 0x79, 0x78, -0x79, 0x78, 0x79, 0x78, 0x78, 0x77, 0x76, 0x74, 0x77, 0x79, 0x79, 0x79, 0x78, 0x7a, 0x78, 0x7a, -0x7b, 0x7b, 0x7b, 0x7a, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x80, 0x7e, 0x81, 0x82, 0x7d, 0x80, -0x82, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x82, 0x82, 0x7e, 0x81, 0x83, 0x82, 0x82, -0x82, 0x83, 0x85, 0x81, 0x82, 0x83, 0x85, 0x85, 0x82, 0x84, 0x85, 0x84, 0x86, 0x83, 0x83, 0x87, -0x83, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x84, 0x84, 0x85, 0x86, 0x81, 0x81, 0x85, 0x83, 0x7e, -0x80, 0x82, 0x81, 0x81, 0x82, 0x83, 0x82, 0x83, 0x85, 0x83, 0x82, 0x84, 0x86, 0x82, 0x81, 0x82, -0x83, 0x83, 0x83, 0x81, 0x80, 0x80, 0x82, 0x81, 0x7c, 0x7e, 0x81, 0x7d, 0x7c, 0x7e, 0x7e, 0x7a, -0x79, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7a, 0x7d, 0x7d, 0x78, 0x7a, 0x7c, 0x7a, -0x79, 0x78, 0x7b, 0x7e, 0x7d, 0x7d, 0x7e, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7b, 0x79, 0x7a, 0x7b, -0x7a, 0x79, 0x7b, 0x7c, 0x7d, 0x7c, 0x7d, 0x80, 0x7c, 0x7a, 0x7a, 0x7d, 0x7d, 0x7b, 0x7c, 0x7c, -0x7c, 0x7d, 0x80, 0x7e, 0x7e, 0x7e, 0x7c, 0x7d, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7d, 0x80, -0x82, 0x7e, 0x7c, 0x81, 0x83, 0x80, 0x7d, 0x81, 0x81, 0x82, 0x84, 0x81, 0x7e, 0x81, 0x80, 0x80, -0x80, 0x81, 0x83, 0x81, 0x83, 0x83, 0x82, 0x83, 0x81, 0x80, 0x80, 0x82, 0x84, 0x82, 0x81, 0x82, -0x82, 0x85, 0x83, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x81, 0x7e, 0x7d, 0x80, 0x83, 0x81, -0x7c, 0x7c, 0x80, 0x80, 0x7d, 0x7b, 0x7e, 0x80, 0x7e, 0x7c, 0x7c, 0x7d, 0x7c, 0x7b, 0x7b, 0x7d, -0x7e, 0x7e, 0x7a, 0x7b, 0x7e, 0x7d, 0x7a, 0x7b, 0x7d, 0x7c, 0x7a, 0x78, 0x79, 0x7b, 0x7b, 0x7c, -0x7c, 0x7d, 0x7c, 0x7d, 0x7b, 0x7c, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x83, 0x84, 0x84, 0x83, 0x82, -0x84, 0x85, 0x82, 0x81, 0x83, 0x85, 0x84, 0x81, 0x83, 0x84, 0x81, 0x7e, 0x82, 0x85, 0x83, 0x82, -0x83, 0x83, 0x86, 0x86, 0x83, 0x83, 0x84, 0x82, 0x7e, 0x82, 0x82, 0x81, 0x7e, 0x81, 0x83, 0x83, -0x81, 0x7e, 0x7d, 0x80, 0x7d, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x7d, 0x7e, 0x81, 0x80, -0x7d, 0x80, 0x7d, 0x7d, 0x7d, 0x7b, 0x7d, 0x80, 0x7c, 0x7b, 0x7c, 0x7e, 0x7c, 0x7a, 0x7c, 0x80, -0x7e, 0x79, 0x7b, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x7d, 0x7b, 0x7d, -0x81, 0x80, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7c, 0x7d, 0x80, 0x7b, 0x79, 0x79, -0x7a, 0x7a, 0x79, 0x79, 0x7b, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x7e, 0x7e, 0x7b, -0x7c, 0x7e, 0x7e, 0x7d, 0x7e, 0x82, 0x82, 0x7e, 0x7d, 0x7d, 0x80, 0x7d, 0x7a, 0x7c, 0x7c, 0x79, -0x7b, 0x7c, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, 0x7e, 0x7e, 0x7e, 0x81, -0x7e, 0x81, 0x81, 0x82, 0x81, 0x80, 0x84, 0x83, 0x83, 0x84, 0x85, 0x86, 0x85, 0x86, 0x85, 0x85, -0x87, 0x88, 0x88, 0x8a, 0x8b, 0x88, 0x86, 0x87, 0x89, 0x85, 0x84, 0x86, 0x84, 0x82, 0x83, 0x84, -0x84, 0x83, 0x84, 0x85, 0x85, 0x85, 0x84, 0x83, 0x85, 0x87, 0x84, 0x84, 0x85, 0x85, 0x85, 0x83, -0x80, 0x81, 0x81, 0x7e, 0x80, 0x80, 0x80, 0x7d, 0x7c, 0x7e, 0x7e, 0x7e, 0x7c, 0x7b, 0x7b, 0x7a, -0x7b, 0x7b, 0x79, 0x79, 0x7a, 0x79, 0x79, 0x7b, 0x77, 0x75, 0x77, 0x74, 0x73, 0x76, 0x76, 0x78, -0x76, 0x75, 0x79, 0x79, 0x77, 0x77, 0x7a, 0x7a, 0x79, 0x7b, 0x7d, 0x7c, 0x7a, 0x7c, 0x7c, 0x7b, -0x7e, 0x7d, 0x7a, 0x7a, 0x7d, 0x7e, 0x7b, 0x7c, 0x7e, 0x7a, 0x7a, 0x7e, 0x81, 0x7d, 0x7d, 0x81, -0x82, 0x83, 0x83, 0x83, 0x83, 0x85, 0x84, 0x83, 0x83, 0x84, 0x81, 0x82, 0x86, 0x87, 0x82, 0x83, -0x83, 0x83, 0x84, 0x83, 0x83, 0x83, 0x81, 0x82, 0x83, 0x82, 0x81, 0x82, 0x83, 0x82, 0x83, 0x86, -0x83, 0x81, 0x82, 0x81, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x7e, 0x7c, 0x7e, 0x80, 0x80, 0x7d, -0x7d, 0x82, 0x82, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x79, 0x7a, 0x7c, -0x7b, 0x7a, 0x7a, 0x7d, 0x80, 0x7b, 0x7a, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, -0x80, 0x7e, 0x7e, 0x81, 0x7e, 0x7b, 0x7d, 0x7c, 0x7c, 0x7e, 0x82, 0x82, 0x82, 0x83, 0x82, 0x83, -0x83, 0x83, 0x81, 0x7d, 0x80, 0x82, 0x81, 0x80, 0x82, 0x84, 0x82, 0x80, 0x82, 0x84, 0x84, 0x81, -0x82, 0x83, 0x83, 0x80, 0x80, 0x82, 0x83, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x83, 0x85, 0x84, -0x82, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7c, 0x80, -0x80, 0x7c, 0x7d, 0x80, 0x7d, 0x7d, 0x82, 0x83, 0x7d, 0x7d, 0x81, 0x83, 0x7e, 0x7e, 0x81, 0x7e, -0x7c, 0x7c, 0x7e, 0x7d, 0x7d, 0x7e, 0x81, 0x81, 0x81, 0x80, 0x81, 0x80, 0x82, 0x83, 0x80, 0x7e, -0x80, 0x80, 0x7c, 0x7c, 0x82, 0x81, 0x7e, 0x81, 0x81, 0x7e, 0x7e, 0x7d, 0x7b, 0x7b, 0x7c, 0x7b, -0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x79, 0x79, 0x7d, 0x7d, 0x7a, 0x78, -0x79, 0x7a, 0x78, 0x77, 0x79, 0x79, 0x7b, 0x79, 0x7a, 0x7c, 0x7d, 0x7b, 0x7b, 0x7d, 0x7d, 0x7d, -0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x7e, 0x7e, 0x80, -0x80, 0x80, 0x81, 0x82, 0x81, 0x80, 0x82, 0x82, 0x84, 0x85, 0x83, 0x84, 0x86, 0x85, 0x85, 0x86, -0x86, 0x84, 0x85, 0x85, 0x85, 0x85, 0x82, 0x84, 0x86, 0x82, 0x84, 0x84, 0x81, 0x82, 0x84, 0x81, -0x83, 0x85, 0x83, 0x82, 0x83, 0x84, 0x83, 0x81, 0x7e, 0x7e, 0x81, 0x7c, 0x7d, 0x82, 0x7d, 0x7e, -0x83, 0x83, 0x80, 0x81, 0x82, 0x82, 0x81, 0x84, 0x83, 0x83, 0x84, 0x83, 0x82, 0x81, 0x84, 0x82, -0x7e, 0x80, 0x81, 0x81, 0x7e, 0x80, 0x80, 0x7d, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7c, 0x7c, 0x7c, -0x7c, 0x7d, 0x7c, 0x78, 0x79, 0x7a, 0x7a, 0x7a, 0x78, 0x79, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x7a, -0x78, 0x7a, 0x7b, 0x7a, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, -0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7b, 0x7d, 0x7b, 0x7a, 0x7c, 0x7a, 0x7b, 0x80, 0x7e, 0x7d, 0x7e, -0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x7e, -0x80, 0x81, 0x82, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x81, 0x84, 0x85, 0x85, -0x85, 0x83, 0x83, 0x86, 0x85, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x83, 0x84, 0x83, 0x83, 0x83, -0x85, 0x84, 0x83, 0x82, 0x81, 0x82, 0x80, 0x80, 0x82, 0x7e, 0x7d, 0x80, 0x7c, 0x7c, 0x7c, 0x7b, -0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x80, 0x80, 0x7d, 0x7c, 0x7e, 0x7b, 0x7a, 0x7d, 0x7c, 0x7b, 0x7a, -0x7b, 0x7c, 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x78, 0x7a, 0x7d, 0x7d, 0x7b, 0x7b, 0x7c, 0x7b, 0x7c, -0x7d, 0x7d, 0x80, 0x7c, 0x7d, 0x81, 0x82, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x80, 0x81, -0x83, 0x83, 0x83, 0x85, 0x84, 0x81, 0x84, 0x85, 0x84, 0x83, 0x85, 0x86, 0x85, 0x84, 0x86, 0x86, -0x84, 0x83, 0x84, 0x86, 0x83, 0x82, 0x84, 0x84, 0x80, 0x81, 0x82, 0x82, 0x80, 0x7e, 0x82, 0x83, -0x80, 0x80, 0x81, 0x82, 0x80, 0x80, 0x81, 0x7e, 0x80, 0x7e, 0x7c, 0x7e, 0x81, 0x80, 0x7e, 0x7e, -0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x7b, 0x7d, 0x7b, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7a, -0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7a, 0x79, 0x79, 0x7a, 0x78, 0x78, 0x7a, 0x7a, 0x7a, 0x7c, -0x7e, 0x7d, 0x7e, 0x81, 0x80, 0x7e, 0x80, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x80, 0x80, 0x7d, -0x7c, 0x7e, 0x80, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, -0x80, 0x7e, 0x7c, 0x80, 0x82, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x7e, 0x7e, 0x80, 0x80, 0x7d, -0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x83, 0x84, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x82, 0x83, 0x83, 0x84, 0x84, 0x83, -0x83, 0x85, 0x85, 0x83, 0x83, 0x83, 0x82, 0x82, 0x83, 0x84, 0x84, 0x84, 0x82, 0x83, 0x85, 0x85, -0x83, 0x83, 0x83, 0x84, 0x83, 0x82, 0x84, 0x83, 0x82, 0x82, 0x83, 0x83, 0x80, 0x81, 0x81, 0x7d, -0x7e, 0x80, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7a, 0x7b, 0x7d, 0x7b, 0x7a, 0x7a, 0x7a, 0x7b, -0x7b, 0x7a, 0x79, 0x7a, 0x7a, 0x77, 0x77, 0x79, 0x7a, 0x78, 0x78, 0x79, 0x78, 0x78, 0x76, 0x77, -0x77, 0x78, 0x79, 0x79, 0x7a, 0x7c, 0x7b, 0x7d, 0x80, 0x7e, 0x7c, 0x7e, 0x7c, 0x79, 0x7b, 0x7e, -0x7d, 0x7b, 0x7d, 0x7e, 0x7d, 0x7a, 0x7a, 0x7e, 0x7e, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, -0x81, 0x83, 0x83, 0x82, 0x85, 0x85, 0x84, 0x84, 0x84, 0x85, 0x86, 0x84, 0x84, 0x84, 0x82, 0x83, -0x82, 0x80, 0x82, 0x84, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x81, 0x81, 0x81, 0x81, -0x80, 0x82, 0x82, 0x81, 0x81, 0x82, 0x80, 0x7d, 0x80, 0x81, 0x80, 0x80, 0x82, 0x81, 0x81, 0x81, -0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7b, 0x7d, -0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x80, 0x80, -0x7d, 0x7c, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7b, 0x7b, 0x7b, 0x7d, 0x7d, -0x7e, 0x7e, 0x7e, 0x81, 0x81, 0x80, 0x82, 0x82, 0x81, 0x80, 0x81, 0x82, 0x83, 0x82, 0x82, 0x84, -0x84, 0x83, 0x85, 0x83, 0x82, 0x82, 0x81, 0x83, 0x82, 0x84, 0x82, 0x81, 0x83, 0x82, 0x80, 0x81, -0x82, 0x80, 0x7e, 0x7e, 0x80, 0x7d, 0x7b, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x81, -0x81, 0x7e, 0x7e, 0x81, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x81, 0x81, 0x7e, 0x80, 0x81, 0x7e, 0x7e, -0x81, 0x81, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x7e, 0x7d, 0x7c, 0x7d, 0x7c, -0x7b, 0x7c, 0x7c, 0x7b, 0x7a, 0x7b, 0x7b, 0x7a, 0x7b, 0x7c, 0x7c, 0x7a, 0x7b, 0x7d, 0x7e, 0x7d, -0x7c, 0x7e, 0x7e, 0x7c, 0x7c, 0x7a, 0x7a, 0x7c, 0x7b, 0x7b, 0x7e, 0x7e, 0x7b, 0x7a, 0x7a, 0x7b, -0x7b, 0x7a, 0x78, 0x7a, 0x7c, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7c, -0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x84, -0x85, 0x84, 0x84, 0x83, 0x84, 0x87, 0x85, 0x84, 0x86, 0x87, 0x86, 0x85, 0x85, 0x86, 0x84, 0x82, -0x83, 0x83, 0x83, 0x83, 0x85, 0x85, 0x85, 0x85, 0x83, 0x82, 0x82, 0x83, 0x80, 0x80, 0x82, 0x80, -0x7d, 0x81, 0x81, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x82, 0x80, -0x80, 0x80, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x81, 0x81, 0x7d, 0x80, 0x82, 0x7d, 0x7c, 0x7e, 0x7d, -0x7b, 0x7d, 0x7e, 0x7c, 0x7b, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x7a, 0x7b, 0x7c, 0x7b, 0x7a, 0x7d, -0x7e, 0x7b, 0x79, 0x7c, 0x7e, 0x7c, 0x7a, 0x7c, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, -0x7b, 0x7d, 0x7d, 0x7c, 0x7b, 0x7c, 0x7e, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7b, 0x79, 0x7b, -0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7b, 0x7b, 0x7e, 0x7e, 0x80, 0x80, -0x80, 0x82, 0x82, 0x81, 0x80, 0x81, 0x81, 0x80, 0x82, 0x80, 0x7e, 0x81, 0x81, 0x80, 0x80, 0x81, -0x83, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x83, 0x84, 0x83, 0x82, 0x83, 0x84, 0x86, 0x86, 0x84, -0x83, 0x83, 0x83, 0x83, 0x82, 0x81, 0x80, 0x82, 0x81, 0x80, 0x82, 0x82, 0x80, 0x80, 0x81, 0x82, -0x82, 0x7e, 0x7e, 0x81, 0x80, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7c, -0x7e, 0x80, 0x80, 0x7e, 0x7c, 0x7d, 0x7e, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7e, -0x7c, 0x7b, 0x7a, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x7a, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, 0x7d, 0x7b, -0x7b, 0x7e, 0x7e, 0x7c, 0x7e, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x81, 0x83, 0x82, 0x81, 0x83, 0x84, -0x83, 0x80, 0x80, 0x82, 0x82, 0x80, 0x81, 0x84, 0x83, 0x82, 0x83, 0x83, 0x82, 0x84, 0x84, 0x83, -0x83, 0x84, 0x84, 0x81, 0x80, 0x81, 0x83, 0x83, 0x81, 0x81, 0x82, 0x82, 0x83, 0x82, 0x80, 0x82, -0x83, 0x81, 0x7e, 0x81, 0x82, 0x81, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x7c, 0x7b, -0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, -0x79, 0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7c, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x81, 0x80, 0x7e, 0x80, 0x7e, 0x7d, -0x7c, 0x7c, 0x7e, 0x7e, 0x7d, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7e, -0x80, 0x80, 0x7e, 0x80, 0x81, 0x7d, 0x7e, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, -0x81, 0x81, 0x83, 0x81, 0x81, 0x83, 0x83, 0x83, 0x84, 0x84, 0x85, 0x83, 0x83, 0x83, 0x82, 0x82, -0x84, 0x84, 0x82, 0x83, 0x84, 0x83, 0x82, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x83, 0x81, -0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x83, 0x82, 0x7e, 0x81, 0x80, 0x80, 0x82, 0x83, 0x83, 0x82, -0x82, 0x83, 0x84, 0x82, 0x83, 0x82, 0x81, 0x81, 0x81, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, -0x7d, 0x7b, 0x7b, 0x7c, 0x7d, 0x7b, 0x7a, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7a, 0x7a, 0x7b, 0x7a, -0x7a, 0x79, 0x78, 0x7a, 0x79, 0x78, 0x7a, 0x7a, 0x78, 0x78, 0x79, 0x7a, 0x7b, 0x7a, 0x7a, 0x7a, -0x7b, 0x7c, 0x7b, 0x7a, 0x7d, 0x7d, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, 0x80, 0x80, 0x7e, -0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x82, 0x83, 0x82, 0x81, -0x82, 0x83, 0x82, 0x82, 0x83, 0x84, 0x84, 0x82, 0x84, 0x85, 0x84, 0x84, 0x86, 0x84, 0x84, 0x86, -0x84, 0x83, 0x85, 0x83, 0x82, 0x83, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, -0x81, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x7d, -0x7d, 0x7d, 0x7b, 0x7c, 0x7d, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7e, 0x80, -0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x82, 0x81, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, -0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x80, 0x80, -0x7d, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x82, 0x80, 0x80, 0x82, 0x83, 0x82, 0x81, 0x80, 0x81, -0x81, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7c, 0x7d, 0x80, 0x80, 0x7d, 0x7e, -0x80, 0x7e, 0x7e, 0x80, 0x82, 0x82, 0x81, 0x82, 0x83, 0x81, 0x81, 0x82, 0x83, 0x82, 0x82, 0x81, -0x81, 0x81, 0x7e, 0x7e, 0x81, 0x82, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x81, 0x80, 0x7d, -0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x7b, -0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7c, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, -0x7d, 0x7e, 0x80, 0x80, 0x7d, 0x7e, 0x80, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7b, 0x7b, 0x7d, -0x7c, 0x7a, 0x7b, 0x7e, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x81, -0x80, 0x81, 0x82, 0x81, 0x82, 0x84, 0x84, 0x84, 0x82, 0x81, 0x82, 0x82, 0x82, 0x83, 0x82, 0x83, -0x85, 0x85, 0x84, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x81, 0x83, 0x85, 0x85, 0x84, -0x84, 0x85, 0x85, 0x84, 0x82, 0x82, 0x84, 0x83, 0x81, 0x80, 0x83, 0x81, 0x80, 0x81, 0x81, 0x82, -0x82, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7c, 0x7e, 0x80, 0x7d, 0x7e, 0x81, 0x80, 0x7c, 0x7c, -0x7e, 0x7d, 0x7e, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, -0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x79, 0x79, 0x7c, 0x7c, 0x7b, 0x7c, 0x7e, 0x7d, 0x7c, 0x7d, -0x7e, 0x7d, 0x7c, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x7d, 0x7c, 0x80, 0x7e, 0x7c, 0x7e, 0x80, 0x7c, -0x7b, 0x7d, 0x7d, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, -0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x82, 0x81, 0x80, 0x81, 0x80, 0x80, 0x7e, -0x7e, 0x80, 0x81, 0x81, 0x7d, 0x7e, 0x81, 0x81, 0x81, 0x80, 0x81, 0x82, 0x82, 0x80, 0x80, 0x83, -0x83, 0x82, 0x82, 0x84, 0x86, 0x85, 0x83, 0x84, 0x86, 0x85, 0x84, 0x84, 0x84, 0x85, 0x83, 0x82, -0x83, 0x84, 0x83, 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x80, 0x81, 0x82, 0x80, 0x7e, 0x80, 0x7e, -0x7d, 0x7d, 0x7e, 0x7c, 0x7d, 0x7d, 0x7c, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, -0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, -0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, -0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x82, 0x81, 0x81, 0x82, -0x82, 0x82, 0x83, 0x82, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x82, 0x81, 0x80, 0x82, 0x81, -0x81, 0x83, 0x83, 0x81, 0x82, 0x83, 0x82, 0x82, 0x82, 0x84, 0x83, 0x82, 0x84, 0x85, 0x83, 0x81, -0x80, 0x82, 0x80, 0x80, 0x83, 0x81, 0x81, 0x80, 0x7d, 0x80, 0x81, 0x7e, 0x7c, 0x7d, 0x7d, 0x7c, -0x7b, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, -0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, -0x7c, 0x7a, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x81, 0x80, 0x7e, 0x81, -0x83, 0x81, 0x81, 0x83, 0x83, 0x83, 0x81, 0x80, 0x82, 0x82, 0x81, 0x80, 0x81, 0x82, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x81, 0x80, 0x80, 0x80, -0x80, 0x82, 0x82, 0x80, 0x81, 0x84, 0x83, 0x81, 0x82, 0x83, 0x83, 0x80, 0x81, 0x83, 0x82, 0x81, -0x81, 0x82, 0x83, 0x83, 0x82, 0x82, 0x82, 0x83, 0x82, 0x81, 0x82, 0x80, 0x80, 0x82, 0x82, 0x83, -0x83, 0x81, 0x80, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x80, 0x81, -0x81, 0x81, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x79, 0x7a, -0x7b, 0x7a, 0x7a, 0x7b, 0x7c, 0x7a, 0x79, 0x7a, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7a, 0x79, 0x79, -0x7a, 0x7b, 0x7b, 0x79, 0x7b, 0x7d, 0x7b, 0x7a, 0x7c, 0x7c, 0x7b, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, -0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x81, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, -0x7e, 0x81, 0x82, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x82, 0x83, -0x84, 0x83, 0x82, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x81, -0x82, 0x83, 0x84, 0x84, 0x82, 0x82, 0x82, 0x81, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, -0x82, 0x81, 0x81, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, -0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, -0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x81, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x7d, 0x7e, 0x7e, 0x7c, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x80, -0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, -0x80, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x80, 0x7e, 0x7e, 0x7e, -0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, -0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, -0x80, 0x80, 0x81, 0x80, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7c, 0x7c, -0x7d, 0x7d, 0x7c, 0x7d, 0x80, 0x7e, 0x7c, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7a, -0x7a, 0x7a, 0x7a, 0x7b, 0x7a, 0x79, 0x7c, 0x7b, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, -0x80, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, -0x81, 0x81, 0x82, 0x81, 0x80, 0x81, 0x83, 0x84, 0x83, 0x81, 0x82, 0x82, 0x82, 0x84, 0x84, 0x83, -0x83, 0x84, 0x83, 0x84, 0x85, 0x85, 0x84, 0x84, 0x85, 0x84, 0x84, 0x85, 0x84, 0x83, 0x84, 0x85, -0x85, 0x84, 0x84, 0x85, 0x85, 0x82, 0x80, 0x82, 0x82, 0x80, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, -0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7c, 0x7e, 0x7e, 0x7d, -0x7c, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x79, 0x79, 0x7c, 0x7c, 0x7c, 0x7b, -0x7b, 0x7c, 0x7b, 0x7a, 0x7b, 0x7c, 0x7b, 0x7a, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, -0x7c, 0x7c, 0x7e, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7b, 0x7c, -0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x80, 0x7e, 0x7e, 0x80, 0x80, -0x81, 0x81, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x80, -0x80, 0x80, 0x7e, 0x81, 0x83, 0x82, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, -0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x83, 0x84, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, -0x84, 0x83, 0x83, 0x83, 0x81, 0x82, 0x83, 0x81, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x80, -0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, -0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, -0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, -0x80, 0x81, 0x7d, 0x7d, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x82, 0x81, 0x81, -0x80, 0x80, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x80, 0x80, 0x81, 0x81, 0x81, -0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x81, 0x80, 0x82, 0x81, 0x80, 0x81, 0x80, -0x80, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, -0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, -0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7a, -0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, -0x81, 0x82, 0x81, 0x81, 0x83, 0x83, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, -0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x82, 0x81, 0x80, 0x7e, 0x80, -0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x82, 0x81, 0x81, 0x82, 0x82, 0x83, 0x82, 0x82, 0x83, 0x83, -0x82, 0x82, 0x83, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x82, -0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x82, 0x81, 0x82, 0x82, 0x81, 0x7e, 0x80, 0x81, 0x80, 0x7d, -0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, -0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7a, 0x7a, 0x7b, -0x7a, 0x79, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7d, 0x7d, -0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x83, 0x81, 0x82, 0x83, -0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x84, 0x84, 0x82, 0x81, 0x81, 0x82, 0x83, 0x83, 0x82, -0x83, 0x84, 0x84, 0x83, 0x83, 0x84, 0x82, 0x81, 0x83, 0x84, 0x84, 0x82, 0x81, 0x83, 0x83, 0x82, -0x82, 0x82, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x81, 0x82, 0x82, 0x83, 0x82, 0x7e, 0x7e, -0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, -0x7b, 0x7c, 0x7d, 0x80, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, -0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7d, 0x7c, 0x7d, -0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x80, 0x7e, -0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, -0x7d, 0x7e, 0x80, 0x81, 0x80, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x80, 0x7e, 0x81, 0x80, 0x80, -0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x80, 0x7d, 0x7e, -0x81, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x82, 0x81, 0x81, 0x82, -0x80, 0x7e, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, -0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, -0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, -0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x80, -0x80, 0x7e, 0x81, 0x82, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 0x82, 0x83, 0x83, 0x82, 0x83, -0x82, 0x82, 0x84, 0x84, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x84, 0x84, 0x84, 0x84, 0x83, -0x84, 0x84, 0x82, 0x82, 0x83, 0x81, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, -0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7c, 0x7d, 0x7c, 0x7c, -0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, -0x7a, 0x7a, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, -0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, -0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, -0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, -0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x84, 0x83, 0x82, 0x83, 0x83, 0x82, 0x81, 0x83, 0x82, -0x82, 0x82, 0x82, 0x80, 0x80, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, -0x7e, 0x7d, 0x7c, 0x7e, 0x7e, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7d, -0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, -0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x83, -0x84, 0x83, 0x82, 0x83, 0x82, 0x81, 0x81, 0x82, 0x82, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, -0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, -0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, -0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x81, 0x81, -0x81, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x7e, 0x7e, -0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x83, 0x82, 0x82, -0x83, 0x83, 0x82, 0x83, 0x82, 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x81, -0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x80, 0x80, 0x82, 0x82, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, -0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, 0x7b, 0x7a, 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, -0x7b, 0x7c, 0x7c, 0x7d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, -0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, -0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, 0x83, 0x82, 0x81, 0x81, -0x83, 0x83, 0x84, 0x83, 0x82, 0x83, 0x83, 0x82, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, -0x82, 0x83, 0x84, 0x84, 0x83, 0x82, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, -0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, -0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, -0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x81, 0x81, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, -0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x83, -0x82, 0x81, 0x81, 0x81, 0x82, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7e, -0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, -0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, -0x7b, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x81, -0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x83, -0x84, 0x84, 0x83, 0x83, 0x82, 0x82, 0x84, 0x84, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, -0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, -0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, -0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x81, 0x82, 0x82, 0x81, 0x81, -0x82, 0x82, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x80, 0x81, 0x82, -0x82, 0x82, 0x83, 0x83, 0x82, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, -0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, -0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, -0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7b, 0x7b, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7b, 0x7c, -0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, -0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, -0x82, 0x81, 0x82, 0x83, 0x83, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x84, 0x83, 0x83, 0x83, 0x82, -0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, -0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7e, -0x80, 0x81, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, -0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, -0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x82, 0x82, 0x81, -0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, -0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, -0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, -0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x83, 0x83, 0x83, 0x83, 0x84, 0x83, 0x83, 0x84, -0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x83, 0x82, 0x82, 0x81, 0x82, 0x82, 0x81, 0x81, -0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, -0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, -0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, -0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, -0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x81, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x81, -0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, -0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7d, 0x7c, -0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, -0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x83, 0x83, 0x82, -0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x81, 0x82, 0x82, 0x82, 0x83, 0x82, 0x82, 0x82, 0x82, -0x82, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7d, -0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, -0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, -0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, -0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x81, 0x80, -0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, -0x81, 0x81, 0x81, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, -0x81, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x83, 0x82, 0x82, -0x82, 0x82, 0x82, 0x83, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, -0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, -0x7e, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, -0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7d, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, -0x83, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, -0x81, 0x81, 0x81, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, -0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, -0x80, 0x81, 0x82, 0x81, 0x82, 0x82, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x80, -0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7e, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, -0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, -0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, -0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, -0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, -0x82, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x82, -0x82, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, -0x82, 0x82, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, -0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, -0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, -0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, -0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, -0x82, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x81, -0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, -0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, -0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x81, -0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, -0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, -0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, -0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x82, 0x82, 0x82, -0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x80, 0x81, 0x81, 0x81, -0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, -0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, -0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, -0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, -0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, -0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x80, -0x80, 0x7e, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, -0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, -0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, -0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, -0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, -0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, -0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, -0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, -0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, -0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, -0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, -0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, -0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, -0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, -0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, -0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, -0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, -0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, -0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, -0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, -0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, -0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, -0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, -0x80, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, -0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, -0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, -0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, -0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, -0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, -0x80, 0x80, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, -0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, -0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, -0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x81, 0x80, 0x80, 0x81, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7f, 0x80, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, -0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, -0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, -0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, -0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, -0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, -0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, -0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, -0x7e, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -}; diff --git a/examples/peripherals/dac/dac_audio/main/dac_audio.c b/examples/peripherals/dac/dac_audio/main/dac_audio.c deleted file mode 100644 index c3d59ae440..0000000000 --- a/examples/peripherals/dac/dac_audio/main/dac_audio.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: CC0-1.0 - */ - -#include -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "driver/dac_driver.h" -#include "esp_check.h" -#include "audio_example_file.h" - -#define EXAMPLE_CONVERT_FREQ_HZ 16000 // DAC conversion frequency, it determines how fast to play the audio - -static const char *TAG = "dac audio"; - -void app_main(void) -{ - ESP_LOGI(TAG, "DAC audio example start"); - ESP_LOGI(TAG, "--------------------------------------"); - - dac_channels_handle_t dac_handle; - - dac_channels_config_t cfg = { - .chan_sel = DAC_CHANNEL_MASK_BOTH, - }; - dac_conti_config_t dma_cfg = { - .freq_hz = EXAMPLE_CONVERT_FREQ_HZ, - /* Assume the data in buffer is 'A B C D E F' - * DAC_CHANNEL_MODE_SIMUL: - * - channel 0: A B C D E F - * - channel 1: A B C D E F - * DAC_CHANNEL_MODE_ALTER: - * - channel 0: A C E - * - channel 1: B D F - */ - .chan_mode = DAC_CHANNEL_MODE_SIMUL, - .clk_src = DAC_DIGI_CLK_SRC_APLL, // Using APLL as clock source to get a wider frequency range - .desc_num = 5, // At least 2 descriptions - }; - /* Allocate the channel group */ - ESP_ERROR_CHECK(dac_new_channels(&cfg, &dac_handle)); - /* Enable the channels in the group */ - ESP_ERROR_CHECK(dac_channels_enable(dac_handle)); - /* Initialize DAC DMA peripheral */ - ESP_ERROR_CHECK(dac_channels_init_continuous_mode(dac_handle, &dma_cfg)); - /* Start the DAC DMA peripheral */ - ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(dac_handle)); - ESP_LOGI(TAG, "DAC initialized success, DAC DMA is ready"); - - uint8_t *audio = NULL; - size_t audio_size = sizeof(audio_table); -#if CONFIG_IDF_TARGET_ESP32 - audio = (uint8_t *)calloc(1, audio_size * 2); - assert(audio); - /* On ESP32, the data have to align with 16 bits, and only the high 8 bit will be converted by DAC */ - for (int i = 0; i < audio_size; i++) { - audio[2 * i + 1] = audio_table[i]; - } -#else - audio = (uint8_t *)calloc(1, audio_size); - assert(audio); - /* 'audio_table' is a const buffer which can't be sent by DMA directly, copy it into a new buffer */ - memcpy(audio, audio_table, audio_size); -#endif - - while (1) { - ESP_LOGI(TAG, "Audio size %d bytes, played at frequency %d Hz", audio_size, EXAMPLE_CONVERT_FREQ_HZ); - ESP_ERROR_CHECK(dac_channels_write_continuously(dac_handle, audio, audio_size, NULL, portMAX_DELAY)); - vTaskDelay(pdMS_TO_TICKS(1000)); - } -} diff --git a/examples/peripherals/dac/dac_audio/pytest_dac_audio.py b/examples/peripherals/dac/dac_audio/pytest_dac_audio.py deleted file mode 100644 index 4e4d5f89bf..0000000000 --- a/examples/peripherals/dac/dac_audio/pytest_dac_audio.py +++ /dev/null @@ -1,16 +0,0 @@ -# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD -# SPDX-License-Identifier: CC0-1.0 - -import pytest -from pytest_embedded import Dut - - -@pytest.mark.esp32 -@pytest.mark.esp32s2 -@pytest.mark.generic -def test_dac_audio_exampl(dut: Dut) -> None: - - dut.expect('I \\(([0-9]+)\\) dac audio: DAC audio example start', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac audio: --------------------------------------', timeout=5) - dut.expect('I \\(([0-9]+)\\) dac audio: DAC initialized success, DAC DMA is ready', timeout=5) - dut.expect('I \\(([0-9]+)\\) dac audio: Audio size ([0-9]+) bytes, played at frequency ([0-9]+) Hz', timeout=5) diff --git a/examples/peripherals/dac/dac_audio/tools/sample_00.wav b/examples/peripherals/dac/dac_audio/tools/sample_00.wav deleted file mode 100644 index 061dc011d35a07163449f721341ff37e7b50dae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23126 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 diff --git a/examples/peripherals/dac/dac_audio/tools/sample_01.wav b/examples/peripherals/dac/dac_audio/tools/sample_01.wav deleted file mode 100644 index be377328581b8f4f96100ff7a951314df920e40f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33852 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

Je}{gu|2g>oFvEVvm&`v{WdA4q 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 diff --git a/examples/peripherals/dac/dac_audio/tools/sample_02.wav b/examples/peripherals/dac/dac_audio/tools/sample_02.wav deleted file mode 100644 index d2d9e906757534435e52c78985c731b71113e43c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102178 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 diff --git a/examples/peripherals/dac/dac_basic/README.md b/examples/peripherals/dac/dac_basic/README.md deleted file mode 100644 index 2a9bcbf6ad..0000000000 --- a/examples/peripherals/dac/dac_basic/README.md +++ /dev/null @@ -1,71 +0,0 @@ -| Supported Targets | ESP32 | ESP32-S2 | -| ----------------- | ----- | -------- | - -# DAC Basic Example - -(See the README.md file in the upper level 'examples' directory for more information about examples.) - -## Overview - -This example shows the basic usage of outputting a voltage directly by the DAC driver. - -The output voltage will increase a step every 500 ms, and it will reset to 0 periodically. - -## How to use the Example - -### Hardware Required - -* A development board with ESP32 or ESP32-S2 SoC - - Note that some ESP32-S2 DevKits have LED on it which is connected to GPIO18 (same pin as DAC channel2), so the output voltage of DAC channel 1 can't go down due the this LED. -* (Optional) An oscilloscope to monitor the output wave - -### Configure the Project - -There is a macro `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` in the example to choose whether put the two DAC channels into a same group - - - If `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 1, DAC channel 0 and channel 2 can be set to different voltage separately by their own group handle. - - If `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 0, DAC channel 0 and channel 2 will be set to a same voltage by the same group handle. - -### Build and Flash - -Build the project and flash it to the board, then run monitor tool to view serial output: - -``` -idf.py -p PORT flash monitor -``` - -(Replace PORT with the name of the serial port to use.) - -(To exit the serial monitor, type ``Ctrl-]``.) - -See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. - -## Example Output - -The DAC channels can be read by ADC channels internally. The ADC read period is 100 ms, the following log is the raw ADC value read from the DAC channels, it shows the output voltage is increasing every 500 ms. - -``` -DAC channel 0 vaule: 37 DAC channel 1 vaule: 0 -DAC channel 0 vaule: 37 DAC channel 1 vaule: 0 -DAC channel 0 vaule: 38 DAC channel 1 vaule: 0 -DAC channel 0 vaule: 38 DAC channel 1 vaule: 0 -DAC channel 0 vaule: 34 DAC channel 1 vaule: 0 -DAC channel 0 vaule: 179 DAC channel 1 vaule: 117 -DAC channel 0 vaule: 176 DAC channel 1 vaule: 117 -DAC channel 0 vaule: 178 DAC channel 1 vaule: 122 -DAC channel 0 vaule: 179 DAC channel 1 vaule: 118 -DAC channel 0 vaule: 177 DAC channel 1 vaule: 115 -DAC channel 0 vaule: 316 DAC channel 1 vaule: 261 -DAC channel 0 vaule: 317 DAC channel 1 vaule: 263 -DAC channel 0 vaule: 311 DAC channel 1 vaule: 261 -DAC channel 0 vaule: 317 DAC channel 1 vaule: 260 -DAC channel 0 vaule: 317 DAC channel 1 vaule: 262 -DAC channel 0 vaule: 458 DAC channel 1 vaule: 406 -DAC channel 0 vaule: 456 DAC channel 1 vaule: 406 -DAC channel 0 vaule: 454 DAC channel 1 vaule: 403 -DAC channel 0 vaule: 457 DAC channel 1 vaule: 406 -DAC channel 0 vaule: 459 DAC channel 1 vaule: 407 -... -``` - -If monitoring the DAC channels with an oscilloscope, there will be a direct voltage on the screen and it will be updated every 500 ms. diff --git a/examples/peripherals/dac/dac_basic/main/CMakeLists.txt b/examples/peripherals/dac/dac_basic/main/CMakeLists.txt deleted file mode 100644 index 26ed7c8ff6..0000000000 --- a/examples/peripherals/dac/dac_basic/main/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -idf_component_register(SRCS "dac_basic.c" - INCLUDE_DIRS ".") diff --git a/examples/peripherals/dac/dac_basic/main/dac_basic.c b/examples/peripherals/dac/dac_basic/main/dac_basic.c deleted file mode 100644 index e1e1c6bffe..0000000000 --- a/examples/peripherals/dac/dac_basic/main/dac_basic.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: CC0-1.0 - */ - -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "driver/dac_driver.h" -#include "driver/adc.h" -#include "esp_check.h" - -#define EXAMPLE_DAC_USE_SEPARATE_CHANNEL 0 // Whether to register two DAC channels in separate control group - -#if CONFIG_IDF_TARGET_ESP32 -#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_8 // GPIO25, same as DAC channel 0 -#define EXAMPLE_DAC_CHAN2_ADC_CHAN ADC2_CHANNEL_9 // GPIO26, same as DAC channel 1 -#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_12 -#elif CONFIG_IDF_TARGET_ESP32S2 -#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_6 // GPIO17, same as DAC channel 0 -#define EXAMPLE_DAC_CHAN2_ADC_CHAN ADC2_CHANNEL_7 // GPIO18, same as DAC channel 1 -#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_13 -#endif -#define EXAMPLE_ADC_ATTEN ADC_ATTEN_DB_11 - -static void adc_monitor_task(void *args) -{ - /* Set the ADC channels, these channels are connected to the DAC channels internally */ - ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_ATTEN)); - ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN2_ADC_CHAN, EXAMPLE_ADC_ATTEN)); - - int chan1_val = 0; - int chan2_val = 0; - while (1) { - /* Read the DAC output voltage */ - ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan1_val)); - ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN2_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan2_val)); - printf("DAC channel 0 vaule: %4d\tDAC channel 1 vaule: %4d\n", chan1_val, chan2_val); - vTaskDelay(pdMS_TO_TICKS(100)); - } -} - -static void dac_output_task(void *args) -{ - dac_channels_handle_t handle = (dac_channels_handle_t)args; - uint32_t val = 0; - while (1) { - /* Set the voltage every 100 ms */ - ESP_ERROR_CHECK(dac_channels_set_voltage(handle, val)); - val += 10; - val %= 250; - vTaskDelay(pdMS_TO_TICKS(500)); - } -} - -static void dac_init_channel(dac_channel_mask_t mask, dac_channels_handle_t *dac_handle) -{ - dac_channels_handle_t handle = NULL; - dac_channels_config_t cfg = { - .chan_sel = mask, - }; - /* Allocate the channel group */ - ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); - /* Enable the channels in the group */ - ESP_ERROR_CHECK(dac_channels_enable(handle)); - *dac_handle = handle; -} - -static void __attribute__((unused)) dac_deinit_channel(dac_channels_handle_t dac_handle) -{ - /* Disable the DAC channels */ - ESP_ERROR_CHECK(dac_channels_disable(dac_handle)); - /* Delete the channel group */ - ESP_ERROR_CHECK(dac_del_channels(dac_handle)); -} - -void app_main(void) -{ -#if EXAMPLE_DAC_USE_SEPARATE_CHANNEL - dac_channels_handle_t chan1_handle; - dac_channels_handle_t chan2_handle; - /* Initialize the two channels separately */ - dac_init_channel(DAC_CHANNEL_MASK_CH0, &chan1_handle); - dac_init_channel(DAC_CHANNEL_MASK_CH1, &chan2_handle); - xTaskCreate(dac_output_task, "dac_chan1_output_task", 4096, chan1_handle, 5, NULL); - vTaskDelay(pdMS_TO_TICKS(500)); // To differential the output of two channels - xTaskCreate(dac_output_task, "dac_chan2_output_task", 4096, chan2_handle, 5, NULL); - xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); -#else - dac_channels_handle_t chan12_handle; - /* Initialize the two channels in a same group */ - dac_init_channel(DAC_CHANNEL_MASK_BOTH, &chan12_handle); - xTaskCreate(dac_output_task, "dac_output_task", 4096, chan12_handle, 5, NULL); - xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); -#endif -} diff --git a/examples/peripherals/dac/dac_basic/sdkconfig.defaults b/examples/peripherals/dac/dac_basic/sdkconfig.defaults deleted file mode 100644 index 83e2dfa154..0000000000 --- a/examples/peripherals/dac/dac_basic/sdkconfig.defaults +++ /dev/null @@ -1 +0,0 @@ -CONFIG_ADC_DISABLE_DAC=n diff --git a/examples/peripherals/dac/dac_continuous/README.md b/examples/peripherals/dac/dac_continuous/README.md deleted file mode 100644 index 33b7aa0fd3..0000000000 --- a/examples/peripherals/dac/dac_continuous/README.md +++ /dev/null @@ -1,153 +0,0 @@ -| Supported Targets | ESP32 | ESP32-S2 | -| ----------------- | ----- | -------- | - -# DAC Constant Example - -(See the README.md file in the upper level 'examples' directory for more information about examples.) - -## Overview - -This example shows the basic usage of outputting continuous voltage by the DAC driver. There are two ways to realize continuous output, one is outputting by DMA transmission and another is by timer interrupt. - -### Timer Interrupt - -While using timer interrupt to output the waves, the digital value will be set in every timer interrupt callback, it means the conversion frequency is equal to the timer interrupt frequency. Obviously, the conversion frequency is limited by the interrupt, which relies on the CPU scheduling, thus it can't reach a high frequency in this mode. But it can be used as a supplementary way while the conversion frequency is too low to use DMA mode. - -### DMA transmission - -While using DMA to transmit the wave buffers, the digital values are put into a DMA buffer wait for transmitting and converting, it means the conversion frequency is equal to the frequency that DMA transmitting the data. We can set the DMA frequency directly, and the digital data int the buffer will be sent automatically when the buffer has been loaded onto the DMA. So the conversion frequency can reach even several MHz while using DMA mode. But the wave can be distorted if the frequency is too high. - -## How to use the Example - -### Hardware Required - -* A development board with ESP32 or ESP32-S2 SoC - - Note that some ESP32-S2 DevKits have LED on it which is connected to GPIO18 (same pin as DAC channel2), so the output voltage of DAC channel 1 can't go down due the this LED. -* (Optional) An oscilloscope to monitor the output wave - -### Configure the Project - -You can switch the output method by setting the macro `EXAMPLE_DAC_CONTINUOUS_MODE` to `EXAMPLE_DAC_CONTINUOUS_BY_TIMER` or `EXAMPLE_DAC_CONTINUOUS_BY_DMA`. - -There are four waves: sine, triangle, saw tooth and square. These waves are stored in corresponding buffers, and each wave has 400 points as default, which can be modified by `EXAMPLE_ARRAY_LEN`, reduce the point number can increase the wave frequency. - -### Build and Flash - -Build the project and flash it to the board, then run monitor tool to view serial output: - -``` -idf.py -p PORT flash monitor -``` - -(Replace PORT with the name of the serial port to use.) - -(To exit the serial monitor, type ``Ctrl-]``.) - -See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. - -## Example Output - -This example can output sine wave, triangle wave, saw tooth wave and square wave periodically, each wave will last for 3 seconds. - -The DAC channels can be read by ADC channels internally. The ADC read period is 500 ms, the following log is the raw ADC value read from the DAC channels. But since the ADC sample-rate is lower than the DAC output-rate, the sampling value can only indicate that the voltage is changing. - -### Timer Triggered Output - -You can see sine wave, triangle wave, saw tooth wave and square wave at 50 Hz on the oscilloscope. - -``` -I (333) dac continuous: -------------------------------------------------- -I (343) dac continuous: DAC continuous output by Timer -I (343) dac continuous: DAC channel 0 io: GPIO_NUM_25 -I (353) dac continuous: DAC channel 1 io: GPIO_NUM_26 -I (353) dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE -I (363) dac continuous: DAC conversion frequency (Hz): 20000 -I (373) dac continuous: DAC wave frequency (Hz): 50 -I (373) dac continuous: -------------------------------------------------- -DAC channel 0 vaule: 2291 DAC channel 1 vaule: 2331 -DAC channel 0 vaule: 43 DAC channel 1 vaule: 3 -DAC channel 0 vaule: 55 DAC channel 1 vaule: 32 -DAC channel 0 vaule: 57 DAC channel 1 vaule: 33 -DAC channel 0 vaule: 56 DAC channel 1 vaule: 34 -DAC channel 0 vaule: 59 DAC channel 1 vaule: 34 -DAC channel 0 vaule: 56 DAC channel 1 vaule: 33 -I (3393) dac continuous: triangle wave start -DAC channel 0 vaule: 2258 DAC channel 1 vaule: 2243 -DAC channel 0 vaule: 2257 DAC channel 1 vaule: 2242 -DAC channel 0 vaule: 2259 DAC channel 1 vaule: 2242 -DAC channel 0 vaule: 2257 DAC channel 1 vaule: 2245 -DAC channel 0 vaule: 2257 DAC channel 1 vaule: 2243 -DAC channel 0 vaule: 2258 DAC channel 1 vaule: 2240 -I (6393) dac continuous: sawtooth wave start -DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2735 -DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2735 -DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2736 -DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2717 -DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2734 -DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2736 -I (9393) dac continuous: square wave start -DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 -I (12393) dac continuous: sine wave start -DAC channel 0 vaule: 82 DAC channel 1 vaule: 62 -DAC channel 0 vaule: 83 DAC channel 1 vaule: 62 -DAC channel 0 vaule: 82 DAC channel 1 vaule: 62 -DAC channel 0 vaule: 87 DAC channel 1 vaule: 62 -DAC channel 0 vaule: 84 DAC channel 1 vaule: 63 -DAC channel 0 vaule: 83 DAC channel 1 vaule: 64 -... -``` - -### DMA Output - -You can see sine wave, triangle wave, saw tooth wave and square wave at 2 KHz on the oscilloscope. - -``` -I (335) dac continuous: -------------------------------------------------- -I (345) dac continuous: DAC continuous output by DMA -I (345) dac continuous: DAC channel 0 io: GPIO_NUM_25 -I (355) dac continuous: DAC channel 1 io: GPIO_NUM_26 -I (355) dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE -I (365) dac continuous: DAC conversion frequency (Hz): 800000 -I (375) dac continuous: DAC wave frequency (Hz): 2000 -I (375) dac continuous: -------------------------------------------------- -DAC channel 0 vaule: 3131 DAC channel 1 vaule: 1634 -DAC channel 0 vaule: 1712 DAC channel 1 vaule: 2531 -DAC channel 0 vaule: 1716 DAC channel 1 vaule: 2535 -DAC channel 0 vaule: 1715 DAC channel 1 vaule: 2544 -DAC channel 0 vaule: 1715 DAC channel 1 vaule: 2533 -DAC channel 0 vaule: 1712 DAC channel 1 vaule: 2539 -I (3395) dac continuous(DMA): triangle wave start -DAC channel 0 vaule: 592 DAC channel 1 vaule: 1190 -DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3518 -DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3515 -DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3516 -DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3514 -DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3515 -I (6395) dac continuous(DMA): sawtooth wave start -DAC channel 0 vaule: 294 DAC channel 1 vaule: 560 -DAC channel 0 vaule: 2861 DAC channel 1 vaule: 3227 -DAC channel 0 vaule: 2860 DAC channel 1 vaule: 3216 -DAC channel 0 vaule: 2861 DAC channel 1 vaule: 3227 -DAC channel 0 vaule: 2861 DAC channel 1 vaule: 3216 -DAC channel 0 vaule: 2859 DAC channel 1 vaule: 3183 -I (9395) dac continuous(DMA): square wave start -DAC channel 0 vaule: 4095 DAC channel 1 vaule: 4095 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 -I (12395) dac continuous(DMA): sine wave start -DAC channel 0 vaule: 2864 DAC channel 1 vaule: 3691 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 204 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 202 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 193 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 181 -DAC channel 0 vaule: 0 DAC channel 1 vaule: 194 -... -``` diff --git a/examples/peripherals/dac/dac_audio/CMakeLists.txt b/examples/peripherals/dac/dac_continuous/dac_audio/CMakeLists.txt similarity index 100% rename from examples/peripherals/dac/dac_audio/CMakeLists.txt rename to examples/peripherals/dac/dac_continuous/dac_audio/CMakeLists.txt diff --git a/examples/peripherals/dac/dac_audio/README.md b/examples/peripherals/dac/dac_continuous/dac_audio/README.md similarity index 100% rename from examples/peripherals/dac/dac_audio/README.md rename to examples/peripherals/dac/dac_continuous/dac_audio/README.md diff --git a/examples/peripherals/dac/dac_continuous/dac_audio/main/CMakeLists.txt b/examples/peripherals/dac/dac_continuous/dac_audio/main/CMakeLists.txt new file mode 100644 index 0000000000..403d266ed2 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/dac_audio/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRCS "dac_audio_example_main.c" + INCLUDE_DIRS ".") diff --git a/examples/peripherals/dac/dac_continuous/dac_audio/main/Kconfig.projbuild b/examples/peripherals/dac/dac_continuous/dac_audio/main/Kconfig.projbuild new file mode 100644 index 0000000000..c2f2893a66 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/dac_audio/main/Kconfig.projbuild @@ -0,0 +1,21 @@ +menu "Example Configuration" + + choice EXAMPLE_DAC_WRITE_MODE + prompt "Select DAC writing mode" + default EXAMPLE_DAC_WRITE_SYNC + help + DAC writes data synchronously or asynchronously + + config EXAMPLE_DAC_WRITE_SYNC + bool "Synchronous transmitting" + config EXAMPLE_DAC_WRITE_ASYNC + bool "Asynchronous transmitting" + endchoice + + config EXAMPLE_AUDIO_SAMPLE_RATE + int "The audio sample rate (Unit: Hz)" + default 48000 + help + The audio sample rate + +endmenu diff --git a/examples/peripherals/dac/dac_continuous/dac_audio/main/audio_example_file.h b/examples/peripherals/dac/dac_continuous/dac_audio/main/audio_example_file.h new file mode 100644 index 0000000000..b9d25bc5e7 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/dac_audio/main/audio_example_file.h @@ -0,0 +1,5997 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Unlicense OR CC0-1.0 + */ +#include +const unsigned char audio_table[] = { +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7f, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x7f, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7f, 0x7f, 0x80, 0x80, 0x7f, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7f, 0x7e, +0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, +0x7e, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7f, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7f, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7f, 0x7f, 0x7f, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7f, 0x80, 0x80, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7f, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7f, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7f, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x80, 0x7f, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x80, 0x7f, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7f, 0x80, +0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7f, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x7f, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7f, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7f, 0x7e, 0x80, 0x7f, 0x80, +0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7f, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, +0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x7e, 0x7f, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x80, 0x7f, 0x80, 0x80, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7f, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, +0x7e, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7f, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, +0x80, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7f, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7f, 0x7f, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7f, 0x7e, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7f, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7f, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7f, +0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7f, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, +0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, +0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, +0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, +0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, +0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, +0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, +0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, +0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, +0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, +0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, +0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, +0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, +0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, +0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, +0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, +0x7b, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x82, +0x82, 0x83, 0x83, 0x83, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x83, 0x84, +0x84, 0x84, 0x83, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, +0x82, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, +0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7d, +0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, +0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, +0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x82, +0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, +0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, +0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, +0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, +0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, +0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, +0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, +0x82, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, +0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, +0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, +0x82, 0x81, 0x81, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, +0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, +0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, +0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, +0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, +0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, +0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, +0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, +0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, +0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, +0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, +0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, +0x7b, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, +0x82, 0x82, 0x83, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x81, 0x81, +0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, +0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, +0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x83, +0x83, 0x83, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86, 0x84, 0x83, 0x83, 0x81, 0x80, 0x7e, 0x7d, 0x7d, +0x7c, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, +0x80, 0x81, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x81, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, +0x83, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x83, 0x82, 0x82, 0x82, 0x81, +0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7c, +0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, +0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x79, 0x79, 0x7a, +0x7a, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x79, 0x78, 0x78, 0x77, 0x76, 0x76, 0x76, 0x77, 0x77, +0x78, 0x78, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, 0x77, 0x77, 0x76, 0x75, 0x75, 0x75, 0x75, 0x75, +0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, +0x75, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, +0x76, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, +0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, +0x80, 0x82, 0x83, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8c, 0x8e, 0x90, 0x91, 0x93, 0x95, 0x96, +0x97, 0x98, 0x99, 0x9a, 0x9a, 0x9b, 0x9b, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9d, +0x9d, 0x9c, 0x9b, 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9d, 0x9e, 0x9e, 0x9d, 0x9d, +0x9d, 0x9c, 0x9b, 0x9a, 0x98, 0x97, 0x97, 0x97, 0x96, 0x94, 0x94, 0x95, 0x96, 0x97, 0x97, 0x97, +0x98, 0x98, 0x99, 0x9a, 0x9d, 0xa0, 0xa3, 0xa6, 0xa9, 0xab, 0xad, 0xae, 0xae, 0xac, 0xaa, 0xa5, +0x9f, 0x97, 0x8e, 0x86, 0x7d, 0x76, 0x6e, 0x67, 0x62, 0x5d, 0x59, 0x55, 0x51, 0x4f, 0x4c, 0x49, +0x48, 0x48, 0x4a, 0x4c, 0x4f, 0x54, 0x5a, 0x61, 0x68, 0x6f, 0x77, 0x80, 0x87, 0x8c, 0x8f, 0x91, +0x92, 0x92, 0x91, 0x90, 0x8f, 0x8e, 0x8d, 0x8c, 0x8a, 0x88, 0x87, 0x85, 0x82, 0x7e, 0x7c, 0x79, +0x76, 0x73, 0x70, 0x6e, 0x6e, 0x6d, 0x6d, 0x6d, 0x6f, 0x71, 0x74, 0x76, 0x77, 0x78, 0x79, 0x79, +0x77, 0x76, 0x75, 0x74, 0x72, 0x70, 0x6d, 0x6a, 0x68, 0x64, 0x60, 0x5b, 0x55, 0x4f, 0x48, 0x41, +0x3a, 0x35, 0x32, 0x2e, 0x2c, 0x2b, 0x2c, 0x2e, 0x31, 0x34, 0x39, 0x3f, 0x46, 0x4b, 0x50, 0x56, +0x5d, 0x64, 0x6a, 0x70, 0x76, 0x7d, 0x84, 0x88, 0x8b, 0x8f, 0x91, 0x92, 0x91, 0x8f, 0x8d, 0x8a, +0x85, 0x80, 0x7b, 0x78, 0x75, 0x71, 0x6e, 0x6b, 0x6a, 0x68, 0x66, 0x63, 0x62, 0x61, 0x60, 0x5f, +0x5e, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x66, 0x68, 0x6a, 0x6b, 0x6c, 0x6d, 0x6d, 0x6d, 0x6c, +0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x71, 0x73, 0x74, 0x75, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7b, +0x7c, 0x7d, 0x80, 0x82, 0x84, 0x86, 0x87, 0x89, 0x8a, 0x8c, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, 0x90, +0x92, 0x93, 0x95, 0x97, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa5, 0xa7, 0xa7, 0xa8, 0xaa, 0xaa, +0xab, 0xac, 0xae, 0xb1, 0xb3, 0xb4, 0xb5, 0xb6, 0xb6, 0xb7, 0xb8, 0xba, 0xbc, 0xbd, 0xbf, 0xc0, +0xc1, 0xc2, 0xc2, 0xc4, 0xc6, 0xc7, 0xc8, 0xca, 0xca, 0xcc, 0xce, 0xd0, 0xd0, 0xcf, 0xcf, 0xce, +0xcc, 0xc9, 0xc7, 0xc5, 0xc2, 0xbd, 0xb6, 0xaf, 0xa8, 0x9e, 0x93, 0x87, 0x7b, 0x6f, 0x61, 0x54, +0x4a, 0x41, 0x3a, 0x33, 0x2e, 0x29, 0x26, 0x24, 0x22, 0x23, 0x25, 0x29, 0x2e, 0x33, 0x37, 0x3e, +0x47, 0x51, 0x5c, 0x67, 0x74, 0x81, 0x8a, 0x92, 0x9a, 0xa0, 0xa5, 0xa8, 0xaa, 0xab, 0xab, 0xab, +0xab, 0xab, 0xaa, 0xaa, 0xaa, 0xa8, 0xa6, 0xa3, 0xa1, 0x9f, 0x9c, 0x98, 0x93, 0x8f, 0x8b, 0x87, +0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x80, 0x7e, 0x7c, 0x79, 0x76, 0x72, 0x6e, 0x69, 0x64, 0x5f, +0x5a, 0x56, 0x52, 0x4e, 0x4a, 0x46, 0x43, 0x41, 0x3d, 0x3a, 0x37, 0x35, 0x33, 0x31, 0x31, 0x32, +0x35, 0x39, 0x3e, 0x44, 0x4b, 0x52, 0x5a, 0x62, 0x69, 0x70, 0x77, 0x7d, 0x83, 0x88, 0x8d, 0x92, +0x97, 0x9c, 0xa1, 0xa5, 0xa8, 0xab, 0xac, 0xad, 0xac, 0xab, 0xa9, 0xa6, 0xa2, 0x9e, 0x9a, 0x96, +0x93, 0x90, 0x8d, 0x8a, 0x88, 0x85, 0x82, 0x7d, 0x78, 0x72, 0x6b, 0x65, 0x5f, 0x5a, 0x56, 0x52, +0x4e, 0x4b, 0x47, 0x44, 0x41, 0x40, 0x3e, 0x3d, 0x3b, 0x3a, 0x39, 0x37, 0x36, 0x36, 0x38, 0x3b, +0x3f, 0x44, 0x48, 0x4d, 0x52, 0x57, 0x5c, 0x61, 0x66, 0x6a, 0x6d, 0x70, 0x72, 0x75, 0x78, 0x7b, +0x7e, 0x81, 0x83, 0x83, 0x82, 0x82, 0x80, 0x7e, 0x7c, 0x7a, 0x78, 0x76, 0x74, 0x72, 0x70, 0x6e, +0x6c, 0x6b, 0x6b, 0x6b, 0x6c, 0x6e, 0x6f, 0x71, 0x72, 0x73, 0x74, 0x76, 0x77, 0x7a, 0x7e, 0x82, +0x85, 0x87, 0x89, 0x8a, 0x8c, 0x8d, 0x8d, 0x8e, 0x90, 0x90, 0x91, 0x91, 0x90, 0x90, 0x90, 0x8f, +0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x91, 0x94, 0x96, +0x98, 0x99, 0x99, 0x99, 0x9a, 0x99, 0x9b, 0x9d, 0xa0, 0xa1, 0xa3, 0xa5, 0xa7, 0xaa, 0xad, 0xb0, +0xb3, 0xb6, 0xba, 0xbc, 0xbe, 0xc2, 0xc7, 0xca, 0xcd, 0xd0, 0xd2, 0xd4, 0xd6, 0xd9, 0xdc, 0xde, +0xe1, 0xe3, 0xe4, 0xe6, 0xe8, 0xeb, 0xec, 0xed, 0xed, 0xec, 0xe7, 0xe1, 0xd8, 0xcc, 0xbd, 0xab, +0x97, 0x82, 0x6b, 0x57, 0x46, 0x36, 0x28, 0x1c, 0x13, 0xa, 0x2, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0x4, 0xd, 0x1a, 0x2a, 0x3b, 0x4d, 0x60, 0x72, 0x85, 0x94, 0xa1, 0xab, 0xb1, 0xb4, +0xb6, 0xb5, 0xb4, 0xb3, 0xb3, 0xb4, 0xb5, 0xb5, 0xb4, 0xb4, 0xb2, 0xaf, 0xac, 0xa7, 0xa2, 0x9c, +0x96, 0x90, 0x8c, 0x8a, 0x8a, 0x8a, 0x8d, 0x90, 0x94, 0x98, 0x9b, 0x9d, 0x9e, 0x9d, 0x99, 0x94, +0x8e, 0x88, 0x81, 0x7b, 0x75, 0x6e, 0x68, 0x62, 0x5c, 0x55, 0x4e, 0x47, 0x41, 0x39, 0x32, 0x2a, +0x24, 0x1f, 0x1b, 0x1a, 0x1b, 0x1d, 0x22, 0x28, 0x30, 0x3a, 0x44, 0x4f, 0x5a, 0x64, 0x6d, 0x76, +0x7e, 0x87, 0x8e, 0x95, 0x9c, 0xa3, 0xa9, 0xaf, 0xb4, 0xb9, 0xbc, 0xbe, 0xbf, 0xbd, 0xbb, 0xb7, +0xb2, 0xad, 0xa7, 0xa1, 0x9b, 0x96, 0x91, 0x8d, 0x8a, 0x88, 0x86, 0x83, 0x81, 0x7d, 0x7b, 0x77, +0x73, 0x6f, 0x6c, 0x68, 0x65, 0x63, 0x61, 0x5f, 0x5c, 0x59, 0x56, 0x53, 0x4f, 0x4c, 0x48, 0x43, +0x3d, 0x37, 0x30, 0x2c, 0x29, 0x27, 0x27, 0x29, 0x2d, 0x30, 0x34, 0x38, 0x3d, 0x43, 0x49, 0x4f, +0x55, 0x5c, 0x63, 0x6a, 0x70, 0x77, 0x7d, 0x84, 0x89, 0x8d, 0x8f, 0x91, 0x92, 0x91, 0x90, 0x8d, +0x8a, 0x86, 0x81, 0x7b, 0x76, 0x72, 0x6e, 0x6a, 0x67, 0x65, 0x65, 0x64, 0x64, 0x64, 0x64, 0x64, +0x65, 0x67, 0x69, 0x6d, 0x72, 0x77, 0x7c, 0x82, 0x87, 0x8a, 0x8e, 0x91, 0x93, 0x96, 0x98, 0x99, +0x99, 0x98, 0x97, 0x97, 0x96, 0x94, 0x93, 0x92, 0x92, 0x91, 0x90, 0x8e, 0x8d, 0x8b, 0x89, 0x87, +0x86, 0x86, 0x86, 0x88, 0x89, 0x8b, 0x8c, 0x8d, 0x8e, 0x90, 0x91, 0x94, 0x96, 0x99, 0x9b, 0x9d, +0x9e, 0x9f, 0xa1, 0xa3, 0xa6, 0xaa, 0xac, 0xb0, 0xb4, 0xb8, 0xbb, 0xc0, 0xc5, 0xc8, 0xcb, 0xcf, +0xd1, 0xd4, 0xd7, 0xda, 0xdd, 0xe0, 0xe2, 0xe2, 0xe2, 0xe2, 0xe4, 0xe7, 0xeb, 0xed, 0xf0, 0xf1, +0xef, 0xe8, 0xde, 0xd1, 0xc4, 0xb4, 0xa4, 0x93, 0x83, 0x72, 0x63, 0x54, 0x47, 0x3c, 0x33, 0x28, +0x1d, 0x13, 0xb, 0x4, 0xff, 0xff, 0xff, 0xff, 0x2, 0x8, 0x10, 0x1b, 0x2a, 0x3c, 0x4d, 0x5e, +0x6d, 0x7a, 0x86, 0x8e, 0x92, 0x96, 0x9c, 0xa1, 0xa5, 0xa9, 0xae, 0xb3, 0xb7, 0xba, 0xba, 0xba, +0xb9, 0xb5, 0xaf, 0xa8, 0xa3, 0x9f, 0x9b, 0x98, 0x95, 0x94, 0x96, 0x98, 0x99, 0x9a, 0x9d, 0xa0, +0xa0, 0x9e, 0x9b, 0x97, 0x95, 0x91, 0x8d, 0x8a, 0x88, 0x85, 0x82, 0x7c, 0x76, 0x72, 0x6c, 0x65, +0x5d, 0x55, 0x4c, 0x44, 0x3c, 0x33, 0x2c, 0x28, 0x25, 0x23, 0x21, 0x23, 0x26, 0x2b, 0x30, 0x36, +0x3d, 0x44, 0x4b, 0x53, 0x5a, 0x62, 0x6b, 0x74, 0x7c, 0x86, 0x8f, 0x98, 0xa0, 0xa6, 0xac, 0xb2, +0xb7, 0xba, 0xbb, 0xbb, 0xb9, 0xb7, 0xb4, 0xb0, 0xab, 0xa8, 0xa4, 0xa0, 0x9c, 0x98, 0x94, 0x90, +0x8c, 0x88, 0x84, 0x81, 0x7c, 0x78, 0x73, 0x70, 0x6d, 0x6a, 0x67, 0x65, 0x64, 0x63, 0x62, 0x60, +0x5c, 0x58, 0x52, 0x4d, 0x47, 0x41, 0x3b, 0x36, 0x34, 0x32, 0x31, 0x31, 0x32, 0x34, 0x36, 0x38, +0x3b, 0x3f, 0x43, 0x47, 0x4c, 0x52, 0x59, 0x5f, 0x66, 0x6d, 0x74, 0x7b, 0x82, 0x88, 0x8c, 0x8f, +0x91, 0x91, 0x90, 0x8e, 0x8b, 0x87, 0x83, 0x7d, 0x79, 0x75, 0x71, 0x6d, 0x6a, 0x67, 0x64, 0x61, +0x5f, 0x5d, 0x5c, 0x5b, 0x5c, 0x5d, 0x60, 0x63, 0x67, 0x6b, 0x70, 0x76, 0x7b, 0x81, 0x86, 0x8a, +0x8f, 0x92, 0x95, 0x96, 0x97, 0x98, 0x99, 0x98, 0x98, 0x98, 0x98, 0x97, 0x96, 0x95, 0x93, 0x92, +0x91, 0x8f, 0x8c, 0x8b, 0x89, 0x87, 0x86, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x88, 0x8a, 0x8b, +0x8d, 0x8f, 0x92, 0x93, 0x94, 0x96, 0x9a, 0x9b, 0x9c, 0x9f, 0xa1, 0xa2, 0xa4, 0xa6, 0xa8, 0xab, +0xb0, 0xb4, 0xb6, 0xb9, 0xbd, 0xc0, 0xc3, 0xc5, 0xc8, 0xcd, 0xd1, 0xd3, 0xd5, 0xd9, 0xdd, 0xdd, +0xdf, 0xe3, 0xe7, 0xe9, 0xec, 0xee, 0xf0, 0xf2, 0xf2, 0xee, 0xe5, 0xda, 0xcd, 0xbe, 0xae, 0x9d, +0x8d, 0x7c, 0x6b, 0x5a, 0x49, 0x3b, 0x2e, 0x22, 0x17, 0xe, 0x7, 0x0, 0xff, 0xff, 0xff, 0xff, +0x1, 0x8, 0xf, 0x18, 0x26, 0x35, 0x46, 0x57, 0x68, 0x78, 0x87, 0x93, 0x9b, 0xa0, 0xa6, 0xac, +0xb0, 0xb3, 0xb4, 0xb5, 0xb7, 0xb7, 0xb6, 0xb7, 0xb7, 0xb5, 0xb1, 0xac, 0xa8, 0xa4, 0xa0, 0x9c, +0x98, 0x95, 0x94, 0x94, 0x94, 0x95, 0x98, 0x9b, 0x9e, 0x9f, 0x9f, 0x9e, 0x9c, 0x9a, 0x97, 0x93, +0x8f, 0x8a, 0x83, 0x7c, 0x75, 0x6e, 0x68, 0x62, 0x5c, 0x54, 0x4d, 0x45, 0x3c, 0x33, 0x2c, 0x25, +0x20, 0x1c, 0x1a, 0x1a, 0x1d, 0x23, 0x29, 0x2f, 0x37, 0x3f, 0x48, 0x51, 0x5b, 0x64, 0x6d, 0x76, +0x7e, 0x87, 0x8f, 0x98, 0x9f, 0xa6, 0xad, 0xb2, 0xb7, 0xba, 0xbc, 0xbc, 0xbc, 0xba, 0xb7, 0xb3, +0xae, 0xa9, 0xa5, 0xa0, 0x9c, 0x98, 0x94, 0x90, 0x8b, 0x87, 0x83, 0x7e, 0x7b, 0x78, 0x75, 0x72, +0x6f, 0x6d, 0x6a, 0x67, 0x64, 0x61, 0x5f, 0x5b, 0x58, 0x53, 0x4e, 0x48, 0x43, 0x3c, 0x36, 0x31, +0x2e, 0x2b, 0x2b, 0x2b, 0x2c, 0x2e, 0x32, 0x35, 0x39, 0x3e, 0x44, 0x4b, 0x52, 0x5a, 0x61, 0x69, +0x71, 0x78, 0x80, 0x87, 0x8c, 0x90, 0x93, 0x95, 0x95, 0x94, 0x92, 0x8f, 0x8a, 0x85, 0x7e, 0x79, +0x73, 0x6d, 0x68, 0x64, 0x61, 0x5d, 0x5a, 0x58, 0x56, 0x55, 0x55, 0x56, 0x58, 0x5c, 0x60, 0x64, +0x69, 0x6f, 0x74, 0x7a, 0x81, 0x86, 0x8b, 0x90, 0x95, 0x98, 0x9a, 0x9b, 0x9c, 0x9b, 0x9a, 0x99, +0x98, 0x97, 0x97, 0x96, 0x94, 0x92, 0x91, 0x8f, 0x8d, 0x8b, 0x89, 0x88, 0x87, 0x86, 0x85, 0x85, +0x86, 0x86, 0x87, 0x88, 0x8a, 0x8b, 0x8d, 0x8f, 0x90, 0x92, 0x93, 0x94, 0x96, 0x96, 0x97, 0x99, +0x9b, 0x9b, 0x9b, 0x9d, 0x9e, 0x9f, 0xa1, 0xa5, 0xa7, 0xac, 0xb2, 0xb6, 0xb9, 0xbe, 0xc2, 0xc5, +0xc8, 0xce, 0xd4, 0xda, 0xdd, 0xe1, 0xe5, 0xe8, 0xe8, 0xe8, 0xea, 0xec, 0xed, 0xef, 0xf1, 0xf3, +0xf3, 0xed, 0xe3, 0xd5, 0xc5, 0xb5, 0xa4, 0x93, 0x83, 0x73, 0x65, 0x56, 0x47, 0x3b, 0x31, 0x26, +0x1d, 0x15, 0xe, 0x7, 0x3, 0xff, 0xff, 0x0, 0x5, 0xb, 0x12, 0x1c, 0x28, 0x37, 0x48, 0x58, +0x68, 0x77, 0x85, 0x8d, 0x92, 0x95, 0x99, 0x9d, 0xa1, 0xa4, 0xa8, 0xac, 0xb0, 0xb4, 0xb6, 0xb8, +0xb9, 0xb8, 0xb4, 0xaf, 0xaa, 0xa6, 0xa2, 0x9f, 0x9b, 0x9a, 0x9b, 0x9c, 0x9d, 0x9f, 0xa2, 0xa6, +0xa7, 0xa6, 0xa3, 0x9f, 0x9c, 0x98, 0x92, 0x8d, 0x88, 0x84, 0x7d, 0x77, 0x71, 0x6c, 0x67, 0x61, +0x59, 0x51, 0x4a, 0x42, 0x3a, 0x31, 0x2a, 0x24, 0x20, 0x1c, 0x1b, 0x1c, 0x20, 0x25, 0x2b, 0x31, +0x39, 0x41, 0x49, 0x51, 0x59, 0x62, 0x6a, 0x73, 0x7c, 0x85, 0x8d, 0x95, 0x9d, 0xa5, 0xab, 0xb1, +0xb7, 0xbb, 0xbd, 0xbd, 0xbd, 0xbb, 0xb7, 0xb3, 0xaf, 0xab, 0xa7, 0xa3, 0xa0, 0x9c, 0x98, 0x95, +0x91, 0x8d, 0x89, 0x86, 0x83, 0x7e, 0x79, 0x75, 0x70, 0x6c, 0x69, 0x66, 0x64, 0x62, 0x5f, 0x5c, +0x58, 0x52, 0x4d, 0x46, 0x3f, 0x38, 0x32, 0x2d, 0x29, 0x27, 0x25, 0x26, 0x28, 0x2b, 0x2f, 0x35, +0x3a, 0x40, 0x46, 0x4e, 0x55, 0x5c, 0x63, 0x6b, 0x73, 0x7a, 0x82, 0x89, 0x8f, 0x94, 0x98, 0x9a, +0x9a, 0x99, 0x96, 0x92, 0x8c, 0x87, 0x81, 0x79, 0x73, 0x6d, 0x68, 0x63, 0x60, 0x5d, 0x5a, 0x58, +0x57, 0x56, 0x56, 0x57, 0x59, 0x5b, 0x5f, 0x64, 0x68, 0x6d, 0x74, 0x7b, 0x82, 0x88, 0x8e, 0x93, +0x97, 0x99, 0x9a, 0x9b, 0x9a, 0x99, 0x98, 0x97, 0x96, 0x95, 0x94, 0x92, 0x90, 0x8f, 0x8d, 0x8c, +0x8a, 0x88, 0x87, 0x85, 0x84, 0x83, 0x82, 0x82, 0x83, 0x84, 0x86, 0x88, 0x89, 0x8c, 0x8f, 0x91, +0x92, 0x93, 0x94, 0x95, 0x95, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9b, 0x9d, 0xa0, 0xa3, 0xa5, 0xa7, +0xab, 0xae, 0xb1, 0xb5, 0xb9, 0xbe, 0xc3, 0xc9, 0xcf, 0xd4, 0xd9, 0xdf, 0xe4, 0xe7, 0xe9, 0xeb, +0xed, 0xed, 0xed, 0xee, 0xef, 0xf0, 0xf0, 0xed, 0xe6, 0xdd, 0xd2, 0xc3, 0xb3, 0xa4, 0x95, 0x86, +0x74, 0x62, 0x51, 0x44, 0x38, 0x2c, 0x21, 0x19, 0x13, 0xd, 0x8, 0x4, 0x2, 0x3, 0x5, 0x9, +0xe, 0x14, 0x1e, 0x29, 0x37, 0x46, 0x56, 0x66, 0x74, 0x80, 0x88, 0x8f, 0x96, 0x9c, 0xa0, 0xa3, +0xa7, 0xab, 0xae, 0xb0, 0xb1, 0xb4, 0xb6, 0xb7, 0xb5, 0xb2, 0xaf, 0xac, 0xa9, 0xa5, 0xa2, 0x9f, +0x9e, 0x9d, 0x9b, 0x9b, 0x9d, 0x9f, 0xa1, 0xa2, 0xa1, 0xa0, 0x9e, 0x9c, 0x98, 0x94, 0x90, 0x8c, +0x86, 0x7e, 0x77, 0x71, 0x6b, 0x64, 0x5e, 0x56, 0x50, 0x4a, 0x44, 0x3c, 0x36, 0x30, 0x2a, 0x25, +0x22, 0x20, 0x21, 0x23, 0x27, 0x2c, 0x32, 0x3a, 0x41, 0x49, 0x51, 0x5a, 0x63, 0x6b, 0x74, 0x7b, +0x84, 0x8c, 0x93, 0x9a, 0xa1, 0xa7, 0xad, 0xb2, 0xb6, 0xb9, 0xbb, 0xbb, 0xba, 0xb8, 0xb5, 0xb0, +0xac, 0xa8, 0xa4, 0xa0, 0x9c, 0x98, 0x95, 0x91, 0x8d, 0x8a, 0x85, 0x81, 0x7b, 0x75, 0x71, 0x6d, +0x6a, 0x67, 0x66, 0x64, 0x63, 0x62, 0x60, 0x5e, 0x5a, 0x56, 0x51, 0x4b, 0x44, 0x3e, 0x38, 0x33, +0x2e, 0x2b, 0x2a, 0x2a, 0x2c, 0x2f, 0x32, 0x37, 0x3b, 0x40, 0x46, 0x4b, 0x51, 0x57, 0x5e, 0x66, +0x6d, 0x75, 0x7c, 0x85, 0x8c, 0x92, 0x97, 0x9a, 0x9c, 0x9b, 0x99, 0x96, 0x91, 0x8b, 0x83, 0x7b, +0x75, 0x6f, 0x69, 0x65, 0x61, 0x5e, 0x5c, 0x5a, 0x58, 0x56, 0x56, 0x57, 0x59, 0x5b, 0x5f, 0x64, +0x6a, 0x6f, 0x76, 0x7d, 0x84, 0x8a, 0x8f, 0x93, 0x97, 0x9a, 0x9c, 0x9d, 0x9e, 0x9d, 0x9c, 0x9b, +0x99, 0x98, 0x96, 0x94, 0x93, 0x91, 0x8e, 0x8c, 0x89, 0x87, 0x84, 0x82, 0x80, 0x7e, 0x7c, 0x7c, +0x7b, 0x7c, 0x7d, 0x80, 0x82, 0x84, 0x87, 0x89, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x95, 0x95, 0x97, +0x9a, 0x9c, 0x9e, 0xa1, 0xa5, 0xa8, 0xaa, 0xac, 0xb1, 0xb5, 0xb8, 0xbd, 0xc2, 0xc6, 0xcb, 0xd0, +0xd4, 0xd9, 0xdf, 0xe3, 0xe6, 0xe9, 0xea, 0xec, 0xee, 0xf0, 0xf0, 0xf1, 0xf1, 0xee, 0xe8, 0xe0, +0xd6, 0xcb, 0xbf, 0xb0, 0xa1, 0x91, 0x7e, 0x6c, 0x5a, 0x48, 0x38, 0x2b, 0x1e, 0x13, 0xb, 0x5, +0x1, 0xff, 0xff, 0xff, 0x0, 0x4, 0x8, 0xd, 0x15, 0x20, 0x2e, 0x3c, 0x4b, 0x5b, 0x6c, 0x7b, +0x89, 0x94, 0x9d, 0xa5, 0xaa, 0xad, 0xae, 0xae, 0xaf, 0xb0, 0xaf, 0xaf, 0xaf, 0xb1, 0xb1, 0xb0, +0xae, 0xad, 0xac, 0xa9, 0xa5, 0xa2, 0x9f, 0x9d, 0x9c, 0x9a, 0x9b, 0x9d, 0xa0, 0xa3, 0xa4, 0xa6, +0xa7, 0xa6, 0xa4, 0xa0, 0x9b, 0x96, 0x8f, 0x87, 0x7e, 0x76, 0x6e, 0x67, 0x5f, 0x58, 0x51, 0x4b, +0x44, 0x3d, 0x35, 0x2e, 0x28, 0x23, 0x1f, 0x1c, 0x1a, 0x1b, 0x1f, 0x24, 0x2a, 0x32, 0x3b, 0x45, +0x4f, 0x58, 0x62, 0x6c, 0x75, 0x7d, 0x86, 0x8e, 0x96, 0x9e, 0xa5, 0xab, 0xb0, 0xb5, 0xb9, 0xbc, +0xbe, 0xbf, 0xbe, 0xbc, 0xb8, 0xb3, 0xae, 0xa9, 0xa4, 0x9f, 0x9a, 0x96, 0x92, 0x8f, 0x8b, 0x89, +0x87, 0x84, 0x81, 0x7d, 0x7a, 0x76, 0x72, 0x6e, 0x6a, 0x66, 0x64, 0x62, 0x61, 0x60, 0x5f, 0x5e, +0x5c, 0x5a, 0x57, 0x52, 0x4c, 0x46, 0x3f, 0x39, 0x34, 0x31, 0x30, 0x31, 0x33, 0x35, 0x37, 0x3a, +0x3d, 0x41, 0x46, 0x4c, 0x52, 0x58, 0x5e, 0x63, 0x68, 0x6e, 0x74, 0x7a, 0x81, 0x87, 0x8c, 0x90, +0x93, 0x95, 0x94, 0x92, 0x8e, 0x88, 0x80, 0x78, 0x72, 0x6d, 0x69, 0x65, 0x63, 0x61, 0x5f, 0x5d, +0x5b, 0x5b, 0x5b, 0x5c, 0x5e, 0x60, 0x64, 0x69, 0x6f, 0x74, 0x7a, 0x82, 0x88, 0x8d, 0x92, 0x97, +0x9c, 0x9f, 0xa2, 0xa2, 0xa2, 0xa0, 0x9e, 0x9c, 0x99, 0x97, 0x94, 0x91, 0x8f, 0x8c, 0x89, 0x87, +0x84, 0x82, 0x7d, 0x7a, 0x77, 0x76, 0x75, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7b, 0x7e, 0x83, 0x86, +0x8a, 0x8e, 0x90, 0x91, 0x93, 0x95, 0x96, 0x98, 0x9a, 0x9d, 0x9e, 0xa0, 0xa4, 0xa7, 0xaa, 0xad, +0xb1, 0xb5, 0xb9, 0xbd, 0xc2, 0xc9, 0xce, 0xd1, 0xd6, 0xdd, 0xe1, 0xe3, 0xe8, 0xec, 0xed, 0xef, +0xf1, 0xf2, 0xf2, 0xf1, 0xf0, 0xed, 0xe7, 0xdd, 0xd1, 0xc4, 0xb5, 0xa5, 0x94, 0x83, 0x70, 0x5d, +0x4a, 0x39, 0x29, 0x1c, 0x12, 0x9, 0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1, 0x6, 0xd, 0x15, +0x1e, 0x2b, 0x39, 0x48, 0x58, 0x68, 0x79, 0x88, 0x94, 0x9d, 0xa4, 0xaa, 0xad, 0xaf, 0xaf, 0xae, +0xae, 0xad, 0xad, 0xac, 0xac, 0xac, 0xad, 0xac, 0xa9, 0xa8, 0xa7, 0xa5, 0xa1, 0x9f, 0x9e, 0x9e, +0x9e, 0x9e, 0x9f, 0xa2, 0xa5, 0xa8, 0xaa, 0xab, 0xac, 0xac, 0xaa, 0xa6, 0xa0, 0x9a, 0x93, 0x8b, +0x82, 0x78, 0x70, 0x69, 0x61, 0x59, 0x52, 0x4b, 0x44, 0x3c, 0x34, 0x2d, 0x28, 0x23, 0x1f, 0x1c, +0x1d, 0x1f, 0x23, 0x27, 0x2e, 0x35, 0x3e, 0x47, 0x51, 0x5a, 0x64, 0x6e, 0x77, 0x80, 0x88, 0x8f, +0x96, 0x9c, 0xa1, 0xa7, 0xac, 0xb0, 0xb3, 0xb6, 0xb7, 0xb7, 0xb6, 0xb4, 0xb1, 0xae, 0xab, 0xa8, +0xa4, 0xa0, 0x9d, 0x9a, 0x97, 0x94, 0x92, 0x90, 0x8e, 0x8c, 0x89, 0x86, 0x83, 0x80, 0x7b, 0x77, +0x72, 0x6e, 0x69, 0x65, 0x61, 0x5e, 0x5b, 0x58, 0x55, 0x50, 0x4b, 0x44, 0x3d, 0x37, 0x32, 0x2f, +0x2d, 0x2c, 0x2c, 0x2d, 0x2f, 0x31, 0x35, 0x3a, 0x40, 0x46, 0x4e, 0x55, 0x5c, 0x62, 0x69, 0x6e, +0x73, 0x78, 0x7c, 0x82, 0x86, 0x89, 0x8d, 0x8f, 0x90, 0x8f, 0x8d, 0x8a, 0x85, 0x7e, 0x77, 0x71, +0x6b, 0x67, 0x63, 0x60, 0x5e, 0x5d, 0x5d, 0x5d, 0x5d, 0x5e, 0x61, 0x64, 0x68, 0x6c, 0x71, 0x75, +0x7a, 0x80, 0x84, 0x8a, 0x8f, 0x95, 0x9a, 0x9d, 0xa0, 0xa2, 0xa2, 0xa1, 0x9f, 0x9d, 0x9b, 0x99, +0x96, 0x93, 0x90, 0x8e, 0x8c, 0x8a, 0x88, 0x85, 0x83, 0x81, 0x7e, 0x7c, 0x7b, 0x7a, 0x7a, 0x79, +0x79, 0x7a, 0x7c, 0x7e, 0x81, 0x84, 0x87, 0x8a, 0x8b, 0x8d, 0x8e, 0x90, 0x91, 0x92, 0x93, 0x94, +0x97, 0x9a, 0x9e, 0xa1, 0xa5, 0xaa, 0xae, 0xb2, 0xb6, 0xbb, 0xc1, 0xc7, 0xcc, 0xd1, 0xd8, 0xde, +0xe2, 0xe6, 0xeb, 0xef, 0xf1, 0xf3, 0xf4, 0xf5, 0xf7, 0xf7, 0xf4, 0xef, 0xe5, 0xd9, 0xcb, 0xbb, +0xa9, 0x97, 0x87, 0x74, 0x61, 0x4d, 0x3b, 0x2c, 0x1f, 0x14, 0xc, 0x8, 0x5, 0x1, 0xff, 0xff, +0x0, 0x6, 0xb, 0x10, 0x17, 0x21, 0x2d, 0x3b, 0x4a, 0x5a, 0x6d, 0x7e, 0x8c, 0x95, 0x9d, 0xa4, +0xa9, 0xac, 0xad, 0xac, 0xac, 0xaa, 0xa8, 0xa6, 0xa6, 0xa8, 0xa9, 0xa9, 0xa8, 0xa6, 0xa5, 0xa3, +0xa0, 0x9d, 0x9b, 0x9a, 0x99, 0x98, 0x99, 0x9d, 0xa2, 0xa7, 0xab, 0xad, 0xaf, 0xb1, 0xb0, 0xad, +0xa8, 0xa4, 0x9e, 0x96, 0x8e, 0x84, 0x7b, 0x74, 0x6d, 0x65, 0x5d, 0x56, 0x4f, 0x47, 0x3e, 0x35, +0x2e, 0x27, 0x21, 0x1c, 0x19, 0x1a, 0x1d, 0x22, 0x27, 0x2f, 0x38, 0x41, 0x4b, 0x54, 0x5e, 0x68, +0x71, 0x7a, 0x82, 0x8a, 0x91, 0x99, 0x9f, 0xa5, 0xaa, 0xaf, 0xb4, 0xb6, 0xb7, 0xb8, 0xb7, 0xb6, +0xb3, 0xaf, 0xab, 0xa8, 0xa4, 0xa0, 0x9b, 0x97, 0x94, 0x92, 0x8f, 0x8c, 0x8b, 0x89, 0x88, 0x86, +0x84, 0x82, 0x80, 0x7c, 0x78, 0x74, 0x71, 0x6e, 0x6a, 0x66, 0x63, 0x5e, 0x59, 0x52, 0x4c, 0x46, +0x41, 0x3d, 0x3a, 0x36, 0x33, 0x30, 0x2d, 0x2b, 0x2c, 0x2e, 0x32, 0x38, 0x3f, 0x47, 0x4f, 0x56, +0x5c, 0x63, 0x6a, 0x70, 0x76, 0x7c, 0x82, 0x87, 0x8b, 0x8e, 0x90, 0x91, 0x91, 0x8f, 0x8c, 0x88, +0x84, 0x7e, 0x79, 0x73, 0x6d, 0x67, 0x62, 0x5d, 0x59, 0x56, 0x55, 0x56, 0x57, 0x59, 0x5c, 0x5f, +0x63, 0x66, 0x6a, 0x6e, 0x72, 0x78, 0x7d, 0x84, 0x8b, 0x91, 0x97, 0x9d, 0xa0, 0xa3, 0xa4, 0xa5, +0xa4, 0xa2, 0xa1, 0x9f, 0x9d, 0x9b, 0x98, 0x96, 0x93, 0x91, 0x8e, 0x8c, 0x8a, 0x88, 0x85, 0x83, +0x81, 0x7e, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x83, 0x85, 0x87, 0x88, 0x89, 0x8a, 0x8b, +0x8b, 0x8d, 0x8f, 0x92, 0x95, 0x98, 0x9b, 0x9e, 0xa0, 0xa3, 0xa8, 0xad, 0xb3, 0xb9, 0xbf, 0xc3, +0xc7, 0xcc, 0xd1, 0xd7, 0xdc, 0xe2, 0xe8, 0xec, 0xef, 0xf2, 0xf5, 0xf8, 0xf9, 0xfa, 0xf7, 0xf0, +0xe5, 0xd8, 0xca, 0xba, 0xa9, 0x98, 0x87, 0x73, 0x5e, 0x4a, 0x3a, 0x2b, 0x1f, 0x16, 0xf, 0xa, +0x5, 0x1, 0xff, 0xff, 0x1, 0x6, 0xc, 0x13, 0x1a, 0x26, 0x34, 0x43, 0x52, 0x63, 0x74, 0x84, +0x90, 0x98, 0x9f, 0xa4, 0xa8, 0xaa, 0xaa, 0xa9, 0xa7, 0xa6, 0xa4, 0xa3, 0xa3, 0xa4, 0xa5, 0xa4, +0xa1, 0x9e, 0x9d, 0x9b, 0x98, 0x95, 0x94, 0x95, 0x96, 0x97, 0x9a, 0x9f, 0xa5, 0xaa, 0xaf, 0xb2, +0xb4, 0xb5, 0xb4, 0xb1, 0xac, 0xa5, 0x9f, 0x97, 0x8e, 0x84, 0x7b, 0x73, 0x6c, 0x64, 0x5c, 0x54, +0x4c, 0x43, 0x3a, 0x31, 0x2a, 0x23, 0x1e, 0x1b, 0x1a, 0x1c, 0x20, 0x25, 0x2d, 0x35, 0x3f, 0x49, +0x53, 0x5d, 0x67, 0x70, 0x78, 0x80, 0x87, 0x8e, 0x94, 0x9a, 0xa0, 0xa5, 0xab, 0xaf, 0xb2, 0xb4, +0xb4, 0xb2, 0xb0, 0xad, 0xa9, 0xa5, 0xa0, 0x9c, 0x99, 0x95, 0x92, 0x90, 0x8e, 0x8d, 0x8c, 0x8b, +0x8a, 0x88, 0x86, 0x85, 0x83, 0x81, 0x7d, 0x7b, 0x79, 0x77, 0x75, 0x73, 0x71, 0x6f, 0x6c, 0x69, +0x65, 0x60, 0x5a, 0x53, 0x4c, 0x44, 0x3d, 0x37, 0x32, 0x2e, 0x2d, 0x2d, 0x2e, 0x30, 0x33, 0x36, +0x3a, 0x3f, 0x45, 0x4b, 0x53, 0x5a, 0x62, 0x6a, 0x71, 0x78, 0x7e, 0x85, 0x8a, 0x8e, 0x92, 0x95, +0x96, 0x96, 0x95, 0x92, 0x8d, 0x86, 0x7e, 0x77, 0x70, 0x6a, 0x65, 0x62, 0x5f, 0x5e, 0x5c, 0x5c, +0x5c, 0x5c, 0x5c, 0x5e, 0x61, 0x64, 0x68, 0x6c, 0x73, 0x79, 0x82, 0x88, 0x8f, 0x95, 0x9b, 0x9f, +0xa2, 0xa5, 0xa7, 0xa8, 0xa8, 0xa6, 0xa4, 0xa1, 0x9e, 0x9b, 0x98, 0x96, 0x93, 0x91, 0x8f, 0x8c, +0x8a, 0x87, 0x84, 0x82, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x81, 0x84, 0x86, 0x88, 0x8a, +0x8c, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa2, 0xa8, +0xae, 0xb3, 0xb7, 0xbd, 0xc3, 0xc8, 0xcc, 0xd1, 0xd7, 0xdc, 0xe0, 0xe3, 0xe7, 0xeb, 0xef, 0xf2, +0xf5, 0xf3, 0xed, 0xe5, 0xda, 0xcd, 0xbd, 0xad, 0x9c, 0x89, 0x72, 0x5d, 0x49, 0x39, 0x2b, 0x20, +0x19, 0x14, 0x11, 0xe, 0xa, 0x8, 0x9, 0xc, 0xf, 0x13, 0x18, 0x20, 0x2c, 0x39, 0x48, 0x5a, +0x6d, 0x7e, 0x8e, 0x99, 0xa1, 0xa8, 0xac, 0xad, 0xab, 0xa8, 0xa4, 0xa1, 0x9d, 0x9a, 0x9a, 0x9b, +0x9d, 0x9e, 0x9e, 0x9c, 0x9b, 0x98, 0x94, 0x8f, 0x8c, 0x8b, 0x8a, 0x89, 0x8b, 0x8f, 0x96, 0x9d, +0xa4, 0xaa, 0xb0, 0xb3, 0xb5, 0xb4, 0xb0, 0xaa, 0xa3, 0x9c, 0x94, 0x8c, 0x85, 0x7e, 0x79, 0x73, +0x6c, 0x66, 0x5f, 0x57, 0x4d, 0x43, 0x3b, 0x32, 0x2b, 0x25, 0x21, 0x20, 0x21, 0x25, 0x2a, 0x32, +0x3b, 0x44, 0x4e, 0x57, 0x60, 0x69, 0x71, 0x78, 0x80, 0x86, 0x8c, 0x92, 0x98, 0x9d, 0xa3, 0xa8, +0xac, 0xb0, 0xb2, 0xb2, 0xb2, 0xb0, 0xac, 0xa8, 0xa3, 0x9e, 0x9a, 0x96, 0x92, 0x90, 0x8e, 0x8d, +0x8d, 0x8c, 0x8d, 0x8d, 0x8d, 0x8c, 0x8b, 0x8a, 0x87, 0x85, 0x82, 0x7d, 0x7a, 0x78, 0x75, 0x73, +0x71, 0x6f, 0x6d, 0x6a, 0x67, 0x63, 0x5e, 0x59, 0x54, 0x4d, 0x46, 0x40, 0x3b, 0x36, 0x33, 0x33, +0x34, 0x36, 0x3a, 0x3e, 0x42, 0x45, 0x49, 0x4c, 0x51, 0x57, 0x5c, 0x62, 0x68, 0x6e, 0x75, 0x7b, +0x82, 0x88, 0x8c, 0x90, 0x93, 0x94, 0x93, 0x92, 0x8f, 0x8b, 0x86, 0x80, 0x79, 0x74, 0x6f, 0x6b, +0x68, 0x67, 0x66, 0x65, 0x65, 0x64, 0x63, 0x63, 0x62, 0x62, 0x64, 0x66, 0x6a, 0x6f, 0x75, 0x7b, +0x83, 0x89, 0x8e, 0x92, 0x95, 0x97, 0x99, 0x9a, 0x9b, 0x9b, 0x9c, 0x9b, 0x9a, 0x99, 0x98, 0x97, +0x95, 0x93, 0x92, 0x90, 0x8e, 0x8b, 0x88, 0x85, 0x83, 0x82, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x82, +0x83, 0x85, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8f, 0x91, 0x94, +0x97, 0x9b, 0x9e, 0xa0, 0xa3, 0xa5, 0xa7, 0xac, 0xb1, 0xb7, 0xbd, 0xc3, 0xc9, 0xce, 0xd4, 0xda, +0xdf, 0xe4, 0xe7, 0xea, 0xec, 0xed, 0xed, 0xea, 0xe4, 0xdc, 0xd0, 0xc0, 0xae, 0x9c, 0x89, 0x75, +0x63, 0x52, 0x42, 0x35, 0x2b, 0x22, 0x1c, 0x18, 0x15, 0x12, 0xf, 0xf, 0x10, 0x12, 0x17, 0x1e, +0x26, 0x31, 0x3e, 0x4c, 0x5b, 0x6c, 0x7d, 0x8d, 0x9a, 0xa3, 0xa7, 0xaa, 0xaa, 0xa8, 0xa5, 0xa1, +0x9d, 0x9a, 0x97, 0x96, 0x97, 0x98, 0x9a, 0x9a, 0x98, 0x96, 0x93, 0x90, 0x8c, 0x89, 0x88, 0x88, +0x89, 0x8c, 0x91, 0x99, 0xa1, 0xaa, 0xb0, 0xb5, 0xb8, 0xb9, 0xb7, 0xb2, 0xac, 0xa6, 0x9f, 0x97, +0x8f, 0x88, 0x82, 0x7c, 0x75, 0x6f, 0x67, 0x60, 0x57, 0x4e, 0x44, 0x3a, 0x32, 0x2a, 0x24, 0x20, +0x20, 0x22, 0x28, 0x2f, 0x37, 0x41, 0x4b, 0x54, 0x5c, 0x64, 0x6c, 0x73, 0x7a, 0x82, 0x87, 0x8d, +0x93, 0x99, 0x9e, 0xa2, 0xa6, 0xa9, 0xab, 0xab, 0xaa, 0xa9, 0xa6, 0xa2, 0x9e, 0x9a, 0x96, 0x92, +0x8f, 0x8d, 0x8c, 0x8c, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x90, 0x90, 0x8f, 0x8e, 0x8c, 0x8b, 0x88, +0x85, 0x83, 0x80, 0x7c, 0x79, 0x76, 0x72, 0x6e, 0x69, 0x64, 0x5e, 0x58, 0x52, 0x4c, 0x46, 0x41, +0x3d, 0x39, 0x37, 0x37, 0x38, 0x3a, 0x3c, 0x40, 0x44, 0x49, 0x4d, 0x52, 0x58, 0x5d, 0x62, 0x67, +0x6d, 0x72, 0x77, 0x7c, 0x81, 0x85, 0x89, 0x8c, 0x8e, 0x8e, 0x8e, 0x8c, 0x88, 0x84, 0x80, 0x7a, +0x76, 0x72, 0x6f, 0x6c, 0x6a, 0x68, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x68, 0x6a, 0x6b, 0x6d, +0x70, 0x74, 0x78, 0x7c, 0x81, 0x86, 0x8a, 0x8d, 0x90, 0x91, 0x93, 0x93, 0x92, 0x91, 0x90, 0x8f, +0x8f, 0x8f, 0x8e, 0x8e, 0x8e, 0x8e, 0x8d, 0x8c, 0x8b, 0x8a, 0x88, 0x87, 0x85, 0x83, 0x82, 0x82, +0x82, 0x82, 0x83, 0x85, 0x86, 0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8b, +0x8b, 0x8c, 0x8c, 0x8d, 0x8f, 0x91, 0x92, 0x94, 0x96, 0x98, 0x9b, 0x9c, 0x9f, 0xa3, 0xa8, 0xac, +0xb2, 0xb8, 0xbe, 0xc5, 0xca, 0xcf, 0xd5, 0xda, 0xdd, 0xe1, 0xe5, 0xe7, 0xe9, 0xea, 0xe7, 0xe1, +0xd9, 0xce, 0xbf, 0xae, 0x9c, 0x8a, 0x77, 0x65, 0x54, 0x46, 0x3a, 0x31, 0x2a, 0x24, 0x1f, 0x1c, +0x1a, 0x18, 0x16, 0x16, 0x18, 0x1b, 0x20, 0x28, 0x31, 0x3f, 0x4d, 0x5c, 0x6c, 0x7b, 0x8a, 0x95, +0x9c, 0xa0, 0xa3, 0xa3, 0xa1, 0x9d, 0x9a, 0x97, 0x96, 0x95, 0x94, 0x95, 0x97, 0x98, 0x98, 0x97, +0x95, 0x93, 0x91, 0x8d, 0x8a, 0x89, 0x8a, 0x8d, 0x91, 0x97, 0x9f, 0xa7, 0xaf, 0xb5, 0xb9, 0xbb, +0xbb, 0xb9, 0xb4, 0xae, 0xa7, 0xa0, 0x98, 0x90, 0x89, 0x83, 0x7b, 0x74, 0x6c, 0x64, 0x5b, 0x52, +0x49, 0x40, 0x37, 0x2f, 0x29, 0x24, 0x22, 0x22, 0x25, 0x2a, 0x2f, 0x36, 0x3e, 0x47, 0x50, 0x59, +0x62, 0x6a, 0x71, 0x79, 0x81, 0x87, 0x8d, 0x93, 0x98, 0x9d, 0xa0, 0xa4, 0xa7, 0xa8, 0xa9, 0xaa, +0xa9, 0xa8, 0xa6, 0xa4, 0xa1, 0x9e, 0x9c, 0x99, 0x97, 0x95, 0x93, 0x93, 0x92, 0x92, 0x92, 0x92, +0x92, 0x92, 0x91, 0x8f, 0x8d, 0x8a, 0x87, 0x83, 0x7d, 0x79, 0x76, 0x73, 0x70, 0x6d, 0x6a, 0x66, +0x62, 0x5d, 0x58, 0x53, 0x4e, 0x48, 0x43, 0x3f, 0x3b, 0x39, 0x38, 0x39, 0x3b, 0x3e, 0x42, 0x47, +0x4d, 0x52, 0x58, 0x5d, 0x61, 0x66, 0x6a, 0x6f, 0x74, 0x79, 0x7d, 0x82, 0x86, 0x88, 0x8a, 0x8b, +0x8b, 0x89, 0x87, 0x84, 0x80, 0x7b, 0x77, 0x73, 0x70, 0x6d, 0x6a, 0x68, 0x67, 0x66, 0x66, 0x67, +0x67, 0x68, 0x6a, 0x6c, 0x6d, 0x6f, 0x72, 0x75, 0x78, 0x7b, 0x80, 0x84, 0x88, 0x8b, 0x8d, 0x8f, +0x90, 0x90, 0x90, 0x8f, 0x8d, 0x8c, 0x8c, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x89, 0x88, 0x87, +0x86, 0x84, 0x83, 0x82, 0x81, 0x82, 0x82, 0x82, 0x83, 0x85, 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, +0x88, 0x87, 0x86, 0x86, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x92, 0x93, +0x95, 0x98, 0x9b, 0x9e, 0xa1, 0xa4, 0xa9, 0xaf, 0xb4, 0xba, 0xc0, 0xc5, 0xc9, 0xcc, 0xd0, 0xd3, +0xd6, 0xd9, 0xdc, 0xde, 0xdf, 0xe0, 0xdf, 0xdb, 0xd4, 0xca, 0xbc, 0xac, 0x99, 0x85, 0x71, 0x60, +0x51, 0x45, 0x3b, 0x33, 0x2e, 0x2a, 0x28, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x23, 0x27, 0x2d, +0x35, 0x40, 0x4e, 0x5c, 0x6b, 0x79, 0x87, 0x93, 0x9c, 0xa0, 0xa1, 0xa0, 0x9d, 0x97, 0x92, 0x8e, +0x8b, 0x8b, 0x8c, 0x8e, 0x91, 0x94, 0x97, 0x99, 0x99, 0x97, 0x95, 0x93, 0x90, 0x8e, 0x8d, 0x90, +0x93, 0x98, 0x9e, 0xa5, 0xad, 0xb3, 0xb7, 0xba, 0xba, 0xb8, 0xb4, 0xae, 0xa6, 0x9e, 0x96, 0x8e, +0x86, 0x7e, 0x77, 0x71, 0x6b, 0x63, 0x5c, 0x55, 0x4e, 0x46, 0x3f, 0x38, 0x33, 0x2f, 0x2d, 0x2d, +0x2e, 0x32, 0x38, 0x3e, 0x45, 0x4c, 0x54, 0x5c, 0x63, 0x6a, 0x70, 0x77, 0x7d, 0x83, 0x88, 0x8c, +0x91, 0x94, 0x97, 0x99, 0x9b, 0x9d, 0x9f, 0xa0, 0xa0, 0xa0, 0xa0, 0x9f, 0x9d, 0x9b, 0x9a, 0x98, +0x96, 0x95, 0x94, 0x94, 0x94, 0x95, 0x96, 0x98, 0x99, 0x9a, 0x99, 0x98, 0x95, 0x92, 0x8e, 0x89, +0x84, 0x7e, 0x79, 0x76, 0x72, 0x6f, 0x6b, 0x68, 0x64, 0x5f, 0x5a, 0x55, 0x4f, 0x49, 0x43, 0x3e, +0x3a, 0x37, 0x35, 0x35, 0x37, 0x3b, 0x40, 0x46, 0x4c, 0x51, 0x57, 0x5d, 0x62, 0x66, 0x6a, 0x6e, +0x72, 0x75, 0x79, 0x7d, 0x82, 0x86, 0x89, 0x8c, 0x8d, 0x8d, 0x8b, 0x89, 0x85, 0x81, 0x7c, 0x78, +0x75, 0x72, 0x6f, 0x6e, 0x6d, 0x6d, 0x6d, 0x6e, 0x6f, 0x70, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, +0x77, 0x7a, 0x7c, 0x80, 0x83, 0x86, 0x89, 0x8b, 0x8b, 0x8b, 0x8a, 0x89, 0x87, 0x85, 0x84, 0x83, +0x82, 0x82, 0x82, 0x83, 0x84, 0x85, 0x86, 0x86, 0x87, 0x87, 0x87, 0x86, 0x85, 0x85, 0x85, 0x86, +0x87, 0x88, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x89, 0x87, 0x86, 0x84, 0x82, 0x81, 0x80, 0x81, 0x81, +0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x91, 0x94, 0x96, 0x98, 0x9b, 0x9e, 0xa2, 0xa7, 0xac, +0xb2, 0xb7, 0xbc, 0xc0, 0xc4, 0xc7, 0xc9, 0xcb, 0xcd, 0xcf, 0xd0, 0xd3, 0xd4, 0xd6, 0xd6, 0xd6, +0xd4, 0xcd, 0xc3, 0xb6, 0xa7, 0x96, 0x84, 0x73, 0x65, 0x58, 0x4d, 0x45, 0x3f, 0x3b, 0x38, 0x36, +0x34, 0x33, 0x31, 0x2f, 0x2d, 0x2b, 0x2b, 0x2d, 0x31, 0x37, 0x40, 0x4b, 0x58, 0x65, 0x72, 0x7e, +0x89, 0x90, 0x94, 0x94, 0x92, 0x8e, 0x8a, 0x87, 0x84, 0x83, 0x84, 0x86, 0x8a, 0x8f, 0x93, 0x97, +0x9a, 0x9b, 0x9b, 0x99, 0x98, 0x95, 0x94, 0x94, 0x97, 0x9b, 0xa0, 0xa6, 0xad, 0xb3, 0xb8, 0xbc, +0xbd, 0xbc, 0xb9, 0xb4, 0xad, 0xa5, 0x9c, 0x94, 0x8c, 0x83, 0x7b, 0x74, 0x6e, 0x68, 0x62, 0x5b, +0x55, 0x4e, 0x48, 0x41, 0x3c, 0x37, 0x35, 0x33, 0x34, 0x36, 0x39, 0x3e, 0x44, 0x4a, 0x50, 0x57, +0x5e, 0x64, 0x69, 0x6f, 0x74, 0x78, 0x7c, 0x81, 0x84, 0x86, 0x89, 0x8c, 0x8e, 0x91, 0x93, 0x96, +0x98, 0x9a, 0x9c, 0x9e, 0x9f, 0x9f, 0x9e, 0x9d, 0x9c, 0x9b, 0x9a, 0x99, 0x99, 0x9a, 0x9a, 0x9b, +0x9c, 0x9c, 0x9c, 0x9b, 0x99, 0x96, 0x92, 0x8d, 0x88, 0x82, 0x7b, 0x76, 0x72, 0x6d, 0x6a, 0x67, +0x65, 0x62, 0x5f, 0x5c, 0x58, 0x54, 0x50, 0x4b, 0x46, 0x42, 0x3f, 0x3e, 0x3f, 0x41, 0x44, 0x48, +0x4c, 0x51, 0x55, 0x5a, 0x5f, 0x63, 0x66, 0x69, 0x6c, 0x6f, 0x71, 0x74, 0x77, 0x7a, 0x7e, 0x81, +0x83, 0x84, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x79, 0x77, 0x75, 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, +0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7b, 0x7d, 0x81, 0x83, 0x84, 0x85, 0x86, +0x86, 0x85, 0x84, 0x83, 0x82, 0x81, 0x80, 0x80, 0x80, 0x81, 0x82, 0x82, 0x83, 0x84, 0x85, 0x85, +0x84, 0x83, 0x83, 0x82, 0x81, 0x80, 0x81, 0x82, 0x83, 0x84, 0x84, 0x85, 0x85, 0x85, 0x84, 0x82, +0x80, 0x7e, 0x7c, 0x7a, 0x7a, 0x7a, 0x7b, 0x7c, 0x80, 0x82, 0x85, 0x87, 0x8a, 0x8b, 0x8d, 0x8e, +0x90, 0x92, 0x94, 0x97, 0x9b, 0xa0, 0xa5, 0xaa, 0xaf, 0xb4, 0xb7, 0xba, 0xbd, 0xbf, 0xc0, 0xc1, +0xc1, 0xc2, 0xc2, 0xc2, 0xc3, 0xc5, 0xc6, 0xc8, 0xc9, 0xc9, 0xc8, 0xc5, 0xbe, 0xb5, 0xa9, 0x9b, +0x8c, 0x7d, 0x6f, 0x64, 0x5a, 0x53, 0x4d, 0x49, 0x45, 0x43, 0x41, 0x3f, 0x3d, 0x3b, 0x38, 0x36, +0x34, 0x33, 0x35, 0x39, 0x3e, 0x45, 0x4e, 0x58, 0x63, 0x6e, 0x77, 0x81, 0x87, 0x8c, 0x8d, 0x8c, +0x8a, 0x88, 0x86, 0x85, 0x85, 0x86, 0x89, 0x8d, 0x91, 0x96, 0x9a, 0x9d, 0x9f, 0xa0, 0x9f, 0x9e, +0x9d, 0x9c, 0x9c, 0x9c, 0x9e, 0xa2, 0xa6, 0xab, 0xaf, 0xb4, 0xb7, 0xb8, 0xb7, 0xb3, 0xaf, 0xa9, +0xa1, 0x98, 0x8f, 0x87, 0x7e, 0x77, 0x70, 0x6a, 0x65, 0x61, 0x5c, 0x57, 0x53, 0x4f, 0x4a, 0x46, +0x42, 0x3e, 0x3c, 0x3c, 0x3c, 0x3d, 0x41, 0x45, 0x4a, 0x50, 0x55, 0x5b, 0x61, 0x66, 0x6b, 0x6f, +0x73, 0x76, 0x79, 0x7c, 0x80, 0x83, 0x86, 0x8a, 0x8e, 0x92, 0x96, 0x99, 0x9d, 0x9f, 0xa1, 0xa2, +0xa3, 0xa3, 0xa2, 0xa2, 0xa2, 0xa2, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa1, 0x9f, 0x9d, 0x9a, +0x96, 0x92, 0x8d, 0x87, 0x82, 0x7c, 0x77, 0x72, 0x6e, 0x6b, 0x68, 0x64, 0x61, 0x5c, 0x58, 0x53, +0x4e, 0x4a, 0x47, 0x45, 0x43, 0x42, 0x42, 0x42, 0x44, 0x46, 0x4a, 0x4e, 0x53, 0x58, 0x5c, 0x5f, +0x61, 0x64, 0x66, 0x68, 0x6b, 0x6e, 0x72, 0x76, 0x79, 0x7c, 0x7e, 0x81, 0x82, 0x82, 0x81, 0x80, +0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, +0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, +0x7c, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, +0x84, 0x84, 0x84, 0x83, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x79, 0x79, +0x7a, 0x7b, 0x7d, 0x80, 0x82, 0x85, 0x87, 0x89, 0x8b, 0x8d, 0x8f, 0x92, 0x95, 0x99, 0x9d, 0xa1, +0xa5, 0xa8, 0xab, 0xae, 0xb0, 0xb2, 0xb4, 0xb5, 0xb7, 0xb8, 0xba, 0xbb, 0xbc, 0xbd, 0xbf, 0xbf, +0xbf, 0xbf, 0xc0, 0xc1, 0xc1, 0xc1, 0xc0, 0xbc, 0xb6, 0xad, 0xa3, 0x96, 0x89, 0x7c, 0x72, 0x67, +0x5d, 0x55, 0x50, 0x4b, 0x48, 0x46, 0x44, 0x43, 0x41, 0x3f, 0x3e, 0x3c, 0x3b, 0x3b, 0x3d, 0x3f, +0x43, 0x4a, 0x52, 0x5b, 0x64, 0x6f, 0x79, 0x81, 0x86, 0x89, 0x8a, 0x89, 0x87, 0x84, 0x83, 0x82, +0x82, 0x83, 0x86, 0x8b, 0x90, 0x96, 0x9a, 0x9d, 0x9f, 0xa0, 0xa0, 0x9e, 0x9d, 0x9c, 0x9d, 0x9e, +0xa0, 0xa3, 0xa8, 0xac, 0xb1, 0xb4, 0xb6, 0xb6, 0xb4, 0xb0, 0xaa, 0xa3, 0x9b, 0x93, 0x8b, 0x84, +0x7c, 0x76, 0x72, 0x6d, 0x68, 0x64, 0x60, 0x5b, 0x56, 0x51, 0x4c, 0x48, 0x44, 0x41, 0x3f, 0x3f, +0x40, 0x43, 0x46, 0x4a, 0x4f, 0x53, 0x59, 0x5d, 0x62, 0x66, 0x6a, 0x6e, 0x72, 0x75, 0x78, 0x7c, +0x80, 0x83, 0x87, 0x8a, 0x8e, 0x91, 0x94, 0x97, 0x99, 0x9a, 0x9c, 0x9c, 0x9d, 0x9d, 0x9e, 0x9f, +0x9f, 0xa0, 0xa0, 0xa1, 0xa1, 0xa2, 0xa1, 0xa1, 0xa0, 0x9e, 0x9b, 0x98, 0x94, 0x90, 0x8c, 0x88, +0x85, 0x81, 0x7d, 0x79, 0x76, 0x72, 0x6f, 0x6b, 0x67, 0x63, 0x5f, 0x5b, 0x57, 0x53, 0x50, 0x4d, +0x4c, 0x4b, 0x4c, 0x4e, 0x50, 0x52, 0x54, 0x56, 0x57, 0x59, 0x5a, 0x5c, 0x5d, 0x5f, 0x61, 0x64, +0x66, 0x69, 0x6c, 0x6f, 0x72, 0x74, 0x76, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, +0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, +0x82, 0x83, 0x84, 0x83, 0x83, 0x81, 0x80, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7e, 0x80, +0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x83, 0x83, 0x83, 0x82, 0x81, +0x80, 0x7d, 0x7c, 0x7a, 0x78, 0x77, 0x76, 0x75, 0x74, 0x73, 0x74, 0x74, 0x76, 0x77, 0x79, 0x7b, +0x7d, 0x80, 0x82, 0x85, 0x87, 0x8a, 0x8e, 0x92, 0x95, 0x99, 0x9c, 0xa0, 0xa3, 0xa5, 0xa8, 0xa9, +0xaa, 0xab, 0xac, 0xad, 0xaf, 0xb1, 0xb3, 0xb4, 0xb5, 0xb6, 0xb6, 0xb7, 0xb7, 0xb8, 0xb9, 0xb9, +0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbf, 0xbf, 0xbc, 0xb6, 0xad, 0xa2, 0x96, 0x89, 0x7b, 0x6f, 0x63, +0x59, 0x50, 0x4a, 0x46, 0x44, 0x44, 0x44, 0x45, 0x45, 0x43, 0x41, 0x3f, 0x3e, 0x3e, 0x3f, 0x42, +0x46, 0x4c, 0x55, 0x5f, 0x69, 0x73, 0x7d, 0x85, 0x8a, 0x8c, 0x8b, 0x8a, 0x87, 0x84, 0x82, 0x81, +0x81, 0x83, 0x87, 0x8d, 0x93, 0x99, 0x9e, 0xa1, 0xa3, 0xa3, 0xa3, 0xa2, 0xa0, 0x9f, 0xa0, 0xa1, +0xa3, 0xa6, 0xa9, 0xad, 0xb1, 0xb3, 0xb4, 0xb3, 0xb0, 0xab, 0xa4, 0x9c, 0x94, 0x8c, 0x85, 0x7d, +0x77, 0x72, 0x6e, 0x6a, 0x66, 0x62, 0x5e, 0x5b, 0x57, 0x53, 0x4f, 0x4b, 0x48, 0x47, 0x46, 0x47, +0x49, 0x4b, 0x4f, 0x53, 0x57, 0x5c, 0x61, 0x65, 0x69, 0x6d, 0x6f, 0x72, 0x74, 0x76, 0x77, 0x79, +0x7b, 0x7c, 0x80, 0x82, 0x85, 0x88, 0x8c, 0x8f, 0x91, 0x93, 0x95, 0x96, 0x97, 0x97, 0x97, 0x98, +0x98, 0x99, 0x9a, 0x9c, 0x9d, 0x9f, 0xa1, 0xa2, 0xa3, 0xa2, 0xa1, 0x9f, 0x9b, 0x97, 0x93, 0x8e, +0x89, 0x85, 0x81, 0x7c, 0x79, 0x76, 0x73, 0x70, 0x6c, 0x68, 0x63, 0x5f, 0x5a, 0x56, 0x52, 0x50, +0x4e, 0x4e, 0x4e, 0x4f, 0x4f, 0x51, 0x53, 0x55, 0x57, 0x59, 0x5b, 0x5c, 0x5d, 0x5e, 0x60, 0x63, +0x66, 0x69, 0x6c, 0x6f, 0x73, 0x75, 0x78, 0x79, 0x7b, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7d, +0x7e, 0x80, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x77, 0x77, 0x77, 0x78, +0x79, 0x7a, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x83, +0x84, 0x84, 0x84, 0x84, 0x83, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x81, 0x82, 0x83, 0x85, 0x86, 0x88, 0x8a, 0x8d, 0x8f, 0x91, 0x93, 0x95, 0x97, 0x99, 0x9b, 0x9d, +0x9f, 0xa1, 0xa3, 0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xad, 0xaf, 0xb0, 0xb1, 0xb1, 0xb2, 0xb3, 0xb3, +0xb3, 0xb3, 0xb4, 0xb5, 0xb6, 0xb8, 0xb9, 0xba, 0xb8, 0xb4, 0xad, 0xa4, 0x99, 0x8e, 0x82, 0x76, +0x6c, 0x63, 0x5a, 0x53, 0x4e, 0x4a, 0x49, 0x48, 0x48, 0x49, 0x49, 0x48, 0x46, 0x45, 0x45, 0x46, +0x47, 0x4b, 0x4f, 0x55, 0x5c, 0x64, 0x6d, 0x75, 0x7d, 0x83, 0x87, 0x89, 0x88, 0x86, 0x84, 0x82, +0x80, 0x80, 0x81, 0x83, 0x86, 0x8a, 0x8f, 0x94, 0x98, 0x9b, 0x9e, 0xa0, 0xa1, 0xa2, 0xa2, 0xa2, +0xa2, 0xa3, 0xa5, 0xa7, 0xaa, 0xad, 0xb0, 0xb1, 0xb0, 0xaf, 0xac, 0xa8, 0xa3, 0x9c, 0x95, 0x8e, +0x86, 0x7e, 0x78, 0x72, 0x6d, 0x68, 0x65, 0x61, 0x5f, 0x5d, 0x5c, 0x5a, 0x57, 0x55, 0x53, 0x51, +0x50, 0x4f, 0x50, 0x51, 0x53, 0x56, 0x59, 0x5c, 0x5f, 0x63, 0x66, 0x68, 0x6a, 0x6b, 0x6c, 0x6d, +0x6e, 0x6f, 0x70, 0x72, 0x75, 0x78, 0x7c, 0x81, 0x85, 0x89, 0x8d, 0x90, 0x92, 0x95, 0x97, 0x99, +0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa4, 0xa5, 0xa7, 0xa8, 0xa9, 0xa8, 0xa6, 0xa3, 0x9f, 0x9b, 0x96, +0x90, 0x8b, 0x86, 0x82, 0x7e, 0x7a, 0x78, 0x75, 0x72, 0x70, 0x6d, 0x69, 0x66, 0x62, 0x5f, 0x5c, +0x5a, 0x59, 0x58, 0x57, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5c, 0x5d, 0x5d, 0x5d, 0x5d, 0x5e, +0x5f, 0x5f, 0x60, 0x61, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6f, 0x71, 0x72, 0x74, 0x76, 0x78, +0x79, 0x7b, 0x7c, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x84, 0x83, +0x83, 0x82, 0x81, 0x80, 0x7e, 0x7c, 0x7c, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, +0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, +0x81, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, +0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x91, 0x93, 0x95, +0x97, 0x99, 0x9b, 0x9d, 0x9f, 0xa0, 0xa2, 0xa4, 0xa6, 0xa8, 0xa9, 0xab, 0xad, 0xae, 0xb0, 0xb1, +0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4, 0xb3, 0xb1, 0xad, 0xa6, 0x9e, +0x95, 0x8b, 0x81, 0x77, 0x6f, 0x67, 0x60, 0x5a, 0x55, 0x51, 0x50, 0x50, 0x50, 0x50, 0x50, 0x4f, +0x4e, 0x4c, 0x4c, 0x4d, 0x4e, 0x50, 0x54, 0x58, 0x5d, 0x63, 0x6a, 0x71, 0x77, 0x7c, 0x7e, 0x80, +0x7e, 0x7c, 0x7a, 0x78, 0x76, 0x76, 0x77, 0x79, 0x7c, 0x82, 0x88, 0x8d, 0x93, 0x98, 0x9c, 0x9f, +0xa1, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa5, 0xa6, 0xa9, 0xac, 0xae, 0xaf, 0xaf, 0xae, 0xab, 0xa7, +0xa1, 0x9a, 0x93, 0x8c, 0x85, 0x7d, 0x77, 0x73, 0x6f, 0x6c, 0x6a, 0x68, 0x67, 0x66, 0x65, 0x63, +0x60, 0x5d, 0x5a, 0x57, 0x55, 0x54, 0x53, 0x54, 0x55, 0x56, 0x58, 0x5b, 0x5d, 0x5f, 0x61, 0x63, +0x64, 0x64, 0x65, 0x66, 0x66, 0x68, 0x69, 0x6b, 0x6e, 0x72, 0x76, 0x7b, 0x81, 0x86, 0x8a, 0x8e, +0x91, 0x93, 0x96, 0x97, 0x99, 0x9a, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa2, 0xa2, 0xa1, +0x9f, 0x9d, 0x9a, 0x97, 0x93, 0x90, 0x8d, 0x89, 0x87, 0x84, 0x82, 0x80, 0x7d, 0x7b, 0x79, 0x77, +0x74, 0x71, 0x6d, 0x6a, 0x66, 0x63, 0x61, 0x5f, 0x5d, 0x5c, 0x5b, 0x5a, 0x59, 0x57, 0x56, 0x55, +0x54, 0x53, 0x53, 0x53, 0x53, 0x54, 0x56, 0x58, 0x5a, 0x5d, 0x60, 0x63, 0x66, 0x69, 0x6c, 0x70, +0x73, 0x76, 0x78, 0x7a, 0x7c, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x85, 0x86, 0x86, 0x86, 0x85, 0x85, +0x84, 0x83, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, +0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, +0x7c, 0x7b, 0x7a, 0x79, 0x79, 0x78, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x82, 0x84, 0x85, 0x87, 0x89, +0x8b, 0x8c, 0x8e, 0x90, 0x92, 0x95, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa1, 0xa3, 0xa4, 0xa6, 0xa7, +0xa9, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, +0xb2, 0xb0, 0xad, 0xa7, 0x9f, 0x96, 0x8d, 0x83, 0x78, 0x70, 0x68, 0x61, 0x5b, 0x57, 0x55, 0x53, +0x53, 0x54, 0x55, 0x55, 0x54, 0x54, 0x54, 0x53, 0x53, 0x54, 0x55, 0x57, 0x5a, 0x5f, 0x64, 0x6a, +0x70, 0x75, 0x79, 0x7b, 0x7c, 0x7c, 0x7a, 0x78, 0x76, 0x74, 0x73, 0x73, 0x75, 0x79, 0x7d, 0x84, +0x8a, 0x8f, 0x94, 0x98, 0x9c, 0x9e, 0xa0, 0xa2, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa8, 0xaa, 0xac, +0xae, 0xae, 0xad, 0xab, 0xa8, 0xa3, 0x9d, 0x96, 0x8f, 0x89, 0x83, 0x7c, 0x78, 0x74, 0x70, 0x6e, +0x6c, 0x6b, 0x6a, 0x69, 0x68, 0x66, 0x64, 0x61, 0x5f, 0x5c, 0x5a, 0x58, 0x57, 0x57, 0x57, 0x58, +0x58, 0x59, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x65, 0x67, 0x6a, 0x6d, 0x72, +0x77, 0x7c, 0x82, 0x86, 0x8b, 0x8f, 0x92, 0x95, 0x98, 0x9a, 0x9c, 0x9e, 0x9f, 0xa0, 0xa0, 0xa1, +0xa1, 0xa2, 0xa2, 0xa2, 0xa0, 0x9f, 0x9d, 0x9a, 0x97, 0x93, 0x90, 0x8d, 0x89, 0x86, 0x83, 0x81, +0x7d, 0x7b, 0x7a, 0x78, 0x76, 0x75, 0x73, 0x71, 0x6f, 0x6d, 0x6a, 0x68, 0x65, 0x62, 0x5f, 0x5d, +0x5b, 0x59, 0x57, 0x55, 0x54, 0x53, 0x53, 0x53, 0x53, 0x54, 0x55, 0x56, 0x57, 0x59, 0x5b, 0x5d, +0x60, 0x63, 0x67, 0x6a, 0x6d, 0x71, 0x75, 0x78, 0x7b, 0x7d, 0x81, 0x82, 0x83, 0x83, 0x83, 0x82, +0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x83, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86, 0x85, 0x84, 0x83, 0x82, 0x80, 0x7e, +0x7c, 0x7b, 0x79, 0x78, 0x77, 0x76, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x79, +0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, +0x81, 0x81, 0x82, 0x83, 0x84, 0x86, 0x87, 0x89, 0x8b, 0x8d, 0x90, 0x93, 0x96, 0x99, 0x9c, 0x9f, +0xa1, 0xa3, 0xa5, 0xa6, 0xa8, 0xa9, 0xab, 0xad, 0xae, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, +0xb2, 0xb1, 0xb1, 0xb0, 0xae, 0xad, 0xac, 0xab, 0xa8, 0xa4, 0x9f, 0x98, 0x90, 0x87, 0x7e, 0x76, +0x6f, 0x69, 0x63, 0x5e, 0x5b, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x59, 0x58, 0x57, 0x57, 0x58, +0x58, 0x5a, 0x5b, 0x5d, 0x60, 0x63, 0x67, 0x6c, 0x70, 0x73, 0x75, 0x76, 0x75, 0x75, 0x74, 0x73, +0x73, 0x74, 0x76, 0x79, 0x7d, 0x83, 0x88, 0x8e, 0x93, 0x97, 0x9b, 0x9e, 0xa1, 0xa3, 0xa4, 0xa5, +0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa5, 0xa4, 0xa1, 0x9e, 0x9a, 0x95, 0x90, 0x8b, +0x87, 0x82, 0x7d, 0x7a, 0x77, 0x75, 0x73, 0x72, 0x72, 0x71, 0x70, 0x6f, 0x6d, 0x6b, 0x69, 0x66, +0x63, 0x61, 0x5f, 0x5d, 0x5c, 0x5b, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, +0x61, 0x62, 0x64, 0x67, 0x6a, 0x6d, 0x71, 0x75, 0x7a, 0x7e, 0x83, 0x87, 0x8b, 0x8e, 0x91, 0x93, +0x95, 0x96, 0x97, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x99, 0x99, 0x98, 0x97, 0x95, +0x94, 0x93, 0x91, 0x8f, 0x8d, 0x8b, 0x8a, 0x88, 0x86, 0x84, 0x82, 0x80, 0x7e, 0x7c, 0x7a, 0x78, +0x76, 0x73, 0x70, 0x6c, 0x69, 0x65, 0x62, 0x5f, 0x5c, 0x5a, 0x58, 0x56, 0x54, 0x53, 0x53, 0x53, +0x53, 0x54, 0x55, 0x56, 0x56, 0x57, 0x59, 0x5a, 0x5d, 0x60, 0x64, 0x67, 0x6b, 0x6f, 0x73, 0x76, +0x7a, 0x7c, 0x7e, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x85, 0x86, 0x87, +0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x86, +0x85, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x7a, 0x78, 0x76, 0x74, 0x73, 0x72, 0x71, 0x70, 0x70, 0x70, +0x70, 0x71, 0x72, 0x74, 0x75, 0x76, 0x76, 0x77, 0x78, 0x78, 0x79, 0x7a, 0x7b, 0x7d, 0x7d, 0x7e, +0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x83, 0x84, 0x85, 0x87, 0x89, 0x8b, +0x8d, 0x8f, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9d, 0x9f, 0xa0, 0xa2, 0xa3, 0xa5, 0xa6, 0xa7, +0xa8, 0xa9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa9, 0xa8, 0xa7, 0xa7, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, +0xa6, 0xa5, 0xa5, 0xa3, 0xa0, 0x9b, 0x94, 0x8d, 0x86, 0x7d, 0x76, 0x6f, 0x6a, 0x65, 0x61, 0x5f, +0x5e, 0x5e, 0x5f, 0x61, 0x62, 0x63, 0x63, 0x63, 0x62, 0x61, 0x61, 0x60, 0x60, 0x61, 0x62, 0x64, +0x67, 0x6a, 0x6e, 0x71, 0x74, 0x75, 0x75, 0x74, 0x73, 0x71, 0x70, 0x70, 0x70, 0x72, 0x74, 0x78, +0x7d, 0x84, 0x8a, 0x90, 0x96, 0x9b, 0x9f, 0xa2, 0xa4, 0xa5, 0xa5, 0xa5, 0xa4, 0xa3, 0xa3, 0xa2, +0xa2, 0xa2, 0xa2, 0xa1, 0xa0, 0x9e, 0x9b, 0x97, 0x93, 0x8f, 0x8a, 0x86, 0x82, 0x7d, 0x7a, 0x78, +0x76, 0x75, 0x74, 0x74, 0x74, 0x73, 0x73, 0x71, 0x70, 0x6e, 0x6b, 0x69, 0x67, 0x64, 0x62, 0x61, +0x5f, 0x5e, 0x5d, 0x5c, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5d, 0x5f, 0x60, 0x62, 0x64, 0x67, 0x6a, +0x6d, 0x70, 0x74, 0x78, 0x7b, 0x80, 0x83, 0x87, 0x8a, 0x8d, 0x90, 0x92, 0x93, 0x95, 0x95, 0x96, +0x96, 0x96, 0x95, 0x95, 0x94, 0x93, 0x93, 0x93, 0x92, 0x93, 0x93, 0x93, 0x93, 0x92, 0x91, 0x90, +0x8f, 0x8d, 0x8b, 0x89, 0x87, 0x85, 0x83, 0x82, 0x80, 0x7c, 0x7a, 0x77, 0x75, 0x72, 0x6f, 0x6b, +0x67, 0x63, 0x60, 0x5c, 0x59, 0x57, 0x55, 0x54, 0x53, 0x53, 0x54, 0x54, 0x56, 0x57, 0x59, 0x5b, +0x5d, 0x5f, 0x61, 0x63, 0x65, 0x68, 0x6a, 0x6d, 0x6f, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7b, 0x7c, +0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8a, +0x8b, 0x8b, 0x8a, 0x8a, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x81, 0x80, 0x7e, 0x7d, +0x7c, 0x7a, 0x79, 0x78, 0x77, 0x76, 0x76, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, +0x77, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, +0x7a, 0x7b, 0x7d, 0x7e, 0x81, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x8f, 0x91, 0x93, 0x95, 0x97, +0x99, 0x9b, 0x9c, 0x9e, 0x9f, 0xa1, 0xa2, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa6, +0xa6, 0xa7, 0xa8, 0xa8, 0xa9, 0xaa, 0xab, 0xab, 0xac, 0xac, 0xac, 0xab, 0xab, 0xaa, 0xa7, 0xa3, +0x9d, 0x96, 0x8f, 0x86, 0x7d, 0x75, 0x6e, 0x68, 0x62, 0x5e, 0x5c, 0x5b, 0x5c, 0x5f, 0x61, 0x63, +0x65, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x60, 0x60, 0x61, 0x62, 0x64, 0x67, 0x6a, 0x6e, 0x71, +0x73, 0x73, 0x73, 0x72, 0x70, 0x6e, 0x6d, 0x6d, 0x6f, 0x72, 0x76, 0x7b, 0x82, 0x88, 0x8e, 0x94, +0x99, 0x9d, 0xa1, 0xa3, 0xa5, 0xa5, 0xa5, 0xa4, 0xa3, 0xa2, 0xa0, 0x9f, 0x9e, 0x9d, 0x9d, 0x9c, +0x9a, 0x98, 0x95, 0x93, 0x90, 0x8d, 0x8a, 0x88, 0x85, 0x83, 0x80, 0x7d, 0x7b, 0x7a, 0x78, 0x77, +0x76, 0x75, 0x74, 0x72, 0x71, 0x6e, 0x6c, 0x6a, 0x67, 0x64, 0x62, 0x5f, 0x5c, 0x5a, 0x57, 0x56, +0x55, 0x55, 0x55, 0x57, 0x59, 0x5b, 0x5e, 0x61, 0x64, 0x68, 0x6b, 0x6f, 0x72, 0x75, 0x78, 0x7b, +0x7d, 0x81, 0x83, 0x86, 0x88, 0x8b, 0x8d, 0x8f, 0x91, 0x92, 0x92, 0x93, 0x92, 0x92, 0x92, 0x91, +0x91, 0x91, 0x91, 0x92, 0x93, 0x94, 0x96, 0x98, 0x99, 0x9a, 0x9a, 0x9a, 0x99, 0x97, 0x94, 0x92, +0x8f, 0x8b, 0x88, 0x85, 0x82, 0x7e, 0x7b, 0x78, 0x75, 0x73, 0x70, 0x6e, 0x6b, 0x68, 0x64, 0x61, +0x5e, 0x5c, 0x5a, 0x59, 0x58, 0x57, 0x57, 0x57, 0x57, 0x59, 0x5b, 0x5d, 0x5f, 0x60, 0x61, 0x62, +0x62, 0x63, 0x64, 0x65, 0x66, 0x68, 0x6a, 0x6b, 0x6d, 0x70, 0x72, 0x75, 0x77, 0x7a, 0x7c, 0x7e, +0x80, 0x82, 0x83, 0x84, 0x85, 0x87, 0x89, 0x8b, 0x8c, 0x8e, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x8f, +0x8e, 0x8d, 0x8b, 0x89, 0x87, 0x85, 0x83, 0x81, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x77, +0x76, 0x75, 0x74, 0x73, 0x72, 0x72, 0x71, 0x71, 0x70, 0x70, 0x70, 0x70, 0x71, 0x71, 0x72, 0x73, +0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7b, 0x7c, 0x7e, 0x80, 0x82, +0x83, 0x85, 0x87, 0x88, 0x8a, 0x8b, 0x8d, 0x8f, 0x90, 0x92, 0x93, 0x95, 0x96, 0x97, 0x98, 0x9a, +0x9b, 0x9c, 0x9c, 0x9d, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa2, 0xa2, +0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0xa2, 0xa1, 0xa1, 0xa0, 0xa0, 0xa0, 0x9e, +0x9c, 0x99, 0x94, 0x8e, 0x87, 0x80, 0x78, 0x71, 0x6b, 0x65, 0x61, 0x5f, 0x5e, 0x5f, 0x62, 0x65, +0x69, 0x6c, 0x6f, 0x70, 0x70, 0x6f, 0x6e, 0x6c, 0x6a, 0x69, 0x68, 0x67, 0x67, 0x68, 0x6a, 0x6d, +0x6f, 0x72, 0x75, 0x76, 0x76, 0x75, 0x73, 0x72, 0x71, 0x71, 0x72, 0x74, 0x77, 0x7b, 0x81, 0x86, +0x8c, 0x91, 0x96, 0x9a, 0x9d, 0x9f, 0x9f, 0x9e, 0x9c, 0x9a, 0x97, 0x94, 0x92, 0x8f, 0x8e, 0x8d, +0x8c, 0x8b, 0x8b, 0x8a, 0x8a, 0x89, 0x87, 0x86, 0x85, 0x83, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x79, 0x77, 0x75, 0x72, 0x6f, 0x6c, 0x6a, 0x67, 0x64, 0x62, +0x61, 0x5f, 0x5f, 0x5f, 0x60, 0x61, 0x63, 0x65, 0x67, 0x6a, 0x6d, 0x6f, 0x72, 0x74, 0x76, 0x78, +0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x88, 0x88, 0x88, +0x88, 0x89, 0x89, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x90, 0x91, 0x91, 0x92, 0x91, 0x91, 0x90, +0x8e, 0x8c, 0x8a, 0x88, 0x86, 0x83, 0x81, 0x7e, 0x7b, 0x79, 0x77, 0x75, 0x73, 0x71, 0x70, 0x6e, +0x6c, 0x6b, 0x69, 0x67, 0x66, 0x64, 0x63, 0x63, 0x63, 0x63, 0x63, 0x64, 0x64, 0x65, 0x65, 0x66, +0x68, 0x68, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6b, 0x6c, 0x6e, 0x6f, 0x71, 0x72, 0x74, 0x75, 0x77, +0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x85, 0x86, 0x86, +0x87, 0x87, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, +0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x77, 0x76, 0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, +0x76, 0x76, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, +0x82, 0x82, 0x83, 0x83, 0x83, 0x84, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8b, 0x8c, 0x8e, 0x8f, +0x90, 0x91, 0x93, 0x94, 0x95, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, +0x99, 0x9a, 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9d, 0x9d, 0x9d, 0x9e, +0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa1, 0xa0, 0xa0, 0x9d, 0x98, 0x93, 0x8d, 0x87, 0x7e, 0x77, 0x72, +0x6c, 0x67, 0x64, 0x65, 0x66, 0x68, 0x6c, 0x71, 0x75, 0x76, 0x77, 0x77, 0x76, 0x73, 0x70, 0x6d, +0x6a, 0x67, 0x65, 0x65, 0x65, 0x67, 0x6a, 0x6d, 0x70, 0x72, 0x73, 0x73, 0x72, 0x70, 0x6d, 0x6c, +0x6b, 0x6b, 0x6c, 0x6f, 0x73, 0x78, 0x7e, 0x85, 0x8c, 0x92, 0x97, 0x9a, 0x9c, 0x9d, 0x9c, 0x9a, +0x98, 0x95, 0x92, 0x8f, 0x8d, 0x8b, 0x8a, 0x8a, 0x8b, 0x8b, 0x8c, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, +0x8c, 0x8b, 0x8a, 0x88, 0x87, 0x85, 0x84, 0x83, 0x83, 0x82, 0x81, 0x80, 0x7e, 0x7c, 0x7a, 0x78, +0x75, 0x73, 0x6f, 0x6c, 0x69, 0x66, 0x63, 0x61, 0x5f, 0x5e, 0x5e, 0x5f, 0x60, 0x62, 0x64, 0x67, +0x69, 0x6c, 0x6e, 0x70, 0x72, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x76, 0x78, 0x7a, +0x7c, 0x7e, 0x81, 0x83, 0x85, 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x89, 0x8b, 0x8c, 0x8e, +0x90, 0x92, 0x94, 0x95, 0x96, 0x96, 0x95, 0x94, 0x92, 0x90, 0x8d, 0x8b, 0x88, 0x86, 0x84, 0x83, +0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x77, 0x74, 0x71, 0x6e, 0x6b, 0x68, 0x65, +0x63, 0x61, 0x60, 0x5f, 0x5e, 0x5e, 0x5f, 0x60, 0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 0x63, 0x64, +0x65, 0x66, 0x68, 0x6a, 0x6d, 0x6f, 0x72, 0x74, 0x77, 0x79, 0x7a, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x82, 0x83, 0x84, 0x86, 0x88, 0x89, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, +0x8a, 0x8a, 0x88, 0x87, 0x86, 0x84, 0x83, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7a, 0x79, 0x78, 0x76, +0x75, 0x73, 0x72, 0x71, 0x71, 0x70, 0x70, 0x70, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, +0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, +0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x89, 0x8b, 0x8d, 0x8f, 0x91, 0x93, 0x95, 0x96, 0x97, 0x98, +0x98, 0x99, 0x99, 0x98, 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x97, 0x98, 0x98, 0x99, 0x99, 0x9a, +0x9b, 0x9b, 0x9c, 0x9d, 0x9d, 0x9d, 0x9c, 0x9c, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9b, 0x9c, +0x9c, 0x9c, 0x9c, 0x9c, 0x9b, 0x97, 0x92, 0x8d, 0x87, 0x81, 0x7a, 0x75, 0x71, 0x6c, 0x6a, 0x69, +0x69, 0x6b, 0x6e, 0x72, 0x76, 0x79, 0x7b, 0x7b, 0x7a, 0x78, 0x75, 0x72, 0x6f, 0x6b, 0x68, 0x66, +0x65, 0x65, 0x67, 0x69, 0x6c, 0x6f, 0x71, 0x73, 0x73, 0x73, 0x72, 0x71, 0x70, 0x6f, 0x70, 0x71, +0x73, 0x76, 0x7a, 0x80, 0x85, 0x8a, 0x8e, 0x92, 0x94, 0x95, 0x95, 0x94, 0x93, 0x91, 0x8e, 0x8c, +0x8a, 0x89, 0x88, 0x88, 0x89, 0x8a, 0x8c, 0x8d, 0x8e, 0x90, 0x90, 0x91, 0x91, 0x91, 0x90, 0x8f, +0x8e, 0x8c, 0x8a, 0x89, 0x88, 0x86, 0x85, 0x84, 0x82, 0x80, 0x7d, 0x7b, 0x78, 0x76, 0x74, 0x72, +0x6f, 0x6d, 0x6b, 0x69, 0x68, 0x67, 0x67, 0x67, 0x68, 0x69, 0x6a, 0x6c, 0x6d, 0x6f, 0x70, 0x72, +0x73, 0x74, 0x74, 0x73, 0x73, 0x72, 0x72, 0x71, 0x71, 0x71, 0x72, 0x73, 0x74, 0x76, 0x78, 0x7a, +0x7d, 0x80, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x87, 0x88, 0x88, 0x89, 0x8a, 0x8b, 0x8b, 0x8c, +0x8c, 0x8c, 0x8c, 0x8c, 0x8b, 0x8a, 0x89, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7a, 0x79, 0x76, 0x74, 0x72, 0x6f, 0x6d, 0x6b, 0x69, +0x68, 0x67, 0x67, 0x67, 0x67, 0x68, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6e, 0x6f, 0x70, +0x71, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, +0x79, 0x79, 0x79, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x82, 0x83, 0x83, 0x84, 0x84, 0x84, +0x83, 0x82, 0x81, 0x80, 0x7e, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, +0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, +0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, +0x80, 0x81, 0x82, 0x83, 0x83, 0x84, 0x85, 0x85, 0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x89, 0x89, +0x8a, 0x8b, 0x8b, 0x8c, 0x8d, 0x8d, 0x8e, 0x8f, 0x8f, 0x90, 0x91, 0x91, 0x92, 0x92, 0x93, 0x93, +0x94, 0x94, 0x95, 0x96, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d, 0x9e, 0x9e, +0x9e, 0x9f, 0x9f, 0x9f, 0xa0, 0xa1, 0xa1, 0xa2, 0xa2, 0xa1, 0x9e, 0x9a, 0x95, 0x90, 0x8a, 0x85, +0x7e, 0x78, 0x73, 0x70, 0x6e, 0x6d, 0x6f, 0x72, 0x75, 0x78, 0x79, 0x7a, 0x7a, 0x78, 0x75, 0x73, +0x70, 0x6d, 0x69, 0x66, 0x64, 0x63, 0x63, 0x64, 0x67, 0x6a, 0x6c, 0x6e, 0x6e, 0x6e, 0x6d, 0x6d, +0x6c, 0x6b, 0x6b, 0x6b, 0x6c, 0x6d, 0x70, 0x74, 0x78, 0x7d, 0x83, 0x87, 0x8b, 0x8d, 0x8f, 0x90, +0x90, 0x90, 0x8f, 0x8e, 0x8c, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8e, 0x8f, 0x91, 0x93, 0x94, 0x95, +0x96, 0x96, 0x96, 0x96, 0x95, 0x93, 0x92, 0x90, 0x8e, 0x8d, 0x8b, 0x8a, 0x88, 0x86, 0x84, 0x82, +0x80, 0x7e, 0x7c, 0x7a, 0x78, 0x76, 0x74, 0x72, 0x70, 0x6e, 0x6c, 0x6b, 0x6b, 0x6a, 0x6a, 0x6a, +0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6e, 0x6d, 0x6b, 0x6a, 0x69, 0x69, 0x69, 0x69, +0x6a, 0x6c, 0x6e, 0x70, 0x73, 0x77, 0x79, 0x7c, 0x7e, 0x81, 0x82, 0x84, 0x85, 0x85, 0x86, 0x87, +0x88, 0x89, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8d, 0x8d, 0x8c, 0x8b, 0x8a, +0x89, 0x89, 0x88, 0x88, 0x87, 0x87, 0x86, 0x86, 0x86, 0x85, 0x85, 0x84, 0x83, 0x81, 0x7e, 0x7b, +0x78, 0x75, 0x71, 0x6f, 0x6c, 0x6a, 0x68, 0x67, 0x66, 0x65, 0x65, 0x66, 0x67, 0x68, 0x68, 0x68, +0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, +0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7c, 0x7d, 0x80, 0x81, 0x83, +0x84, 0x86, 0x87, 0x87, 0x87, 0x86, 0x86, 0x85, 0x83, 0x82, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x77, 0x77, 0x76, +0x76, 0x75, 0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x77, +0x78, 0x7a, 0x7b, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, +0x85, 0x86, 0x86, 0x87, 0x88, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x91, 0x91, +0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x94, 0x94, 0x95, 0x96, 0x96, 0x96, 0x97, 0x98, +0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9e, 0x9e, +0x9e, 0x9e, 0x9d, 0x9a, 0x96, 0x92, 0x8d, 0x89, 0x84, 0x80, 0x7a, 0x76, 0x74, 0x73, 0x73, 0x75, +0x78, 0x7b, 0x7e, 0x81, 0x82, 0x81, 0x80, 0x7d, 0x7a, 0x77, 0x73, 0x6f, 0x6a, 0x66, 0x63, 0x61, +0x61, 0x63, 0x65, 0x68, 0x6a, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x70, 0x70, 0x71, 0x71, 0x72, 0x73, +0x75, 0x78, 0x7c, 0x80, 0x83, 0x86, 0x88, 0x8a, 0x8a, 0x8a, 0x89, 0x88, 0x87, 0x85, 0x83, 0x82, +0x81, 0x82, 0x83, 0x84, 0x86, 0x89, 0x8b, 0x8e, 0x90, 0x93, 0x95, 0x96, 0x97, 0x97, 0x96, 0x95, +0x93, 0x91, 0x8f, 0x8d, 0x8a, 0x88, 0x86, 0x85, 0x83, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, +0x7c, 0x7a, 0x79, 0x77, 0x76, 0x74, 0x73, 0x72, 0x71, 0x70, 0x70, 0x70, 0x70, 0x70, 0x71, 0x71, +0x70, 0x6f, 0x6d, 0x6c, 0x6a, 0x69, 0x68, 0x67, 0x67, 0x67, 0x68, 0x69, 0x6a, 0x6d, 0x6f, 0x72, +0x75, 0x77, 0x79, 0x7a, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, +0x83, 0x84, 0x85, 0x87, 0x88, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, +0x8a, 0x8a, 0x8a, 0x89, 0x89, 0x88, 0x87, 0x86, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x7a, 0x78, 0x76, +0x74, 0x73, 0x71, 0x70, 0x6f, 0x6f, 0x6e, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6c, 0x6c, 0x6c, 0x6b, +0x6b, 0x6b, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, +0x70, 0x71, 0x72, 0x74, 0x75, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x80, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x7a, +0x79, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, +0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, +0x7e, 0x80, 0x81, 0x83, 0x84, 0x86, 0x87, 0x89, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x8f, 0x8f, 0x90, +0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9a, 0x9b, +0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9b, 0x9a, 0x9a, 0x9a, +0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9b, 0x99, 0x96, 0x92, 0x8e, 0x8a, 0x85, 0x80, 0x7a, 0x76, 0x72, +0x71, 0x71, 0x72, 0x75, 0x79, 0x7c, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7b, 0x78, 0x75, 0x71, 0x6d, +0x69, 0x66, 0x66, 0x66, 0x69, 0x6b, 0x6d, 0x6f, 0x70, 0x71, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, +0x72, 0x72, 0x73, 0x75, 0x77, 0x7b, 0x7e, 0x82, 0x84, 0x87, 0x88, 0x89, 0x8a, 0x8a, 0x89, 0x88, +0x87, 0x85, 0x84, 0x84, 0x84, 0x84, 0x85, 0x87, 0x88, 0x8a, 0x8b, 0x8d, 0x8f, 0x91, 0x93, 0x93, +0x93, 0x93, 0x91, 0x90, 0x8e, 0x8c, 0x8a, 0x89, 0x86, 0x84, 0x82, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x77, 0x75, 0x73, 0x72, 0x71, 0x70, 0x70, +0x71, 0x71, 0x71, 0x71, 0x70, 0x70, 0x6f, 0x6e, 0x6e, 0x6e, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, +0x70, 0x72, 0x74, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x82, 0x83, 0x85, 0x86, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8a, +0x89, 0x89, 0x88, 0x88, 0x87, 0x87, 0x86, 0x86, 0x86, 0x85, 0x85, 0x84, 0x84, 0x83, 0x82, 0x81, +0x80, 0x7e, 0x7c, 0x7b, 0x7a, 0x79, 0x77, 0x76, 0x75, 0x74, 0x72, 0x72, 0x71, 0x71, 0x70, 0x6f, +0x6f, 0x6e, 0x6e, 0x6e, 0x6e, 0x6d, 0x6d, 0x6d, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0x6e, 0x6e, 0x6f, +0x6f, 0x70, 0x70, 0x70, 0x71, 0x72, 0x72, 0x72, 0x73, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x7a, +0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, +0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, +0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x83, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, +0x8b, 0x8c, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92, 0x93, 0x94, 0x94, +0x95, 0x96, 0x96, 0x97, 0x97, 0x98, 0x99, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, +0x9c, 0x9d, 0x9d, 0x9c, 0x9c, 0x9c, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9c, 0x9b, 0x98, +0x96, 0x92, 0x8f, 0x8b, 0x87, 0x83, 0x7e, 0x7b, 0x78, 0x78, 0x78, 0x7a, 0x7c, 0x7e, 0x81, 0x82, +0x82, 0x81, 0x7e, 0x7c, 0x79, 0x76, 0x73, 0x6f, 0x6b, 0x68, 0x66, 0x66, 0x66, 0x68, 0x6a, 0x6c, +0x6d, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x71, 0x72, 0x75, 0x77, 0x7a, +0x7c, 0x80, 0x82, 0x83, 0x84, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x83, 0x83, 0x83, 0x84, 0x85, +0x86, 0x87, 0x89, 0x8b, 0x8d, 0x8e, 0x90, 0x91, 0x92, 0x92, 0x92, 0x91, 0x90, 0x8e, 0x8d, 0x8b, +0x89, 0x87, 0x85, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x82, 0x81, 0x80, +0x7d, 0x7c, 0x7a, 0x78, 0x76, 0x75, 0x74, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x72, 0x72, +0x71, 0x70, 0x6f, 0x6e, 0x6d, 0x6c, 0x6c, 0x6c, 0x6d, 0x6e, 0x70, 0x72, 0x73, 0x75, 0x77, 0x78, +0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7b, 0x7c, 0x7e, 0x80, +0x82, 0x84, 0x85, 0x87, 0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x87, 0x87, 0x86, +0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x83, 0x83, 0x83, 0x82, 0x81, 0x80, 0x7e, +0x7d, 0x7b, 0x7a, 0x79, 0x78, 0x76, 0x75, 0x74, 0x72, 0x71, 0x70, 0x6f, 0x6f, 0x6f, 0x6e, 0x6e, +0x6e, 0x6e, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x72, 0x72, 0x72, 0x72, 0x71, 0x71, 0x70, 0x70, 0x70, +0x70, 0x70, 0x70, 0x70, 0x71, 0x73, 0x74, 0x76, 0x77, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, +0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, +0x7a, 0x78, 0x77, 0x75, 0x74, 0x74, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x76, 0x76, 0x77, 0x78, +0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, +0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8c, +0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x91, 0x92, +0x93, 0x94, 0x94, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x97, +0x97, 0x97, 0x97, 0x97, 0x97, 0x96, 0x97, 0x96, 0x96, 0x97, 0x97, 0x97, 0x98, 0x99, 0x99, 0x98, +0x96, 0x94, 0x91, 0x8e, 0x8b, 0x88, 0x85, 0x82, 0x7e, 0x7c, 0x7b, 0x7c, 0x7d, 0x81, 0x84, 0x86, +0x87, 0x87, 0x86, 0x84, 0x81, 0x7e, 0x7b, 0x78, 0x74, 0x70, 0x6d, 0x6b, 0x6a, 0x6a, 0x6b, 0x6d, +0x6f, 0x70, 0x71, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x71, 0x71, 0x71, 0x71, 0x71, 0x72, 0x74, +0x76, 0x77, 0x79, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, +0x81, 0x83, 0x84, 0x87, 0x89, 0x8a, 0x8c, 0x8e, 0x8f, 0x90, 0x90, 0x90, 0x8f, 0x8e, 0x8d, 0x8b, +0x89, 0x88, 0x86, 0x85, 0x84, 0x83, 0x82, 0x82, 0x83, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, +0x84, 0x82, 0x81, 0x7e, 0x7c, 0x79, 0x77, 0x75, 0x74, 0x73, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, +0x72, 0x72, 0x72, 0x72, 0x71, 0x71, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x71, 0x71, 0x72, 0x73, +0x73, 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x74, 0x74, 0x74, 0x75, 0x75, 0x76, 0x77, 0x78, 0x7a, +0x7b, 0x7d, 0x80, 0x82, 0x83, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x83, 0x83, 0x83, +0x83, 0x83, 0x84, 0x85, 0x85, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x85, 0x84, +0x83, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, +0x71, 0x71, 0x71, 0x71, 0x70, 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x72, 0x72, 0x71, 0x71, 0x70, +0x70, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x72, 0x73, 0x75, 0x76, 0x77, 0x79, +0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, +0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x79, 0x77, 0x77, 0x76, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, +0x76, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x77, 0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, +0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x82, 0x83, +0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, +0x8c, 0x8d, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x96, 0x96, 0x96, 0x96, +0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x98, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, +0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9a, 0x98, 0x96, 0x94, 0x90, 0x8d, 0x8a, 0x87, 0x84, 0x81, 0x7e, +0x7d, 0x7d, 0x7e, 0x81, 0x84, 0x86, 0x87, 0x87, 0x87, 0x85, 0x83, 0x80, 0x7c, 0x78, 0x74, 0x71, +0x6d, 0x6b, 0x69, 0x69, 0x6b, 0x6d, 0x6f, 0x71, 0x73, 0x74, 0x74, 0x74, 0x74, 0x74, 0x73, 0x72, +0x71, 0x70, 0x6f, 0x70, 0x71, 0x72, 0x74, 0x75, 0x77, 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x78, +0x78, 0x77, 0x77, 0x78, 0x79, 0x7a, 0x7c, 0x7d, 0x80, 0x83, 0x85, 0x87, 0x88, 0x8a, 0x8b, 0x8b, +0x8b, 0x8b, 0x8a, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x83, 0x83, 0x84, 0x84, 0x85, 0x87, +0x88, 0x89, 0x89, 0x89, 0x89, 0x88, 0x87, 0x86, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x7a, 0x79, 0x78, +0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x77, 0x77, 0x76, 0x76, 0x75, 0x74, 0x72, 0x72, 0x71, +0x71, 0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x74, 0x73, 0x73, 0x73, +0x73, 0x74, 0x75, 0x76, 0x77, 0x79, 0x7b, 0x7c, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, +0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x86, 0x87, 0x87, 0x88, +0x87, 0x87, 0x87, 0x86, 0x85, 0x85, 0x84, 0x83, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, +0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x76, 0x75, 0x73, 0x72, 0x70, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, +0x70, 0x71, 0x71, 0x72, 0x72, 0x72, 0x72, 0x72, 0x71, 0x70, 0x6f, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, +0x6f, 0x70, 0x71, 0x72, 0x73, 0x75, 0x76, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, +0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, +0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, +0x79, 0x78, 0x77, 0x76, 0x76, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, 0x78, 0x78, +0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x7a, 0x7b, 0x7b, +0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x83, 0x83, 0x84, 0x85, 0x87, 0x88, +0x89, 0x8a, 0x8b, 0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, +0x8f, 0x8f, 0x90, 0x91, 0x91, 0x91, 0x92, 0x91, 0x91, 0x91, 0x90, 0x8f, 0x8f, 0x8f, 0x90, 0x90, +0x91, 0x92, 0x92, 0x93, 0x95, 0x95, 0x96, 0x97, 0x96, 0x96, 0x96, 0x95, 0x94, 0x94, 0x94, 0x94, +0x94, 0x95, 0x97, 0x98, 0x99, 0x9a, 0x9a, 0x99, 0x98, 0x96, 0x94, 0x91, 0x8e, 0x8b, 0x89, 0x86, +0x84, 0x83, 0x83, 0x84, 0x86, 0x88, 0x8a, 0x8b, 0x8b, 0x8a, 0x89, 0x87, 0x85, 0x82, 0x7e, 0x7b, +0x78, 0x75, 0x73, 0x71, 0x71, 0x71, 0x72, 0x73, 0x74, 0x74, 0x74, 0x74, 0x74, 0x73, 0x72, 0x72, +0x71, 0x70, 0x70, 0x6f, 0x6f, 0x6f, 0x70, 0x71, 0x72, 0x74, 0x74, 0x75, 0x76, 0x76, 0x77, 0x77, +0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x85, +0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x89, +0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8c, 0x8b, 0x8a, 0x89, 0x88, 0x86, 0x84, 0x83, 0x82, 0x80, +0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x79, 0x78, 0x77, 0x76, +0x75, 0x74, 0x73, 0x73, 0x73, 0x73, 0x72, 0x72, 0x73, 0x73, 0x72, 0x72, 0x72, 0x72, 0x71, 0x71, +0x70, 0x70, 0x70, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7b, +0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, +0x86, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, +0x83, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7b, 0x7a, 0x78, 0x76, 0x74, 0x73, 0x72, 0x71, +0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x72, 0x73, 0x73, 0x73, 0x73, 0x72, 0x71, 0x70, 0x6f, 0x6f, +0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x72, 0x73, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, +0x78, 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, +0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, +0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, +0x7a, 0x7a, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, +0x83, 0x83, 0x83, 0x84, 0x85, 0x85, 0x86, 0x87, 0x88, 0x89, 0x89, 0x8a, 0x8b, 0x8b, 0x8c, 0x8c, +0x8d, 0x8d, 0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, +0x91, 0x91, 0x91, 0x91, 0x92, 0x93, 0x93, 0x94, 0x95, 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x98, +0x97, 0x97, 0x97, 0x96, 0x96, 0x97, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9b, 0x9b, 0x9a, 0x99, 0x97, +0x95, 0x92, 0x90, 0x8d, 0x8a, 0x88, 0x86, 0x85, 0x85, 0x86, 0x87, 0x89, 0x8b, 0x8c, 0x8c, 0x8b, +0x8a, 0x87, 0x84, 0x81, 0x7c, 0x78, 0x75, 0x72, 0x70, 0x6e, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, +0x74, 0x74, 0x73, 0x72, 0x71, 0x6f, 0x6e, 0x6c, 0x6b, 0x6a, 0x6a, 0x6a, 0x6b, 0x6c, 0x6e, 0x6f, +0x71, 0x72, 0x73, 0x74, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x77, 0x78, 0x78, 0x7a, 0x7b, 0x7d, +0x7e, 0x81, 0x83, 0x85, 0x86, 0x87, 0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, +0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8c, 0x8d, 0x8d, 0x8d, 0x8d, 0x8c, 0x8b, 0x8a, 0x89, 0x87, +0x85, 0x84, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, +0x7a, 0x7a, 0x78, 0x77, 0x76, 0x75, 0x74, 0x73, 0x73, 0x72, 0x72, 0x72, 0x72, 0x73, 0x73, 0x73, +0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x75, 0x75, 0x76, 0x77, 0x78, +0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, +0x7e, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, 0x80, +0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, +0x7b, 0x7a, 0x79, 0x79, 0x78, 0x78, 0x77, 0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, +0x76, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, +0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x77, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, +0x7b, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, +0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, +0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, +0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, +0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, +0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, +0x91, 0x92, 0x93, 0x93, 0x94, 0x94, 0x94, 0x95, 0x95, 0x96, 0x96, 0x97, 0x97, 0x97, 0x98, 0x98, +0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9b, 0x9a, 0x99, 0x98, 0x96, 0x94, +0x92, 0x90, 0x8d, 0x8b, 0x89, 0x87, 0x86, 0x85, 0x86, 0x87, 0x89, 0x8a, 0x8b, 0x8b, 0x89, 0x87, +0x85, 0x82, 0x7e, 0x7b, 0x78, 0x75, 0x72, 0x70, 0x6f, 0x6f, 0x6f, 0x70, 0x72, 0x73, 0x73, 0x73, +0x73, 0x72, 0x71, 0x70, 0x6f, 0x6d, 0x6c, 0x6b, 0x6a, 0x6a, 0x6a, 0x6b, 0x6c, 0x6e, 0x70, 0x71, +0x72, 0x73, 0x73, 0x74, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x75, 0x76, 0x78, 0x79, 0x7b, 0x7d, +0x80, 0x82, 0x83, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x87, +0x87, 0x88, 0x89, 0x89, 0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8b, 0x8b, 0x8a, 0x89, 0x88, 0x87, 0x86, +0x85, 0x84, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, +0x7c, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x76, +0x75, 0x75, 0x75, 0x75, 0x75, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, +0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x7a, 0x7a, 0x7b, +0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, +0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, +0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x78, 0x78, 0x77, 0x75, 0x74, +0x72, 0x71, 0x71, 0x70, 0x70, 0x71, 0x71, 0x71, 0x71, 0x72, 0x73, 0x73, 0x74, 0x74, 0x74, 0x74, +0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x76, 0x77, 0x77, 0x78, +0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x83, 0x83, 0x84, 0x85, 0x85, 0x86, 0x86, 0x87, 0x87, +0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f, +0x90, 0x91, 0x92, 0x92, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x93, 0x93, +0x93, 0x94, 0x95, 0x95, 0x96, 0x97, 0x97, 0x96, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x94, 0x94, +0x94, 0x94, 0x94, 0x94, 0x93, 0x92, 0x90, 0x8e, 0x8c, 0x8b, 0x89, 0x87, 0x86, 0x86, 0x85, 0x86, +0x87, 0x88, 0x89, 0x89, 0x8a, 0x89, 0x87, 0x85, 0x83, 0x80, 0x7c, 0x7a, 0x77, 0x75, 0x74, 0x73, +0x73, 0x73, 0x74, 0x76, 0x77, 0x78, 0x78, 0x78, 0x78, 0x76, 0x75, 0x74, 0x72, 0x71, 0x70, 0x6f, +0x6e, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, +0x75, 0x76, 0x77, 0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x83, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x89, +0x89, 0x89, 0x88, 0x88, 0x87, 0x86, 0x85, 0x85, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, +0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x83, 0x82, 0x80, 0x7e, 0x7d, 0x7b, 0x7a, 0x79, 0x79, 0x79, +0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x78, 0x78, 0x77, 0x77, 0x76, 0x76, 0x75, 0x75, 0x75, +0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x74, 0x73, 0x73, 0x73, +0x73, 0x73, 0x74, 0x74, 0x75, 0x76, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, +0x7a, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, +0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, +0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, +0x76, 0x76, 0x76, 0x75, 0x75, 0x74, 0x74, 0x73, 0x72, 0x72, 0x72, 0x71, 0x71, 0x71, 0x71, 0x72, +0x72, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, +0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, +0x82, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, +0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, +0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, +0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, +0x93, 0x93, 0x93, 0x94, 0x94, 0x95, 0x95, 0x96, 0x96, 0x96, 0x95, 0x94, 0x93, 0x91, 0x8f, 0x8d, +0x8b, 0x89, 0x88, 0x87, 0x87, 0x87, 0x88, 0x89, 0x8a, 0x8c, 0x8c, 0x8c, 0x8b, 0x89, 0x87, 0x84, +0x81, 0x7e, 0x7b, 0x79, 0x77, 0x75, 0x75, 0x75, 0x76, 0x77, 0x78, 0x78, 0x79, 0x78, 0x77, 0x76, +0x74, 0x73, 0x71, 0x6f, 0x6d, 0x6c, 0x6b, 0x6a, 0x6b, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x70, +0x70, 0x70, 0x6f, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x70, 0x71, 0x73, 0x75, 0x76, 0x77, 0x79, +0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x84, +0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8a, 0x8a, 0x89, 0x89, 0x88, 0x88, 0x87, 0x87, 0x86, 0x86, +0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x85, 0x84, 0x83, 0x82, 0x82, +0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x78, +0x78, 0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x75, 0x75, 0x75, 0x74, +0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x76, 0x76, 0x77, 0x78, 0x78, 0x79, 0x79, +0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, +0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x77, 0x77, 0x77, +0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x77, 0x77, 0x77, 0x76, 0x76, 0x76, 0x75, 0x75, 0x75, +0x75, 0x75, 0x74, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, +0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, +0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, +0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, +0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8c, 0x8c, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f, +0x8f, 0x90, 0x90, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x93, 0x93, 0x94, 0x94, +0x95, 0x95, 0x95, 0x95, 0x94, 0x93, 0x92, 0x90, 0x8f, 0x8e, 0x8c, 0x8b, 0x8a, 0x89, 0x89, 0x89, +0x8a, 0x8b, 0x8c, 0x8c, 0x8d, 0x8c, 0x8c, 0x8b, 0x89, 0x87, 0x84, 0x82, 0x7e, 0x7b, 0x79, 0x77, +0x76, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x76, 0x76, 0x75, 0x74, 0x72, 0x71, 0x6f, +0x6e, 0x6d, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x71, 0x70, 0x70, +0x6f, 0x6f, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x75, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x85, 0x86, 0x87, +0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, +0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x86, 0x86, 0x85, 0x84, 0x83, 0x83, 0x82, +0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, +0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x78, 0x77, 0x77, 0x76, 0x75, 0x75, 0x74, 0x74, 0x74, +0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, +0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, +0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x78, +0x78, 0x78, 0x78, 0x78, 0x78, 0x77, 0x77, 0x76, 0x76, 0x75, 0x75, 0x75, 0x74, 0x74, 0x74, 0x74, +0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, +0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, +0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x83, +0x83, 0x83, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, +0x87, 0x87, 0x87, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, +0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, +0x90, 0x8f, 0x8f, 0x8e, 0x8d, 0x8c, 0x8b, 0x8b, 0x8a, 0x8a, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, +0x8b, 0x8b, 0x8b, 0x8a, 0x8a, 0x89, 0x87, 0x86, 0x84, 0x83, 0x81, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, +0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x78, 0x77, 0x75, 0x74, 0x73, +0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x74, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, +0x74, 0x75, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, +0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, +0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, +0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x84, 0x84, 0x83, 0x83, 0x82, 0x82, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, +0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x78, 0x78, 0x77, 0x77, 0x76, 0x76, 0x75, 0x75, 0x75, 0x75, +0x76, 0x76, 0x76, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x77, 0x77, 0x78, +0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, +0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, +0x79, 0x79, 0x78, 0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, +0x77, 0x77, 0x77, 0x77, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, +0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x83, 0x83, 0x83, +0x83, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x82, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x87, +0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, +0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90, 0x8f, 0x8e, 0x8e, 0x8d, +0x8c, 0x8b, 0x8b, 0x8b, 0x8a, 0x8b, 0x8c, 0x8c, 0x8d, 0x8e, 0x8e, 0x8e, 0x8d, 0x8c, 0x8a, 0x88, +0x86, 0x84, 0x82, 0x80, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, +0x7a, 0x79, 0x78, 0x76, 0x75, 0x74, 0x73, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x73, 0x73, 0x73, +0x73, 0x73, 0x72, 0x72, 0x71, 0x71, 0x71, 0x71, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, +0x78, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, +0x80, 0x81, 0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, +0x85, 0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89, 0x88, 0x88, 0x88, 0x87, 0x87, +0x87, 0x86, 0x86, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83, 0x82, 0x82, 0x81, 0x80, 0x80, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x78, +0x78, 0x77, 0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, +0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, +0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, +0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, +0x84, 0x85, 0x85, 0x85, 0x84, 0x84, 0x83, 0x83, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x77, 0x76, +0x76, 0x76, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x76, 0x77, 0x76, 0x76, 0x76, 0x75, +0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78, +0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, +0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, +0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, +0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, +0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, +0x8b, 0x8b, 0x8c, 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8d, 0x8d, 0x8c, 0x8b, 0x8a, 0x89, +0x88, 0x88, 0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x87, 0x86, 0x85, 0x84, 0x82, 0x81, +0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x76, +0x75, 0x74, 0x74, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x74, +0x74, 0x74, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x76, 0x77, 0x77, 0x78, 0x79, 0x79, +0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, +0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x87, +0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, +0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7e, +0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, +0x79, 0x78, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, +0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, +0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, +0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, +0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, +0x7c, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, 0x77, 0x77, 0x77, 0x76, +0x76, 0x75, 0x75, 0x74, 0x74, 0x73, 0x73, 0x73, 0x73, 0x72, 0x72, 0x72, 0x73, 0x73, 0x73, 0x74, +0x74, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, +0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x83, +0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, +0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x83, 0x83, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, +0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, +0x89, 0x89, 0x89, 0x8a, 0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x87, 0x87, 0x86, 0x85, 0x84, 0x83, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, +0x7d, 0x7c, 0x7b, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, +0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0x76, 0x76, 0x76, +0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x83, +0x83, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x84, +0x84, 0x84, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x78, 0x78, +0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, +0x79, 0x79, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, +0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, +0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, +0x84, 0x84, 0x84, 0x83, 0x83, 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x79, +0x78, 0x77, 0x76, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78, +0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, +0x78, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x82, 0x82, +0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x84, 0x84, 0x84, +0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x84, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, +0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, +0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8a, 0x8a, 0x8a, 0x89, 0x89, +0x88, 0x88, 0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x87, 0x86, +0x85, 0x84, 0x83, 0x82, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, +0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, +0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x7a, +0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, +0x80, 0x81, 0x81, 0x82, 0x83, 0x83, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, +0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, +0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, +0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, +0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, +0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, +0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, +0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, +0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x83, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, +0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, +0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, +0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, +0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, +0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, 0x85, +0x84, 0x84, 0x83, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, +0x7b, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x78, 0x78, 0x77, +0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, +0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, +0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, +0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, +0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, +0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, +0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, +0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, +0x7a, 0x79, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, +0x85, 0x85, 0x84, 0x85, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, +0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, +0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, +0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, +0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x79, +0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, +0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, +0x83, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, +0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, +0x86, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, +0x85, 0x85, 0x85, 0x84, 0x83, 0x83, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x7a, 0x7b, +0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, +0x7e, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, +0x83, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, +0x7a, 0x7a, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, +0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x83, +0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, +0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, +0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, +0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, +0x7b, 0x7a, 0x79, 0x79, 0x78, 0x77, 0x77, 0x77, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, +0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, +0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, +0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, +0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, +0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x87, +0x87, 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x85, 0x85, 0x84, 0x84, 0x83, 0x82, 0x82, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, +0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x79, +0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, +0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, +0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, +0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, +0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, +0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, +0x85, 0x85, 0x85, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, +0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x86, 0x85, +0x84, 0x83, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, +0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, +0x7b, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, +0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, +0x7b, 0x7b, 0x7a, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x77, +0x77, 0x77, 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, +0x82, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x87, 0x87, +0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, +0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, +0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x87, 0x87, 0x85, 0x84, 0x82, 0x81, 0x7e, 0x7d, +0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, +0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x82, 0x83, 0x83, 0x84, 0x84, 0x85, 0x85, 0x85, +0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x83, 0x83, 0x82, 0x81, +0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, +0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, +0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x83, +0x83, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83, 0x82, 0x82, +0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, +0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x79, +0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, +0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, +0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x78, 0x77, 0x76, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, +0x77, 0x76, 0x76, 0x75, 0x74, 0x73, 0x73, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x79, 0x79, +0x79, 0x78, 0x78, 0x77, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, +0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, +0x82, 0x82, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x86, 0x87, 0x87, 0x88, +0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, +0x8b, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d, 0x8c, 0x8c, 0x8c, 0x8c, 0x8b, 0x8b, +0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x89, 0x88, 0x85, 0x83, 0x81, 0x7d, 0x7b, 0x79, +0x77, 0x77, 0x77, 0x77, 0x78, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x78, 0x77, 0x77, 0x76, +0x76, 0x77, 0x78, 0x79, 0x7a, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, +0x78, 0x79, 0x79, 0x7a, 0x7c, 0x7e, 0x81, 0x82, 0x84, 0x85, 0x86, 0x87, 0x87, 0x87, 0x86, 0x86, +0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x87, 0x86, 0x85, 0x84, 0x82, +0x80, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, +0x78, 0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78, 0x77, +0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x7a, 0x7a, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x83, +0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x85, +0x84, 0x84, 0x84, 0x83, 0x83, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, +0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x78, 0x78, 0x77, 0x76, 0x76, 0x75, 0x75, 0x75, +0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, +0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7b, 0x7a, +0x79, 0x77, 0x75, 0x74, 0x74, 0x73, 0x72, 0x72, 0x72, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x72, +0x71, 0x71, 0x71, 0x72, 0x72, 0x73, 0x75, 0x76, 0x77, 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, +0x79, 0x79, 0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, +0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, +0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x83, 0x84, 0x84, +0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x87, 0x88, 0x88, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, +0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8d, 0x8d, 0x8d, +0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x90, 0x90, 0x8f, 0x8f, 0x8f, 0x8f, 0x8e, 0x8e, 0x8e, 0x8d, 0x8c, +0x8b, 0x8a, 0x89, 0x87, 0x84, 0x82, 0x7e, 0x7c, 0x79, 0x78, 0x77, 0x76, 0x76, 0x76, 0x77, 0x78, +0x78, 0x78, 0x78, 0x77, 0x76, 0x75, 0x75, 0x74, 0x74, 0x74, 0x75, 0x76, 0x78, 0x79, 0x7b, 0x7c, +0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x79, 0x78, 0x78, 0x79, 0x7a, 0x7b, 0x7d, 0x7e, 0x81, +0x83, 0x84, 0x85, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x89, 0x89, +0x8a, 0x89, 0x89, 0x88, 0x87, 0x86, 0x84, 0x82, 0x80, 0x7d, 0x7c, 0x7a, 0x79, 0x79, 0x79, 0x79, +0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x78, 0x77, 0x77, 0x76, 0x75, 0x74, 0x74, 0x74, 0x74, 0x75, +0x76, 0x76, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x79, 0x7a, +0x7c, 0x7d, 0x7e, 0x80, 0x82, 0x82, 0x83, 0x84, 0x85, 0x85, 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, +0x88, 0x88, 0x87, 0x87, 0x86, 0x86, 0x85, 0x85, 0x84, 0x84, 0x83, 0x83, 0x82, 0x81, 0x81, 0x80, +0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x78, +0x77, 0x77, 0x76, 0x76, 0x76, 0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x76, 0x77, 0x78, +0x79, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, +0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x83, 0x83, 0x83, 0x82, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, +0x7a, 0x7a, 0x79, 0x78, 0x77, 0x77, 0x76, 0x74, 0x73, 0x72, 0x71, 0x70, 0x70, 0x70, 0x71, 0x72, +0x73, 0x74, 0x75, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, +0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, +0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x84, 0x84, 0x85, 0x86, 0x86, 0x86, 0x87, 0x87, +0x87, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89, +0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8c, 0x8d, 0x8e, 0x8e, 0x8f, 0x91, +0x91, 0x91, 0x91, 0x92, 0x92, 0x91, 0x91, 0x92, 0x93, 0x93, 0x93, 0x94, 0x95, 0x95, 0x94, 0x94, +0x93, 0x91, 0x8d, 0x8a, 0x87, 0x84, 0x80, 0x7c, 0x7a, 0x78, 0x76, 0x76, 0x76, 0x76, 0x77, 0x78, +0x78, 0x78, 0x77, 0x76, 0x75, 0x73, 0x72, 0x70, 0x70, 0x70, 0x70, 0x71, 0x73, 0x76, 0x78, 0x7b, +0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7c, 0x7a, 0x78, 0x77, 0x76, 0x76, 0x77, 0x79, 0x7c, 0x7e, 0x82, +0x85, 0x88, 0x8a, 0x8b, 0x8c, 0x8c, 0x8b, 0x8a, 0x89, 0x89, 0x88, 0x88, 0x89, 0x8a, 0x8b, 0x8c, +0x8e, 0x8f, 0x8f, 0x8f, 0x8e, 0x8c, 0x8a, 0x86, 0x83, 0x80, 0x7c, 0x79, 0x77, 0x76, 0x75, 0x75, +0x75, 0x76, 0x77, 0x77, 0x77, 0x76, 0x75, 0x74, 0x72, 0x71, 0x6f, 0x6e, 0x6d, 0x6d, 0x6d, 0x6e, +0x70, 0x71, 0x73, 0x74, 0x75, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x75, 0x75, 0x76, 0x77, 0x78, +0x7a, 0x7c, 0x7e, 0x81, 0x83, 0x85, 0x86, 0x87, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, +0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x8a, 0x88, 0x87, 0x86, 0x84, 0x83, 0x81, 0x80, +0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x77, 0x76, 0x76, 0x75, 0x74, +0x73, 0x72, 0x72, 0x71, 0x71, 0x72, 0x72, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x76, +0x76, 0x77, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x83, 0x84, 0x85, +0x86, 0x86, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x87, 0x86, 0x85, 0x83, +0x82, 0x81, 0x7e, 0x7d, 0x7b, 0x7a, 0x78, 0x77, 0x76, 0x75, 0x73, 0x72, 0x71, 0x70, 0x6f, 0x6e, +0x6d, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x73, 0x74, 0x74, +0x74, 0x75, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, +0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, +0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x82, +0x83, 0x83, 0x84, 0x85, 0x85, 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, +0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, 0x90, 0x90, +0x91, 0x91, 0x91, 0x91, 0x92, 0x93, 0x93, 0x94, 0x94, 0x95, 0x96, 0x97, 0x97, 0x98, 0x99, 0x99, +0x99, 0x99, 0x9a, 0x9a, 0x99, 0x98, 0x97, 0x95, 0x92, 0x8e, 0x89, 0x85, 0x81, 0x7c, 0x78, 0x75, +0x73, 0x72, 0x71, 0x71, 0x72, 0x73, 0x74, 0x74, 0x73, 0x73, 0x72, 0x71, 0x70, 0x70, 0x70, 0x70, +0x71, 0x72, 0x74, 0x76, 0x79, 0x7b, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7b, 0x79, 0x78, 0x77, +0x76, 0x76, 0x77, 0x79, 0x7c, 0x80, 0x83, 0x86, 0x89, 0x8b, 0x8d, 0x8e, 0x8f, 0x8f, 0x8e, 0x8e, +0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x92, 0x92, 0x91, 0x8f, 0x8c, 0x89, 0x85, 0x82, +0x7d, 0x7a, 0x77, 0x75, 0x73, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74, 0x74, 0x74, 0x73, 0x72, 0x71, +0x6f, 0x6e, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x70, 0x71, 0x73, 0x74, 0x75, 0x75, 0x75, 0x75, 0x75, +0x75, 0x74, 0x74, 0x75, 0x76, 0x77, 0x79, 0x7b, 0x7d, 0x80, 0x82, 0x84, 0x86, 0x88, 0x89, 0x8a, +0x8b, 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8d, 0x8d, 0x8d, 0x8c, 0x8b, 0x8a, 0x89, +0x88, 0x86, 0x85, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x77, 0x77, 0x76, 0x75, +0x75, 0x75, 0x74, 0x74, 0x73, 0x73, 0x72, 0x72, 0x71, 0x71, 0x71, 0x71, 0x70, 0x70, 0x70, 0x70, +0x70, 0x71, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, +0x81, 0x83, 0x84, 0x86, 0x87, 0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x87, 0x87, 0x86, +0x86, 0x85, 0x85, 0x85, 0x84, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7b, 0x78, 0x76, 0x74, 0x72, 0x70, +0x6f, 0x6e, 0x6d, 0x6c, 0x6c, 0x6c, 0x6c, 0x6b, 0x6b, 0x6b, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, +0x6e, 0x70, 0x71, 0x72, 0x74, 0x76, 0x77, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7a, +0x79, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, +0x7e, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x83, 0x84, 0x85, 0x86, 0x87, 0x87, 0x88, 0x89, 0x89, 0x89, +0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, +0x8f, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x91, 0x92, 0x92, 0x94, 0x95, 0x97, 0x97, 0x98, +0x99, 0x9a, 0x9b, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0x9f, 0xa0, 0xa1, 0xa1, 0xa0, 0x9e, 0x9a, 0x96, +0x91, 0x8b, 0x85, 0x7e, 0x78, 0x73, 0x6f, 0x6c, 0x6b, 0x6b, 0x6c, 0x6e, 0x70, 0x72, 0x73, 0x73, +0x72, 0x71, 0x70, 0x6e, 0x6d, 0x6c, 0x6d, 0x6e, 0x70, 0x74, 0x77, 0x7b, 0x80, 0x83, 0x85, 0x85, +0x84, 0x82, 0x80, 0x7b, 0x78, 0x76, 0x74, 0x73, 0x73, 0x75, 0x78, 0x7c, 0x81, 0x85, 0x89, 0x8d, +0x90, 0x91, 0x92, 0x93, 0x93, 0x92, 0x91, 0x91, 0x90, 0x91, 0x91, 0x92, 0x93, 0x94, 0x95, 0x95, +0x94, 0x92, 0x90, 0x8c, 0x87, 0x82, 0x7c, 0x78, 0x74, 0x70, 0x6e, 0x6d, 0x6c, 0x6d, 0x6d, 0x6e, +0x6f, 0x70, 0x71, 0x71, 0x70, 0x6f, 0x6e, 0x6d, 0x6c, 0x6b, 0x6b, 0x6c, 0x6c, 0x6e, 0x6f, 0x70, +0x72, 0x73, 0x74, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x77, 0x79, 0x7a, 0x7d, 0x80, +0x82, 0x85, 0x87, 0x8a, 0x8c, 0x8e, 0x90, 0x91, 0x92, 0x93, 0x93, 0x93, 0x92, 0x92, 0x91, 0x90, +0x8f, 0x8e, 0x8d, 0x8c, 0x8b, 0x89, 0x88, 0x87, 0x85, 0x84, 0x82, 0x80, 0x7d, 0x7c, 0x7a, 0x79, +0x77, 0x76, 0x75, 0x74, 0x74, 0x73, 0x73, 0x73, 0x72, 0x72, 0x71, 0x71, 0x70, 0x70, 0x6f, 0x6e, +0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x78, +0x79, 0x7b, 0x7c, 0x7e, 0x80, 0x82, 0x84, 0x85, 0x86, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x88, +0x87, 0x87, 0x86, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x82, 0x81, 0x80, 0x7d, 0x7c, 0x7b, +0x7a, 0x79, 0x78, 0x78, 0x78, 0x77, 0x77, 0x76, 0x75, 0x73, 0x71, 0x6f, 0x6e, 0x6d, 0x6c, 0x6b, +0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x71, 0x72, 0x73, 0x74, 0x76, +0x77, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x84, +0x85, 0x86, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, +0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, 0x8e, 0x8f, 0x90, +0x91, 0x92, 0x93, 0x94, 0x95, 0x97, 0x98, 0x99, 0x9b, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa1, 0xa1, +0xa1, 0xa0, 0x9f, 0x9e, 0x9e, 0x9d, 0x9c, 0x9a, 0x98, 0x94, 0x8f, 0x8a, 0x83, 0x7c, 0x76, 0x70, +0x6b, 0x67, 0x66, 0x66, 0x67, 0x69, 0x6c, 0x6f, 0x71, 0x72, 0x72, 0x71, 0x71, 0x6f, 0x6e, 0x6d, +0x6d, 0x6e, 0x6f, 0x72, 0x75, 0x79, 0x7c, 0x80, 0x82, 0x82, 0x82, 0x81, 0x7e, 0x7b, 0x79, 0x77, +0x76, 0x75, 0x76, 0x77, 0x7a, 0x7e, 0x83, 0x87, 0x8b, 0x8f, 0x92, 0x94, 0x96, 0x97, 0x97, 0x97, +0x96, 0x95, 0x95, 0x94, 0x93, 0x93, 0x93, 0x93, 0x93, 0x92, 0x91, 0x8f, 0x8c, 0x89, 0x85, 0x81, +0x7b, 0x76, 0x72, 0x6f, 0x6c, 0x6a, 0x6a, 0x6a, 0x6a, 0x6b, 0x6c, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, +0x6f, 0x6e, 0x6d, 0x6d, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x72, 0x73, 0x73, +0x74, 0x74, 0x75, 0x76, 0x78, 0x79, 0x7b, 0x7d, 0x80, 0x82, 0x85, 0x87, 0x8a, 0x8c, 0x8e, 0x90, +0x92, 0x94, 0x95, 0x96, 0x96, 0x96, 0x96, 0x95, 0x94, 0x92, 0x90, 0x8e, 0x8d, 0x8b, 0x89, 0x87, +0x86, 0x84, 0x83, 0x82, 0x80, 0x7e, 0x7d, 0x7b, 0x79, 0x78, 0x76, 0x75, 0x73, 0x72, 0x72, 0x71, +0x71, 0x70, 0x70, 0x70, 0x70, 0x70, 0x6f, 0x6f, 0x6f, 0x6e, 0x6d, 0x6d, 0x6c, 0x6b, 0x6b, 0x6b, +0x6b, 0x6b, 0x6c, 0x6d, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, 0x80, 0x82, 0x83, +0x84, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x8a, 0x89, 0x88, 0x87, 0x86, +0x85, 0x84, 0x82, 0x81, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x78, 0x77, +0x75, 0x72, 0x70, 0x6d, 0x6b, 0x6a, 0x69, 0x69, 0x69, 0x6a, 0x6b, 0x6b, 0x6c, 0x6c, 0x6c, 0x6b, +0x6b, 0x6a, 0x6a, 0x6a, 0x6b, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7b, 0x7c, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, +0x7a, 0x7a, 0x7a, 0x79, 0x78, 0x78, 0x77, 0x76, 0x75, 0x75, 0x75, 0x75, 0x76, 0x77, 0x78, 0x79, +0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x85, 0x86, +0x88, 0x89, 0x89, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8e, 0x8f, 0x90, 0x90, +0x90, 0x91, 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x94, 0x94, 0x95, 0x95, 0x96, 0x96, 0x97, 0x98, +0x98, 0x99, 0x99, 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 0xa0, 0xa0, +0xa1, 0xa1, 0xa2, 0xa1, 0x9f, 0x9d, 0x99, 0x93, 0x8c, 0x83, 0x7b, 0x73, 0x6a, 0x63, 0x5e, 0x5c, +0x5b, 0x5d, 0x60, 0x64, 0x69, 0x6d, 0x70, 0x71, 0x71, 0x70, 0x6e, 0x6c, 0x69, 0x68, 0x68, 0x6a, +0x6d, 0x72, 0x77, 0x7d, 0x84, 0x88, 0x8a, 0x8a, 0x89, 0x86, 0x81, 0x7b, 0x77, 0x73, 0x70, 0x6f, +0x70, 0x73, 0x78, 0x7e, 0x85, 0x8c, 0x91, 0x96, 0x9a, 0x9c, 0x9d, 0x9c, 0x9b, 0x99, 0x97, 0x95, +0x93, 0x92, 0x91, 0x91, 0x91, 0x92, 0x92, 0x91, 0x8f, 0x8d, 0x8a, 0x85, 0x80, 0x7a, 0x74, 0x6f, +0x6a, 0x67, 0x64, 0x63, 0x63, 0x64, 0x66, 0x69, 0x6b, 0x6e, 0x6f, 0x70, 0x70, 0x70, 0x6f, 0x6e, +0x6d, 0x6c, 0x6b, 0x6b, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x71, 0x71, 0x72, 0x73, 0x74, +0x76, 0x78, 0x7a, 0x7c, 0x80, 0x83, 0x85, 0x88, 0x8a, 0x8d, 0x8f, 0x91, 0x93, 0x95, 0x97, 0x98, +0x9a, 0x9a, 0x9a, 0x9a, 0x99, 0x97, 0x95, 0x93, 0x90, 0x8d, 0x8b, 0x89, 0x86, 0x85, 0x83, 0x82, +0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7b, 0x7a, 0x78, 0x77, 0x75, 0x73, 0x72, 0x70, 0x6f, 0x6e, 0x6e, +0x6d, 0x6d, 0x6d, 0x6c, 0x6c, 0x6b, 0x6a, 0x69, 0x68, 0x67, 0x66, 0x66, 0x65, 0x65, 0x66, 0x67, +0x69, 0x6b, 0x6d, 0x70, 0x73, 0x76, 0x78, 0x7b, 0x7d, 0x80, 0x81, 0x83, 0x84, 0x85, 0x86, 0x88, +0x89, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x8a, 0x89, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, +0x81, 0x80, 0x7e, 0x7c, 0x7b, 0x7b, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x78, 0x77, +0x76, 0x74, 0x72, 0x70, 0x6e, 0x6d, 0x6c, 0x6b, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, +0x6a, 0x6a, 0x6a, 0x6b, 0x6c, 0x6e, 0x6f, 0x71, 0x72, 0x74, 0x75, 0x76, 0x78, 0x79, 0x7a, 0x7b, +0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x79, +0x7a, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, +0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, +0x8f, 0x90, 0x91, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9c, 0x9d, 0x9e, +0x9f, 0x9f, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, +0xa1, 0xa0, 0x9d, 0x99, 0x94, 0x8e, 0x87, 0x7e, 0x76, 0x6f, 0x69, 0x64, 0x60, 0x5f, 0x60, 0x62, +0x64, 0x69, 0x6d, 0x71, 0x72, 0x72, 0x72, 0x70, 0x6e, 0x6b, 0x69, 0x67, 0x68, 0x69, 0x6b, 0x6f, +0x74, 0x79, 0x7e, 0x83, 0x84, 0x84, 0x83, 0x80, 0x7b, 0x77, 0x74, 0x71, 0x6f, 0x6f, 0x71, 0x74, +0x79, 0x81, 0x87, 0x8d, 0x93, 0x99, 0x9c, 0x9e, 0x9f, 0x9f, 0x9e, 0x9c, 0x9a, 0x98, 0x96, 0x95, +0x94, 0x93, 0x93, 0x92, 0x92, 0x90, 0x8e, 0x8b, 0x88, 0x84, 0x7e, 0x79, 0x75, 0x71, 0x6e, 0x6b, +0x6a, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6f, 0x70, 0x71, 0x71, 0x71, 0x71, 0x70, 0x6f, 0x6d, 0x6c, +0x6c, 0x6b, 0x6a, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6b, 0x6d, 0x6f, 0x72, 0x75, +0x79, 0x7d, 0x81, 0x84, 0x87, 0x8a, 0x8b, 0x8d, 0x8e, 0x8f, 0x90, 0x92, 0x93, 0x95, 0x97, 0x98, +0x99, 0x99, 0x98, 0x97, 0x95, 0x93, 0x90, 0x8c, 0x89, 0x87, 0x85, 0x83, 0x82, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x81, 0x7e, 0x7c, 0x7b, 0x78, 0x76, 0x74, 0x72, 0x70, 0x6e, 0x6d, 0x6c, +0x6b, 0x6a, 0x69, 0x68, 0x67, 0x66, 0x66, 0x65, 0x64, 0x64, 0x63, 0x64, 0x64, 0x65, 0x67, 0x69, +0x6b, 0x6d, 0x70, 0x72, 0x74, 0x77, 0x79, 0x7a, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x83, 0x84, +0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x83, 0x82, 0x81, 0x81, 0x80, +0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x78, 0x77, 0x75, 0x74, +0x72, 0x71, 0x70, 0x6f, 0x6e, 0x6e, 0x6d, 0x6d, 0x6c, 0x6c, 0x6c, 0x6b, 0x6b, 0x6b, 0x6c, 0x6c, +0x6d, 0x6e, 0x6f, 0x70, 0x70, 0x72, 0x73, 0x73, 0x74, 0x75, 0x77, 0x78, 0x78, 0x79, 0x7a, 0x7b, +0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x84, 0x85, 0x86, +0x88, 0x89, 0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, +0x8c, 0x8c, 0x8d, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x99, 0x9b, +0x9c, 0x9e, 0xa0, 0xa2, 0xa3, 0xa5, 0xa7, 0xa8, 0xaa, 0xaa, 0xab, 0xac, 0xad, 0xad, 0xad, 0xac, +0xaa, 0xa6, 0xa0, 0x99, 0x90, 0x86, 0x7b, 0x72, 0x6a, 0x62, 0x5c, 0x58, 0x58, 0x5a, 0x5d, 0x63, +0x69, 0x6e, 0x71, 0x73, 0x74, 0x73, 0x71, 0x6e, 0x6b, 0x6a, 0x69, 0x69, 0x6b, 0x6f, 0x74, 0x79, +0x7d, 0x82, 0x83, 0x83, 0x80, 0x7b, 0x76, 0x70, 0x6b, 0x67, 0x65, 0x65, 0x67, 0x6b, 0x71, 0x7a, +0x83, 0x8c, 0x94, 0x9b, 0xa0, 0xa2, 0xa4, 0xa4, 0xa3, 0xa1, 0x9e, 0x9c, 0x99, 0x97, 0x96, 0x95, +0x94, 0x93, 0x92, 0x90, 0x8e, 0x8b, 0x88, 0x84, 0x80, 0x7c, 0x78, 0x75, 0x72, 0x71, 0x70, 0x70, +0x71, 0x72, 0x73, 0x74, 0x75, 0x75, 0x75, 0x74, 0x72, 0x71, 0x6f, 0x6d, 0x6b, 0x6a, 0x68, 0x67, +0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x61, 0x61, 0x62, 0x63, 0x66, 0x6a, 0x6e, 0x73, 0x78, 0x7d, +0x82, 0x86, 0x89, 0x8b, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x90, 0x91, 0x93, 0x95, 0x96, 0x97, +0x97, 0x96, 0x95, 0x93, 0x90, 0x8d, 0x8b, 0x88, 0x87, 0x86, 0x86, 0x86, 0x88, 0x89, 0x8b, 0x8c, +0x8d, 0x8d, 0x8c, 0x8b, 0x88, 0x86, 0x83, 0x7e, 0x7b, 0x77, 0x74, 0x71, 0x6e, 0x6c, 0x6a, 0x68, +0x66, 0x65, 0x63, 0x62, 0x62, 0x61, 0x61, 0x61, 0x61, 0x61, 0x62, 0x63, 0x64, 0x66, 0x67, 0x69, +0x6b, 0x6d, 0x6e, 0x70, 0x72, 0x74, 0x75, 0x77, 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, +0x7d, 0x7e, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8d, 0x8d, 0x8c, 0x8c, 0x8a, 0x89, 0x87, +0x85, 0x84, 0x82, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7a, 0x79, 0x77, 0x75, 0x73, +0x72, 0x70, 0x6f, 0x6f, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, +0x70, 0x70, 0x6f, 0x6f, 0x6f, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x71, 0x73, 0x74, 0x76, 0x77, 0x78, +0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x82, +0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x83, 0x83, 0x84, 0x84, 0x85, 0x86, +0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x86, 0x85, 0x85, 0x85, 0x86, 0x86, 0x87, +0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8b, 0x8b, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, +0x8b, 0x8c, 0x8d, 0x8f, 0x91, 0x92, 0x94, 0x96, 0x97, 0x98, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, +0x9a, 0x9a, 0x9b, 0x9c, 0x9d, 0x9f, 0xa1, 0xa3, 0xa5, 0xa7, 0xa8, 0xaa, 0xac, 0xad, 0xad, 0xad, +0xab, 0xa7, 0xa2, 0x9b, 0x94, 0x8a, 0x80, 0x76, 0x6e, 0x67, 0x62, 0x5f, 0x60, 0x62, 0x65, 0x6b, +0x71, 0x76, 0x79, 0x7b, 0x7b, 0x7a, 0x76, 0x72, 0x6e, 0x6b, 0x67, 0x66, 0x66, 0x67, 0x6a, 0x6e, +0x72, 0x75, 0x78, 0x79, 0x78, 0x76, 0x73, 0x70, 0x6d, 0x6b, 0x6a, 0x6a, 0x6c, 0x70, 0x75, 0x7c, +0x84, 0x8b, 0x92, 0x98, 0x9c, 0x9f, 0xa1, 0xa2, 0xa2, 0xa0, 0x9f, 0x9c, 0x9a, 0x97, 0x95, 0x93, +0x91, 0x8f, 0x8e, 0x8c, 0x8b, 0x89, 0x88, 0x86, 0x85, 0x84, 0x83, 0x81, 0x80, 0x80, 0x7e, 0x7d, +0x7c, 0x7c, 0x7b, 0x7a, 0x78, 0x77, 0x75, 0x73, 0x71, 0x70, 0x6e, 0x6c, 0x6a, 0x69, 0x68, 0x66, +0x65, 0x63, 0x62, 0x60, 0x5f, 0x5e, 0x5e, 0x5e, 0x5f, 0x61, 0x64, 0x69, 0x6d, 0x72, 0x77, 0x7c, +0x81, 0x84, 0x86, 0x87, 0x87, 0x87, 0x86, 0x85, 0x85, 0x84, 0x85, 0x86, 0x88, 0x8a, 0x8c, 0x8e, +0x8f, 0x90, 0x91, 0x91, 0x91, 0x90, 0x8f, 0x8f, 0x8e, 0x8f, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x93, +0x93, 0x92, 0x91, 0x8f, 0x8d, 0x8a, 0x87, 0x84, 0x80, 0x7c, 0x78, 0x75, 0x71, 0x6e, 0x6c, 0x69, +0x68, 0x66, 0x66, 0x66, 0x66, 0x66, 0x67, 0x68, 0x69, 0x69, 0x6a, 0x69, 0x69, 0x68, 0x67, 0x66, +0x66, 0x65, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6b, 0x6d, 0x6e, 0x70, 0x71, 0x73, 0x74, 0x75, 0x76, +0x77, 0x79, 0x7b, 0x7c, 0x7e, 0x81, 0x83, 0x84, 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, +0x88, 0x87, 0x87, 0x86, 0x86, 0x85, 0x84, 0x84, 0x83, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, +0x80, 0x7e, 0x7d, 0x7b, 0x7a, 0x78, 0x75, 0x73, 0x71, 0x6f, 0x6e, 0x6d, 0x6c, 0x6b, 0x6b, 0x6a, +0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c, 0x6d, +0x6e, 0x6f, 0x70, 0x71, 0x73, 0x74, 0x76, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, +0x7e, 0x80, 0x81, 0x83, 0x84, 0x86, 0x87, 0x88, 0x8a, 0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8c, +0x8c, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, +0x8f, 0x8f, 0x8f, 0x8e, 0x8e, 0x8d, 0x8d, 0x8c, 0x8b, 0x8a, 0x8a, 0x89, 0x89, 0x89, 0x8a, 0x8a, +0x8b, 0x8c, 0x8e, 0x90, 0x91, 0x93, 0x94, 0x95, 0x96, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x98, +0x99, 0x9a, 0x9b, 0x9d, 0x9f, 0xa1, 0xa3, 0xa6, 0xa9, 0xab, 0xad, 0xaf, 0xb1, 0xb1, 0xaf, 0xab, +0xa7, 0xa0, 0x97, 0x8d, 0x83, 0x79, 0x6f, 0x68, 0x62, 0x60, 0x60, 0x63, 0x68, 0x6f, 0x76, 0x7c, +0x82, 0x85, 0x85, 0x82, 0x7d, 0x78, 0x72, 0x6b, 0x66, 0x62, 0x61, 0x62, 0x64, 0x68, 0x6c, 0x70, +0x73, 0x74, 0x74, 0x73, 0x70, 0x6c, 0x69, 0x66, 0x65, 0x65, 0x67, 0x6c, 0x71, 0x79, 0x81, 0x89, +0x90, 0x96, 0x9b, 0x9f, 0xa1, 0xa1, 0xa1, 0xa1, 0x9f, 0x9d, 0x9a, 0x98, 0x96, 0x93, 0x91, 0x8f, +0x8e, 0x8d, 0x8c, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8b, 0x89, 0x87, 0x85, +0x82, 0x7e, 0x7b, 0x78, 0x76, 0x73, 0x71, 0x6f, 0x6d, 0x6b, 0x6a, 0x68, 0x67, 0x65, 0x63, 0x61, +0x5f, 0x5d, 0x5b, 0x5a, 0x59, 0x59, 0x5a, 0x5c, 0x5f, 0x63, 0x68, 0x6d, 0x72, 0x77, 0x7b, 0x7e, +0x80, 0x81, 0x80, 0x7e, 0x7c, 0x7b, 0x79, 0x79, 0x79, 0x7a, 0x7c, 0x80, 0x83, 0x87, 0x8a, 0x8d, +0x90, 0x92, 0x94, 0x94, 0x95, 0x96, 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x96, 0x96, 0x95, 0x94, +0x92, 0x91, 0x8f, 0x8d, 0x8a, 0x88, 0x86, 0x83, 0x81, 0x7d, 0x7a, 0x77, 0x75, 0x72, 0x70, 0x6e, +0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6d, 0x6c, 0x6a, 0x68, 0x65, 0x62, 0x5f, 0x5d, 0x5b, +0x59, 0x59, 0x59, 0x5a, 0x5c, 0x5e, 0x61, 0x63, 0x66, 0x68, 0x6a, 0x6c, 0x6d, 0x6f, 0x70, 0x71, +0x73, 0x74, 0x75, 0x76, 0x77, 0x79, 0x7a, 0x7c, 0x7e, 0x80, 0x82, 0x84, 0x85, 0x87, 0x88, 0x89, +0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, +0x85, 0x83, 0x81, 0x7e, 0x7b, 0x79, 0x76, 0x74, 0x72, 0x70, 0x6f, 0x6e, 0x6d, 0x6d, 0x6c, 0x6c, +0x6c, 0x6c, 0x6c, 0x6d, 0x6c, 0x6c, 0x6c, 0x6b, 0x6a, 0x6a, 0x69, 0x69, 0x68, 0x68, 0x68, 0x68, +0x69, 0x6a, 0x6b, 0x6d, 0x6e, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x75, 0x76, 0x77, 0x79, 0x7a, +0x7c, 0x80, 0x82, 0x85, 0x88, 0x8a, 0x8c, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, +0x8f, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x98, 0x98, 0x98, 0x98, 0x97, +0x96, 0x96, 0x95, 0x93, 0x92, 0x91, 0x90, 0x8f, 0x8e, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x94, 0x95, +0x96, 0x97, 0x97, 0x97, 0x96, 0x95, 0x95, 0x94, 0x94, 0x95, 0x96, 0x97, 0x97, 0x98, 0x9a, 0x9b, +0x9b, 0x9c, 0x9d, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa1, 0xa0, 0x9d, 0x99, 0x94, 0x8c, 0x84, 0x7a, +0x72, 0x6b, 0x66, 0x62, 0x62, 0x65, 0x6a, 0x72, 0x7a, 0x83, 0x8a, 0x8d, 0x8e, 0x8c, 0x88, 0x82, +0x79, 0x72, 0x6b, 0x65, 0x62, 0x61, 0x63, 0x66, 0x6a, 0x6f, 0x73, 0x75, 0x75, 0x73, 0x71, 0x6e, +0x6b, 0x68, 0x67, 0x68, 0x6a, 0x6e, 0x74, 0x7a, 0x81, 0x87, 0x8d, 0x90, 0x93, 0x94, 0x94, 0x93, +0x92, 0x92, 0x91, 0x90, 0x8f, 0x8e, 0x8d, 0x8c, 0x8b, 0x8a, 0x89, 0x88, 0x88, 0x88, 0x88, 0x89, +0x8a, 0x8d, 0x8f, 0x91, 0x93, 0x94, 0x95, 0x93, 0x91, 0x8f, 0x8b, 0x87, 0x83, 0x7e, 0x7a, 0x76, +0x73, 0x71, 0x6f, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6d, 0x6c, 0x6b, 0x69, 0x68, 0x66, 0x65, +0x64, 0x64, 0x65, 0x66, 0x69, 0x6c, 0x6f, 0x72, 0x74, 0x76, 0x76, 0x76, 0x75, 0x74, 0x72, 0x70, +0x6f, 0x6e, 0x6f, 0x70, 0x73, 0x76, 0x7a, 0x7e, 0x83, 0x86, 0x89, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, +0x90, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x90, 0x8f, 0x8e, 0x8d, 0x8c, 0x8b, 0x8b, 0x8a, 0x8a, +0x8b, 0x8b, 0x8a, 0x8a, 0x88, 0x87, 0x85, 0x83, 0x81, 0x7e, 0x7c, 0x7a, 0x79, 0x79, 0x78, 0x78, +0x77, 0x76, 0x75, 0x73, 0x70, 0x6d, 0x6a, 0x66, 0x63, 0x61, 0x5f, 0x5e, 0x5d, 0x5e, 0x5f, 0x60, +0x61, 0x63, 0x64, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6b, 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, +0x6d, 0x6c, 0x6c, 0x6d, 0x6e, 0x6f, 0x71, 0x73, 0x76, 0x78, 0x7b, 0x7d, 0x80, 0x82, 0x83, 0x83, +0x84, 0x84, 0x84, 0x84, 0x85, 0x86, 0x87, 0x88, 0x88, 0x88, 0x87, 0x86, 0x85, 0x82, 0x80, 0x7c, +0x7a, 0x78, 0x76, 0x75, 0x74, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x78, +0x77, 0x76, 0x74, 0x73, 0x71, 0x6e, 0x6c, 0x6b, 0x69, 0x68, 0x67, 0x67, 0x67, 0x68, 0x69, 0x6b, +0x6d, 0x6f, 0x70, 0x72, 0x74, 0x75, 0x75, 0x77, 0x78, 0x79, 0x7a, 0x7c, 0x7d, 0x80, 0x81, 0x82, +0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x87, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, +0x97, 0x99, 0x9a, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x9f, 0x9e, 0x9e, +0x9d, 0x9d, 0x9d, 0x9e, 0x9f, 0xa1, 0xa2, 0xa2, 0xa3, 0xa5, 0xa5, 0xa4, 0xa5, 0xa6, 0xa5, 0xa4, +0xa4, 0xa3, 0xa3, 0xa2, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa0, 0x9f, 0x9d, 0x99, 0x94, 0x8d, 0x84, +0x7a, 0x70, 0x67, 0x5f, 0x59, 0x55, 0x54, 0x57, 0x5d, 0x65, 0x6e, 0x78, 0x81, 0x86, 0x89, 0x88, +0x84, 0x7d, 0x75, 0x6c, 0x64, 0x5c, 0x57, 0x55, 0x56, 0x58, 0x5d, 0x62, 0x67, 0x6b, 0x6d, 0x6e, +0x6e, 0x6d, 0x6c, 0x6b, 0x6b, 0x6d, 0x71, 0x75, 0x7c, 0x83, 0x8a, 0x90, 0x94, 0x97, 0x98, 0x97, +0x95, 0x93, 0x91, 0x8f, 0x8d, 0x8c, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, +0x90, 0x91, 0x92, 0x95, 0x97, 0x9a, 0x9c, 0x9e, 0x9e, 0x9e, 0x9b, 0x98, 0x92, 0x8c, 0x86, 0x80, +0x79, 0x74, 0x70, 0x6d, 0x6c, 0x6b, 0x6c, 0x6d, 0x6f, 0x71, 0x72, 0x73, 0x72, 0x71, 0x70, 0x6e, +0x6b, 0x69, 0x67, 0x66, 0x65, 0x65, 0x65, 0x66, 0x67, 0x69, 0x69, 0x6a, 0x6a, 0x69, 0x68, 0x67, +0x66, 0x66, 0x66, 0x67, 0x69, 0x6c, 0x70, 0x74, 0x78, 0x7c, 0x81, 0x84, 0x86, 0x88, 0x89, 0x8a, +0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, 0x8f, +0x90, 0x92, 0x94, 0x96, 0x97, 0x98, 0x97, 0x96, 0x94, 0x91, 0x8e, 0x8b, 0x88, 0x85, 0x83, 0x81, +0x80, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x77, 0x74, 0x72, 0x6f, 0x6c, 0x6a, 0x68, 0x66, 0x65, 0x65, +0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x63, 0x63, 0x62, 0x61, 0x60, 0x60, 0x5f, 0x5f, 0x5e, +0x5f, 0x5f, 0x5f, 0x60, 0x61, 0x63, 0x64, 0x67, 0x69, 0x6d, 0x6f, 0x72, 0x75, 0x77, 0x79, 0x7b, +0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x81, 0x82, 0x84, 0x85, 0x87, 0x88, 0x89, +0x8a, 0x8a, 0x8a, 0x89, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x84, 0x83, 0x82, 0x81, 0x81, 0x7e, +0x7d, 0x7c, 0x7a, 0x78, 0x77, 0x75, 0x73, 0x72, 0x70, 0x6e, 0x6d, 0x6d, 0x6c, 0x6b, 0x6b, 0x6b, +0x6c, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x73, 0x74, 0x74, +0x75, 0x76, 0x77, 0x78, 0x79, 0x7b, 0x7d, 0x80, 0x82, 0x84, 0x87, 0x89, 0x8b, 0x8d, 0x8f, 0x91, +0x93, 0x94, 0x95, 0x96, 0x96, 0x97, 0x97, 0x98, 0x98, 0x99, 0x9a, 0x9a, 0x9b, 0x9c, 0x9e, 0x9f, +0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa7, +0xa7, 0xa6, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa7, 0xa8, 0xaa, 0xab, 0xad, 0xae, 0xab, 0xa7, +0xa1, 0x99, 0x8e, 0x82, 0x75, 0x6a, 0x60, 0x58, 0x53, 0x53, 0x56, 0x5d, 0x67, 0x72, 0x7d, 0x87, +0x8d, 0x8e, 0x8d, 0x87, 0x7d, 0x73, 0x68, 0x5e, 0x54, 0x4e, 0x4a, 0x4a, 0x4d, 0x51, 0x57, 0x5c, +0x60, 0x63, 0x64, 0x62, 0x60, 0x5e, 0x5d, 0x5d, 0x5e, 0x62, 0x68, 0x6f, 0x76, 0x7d, 0x85, 0x8a, +0x8d, 0x8e, 0x8d, 0x8b, 0x88, 0x85, 0x82, 0x81, 0x81, 0x82, 0x85, 0x87, 0x8a, 0x8d, 0x8f, 0x91, +0x92, 0x93, 0x93, 0x95, 0x97, 0x9a, 0x9e, 0xa2, 0xa6, 0xab, 0xad, 0xaf, 0xae, 0xab, 0xa6, 0x9f, +0x96, 0x8d, 0x85, 0x7c, 0x77, 0x73, 0x72, 0x73, 0x76, 0x7a, 0x80, 0x85, 0x89, 0x8c, 0x8d, 0x8c, +0x89, 0x84, 0x7e, 0x79, 0x73, 0x6e, 0x6a, 0x67, 0x66, 0x65, 0x64, 0x65, 0x65, 0x65, 0x64, 0x63, +0x62, 0x5f, 0x5d, 0x5b, 0x5a, 0x5a, 0x5c, 0x5e, 0x62, 0x66, 0x6a, 0x6e, 0x72, 0x75, 0x77, 0x77, +0x77, 0x77, 0x75, 0x74, 0x73, 0x73, 0x73, 0x74, 0x75, 0x77, 0x78, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, +0x81, 0x84, 0x87, 0x8a, 0x8e, 0x92, 0x95, 0x98, 0x9a, 0x9a, 0x9a, 0x98, 0x95, 0x92, 0x8f, 0x8c, +0x89, 0x88, 0x87, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8c, 0x8b, 0x8a, 0x88, 0x86, 0x84, 0x82, +0x81, 0x7e, 0x7c, 0x7a, 0x78, 0x76, 0x73, 0x71, 0x6e, 0x6b, 0x69, 0x67, 0x65, 0x64, 0x63, 0x63, +0x62, 0x61, 0x61, 0x60, 0x5e, 0x5d, 0x5c, 0x5c, 0x5c, 0x5d, 0x5f, 0x61, 0x63, 0x65, 0x67, 0x69, +0x6a, 0x6a, 0x6a, 0x69, 0x68, 0x67, 0x66, 0x66, 0x67, 0x68, 0x6b, 0x6e, 0x71, 0x75, 0x78, 0x7b, +0x7e, 0x81, 0x82, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x82, 0x82, +0x82, 0x82, 0x83, 0x83, 0x84, 0x85, 0x86, 0x86, 0x86, 0x86, 0x85, 0x84, 0x83, 0x81, 0x80, 0x7d, +0x7c, 0x7b, 0x7a, 0x7a, 0x79, 0x78, 0x78, 0x77, 0x76, 0x76, 0x75, 0x74, 0x74, 0x73, 0x73, 0x73, +0x73, 0x73, 0x74, 0x75, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x84, +0x85, 0x85, 0x86, 0x86, 0x87, 0x88, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8e, 0x90, 0x92, 0x93, 0x95, +0x97, 0x9a, 0x9c, 0x9d, 0x9f, 0xa1, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, +0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb2, 0xb2, 0xb1, 0xae, +0xaa, 0xa4, 0x9c, 0x93, 0x89, 0x7e, 0x75, 0x6d, 0x67, 0x65, 0x66, 0x6b, 0x72, 0x7b, 0x87, 0x8f, +0x95, 0x98, 0x98, 0x93, 0x8b, 0x81, 0x75, 0x6a, 0x5f, 0x56, 0x51, 0x4e, 0x4f, 0x51, 0x56, 0x5b, +0x5f, 0x62, 0x64, 0x64, 0x62, 0x60, 0x5d, 0x5c, 0x5b, 0x5d, 0x60, 0x64, 0x6a, 0x70, 0x75, 0x7a, +0x7d, 0x7e, 0x7d, 0x7b, 0x78, 0x74, 0x71, 0x6f, 0x6d, 0x6e, 0x6f, 0x72, 0x75, 0x79, 0x7d, 0x81, +0x84, 0x87, 0x89, 0x8c, 0x8e, 0x91, 0x95, 0x98, 0x9b, 0x9e, 0xa1, 0xa2, 0xa2, 0xa1, 0x9f, 0x9b, +0x96, 0x90, 0x8b, 0x86, 0x83, 0x81, 0x81, 0x82, 0x85, 0x89, 0x8d, 0x91, 0x95, 0x98, 0x99, 0x9a, +0x99, 0x96, 0x93, 0x8f, 0x8b, 0x87, 0x83, 0x80, 0x7c, 0x7b, 0x79, 0x78, 0x77, 0x77, 0x76, 0x74, +0x73, 0x72, 0x70, 0x6f, 0x6e, 0x6d, 0x6d, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x72, 0x72, 0x71, +0x6f, 0x6d, 0x6b, 0x69, 0x67, 0x65, 0x64, 0x64, 0x64, 0x64, 0x65, 0x67, 0x69, 0x6b, 0x6d, 0x6f, +0x72, 0x74, 0x77, 0x79, 0x7b, 0x7d, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7b, 0x7a, 0x79, +0x79, 0x79, 0x7b, 0x7d, 0x80, 0x83, 0x85, 0x88, 0x8a, 0x8b, 0x8c, 0x8c, 0x8c, 0x8b, 0x8a, 0x89, +0x88, 0x87, 0x87, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7b, 0x79, +0x78, 0x76, 0x75, 0x74, 0x73, 0x72, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74, 0x74, 0x74, 0x73, 0x72, +0x71, 0x6f, 0x6c, 0x6a, 0x68, 0x66, 0x64, 0x64, 0x64, 0x65, 0x67, 0x69, 0x6b, 0x6d, 0x6f, 0x71, +0x72, 0x73, 0x73, 0x72, 0x72, 0x71, 0x70, 0x70, 0x6f, 0x70, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, +0x76, 0x77, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, +0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, +0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x95, +0x96, 0x97, 0x98, 0x99, 0x99, 0x9a, 0x99, 0x9a, 0x9a, 0x9b, 0x9b, 0x9c, 0x9d, 0x9f, 0xa0, 0xa1, +0xa2, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa7, 0xa8, 0xa9, 0xab, 0xac, 0xac, 0xaa, +0xa7, 0xa3, 0x9c, 0x93, 0x8b, 0x82, 0x79, 0x73, 0x6f, 0x6d, 0x6f, 0x74, 0x7b, 0x85, 0x8f, 0x97, +0x9d, 0x9f, 0x9e, 0x99, 0x90, 0x86, 0x7a, 0x6f, 0x65, 0x5d, 0x58, 0x57, 0x59, 0x5d, 0x62, 0x68, +0x6d, 0x70, 0x71, 0x70, 0x6d, 0x69, 0x64, 0x61, 0x5f, 0x5f, 0x60, 0x64, 0x69, 0x6f, 0x73, 0x78, +0x7a, 0x7b, 0x7a, 0x77, 0x73, 0x6f, 0x6a, 0x67, 0x65, 0x66, 0x67, 0x6a, 0x6e, 0x72, 0x76, 0x7a, +0x7d, 0x81, 0x83, 0x84, 0x86, 0x88, 0x8b, 0x8d, 0x8f, 0x91, 0x92, 0x93, 0x92, 0x91, 0x8e, 0x8b, +0x87, 0x83, 0x81, 0x7e, 0x7e, 0x80, 0x82, 0x86, 0x8b, 0x90, 0x94, 0x98, 0x9b, 0x9c, 0x9c, 0x9b, +0x98, 0x95, 0x91, 0x8e, 0x8b, 0x89, 0x87, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, 0x84, +0x82, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x84, 0x84, 0x83, 0x81, 0x7d, +0x7a, 0x76, 0x72, 0x6f, 0x6c, 0x6b, 0x6a, 0x6a, 0x6a, 0x6b, 0x6d, 0x6e, 0x70, 0x72, 0x73, 0x74, +0x75, 0x76, 0x76, 0x77, 0x77, 0x77, 0x77, 0x76, 0x75, 0x73, 0x71, 0x6f, 0x6d, 0x6c, 0x6b, 0x6b, +0x6c, 0x6d, 0x70, 0x73, 0x76, 0x78, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x79, 0x79, 0x78, +0x78, 0x79, 0x79, 0x7a, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, +0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7a, 0x78, 0x77, 0x76, 0x75, +0x74, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x78, 0x78, 0x78, 0x77, +0x77, 0x76, 0x74, 0x73, 0x72, 0x72, 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74, +0x74, 0x74, 0x75, 0x75, 0x76, 0x76, 0x77, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x79, 0x79, 0x78, +0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7c, 0x7d, 0x80, 0x81, 0x82, +0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86, 0x85, 0x85, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x87, +0x89, 0x8b, 0x8c, 0x8e, 0x8f, 0x91, 0x92, 0x92, 0x93, 0x94, 0x94, 0x95, 0x96, 0x97, 0x97, 0x98, +0x99, 0x9a, 0x9a, 0x9a, 0x9b, 0x9c, 0x9d, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa5, 0xa6, +0xa7, 0xa9, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xaf, 0xae, 0xab, 0xa7, 0xa2, 0x9c, 0x95, 0x8e, 0x88, +0x83, 0x7e, 0x7d, 0x7e, 0x83, 0x88, 0x8e, 0x95, 0x9c, 0xa0, 0xa2, 0xa0, 0x9d, 0x96, 0x8e, 0x84, +0x7a, 0x72, 0x6b, 0x66, 0x65, 0x65, 0x67, 0x69, 0x6d, 0x6f, 0x70, 0x70, 0x6e, 0x6b, 0x67, 0x63, +0x60, 0x5e, 0x5e, 0x5f, 0x61, 0x65, 0x69, 0x6c, 0x6f, 0x71, 0x71, 0x6f, 0x6c, 0x68, 0x64, 0x60, +0x5d, 0x5b, 0x5a, 0x5b, 0x5c, 0x5f, 0x63, 0x67, 0x6a, 0x6e, 0x71, 0x74, 0x77, 0x7a, 0x7c, 0x7e, +0x81, 0x82, 0x83, 0x84, 0x84, 0x83, 0x81, 0x80, 0x7d, 0x7c, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x83, +0x87, 0x8b, 0x8f, 0x92, 0x95, 0x97, 0x97, 0x97, 0x96, 0x95, 0x93, 0x91, 0x90, 0x8f, 0x8f, 0x8f, +0x90, 0x91, 0x92, 0x93, 0x93, 0x93, 0x92, 0x90, 0x8f, 0x8d, 0x8b, 0x89, 0x89, 0x89, 0x89, 0x8b, +0x8d, 0x8f, 0x91, 0x92, 0x93, 0x92, 0x90, 0x8e, 0x8a, 0x86, 0x82, 0x7d, 0x79, 0x77, 0x75, 0x75, +0x75, 0x76, 0x77, 0x79, 0x7a, 0x7b, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x79, 0x78, 0x77, 0x75, 0x74, +0x72, 0x71, 0x6f, 0x6e, 0x6c, 0x6b, 0x6a, 0x69, 0x68, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6e, 0x6f, +0x6f, 0x70, 0x70, 0x70, 0x70, 0x6f, 0x6f, 0x6e, 0x6d, 0x6c, 0x6c, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, +0x6b, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x75, 0x76, 0x78, 0x79, +0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x79, 0x78, 0x77, 0x76, 0x75, 0x75, 0x75, 0x76, 0x77, 0x79, +0x7a, 0x7c, 0x7e, 0x81, 0x83, 0x83, 0x84, 0x84, 0x84, 0x83, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7d, +0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, +0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x77, 0x77, 0x77, +0x77, 0x78, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x89, +0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 0x93, 0x93, +0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9a, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa2, 0xa2, 0xa1, +0xa0, 0x9f, 0x9b, 0x97, 0x93, 0x8e, 0x8a, 0x87, 0x85, 0x85, 0x86, 0x88, 0x8c, 0x92, 0x97, 0x9a, +0x9d, 0x9e, 0x9e, 0x9a, 0x96, 0x90, 0x8b, 0x84, 0x7e, 0x7b, 0x79, 0x79, 0x79, 0x7b, 0x7e, 0x81, +0x82, 0x82, 0x81, 0x7e, 0x7a, 0x77, 0x73, 0x70, 0x6e, 0x6d, 0x6e, 0x70, 0x72, 0x74, 0x77, 0x78, +0x79, 0x79, 0x78, 0x75, 0x73, 0x70, 0x6d, 0x6a, 0x68, 0x66, 0x65, 0x65, 0x65, 0x65, 0x66, 0x67, +0x68, 0x69, 0x6a, 0x6c, 0x6d, 0x6f, 0x71, 0x73, 0x74, 0x76, 0x76, 0x76, 0x75, 0x74, 0x72, 0x70, +0x6e, 0x6d, 0x6c, 0x6b, 0x6c, 0x6d, 0x6f, 0x71, 0x74, 0x77, 0x7a, 0x7c, 0x7e, 0x81, 0x81, 0x82, +0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x87, 0x87, 0x87, 0x86, +0x86, 0x85, 0x84, 0x84, 0x84, 0x85, 0x86, 0x87, 0x89, 0x8b, 0x8c, 0x8d, 0x8e, 0x8e, 0x8e, 0x8d, +0x8c, 0x8b, 0x8a, 0x88, 0x87, 0x86, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, +0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7c, 0x7b, +0x7b, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, +0x79, 0x79, 0x79, 0x79, 0x79, 0x78, 0x78, 0x77, 0x76, 0x76, 0x75, 0x74, 0x74, 0x73, 0x73, 0x73, +0x73, 0x73, 0x72, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x75, +0x74, 0x74, 0x73, 0x73, 0x73, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75, 0x76, 0x77, 0x78, 0x78, 0x79, +0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, +0x85, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, +0x87, 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x89, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8b, 0x8b, +0x8b, 0x8a, 0x8a, 0x8a, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, +0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, +0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, +0x78, 0x78, 0x77, 0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, +0x76, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x76, +0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, +0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x81, 0x82, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, +0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, +0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, +0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, +0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, +0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, +0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, +0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, +0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, +0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, 0x78, +0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, +0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, +0x77, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, +0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, +0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, +0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, +0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, +0x83, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, +0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, +0x86, 0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, +0x87, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, +0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, +0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, +0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x84, +0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, +0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, +0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, +0x82, 0x83, 0x83, 0x83, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, +0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, +0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x79, 0x78, 0x77, 0x76, 0x75, 0x76, 0x77, 0x78, +0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, 0x79, 0x7a, 0x7b, +0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, +0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, 0x82, +0x83, 0x83, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x81, 0x81, +0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x82, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, +0x82, 0x82, 0x82, 0x83, 0x83, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x84, 0x84, 0x83, 0x83, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, +0x84, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, +0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, +0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, +0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, +0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x84, 0x84, +0x85, 0x85, 0x84, 0x83, 0x82, 0x82, 0x82, 0x83, 0x84, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, +0x86, 0x87, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, +0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x89, 0x88, 0x88, 0x88, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, +0x8a, 0x8a, 0x8a, 0x89, 0x89, 0x89, 0x88, 0x87, 0x87, 0x87, 0x88, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, +0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x87, 0x86, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, +0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x83, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, +0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x78, +0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, +0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x82, 0x83, 0x83, 0x83, 0x83, +0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x83, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, +0x7c, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, +0x77, 0x76, 0x76, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x75, 0x75, 0x75, 0x75, 0x74, 0x74, 0x74, +0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, +0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, +0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x83, 0x84, 0x84, 0x84, 0x84, 0x83, +0x82, 0x82, 0x82, 0x83, 0x83, 0x84, 0x84, 0x85, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, +0x85, 0x85, 0x85, 0x86, 0x86, 0x87, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, +0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8d, 0x8d, +0x8e, 0x8e, 0x8e, 0x8d, 0x8c, 0x8c, 0x8b, 0x8b, 0x8a, 0x8a, 0x8a, 0x89, 0x89, 0x89, 0x8a, 0x8b, +0x8b, 0x8c, 0x8d, 0x8e, 0x8e, 0x8d, 0x8d, 0x8c, 0x8c, 0x8b, 0x8a, 0x89, 0x88, 0x86, 0x86, 0x85, +0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x83, 0x83, +0x82, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7b, 0x7b, 0x7a, 0x79, 0x79, 0x78, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, +0x77, 0x76, 0x76, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x77, 0x77, 0x77, +0x76, 0x76, 0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x76, 0x77, 0x77, 0x78, 0x79, +0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, +0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7d, 0x7c, +0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x77, +0x77, 0x76, 0x75, 0x75, 0x75, 0x74, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x74, 0x73, 0x73, +0x73, 0x72, 0x72, 0x72, 0x72, 0x72, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x70, 0x70, +0x71, 0x71, 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, +0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7c, 0x7c, +0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x83, +0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, +0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, +0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d, +0x8d, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8e, 0x8e, 0x8d, 0x8d, 0x8c, 0x8c, 0x8c, +0x8c, 0x8c, 0x8c, 0x8c, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x8e, 0x8d, 0x8b, 0x8a, +0x89, 0x88, 0x87, 0x87, 0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x87, 0x87, 0x86, 0x85, 0x84, 0x83, +0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, +0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x77, 0x76, 0x75, +0x75, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, +0x76, 0x76, 0x76, 0x76, 0x75, 0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x76, 0x76, 0x77, +0x77, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, +0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, +0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 0x84, 0x84, +0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, +0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, +0x83, 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7a, 0x7a, +0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x77, 0x76, 0x75, 0x73, 0x72, +0x71, 0x71, 0x72, 0x72, 0x73, 0x74, 0x75, 0x75, 0x75, 0x75, 0x74, 0x74, 0x73, 0x72, 0x71, 0x70, +0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x71, 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, +0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x76, 0x76, 0x77, 0x77, +0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x85, 0x85, 0x86, 0x85, +0x85, 0x85, 0x85, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x89, +0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, +0x8b, 0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x91, +0x91, 0x91, 0x91, 0x91, 0x90, 0x8f, 0x8e, 0x8d, 0x8d, 0x8c, 0x8c, 0x8c, 0x8c, 0x8d, 0x8e, 0x90, +0x91, 0x92, 0x93, 0x93, 0x92, 0x91, 0x90, 0x8e, 0x8c, 0x8b, 0x89, 0x88, 0x88, 0x87, 0x87, 0x88, +0x88, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x89, 0x88, 0x86, 0x85, 0x84, 0x83, 0x82, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, +0x79, 0x79, 0x79, 0x79, 0x79, 0x78, 0x77, 0x76, 0x76, 0x75, 0x74, 0x73, 0x73, 0x73, 0x73, 0x73, +0x74, 0x74, 0x75, 0x75, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x75, 0x75, 0x74, 0x74, +0x74, 0x73, 0x74, 0x74, 0x74, 0x75, 0x76, 0x77, 0x77, 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x78, +0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, +0x85, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, +0x86, 0x86, 0x85, 0x85, 0x84, 0x84, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, +0x7b, 0x7a, 0x7a, 0x7a, 0x79, 0x78, 0x77, 0x76, 0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, +0x76, 0x76, 0x77, 0x76, 0x76, 0x74, 0x73, 0x71, 0x70, 0x6f, 0x6e, 0x6d, 0x6e, 0x6e, 0x6f, 0x70, +0x71, 0x73, 0x74, 0x74, 0x74, 0x74, 0x73, 0x72, 0x71, 0x70, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x71, +0x72, 0x73, 0x73, 0x74, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, 0x77, +0x77, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x84, 0x84, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, +0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, 0x88, +0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8e, +0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x91, 0x92, 0x92, 0x93, 0x94, 0x94, +0x93, 0x92, 0x91, 0x90, 0x8f, 0x8e, 0x8d, 0x8c, 0x8c, 0x8c, 0x8c, 0x8d, 0x8f, 0x90, 0x91, 0x93, +0x94, 0x94, 0x93, 0x92, 0x90, 0x8e, 0x8c, 0x8a, 0x89, 0x87, 0x86, 0x86, 0x86, 0x87, 0x88, 0x89, +0x8a, 0x8b, 0x8b, 0x8b, 0x8a, 0x88, 0x86, 0x84, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7f, 0x80, 0x81, +0x81, 0x81, 0x81, 0x80, 0x7e, 0x7c, 0x7a, 0x79, 0x77, 0x76, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7a, +0x7a, 0x7a, 0x7a, 0x79, 0x78, 0x76, 0x75, 0x73, 0x72, 0x71, 0x71, 0x71, 0x72, 0x73, 0x74, 0x75, +0x75, 0x76, 0x76, 0x76, 0x76, 0x75, 0x74, 0x74, 0x74, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, +0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, +0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, +0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x85, 0x85, 0x85, +0x85, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, +0x85, 0x85, 0x85, 0x84, 0x84, 0x83, 0x83, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x79, +0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x78, 0x77, 0x75, 0x73, 0x72, 0x71, 0x70, 0x70, 0x70, +0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x76, 0x75, 0x74, 0x72, 0x70, 0x6e, 0x6c, 0x6b, 0x6b, 0x6c, +0x6d, 0x6f, 0x71, 0x72, 0x73, 0x74, 0x74, 0x74, 0x73, 0x72, 0x71, 0x70, 0x6e, 0x6e, 0x6e, 0x6f, +0x70, 0x72, 0x73, 0x74, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, +0x76, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x83, 0x84, 0x84, 0x83, 0x83, 0x82, +0x82, 0x82, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x86, +0x86, 0x87, 0x87, 0x88, 0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, +0x8c, 0x8c, 0x8d, 0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, +0x93, 0x93, 0x93, 0x92, 0x91, 0x90, 0x8f, 0x8e, 0x8d, 0x8c, 0x8c, 0x8c, 0x8d, 0x8e, 0x8f, 0x91, +0x93, 0x94, 0x95, 0x95, 0x94, 0x92, 0x90, 0x8e, 0x8c, 0x8a, 0x88, 0x87, 0x86, 0x86, 0x87, 0x88, +0x89, 0x8b, 0x8c, 0x8c, 0x8c, 0x8b, 0x8a, 0x88, 0x86, 0x85, 0x83, 0x82, 0x81, 0x80, 0x80, 0x80, +0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x78, 0x79, 0x79, +0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x78, 0x77, 0x76, 0x74, 0x73, 0x72, 0x71, 0x71, 0x72, 0x72, 0x73, +0x74, 0x75, 0x75, 0x76, 0x76, 0x76, 0x75, 0x75, 0x74, 0x73, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, +0x72, 0x72, 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, 0x77, +0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, +0x81, 0x81, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x87, 0x88, 0x87, 0x87, 0x86, 0x85, 0x84, +0x84, 0x83, 0x83, 0x84, 0x84, 0x85, 0x86, 0x86, 0x87, 0x87, 0x88, 0x87, 0x87, 0x87, 0x86, 0x86, +0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, +0x7a, 0x7a, 0x79, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0x75, 0x74, 0x73, +0x72, 0x72, 0x71, 0x71, 0x70, 0x70, 0x71, 0x71, 0x72, 0x73, 0x73, 0x73, 0x72, 0x71, 0x71, 0x70, +0x6f, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x71, 0x71, 0x71, 0x70, 0x70, +0x70, 0x70, 0x71, 0x71, 0x72, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, +0x75, 0x75, 0x76, 0x77, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, +0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x83, 0x83, 0x84, +0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x85, 0x85, 0x86, 0x87, 0x87, 0x88, +0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, +0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, 0x91, +0x91, 0x91, 0x91, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x93, 0x92, 0x91, 0x90, 0x8e, 0x8d, 0x8c, +0x8c, 0x8d, 0x8e, 0x8f, 0x91, 0x92, 0x94, 0x95, 0x95, 0x95, 0x94, 0x93, 0x90, 0x8d, 0x8a, 0x88, +0x86, 0x85, 0x85, 0x85, 0x87, 0x89, 0x8b, 0x8c, 0x8d, 0x8e, 0x8e, 0x8c, 0x8a, 0x88, 0x85, 0x83, +0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7d, 0x7b, 0x79, 0x78, +0x77, 0x77, 0x77, 0x78, 0x79, 0x7b, 0x7b, 0x7c, 0x7b, 0x7a, 0x79, 0x77, 0x74, 0x72, 0x71, 0x70, +0x6f, 0x70, 0x71, 0x72, 0x74, 0x75, 0x76, 0x76, 0x76, 0x76, 0x75, 0x74, 0x73, 0x72, 0x72, 0x71, +0x71, 0x71, 0x72, 0x72, 0x72, 0x73, 0x72, 0x72, 0x72, 0x72, 0x73, 0x73, 0x74, 0x75, 0x76, 0x77, +0x78, 0x79, 0x79, 0x79, 0x78, 0x77, 0x77, 0x76, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, +0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x83, 0x83, 0x83, +0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x85, 0x86, 0x87, 0x88, 0x89, 0x89, 0x89, 0x89, +0x88, 0x87, 0x87, 0x86, 0x86, 0x85, 0x85, 0x85, 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, +0x88, 0x88, 0x87, 0x87, 0x87, 0x86, 0x86, 0x85, 0x84, 0x84, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, +0x7b, 0x7a, 0x79, 0x79, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0x76, 0x76, 0x75, +0x74, 0x73, 0x72, 0x72, 0x71, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x6f, +0x6f, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x6f, 0x6f, 0x6e, +0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x74, 0x75, 0x75, 0x75, 0x74, 0x74, +0x74, 0x74, 0x74, 0x74, 0x75, 0x76, 0x76, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, +0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x83, +0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, +0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, +0x8c, 0x8d, 0x8c, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, +0x92, 0x92, 0x93, 0x93, 0x93, 0x94, 0x95, 0x95, 0x96, 0x96, 0x96, 0x95, 0x94, 0x92, 0x90, 0x8e, +0x8d, 0x8c, 0x8b, 0x8b, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x97, 0x98, 0x99, 0x98, 0x97, 0x94, 0x90, +0x8c, 0x88, 0x85, 0x83, 0x82, 0x83, 0x84, 0x86, 0x89, 0x8c, 0x8e, 0x90, 0x90, 0x8f, 0x8d, 0x8a, +0x86, 0x83, 0x7e, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x80, 0x82, 0x83, 0x83, 0x83, 0x81, 0x7e, 0x7b, +0x79, 0x76, 0x75, 0x74, 0x74, 0x75, 0x77, 0x79, 0x7b, 0x7c, 0x7c, 0x7c, 0x7a, 0x78, 0x76, 0x73, +0x70, 0x6f, 0x6e, 0x6e, 0x6e, 0x70, 0x71, 0x73, 0x75, 0x76, 0x76, 0x76, 0x76, 0x75, 0x74, 0x73, +0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x73, 0x74, 0x75, +0x77, 0x78, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x78, 0x77, 0x76, 0x76, 0x76, 0x77, 0x78, 0x7a, +0x7c, 0x7d, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x82, 0x83, 0x84, +0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x84, 0x85, 0x87, 0x88, 0x8a, 0x8b, +0x8b, 0x8b, 0x8b, 0x8a, 0x88, 0x87, 0x86, 0x85, 0x84, 0x84, 0x85, 0x85, 0x86, 0x87, 0x88, 0x88, +0x89, 0x89, 0x88, 0x88, 0x88, 0x87, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x84, 0x84, 0x83, 0x82, +0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7d, 0x7c, +0x7b, 0x7a, 0x7a, 0x79, 0x78, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x76, +0x76, 0x76, 0x76, 0x75, 0x75, 0x73, 0x72, 0x70, 0x6f, 0x6d, 0x6d, 0x6c, 0x6d, 0x6d, 0x6f, 0x70, +0x72, 0x73, 0x74, 0x74, 0x74, 0x73, 0x72, 0x70, 0x6e, 0x6d, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0x6e, +0x6f, 0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, +0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x81, 0x81, 0x82, 0x82, 0x83, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, +0x85, 0x85, 0x86, 0x87, 0x87, 0x88, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, +0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x91, 0x91, +0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x93, 0x94, 0x94, 0x95, 0x96, 0x96, 0x97, 0x97, 0x96, 0x96, +0x95, 0x93, 0x91, 0x8f, 0x8d, 0x8c, 0x8c, 0x8c, 0x8d, 0x8e, 0x90, 0x93, 0x95, 0x98, 0x99, 0x9a, +0x9a, 0x98, 0x95, 0x91, 0x8d, 0x88, 0x84, 0x82, 0x80, 0x80, 0x81, 0x84, 0x87, 0x8b, 0x8e, 0x91, +0x92, 0x92, 0x90, 0x8c, 0x88, 0x83, 0x7e, 0x7a, 0x78, 0x77, 0x78, 0x7a, 0x7c, 0x80, 0x82, 0x83, +0x84, 0x83, 0x80, 0x7c, 0x79, 0x76, 0x73, 0x71, 0x71, 0x72, 0x73, 0x76, 0x78, 0x7a, 0x7b, 0x7b, +0x7a, 0x78, 0x75, 0x72, 0x6f, 0x6d, 0x6b, 0x6b, 0x6c, 0x6d, 0x6f, 0x71, 0x73, 0x74, 0x75, 0x75, +0x75, 0x74, 0x73, 0x72, 0x71, 0x71, 0x70, 0x71, 0x71, 0x71, 0x71, 0x72, 0x71, 0x71, 0x71, 0x71, +0x71, 0x72, 0x73, 0x75, 0x77, 0x79, 0x7a, 0x7c, 0x7c, 0x7c, 0x7c, 0x7a, 0x79, 0x77, 0x76, 0x75, +0x75, 0x76, 0x78, 0x7a, 0x7d, 0x80, 0x82, 0x84, 0x84, 0x84, 0x84, 0x83, 0x82, 0x81, 0x81, 0x81, +0x81, 0x82, 0x84, 0x85, 0x86, 0x87, 0x88, 0x88, 0x87, 0x86, 0x85, 0x84, 0x84, 0x84, 0x85, 0x86, +0x88, 0x89, 0x8b, 0x8d, 0x8d, 0x8e, 0x8d, 0x8c, 0x8a, 0x88, 0x86, 0x85, 0x84, 0x83, 0x84, 0x84, +0x86, 0x87, 0x88, 0x88, 0x89, 0x89, 0x89, 0x88, 0x88, 0x87, 0x86, 0x86, 0x85, 0x85, 0x84, 0x84, +0x83, 0x82, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x7e, 0x7d, 0x7b, 0x7a, 0x78, 0x77, 0x76, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x74, 0x74, +0x73, 0x73, 0x72, 0x71, 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x72, 0x71, 0x70, 0x6f, 0x6e, 0x6d, +0x6c, 0x6b, 0x6b, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x71, 0x71, 0x71, 0x70, 0x70, 0x6f, +0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x74, 0x75, 0x76, +0x76, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, +0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, +0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, +0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x86, 0x86, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, +0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, +0x8f, 0x90, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x95, 0x96, 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, +0x98, 0x98, 0x96, 0x95, 0x93, 0x91, 0x8e, 0x8d, 0x8b, 0x8a, 0x8b, 0x8c, 0x8f, 0x92, 0x96, 0x9a, +0x9e, 0xa0, 0xa0, 0x9f, 0x9b, 0x96, 0x90, 0x89, 0x84, 0x7e, 0x7b, 0x7a, 0x7b, 0x80, 0x84, 0x8a, +0x8f, 0x93, 0x95, 0x95, 0x93, 0x8f, 0x89, 0x83, 0x7d, 0x78, 0x75, 0x74, 0x75, 0x77, 0x7a, 0x7d, +0x81, 0x82, 0x83, 0x81, 0x7e, 0x7a, 0x76, 0x72, 0x6f, 0x6e, 0x6e, 0x70, 0x72, 0x75, 0x77, 0x7a, +0x7a, 0x7a, 0x78, 0x75, 0x72, 0x6e, 0x6b, 0x69, 0x68, 0x68, 0x69, 0x6b, 0x6e, 0x70, 0x72, 0x74, +0x74, 0x74, 0x73, 0x72, 0x71, 0x70, 0x6f, 0x6f, 0x70, 0x71, 0x71, 0x72, 0x72, 0x72, 0x72, 0x71, +0x70, 0x6f, 0x6f, 0x70, 0x72, 0x74, 0x76, 0x79, 0x7c, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7b, 0x79, +0x78, 0x77, 0x76, 0x77, 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x85, 0x86, 0x86, 0x86, 0x85, 0x84, 0x83, +0x83, 0x83, 0x84, 0x85, 0x87, 0x88, 0x89, 0x8a, 0x8a, 0x8a, 0x89, 0x88, 0x86, 0x85, 0x85, 0x85, +0x86, 0x87, 0x89, 0x8a, 0x8c, 0x8e, 0x8e, 0x8f, 0x8e, 0x8d, 0x8b, 0x89, 0x87, 0x86, 0x85, 0x84, +0x84, 0x85, 0x85, 0x86, 0x86, 0x86, 0x87, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, +0x84, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7b, 0x7a, 0x79, 0x78, 0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, +0x7c, 0x7c, 0x7b, 0x7a, 0x79, 0x77, 0x76, 0x75, 0x74, 0x73, 0x73, 0x72, 0x72, 0x72, 0x71, 0x71, +0x71, 0x70, 0x70, 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x72, 0x71, 0x70, 0x70, 0x6e, 0x6d, 0x6b, +0x6a, 0x69, 0x69, 0x69, 0x6a, 0x6b, 0x6d, 0x6e, 0x70, 0x71, 0x71, 0x71, 0x71, 0x70, 0x6f, 0x6f, +0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x70, 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x72, 0x73, 0x73, 0x74, +0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, +0x7a, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x86, +0x86, 0x86, 0x86, 0x85, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x88, +0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8c, +0x8c, 0x8c, 0x8d, 0x8d, 0x8e, 0x8f, 0x91, 0x92, 0x94, 0x95, 0x96, 0x96, 0x97, 0x97, 0x97, 0x98, +0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9b, 0x9a, 0x97, 0x94, 0x90, 0x8c, 0x89, 0x87, 0x86, 0x87, 0x8a, +0x8e, 0x95, 0x9b, 0xa1, 0xa6, 0xa8, 0xa7, 0xa4, 0x9d, 0x95, 0x8c, 0x83, 0x7a, 0x75, 0x73, 0x74, +0x78, 0x7e, 0x87, 0x8e, 0x94, 0x98, 0x99, 0x97, 0x92, 0x8b, 0x83, 0x7b, 0x75, 0x72, 0x71, 0x72, +0x74, 0x78, 0x7c, 0x80, 0x82, 0x81, 0x7e, 0x7a, 0x75, 0x70, 0x6c, 0x69, 0x69, 0x6a, 0x6d, 0x71, +0x75, 0x79, 0x7b, 0x7b, 0x7a, 0x77, 0x73, 0x6e, 0x6a, 0x66, 0x64, 0x64, 0x66, 0x68, 0x6c, 0x6f, +0x72, 0x73, 0x74, 0x73, 0x72, 0x70, 0x6e, 0x6d, 0x6d, 0x6e, 0x70, 0x72, 0x75, 0x76, 0x78, 0x78, +0x76, 0x74, 0x71, 0x6f, 0x6d, 0x6c, 0x6c, 0x6e, 0x72, 0x76, 0x7b, 0x81, 0x85, 0x87, 0x88, 0x87, +0x85, 0x81, 0x7d, 0x7a, 0x78, 0x77, 0x78, 0x7a, 0x7d, 0x81, 0x85, 0x88, 0x8a, 0x8b, 0x8b, 0x8a, +0x89, 0x88, 0x87, 0x86, 0x87, 0x88, 0x89, 0x8b, 0x8d, 0x8e, 0x8f, 0x8e, 0x8d, 0x8c, 0x8a, 0x88, +0x87, 0x86, 0x86, 0x87, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x90, 0x90, 0x8f, 0x8e, 0x8c, 0x8a, 0x88, +0x87, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x83, 0x83, 0x82, 0x81, 0x81, 0x81, 0x81, +0x82, 0x82, 0x83, 0x83, 0x82, 0x81, 0x7e, 0x7c, 0x7a, 0x77, 0x75, 0x73, 0x72, 0x72, 0x72, 0x73, +0x74, 0x75, 0x76, 0x77, 0x77, 0x77, 0x76, 0x75, 0x73, 0x72, 0x71, 0x6f, 0x6e, 0x6e, 0x6d, 0x6d, +0x6c, 0x6c, 0x6b, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6b, 0x6c, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x71, +0x70, 0x6f, 0x6d, 0x6b, 0x69, 0x67, 0x67, 0x67, 0x68, 0x69, 0x6c, 0x6e, 0x70, 0x73, 0x74, 0x75, +0x76, 0x75, 0x75, 0x73, 0x72, 0x72, 0x71, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x77, 0x78, +0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, +0x83, 0x84, 0x84, 0x84, 0x83, 0x83, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x82, +0x84, 0x85, 0x86, 0x86, 0x86, 0x85, 0x83, 0x82, 0x81, 0x80, 0x80, 0x80, 0x81, 0x82, 0x84, 0x85, +0x86, 0x87, 0x88, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x87, 0x88, 0x8a, 0x8b, 0x8c, 0x8d, 0x8d, +0x8d, 0x8c, 0x8c, 0x8b, 0x8b, 0x8c, 0x8c, 0x8e, 0x90, 0x92, 0x95, 0x97, 0x99, 0x9a, 0x9b, 0x9b, +0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9b, 0x9a, 0x97, 0x94, 0x91, 0x8d, 0x8a, 0x89, 0x89, +0x8a, 0x8e, 0x93, 0x99, 0xa0, 0xa6, 0xaa, 0xaa, 0xa9, 0xa4, 0x9c, 0x93, 0x8a, 0x82, 0x7a, 0x76, +0x75, 0x77, 0x7b, 0x82, 0x89, 0x8f, 0x94, 0x96, 0x95, 0x92, 0x8d, 0x86, 0x7e, 0x78, 0x74, 0x72, +0x72, 0x74, 0x77, 0x7a, 0x7d, 0x80, 0x7e, 0x7c, 0x79, 0x74, 0x6f, 0x6a, 0x67, 0x65, 0x66, 0x69, +0x6c, 0x70, 0x75, 0x78, 0x79, 0x79, 0x77, 0x74, 0x70, 0x6c, 0x68, 0x65, 0x63, 0x63, 0x65, 0x67, +0x6a, 0x6d, 0x6f, 0x70, 0x70, 0x6f, 0x6e, 0x6e, 0x6d, 0x6e, 0x6f, 0x71, 0x74, 0x77, 0x79, 0x7b, +0x7b, 0x7a, 0x78, 0x75, 0x72, 0x6f, 0x6d, 0x6c, 0x6e, 0x70, 0x75, 0x7a, 0x80, 0x85, 0x89, 0x8b, +0x8c, 0x8b, 0x89, 0x86, 0x83, 0x81, 0x7e, 0x7d, 0x7e, 0x81, 0x83, 0x86, 0x89, 0x8b, 0x8c, 0x8c, +0x8c, 0x8c, 0x8b, 0x8a, 0x8a, 0x8a, 0x8b, 0x8d, 0x8f, 0x90, 0x92, 0x92, 0x92, 0x91, 0x8f, 0x8d, +0x8b, 0x89, 0x87, 0x86, 0x86, 0x87, 0x89, 0x8a, 0x8c, 0x8d, 0x8e, 0x8e, 0x8d, 0x8c, 0x8a, 0x88, +0x87, 0x85, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x81, 0x80, 0x7d, 0x7b, 0x7a, 0x78, 0x78, +0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, 0x7b, 0x7a, 0x78, 0x76, 0x74, 0x71, 0x6f, 0x6d, 0x6c, +0x6c, 0x6c, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x70, 0x6f, 0x6f, 0x6e, 0x6e, 0x6d, +0x6d, 0x6c, 0x6c, 0x6b, 0x6b, 0x6b, 0x6a, 0x6a, 0x6b, 0x6b, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x6f, +0x70, 0x70, 0x71, 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, +0x73, 0x74, 0x74, 0x75, 0x75, 0x77, 0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, +0x7a, 0x7a, 0x79, 0x79, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, +0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x85, 0x86, 0x87, 0x88, +0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x83, 0x84, 0x85, 0x87, 0x8a, 0x8c, 0x8e, 0x91, 0x92, +0x92, 0x92, 0x92, 0x92, 0x91, 0x91, 0x92, 0x93, 0x93, 0x95, 0x98, 0x99, 0x99, 0x9b, 0x9d, 0x9e, +0x9e, 0xa0, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa4, 0xa2, 0x9f, 0x9a, 0x95, 0x90, 0x8c, 0x89, 0x88, +0x89, 0x8d, 0x93, 0x9a, 0xa2, 0xa9, 0xad, 0xaf, 0xae, 0xa8, 0xa0, 0x96, 0x8c, 0x81, 0x78, 0x73, +0x71, 0x72, 0x77, 0x7e, 0x86, 0x8d, 0x92, 0x95, 0x94, 0x8f, 0x88, 0x80, 0x76, 0x6e, 0x69, 0x67, +0x67, 0x6a, 0x6f, 0x74, 0x79, 0x7c, 0x7c, 0x7b, 0x77, 0x71, 0x6a, 0x63, 0x5d, 0x5a, 0x5a, 0x5c, +0x60, 0x65, 0x6a, 0x6f, 0x72, 0x74, 0x73, 0x71, 0x6d, 0x69, 0x66, 0x63, 0x62, 0x63, 0x65, 0x67, +0x6a, 0x6c, 0x6e, 0x6e, 0x6d, 0x6b, 0x6a, 0x68, 0x68, 0x6a, 0x6d, 0x71, 0x77, 0x7c, 0x82, 0x85, +0x87, 0x87, 0x84, 0x80, 0x7a, 0x75, 0x71, 0x70, 0x70, 0x73, 0x78, 0x7e, 0x85, 0x8c, 0x91, 0x94, +0x96, 0x95, 0x93, 0x90, 0x8c, 0x89, 0x88, 0x87, 0x88, 0x8a, 0x8d, 0x90, 0x92, 0x94, 0x95, 0x94, +0x93, 0x91, 0x8f, 0x8d, 0x8d, 0x8d, 0x8e, 0x8f, 0x92, 0x94, 0x96, 0x97, 0x96, 0x95, 0x93, 0x90, +0x8d, 0x8b, 0x88, 0x87, 0x86, 0x86, 0x87, 0x88, 0x89, 0x89, 0x89, 0x88, 0x87, 0x85, 0x83, 0x81, +0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7a, 0x78, 0x76, 0x73, 0x71, 0x6f, 0x6d, +0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x70, 0x70, 0x70, 0x70, 0x6f, 0x6e, 0x6c, 0x6b, 0x6a, 0x69, +0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, +0x70, 0x71, 0x71, 0x71, 0x71, 0x70, 0x6f, 0x6e, 0x6e, 0x6d, 0x6d, 0x6e, 0x6f, 0x71, 0x73, 0x75, +0x77, 0x78, 0x7a, 0x7a, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7c, +0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x77, 0x76, 0x76, +0x75, 0x75, 0x75, 0x76, 0x76, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, +0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x84, 0x85, 0x86, 0x87, +0x88, 0x88, 0x88, 0x89, 0x88, 0x88, 0x88, 0x89, 0x89, 0x8b, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x95, +0x96, 0x96, 0x97, 0x97, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9d, 0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa5, +0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xab, 0xab, 0xaa, 0xa8, 0xa6, 0xa1, 0x9c, 0x96, 0x90, 0x8b, 0x88, +0x87, 0x89, 0x8e, 0x95, 0x9d, 0xa6, 0xad, 0xb1, 0xb2, 0xae, 0xa7, 0x9c, 0x90, 0x83, 0x75, 0x6c, +0x66, 0x63, 0x66, 0x6c, 0x74, 0x7c, 0x86, 0x8c, 0x8f, 0x8d, 0x88, 0x81, 0x76, 0x6c, 0x64, 0x5f, +0x5c, 0x5c, 0x5f, 0x64, 0x68, 0x6d, 0x70, 0x70, 0x6e, 0x6a, 0x64, 0x5d, 0x57, 0x53, 0x52, 0x53, +0x57, 0x5c, 0x62, 0x68, 0x6d, 0x70, 0x71, 0x70, 0x6e, 0x6a, 0x67, 0x64, 0x63, 0x63, 0x65, 0x68, +0x6c, 0x6f, 0x71, 0x73, 0x73, 0x71, 0x70, 0x6e, 0x6e, 0x6f, 0x72, 0x77, 0x7d, 0x84, 0x8b, 0x90, +0x94, 0x96, 0x95, 0x92, 0x8d, 0x88, 0x82, 0x7e, 0x7c, 0x7c, 0x80, 0x84, 0x8a, 0x90, 0x96, 0x9b, +0x9e, 0xa0, 0x9f, 0x9e, 0x9b, 0x99, 0x96, 0x95, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x99, 0x98, +0x96, 0x94, 0x91, 0x8f, 0x8d, 0x8d, 0x8c, 0x8d, 0x8e, 0x90, 0x91, 0x92, 0x93, 0x92, 0x90, 0x8e, +0x8b, 0x88, 0x85, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7a, 0x79, 0x77, 0x76, 0x74, 0x72, +0x71, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x71, 0x6f, 0x6e, 0x6b, 0x69, 0x66, 0x63, +0x61, 0x60, 0x5f, 0x60, 0x61, 0x63, 0x65, 0x67, 0x69, 0x6b, 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6c, +0x6c, 0x6b, 0x6b, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x73, 0x74, 0x76, 0x77, +0x79, 0x7a, 0x7c, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x84, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8a, 0x89, +0x88, 0x86, 0x83, 0x81, 0x7d, 0x7a, 0x78, 0x77, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, +0x7b, 0x7b, 0x7a, 0x78, 0x77, 0x76, 0x74, 0x73, 0x73, 0x72, 0x72, 0x71, 0x71, 0x70, 0x70, 0x6f, +0x6e, 0x6e, 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x72, 0x72, 0x72, 0x71, 0x71, +0x71, 0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x76, 0x77, 0x78, 0x7a, +0x7c, 0x7e, 0x81, 0x83, 0x84, 0x85, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, 0x89, +0x8a, 0x8c, 0x8e, 0x8e, 0x90, 0x92, 0x93, 0x93, 0x95, 0x96, 0x98, 0x98, 0x99, 0x9b, 0x9c, 0x9c, +0x9c, 0x9d, 0x9c, 0x9b, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9d, 0x9e, 0xa0, 0xa3, 0xa5, 0xa7, 0xa9, +0xaa, 0xab, 0xab, 0xac, 0xac, 0xab, 0xab, 0xab, 0xab, 0xaa, 0xa9, 0xa6, 0xa2, 0x9e, 0x99, 0x93, +0x8d, 0x88, 0x83, 0x81, 0x80, 0x83, 0x87, 0x8d, 0x93, 0x9a, 0x9f, 0xa2, 0xa2, 0x9f, 0x99, 0x90, +0x86, 0x79, 0x6f, 0x66, 0x60, 0x5c, 0x5c, 0x5f, 0x64, 0x69, 0x6f, 0x73, 0x75, 0x75, 0x72, 0x6e, +0x68, 0x63, 0x5f, 0x5c, 0x5c, 0x5c, 0x5f, 0x63, 0x66, 0x69, 0x6a, 0x6a, 0x67, 0x63, 0x5e, 0x59, +0x55, 0x52, 0x52, 0x54, 0x59, 0x5e, 0x64, 0x6b, 0x70, 0x74, 0x77, 0x77, 0x77, 0x75, 0x74, 0x73, +0x73, 0x74, 0x76, 0x79, 0x7c, 0x80, 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7c, 0x7d, 0x80, 0x85, +0x8a, 0x91, 0x97, 0x9e, 0xa2, 0xa5, 0xa5, 0xa3, 0x9f, 0x9a, 0x95, 0x90, 0x8d, 0x8b, 0x8b, 0x8c, +0x8f, 0x92, 0x96, 0x99, 0x9b, 0x9c, 0x9c, 0x9a, 0x98, 0x96, 0x94, 0x93, 0x92, 0x92, 0x92, 0x93, +0x93, 0x93, 0x92, 0x8f, 0x8c, 0x89, 0x85, 0x81, 0x7d, 0x7a, 0x79, 0x78, 0x78, 0x79, 0x7a, 0x7b, +0x7b, 0x7b, 0x7a, 0x79, 0x77, 0x75, 0x73, 0x72, 0x71, 0x70, 0x6f, 0x6f, 0x6f, 0x6e, 0x6c, 0x6b, +0x69, 0x66, 0x64, 0x62, 0x60, 0x5f, 0x60, 0x61, 0x64, 0x67, 0x6a, 0x6d, 0x70, 0x72, 0x73, 0x73, +0x72, 0x70, 0x6e, 0x6c, 0x6a, 0x69, 0x68, 0x68, 0x69, 0x6b, 0x6e, 0x70, 0x73, 0x75, 0x77, 0x79, +0x7a, 0x7b, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x84, 0x85, 0x86, 0x87, 0x87, 0x87, 0x86, 0x85, 0x84, +0x84, 0x83, 0x83, 0x84, 0x84, 0x86, 0x87, 0x88, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, +0x8a, 0x89, 0x88, 0x88, 0x87, 0x85, 0x83, 0x81, 0x7e, 0x7b, 0x78, 0x76, 0x75, 0x74, 0x74, 0x74, +0x75, 0x77, 0x78, 0x79, 0x7a, 0x7a, 0x79, 0x77, 0x75, 0x72, 0x70, 0x6d, 0x6b, 0x69, 0x68, 0x67, +0x66, 0x66, 0x66, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, +0x70, 0x70, 0x6f, 0x6e, 0x6d, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0x6e, 0x70, 0x71, 0x73, 0x75, 0x76, +0x77, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, +0x82, 0x82, 0x82, 0x83, 0x85, 0x86, 0x88, 0x89, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x8f, 0x8f, 0x90, +0x91, 0x92, 0x92, 0x93, 0x93, 0x93, 0x92, 0x91, 0x90, 0x8f, 0x8e, 0x8e, 0x8e, 0x8f, 0x90, 0x92, +0x95, 0x97, 0x98, 0x9a, 0x9c, 0x9b, 0x9a, 0x9a, 0x9a, 0x97, 0x96, 0x98, 0x98, 0x97, 0x99, 0x9b, +0x9c, 0x9c, 0x9d, 0x9e, 0x9d, 0x9c, 0x9c, 0x9d, 0x9d, 0x9e, 0xa0, 0xa3, 0xa4, 0xa6, 0xa7, 0xa5, +0xa1, 0x9d, 0x97, 0x8e, 0x87, 0x80, 0x79, 0x74, 0x74, 0x76, 0x7a, 0x80, 0x88, 0x8f, 0x94, 0x97, +0x99, 0x96, 0x90, 0x89, 0x81, 0x76, 0x6e, 0x67, 0x63, 0x62, 0x62, 0x65, 0x6a, 0x6d, 0x70, 0x73, +0x73, 0x70, 0x6d, 0x69, 0x64, 0x5f, 0x5d, 0x5d, 0x5e, 0x61, 0x66, 0x6b, 0x70, 0x73, 0x76, 0x76, +0x74, 0x71, 0x6d, 0x68, 0x64, 0x61, 0x61, 0x62, 0x64, 0x68, 0x6d, 0x72, 0x76, 0x7a, 0x7c, 0x7e, +0x7e, 0x80, 0x80, 0x81, 0x82, 0x85, 0x87, 0x8a, 0x8d, 0x8f, 0x90, 0x90, 0x8e, 0x8c, 0x89, 0x86, +0x84, 0x83, 0x83, 0x85, 0x88, 0x8d, 0x92, 0x97, 0x9b, 0x9e, 0xa0, 0xa0, 0x9e, 0x9b, 0x97, 0x94, +0x90, 0x8d, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8d, 0x8e, 0x8e, 0x8d, 0x8b, 0x89, 0x87, 0x85, 0x83, +0x82, 0x82, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x78, 0x75, 0x73, 0x70, +0x6e, 0x6d, 0x6c, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6c, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, +0x73, 0x73, 0x73, 0x73, 0x71, 0x70, 0x6e, 0x6c, 0x6b, 0x69, 0x69, 0x69, 0x6a, 0x6c, 0x6e, 0x71, +0x74, 0x77, 0x79, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, +0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 0x84, 0x85, 0x87, 0x88, 0x8a, 0x8b, 0x8c, 0x8c, +0x8c, 0x8b, 0x8a, 0x88, 0x87, 0x85, 0x84, 0x83, 0x82, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x79, +0x78, 0x77, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7a, 0x78, 0x76, 0x72, 0x6f, 0x6b, +0x67, 0x64, 0x63, 0x62, 0x62, 0x63, 0x65, 0x67, 0x69, 0x6b, 0x6c, 0x6c, 0x6c, 0x6b, 0x6a, 0x69, +0x68, 0x67, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6d, 0x6d, 0x6c, 0x6c, 0x6b, 0x6b, 0x6c, +0x6d, 0x6f, 0x72, 0x74, 0x77, 0x79, 0x7b, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x82, 0x84, 0x86, 0x88, +0x89, 0x8a, 0x8b, 0x8b, 0x8a, 0x89, 0x88, 0x86, 0x85, 0x84, 0x84, 0x84, 0x84, 0x85, 0x86, 0x88, +0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8e, 0x8e, 0x8e, 0x8d, +0x8d, 0x8c, 0x8d, 0x8d, 0x8d, 0x8e, 0x90, 0x92, 0x92, 0x93, 0x95, 0x96, 0x96, 0x97, 0x98, 0x98, +0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9c, 0x9e, 0x9f, 0xa0, 0xa0, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa6, +0xa5, 0xa3, 0xa1, 0x9d, 0x99, 0x92, 0x8c, 0x87, 0x81, 0x7c, 0x7a, 0x7b, 0x7d, 0x81, 0x87, 0x8d, +0x92, 0x96, 0x98, 0x98, 0x94, 0x8f, 0x87, 0x7e, 0x75, 0x6d, 0x67, 0x63, 0x62, 0x63, 0x66, 0x69, +0x6d, 0x70, 0x71, 0x71, 0x6f, 0x6b, 0x67, 0x62, 0x5e, 0x5c, 0x5b, 0x5c, 0x60, 0x64, 0x69, 0x6e, +0x72, 0x74, 0x75, 0x74, 0x71, 0x6e, 0x6a, 0x66, 0x64, 0x63, 0x64, 0x66, 0x69, 0x6e, 0x72, 0x76, +0x7a, 0x7d, 0x80, 0x82, 0x83, 0x84, 0x85, 0x87, 0x89, 0x8b, 0x8d, 0x8f, 0x91, 0x91, 0x91, 0x8f, +0x8e, 0x8c, 0x8a, 0x89, 0x88, 0x89, 0x8a, 0x8d, 0x90, 0x94, 0x97, 0x9a, 0x9b, 0x9c, 0x9b, 0x99, +0x96, 0x93, 0x91, 0x8e, 0x8c, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x88, 0x86, 0x84, +0x81, 0x7d, 0x7b, 0x7a, 0x79, 0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x78, 0x76, 0x74, +0x72, 0x70, 0x6e, 0x6c, 0x6b, 0x6a, 0x6a, 0x6a, 0x69, 0x6a, 0x6a, 0x69, 0x6a, 0x6a, 0x6b, 0x6c, +0x6d, 0x6f, 0x70, 0x72, 0x74, 0x76, 0x77, 0x77, 0x76, 0x75, 0x74, 0x72, 0x70, 0x6f, 0x6e, 0x6e, +0x70, 0x72, 0x75, 0x78, 0x7b, 0x7e, 0x82, 0x84, 0x85, 0x85, 0x85, 0x84, 0x83, 0x82, 0x82, 0x83, +0x83, 0x85, 0x86, 0x88, 0x89, 0x8a, 0x8a, 0x8a, 0x89, 0x88, 0x87, 0x86, 0x85, 0x85, 0x85, 0x85, +0x86, 0x87, 0x88, 0x88, 0x89, 0x89, 0x88, 0x87, 0x87, 0x85, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x79, +0x77, 0x73, 0x71, 0x6e, 0x6b, 0x6a, 0x69, 0x68, 0x69, 0x6b, 0x6c, 0x6e, 0x70, 0x71, 0x71, 0x70, +0x6e, 0x6b, 0x68, 0x65, 0x62, 0x60, 0x5f, 0x5e, 0x5e, 0x60, 0x61, 0x63, 0x65, 0x67, 0x67, 0x68, +0x68, 0x68, 0x68, 0x68, 0x69, 0x6a, 0x6b, 0x6e, 0x70, 0x73, 0x75, 0x78, 0x79, 0x7a, 0x7b, 0x7b, +0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7d, 0x7e, 0x81, 0x83, 0x84, 0x86, 0x87, +0x88, 0x89, 0x8a, 0x8a, 0x89, 0x88, 0x87, 0x85, 0x84, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x80, +0x81, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x82, 0x83, +0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, +0x86, 0x87, 0x88, 0x89, 0x8b, 0x8d, 0x8f, 0x91, 0x93, 0x95, 0x95, 0x94, 0x95, 0x95, 0x93, 0x93, +0x94, 0x95, 0x95, 0x98, 0x9b, 0x9d, 0xa0, 0xa2, 0xa4, 0xa6, 0xa7, 0xa7, 0xa8, 0xa9, 0xa9, 0xaa, +0xab, 0xab, 0xac, 0xac, 0xa9, 0xa5, 0xa1, 0x9b, 0x93, 0x8c, 0x86, 0x80, 0x7c, 0x7a, 0x7b, 0x7e, +0x84, 0x8a, 0x8f, 0x94, 0x97, 0x97, 0x94, 0x8f, 0x88, 0x80, 0x76, 0x6f, 0x69, 0x64, 0x63, 0x63, +0x65, 0x67, 0x6a, 0x6c, 0x6c, 0x6a, 0x68, 0x64, 0x5f, 0x5a, 0x57, 0x55, 0x55, 0x58, 0x5c, 0x62, +0x67, 0x6d, 0x72, 0x74, 0x75, 0x75, 0x72, 0x6f, 0x6b, 0x68, 0x66, 0x65, 0x65, 0x67, 0x6b, 0x6e, +0x72, 0x76, 0x79, 0x7c, 0x7e, 0x81, 0x83, 0x85, 0x87, 0x8a, 0x8e, 0x91, 0x95, 0x98, 0x9a, 0x9b, +0x9b, 0x99, 0x97, 0x94, 0x90, 0x8e, 0x8c, 0x8b, 0x8c, 0x8e, 0x90, 0x93, 0x96, 0x99, 0x9b, 0x9c, +0x9c, 0x9b, 0x99, 0x96, 0x93, 0x91, 0x8f, 0x8d, 0x8d, 0x8c, 0x8c, 0x8c, 0x8b, 0x8a, 0x88, 0x86, +0x83, 0x7e, 0x7a, 0x77, 0x73, 0x71, 0x6f, 0x6f, 0x6f, 0x70, 0x72, 0x73, 0x74, 0x75, 0x76, 0x75, +0x74, 0x73, 0x70, 0x6e, 0x6b, 0x69, 0x67, 0x66, 0x64, 0x64, 0x64, 0x64, 0x64, 0x65, 0x65, 0x66, +0x67, 0x69, 0x6b, 0x6c, 0x6f, 0x71, 0x73, 0x76, 0x78, 0x79, 0x7a, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, +0x78, 0x78, 0x79, 0x7a, 0x7b, 0x7d, 0x81, 0x83, 0x85, 0x87, 0x88, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, +0x8b, 0x8c, 0x8c, 0x8e, 0x8f, 0x90, 0x91, 0x91, 0x91, 0x90, 0x8f, 0x8d, 0x8b, 0x89, 0x87, 0x85, +0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x81, 0x80, 0x7d, 0x7b, 0x78, 0x76, +0x73, 0x70, 0x6c, 0x69, 0x66, 0x64, 0x61, 0x60, 0x60, 0x60, 0x61, 0x62, 0x64, 0x66, 0x67, 0x67, +0x68, 0x67, 0x65, 0x63, 0x61, 0x60, 0x5e, 0x5e, 0x5e, 0x5f, 0x61, 0x63, 0x66, 0x69, 0x6b, 0x6c, +0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6f, 0x72, 0x74, 0x78, 0x7b, 0x80, 0x83, 0x85, 0x87, +0x88, 0x88, 0x88, 0x88, 0x87, 0x86, 0x85, 0x85, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x87, 0x88, +0x89, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x89, 0x88, 0x86, 0x84, 0x82, 0x81, 0x7e, 0x7d, 0x7c, +0x7c, 0x7c, 0x7b, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x77, 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x79, +0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x83, 0x84, +0x84, 0x85, 0x85, 0x86, 0x86, 0x88, 0x8a, 0x8b, 0x8d, 0x90, 0x94, 0x96, 0x97, 0x9a, 0x9b, 0x9b, +0x9a, 0x9a, 0x9a, 0x99, 0x98, 0x99, 0x9b, 0x9b, 0x9d, 0xa0, 0xa3, 0xa5, 0xa7, 0xa9, 0xac, 0xae, +0xaf, 0xb1, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbb, 0xb9, 0xb5, 0xaf, 0xa8, 0x9e, 0x94, 0x8a, 0x81, +0x77, 0x72, 0x71, 0x71, 0x74, 0x79, 0x82, 0x88, 0x8e, 0x93, 0x95, 0x94, 0x90, 0x89, 0x82, 0x78, +0x6f, 0x68, 0x63, 0x5f, 0x5d, 0x5e, 0x5f, 0x61, 0x62, 0x62, 0x60, 0x5d, 0x58, 0x54, 0x4f, 0x4b, +0x49, 0x49, 0x4c, 0x52, 0x59, 0x62, 0x6b, 0x73, 0x7a, 0x7e, 0x81, 0x80, 0x7c, 0x78, 0x74, 0x70, +0x6d, 0x6b, 0x6b, 0x6d, 0x70, 0x73, 0x78, 0x7b, 0x80, 0x83, 0x86, 0x89, 0x8c, 0x90, 0x94, 0x99, +0x9f, 0xa4, 0xa8, 0xac, 0xae, 0xae, 0xad, 0xaa, 0xa5, 0x9f, 0x9a, 0x95, 0x92, 0x8f, 0x8f, 0x90, +0x91, 0x94, 0x96, 0x98, 0x99, 0x99, 0x97, 0x95, 0x92, 0x8f, 0x8d, 0x8b, 0x8a, 0x8a, 0x8a, 0x8a, +0x8a, 0x89, 0x88, 0x85, 0x81, 0x7b, 0x75, 0x6f, 0x69, 0x64, 0x60, 0x5d, 0x5b, 0x5c, 0x5d, 0x5f, +0x61, 0x64, 0x67, 0x69, 0x6a, 0x6b, 0x6c, 0x6b, 0x6a, 0x6a, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, +0x63, 0x63, 0x62, 0x63, 0x63, 0x65, 0x66, 0x69, 0x6d, 0x70, 0x75, 0x79, 0x7e, 0x83, 0x86, 0x89, +0x8c, 0x8c, 0x8d, 0x8d, 0x8c, 0x8c, 0x8b, 0x8b, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x91, +0x91, 0x91, 0x90, 0x90, 0x8f, 0x8f, 0x90, 0x91, 0x92, 0x94, 0x95, 0x96, 0x97, 0x96, 0x95, 0x93, +0x90, 0x8d, 0x89, 0x86, 0x82, 0x7e, 0x7b, 0x79, 0x77, 0x75, 0x74, 0x72, 0x71, 0x70, 0x6f, 0x6e, +0x6e, 0x6e, 0x6e, 0x6e, 0x6d, 0x6d, 0x6b, 0x69, 0x66, 0x62, 0x5e, 0x5a, 0x56, 0x53, 0x51, 0x50, +0x51, 0x53, 0x56, 0x5a, 0x5d, 0x60, 0x63, 0x65, 0x66, 0x66, 0x65, 0x65, 0x65, 0x66, 0x67, 0x6a, +0x6c, 0x70, 0x73, 0x75, 0x78, 0x79, 0x7a, 0x79, 0x79, 0x79, 0x78, 0x78, 0x7a, 0x7c, 0x7e, 0x82, +0x86, 0x89, 0x8c, 0x8e, 0x90, 0x91, 0x91, 0x92, 0x91, 0x91, 0x91, 0x90, 0x90, 0x8f, 0x8e, 0x8c, +0x8a, 0x87, 0x85, 0x82, 0x7e, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7e, +0x7c, 0x79, 0x76, 0x74, 0x72, 0x70, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x70, 0x6f, 0x6f, +0x6e, 0x6d, 0x6d, 0x6e, 0x6f, 0x70, 0x72, 0x75, 0x77, 0x7a, 0x7c, 0x80, 0x82, 0x84, 0x85, 0x86, +0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8d, 0x8f, 0x91, 0x94, 0x98, +0x9c, 0x9f, 0xa2, 0xa4, 0xa5, 0xa6, 0xa5, 0xa4, 0xa3, 0xa2, 0xa1, 0xa1, 0xa2, 0xa3, 0xa5, 0xa7, +0xa9, 0xac, 0xae, 0xaf, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb3, 0xaf, 0xab, +0xa5, 0x9d, 0x94, 0x8b, 0x83, 0x79, 0x73, 0x6f, 0x6d, 0x6e, 0x71, 0x76, 0x7c, 0x82, 0x86, 0x88, +0x88, 0x86, 0x81, 0x79, 0x71, 0x69, 0x62, 0x5c, 0x59, 0x57, 0x58, 0x5a, 0x5d, 0x60, 0x61, 0x62, +0x60, 0x5d, 0x58, 0x53, 0x4f, 0x4b, 0x4a, 0x4b, 0x4f, 0x56, 0x5e, 0x68, 0x72, 0x7a, 0x82, 0x87, +0x89, 0x89, 0x86, 0x83, 0x80, 0x7b, 0x79, 0x79, 0x7a, 0x7c, 0x81, 0x85, 0x89, 0x8d, 0x90, 0x93, +0x94, 0x96, 0x97, 0x99, 0x9c, 0x9f, 0xa3, 0xa6, 0xaa, 0xad, 0xae, 0xaf, 0xad, 0xab, 0xa7, 0xa2, +0x9d, 0x99, 0x95, 0x92, 0x90, 0x8f, 0x8e, 0x8f, 0x8e, 0x8e, 0x8c, 0x8a, 0x88, 0x85, 0x81, 0x7d, +0x7b, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x77, 0x76, 0x74, 0x71, 0x6e, 0x69, 0x65, 0x60, 0x5c, +0x58, 0x56, 0x54, 0x53, 0x54, 0x55, 0x57, 0x5a, 0x5e, 0x61, 0x64, 0x67, 0x6a, 0x6b, 0x6d, 0x6e, +0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x70, 0x71, 0x73, 0x75, 0x77, 0x79, 0x7c, 0x7e, 0x81, 0x83, +0x84, 0x87, 0x89, 0x8b, 0x8e, 0x90, 0x93, 0x95, 0x98, 0x99, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9b, +0x9b, 0x9a, 0x9a, 0x99, 0x98, 0x97, 0x95, 0x93, 0x90, 0x8d, 0x8b, 0x88, 0x87, 0x85, 0x85, 0x85, +0x85, 0x86, 0x87, 0x87, 0x86, 0x85, 0x82, 0x7e, 0x7a, 0x76, 0x73, 0x6f, 0x6c, 0x6a, 0x68, 0x67, +0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5f, 0x5e, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5c, +0x5c, 0x5c, 0x5b, 0x5b, 0x5c, 0x5d, 0x5f, 0x62, 0x66, 0x69, 0x6d, 0x71, 0x73, 0x75, 0x76, 0x76, +0x75, 0x75, 0x74, 0x74, 0x75, 0x77, 0x7a, 0x7d, 0x82, 0x86, 0x89, 0x8c, 0x8d, 0x8e, 0x8d, 0x8c, +0x8a, 0x89, 0x88, 0x87, 0x87, 0x87, 0x88, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8d, 0x8d, 0x8c, 0x8a, +0x88, 0x87, 0x85, 0x83, 0x81, 0x7e, 0x7c, 0x7a, 0x78, 0x77, 0x76, 0x75, 0x74, 0x74, 0x74, 0x73, +0x73, 0x73, 0x72, 0x71, 0x6f, 0x6d, 0x6b, 0x69, 0x68, 0x67, 0x67, 0x67, 0x68, 0x69, 0x6b, 0x6c, +0x6d, 0x6e, 0x6f, 0x6f, 0x6f, 0x6e, 0x6f, 0x6f, 0x70, 0x71, 0x73, 0x75, 0x77, 0x7a, 0x7b, 0x7d, +0x80, 0x81, 0x82, 0x84, 0x85, 0x86, 0x88, 0x8a, 0x8c, 0x8d, 0x8f, 0x90, 0x90, 0x91, 0x91, 0x91, +0x91, 0x92, 0x93, 0x94, 0x96, 0x98, 0x99, 0x9b, 0x9b, 0x9c, 0x9c, 0x9b, 0x99, 0x98, 0x97, 0x96, +0x96, 0x96, 0x97, 0x98, 0x99, 0x9b, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa2, 0xa1, 0xa2, 0xa2, +0xa1, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa6, 0xa6, 0xa5, 0xa2, 0x9f, 0x99, +0x91, 0x89, 0x80, 0x77, 0x6f, 0x69, 0x65, 0x64, 0x67, 0x6a, 0x70, 0x77, 0x7d, 0x82, 0x85, 0x85, +0x83, 0x7d, 0x77, 0x70, 0x6a, 0x63, 0x5f, 0x5e, 0x5e, 0x5f, 0x63, 0x66, 0x69, 0x6b, 0x6c, 0x6b, +0x68, 0x64, 0x60, 0x5d, 0x5b, 0x5a, 0x5c, 0x60, 0x66, 0x6c, 0x74, 0x7b, 0x82, 0x87, 0x8b, 0x8c, +0x8d, 0x8c, 0x8a, 0x89, 0x88, 0x88, 0x88, 0x89, 0x8a, 0x8c, 0x8d, 0x8f, 0x90, 0x90, 0x90, 0x91, +0x91, 0x91, 0x93, 0x95, 0x98, 0x9b, 0x9f, 0xa2, 0xa4, 0xa5, 0xa5, 0xa3, 0xa0, 0x9c, 0x97, 0x93, +0x8e, 0x89, 0x86, 0x84, 0x83, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7d, 0x7a, 0x76, 0x72, 0x6e, 0x6b, +0x68, 0x66, 0x66, 0x67, 0x69, 0x6b, 0x6e, 0x70, 0x71, 0x72, 0x71, 0x6e, 0x6a, 0x66, 0x62, 0x5d, +0x5a, 0x57, 0x57, 0x57, 0x59, 0x5c, 0x5f, 0x64, 0x68, 0x6b, 0x6e, 0x71, 0x73, 0x74, 0x76, 0x77, +0x78, 0x7a, 0x7c, 0x80, 0x82, 0x84, 0x87, 0x89, 0x8a, 0x8b, 0x8c, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, +0x8e, 0x8f, 0x91, 0x92, 0x93, 0x95, 0x95, 0x96, 0x96, 0x97, 0x97, 0x96, 0x96, 0x96, 0x96, 0x96, +0x96, 0x95, 0x94, 0x93, 0x90, 0x8d, 0x89, 0x85, 0x81, 0x7c, 0x79, 0x76, 0x74, 0x73, 0x72, 0x71, +0x71, 0x71, 0x71, 0x70, 0x6f, 0x6e, 0x6c, 0x6a, 0x68, 0x66, 0x64, 0x63, 0x62, 0x62, 0x62, 0x62, +0x62, 0x61, 0x61, 0x61, 0x60, 0x60, 0x5f, 0x5f, 0x5f, 0x5f, 0x60, 0x61, 0x63, 0x65, 0x67, 0x69, +0x6c, 0x6f, 0x71, 0x74, 0x77, 0x7a, 0x7d, 0x80, 0x82, 0x84, 0x85, 0x86, 0x86, 0x86, 0x86, 0x85, +0x85, 0x85, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8b, 0x8c, 0x8d, 0x8e, 0x8e, 0x8e, 0x8d, 0x8c, 0x8a, +0x89, 0x88, 0x86, 0x85, 0x84, 0x83, 0x81, 0x80, 0x7e, 0x7c, 0x7a, 0x78, 0x76, 0x74, 0x72, 0x70, +0x6f, 0x6e, 0x6d, 0x6d, 0x6c, 0x6c, 0x6b, 0x6b, 0x6a, 0x69, 0x68, 0x67, 0x66, 0x66, 0x65, 0x65, +0x65, 0x66, 0x67, 0x68, 0x69, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x73, 0x74, +0x77, 0x79, 0x7b, 0x7d, 0x80, 0x81, 0x83, 0x85, 0x86, 0x87, 0x88, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, +0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, +0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x93, 0x92, 0x92, 0x92, +0x92, 0x92, 0x92, 0x93, 0x95, 0x96, 0x97, 0x99, 0x9b, 0x9c, 0x9d, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, +0x9f, 0xa0, 0xa0, 0xa0, 0xa1, 0xa2, 0xa2, 0xa2, 0xa1, 0x9f, 0x9b, 0x96, 0x90, 0x89, 0x82, 0x7b, +0x76, 0x72, 0x6f, 0x70, 0x72, 0x75, 0x7a, 0x80, 0x84, 0x87, 0x88, 0x87, 0x85, 0x80, 0x79, 0x73, +0x6e, 0x69, 0x66, 0x64, 0x65, 0x66, 0x68, 0x6a, 0x6c, 0x6c, 0x6b, 0x69, 0x66, 0x63, 0x5f, 0x5d, +0x5b, 0x5c, 0x5e, 0x62, 0x68, 0x6e, 0x74, 0x7b, 0x81, 0x85, 0x88, 0x89, 0x89, 0x88, 0x87, 0x86, +0x85, 0x85, 0x85, 0x86, 0x87, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8d, 0x8e, 0x8f, 0x90, 0x92, 0x94, +0x97, 0x99, 0x9b, 0x9d, 0x9e, 0x9e, 0x9d, 0x9b, 0x99, 0x96, 0x93, 0x90, 0x8d, 0x8b, 0x89, 0x87, +0x86, 0x84, 0x82, 0x81, 0x7e, 0x7b, 0x78, 0x75, 0x72, 0x70, 0x6d, 0x6c, 0x6a, 0x6a, 0x6a, 0x6b, +0x6c, 0x6d, 0x6e, 0x6f, 0x6f, 0x6f, 0x6d, 0x6b, 0x69, 0x66, 0x63, 0x60, 0x5e, 0x5d, 0x5d, 0x5e, +0x60, 0x62, 0x65, 0x68, 0x6b, 0x6e, 0x71, 0x73, 0x74, 0x76, 0x77, 0x79, 0x7a, 0x7d, 0x80, 0x83, +0x86, 0x89, 0x8c, 0x8f, 0x90, 0x92, 0x93, 0x93, 0x92, 0x92, 0x91, 0x90, 0x8f, 0x8f, 0x8f, 0x90, +0x90, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x91, 0x91, 0x90, 0x8f, 0x8d, 0x8b, +0x89, 0x86, 0x83, 0x7e, 0x7b, 0x77, 0x73, 0x70, 0x6e, 0x6c, 0x6a, 0x69, 0x68, 0x67, 0x67, 0x67, +0x67, 0x66, 0x66, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, +0x66, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x73, 0x74, 0x77, 0x79, +0x7c, 0x81, 0x84, 0x87, 0x8a, 0x8c, 0x8d, 0x8d, 0x8d, 0x8c, 0x8b, 0x8a, 0x89, 0x88, 0x87, 0x87, +0x87, 0x88, 0x88, 0x88, 0x89, 0x89, 0x88, 0x87, 0x86, 0x84, 0x82, 0x81, 0x7e, 0x7d, 0x7b, 0x7a, +0x7a, 0x7a, 0x79, 0x78, 0x78, 0x77, 0x76, 0x75, 0x74, 0x72, 0x70, 0x6e, 0x6d, 0x6b, 0x69, 0x68, +0x67, 0x66, 0x66, 0x66, 0x66, 0x67, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, +0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x76, 0x77, 0x78, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, +0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x88, 0x8a, 0x8b, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x8f, +0x8f, 0x8f, 0x8f, 0x8f, 0x8e, 0x8e, 0x8e, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, +0x8f, 0x8f, 0x8f, 0x8e, 0x8d, 0x8c, 0x8b, 0x8a, 0x8a, 0x89, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8f, +0x91, 0x92, 0x93, 0x95, 0x96, 0x97, 0x97, 0x99, 0x9a, 0x9b, 0x9c, 0x9e, 0xa0, 0xa0, 0xa1, 0xa2, +0xa4, 0xa4, 0xa4, 0xa6, 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa5, 0xa2, 0x9f, 0x9a, 0x94, 0x8e, 0x88, +0x82, 0x7b, 0x77, 0x75, 0x74, 0x74, 0x76, 0x7a, 0x7d, 0x81, 0x84, 0x85, 0x84, 0x82, 0x7d, 0x78, +0x73, 0x6d, 0x69, 0x66, 0x64, 0x63, 0x63, 0x65, 0x66, 0x68, 0x69, 0x69, 0x68, 0x65, 0x63, 0x60, +0x5e, 0x5c, 0x5b, 0x5d, 0x5f, 0x63, 0x68, 0x6e, 0x74, 0x79, 0x80, 0x84, 0x87, 0x89, 0x8a, 0x8a, +0x8a, 0x89, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x90, 0x91, +0x92, 0x94, 0x95, 0x97, 0x98, 0x9a, 0x9a, 0x9a, 0x9a, 0x99, 0x97, 0x95, 0x93, 0x90, 0x8d, 0x8b, +0x88, 0x85, 0x82, 0x80, 0x7c, 0x7a, 0x77, 0x74, 0x71, 0x6e, 0x6c, 0x6a, 0x68, 0x67, 0x66, 0x66, +0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6d, 0x6c, 0x6b, 0x6a, 0x68, 0x66, 0x65, 0x64, 0x63, +0x63, 0x64, 0x65, 0x67, 0x69, 0x6c, 0x6f, 0x72, 0x74, 0x77, 0x79, 0x7c, 0x7e, 0x81, 0x83, 0x85, +0x87, 0x89, 0x8c, 0x8e, 0x90, 0x92, 0x93, 0x94, 0x94, 0x94, 0x94, 0x93, 0x92, 0x91, 0x91, 0x90, +0x90, 0x8f, 0x8f, 0x8f, 0x8e, 0x8e, 0x8d, 0x8d, 0x8c, 0x8b, 0x8b, 0x8a, 0x8a, 0x89, 0x88, 0x87, +0x85, 0x83, 0x81, 0x7d, 0x7a, 0x76, 0x73, 0x70, 0x6d, 0x6b, 0x69, 0x67, 0x66, 0x66, 0x65, 0x65, +0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x66, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6c, 0x6d, 0x6e, +0x6f, 0x70, 0x71, 0x71, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x73, 0x74, 0x76, 0x78, 0x7a, 0x7d, +0x80, 0x83, 0x85, 0x88, 0x8a, 0x8b, 0x8c, 0x8d, 0x8d, 0x8d, 0x8c, 0x8c, 0x8b, 0x8a, 0x89, 0x87, +0x86, 0x86, 0x85, 0x84, 0x83, 0x82, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7a, 0x79, 0x78, 0x77, 0x76, +0x75, 0x74, 0x74, 0x73, 0x73, 0x72, 0x72, 0x71, 0x70, 0x6f, 0x6e, 0x6c, 0x6b, 0x6a, 0x69, 0x68, +0x67, 0x66, 0x66, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6d, 0x6e, 0x6f, 0x71, 0x72, 0x73, 0x74, +0x74, 0x75, 0x76, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x82, +0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, +0x8e, 0x8e, 0x8d, 0x8c, 0x8b, 0x8a, 0x88, 0x88, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, 0x89, 0x8a, +0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8b, 0x8b, 0x8c, 0x8d, 0x8d, 0x8d, +0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x92, 0x92, 0x93, 0x95, 0x97, 0x98, 0x9a, 0x9c, 0x9e, 0x9f, 0xa1, +0xa3, 0xa4, 0xa5, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xad, 0xad, 0xab, 0xa9, 0xa5, 0xa0, +0x9a, 0x93, 0x8c, 0x85, 0x7e, 0x78, 0x74, 0x72, 0x71, 0x71, 0x73, 0x77, 0x7a, 0x7c, 0x7e, 0x80, +0x7e, 0x7b, 0x78, 0x74, 0x70, 0x6c, 0x69, 0x66, 0x65, 0x64, 0x64, 0x65, 0x66, 0x66, 0x65, 0x64, +0x62, 0x60, 0x5d, 0x5a, 0x58, 0x57, 0x58, 0x5a, 0x5d, 0x62, 0x67, 0x6e, 0x75, 0x7b, 0x82, 0x87, +0x8b, 0x8e, 0x90, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, +0x93, 0x93, 0x93, 0x93, 0x93, 0x94, 0x95, 0x95, 0x96, 0x97, 0x98, 0x98, 0x98, 0x98, 0x97, 0x95, +0x93, 0x91, 0x8e, 0x8b, 0x87, 0x84, 0x80, 0x7c, 0x78, 0x75, 0x71, 0x6d, 0x69, 0x66, 0x62, 0x5f, +0x5d, 0x5c, 0x5b, 0x5b, 0x5c, 0x5d, 0x60, 0x62, 0x65, 0x68, 0x6a, 0x6b, 0x6c, 0x6d, 0x6d, 0x6c, +0x6b, 0x6a, 0x6a, 0x69, 0x6a, 0x6a, 0x6c, 0x6d, 0x6f, 0x72, 0x74, 0x77, 0x79, 0x7b, 0x7d, 0x81, +0x83, 0x85, 0x87, 0x8a, 0x8c, 0x8f, 0x92, 0x94, 0x97, 0x99, 0x9b, 0x9c, 0x9d, 0x9d, 0x9d, 0x9b, +0x9a, 0x98, 0x96, 0x94, 0x91, 0x8f, 0x8d, 0x8b, 0x89, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x82, +0x81, 0x80, 0x80, 0x7e, 0x7c, 0x7b, 0x79, 0x77, 0x74, 0x72, 0x6f, 0x6d, 0x6a, 0x68, 0x66, 0x65, +0x63, 0x62, 0x61, 0x60, 0x60, 0x5f, 0x5f, 0x60, 0x60, 0x61, 0x62, 0x63, 0x65, 0x67, 0x69, 0x6c, +0x6e, 0x71, 0x74, 0x76, 0x79, 0x7b, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x83, 0x83, 0x83, 0x83, 0x84, 0x85, 0x87, 0x88, 0x8a, 0x8c, 0x8d, 0x8f, 0x90, 0x90, 0x90, 0x8f, +0x8e, 0x8c, 0x8a, 0x88, 0x85, 0x82, 0x80, 0x7d, 0x7b, 0x79, 0x77, 0x76, 0x74, 0x73, 0x72, 0x70, +0x6f, 0x6d, 0x6c, 0x6b, 0x6a, 0x69, 0x68, 0x68, 0x68, 0x69, 0x69, 0x6a, 0x6b, 0x6c, 0x6c, 0x6c, +0x6c, 0x6c, 0x6b, 0x6b, 0x6a, 0x6a, 0x69, 0x6a, 0x6a, 0x6b, 0x6c, 0x6d, 0x6f, 0x71, 0x73, 0x75, +0x77, 0x79, 0x7b, 0x7d, 0x80, 0x82, 0x83, 0x85, 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, +0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86, 0x85, 0x85, 0x84, 0x84, 0x83, 0x83, 0x83, +0x83, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x82, 0x82, 0x81, 0x80, 0x80, +0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x88, 0x89, 0x89, 0x8a, +0x8a, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x91, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x98, 0x99, +0x9a, 0x9b, 0x9c, 0x9e, 0x9f, 0xa1, 0xa3, 0xa6, 0xa8, 0xa9, 0xab, 0xad, 0xae, 0xaf, 0xb0, 0xb1, +0xb1, 0xb1, 0xb1, 0xb0, 0xae, 0xaa, 0xa6, 0xa0, 0x99, 0x92, 0x8a, 0x82, 0x7b, 0x75, 0x70, 0x6e, +0x6d, 0x6e, 0x6f, 0x72, 0x75, 0x76, 0x77, 0x77, 0x76, 0x73, 0x6f, 0x6c, 0x69, 0x66, 0x64, 0x63, +0x63, 0x63, 0x64, 0x65, 0x66, 0x66, 0x65, 0x64, 0x61, 0x5e, 0x5c, 0x59, 0x58, 0x58, 0x59, 0x5b, +0x60, 0x65, 0x6b, 0x72, 0x79, 0x80, 0x86, 0x8b, 0x8f, 0x93, 0x95, 0x96, 0x97, 0x97, 0x97, 0x97, +0x97, 0x96, 0x96, 0x96, 0x96, 0x95, 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, +0x94, 0x94, 0x94, 0x94, 0x94, 0x93, 0x92, 0x91, 0x8f, 0x8c, 0x89, 0x86, 0x83, 0x80, 0x7b, 0x78, +0x74, 0x71, 0x6d, 0x69, 0x66, 0x62, 0x5f, 0x5d, 0x5b, 0x59, 0x58, 0x58, 0x59, 0x5b, 0x5d, 0x60, +0x63, 0x66, 0x69, 0x6b, 0x6d, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x72, 0x73, 0x75, +0x77, 0x79, 0x7b, 0x7d, 0x80, 0x82, 0x84, 0x85, 0x87, 0x89, 0x8b, 0x8e, 0x90, 0x93, 0x96, 0x98, +0x9a, 0x9c, 0x9e, 0x9e, 0x9f, 0x9e, 0x9e, 0x9d, 0x9b, 0x99, 0x97, 0x95, 0x93, 0x90, 0x8d, 0x8a, +0x88, 0x85, 0x83, 0x81, 0x7e, 0x7c, 0x7b, 0x7a, 0x79, 0x79, 0x78, 0x77, 0x76, 0x75, 0x74, 0x72, +0x70, 0x6f, 0x6d, 0x6b, 0x69, 0x67, 0x66, 0x65, 0x63, 0x63, 0x62, 0x62, 0x62, 0x62, 0x62, 0x63, +0x63, 0x64, 0x65, 0x66, 0x68, 0x69, 0x6c, 0x6e, 0x70, 0x73, 0x76, 0x79, 0x7c, 0x80, 0x83, 0x85, +0x87, 0x89, 0x8a, 0x8b, 0x8c, 0x8c, 0x8c, 0x8c, 0x8b, 0x8a, 0x89, 0x89, 0x88, 0x88, 0x87, 0x87, +0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x86, 0x85, 0x83, 0x82, 0x80, 0x7e, 0x7c, 0x7b, 0x7a, 0x79, +0x78, 0x77, 0x76, 0x75, 0x73, 0x71, 0x6f, 0x6d, 0x6b, 0x68, 0x67, 0x65, 0x64, 0x63, 0x62, 0x62, +0x62, 0x63, 0x64, 0x65, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x71, 0x72, 0x73, 0x74, 0x74, 0x75, +0x75, 0x75, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x84, 0x85, +0x85, 0x86, 0x87, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8a, 0x8a, 0x89, 0x88, +0x86, 0x85, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, +0x79, 0x79, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x82, 0x82, 0x83, +0x84, 0x84, 0x85, 0x86, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8d, 0x8e, 0x8f, 0x91, 0x92, 0x93, +0x94, 0x95, 0x96, 0x96, 0x97, 0x98, 0x99, 0x99, 0x9b, 0x9c, 0x9d, 0x9d, 0x9e, 0x9f, 0xa0, 0xa0, +0xa1, 0xa3, 0xa3, 0xa4, 0xa6, 0xa8, 0xa8, 0xaa, 0xab, 0xac, 0xad, 0xad, 0xad, 0xad, 0xab, 0xa9, +0xa6, 0xa2, 0x9d, 0x97, 0x90, 0x89, 0x82, 0x7a, 0x73, 0x6e, 0x6b, 0x68, 0x67, 0x67, 0x69, 0x6a, +0x6c, 0x6e, 0x6f, 0x6f, 0x6e, 0x6d, 0x6c, 0x6b, 0x69, 0x68, 0x68, 0x68, 0x68, 0x69, 0x69, 0x6a, +0x6a, 0x6a, 0x69, 0x68, 0x66, 0x64, 0x62, 0x61, 0x60, 0x61, 0x62, 0x64, 0x67, 0x6b, 0x70, 0x75, +0x7b, 0x81, 0x87, 0x8c, 0x90, 0x94, 0x97, 0x99, 0x9b, 0x9c, 0x9c, 0x9c, 0x9b, 0x9a, 0x99, 0x98, +0x97, 0x96, 0x95, 0x94, 0x93, 0x92, 0x90, 0x8f, 0x8e, 0x8d, 0x8b, 0x8a, 0x8a, 0x89, 0x88, 0x88, +0x88, 0x87, 0x87, 0x86, 0x85, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x79, 0x76, 0x74, 0x70, 0x6d, 0x6a, +0x67, 0x64, 0x61, 0x5e, 0x5c, 0x5b, 0x5b, 0x5b, 0x5c, 0x5d, 0x60, 0x62, 0x65, 0x68, 0x6b, 0x6e, +0x71, 0x73, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x83, +0x83, 0x84, 0x85, 0x85, 0x86, 0x87, 0x89, 0x8a, 0x8c, 0x8f, 0x91, 0x93, 0x95, 0x97, 0x98, 0x99, +0x9a, 0x9a, 0x9a, 0x99, 0x98, 0x96, 0x95, 0x93, 0x90, 0x8e, 0x8b, 0x88, 0x85, 0x83, 0x80, 0x7d, +0x7a, 0x78, 0x77, 0x75, 0x74, 0x73, 0x72, 0x72, 0x71, 0x71, 0x70, 0x70, 0x6f, 0x6f, 0x6e, 0x6e, +0x6d, 0x6d, 0x6c, 0x6c, 0x6b, 0x6a, 0x6a, 0x69, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x69, 0x6a, +0x6b, 0x6d, 0x6f, 0x71, 0x73, 0x75, 0x78, 0x7b, 0x7d, 0x81, 0x83, 0x85, 0x87, 0x89, 0x8a, 0x8b, +0x8c, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8c, 0x8b, 0x89, 0x87, 0x86, 0x84, 0x82, 0x80, 0x7e, 0x7d, +0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7a, 0x79, 0x77, 0x76, 0x74, 0x73, +0x71, 0x70, 0x6e, 0x6d, 0x6b, 0x6a, 0x68, 0x67, 0x65, 0x64, 0x63, 0x63, 0x63, 0x63, 0x63, 0x64, +0x66, 0x67, 0x69, 0x6b, 0x6e, 0x70, 0x72, 0x74, 0x77, 0x79, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x80, +0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x83, 0x84, 0x85, +0x85, 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86, 0x85, 0x84, 0x83, 0x81, +0x80, 0x7d, 0x7c, 0x7a, 0x79, 0x78, 0x77, 0x76, 0x75, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, +0x76, 0x78, 0x79, 0x7b, 0x7c, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x83, 0x84, 0x84, 0x85, 0x85, 0x86, +0x87, 0x88, 0x89, 0x89, 0x8a, 0x8b, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x93, 0x94, 0x96, +0x98, 0x99, 0x99, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9e, 0x9e, +0x9e, 0x9e, 0x9f, 0x9f, 0x9f, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa6, 0xa6, 0xa5, 0xa4, 0xa2, +0x9f, 0x9c, 0x97, 0x91, 0x8c, 0x86, 0x7e, 0x78, 0x72, 0x6d, 0x68, 0x65, 0x64, 0x63, 0x64, 0x65, +0x67, 0x69, 0x6b, 0x6d, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, +0x6f, 0x6f, 0x6e, 0x6d, 0x6c, 0x6a, 0x69, 0x68, 0x67, 0x67, 0x67, 0x68, 0x6a, 0x6d, 0x70, 0x74, +0x79, 0x7e, 0x84, 0x89, 0x8d, 0x92, 0x96, 0x99, 0x9b, 0x9d, 0x9e, 0x9e, 0x9d, 0x9c, 0x9a, 0x98, +0x96, 0x94, 0x91, 0x8f, 0x8d, 0x8b, 0x89, 0x87, 0x86, 0x84, 0x83, 0x83, 0x82, 0x81, 0x81, 0x81, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7c, 0x7b, 0x78, 0x76, 0x73, 0x70, 0x6d, +0x6a, 0x67, 0x64, 0x62, 0x5f, 0x5e, 0x5d, 0x5c, 0x5c, 0x5e, 0x5f, 0x62, 0x65, 0x68, 0x6b, 0x6f, +0x72, 0x75, 0x78, 0x7a, 0x7c, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x88, +0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8c, 0x8e, 0x8f, 0x91, 0x93, 0x94, 0x95, +0x96, 0x97, 0x97, 0x97, 0x96, 0x95, 0x93, 0x91, 0x8f, 0x8c, 0x89, 0x85, 0x82, 0x7e, 0x7a, 0x77, +0x75, 0x72, 0x70, 0x6e, 0x6d, 0x6c, 0x6c, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6c, 0x6c, +0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f, +0x70, 0x71, 0x73, 0x74, 0x76, 0x78, 0x7b, 0x7d, 0x81, 0x83, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x8f, +0x90, 0x90, 0x91, 0x91, 0x90, 0x8f, 0x8e, 0x8d, 0x8b, 0x89, 0x87, 0x85, 0x83, 0x81, 0x7e, 0x7d, +0x7c, 0x7b, 0x7a, 0x7a, 0x79, 0x78, 0x77, 0x77, 0x76, 0x74, 0x73, 0x72, 0x72, 0x71, 0x70, 0x70, +0x70, 0x6f, 0x6f, 0x6e, 0x6e, 0x6d, 0x6c, 0x6b, 0x69, 0x68, 0x67, 0x66, 0x66, 0x65, 0x65, 0x66, +0x67, 0x68, 0x6a, 0x6b, 0x6d, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, 0x80, 0x81, 0x82, +0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, +0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x83, 0x82, +0x81, 0x80, 0x7d, 0x7c, 0x7a, 0x78, 0x77, 0x75, 0x74, 0x73, 0x72, 0x72, 0x72, 0x72, 0x72, 0x73, +0x74, 0x76, 0x77, 0x78, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x83, 0x84, +0x85, 0x85, 0x86, 0x86, 0x87, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8f, 0x90, 0x91, +0x92, 0x94, 0x94, 0x95, 0x97, 0x97, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x99, 0x98, 0x98, +0x98, 0x98, 0x97, 0x97, 0x98, 0x98, 0x98, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9e, 0x9f, 0xa0, 0xa1, +0xa1, 0xa2, 0xa2, 0xa1, 0x9f, 0x9d, 0x9b, 0x96, 0x91, 0x8b, 0x86, 0x80, 0x79, 0x73, 0x6f, 0x6b, +0x67, 0x66, 0x66, 0x66, 0x67, 0x69, 0x6b, 0x6c, 0x6d, 0x6f, 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, +0x71, 0x71, 0x72, 0x72, 0x73, 0x74, 0x74, 0x73, 0x73, 0x72, 0x70, 0x6f, 0x6d, 0x6c, 0x6a, 0x6a, +0x6a, 0x6b, 0x6d, 0x6f, 0x73, 0x77, 0x7b, 0x81, 0x86, 0x8b, 0x8f, 0x92, 0x96, 0x98, 0x99, 0x9a, +0x9b, 0x9a, 0x99, 0x98, 0x97, 0x95, 0x93, 0x91, 0x8e, 0x8c, 0x89, 0x87, 0x85, 0x83, 0x82, 0x81, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, +0x7c, 0x7b, 0x79, 0x76, 0x74, 0x72, 0x6f, 0x6c, 0x6a, 0x67, 0x65, 0x64, 0x62, 0x62, 0x61, 0x62, +0x64, 0x66, 0x68, 0x6b, 0x6f, 0x72, 0x75, 0x78, 0x7b, 0x7d, 0x80, 0x82, 0x83, 0x84, 0x85, 0x86, +0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x87, 0x87, +0x88, 0x89, 0x8a, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x91, 0x91, 0x90, 0x8f, 0x8e, 0x8c, 0x89, +0x86, 0x84, 0x81, 0x7d, 0x7a, 0x77, 0x75, 0x73, 0x71, 0x6f, 0x6e, 0x6d, 0x6d, 0x6c, 0x6c, 0x6c, +0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x71, 0x71, 0x72, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, +0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x76, 0x77, 0x78, 0x7a, 0x7c, 0x7e, 0x81, +0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x8f, 0x90, 0x90, 0x91, 0x90, 0x90, 0x8f, 0x8d, 0x8b, 0x89, +0x87, 0x85, 0x82, 0x80, 0x7d, 0x7a, 0x78, 0x77, 0x75, 0x73, 0x72, 0x71, 0x71, 0x70, 0x70, 0x70, +0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x6f, 0x6f, 0x6e, 0x6d, 0x6c, 0x6c, +0x6b, 0x6a, 0x69, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6b, 0x6d, 0x6f, 0x71, 0x73, 0x75, 0x78, 0x7a, +0x7c, 0x80, 0x82, 0x83, 0x85, 0x86, 0x87, 0x88, 0x88, 0x89, 0x89, 0x88, 0x88, 0x88, 0x87, 0x86, +0x85, 0x84, 0x83, 0x82, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, +0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x79, 0x78, 0x77, 0x76, 0x75, 0x74, 0x73, 0x73, +0x72, 0x72, 0x72, 0x73, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x80, 0x81, +0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, +0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x95, 0x95, 0x96, 0x96, 0x97, 0x97, 0x97, +0x97, 0x97, 0x96, 0x96, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x94, +0x94, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x99, 0x99, 0x97, +0x94, 0x91, 0x8e, 0x89, 0x84, 0x7e, 0x79, 0x74, 0x6f, 0x6c, 0x6a, 0x69, 0x69, 0x6b, 0x6d, 0x6e, +0x71, 0x73, 0x74, 0x75, 0x75, 0x75, 0x74, 0x73, 0x72, 0x71, 0x71, 0x70, 0x70, 0x71, 0x71, 0x72, +0x72, 0x72, 0x72, 0x72, 0x71, 0x6f, 0x6e, 0x6d, 0x6c, 0x6c, 0x6c, 0x6d, 0x6f, 0x71, 0x75, 0x79, +0x7d, 0x82, 0x86, 0x8a, 0x8e, 0x91, 0x93, 0x94, 0x96, 0x96, 0x96, 0x95, 0x94, 0x93, 0x92, 0x91, +0x8f, 0x8e, 0x8c, 0x8b, 0x8a, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, +0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x79, 0x77, 0x76, 0x74, 0x72, +0x70, 0x6d, 0x6b, 0x69, 0x67, 0x66, 0x65, 0x64, 0x65, 0x65, 0x67, 0x69, 0x6c, 0x6e, 0x71, 0x73, +0x76, 0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x83, 0x84, 0x84, 0x85, +0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x87, 0x87, 0x88, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, +0x8f, 0x90, 0x90, 0x90, 0x90, 0x90, 0x8f, 0x8d, 0x8c, 0x8a, 0x88, 0x86, 0x83, 0x81, 0x7e, 0x7c, +0x7a, 0x78, 0x77, 0x75, 0x74, 0x73, 0x72, 0x72, 0x71, 0x71, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, +0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, +0x74, 0x75, 0x75, 0x76, 0x77, 0x79, 0x7a, 0x7c, 0x7e, 0x81, 0x83, 0x85, 0x87, 0x88, 0x89, 0x8a, +0x8a, 0x8b, 0x8a, 0x8a, 0x89, 0x88, 0x86, 0x85, 0x83, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, +0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, +0x76, 0x76, 0x75, 0x75, 0x74, 0x72, 0x71, 0x70, 0x6f, 0x6e, 0x6d, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, +0x6e, 0x6f, 0x70, 0x72, 0x74, 0x76, 0x77, 0x79, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, +0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7a, +0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x84, 0x85, 0x85, 0x86, 0x86, +0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, +0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x92, 0x92, 0x92, 0x91, 0x91, 0x90, 0x8f, 0x8f, 0x8e, 0x8e, +0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x91, 0x91, 0x92, 0x93, 0x93, 0x93, 0x94, 0x95, 0x95, +0x96, 0x96, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x98, 0x98, 0x97, 0x95, 0x93, 0x90, 0x8d, 0x89, +0x85, 0x80, 0x7b, 0x78, 0x75, 0x73, 0x71, 0x71, 0x72, 0x73, 0x74, 0x76, 0x77, 0x77, 0x78, 0x77, +0x76, 0x75, 0x73, 0x72, 0x70, 0x6f, 0x6e, 0x6e, 0x6e, 0x6f, 0x70, 0x71, 0x71, 0x72, 0x72, 0x72, +0x71, 0x71, 0x70, 0x6f, 0x6e, 0x6e, 0x6f, 0x70, 0x71, 0x74, 0x76, 0x7a, 0x7d, 0x81, 0x85, 0x87, +0x8a, 0x8c, 0x8d, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8e, 0x8e, 0x8d, 0x8d, 0x8c, 0x8c, 0x8b, +0x8a, 0x89, 0x89, 0x88, 0x87, 0x86, 0x86, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, +0x82, 0x82, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x79, 0x78, 0x76, 0x74, 0x72, 0x71, 0x6f, 0x6d, +0x6b, 0x6a, 0x69, 0x68, 0x68, 0x69, 0x6a, 0x6b, 0x6d, 0x6f, 0x71, 0x73, 0x75, 0x77, 0x78, 0x79, +0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x83, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86, +0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x8f, +0x8f, 0x8e, 0x8e, 0x8d, 0x8b, 0x8a, 0x88, 0x87, 0x85, 0x83, 0x81, 0x7e, 0x7c, 0x7b, 0x79, 0x77, +0x76, 0x75, 0x74, 0x73, 0x72, 0x71, 0x71, 0x71, 0x70, 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x71, +0x72, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, +0x78, 0x79, 0x7a, 0x7c, 0x7d, 0x80, 0x81, 0x83, 0x84, 0x85, 0x85, 0x86, 0x86, 0x85, 0x85, 0x84, +0x83, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, +0x7b, 0x7a, 0x79, 0x78, 0x77, 0x77, 0x76, 0x76, 0x75, 0x75, 0x75, 0x75, 0x74, 0x74, 0x73, 0x73, +0x72, 0x71, 0x71, 0x70, 0x70, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x71, 0x71, 0x72, 0x74, 0x75, 0x76, +0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, +0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, +0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, +0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, +0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8d, 0x8e, 0x8f, +0x8f, 0x90, 0x90, 0x90, 0x90, 0x90, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, +0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, +0x94, 0x94, 0x95, 0x95, 0x95, 0x96, 0x96, 0x95, 0x95, 0x93, 0x91, 0x8f, 0x8c, 0x89, 0x85, 0x82, +0x7e, 0x7b, 0x79, 0x77, 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x77, 0x76, 0x75, 0x73, 0x71, +0x6f, 0x6d, 0x6c, 0x6b, 0x6b, 0x6b, 0x6d, 0x6e, 0x70, 0x71, 0x73, 0x74, 0x74, 0x74, 0x73, 0x72, +0x71, 0x70, 0x6f, 0x6f, 0x6f, 0x70, 0x72, 0x73, 0x76, 0x79, 0x7c, 0x7e, 0x81, 0x83, 0x85, 0x86, +0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8d, +0x8d, 0x8c, 0x8b, 0x8a, 0x89, 0x89, 0x88, 0x87, 0x86, 0x86, 0x85, 0x84, 0x83, 0x82, 0x81, 0x80, +0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7a, 0x79, 0x78, 0x77, 0x75, 0x74, 0x73, 0x72, 0x71, 0x70, +0x6f, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x71, 0x71, 0x72, 0x73, 0x74, 0x74, 0x75, 0x75, 0x76, 0x77, +0x77, 0x78, 0x79, 0x7b, 0x7c, 0x7e, 0x80, 0x82, 0x83, 0x84, 0x85, 0x86, 0x86, 0x86, 0x87, 0x87, +0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, +0x8b, 0x8a, 0x8a, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x80, 0x7e, 0x7d, 0x7b, 0x7a, +0x79, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71, 0x71, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x71, +0x71, 0x72, 0x72, 0x72, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76, 0x77, +0x77, 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, +0x7c, 0x7d, 0x80, 0x81, 0x82, 0x83, 0x83, 0x83, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7a, 0x79, 0x78, 0x77, 0x77, 0x76, 0x76, 0x76, +0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x79, +0x79, 0x79, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, +0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, +0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, +0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x84, 0x84, +0x85, 0x85, 0x86, 0x87, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, +0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, +0x92, 0x93, 0x93, 0x92, 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x91, 0x91, 0x91, 0x91, +0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x92, 0x91, 0x90, 0x8e, 0x8c, 0x88, 0x85, 0x82, +0x7d, 0x7a, 0x77, 0x75, 0x74, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x75, 0x74, 0x74, 0x72, 0x70, +0x6f, 0x6e, 0x6d, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x72, 0x74, 0x75, 0x76, 0x76, 0x76, 0x76, 0x75, +0x73, 0x72, 0x72, 0x71, 0x71, 0x72, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7d, 0x80, 0x82, 0x84, 0x85, +0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8b, 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8d, 0x8d, 0x8c, +0x8b, 0x8a, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x83, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7e, +0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x77, 0x76, 0x75, 0x73, 0x72, +0x70, 0x6f, 0x6e, 0x6e, 0x6d, 0x6e, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x74, 0x75, 0x76, +0x76, 0x77, 0x78, 0x79, 0x7a, 0x7c, 0x7d, 0x80, 0x81, 0x83, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, +0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, +0x88, 0x88, 0x87, 0x87, 0x87, 0x86, 0x86, 0x85, 0x85, 0x84, 0x83, 0x82, 0x81, 0x80, 0x7e, 0x7d, +0x7c, 0x7b, 0x7a, 0x79, 0x79, 0x78, 0x77, 0x76, 0x75, 0x75, 0x74, 0x73, 0x73, 0x72, 0x72, 0x72, +0x72, 0x72, 0x72, 0x73, 0x73, 0x74, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, +0x76, 0x76, 0x76, 0x76, 0x75, 0x74, 0x73, 0x73, 0x72, 0x72, 0x72, 0x73, 0x75, 0x76, 0x78, 0x7a, +0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x81, +0x81, 0x80, 0x7e, 0x7d, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, +0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x78, 0x77, 0x76, 0x75, +0x74, 0x74, 0x73, 0x73, 0x72, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x76, 0x76, 0x77, +0x78, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, +0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, +0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, +0x86, 0x86, 0x87, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x89, 0x89, 0x89, 0x88, +0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, +0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, +0x90, 0x90, 0x91, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x91, 0x90, 0x8e, 0x8c, +0x8a, 0x87, 0x85, 0x82, 0x80, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x77, 0x76, 0x75, 0x74, 0x73, +0x71, 0x70, 0x6f, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x72, 0x73, 0x73, 0x74, 0x74, 0x74, 0x74, +0x74, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x76, 0x76, 0x77, 0x78, 0x79, 0x7a, +0x7b, 0x7d, 0x7e, 0x81, 0x82, 0x84, 0x85, 0x87, 0x88, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, +0x8c, 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x8a, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x81, +0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7a, 0x79, +0x78, 0x77, 0x76, 0x75, 0x74, 0x73, 0x73, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x71, 0x71, 0x71, +0x71, 0x71, 0x72, 0x72, 0x73, 0x74, 0x75, 0x77, 0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, +0x80, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, +0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x85, 0x85, 0x85, +0x84, 0x84, 0x83, 0x83, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x79, 0x78, 0x77, 0x76, +0x76, 0x75, 0x74, 0x73, 0x71, 0x70, 0x6f, 0x6e, 0x6d, 0x6c, 0x6b, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, +0x6a, 0x6b, 0x6c, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, +0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, +0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7e, +0x7d, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x77, 0x76, 0x75, 0x74, 0x73, 0x73, 0x72, 0x72, 0x72, +0x72, 0x72, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x76, 0x76, 0x76, 0x77, 0x78, 0x78, +0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x82, +0x82, 0x83, 0x83, 0x84, 0x85, 0x85, 0x86, 0x87, 0x87, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, +0x89, 0x89, 0x88, 0x87, 0x87, 0x86, 0x86, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, +0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, +0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, +0x8a, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, +0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, +0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x92, 0x91, 0x90, 0x8e, 0x8c, 0x8a, +0x88, 0x85, 0x82, 0x80, 0x7d, 0x7b, 0x79, 0x78, 0x77, 0x77, 0x76, 0x75, 0x75, 0x74, 0x74, 0x73, +0x73, 0x72, 0x72, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x76, 0x76, 0x76, 0x76, 0x76, +0x76, 0x76, 0x76, 0x76, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x77, 0x78, 0x79, +0x7b, 0x7c, 0x7e, 0x81, 0x82, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, +0x89, 0x89, 0x89, 0x88, 0x88, 0x87, 0x87, 0x86, 0x85, 0x85, 0x84, 0x83, 0x82, 0x82, 0x81, 0x81, +0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, +0x78, 0x78, 0x78, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, +0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, +0x80, 0x81, 0x81, 0x82, 0x83, 0x83, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, +0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x78, +0x77, 0x76, 0x75, 0x75, 0x74, 0x73, 0x72, 0x72, 0x71, 0x71, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, +0x70, 0x70, 0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x76, 0x77, 0x77, 0x78, +0x78, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, +0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, +0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, +0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, +0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, +0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, +0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, +0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x87, 0x86, +0x85, 0x85, 0x84, 0x83, 0x82, 0x82, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x84, 0x85, 0x85, +0x86, 0x87, 0x87, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, +0x89, 0x89, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, +0x8a, 0x8a, 0x89, 0x89, 0x88, 0x88, 0x87, 0x86, 0x85, 0x85, 0x84, 0x83, 0x82, 0x81, 0x80, 0x7d, +0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, 0x78, +0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x79, +0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, +0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, +0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, +0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, +0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7a, +0x7a, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x78, 0x78, 0x78, 0x78, 0x77, 0x77, 0x77, 0x77, +0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, +0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, +0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, +0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, +0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, +0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, +0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, +0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, +0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, +0x7b, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, +0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, +0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, +0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, 0x82, +0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, +0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x83, +0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, +0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, +0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, +0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, +0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, +0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, +0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, +0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, +0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7d, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, +0x82, 0x81, 0x81, 0x82, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, +0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, +0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, +0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, +0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, +0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, +0x80, 0x80, 0x80, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, +0x81, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, +0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, +0x80, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7d, 0x7c, +0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, +0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x81, +0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, +0x7e, 0x7e, 0x80, 0x81, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, +0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x81, 0x81, 0x81, 0x80, +0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, +0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +0x82, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x80, +0x80, 0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, +0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, +0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, +0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x81, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, +0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7d, 0x7d, 0x7e, 0x7f, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7c, 0x7d, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, +0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, +0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x80, +0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, +0x7e, 0x80, 0x80, 0x7d, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x82, +0x82, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x80, +0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, +0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7d, 0x7d, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x81, +0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x7d, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x80, +0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x7e, +0x7e, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, +0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x81, 0x82, 0x81, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, +0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, +0x7e, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, +0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7e, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, +0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, +0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, +0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, +0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, +0x82, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, +0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, +0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x81, +0x82, 0x81, 0x80, 0x80, 0x81, 0x82, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, +0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7d, 0x7d, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7e, 0x81, 0x81, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, +0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, +0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, +0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7d, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, +0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, +0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, +0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, +0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, +0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, +0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, +0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, +0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, +0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x80, +0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, +0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, +0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, +0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, +0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x81, 0x81, 0x80, 0x81, 0x80, 0x80, +0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7d, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x7f, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, +0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7f, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7f, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7f, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x7e, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x7f, 0x7e, 0x7f, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7f, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7f, 0x7e, 0x7f, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7f, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7f, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7f, 0x80, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, +0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, +0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7f, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x7e, 0x7f, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, +0x80, 0x7f, 0x80, 0x7f, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7f, 0x80, 0x80, +0x7e, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, +0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7f, 0x80, 0x7f, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x7f, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x7f, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, +0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x80, 0x7f, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7f, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x7f, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7f, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, +0x7f, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, +0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x7e, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, +0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, +0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7f, 0x80, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7f, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7f, 0x80, 0x7f, 0x7e, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7f, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, +0x7e, 0x7f, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x7e, 0x7e, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, +0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, +0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7f, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7f, 0x7e, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, +0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x7e, +0x7f, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7f, 0x80, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x7f, 0x7e, +0x80, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +}; diff --git a/examples/peripherals/dac/dac_continuous/dac_audio/main/dac_audio_example_main.c b/examples/peripherals/dac/dac_continuous/dac_audio/main/dac_audio_example_main.c new file mode 100644 index 0000000000..e7d2f07c30 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/dac_audio/main/dac_audio_example_main.c @@ -0,0 +1,117 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/queue.h" +#include "driver/dac_conti.h" +#include "esp_check.h" +#include "audio_example_file.h" + +static const char *TAG = "dac_audio"; + +#if CONFIG_EXAMPLE_DAC_WRITE_ASYNC +static bool IRAM_ATTR dac_on_convert_done_callback(dac_conti_handle_t handle, const dac_event_data_t *event, void *user_data) +{ + QueueHandle_t que = (QueueHandle_t)user_data; + BaseType_t need_awoke; + /* When the queue is full, drop the oldest item */ + if (xQueueIsQueueFullFromISR(que)) { + dac_event_data_t dummy; + xQueueReceiveFromISR(que, &dummy, &need_awoke); + } + /* Send the event from callback */ + xQueueSendFromISR(que, event, &need_awoke); + return need_awoke; +} + +static void dac_write_data_asynchronously(dac_conti_handle_t handle, QueueHandle_t que, uint8_t *data, size_t data_size) +{ + ESP_LOGI(TAG, "Audio size %d bytes, played at frequency %d Hz asynchronously", data_size, CONFIG_EXAMPLE_AUDIO_SAMPLE_RATE); + uint32_t cnt = 1; + while (1) { + printf("Play count: %"PRIu32"\n", cnt++); + dac_event_data_t evt_data; + size_t byte_written = 0; + /* Receive the event from callback and load the data into the DMA buffer until the whole audio loaded */ + while (byte_written < data_size) { + xQueueReceive(que, &evt_data, portMAX_DELAY); + size_t loaded_bytes = 0; + ESP_ERROR_CHECK(dac_conti_write_asynchronously(handle, evt_data.buf, evt_data.buf_size, + data + byte_written, data_size - byte_written, &loaded_bytes)); + byte_written += loaded_bytes; + } + /* Clear the legacy data in DMA, clear times equal to the 'dac_conti_config_t::desc_num' */ + for (int i = 0; i < 4; i++) { + xQueueReceive(que, &evt_data, portMAX_DELAY); + memset(evt_data.buf, 0, evt_data.buf_size); + } + vTaskDelay(pdMS_TO_TICKS(1000)); + } +} +#else +static void dac_write_data_synchronously(dac_conti_handle_t handle, uint8_t *data, size_t data_size) +{ + ESP_LOGI(TAG, "Audio size %d bytes, played at frequency %d Hz synchronously", data_size, CONFIG_EXAMPLE_AUDIO_SAMPLE_RATE); + uint32_t cnt = 1; + while (1) { + printf("Play count: %"PRIu32"\n", cnt++); + ESP_ERROR_CHECK(dac_conti_write(handle, data, data_size, NULL, -1)); + vTaskDelay(pdMS_TO_TICKS(1000)); + } +} +#endif + +void app_main(void) +{ + ESP_LOGI(TAG, "DAC audio example start"); + ESP_LOGI(TAG, "--------------------------------------"); + + dac_conti_handle_t dac_handle; + dac_conti_config_t conti_cfg = { + .chan_mask = DAC_CHANNEL_MASK_ALL, + .desc_num = 4, + .buf_size = 2048, + .freq_hz = CONFIG_EXAMPLE_AUDIO_SAMPLE_RATE, + .offset = 0, + .clk_src = DAC_DIGI_CLK_SRC_APLL, // Using APLL as clock source to get a wider frequency range + /* Assume the data in buffer is 'A B C D E F' + * DAC_CHANNEL_MODE_SIMUL: + * - channel 0: A B C D E F + * - channel 1: A B C D E F + * DAC_CHANNEL_MODE_ALTER: + * - channel 0: A C E + * - channel 1: B D F + */ + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + }; + /* Allocate continuous channels */ + ESP_ERROR_CHECK(dac_new_conti_channels(&conti_cfg, &dac_handle)); +#if CONFIG_EXAMPLE_DAC_WRITE_ASYNC + /* Create a queue to transport the interrupt event data */ + QueueHandle_t que = xQueueCreate(10, sizeof(dac_event_data_t)); + assert(que); + dac_event_callbacks_t cbs = { + .on_convert_done = dac_on_convert_done_callback, + .on_stop = NULL, + }; + /* Must register the callback if using asynchronous writing */ + ESP_ERROR_CHECK(dac_conti_register_event_callback(dac_handle, &cbs, que)); +#endif + /* Enable the continuous channels */ + ESP_ERROR_CHECK(dac_conti_enable(dac_handle)); + ESP_LOGI(TAG, "DAC initialized success, DAC DMA is ready"); + + size_t audio_size = sizeof(audio_table); +#if CONFIG_EXAMPLE_DAC_WRITE_ASYNC + ESP_ERROR_CHECK(dac_conti_start_async_writing(dac_handle)); + dac_write_data_asynchronously(dac_handle, que, (uint8_t *)audio_table, audio_size); +#else + dac_write_data_synchronously(dac_handle, (uint8_t *)audio_table, audio_size); +#endif +} diff --git a/examples/peripherals/dac/dac_continuous/dac_audio/pytest_dac_audio.py b/examples/peripherals/dac/dac_continuous/dac_audio/pytest_dac_audio.py new file mode 100644 index 0000000000..e8940823a2 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/dac_audio/pytest_dac_audio.py @@ -0,0 +1,32 @@ +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import pytest +from pytest_embedded import Dut + + +def dac_example_expect(dut: Dut, mode: str) -> None: + dut.expect('dac_audio: DAC audio example start', timeout=10) + dut.expect('dac_audio: --------------------------------------', timeout=5) + dut.expect('dac_audio: DAC initialized success, DAC DMA is ready', timeout=5) + dut.expect('dac_audio: Audio size 95824 bytes, played at frequency 48000 Hz ' + mode, timeout=5) + dut.expect('Play count: 2', timeout=10) + + +@pytest.mark.esp32 +@pytest.mark.esp32s2 +@pytest.mark.generic +@pytest.mark.parametrize( + 'config', + [ + 'sync', + 'async', + ], + indirect=True, +) +def test_dac_audio_example(dut: Dut) -> None: + sdkconfig = dut.app.sdkconfig + if sdkconfig['EXAMPLE_DAC_WRITE_SYNC']: + dac_example_expect(dut, 'synchronously') + else: + dac_example_expect(dut, 'asynchronously') diff --git a/examples/peripherals/dac/dac_continuous/dac_audio/sdkconfig.ci.async b/examples/peripherals/dac/dac_continuous/dac_audio/sdkconfig.ci.async new file mode 100644 index 0000000000..6dd5fe92bb --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/dac_audio/sdkconfig.ci.async @@ -0,0 +1,2 @@ +CONFIG_EXAMPLE_DAC_WRITE_SYNC=n +CONFIG_EXAMPLE_DAC_WRITE_ASYNC=y diff --git a/examples/peripherals/dac/dac_continuous/dac_audio/sdkconfig.ci.sync b/examples/peripherals/dac/dac_continuous/dac_audio/sdkconfig.ci.sync new file mode 100644 index 0000000000..dc818de759 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/dac_audio/sdkconfig.ci.sync @@ -0,0 +1,2 @@ +CONFIG_EXAMPLE_DAC_WRITE_SYNC=y +CONFIG_EXAMPLE_DAC_WRITE_ASYNC=n diff --git a/examples/peripherals/dac/dac_audio/tools/generate_audio_file.py b/examples/peripherals/dac/dac_continuous/dac_audio/tools/generate_audio_file.py similarity index 100% rename from examples/peripherals/dac/dac_audio/tools/generate_audio_file.py rename to examples/peripherals/dac/dac_continuous/dac_audio/tools/generate_audio_file.py diff --git a/examples/peripherals/dac/dac_continuous/dac_audio/tools/hi_idf_audio.wav b/examples/peripherals/dac/dac_continuous/dac_audio/tools/hi_idf_audio.wav new file mode 100644 index 0000000000000000000000000000000000000000..9857d9bc31f577a1544f981cb294c8eab3cc31d2 GIT binary patch literal 191742 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

L1XE5oi1F#~8^4%9CM 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

IA(73l2xOV`W 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®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 -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "esp_check.h" -#include "dac_continuous.h" - -#define EXAMPLE_WAVE_FREQ_HZ 2000 // Default wave frequency 50 Hz, it can't be too high -#define EXAMPLE_CONVERT_FREQ_HZ (EXAMPLE_ARRAY_LEN * EXAMPLE_WAVE_FREQ_HZ) // The frequency that DAC convert every data in the wave array - -static uint8_t sin_wav[EXAMPLE_ARRAY_LEN]; // Used to store sine wave values -static uint8_t tri_wav[EXAMPLE_ARRAY_LEN]; // Used to store triangle wave values -static uint8_t saw_wav[EXAMPLE_ARRAY_LEN]; // Used to store sawtooth wave values -static uint8_t squ_wav[EXAMPLE_ARRAY_LEN]; // Used to store square wave values - -static const char *TAG = "dac continuous(DMA)"; -static const char wav_name[DAC_WAVE_MAX][15] = {"sine", "triangle", "sawtooth", "square"}; - -static void dac_dma_write_task(void *args) -{ - dac_channels_handle_t handle = (dac_channels_handle_t)args; - dac_example_wave_type_t wav_sel = DAC_SINE_WAVE; // Start from sine wave - - size_t buf_len = EXAMPLE_ARRAY_LEN; - - while (1) { - /* The wave in the buffer will be converted cyclicly - * but take care the data buffer need to be available during the conversion */ - switch (wav_sel) { - case DAC_SINE_WAVE: - ESP_ERROR_CHECK(dac_channels_write_cyclically(handle, (uint8_t *)sin_wav, buf_len, NULL, 1000)); - break; - case DAC_TRIANGLE_WAVE: - ESP_ERROR_CHECK(dac_channels_write_cyclically(handle, (uint8_t *)tri_wav, buf_len, NULL, 1000)); - break; - case DAC_SAWTOOTH_WAVE: - ESP_ERROR_CHECK(dac_channels_write_cyclically(handle, (uint8_t *)saw_wav, buf_len, NULL, 1000)); - break; - case DAC_SQUARE_WAVE: - ESP_ERROR_CHECK(dac_channels_write_cyclically(handle, (uint8_t *)squ_wav, buf_len, NULL, 1000)); - break; - default: - break; - } - /* Switch wave every EXAMPLE_WAVE_PERIOD_SEC seconds */ - vTaskDelay(pdMS_TO_TICKS(EXAMPLE_WAVE_PERIOD_SEC * 1000)); - wav_sel++; - wav_sel %= DAC_WAVE_MAX; - ESP_LOGI(TAG, "%s wave start", wav_name[wav_sel]); - } -} - -static void dac_init_channel(dac_channel_mask_t mask, dac_conti_config_t *conti_cfg, dac_channels_handle_t *dac_handle) -{ - dac_channels_handle_t handle = NULL; - dac_channels_config_t cfg = { - .chan_sel = mask, - }; - /* Allocate the channel group */ - ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); - /* Enable the channels in the group */ - ESP_ERROR_CHECK(dac_channels_enable(handle)); - /* Initialize DAC DMA peripheral */ - ESP_ERROR_CHECK(dac_channels_init_continuous_mode(handle, conti_cfg)); - /* Start the DAC DMA peripheral */ - ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(handle)); - - *dac_handle = handle; -} - -/* Unused DAC de-initialize example, to show how to delete the DAC resources */ -static void __attribute__((unused)) dac_deinit_channel(dac_channels_handle_t dac_handle) -{ - /* Stop the DAC DMA peripheral */ - ESP_ERROR_CHECK(dac_channels_disable_continuous_mode(dac_handle)); - /* Deinitialize the DAC DMA peripheral */ - ESP_ERROR_CHECK(dac_channels_deinit_continuous_mode(dac_handle)); - /* Disable the DAC channels */ - ESP_ERROR_CHECK(dac_channels_disable(dac_handle)); - /* Delete the channel group */ - ESP_ERROR_CHECK(dac_del_channels(dac_handle)); -} - -static void example_generate_wave(void) -{ - uint32_t pnt_num = EXAMPLE_ARRAY_LEN; - - for (int i = 0; i < pnt_num; i ++) { - sin_wav[i] = (uint8_t)((sin( i * CONST_PERIOD_2_PI / pnt_num) + 1) * (double)(EXAMPLE_DAC_AMPLITUDE) / 2 + 0.5); - tri_wav[i] = (i > (pnt_num / 2)) ? (2 * EXAMPLE_DAC_AMPLITUDE * (pnt_num - i) / pnt_num) : (2 * EXAMPLE_DAC_AMPLITUDE * i / pnt_num); - saw_wav[i] = (i == pnt_num) ? 0 : (i * EXAMPLE_DAC_AMPLITUDE / pnt_num); - squ_wav[i] = (i < (pnt_num / 2)) ? EXAMPLE_DAC_AMPLITUDE : 0; - } -} - -void dac_continuous_by_dma(void) -{ - dac_channels_handle_t chan12_handle; - dac_conti_config_t conti_cfg = { - .freq_hz = EXAMPLE_CONVERT_FREQ_HZ, - /* Assume the data in buffer is 'A B C D E F' - * DAC_CHANNEL_MODE_SIMUL: - * - channel 0: A B C D E F - * - channel 1: A B C D E F - * DAC_CHANNEL_MODE_ALTER: - * - channel 0: A C E - * - channel 1: B D F - */ - .chan_mode = DAC_CHANNEL_MODE_SIMUL, - .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' - .desc_num = 10, - }; - /* For Continuous(DMA) Mode, only one group can access the DMA periphral, - * which means the two channels can't be initialized to DMA mode separately */ - dac_init_channel(DAC_CHANNEL_MASK_BOTH, &conti_cfg, &chan12_handle); - - example_log_info(EXAMPLE_CONVERT_FREQ_HZ, EXAMPLE_WAVE_FREQ_HZ); - - /* Generate the data buffer, the data is a sawtooth wave every 256 point, - * With the the data frequency at 20 KHz, the sawtooth wave frequency is about 20 KHz / 256 = 78.125 Hz */ - example_generate_wave(); - - /* Start to convert wave */ - xTaskCreate(dac_dma_write_task, "dac_dma_write_task", 4096, chan12_handle, 5, NULL); -} diff --git a/examples/peripherals/dac/dac_continuous/main/dac_continuous_main.c b/examples/peripherals/dac/dac_continuous/main/dac_continuous_main.c deleted file mode 100644 index ce7f86960e..0000000000 --- a/examples/peripherals/dac/dac_continuous/main/dac_continuous_main.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: CC0-1.0 - */ - -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "driver/adc.h" -#include "esp_check.h" -#include "dac_continuous.h" - -/** - * There are two ways to convert digital data to analog signal continuously: - * - Using a timer: setting DAC voltage periodically in the timer interrupt - * in this way, DAC can achieve a relatively low conversion frequency - * but it is not a efficient way comparing to using the DMA - * - Using DMA: tansmitting the data buffer via DMA, - * the conversion frequency is controlled by how fast it is transmitted by DMA - * in this way, the conversion frequency can reach sevral MHz, - * but it can't achieve a very low conversion frequency because it is limited by the DMA clock source - * Generally, recommand to use DMA, if the DMA peripheral is occupied or the required conversion frequency is very low, - * then use timer instead - */ -#define EXAMPLE_DAC_CONTINUOUS_BY_TIMER 0 -#define EXAMPLE_DAC_CONTINUOUS_BY_DMA 1 -#define EXAMPLE_DAC_CONTINUOUS_MODE EXAMPLE_DAC_CONTINUOUS_BY_DMA - -/* ADC configuration */ -#if CONFIG_IDF_TARGET_ESP32 -#define EXAMPLE_DAC_CHAN0_ADC_CHAN ADC2_CHANNEL_8 // GPIO25, same as DAC channel 0 -#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_9 // GPIO26, same as DAC channel 1 -#define EXAMPLE_DAC_CHAN0_IO (25) // DAC channel 0 io number -#define EXAMPLE_DAC_CHAN1_IO (26) // DAC channel 1 io number -#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_12 -#elif CONFIG_IDF_TARGET_ESP32S2 -#define EXAMPLE_DAC_CHAN0_ADC_CHAN ADC2_CHANNEL_6 // GPIO17, same as DAC channel 0 -#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_7 // GPIO18, same as DAC channel 1 -#define EXAMPLE_DAC_CHAN0_IO (17) // DAC channel 0 io number -#define EXAMPLE_DAC_CHAN1_IO (18) // DAC channel 1 io number -#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_13 -#endif -#define EXAMPLE_ADC_ATTEN ADC_ATTEN_DB_11 - -_Static_assert(EXAMPLE_DAC_AMPLITUDE < 256, "The DAC accuracy is 8 bit-width, doesn't support the amplitude beyond 255"); - -static const char *TAG = "dac continuous"; - -void example_log_info(uint32_t conv_freq, uint32_t wave_freq) -{ - ESP_LOGI(TAG, "--------------------------------------------------"); - ESP_LOGI(TAG, "DAC continuous output by %s", EXAMPLE_DAC_CONTINUOUS_MODE ? "DMA" : "Timer"); - ESP_LOGI(TAG, "DAC channel 0 io: GPIO_NUM_%d", EXAMPLE_DAC_CHAN0_IO); - ESP_LOGI(TAG, "DAC channel 1 io: GPIO_NUM_%d", EXAMPLE_DAC_CHAN1_IO); - ESP_LOGI(TAG, "Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE"); - ESP_LOGI(TAG, "DAC conversion frequency (Hz): %d", conv_freq); - ESP_LOGI(TAG, "DAC wave frequency (Hz): %d", wave_freq); - ESP_LOGI(TAG, "--------------------------------------------------"); -} - -static void adc_monitor_task(void *args) -{ - /* Set the ADC channels, these channels are connected to the DAC channels internally */ - ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN0_ADC_CHAN, EXAMPLE_ADC_ATTEN)); - ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_ATTEN)); - - int chan1_val = 0; - int chan2_val = 0; - while (1) { - /* Read the DAC output voltage */ - ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN0_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan1_val)); - ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan2_val)); - printf("DAC channel 0 vaule: %4d\tDAC channel 1 vaule: %4d\n", chan1_val, chan2_val); - vTaskDelay(pdMS_TO_TICKS(500)); - } -} - -void app_main(void) -{ -#if EXAMPLE_DAC_CONTINUOUS_MODE == EXAMPLE_DAC_CONTINUOUS_BY_DMA - /* Output 2 kHz waves using DMA */ - dac_continuous_by_dma(); -#else - /* Output 50 Hz waves using timer interrupt */ - dac_continuous_by_timer(); -#endif - /* Create ADC monitor task to detect the voltage on DAC pin every 500 ms */ - xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); -} diff --git a/examples/peripherals/dac/dac_continuous/pytest_dac_continuous.py b/examples/peripherals/dac/dac_continuous/pytest_dac_continuous.py deleted file mode 100644 index 1460667fed..0000000000 --- a/examples/peripherals/dac/dac_continuous/pytest_dac_continuous.py +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD -# SPDX-License-Identifier: CC0-1.0 - -import pytest -from pytest_embedded import Dut - - -@pytest.mark.esp32 -@pytest.mark.generic -def test_dac_continuous_example_with_12bit_adc(dut: Dut) -> None: - dut.expect('I \\(([0-9]+)\\) dac continuous: --------------------------------------------------', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac continuous: DAC continuous output by DMA', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac continuous: DAC channel 0 io: GPIO_NUM_25', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac continuous: DAC channel 1 io: GPIO_NUM_26', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac continuous: DAC conversion frequency \\(Hz\\): ([0-9]+)', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac continuous: DAC wave frequency \\(Hz\\): ([0-9]+)', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac continuous: --------------------------------------------------', timeout=10) - dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10) - - -@pytest.mark.esp32s2 -@pytest.mark.generic -def test_dac_continuous_example_with_13bit_adc(dut: Dut) -> None: - dut.expect('I \\(([0-9]+)\\) dac continuous: --------------------------------------------------', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac continuous: DAC continuous output by DMA', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac continuous: DAC channel 0 io: GPIO_NUM_17', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac continuous: DAC channel 1 io: GPIO_NUM_18', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac continuous: DAC conversion frequency \\(Hz\\): ([0-9]+)', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac continuous: DAC wave frequency \\(Hz\\): ([0-9]+)', timeout=10) - dut.expect('I \\(([0-9]+)\\) dac continuous: --------------------------------------------------', timeout=10) - dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10) diff --git a/examples/peripherals/dac/dac_continuous/sdkconfig.defaults b/examples/peripherals/dac/dac_continuous/sdkconfig.defaults deleted file mode 100644 index 83e2dfa154..0000000000 --- a/examples/peripherals/dac/dac_continuous/sdkconfig.defaults +++ /dev/null @@ -1 +0,0 @@ -CONFIG_ADC_DISABLE_DAC=n diff --git a/examples/peripherals/dac/dac_continuous/CMakeLists.txt b/examples/peripherals/dac/dac_continuous/signal_generator/CMakeLists.txt similarity index 89% rename from examples/peripherals/dac/dac_continuous/CMakeLists.txt rename to examples/peripherals/dac/dac_continuous/signal_generator/CMakeLists.txt index f1a4f60e31..99e61f9ac5 100644 --- a/examples/peripherals/dac/dac_continuous/CMakeLists.txt +++ b/examples/peripherals/dac/dac_continuous/signal_generator/CMakeLists.txt @@ -3,4 +3,4 @@ cmake_minimum_required(VERSION 3.16) include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(dac_continuous) +project(signal_generator) diff --git a/examples/peripherals/dac/dac_continuous/signal_generator/README.md b/examples/peripherals/dac/dac_continuous/signal_generator/README.md new file mode 100644 index 0000000000..9ebdecf05b --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/signal_generator/README.md @@ -0,0 +1,155 @@ +| Supported Targets | ESP32 | ESP32-S2 | +| ----------------- | ----- | -------- | + +# DAC Constant Example + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +## Overview + +This example shows the basic usage of outputting continuous voltage by the DAC driver. There are two ways to realize continuous output, one is outputting by DMA transmission and another is by timer interrupt. + +### Timer Interrupt + +While using timer interrupt to output the waves, it actrually sets the voltage by `oneshot` API in every timer interrupt callback. Which means the conversion frequency is equal to the timer interrupt frequency. Obviously, the conversion frequency is limited by the interrupt, which relies on the CPU scheduling, thus it can't reach a high frequency in this mode. But it can be used as a supplementary way while the conversion frequency is too low to use DMA mode. + +### DMA transmission + +While using DMA to transmit the wave buffers, the digital values are put into a DMA buffer waiting for transmition and conversion, that means the conversion frequency is equal to the frequency that DMA transmitting the data. We can set the DMA frequency directly, and the digital data in the buffer will be sent automatically when the buffer has been loaded into the DMA. So the conversion frequency can reach even several MHz while using DMA mode. But the wave can be distorted if the frequency is too high. + +## How to use the Example + +### Hardware Required + +* A development board with ESP32 or ESP32-S2 SoC + - Note that some ESP32-S2 DevKits have LED on it which is connected to GPIO18 (same pin as DAC channel1), so the output voltage of DAC channel 1 can't go down due the this LED. +* (Optional) An oscilloscope to monitor the output wave + +### Configure the Project + +You can switch the output method by setting the macro `EXAMPLE_DAC_CONTINUOUS_MODE` to `EXAMPLE_DAC_CONTINUOUS_BY_TIMER` or `EXAMPLE_DAC_CONTINUOUS_BY_DMA`. + +There are four waves: sine, triangle, saw tooth and square. These waves are stored in corresponding buffers, and each wave has 400 points as default, which can be modified by `EXAMPLE_ARRAY_LEN`, reduce the point number can increase the wave frequency. + +### Build and Flash + +Note that as we use the ADC to monitor the output data, we need to set false to `CONFIG_ADC_DISABLE_DAC_OUTPUT` in the menuconfig, otherwise the ADC will shutdown the DAC power to guarantee it won't be affect by DAC. + +Build the project and flash it to the board, then run monitor tool to view serial output: + +``` +idf.py -p PORT flash monitor +``` + +(Replace PORT with the name of the serial port to use.) + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. + +## Example Output + +This example can output sine wave, triangle wave, saw tooth wave and square wave periodically, each wave will last for 3 seconds. + +The DAC channels can be read by ADC channels internally. The ADC read period is 500 ms, the following log is the raw ADC value read from the DAC channels. But since the ADC sample-rate is lower than the DAC output-rate, the sampling value can only indicate that the voltage is changing. + +### Timer Triggered Output + +You can see sine wave, triangle wave, saw tooth wave and square wave at 50 Hz on the oscilloscope. + +``` +I (333) dac continuous: -------------------------------------------------- +I (343) dac continuous: DAC continuous output by Timer +I (343) dac continuous: DAC channel 0 io: GPIO_NUM_25 +I (353) dac continuous: DAC channel 1 io: GPIO_NUM_26 +I (353) dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE +I (363) dac continuous: DAC conversion frequency (Hz): 20000 +I (373) dac continuous: DAC wave frequency (Hz): 50 +I (373) dac continuous: -------------------------------------------------- +DAC channel 0 value: 2291 DAC channel 1 value: 2331 +DAC channel 0 value: 43 DAC channel 1 value: 3 +DAC channel 0 value: 55 DAC channel 1 value: 32 +DAC channel 0 value: 57 DAC channel 1 value: 33 +DAC channel 0 value: 56 DAC channel 1 value: 34 +DAC channel 0 value: 59 DAC channel 1 value: 34 +DAC channel 0 value: 56 DAC channel 1 value: 33 +I (3393) dac continuous(timer): triangle wave start +DAC channel 0 value: 2258 DAC channel 1 value: 2243 +DAC channel 0 value: 2257 DAC channel 1 value: 2242 +DAC channel 0 value: 2259 DAC channel 1 value: 2242 +DAC channel 0 value: 2257 DAC channel 1 value: 2245 +DAC channel 0 value: 2257 DAC channel 1 value: 2243 +DAC channel 0 value: 2258 DAC channel 1 value: 2240 +I (6393) dac continuous(timer): sawtooth wave start +DAC channel 0 value: 2704 DAC channel 1 value: 2735 +DAC channel 0 value: 2704 DAC channel 1 value: 2735 +DAC channel 0 value: 2704 DAC channel 1 value: 2736 +DAC channel 0 value: 2704 DAC channel 1 value: 2717 +DAC channel 0 value: 2704 DAC channel 1 value: 2734 +DAC channel 0 value: 2704 DAC channel 1 value: 2736 +I (9393) dac continuous(timer): square wave start +DAC channel 0 value: 0 DAC channel 1 value: 0 +DAC channel 0 value: 0 DAC channel 1 value: 0 +DAC channel 0 value: 0 DAC channel 1 value: 0 +DAC channel 0 value: 0 DAC channel 1 value: 0 +DAC channel 0 value: 0 DAC channel 1 value: 0 +DAC channel 0 value: 0 DAC channel 1 value: 0 +I (12393) dac continuous(timer): sine wave start +DAC channel 0 value: 82 DAC channel 1 value: 62 +DAC channel 0 value: 83 DAC channel 1 value: 62 +DAC channel 0 value: 82 DAC channel 1 value: 62 +DAC channel 0 value: 87 DAC channel 1 value: 62 +DAC channel 0 value: 84 DAC channel 1 value: 63 +DAC channel 0 value: 83 DAC channel 1 value: 64 +... +``` + +### DMA Output + +You can see sine wave, triangle wave, saw tooth wave and square wave at 2 KHz on the oscilloscope. + +``` +I (335) dac continuous: -------------------------------------------------- +I (345) dac continuous: DAC continuous output by DMA +I (345) dac continuous: DAC channel 0 io: GPIO_NUM_25 +I (355) dac continuous: DAC channel 1 io: GPIO_NUM_26 +I (355) dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE +I (365) dac continuous: DAC conversion frequency (Hz): 800000 +I (375) dac continuous: DAC wave frequency (Hz): 2000 +I (375) dac continuous: -------------------------------------------------- +DAC channel 0 value: 3131 DAC channel 1 value: 1634 +DAC channel 0 value: 1712 DAC channel 1 value: 2531 +DAC channel 0 value: 1716 DAC channel 1 value: 2535 +DAC channel 0 value: 1715 DAC channel 1 value: 2544 +DAC channel 0 value: 1715 DAC channel 1 value: 2533 +DAC channel 0 value: 1712 DAC channel 1 value: 2539 +I (3395) dac continuous(DMA): triangle wave start +DAC channel 0 value: 592 DAC channel 1 value: 1190 +DAC channel 0 value: 4095 DAC channel 1 value: 3518 +DAC channel 0 value: 4095 DAC channel 1 value: 3515 +DAC channel 0 value: 4095 DAC channel 1 value: 3516 +DAC channel 0 value: 4095 DAC channel 1 value: 3514 +DAC channel 0 value: 4095 DAC channel 1 value: 3515 +I (6395) dac continuous(DMA): sawtooth wave start +DAC channel 0 value: 294 DAC channel 1 value: 560 +DAC channel 0 value: 2861 DAC channel 1 value: 3227 +DAC channel 0 value: 2860 DAC channel 1 value: 3216 +DAC channel 0 value: 2861 DAC channel 1 value: 3227 +DAC channel 0 value: 2861 DAC channel 1 value: 3216 +DAC channel 0 value: 2859 DAC channel 1 value: 3183 +I (9395) dac continuous(DMA): square wave start +DAC channel 0 value: 4095 DAC channel 1 value: 4095 +DAC channel 0 value: 0 DAC channel 1 value: 0 +DAC channel 0 value: 0 DAC channel 1 value: 0 +DAC channel 0 value: 0 DAC channel 1 value: 0 +DAC channel 0 value: 0 DAC channel 1 value: 0 +DAC channel 0 value: 0 DAC channel 1 value: 0 +I (12395) dac continuous(DMA): sine wave start +DAC channel 0 value: 2864 DAC channel 1 value: 3691 +DAC channel 0 value: 0 DAC channel 1 value: 204 +DAC channel 0 value: 0 DAC channel 1 value: 202 +DAC channel 0 value: 0 DAC channel 1 value: 193 +DAC channel 0 value: 0 DAC channel 1 value: 181 +DAC channel 0 value: 0 DAC channel 1 value: 194 +... +``` diff --git a/examples/peripherals/dac/dac_continuous/signal_generator/main/CMakeLists.txt b/examples/peripherals/dac/dac_continuous/signal_generator/main/CMakeLists.txt new file mode 100644 index 0000000000..3d5153b3ba --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/signal_generator/main/CMakeLists.txt @@ -0,0 +1,6 @@ +set(srcs "dac_conti_example_main.c" + "dac_conti_example_dma.c" + "dac_conti_example_timer.c") + +idf_component_register(SRCS "${srcs}" + INCLUDE_DIRS ".") diff --git a/examples/peripherals/dac/dac_continuous/signal_generator/main/Kconfig.projbuild b/examples/peripherals/dac/dac_continuous/signal_generator/main/Kconfig.projbuild new file mode 100644 index 0000000000..bbe2f05bbe --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/signal_generator/main/Kconfig.projbuild @@ -0,0 +1,22 @@ +menu "Example Configuration" + + choice EXAMPLE_DAC_CONTINUOUS_MODE + prompt "Select DAC continuous example mode" + default EXAMPLE_DAC_CONTINUOUS_BY_DMA + help + DAC output continuous data by DMA or timer + + config EXAMPLE_DAC_CONTINUOUS_BY_DMA + bool "By DMA" + config EXAMPLE_DAC_CONTINUOUS_BY_TIMER + bool "By Timer" + endchoice + + config EXAMPLE_WAVE_PERIOD_SEC + int "Period of switching the waveform (Unit: Sec)" + default 2 + help + The waveforms will switch every several seconds, + this configuration is to specify the switching period + +endmenu diff --git a/examples/peripherals/dac/dac_continuous/main/dac_continuous.h b/examples/peripherals/dac/dac_continuous/signal_generator/main/dac_conti_example.h similarity index 74% rename from examples/peripherals/dac/dac_continuous/main/dac_continuous.h rename to examples/peripherals/dac/dac_continuous/signal_generator/main/dac_conti_example.h index 315937281a..6ae2fafb79 100644 --- a/examples/peripherals/dac/dac_continuous/main/dac_continuous.h +++ b/examples/peripherals/dac/dac_continuous/signal_generator/main/dac_conti_example.h @@ -3,14 +3,10 @@ * * SPDX-License-Identifier: CC0-1.0 */ -#include "driver/dac_driver.h" - #define CONST_PERIOD_2_PI 6.2832 // 2 * PI #define EXAMPLE_ARRAY_LEN 400 // Length of wave array #define EXAMPLE_DAC_AMPLITUDE 255 // Amplitude of DAC voltage. If it's more than 256 will causes dac_output_voltage() output 0. -#define EXAMPLE_WAVE_PERIOD_SEC 3 // Switch wave every 3 senconds -#define EXAMPLE_DAC_CHANNEL DAC_CHANNEL_MASK_BOTH // DAC_CHANNEL_MASK_CH0 & DAC_CHANNEL_MASK_CH1 typedef enum { DAC_SINE_WAVE, @@ -24,13 +20,13 @@ typedef enum { * @brief Use DMA to convert continuously * */ -void dac_continuous_by_dma(void); +void example_dac_continuous_by_dma(void); /** * @brief Use timer to convert continuously * */ -void dac_continuous_by_timer(void); +void example_dac_continuous_by_timer(void); /** * @brief Print the example log information diff --git a/examples/peripherals/dac/dac_continuous/signal_generator/main/dac_conti_example_dma.c b/examples/peripherals/dac/dac_continuous/signal_generator/main/dac_conti_example_dma.c new file mode 100644 index 0000000000..19f884759f --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/signal_generator/main/dac_conti_example_dma.c @@ -0,0 +1,87 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "driver/dac_conti.h" +#include "esp_check.h" +#include "dac_conti_example.h" + +#define EXAMPLE_WAVE_FREQ_HZ 2000 // Default wave frequency 2000 Hz, it can't be too low +#define EXAMPLE_CONVERT_FREQ_HZ (EXAMPLE_ARRAY_LEN * EXAMPLE_WAVE_FREQ_HZ) // The frequency that DAC convert every data in the wave array + +extern uint8_t sin_wav[EXAMPLE_ARRAY_LEN]; // Used to store sine wave values +extern uint8_t tri_wav[EXAMPLE_ARRAY_LEN]; // Used to store triangle wave values +extern uint8_t saw_wav[EXAMPLE_ARRAY_LEN]; // Used to store sawtooth wave values +extern uint8_t squ_wav[EXAMPLE_ARRAY_LEN]; // Used to store square wave values + +static const char *TAG = "dac continuous(DMA)"; +static const char wav_name[DAC_WAVE_MAX][15] = {"sine", "triangle", "sawtooth", "square"}; + +static void dac_dma_write_task(void *args) +{ + dac_conti_handle_t handle = (dac_conti_handle_t)args; + dac_example_wave_type_t wav_sel = DAC_SINE_WAVE; // Start from sine wave + + size_t buf_len = EXAMPLE_ARRAY_LEN; + + while (1) { + /* The wave in the buffer will be converted cyclically */ + switch (wav_sel) { + case DAC_SINE_WAVE: + ESP_ERROR_CHECK(dac_conti_write_cyclically(handle, (uint8_t *)sin_wav, buf_len, NULL)); + break; + case DAC_TRIANGLE_WAVE: + ESP_ERROR_CHECK(dac_conti_write_cyclically(handle, (uint8_t *)tri_wav, buf_len, NULL)); + break; + case DAC_SAWTOOTH_WAVE: + ESP_ERROR_CHECK(dac_conti_write_cyclically(handle, (uint8_t *)saw_wav, buf_len, NULL)); + break; + case DAC_SQUARE_WAVE: + ESP_ERROR_CHECK(dac_conti_write_cyclically(handle, (uint8_t *)squ_wav, buf_len, NULL)); + break; + default: + break; + } + /* Switch wave every CONFIG_EXAMPLE_WAVE_PERIOD_SEC seconds */ + vTaskDelay(pdMS_TO_TICKS(CONFIG_EXAMPLE_WAVE_PERIOD_SEC * 1000)); + wav_sel++; + wav_sel %= DAC_WAVE_MAX; + ESP_LOGI(TAG, "%s wave start", wav_name[wav_sel]); + } +} + +void example_dac_continuous_by_dma(void) +{ + dac_conti_handle_t conti_handle; + dac_conti_config_t conti_cfg = { + .chan_mask = DAC_CHANNEL_MASK_ALL, + .desc_num = 8, + .buf_size = 2048, + .freq_hz = EXAMPLE_CONVERT_FREQ_HZ, + .offset = 0, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' + /* Assume the data in buffer is 'A B C D E F' + * DAC_CHANNEL_MODE_SIMUL: + * - channel 0: A B C D E F + * - channel 1: A B C D E F + * DAC_CHANNEL_MODE_ALTER: + * - channel 0: A C E + * - channel 1: B D F + */ + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + }; + /* Allocate continuous channel */ + ESP_ERROR_CHECK(dac_new_conti_channels(&conti_cfg, &conti_handle)); + /* Enable the channels in the group */ + ESP_ERROR_CHECK(dac_conti_enable(conti_handle)); + + example_log_info(EXAMPLE_CONVERT_FREQ_HZ, EXAMPLE_WAVE_FREQ_HZ); + + /* Start to convert wave */ + xTaskCreate(dac_dma_write_task, "dac_dma_write_task", 4096, conti_handle, 5, NULL); +} diff --git a/examples/peripherals/dac/dac_continuous/signal_generator/main/dac_conti_example_main.c b/examples/peripherals/dac/dac_continuous/signal_generator/main/dac_conti_example_main.c new file mode 100644 index 0000000000..16a0dc5390 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/signal_generator/main/dac_conti_example_main.c @@ -0,0 +1,121 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "soc/dac_channel.h" +#include "esp_adc/adc_oneshot.h" +#include "esp_check.h" +#include "dac_conti_example.h" + +/** + * There are two ways to convert digital data to analog signal continuously: + * - Using a timer: setting DAC voltage periodically in the timer interrupt + * in this way, DAC can achieve a relatively low conversion frequency + * but it is not a efficient way comparing to using the DMA + * - Using DMA: tansmitting the data buffer via DMA, + * the conversion frequency is controlled by how fast it is transmitted by DMA + * in this way, the conversion frequency can reach several MHz, + * but it can't achieve a very low conversion frequency because it is limited by the DMA clock source + * Generally, recommand to use DMA, if the DMA peripheral is occupied or the required conversion frequency is very low, + * then use timer instead + */ + +/* ADC configuration */ +#if CONFIG_IDF_TARGET_ESP32 +#define EXAMPLE_DAC_CHAN0_ADC_CHAN ADC_CHANNEL_8 // GPIO25, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC_CHANNEL_9 // GPIO26, same as DAC channel 1 +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_12 +#elif CONFIG_IDF_TARGET_ESP32S2 +#define EXAMPLE_DAC_CHAN0_ADC_CHAN ADC_CHANNEL_6 // GPIO17, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC_CHANNEL_7 // GPIO18, same as DAC channel 1 +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_13 +#endif +#define EXAMPLE_DAC_CHAN0_IO DAC_CHAN0_GPIO_NUM // DAC channel 0 io number +#define EXAMPLE_DAC_CHAN1_IO DAC_CHAN1_GPIO_NUM // DAC channel 1 io number +#define EXAMPLE_ADC_ATTEN ADC_ATTEN_DB_11 + +_Static_assert(EXAMPLE_DAC_AMPLITUDE < 256, "The DAC accuracy is 8 bit-width, doesn't support the amplitude beyond 255"); + +static const char *TAG = "dac continuous"; + +uint8_t sin_wav[EXAMPLE_ARRAY_LEN]; // Used to store sine wave values +uint8_t tri_wav[EXAMPLE_ARRAY_LEN]; // Used to store triangle wave values +uint8_t saw_wav[EXAMPLE_ARRAY_LEN]; // Used to store sawtooth wave values +uint8_t squ_wav[EXAMPLE_ARRAY_LEN]; // Used to store square wave values + +static void example_generate_wave(void) +{ + uint32_t pnt_num = EXAMPLE_ARRAY_LEN; + + for (int i = 0; i < pnt_num; i ++) { + sin_wav[i] = (uint8_t)((sin( i * CONST_PERIOD_2_PI / pnt_num) + 1) * (double)(EXAMPLE_DAC_AMPLITUDE) / 2 + 0.5); + tri_wav[i] = (i > (pnt_num / 2)) ? (2 * EXAMPLE_DAC_AMPLITUDE * (pnt_num - i) / pnt_num) : (2 * EXAMPLE_DAC_AMPLITUDE * i / pnt_num); + saw_wav[i] = (i == pnt_num) ? 0 : (i * EXAMPLE_DAC_AMPLITUDE / pnt_num); + squ_wav[i] = (i < (pnt_num / 2)) ? EXAMPLE_DAC_AMPLITUDE : 0; + } +} + +void example_log_info(uint32_t conv_freq, uint32_t wave_freq) +{ + ESP_LOGI(TAG, "--------------------------------------------------"); +#if CONFIG_EXAMPLE_DAC_CONTINUOUS_BY_DMA + ESP_LOGI(TAG, "DAC continuous output by DMA"); +#else + ESP_LOGI(TAG, "DAC continuous output by timer"); +#endif + ESP_LOGI(TAG, "DAC channel 0 io: GPIO_NUM_%d", EXAMPLE_DAC_CHAN0_IO); + ESP_LOGI(TAG, "DAC channel 1 io: GPIO_NUM_%d", EXAMPLE_DAC_CHAN1_IO); + ESP_LOGI(TAG, "Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE"); + ESP_LOGI(TAG, "DAC conversion frequency (Hz): %"PRIu32, conv_freq); + ESP_LOGI(TAG, "DAC wave frequency (Hz): %"PRIu32, wave_freq); + ESP_LOGI(TAG, "--------------------------------------------------"); +} + +static void adc_monitor_task(void *args) +{ + adc_oneshot_unit_handle_t adc2_handle = (adc_oneshot_unit_handle_t)args; + + int chan0_val = 0; + int chan1_val = 0; + while (1) { + /* Read the DAC output voltage */ + ESP_ERROR_CHECK(adc_oneshot_read(adc2_handle, EXAMPLE_DAC_CHAN0_ADC_CHAN, &chan0_val)); + ESP_ERROR_CHECK(adc_oneshot_read(adc2_handle, EXAMPLE_DAC_CHAN1_ADC_CHAN, &chan1_val)); + printf("DAC channel 0 value: %4d\tDAC channel 1 value: %4d\n", chan0_val, chan1_val); + vTaskDelay(pdMS_TO_TICKS(100)); + } +} + +void app_main(void) +{ + example_generate_wave(); +#if CONFIG_EXAMPLE_DAC_CONTINUOUS_BY_DMA + /* Output 2 kHz waves using DMA */ + example_dac_continuous_by_dma(); +#else + /* Output 50 Hz waves using timer interrupt */ + example_dac_continuous_by_timer(); +#endif + + /* Set the ADC2 channels, these channels are connected to the DAC channels internally */ + adc_oneshot_unit_handle_t adc2_handle; + adc_oneshot_unit_init_cfg_t adc_cfg = { + .unit_id = ADC_UNIT_2, + .ulp_mode = false, + }; + ESP_ERROR_CHECK(adc_oneshot_new_unit(&adc_cfg, &adc2_handle)); + adc_oneshot_chan_cfg_t chan_cfg = { + .atten = EXAMPLE_ADC_ATTEN, + .bitwidth = ADC_BITWIDTH_DEFAULT, + }; + ESP_ERROR_CHECK(adc_oneshot_config_channel(adc2_handle, EXAMPLE_DAC_CHAN0_ADC_CHAN, &chan_cfg)); + ESP_ERROR_CHECK(adc_oneshot_config_channel(adc2_handle, EXAMPLE_DAC_CHAN1_ADC_CHAN, &chan_cfg)); + /* Create ADC monitor task to detect the voltage on DAC pin */ + xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, adc2_handle, 5, NULL); +} diff --git a/examples/peripherals/dac/dac_continuous/main/dac_continuous_timer.c b/examples/peripherals/dac/dac_continuous/signal_generator/main/dac_conti_example_timer.c similarity index 57% rename from examples/peripherals/dac/dac_continuous/main/dac_continuous_timer.c rename to examples/peripherals/dac/dac_continuous/signal_generator/main/dac_conti_example_timer.c index c575723834..ee3f0966ff 100644 --- a/examples/peripherals/dac/dac_continuous/main/dac_continuous_timer.c +++ b/examples/peripherals/dac/dac_continuous/signal_generator/main/dac_conti_example_timer.c @@ -12,24 +12,25 @@ #include "freertos/task.h" #include "freertos/queue.h" #include "driver/gpio.h" -#include "driver/adc.h" #include "driver/gptimer.h" +#include "driver/dac_oneshot.h" #include "esp_log.h" -#include "dac_continuous.h" +#include "dac_conti_example.h" -#define EXAMPLE_TIEMR_RESOLUTION 1000000 // 1MHz, 1 tick = 1us +#define EXAMPLE_TIMER_RESOLUTION 1000000 // 1MHz, 1 tick = 1us #define EXAMPLE_WAVE_FREQ_HZ 50 // Default wave frequency 50 Hz, it can't be too high #define EXAMPLE_CONVERT_FREQ_HZ (EXAMPLE_ARRAY_LEN * EXAMPLE_WAVE_FREQ_HZ) // The frequency that DAC convert every data in the wave array -#define EXAMPLE_TIMER_ALARM_COUNT (EXAMPLE_TIEMR_RESOLUTION / EXAMPLE_CONVERT_FREQ_HZ) // The count value that trigger the timer alarm callback +#define EXAMPLE_TIMER_ALARM_COUNT (EXAMPLE_TIMER_RESOLUTION / EXAMPLE_CONVERT_FREQ_HZ) // The count value that trigger the timer alarm callback static const char *TAG = "dac continuous(timer)"; static const char wav_name[DAC_WAVE_MAX][15] = {"sine", "triangle", "sawtooth", "square"}; -static dac_channels_handle_t dac_handle; +static dac_oneshot_handle_t chan0_handle; +static dac_oneshot_handle_t chan1_handle; -static uint8_t sin_wav[EXAMPLE_ARRAY_LEN]; // sine wave values -static uint8_t tri_wav[EXAMPLE_ARRAY_LEN]; // triangle wave values -static uint8_t saw_wav[EXAMPLE_ARRAY_LEN]; // sawtooth wave values -static uint8_t squ_wav[EXAMPLE_ARRAY_LEN]; // square wave values +extern uint8_t sin_wav[EXAMPLE_ARRAY_LEN]; // Used to store sine wave values +extern uint8_t tri_wav[EXAMPLE_ARRAY_LEN]; // Used to store triangle wave values +extern uint8_t saw_wav[EXAMPLE_ARRAY_LEN]; // Used to store sawtooth wave values +extern uint8_t squ_wav[EXAMPLE_ARRAY_LEN]; // Used to store square wave values /* Timer interrupt service routine */ static bool IRAM_ATTR on_timer_alarm_cb(gptimer_handle_t timer, const gptimer_alarm_event_data_t *edata, void *user_data) @@ -38,20 +39,24 @@ static bool IRAM_ATTR on_timer_alarm_cb(gptimer_handle_t timer, const gptimer_al static uint32_t index = 0; // The current index of the wave buffer static dac_example_wave_type_t wav_sel = DAC_SINE_WAVE; // Start from sine wave - // Switch wave every EXAMPLE_WAVE_PERIOD_SEC sencond - if (point_cnt < EXAMPLE_CONVERT_FREQ_HZ * EXAMPLE_WAVE_PERIOD_SEC) { + // Switch wave every CONFIG_EXAMPLE_WAVE_PERIOD_SEC second + if (point_cnt < EXAMPLE_CONVERT_FREQ_HZ * CONFIG_EXAMPLE_WAVE_PERIOD_SEC) { switch (wav_sel) { case DAC_SINE_WAVE: - ESP_ERROR_CHECK(dac_channels_set_voltage(dac_handle, sin_wav[index])); + ESP_ERROR_CHECK(dac_oneshot_output_voltage(chan0_handle, sin_wav[index])); + ESP_ERROR_CHECK(dac_oneshot_output_voltage(chan1_handle, sin_wav[index])); break; case DAC_TRIANGLE_WAVE: - ESP_ERROR_CHECK(dac_channels_set_voltage(dac_handle, tri_wav[index])); + ESP_ERROR_CHECK(dac_oneshot_output_voltage(chan0_handle, tri_wav[index])); + ESP_ERROR_CHECK(dac_oneshot_output_voltage(chan1_handle, tri_wav[index])); break; case DAC_SAWTOOTH_WAVE: - ESP_ERROR_CHECK(dac_channels_set_voltage(dac_handle, saw_wav[index])); + ESP_ERROR_CHECK(dac_oneshot_output_voltage(chan0_handle, saw_wav[index])); + ESP_ERROR_CHECK(dac_oneshot_output_voltage(chan1_handle, saw_wav[index])); break; case DAC_SQUARE_WAVE: - ESP_ERROR_CHECK(dac_channels_set_voltage(dac_handle, squ_wav[index])); + ESP_ERROR_CHECK(dac_oneshot_output_voltage(chan0_handle, squ_wav[index])); + ESP_ERROR_CHECK(dac_oneshot_output_voltage(chan1_handle, squ_wav[index])); break; default: break; @@ -69,34 +74,25 @@ static bool IRAM_ATTR on_timer_alarm_cb(gptimer_handle_t timer, const gptimer_al return false; } -static void example_generate_wave(void) -{ - uint32_t pnt_num = EXAMPLE_ARRAY_LEN; - for (int i = 0; i < pnt_num; i ++) { - sin_wav[i] = (uint8_t)((sin( i * CONST_PERIOD_2_PI / pnt_num) + 1) * (double)(EXAMPLE_DAC_AMPLITUDE) / 2 + 0.5); - tri_wav[i] = (i > (pnt_num / 2)) ? (2 * EXAMPLE_DAC_AMPLITUDE * (pnt_num - i) / pnt_num) : (2 * EXAMPLE_DAC_AMPLITUDE * i / pnt_num); - saw_wav[i] = (i == pnt_num) ? 0 : (i * EXAMPLE_DAC_AMPLITUDE / pnt_num); - squ_wav[i] = (i < (pnt_num / 2)) ? EXAMPLE_DAC_AMPLITUDE : 0; - } -} - -void dac_continuous_by_timer(void) +void example_dac_continuous_by_timer(void) { gptimer_handle_t gptimer = NULL; gptimer_config_t timer_config = { .clk_src = GPTIMER_CLK_SRC_DEFAULT, .direction = GPTIMER_COUNT_UP, - .resolution_hz = EXAMPLE_TIEMR_RESOLUTION, // 1MHz, 1 tick = 1us + .resolution_hz = EXAMPLE_TIMER_RESOLUTION, // 1MHz, 1 tick = 1us }; ESP_ERROR_CHECK(gptimer_new_timer(&timer_config, &gptimer)); - dac_channels_config_t dac_cfg = { - .chan_sel = EXAMPLE_DAC_CHANNEL, + dac_oneshot_config_t dac0_cfg = { + .chan_id = DAC_CHAN_0, }; - ESP_ERROR_CHECK(dac_new_channels(&dac_cfg, &dac_handle)); - ESP_ERROR_CHECK(dac_channels_enable(dac_handle)); + ESP_ERROR_CHECK(dac_new_oneshot_channel(&dac0_cfg, &chan0_handle)); + dac_oneshot_config_t dac1_cfg = { + .chan_id = DAC_CHAN_1, + }; + ESP_ERROR_CHECK(dac_new_oneshot_channel(&dac1_cfg, &chan1_handle)); example_log_info(EXAMPLE_CONVERT_FREQ_HZ, EXAMPLE_WAVE_FREQ_HZ); - example_generate_wave(); gptimer_alarm_config_t alarm_config = { .reload_count = 0, diff --git a/examples/peripherals/dac/dac_continuous/signal_generator/pytest_dac_continuous.py b/examples/peripherals/dac/dac_continuous/signal_generator/pytest_dac_continuous.py new file mode 100644 index 0000000000..1abbe71b40 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/signal_generator/pytest_dac_continuous.py @@ -0,0 +1,46 @@ +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import pytest +from pytest_embedded import Dut + + +def test_dac_continuous_output(dut: Dut, mode: str, chan0_io: str, chan1_io: str) -> None: + dut.expect('dac continuous: --------------------------------------------------', timeout=10) + dut.expect('dac continuous: DAC continuous output by {}'.format(mode), timeout=10) + dut.expect('dac continuous: DAC channel 0 io: GPIO_NUM_{}'.format(chan0_io), timeout=10) + dut.expect('dac continuous: DAC channel 1 io: GPIO_NUM_{}'.format(chan1_io), timeout=10) + dut.expect('dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE', timeout=10) + dut.expect('dac continuous: DAC conversion frequency \\(Hz\\): ([0-9]+)', timeout=10) + dut.expect('dac continuous: DAC wave frequency \\(Hz\\): ([0-9]+)', timeout=10) + dut.expect('dac continuous: --------------------------------------------------', timeout=10) + dut.expect(r'DAC channel 0 value:( +)(\d+)(.*)DAC channel 1 value:( +)(\d+)', timeout=10) + dut.expect(r'dac continuous\({}\): triangle wave start'.format(mode), timeout=20) + dut.expect(r'dac continuous\({}\): sawtooth wave start'.format(mode), timeout=20) + dut.expect(r'dac continuous\({}\): square wave start'.format(mode), timeout=20) + dut.expect(r'dac continuous\({}\): sine wave start'.format(mode), timeout=20) + + +@pytest.mark.esp32 +@pytest.mark.esp32s2 +@pytest.mark.generic +@pytest.mark.parametrize( + 'config', + [ + 'dma', + 'timer', + ], + indirect=True, +) +def test_dac_continuous_example_with_dma(dut: Dut) -> None: + sdkconfig = dut.app.sdkconfig + if dut.target == 'esp32': + if sdkconfig['EXAMPLE_DAC_CONTINUOUS_BY_DMA']: + test_dac_continuous_output(dut, 'DMA', '25', '26') + else: + test_dac_continuous_output(dut, 'timer', '25', '26') + elif dut.target == 'esp32s2': + if sdkconfig['EXAMPLE_DAC_CONTINUOUS_BY_DMA']: + test_dac_continuous_output(dut, 'DMA', '17', '18') + else: + test_dac_continuous_output(dut, 'timer', '17', '18') diff --git a/examples/peripherals/dac/dac_continuous/signal_generator/sdkconfig.ci.dma b/examples/peripherals/dac/dac_continuous/signal_generator/sdkconfig.ci.dma new file mode 100644 index 0000000000..b09beeb7cb --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/signal_generator/sdkconfig.ci.dma @@ -0,0 +1,2 @@ +CONFIG_EXAMPLE_DAC_CONTINUOUS_BY_DMA=y +CONFIG_EXAMPLE_DAC_CONTINUOUS_BY_TIMER=n diff --git a/examples/peripherals/dac/dac_continuous/signal_generator/sdkconfig.ci.timer b/examples/peripherals/dac/dac_continuous/signal_generator/sdkconfig.ci.timer new file mode 100644 index 0000000000..9b044fdef5 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/signal_generator/sdkconfig.ci.timer @@ -0,0 +1,2 @@ +CONFIG_EXAMPLE_DAC_CONTINUOUS_BY_DMA=n +CONFIG_EXAMPLE_DAC_CONTINUOUS_BY_TIMER=y diff --git a/examples/peripherals/dac/dac_continuous/signal_generator/sdkconfig.defaults b/examples/peripherals/dac/dac_continuous/signal_generator/sdkconfig.defaults new file mode 100644 index 0000000000..0a79089984 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/signal_generator/sdkconfig.defaults @@ -0,0 +1 @@ +CONFIG_ADC_DISABLE_DAC_OUTPUT=n diff --git a/examples/peripherals/dac/dac_cosine_wave/README.md b/examples/peripherals/dac/dac_cosine_wave/README.md index 372b450db1..ac5ff3a507 100644 --- a/examples/peripherals/dac/dac_cosine_wave/README.md +++ b/examples/peripherals/dac/dac_cosine_wave/README.md @@ -16,18 +16,13 @@ This example will output cosine wave on both channels. ### Hardware Required * A development board with ESP32 or ESP32-S2 SoC - - Note that some ESP32-S2 DevKits have LED on it which is connected to GPIO18 (same pin as DAC channel2), so the output voltage of DAC channel 1 can't go down due the this LED. + - Note that some ESP32-S2 DevKits have LED on it which is connected to GPIO18 (same pin as DAC channel1), so the output voltage of DAC channel 1 can't go down due the this LED. * (Optional) An oscilloscope to monitor the output wave -### Configure the Project - -There is a macro `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` in the example to choose whether put the two DAC channels into a same group - - - If `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 1, DAC channel 0 and channel 2 can be set to different cosine wave (but the frequency are same) by their own group handle. - - If `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 0, DAC channel 0 and channel 2 will be set to a same cosine wave by the same group handle. - ### Build and Flash +Note that as we use the ADC to monitor the output data, we need to set false to `CONFIG_ADC_DISABLE_DAC_OUTPUT` in the menuconfig, otherwise the ADC will shutdown the DAC power to guarantee it won't be affect by DAC. + Build the project and flash it to the board, then run monitor tool to view serial output: ``` @@ -45,26 +40,26 @@ See the Getting Started Guide for full steps to configure and use ESP-IDF to bui The DAC channels can be read by ADC channels internally. The ADC read period is 100 ms, the following log is the raw ADC value read from the DAC channels. But since the ADC sample-rate might be lower than the DAC cosine period, the sampling value can only indicate that the voltage is changing. ``` -DAC channel 0 vaule: 647 DAC channel 1 vaule: 1728 -DAC channel 0 vaule: 2112 DAC channel 1 vaule: 2166 -DAC channel 0 vaule: 778 DAC channel 1 vaule: 2483 -DAC channel 0 vaule: 4095 DAC channel 1 vaule: 1922 -DAC channel 0 vaule: 238 DAC channel 1 vaule: 1282 -DAC channel 0 vaule: 3187 DAC channel 1 vaule: 2609 -DAC channel 0 vaule: 627 DAC channel 1 vaule: 1068 -DAC channel 0 vaule: 3168 DAC channel 1 vaule: 2624 -DAC channel 0 vaule: 225 DAC channel 1 vaule: 1286 -DAC channel 0 vaule: 4095 DAC channel 1 vaule: 2083 -DAC channel 0 vaule: 89 DAC channel 1 vaule: 1934 -DAC channel 0 vaule: 3603 DAC channel 1 vaule: 1434 -DAC channel 0 vaule: 725 DAC channel 1 vaule: 2469 -DAC channel 0 vaule: 2277 DAC channel 1 vaule: 960 -DAC channel 0 vaule: 1306 DAC channel 1 vaule: 2670 -DAC channel 0 vaule: 1670 DAC channel 1 vaule: 899 -DAC channel 0 vaule: 3189 DAC channel 1 vaule: 2609 -DAC channel 0 vaule: 86 DAC channel 1 vaule: 1459 -DAC channel 0 vaule: 4095 DAC channel 1 vaule: 2258 +DAC channel 0 value: 647 DAC channel 1 value: 1728 +DAC channel 0 value: 2112 DAC channel 1 value: 2166 +DAC channel 0 value: 778 DAC channel 1 value: 2483 +DAC channel 0 value: 4095 DAC channel 1 value: 1922 +DAC channel 0 value: 238 DAC channel 1 value: 1282 +DAC channel 0 value: 3187 DAC channel 1 value: 2609 +DAC channel 0 value: 627 DAC channel 1 value: 1068 +DAC channel 0 value: 3168 DAC channel 1 value: 2624 +DAC channel 0 value: 225 DAC channel 1 value: 1286 +DAC channel 0 value: 4095 DAC channel 1 value: 2083 +DAC channel 0 value: 89 DAC channel 1 value: 1934 +DAC channel 0 value: 3603 DAC channel 1 value: 1434 +DAC channel 0 value: 725 DAC channel 1 value: 2469 +DAC channel 0 value: 2277 DAC channel 1 value: 960 +DAC channel 0 value: 1306 DAC channel 1 value: 2670 +DAC channel 0 value: 1670 DAC channel 1 value: 899 +DAC channel 0 value: 3189 DAC channel 1 value: 2609 +DAC channel 0 value: 86 DAC channel 1 value: 1459 +DAC channel 0 value: 4095 DAC channel 1 value: 2258 ... ``` -If monitoring the DAC channels with an oscilloscope, there will be two same cosine waves at 1000 Hz if `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 0, and two cosine waves with opposite phase and different amplitude at 8000 Hz if `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 1. +If monitoring the DAC channels with an oscilloscope, there will be two cosine waves with opposite phase and different amplitude at 8000 Hz on the two DAC channels. diff --git a/examples/peripherals/dac/dac_cosine_wave/main/CMakeLists.txt b/examples/peripherals/dac/dac_cosine_wave/main/CMakeLists.txt index 400ee7ff1c..f61c2b3e9f 100644 --- a/examples/peripherals/dac/dac_cosine_wave/main/CMakeLists.txt +++ b/examples/peripherals/dac/dac_cosine_wave/main/CMakeLists.txt @@ -1,2 +1,2 @@ -idf_component_register(SRCS "dac_cosine_wave.c" +idf_component_register(SRCS "dac_cosine_example_main.c" INCLUDE_DIRS ".") diff --git a/examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_example_main.c b/examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_example_main.c new file mode 100644 index 0000000000..e8bcec67ac --- /dev/null +++ b/examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_example_main.c @@ -0,0 +1,83 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "driver/dac_cosine.h" +#include "esp_adc/adc_oneshot.h" +#include "esp_check.h" + +#if CONFIG_IDF_TARGET_ESP32 +#define EXAMPLE_DAC_CHAN0_ADC_CHAN ADC_CHANNEL_8 // GPIO25, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC_CHANNEL_9 // GPIO26, same as DAC channel 1 +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_12 +#elif CONFIG_IDF_TARGET_ESP32S2 +#define EXAMPLE_DAC_CHAN0_ADC_CHAN ADC_CHANNEL_6 // GPIO17, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC_CHANNEL_7 // GPIO18, same as DAC channel 1 +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_13 +#endif +#define EXAMPLE_ADC_ATTEN ADC_ATTEN_DB_11 + +static void adc_monitor_task(void *args) +{ + /* Set the ADC2 channels, these channels are connected to the DAC channels internally */ + adc_oneshot_unit_handle_t adc2_handle = (adc_oneshot_unit_handle_t)args; + int chan0_val = 0; + int chan1_val = 0; + while (1) { + /* Read the DAC output voltage */ + ESP_ERROR_CHECK(adc_oneshot_read(adc2_handle, EXAMPLE_DAC_CHAN0_ADC_CHAN, &chan0_val)); + ESP_ERROR_CHECK(adc_oneshot_read(adc2_handle, EXAMPLE_DAC_CHAN1_ADC_CHAN, &chan1_val)); + printf("DAC channel 0 value: %4d\tDAC channel 1 value: %4d\n", chan0_val, chan1_val); + vTaskDelay(pdMS_TO_TICKS(100)); + } +} + +void app_main(void) +{ + dac_cosine_handle_t chan0_handle; + dac_cosine_handle_t chan1_handle; + /* Normally two channels can only be configured to one frequency + * But we can set force_set_freq bit to force update the frequency + * The example here will produce cosine wave at 8 KHz on both channels */ + dac_cosine_config_t cos0_cfg = { + .chan_id = DAC_CHAN_0, + .freq_hz = 1000, // It will be covered by 8000 in the latter configuration + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_0, + .atten = DAC_COSINE_ATTEN_DEFAULT, + .flags.force_set_freq = false, + }; + dac_cosine_config_t cos1_cfg = { + .chan_id = DAC_CHAN_1, + .freq_hz = 8000, + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_180, + .atten = DAC_COSINE_ATTEN_DB_6, + .flags.force_set_freq = true, // set true will allow to overwrite the frequency that set before + }; + ESP_ERROR_CHECK(dac_new_cosine_channel(&cos0_cfg, &chan0_handle)); + ESP_ERROR_CHECK(dac_new_cosine_channel(&cos1_cfg, &chan1_handle)); + ESP_ERROR_CHECK(dac_cosine_start(chan0_handle)); + ESP_ERROR_CHECK(dac_cosine_start(chan1_handle)); + + /* Set the ADC2 channels, these channels are connected to the DAC channels internally */ + adc_oneshot_unit_handle_t adc2_handle; + adc_oneshot_unit_init_cfg_t adc_cfg = { + .unit_id = ADC_UNIT_2, + .ulp_mode = false, + }; + ESP_ERROR_CHECK(adc_oneshot_new_unit(&adc_cfg, &adc2_handle)); + adc_oneshot_chan_cfg_t chan_cfg = { + .atten = EXAMPLE_ADC_ATTEN, + .bitwidth = ADC_BITWIDTH_DEFAULT, + }; + ESP_ERROR_CHECK(adc_oneshot_config_channel(adc2_handle, EXAMPLE_DAC_CHAN0_ADC_CHAN, &chan_cfg)); + ESP_ERROR_CHECK(adc_oneshot_config_channel(adc2_handle, EXAMPLE_DAC_CHAN1_ADC_CHAN, &chan_cfg)); + xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, adc2_handle, 5, NULL); +} diff --git a/examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_wave.c b/examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_wave.c deleted file mode 100644 index 4427fc9eb5..0000000000 --- a/examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_wave.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: CC0-1.0 - */ - -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "driver/dac_driver.h" -#include "driver/adc.h" -#include "esp_check.h" - -#define EXAMPLE_DAC_USE_SEPARATE_CHANNEL 1 // Whether to register two DAC channels in separate control group - -#if CONFIG_IDF_TARGET_ESP32 -#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_8 // GPIO25, same as DAC channel 0 -#define EXAMPLE_DAC_CHAN2_ADC_CHAN ADC2_CHANNEL_9 // GPIO26, same as DAC channel 1 -#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_12 -#elif CONFIG_IDF_TARGET_ESP32S2 -#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_6 // GPIO17, same as DAC channel 0 -#define EXAMPLE_DAC_CHAN2_ADC_CHAN ADC2_CHANNEL_7 // GPIO18, same as DAC channel 1 -#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_13 -#endif -#define EXAMPLE_ADC_ATTEN ADC_ATTEN_DB_11 - -static void adc_monitor_task(void *args) -{ - /* Set the ADC channels, these channels are connected to the DAC channels internally */ - ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_ATTEN)); - ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN2_ADC_CHAN, EXAMPLE_ADC_ATTEN)); - - int chan1_val = 0; - int chan2_val = 0; - while (1) { - /* Read the DAC output voltage */ - ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan1_val)); - ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN2_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan2_val)); - printf("DAC channel 0 vaule: %4d\tDAC channel 1 vaule: %4d\n", chan1_val, chan2_val); - vTaskDelay(pdMS_TO_TICKS(100)); - } -} - -static void dac_init_channel(dac_channel_mask_t mask, dac_cosine_config_t *cos_cfg, dac_channels_handle_t *dac_handle) -{ - dac_channels_handle_t handle = NULL; - dac_channels_config_t cfg = { - .chan_sel = mask, - }; - /* Allocate the channel group */ - ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); - /* Enable the channels in the group */ - ESP_ERROR_CHECK(dac_channels_enable(handle)); - /* Initialize DAC cosine wave genarator */ - ESP_ERROR_CHECK(dac_channels_init_cosine_mode(handle, cos_cfg)); - /* Start to output the cosine wave */ - ESP_ERROR_CHECK(dac_channels_start_cosine_output(handle)); - - *dac_handle = handle; -} - -static void __attribute__((unused)) dac_deinit_channel(dac_channels_handle_t dac_handle) -{ - /* Stop outputting the cosine wave */ - ESP_ERROR_CHECK(dac_channels_stop_cosine_output(dac_handle)); - /* Deinitialize the cosine wave genarator */ - ESP_ERROR_CHECK(dac_channels_deinit_cosine_mode(dac_handle)); - /* Disable the DAC channels */ - ESP_ERROR_CHECK(dac_channels_disable(dac_handle)); - /* Delete the channel group */ - ESP_ERROR_CHECK(dac_del_channels(dac_handle)); -} - -void app_main(void) -{ -#if EXAMPLE_DAC_USE_SEPARATE_CHANNEL - dac_channels_handle_t chan1_handle; - dac_channels_handle_t chan2_handle; - /* Adopt different cosine wave configuration to the two DAC channel - * But take care that the two channels can only be configured to one frequence - * If they are differt, the latter frequency will cover the former one - * The example here will produce cosine wave at 8 KHz on both channels */ - dac_cosine_config_t cos1_cfg = { - .freq_hz = 1000, // It will be covered by 8000 in the latter configuration - .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, - .offset = 0, - .phase = DAC_COSINE_PHASE_0, - .scale = DAC_COSINE_NO_ATTEN, - }; - dac_cosine_config_t cos2_cfg = { - .freq_hz = 8000, - .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, - .offset = 0, - .phase = DAC_COSINE_PHASE_180, - .scale = DAC_COSINE_ATTEN_2, - }; - dac_init_channel(DAC_CHANNEL_MASK_CH0, &cos1_cfg, &chan1_handle); - dac_init_channel(DAC_CHANNEL_MASK_CH1, &cos2_cfg, &chan2_handle); - xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); -#else - dac_channels_handle_t chan12_handle; - dac_cosine_config_t cos_cfg = { - .freq_hz = 1000, // 130 Hz ~ 200 KHz - .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, - .offset = 0, - .phase = DAC_COSINE_PHASE_0, - .scale = DAC_COSINE_NO_ATTEN, - }; - dac_init_channel(DAC_CHANNEL_MASK_BOTH, &cos_cfg, &chan12_handle); - xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); -#endif -} diff --git a/examples/peripherals/dac/dac_cosine_wave/pytest_dac_cosine_wave.py b/examples/peripherals/dac/dac_cosine_wave/pytest_dac_cosine_wave.py index 1a3cebd4ad..22d432d12b 100644 --- a/examples/peripherals/dac/dac_cosine_wave/pytest_dac_cosine_wave.py +++ b/examples/peripherals/dac/dac_cosine_wave/pytest_dac_cosine_wave.py @@ -6,30 +6,28 @@ from pytest_embedded import Dut @pytest.mark.esp32 -@pytest.mark.generic +@pytest.mark.adc def test_dac_cosine_wave_example_with_12bit_adc(dut: Dut) -> None: res = [] - for _ in range(20): - res.append(dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10)) + for _ in range(30): + res.append(dut.expect(r'DAC channel 0 value:( +)(\d+)(.*)DAC channel 1 value:( +)(\d+)', timeout=10)) - chan1_val = [] + chan0_val = [] for val in res: - chan1_val.append(int(val.group(2))) + chan0_val.append(int(val.group(2))) - assert min(chan1_val) < 300 - assert max(chan1_val) > 3500 + assert max(chan0_val) - min(chan0_val) > 1000 @pytest.mark.esp32s2 -@pytest.mark.generic +@pytest.mark.adc def test_dac_cosine_wave_example_with_13bit_adc(dut: Dut) -> None: res = [] - for _ in range(20): - res.append(dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10)) + for _ in range(30): + res.append(dut.expect(r'DAC channel 0 value:( +)(\d+)(.*)DAC channel 1 value:( +)(\d+)', timeout=10)) - chan1_val = [] + chan0_val = [] for val in res: - chan1_val.append(int(val.group(2))) + chan0_val.append(int(val.group(2))) - assert min(chan1_val) < 600 - assert max(chan1_val) > 7000 + assert max(chan0_val) - min(chan0_val) > 3000 diff --git a/examples/peripherals/dac/dac_cosine_wave/sdkconfig.defaults b/examples/peripherals/dac/dac_cosine_wave/sdkconfig.defaults index 83e2dfa154..0a79089984 100644 --- a/examples/peripherals/dac/dac_cosine_wave/sdkconfig.defaults +++ b/examples/peripherals/dac/dac_cosine_wave/sdkconfig.defaults @@ -1 +1 @@ -CONFIG_ADC_DISABLE_DAC=n +CONFIG_ADC_DISABLE_DAC_OUTPUT=n diff --git a/examples/peripherals/dac/dac_basic/CMakeLists.txt b/examples/peripherals/dac/dac_oneshot/CMakeLists.txt similarity index 91% rename from examples/peripherals/dac/dac_basic/CMakeLists.txt rename to examples/peripherals/dac/dac_oneshot/CMakeLists.txt index 9d9a48fc37..66b66a84e7 100644 --- a/examples/peripherals/dac/dac_basic/CMakeLists.txt +++ b/examples/peripherals/dac/dac_oneshot/CMakeLists.txt @@ -3,4 +3,4 @@ cmake_minimum_required(VERSION 3.16) include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(dac_basic) +project(dac_oneshot) diff --git a/examples/peripherals/dac/dac_oneshot/README.md b/examples/peripherals/dac/dac_oneshot/README.md new file mode 100644 index 0000000000..5b8635817b --- /dev/null +++ b/examples/peripherals/dac/dac_oneshot/README.md @@ -0,0 +1,66 @@ +| Supported Targets | ESP32 | ESP32-S2 | +| ----------------- | ----- | -------- | + +# DAC Oneshot Example + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +## Overview + +This example shows the oneshot usage of outputting a voltage directly by the DAC driver. + +The output voltage will increase a step every 500 ms, and it will reset to 0 periodically. + +## How to use the Example + +### Hardware Required + +* A development board with ESP32 or ESP32-S2 SoC + - Note that some ESP32-S2 DevKits have LED on it which is connected to GPIO18 (same pin as DAC channel1), so the output voltage of DAC channel 1 can't go down due the this LED. +* (Optional) An oscilloscope to monitor the output wave + +### Build and Flash + +Note that as we use the ADC to monitor the output data, we need to set false to `CONFIG_ADC_DISABLE_DAC_OUTPUT` in the menuconfig, otherwise the ADC will shutdown the DAC power to guarantee it won't be affect by DAC. + +Build the project and flash it to the board, then run monitor tool to view serial output: + +``` +idf.py -p PORT flash monitor +``` + +(Replace PORT with the name of the serial port to use.) + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. + +## Example Output + +The DAC channels can be read by ADC channels internally. The ADC read period is 100 ms, the following log is the raw ADC value read from the DAC channels, it shows the output voltage is increasing every 500 ms. + +``` +DAC channel 0 value: 37 DAC channel 1 value: 0 +DAC channel 0 value: 37 DAC channel 1 value: 0 +DAC channel 0 value: 38 DAC channel 1 value: 0 +DAC channel 0 value: 38 DAC channel 1 value: 0 +DAC channel 0 value: 34 DAC channel 1 value: 0 +DAC channel 0 value: 179 DAC channel 1 value: 117 +DAC channel 0 value: 176 DAC channel 1 value: 117 +DAC channel 0 value: 178 DAC channel 1 value: 122 +DAC channel 0 value: 179 DAC channel 1 value: 118 +DAC channel 0 value: 177 DAC channel 1 value: 115 +DAC channel 0 value: 316 DAC channel 1 value: 261 +DAC channel 0 value: 317 DAC channel 1 value: 263 +DAC channel 0 value: 311 DAC channel 1 value: 261 +DAC channel 0 value: 317 DAC channel 1 value: 260 +DAC channel 0 value: 317 DAC channel 1 value: 262 +DAC channel 0 value: 458 DAC channel 1 value: 406 +DAC channel 0 value: 456 DAC channel 1 value: 406 +DAC channel 0 value: 454 DAC channel 1 value: 403 +DAC channel 0 value: 457 DAC channel 1 value: 406 +DAC channel 0 value: 459 DAC channel 1 value: 407 +... +``` + +If monitoring the DAC channels with an oscilloscope, there will be a direct voltage on the screen and it will be updated every 500 ms. diff --git a/examples/peripherals/dac/dac_oneshot/main/CMakeLists.txt b/examples/peripherals/dac/dac_oneshot/main/CMakeLists.txt new file mode 100644 index 0000000000..3ff1cab060 --- /dev/null +++ b/examples/peripherals/dac/dac_oneshot/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRCS "dac_oneshot_example_main.c" + INCLUDE_DIRS ".") diff --git a/examples/peripherals/dac/dac_oneshot/main/dac_oneshot_example_main.c b/examples/peripherals/dac/dac_oneshot/main/dac_oneshot_example_main.c new file mode 100644 index 0000000000..eb9ae1b3fd --- /dev/null +++ b/examples/peripherals/dac/dac_oneshot/main/dac_oneshot_example_main.c @@ -0,0 +1,86 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "driver/dac_oneshot.h" +#include "esp_adc/adc_oneshot.h" +#include "esp_check.h" + +#if CONFIG_IDF_TARGET_ESP32 +#define EXAMPLE_DAC_CHAN0_ADC_CHAN ADC_CHANNEL_8 // GPIO25, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC_CHANNEL_9 // GPIO26, same as DAC channel 1 +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_12 +#elif CONFIG_IDF_TARGET_ESP32S2 +#define EXAMPLE_DAC_CHAN0_ADC_CHAN ADC_CHANNEL_6 // GPIO17, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC_CHANNEL_7 // GPIO18, same as DAC channel 1 +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_13 +#endif +#define EXAMPLE_ADC_ATTEN ADC_ATTEN_DB_11 + +static void adc_monitor_task(void *args) +{ + adc_oneshot_unit_handle_t adc2_handle = (adc_oneshot_unit_handle_t)args; + int chan0_val = 0; + int chan1_val = 0; + while (1) { + /* Read the DAC output voltage */ + ESP_ERROR_CHECK(adc_oneshot_read(adc2_handle, EXAMPLE_DAC_CHAN0_ADC_CHAN, &chan0_val)); + ESP_ERROR_CHECK(adc_oneshot_read(adc2_handle, EXAMPLE_DAC_CHAN1_ADC_CHAN, &chan1_val)); + printf("DAC channel 0 value: %4d\tDAC channel 1 value: %4d\n", chan0_val, chan1_val); + vTaskDelay(pdMS_TO_TICKS(100)); + } +} + +static void dac_output_task(void *args) +{ + dac_oneshot_handle_t handle = (dac_oneshot_handle_t)args; + uint32_t val = 0; + while (1) { + /* Set the voltage every 100 ms */ + ESP_ERROR_CHECK(dac_oneshot_output_voltage(handle, val)); + val += 10; + val %= 250; + vTaskDelay(pdMS_TO_TICKS(500)); + } +} + +void app_main(void) +{ + /* DAC oneshot init */ + dac_oneshot_handle_t chan0_handle; + dac_oneshot_config_t chan0_cfg = { + .chan_id = DAC_CHAN_0, + }; + ESP_ERROR_CHECK(dac_new_oneshot_channel(&chan0_cfg, &chan0_handle)); + + dac_oneshot_handle_t chan1_handle; + dac_oneshot_config_t chan1_cfg = { + .chan_id = DAC_CHAN_1, + }; + ESP_ERROR_CHECK(dac_new_oneshot_channel(&chan1_cfg, &chan1_handle)); + + /* DAC oneshot outputting threads */ + xTaskCreate(dac_output_task, "dac_chan0_output_task", 4096, chan0_handle, 5, NULL); + vTaskDelay(pdMS_TO_TICKS(500)); // To differential the output of two channels + xTaskCreate(dac_output_task, "dac_chan1_output_task", 4096, chan1_handle, 5, NULL); + + /* ADC init, these channels are connected to the DAC channels internally */ + adc_oneshot_unit_handle_t adc2_handle; + adc_oneshot_unit_init_cfg_t adc_cfg = { + .unit_id = ADC_UNIT_2, + .ulp_mode = false, + }; + ESP_ERROR_CHECK(adc_oneshot_new_unit(&adc_cfg, &adc2_handle)); + adc_oneshot_chan_cfg_t chan_cfg = { + .atten = EXAMPLE_ADC_ATTEN, + .bitwidth = ADC_BITWIDTH_DEFAULT, + }; + ESP_ERROR_CHECK(adc_oneshot_config_channel(adc2_handle, EXAMPLE_DAC_CHAN0_ADC_CHAN, &chan_cfg)); + ESP_ERROR_CHECK(adc_oneshot_config_channel(adc2_handle, EXAMPLE_DAC_CHAN1_ADC_CHAN, &chan_cfg)); + /* ADC monitor thread */ + xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, adc2_handle, 5, NULL); +} diff --git a/examples/peripherals/dac/dac_basic/pytest_dac_basic.py b/examples/peripherals/dac/dac_oneshot/pytest_dac_oneshot.py similarity index 82% rename from examples/peripherals/dac/dac_basic/pytest_dac_basic.py rename to examples/peripherals/dac/dac_oneshot/pytest_dac_oneshot.py index 6455252934..ed6fe07fd3 100644 --- a/examples/peripherals/dac/dac_basic/pytest_dac_basic.py +++ b/examples/peripherals/dac/dac_oneshot/pytest_dac_oneshot.py @@ -8,10 +8,10 @@ from pytest_embedded import Dut @pytest.mark.esp32 @pytest.mark.esp32s2 @pytest.mark.generic -def test_dac_basic_example(dut: Dut) -> None: +def test_dac_oneshot_example(dut: Dut) -> None: res = [] for _ in range(10): - res.append(dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10)) + res.append(dut.expect(r'DAC channel 0 value:( +)(\d+)(.*)DAC channel 1 value:( +)(\d+)', timeout=10)) avg1_ch1 = 0 avg1_ch2 = 0 diff --git a/examples/peripherals/dac/dac_oneshot/sdkconfig.defaults b/examples/peripherals/dac/dac_oneshot/sdkconfig.defaults new file mode 100644 index 0000000000..0a79089984 --- /dev/null +++ b/examples/peripherals/dac/dac_oneshot/sdkconfig.defaults @@ -0,0 +1 @@ +CONFIG_ADC_DISABLE_DAC_OUTPUT=n diff --git a/examples/system/app_trace_to_host/README.md b/examples/system/app_trace_to_host/README.md index 8c7c21e116..af144dd81c 100644 --- a/examples/system/app_trace_to_host/README.md +++ b/examples/system/app_trace_to_host/README.md @@ -9,10 +9,10 @@ This example demonstrates how to use the [Application Level Tracing Library](htt UART logs are time consuming and can significantly slow down the function that calls it. Therefore, it is generally a bad idea to use UART logs in time-critical functions. Logging to host via JTAG is significantly faster and can be used in time-critical functions. For more details regarding logging to host via JTAG, refer to the [Logging to Host Documentation](https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/app_trace.html#app-trace-logging-to-host). -This example demonstrates JTAG logging to host in the context of polling for a [zero crossing](https://en.wikipedia.org/wiki/Zero_crossing). The example app will continuously sample a 50 to 60 Hz sinusoidal signal (using the ADC) and log the sampled values (via JTAG). Due to the higher speed of JTAG logging, the polling rate of the ADC should be high enough to detect a zero crossing. +This example demonstrates JTAG logging to host in the context of polling for a [zero crossing](https://en.wikipedia.org/wiki/Zero_crossing). The example app will continuously sample a 130 Hz sinusoidal signal (using the ADC) and log the sampled values (via JTAG). Due to the higher speed of JTAG logging, the polling rate of the ADC should be high enough to detect a zero crossing. This example utilizes the following ESP-IDF features: -* [DAC driver](https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/peripherals/dac.html) to generate the 50 Hz sinusoidal signal. +* [DAC driver](https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/peripherals/dac.html) to generate the 130 Hz sinusoidal signal. * [ADC driver](https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/peripherals/adc.html) to sample the sinusoidal signal. * [Application Level Tracing Library](https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/app_trace.html#) to log ADC samples to host. * [OpenOCD](https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/jtag-debugging/index.html#setup-of-openocd) to interface with the target and receive the log output over JTAG. @@ -30,12 +30,12 @@ This example will assume that that an ESP-WROVER-KIT is used. #### Pin Assignment: -The sinusoidal signal of 130 Hz ranging from 0 V ~ 3.1 V should be input into `ADC1_CHANNEL_6`. Users may provide this signal themselves, or use the example-generated signal in `DAC_CHAN_0`. Listed below are the corresponding DAC/ADC channel pins for supported targets. +The sinusoidal signal ranging from 0 V ~ 3.1 V should be input into `ADC1_CHANNEL_6`. Users may provide this signal themselves, or use the example-generated signal in `DAC_CHAN_0`. Listed below are the corresponding DAC/ADC channel pins for supported targets. | Target | DAC Output | ADC Input | | ------------------ | ------------------ | ------------------ | -| ESP32 | Channel 1 (GPIO25) | Channel 6 (GPIO34) | -| ESP32S2 | Channel 1 (GPIO17) | Channel 6 (GPIO7) | +| ESP32 | Channel 0 (GPIO25) | Channel 6 (GPIO34) | +| ESP32S2 | Channel 0 (GPIO17) | Channel 6 (GPIO7) | #### Extra Connections: @@ -55,7 +55,7 @@ The sinusoidal signal of 130 Hz ranging from 0 V ~ 3.1 V should be input into `A idf.py menuconfig ``` -* By default, the DAC will generate 130 Hz signal ranging from 0 V ~ 3.1 V. To generate a 50 Hz signal, the RTC 8 MHz clock will need to use a non-standard divider. This is achieved by enabling the `Example Configuration > Set custom RTC 8 MHz clock divider to lower CW frequency` configuration option. +* By default, the DAC will generate about 130 Hz signal ranging from 0 V ~ 3.1 V. Note that to generate a 130 Hz signal, the RTC 8 MHz clock will need to use a non-standard divider. * To enable application tracing, select the `(X) Trace memory` option under `Component config > Application Level Tracing`. This option should have been selected by default. @@ -85,11 +85,11 @@ See the Getting Started Guide for full steps to configure and use ESP-IDF to bui ## Example Output -The example will continuously sample the ADC for 20ms per iteration, and will alternate between JTAG and UART logging per iteration. However, the JTAG logs should be captured by OpenOCD, thus will not appear in the monitor's output. Therefore, the monitor should only display the iterations where UART logging was used (i.e. every alternate iteration) such as the following: +The example will continuously sample the ADC for 2 ms per iteration, and will alternate between JTAG and UART logging per iteration. However, the JTAG logs should be captured by OpenOCD, thus will not appear in the monitor's output. Therefore, the monitor should only display the iterations where UART logging was used (i.e. every alternate iteration) such as the following: ``` I (4289) example: Sampling ADC and sending data to the host... -I (4309) example: Collected 427 samples in 20 ms. +I (4309) example: Collected 427 samples in 2 ms. I (4309) example: Sampling ADC and sending data to the UART... I (4309) example: Sample:1, Value:2224 @@ -97,7 +97,7 @@ I (4309) example: Sample:2, Value:840 I (4309) example: Sample:3, Value:3503 I (4319) example: Sample:4, Value:27 I (4319) example: Sample:5, Value:4095 -I (4329) example: Collected 5 samples in 20 ms. +I (4329) example: Collected 5 samples in 2 ms. ``` **Note:** The UART log above was produced with the CPU running at 240 MHz. @@ -172,10 +172,10 @@ The log should be identical to those printed via UART (complete with timestamps) ## Example Breakdown -The following code snippet demonstrates a loop of the sampling and logging the ADC over a 20 ms period in order to capture one full period of a 50 Hz signal. +The following code snippet demonstrates a loop of the sampling and logging the ADC over a 2 ms period in order to capture one full period of a 130 Hz signal. ```c -int sampling_period = 20; +int sampling_period = 2; int i = 0; uint32_t sampling_start = esp_log_timestamp(); //this clock counts milliseconds do { @@ -193,7 +193,7 @@ I (4309) example: Sample:2, Value:840 I (4309) example: Sample:3, Value:3503 I (4319) example: Sample:4, Value:27 I (4319) example: Sample:5, Value:4095 -I (4329) example: Collected 5 samples in 20 ms. +I (4329) example: Collected 5 samples in 2 ms. ``` However, by logging via JTAG, the logging is much quicker hence allows a much higher sampling frequency (over 400 times) as shown the the log output below thus would be able to detect a zero crossing more consistently. diff --git a/examples/system/app_trace_to_host/example_test.py b/examples/system/app_trace_to_host/example_test.py index 8565d414bb..5857ed69df 100644 --- a/examples/system/app_trace_to_host/example_test.py +++ b/examples/system/app_trace_to_host/example_test.py @@ -17,7 +17,7 @@ def test_examples_app_trace_to_host(env, extra_data): with ttfw_idf.OCDBackend(oocd_log_path, dut.app.target) as ocd: dut.start_app() dut.expect_all('example: Enabling ADC1 on channel 6 / GPIO34.', - 'example: Enabling CW generator on DAC channel 0', + 'example: Enabling CW generator on DAC channel 0 / GPIO25', 'example: Sampling ADC and sending data to the host...', re.compile(r'example: Collected \d+ samples in 20 ms.'), 'example: Sampling ADC and sending data to the UART...', diff --git a/examples/system/app_trace_to_host/main/app_trace_to_host_example_main.c b/examples/system/app_trace_to_host/main/app_trace_to_host_example_main.c index 3cedb337de..0f916530dd 100644 --- a/examples/system/app_trace_to_host/main/app_trace_to_host_example_main.c +++ b/examples/system/app_trace_to_host/main/app_trace_to_host_example_main.c @@ -12,16 +12,15 @@ #include "freertos/task.h" #include "esp_app_trace.h" #include "esp_log.h" -#include "soc/rtc_periph.h" -#include "soc/sens_periph.h" #include "esp_adc/adc_oneshot.h" -#include "driver/dac_driver.h" +#include "driver/dac_cosine.h" #include "soc/adc_channel.h" #include "soc/dac_channel.h" -#define ADC1_TEST_CHANNEL (ADC_CHANNEL_6) +#define ADC1_TEST_CHANNEL (ADC_CHANNEL_6) +#define EXAMPLE_DAC_CHENNEL DAC_CHAN_0 -#define TEST_SAMPLING_PERIOD 20 +#define TEST_SAMPLING_PERIOD 20 static const char *TAG = "example"; @@ -34,21 +33,18 @@ static const char *TAG = "example"; */ static void enable_cosine_generator(void) { - dac_channels_handle_t dac_handle; - dac_channels_config_t dac_cfg = { - .chan_sel = DAC_CHANNEL_MASK_CH0, - }; - ESP_ERROR_CHECK(dac_new_channels(&dac_cfg, &dac_handle)); - ESP_ERROR_CHECK(dac_channels_enable(dac_handle)); + dac_cosine_handle_t dac_handle; dac_cosine_config_t cos_cfg = { + .chan_id = EXAMPLE_DAC_CHENNEL, .freq_hz = 130, .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, .offset = 0, .phase = DAC_COSINE_PHASE_0, - .scale = DAC_COSINE_NO_ATTEN, + .atten = DAC_COSINE_ATTEN_DEFAULT, + .flags.force_set_freq = false, }; - ESP_ERROR_CHECK(dac_channels_init_cosine_mode(dac_handle, &cos_cfg)); - ESP_ERROR_CHECK(dac_channels_start_cosine_output(dac_handle)); + ESP_ERROR_CHECK(dac_new_cosine_channel(&cos_cfg, &dac_handle)); + ESP_ERROR_CHECK(dac_cosine_start(dac_handle)); } /* @@ -92,7 +88,7 @@ void app_main(void) }; ESP_ERROR_CHECK(adc_oneshot_config_channel(adc1_handle, ADC1_TEST_CHANNEL, &config)); - ESP_LOGI(TAG, "Enabling CW generator on DAC channel 0 / GPIO%d.", DAC_CHAN_0_GPIO_NUM); + ESP_LOGI(TAG, "Enabling CW generator on DAC channel 0 / GPIO%d.", DAC_CHAN0_GPIO_NUM); enable_cosine_generator(); while (1) { diff --git a/examples/system/app_trace_to_host/sdkconfig.ci b/examples/system/app_trace_to_host/sdkconfig.ci deleted file mode 100644 index a75ebcc794..0000000000 --- a/examples/system/app_trace_to_host/sdkconfig.ci +++ /dev/null @@ -1 +0,0 @@ -CONFIG_CUSTOM_RTC_CLK_8M_DIV=y diff --git a/tools/ci/check_copyright_ignore.txt b/tools/ci/check_copyright_ignore.txt index 7b58fe61c1..29c74ac97a 100644 --- a/tools/ci/check_copyright_ignore.txt +++ b/tools/ci/check_copyright_ignore.txt @@ -1191,7 +1191,6 @@ components/soc/esp32s3/sdio_slave_periph.c components/soc/esp32s3/sdmmc_periph.c components/soc/esp32s3/uart_periph.c components/soc/esp32s3/usb_periph.c -components/soc/include/soc/dac_periph.h components/soc/include/soc/dedic_gpio_periph.h components/soc/include/soc/emac_periph.h components/soc/include/soc/gpio_periph.h