diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000000..8d55c742daf17 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.3) +project(qemu_dev) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + +file(GLOB_RECURSE src "*.c" ".h") + +set(SOURCES + ${src}) + + +add_executable(qemu_dev ${SOURCES}) +target_compile_options(qemu_dev PRIVATE -iquote "${CMAKE_CURRENT_SOURCE_DIR}/include") +#target_include_directories(qemu_dev PRIVATE include) + diff --git a/Makefile.objs b/Makefile.objs index a7c967633acf9..69b6addb53169 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -36,6 +36,14 @@ storage-daemon-obj-y += blockdev.o blockdev-nbd.o iothread.o job-qmp.o storage-daemon-obj-$(CONFIG_WIN32) += os-win32.o storage-daemon-obj-$(CONFIG_POSIX) += os-posix.o +crypto-obj-y = crypto/ +crypto-aes-obj-y = crypto/ + +####################################################################### +# qom-obj-y is code used by both qemu system emulation and qemu-img + +qom-obj-y = qom/ + ###################################################################### # Target independent part of system emulation. The long term path is to # suppress *all* target specific code in case of system emulation, i.e. a diff --git a/README.md b/README.md new file mode 100644 index 0000000000000..4486888f44931 --- /dev/null +++ b/README.md @@ -0,0 +1,136 @@ +# Pebble Smartwatch QEMU Implementation + +## Overview +This is a derivative of QEMU v2.1.1 that has been modified to include an implementation of the STM32F2xx microcontroller. +This is based off of a QEMU fork that is targeting the STM32F103: https://github.com/beckus/qemu_stm32. +This repo contains both beckus' STM32F1xx implementation and Pebble's STM32F2xx additions. + +__DANGER DANGER: It is very much a work-in-progress! Only some of the peripherals are working at the moment. Please contribute!__ + +## Dependencies +QEMU requires that development packages for glib20 and pixman are installed. + +### FreeBSD +Install the `devel/glib20` and `x11/pixman` ports. + +### Linux + +### Mac OS X + +### Windows + +## Building +Commands for a typical build: + + ./configure --disable-werror --enable-debug --target-list="arm-softmmu" \ + --extra-cflags=-DSTM32_UART_NO_BAUD_DELAY + make + +Summary set of configure options that are useful when developing (tested only on OS X 10.9.5): + + ./configure --enable-tcg-interpreter --extra-ldflags=-g \ + --with-coroutine=gthread --enable-debug-tcg --enable-cocoa \ + --enable-debug --disable-werror --target-list="arm-softmmu" \ + --extra-cflags=-DDEBUG_CLKTREE --extra-cflags=-DDEBUG_STM32_RCC \ + --extra-cflags=-DDEBUG_STM32_UART --extra-cflags=-DSTM32_UART_NO_BAUD_DELAY \ + --extra-cflags=-DDEBUG_GIC + +####Configure options which control the STM32 implementation: + + --extra-cflags=-DDEBUG_CLKTREE + Print out clock tree debug statements. + + --extra-cflags=-DDEBUG_STM32_RCC + Print RCC debug statements. + + --extra-cflags=-DDEBUG_STM32_UART + Print UART debug statements. + + --extra-cflags=-DSTM32_UART_NO_BAUD_DELAY + Disable the BAUD rate timing simulation + (i.e. the UART will transmit or receive as fast as possible, rather than + using a realistic delay). + + --extra-cflags=-DSTM32_UART_ENABLE_OVERRUN + Enable setting of the overrun flag if a character is + received before the last one is processed. If this is not set, the UART + will not receive the next character until the previous one is read by + software. Although less realisitic, it is safer NOT to use this, in case the VM is + running slow. + +####Other QEMU configure options which are useful for troubleshooting: + --extra-cflags=-DDEBUG_GIC + Extra logging around which interrupts are asserted + +####qemu-system-arm options which are useful for troubleshooting: + -d ? + To see available log levels + + -d cpu,in_asm + Enable logging to view the CPU state during execution and the ARM + instructions which are being executed. I believe --enable-debug must be + used for this to work. + + +Useful make commands when rebuilding: + + make defconfig + make clean + +## Generating Images +* Use `./waf build qemu_image_spi` to generate `qemu_spi_flash.bin` from tintin. +* Use `./waf build qemu_image_micro` to generate `qemu_micro_flash.bin` from tintin. + + +### Under the covers of the images + +QEMU's -pflash argument is used to specify a file to use as the micro flash. +An image can be created by concatenating the boot and main firmware files, +like so: + + truncate -s 64k tintin_boot.bin + cat tintin_boot.bin tintin_fw.bin > micro_flash.bin + truncate -s 512k micro_flash.bin + +## Running +There is a convenience script `pebble.sh` that runs QEMU. It depends on the existence of (symlinked) images `qemu_micro_flash.bin` and `qemu_spi_flash.bin`. + +### More details about running QEMU + +The generated executable is arm-softmmu/qemu-system-arm . + +Example: + + qemu-system-arm -rtc base=localtime -machine pebble-bb2 -cpu cortex-m3 -s \ + -pflash qemu_micro_flash.bin -mtdblock qemu_spi_flash.bin + +Adding `-S` to the commandline will have QEMU wait in the monitor at start; +the _c_ontinue command is necessary to start the virtual CPU. + +## QEMU Docs +Read original the documentation in qemu-doc.html or on http://wiki.qemu.org + +## QEMU Modifications +This emulator consists largely of new hardware device models; it includes +only minor changes to existing QEMU functionality. + +The changes can be reviewed by running `git diff --diff-filter=M v1.5.0-backports`. + +To list the added files, use `git diff --name-only --diff-filter=A v1.5.0-backports`. + +## License + +The following points clarify the QEMU license: + +1. QEMU as a whole is released under the GNU General Public License + +2. Parts of QEMU have specific licenses which are compatible with the +GNU General Public License. Hence each source file contains its own +licensing information. + +Many hardware device emulation sources are released under the BSD license. + +3. The Tiny Code Generator (TCG) is released under the BSD license + (see license headers in files). + +4. QEMU is a trademark of Fabrice Bellard. diff --git a/assets/qemu-spalding-overlay.png b/assets/qemu-spalding-overlay.png new file mode 100644 index 0000000000000..2d422882ae315 Binary files /dev/null and b/assets/qemu-spalding-overlay.png differ diff --git a/assets/qemu-spalding-overlay.psd b/assets/qemu-spalding-overlay.psd new file mode 100644 index 0000000000000..1e0eb41b08f74 Binary files /dev/null and b/assets/qemu-spalding-overlay.psd differ diff --git a/configure b/configure index 23b5e93752b6a..b9eb0dd68a9b0 100755 --- a/configure +++ b/configure @@ -490,6 +490,7 @@ tpm="" libssh="" live_block_migration="yes" numa="" +mouse="yes" tcmalloc="no" jemalloc="no" replication="yes" @@ -1501,6 +1502,8 @@ for opt do ;; --enable-libxml2) libxml2="yes" ;; + --disable-mouse) mouse="no" + ;; --disable-tcmalloc) tcmalloc="no" ;; --enable-tcmalloc) tcmalloc="yes" @@ -6251,6 +6254,13 @@ case "$slirp" in esac +########################################## +# check for mouse support + +if test "$mouse" = "no"; then + CFLAGS="-DNO_MOUSE $CFLAGS" +fi + ########################################## # End of CC checks # After here, no more $cc or $ld runs @@ -6733,6 +6743,7 @@ echo "default devices $default_devices" echo "plugin support $plugins" echo "fuzzing support $fuzzing" echo "gdb $gdb_bin" +echo "Mouse support $mouse" if test "$supported_cpu" = "no"; then echo diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak index 36a0e89daae27..c791ab3d4d637 100644 --- a/default-configs/arm-softmmu.mak +++ b/default-configs/arm-softmmu.mak @@ -3,6 +3,44 @@ # TODO: ARM_V7M is currently always required - make this more flexible! CONFIG_ARM_V7M=y +# CONFIG_ISA_MMIO=y +# CONFIG_ECC=y +# CONFIG_SERIAL=y +# CONFIG_PTIMER=y +# CONFIG_SD=y +# CONFIG_MAX7310=y +# CONFIG_WM8750=y +# CONFIG_TWL92230=y +# CONFIG_TSC2005=y +# CONFIG_LM832X=y +# CONFIG_TMP105=y +# CONFIG_STELLARIS=y +# CONFIG_STELLARIS_INPUT=y +# CONFIG_STELLARIS_ENET=y +# CONFIG_STM32=y +# CONFIG_SSD0303=y +# CONFIG_SSD0323=y +# CONFIG_LS013B7DH01=y +# CONFIG_PEBBLE_SNOWY_DISPLAY=y +# CONFIG_ADS7846=y +# CONFIG_MAX111X=y +# CONFIG_SSI=y +# CONFIG_SSI_SD=y +# CONFIG_SSI_M25P80=y +# CONFIG_LAN9118=y +# CONFIG_SMC91C111=y +# CONFIG_ALLWINNER_EMAC=y +# CONFIG_IMX_FEC=y +# CONFIG_DS1338=y +# CONFIG_PFLASH_CFI01=y +# CONFIG_PFLASH_CFI02=y +# CONFIG_PFLASH_JEDEC_424=y +# CONFIG_MICRODRIVE=y +# CONFIG_USB=y +# CONFIG_USB_MUSB=y +# CONFIG_USB_EHCI_SYSBUS=y +# CONFIG_PLATFORM_BUS=y + # CONFIG_PCI_DEVICES=n # CONFIG_TEST_DEVICES=n @@ -42,3 +80,4 @@ CONFIG_FSL_IMX7=y CONFIG_FSL_IMX6UL=y CONFIG_SEMIHOSTING=y CONFIG_ALLWINNER_H3=y +CONFIG_STM32=y diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 188419dc1e74a..10fc01a0b22e5 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -494,3 +494,7 @@ config ARMSSE_CPUID config ARMSSE_MHU bool + +config STM32 + bool + select ARM_V7M diff --git a/hw/arm/Makefile.objs b/hw/arm/Makefile.objs index 534a6a119e5d7..a3956a4bb93d7 100644 --- a/hw/arm/Makefile.objs +++ b/hw/arm/Makefile.objs @@ -54,3 +54,22 @@ obj-$(CONFIG_FSL_IMX7) += fsl-imx7.o mcimx7d-sabre.o obj-$(CONFIG_ARM_SMMUV3) += smmu-common.o smmuv3.o obj-$(CONFIG_FSL_IMX6UL) += fsl-imx6ul.o mcimx6ul-evk.o obj-$(CONFIG_NRF51_SOC) += nrf51_soc.o + +obj-y += stm32.o stm32_rcc.o stm32_clktree.o stm32_p103.o +obj-y += stm32f1xx.o stm32f2xx.o stm32f4xx.o stm32f7xx.o stm32_flash.o +obj-y += stm32f1xx_rcc.o stm32f2xx_rcc.o +obj-y += stm32f2xx_gpio.o stm32f2xx_adc.o +obj-y += stm32_exti.o stm32f2xx_syscfg.o +obj-y += stm32f2xx_rtc.o +obj-y += stm32f2xx_flash.o +obj-y += stm32f2xx_dummy.o +obj-y += stm32f2xx_tim.o stm32f7xx_lptim.o +obj-y += stm32f2xx_i2c.o stm32f7xx_i2c.o +obj-y += stm32f2xx_crc.o +obj-y += stm32f2xx_dma.o +obj-y += stm32f2xx_pwr.o +obj-y += pebble.o +obj-y += pebble_control.o +obj-y += pebble_robert.o +obj-y += pebble_silk.o + diff --git a/hw/arm/pebble.c b/hw/arm/pebble.c new file mode 100644 index 0000000000000..eda4bd27a7444 --- /dev/null +++ b/hw/arm/pebble.c @@ -0,0 +1,690 @@ +/*- + * Copyright (c) 2013, 2014 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "qemu/osdep.h" +#include "hw/ssi/ssi.h" +#include "hw/boards.h" +#include "hw/block/flash.h" +#include "sysemu/sysemu.h" +#include "sysemu/blockdev.h" +#include "ui/console.h" +#include "pebble_control.h" +#include "pebble.h" +#include "hw/qdev-properties.h" +#include "hw/irq.h" +#include "qapi/error.h" + +// Disable jiggling the display when Pebble vibration is on. +//#define PEBBLE_NO_DISPLAY_VIBRATE + +//#define DEBUG_PEBBLE +#ifdef DEBUG_PEBBLE +// NOTE: The usleep() helps the MacOS stdout from freezing when we have a lot of print out +#define DPRINTF(fmt, ...) \ + do { printf("DEBUG_PEBBLE: " fmt , ## __VA_ARGS__); \ + usleep(1000); \ + } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + +const static PblBoardConfig s_board_config_bb2_ev1_ev2 = { + .dbgserial_uart_index = 2, // USART3 + .pebble_control_uart_index = 1, // USART2 + .button_map = { + {STM32_GPIOC_INDEX, 3}, // back + {STM32_GPIOA_INDEX, 2}, // up + {STM32_GPIOC_INDEX, 6}, // select + {STM32_GPIOA_INDEX, 1}, // down + }, + .flash_size = 4096, /* Kbytes - larger to aid in development and debugging */ + .ram_size = 128, /* Kbytes */ + .num_rows = 172, /* not currently used */ + .num_cols = 148, /* not currently used */ + .num_border_rows = 2, /* not currently used */ + .num_border_cols = 2, /* not currently used */ + .row_major = false, /* not currently used */ + .row_inverted = false, /* not currently used */ + .col_inverted = false, /* not currently used */ + .round_mask = false /* not currently used */ +}; + +const static PblBoardConfig s_board_config_bigboard = { + .dbgserial_uart_index = 2, // USART3 + .pebble_control_uart_index = 1, // USART2 + .button_map = { + {STM32_GPIOA_INDEX, 2}, // back + {STM32_GPIOA_INDEX, 1}, // up + {STM32_GPIOA_INDEX, 3}, // select + {STM32_GPIOC_INDEX, 9}, // down + }, + .flash_size = 4096, /* Kbytes - larger to aid in development and debugging */ + .ram_size = 128, /* Kbytes */ + .num_rows = 172, /* not currently used */ + .num_cols = 148, /* not currently used */ + .num_border_rows = 2, /* not currently used */ + .num_border_cols = 2, /* not currently used */ + .row_major = false, /* not currently used */ + .row_inverted = false, /* not currently used */ + .col_inverted = false, /* not currently used */ + .round_mask = false /* not currently used */ +}; + +const static PblBoardConfig s_board_config_snowy_bb = { + .dbgserial_uart_index = 2, // USART3 + .pebble_control_uart_index = 1, // USART2 + .button_map = { + {STM32_GPIOG_INDEX, 4}, // back + {STM32_GPIOG_INDEX, 3}, // up + {STM32_GPIOG_INDEX, 1}, // select + {STM32_GPIOG_INDEX, 2}, // down + }, + .flash_size = 4096, /* Kbytes - larger to aid in development and debugging */ + .ram_size = 256, /* Kbytes */ + .num_rows = 172, + .num_cols = 148, + .num_border_rows = 2, + .num_border_cols = 2, + .row_major = false, + .row_inverted = true, + .col_inverted = false, + .round_mask = false +}; + +const static PblBoardConfig s_board_config_s4_bb = { + .dbgserial_uart_index = 2, // USART3 + .pebble_control_uart_index = 1, // USART2 + .button_map = { + {STM32_GPIOG_INDEX, 4}, + {STM32_GPIOG_INDEX, 3}, + {STM32_GPIOG_INDEX, 1}, + {STM32_GPIOG_INDEX, 2}, + }, + .flash_size = 4096, /* Kbytes - larger to aid in development and debugging */ + .ram_size = 256, /* Kbytes */ + .num_rows = 180, + .num_cols = 180, + .num_border_rows = 0, + .num_border_cols = 0, + .row_major = true, + .row_inverted = false, + .col_inverted = false, + .round_mask = true +}; + +// ---------------------------------------------------------------------------------------- +// Static globals +static PblButtonID s_waiting_key_up_id = PBL_BUTTON_ID_NONE; +static QEMUTimer *s_button_timer; + +// This is the instance of pebble_control that intercepts packets sent to the emulated +// pebble over uart 2 +static PebbleControl *s_pebble_control; + +// The irq callbacks for each button +static qemu_irq s_button_irq[PBL_NUM_BUTTONS]; +static qemu_irq s_button_wakeup; + + +static void prv_send_key_up(void *opaque) +{ + qemu_irq *button_irqs = opaque; + if (s_waiting_key_up_id == PBL_BUTTON_ID_NONE) { + /* Should never happen */ + return; + } + + DPRINTF("button %d released\n", s_waiting_key_up_id); + qemu_set_irq(button_irqs[s_waiting_key_up_id], true); + qemu_set_irq(s_button_wakeup, false); + s_waiting_key_up_id = PBL_BUTTON_ID_NONE; +} + + +// NOTE: When running using a VNC display, we alwqys get a key-up immediately after the key-down, +// even if the user is holding the key down. For long presses, this results in a series of +// quick back to back key-down, key-up callbacks. +static void pebble_key_handler(void *arg, int keycode) +{ + qemu_irq *button_irqs = arg; + static int prev_keycode; + + int pressed = (keycode & 0x80) == 0; + int button_id = PBL_BUTTON_ID_NONE; + + switch (keycode & 0x7F) { + case 16: /* Q */ + button_id = PBL_BUTTON_ID_BACK; + break; + case 17: /* W */ + button_id = PBL_BUTTON_ID_UP; + break; + case 31: /* S */ + button_id = PBL_BUTTON_ID_SELECT; + break; + case 45: /* X */ + button_id = PBL_BUTTON_ID_DOWN; + break; + case 72: /* up arrow */ + if (prev_keycode == 224) { + button_id = PBL_BUTTON_ID_UP; + } + break; + case 80: /* down arrow */ + if (prev_keycode == 224) { + button_id = PBL_BUTTON_ID_DOWN; + } + break; + case 75: /* left arrow */ + if (prev_keycode == 224) { + button_id = PBL_BUTTON_ID_BACK; + } + break; + case 77: /* right arrow */ + if (prev_keycode == 224) { + button_id = PBL_BUTTON_ID_SELECT; + } + break; + default: + break; + } + + prev_keycode = keycode; + if (button_id == PBL_BUTTON_ID_NONE || !pressed) { + /* Ignore key ups and keys we don't care about */ + return; + } + + // If this is a different key, and we are waiting for the prior one to key up, send the + // key up now + if (s_waiting_key_up_id != PBL_BUTTON_ID_NONE && button_id != s_waiting_key_up_id) { + prv_send_key_up(button_irqs); + } + + if (s_waiting_key_up_id != button_id) { + DPRINTF("button %d pressed\n", button_id); + s_waiting_key_up_id = button_id; + qemu_set_irq(button_irqs[button_id], false); // Pressed + qemu_set_irq(s_button_wakeup, true); + } + + /* Set or reschedule the timer to release the key */ + if (!s_button_timer) { + s_button_timer = timer_new_ms(QEMU_CLOCK_VIRTUAL, prv_send_key_up, button_irqs); + } + timer_mod(s_button_timer, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + 250); +} + + +// ------------------------------------------------------------------------------------------ +// This method used externally (by pebble_control) for setting a given button state +void pebble_set_button_state(uint32_t button_state) +{ + // Toggle the GPIOs to match the new button state + int button_id; + for (button_id=0; button_id < PBL_NUM_BUTTONS; button_id++) { + uint32_t mask = 1 << button_id; + qemu_set_irq(s_button_irq[button_id], !(button_state & mask)); // Set new state + } +} + + +// ------------------------------------------------------------------------------------------ +// Connect up the uarts to serial drivers that connect to the outside world +void pebble_connect_uarts(Stm32Uart *uart[], const PblBoardConfig *board_config) +{ + // This UART is used for control messages, put in our pebble_control device in between + // the qemu serial chr and the uart. This enables us to intercept and act selectively + // act on messages sent to the Pebble in QEMU before they get to it. + s_pebble_control = pebble_control_create(serial_hd(1), + uart[board_config->pebble_control_uart_index]); + + stm32_uart_connect(uart[board_config->dbgserial_uart_index], serial_hd(2), 0); +} + +void pebble_connect_uarts_stm32f7xx(Stm32F7xxUart *uart[], const PblBoardConfig *board_config) +{ + // This UART is used for control messages, put in our pebble_control device in between + // the qemu serial chr and the uart. This enables us to intercept and act selectively + // act on messages sent to the Pebble in QEMU before they get to it. + s_pebble_control = pebble_control_create_stm32f7xx(serial_hd(1), + uart[board_config->pebble_control_uart_index]); + + stm32f7xx_uart_connect(uart[board_config->dbgserial_uart_index], serial_hd(2), 0); +} + + +// ----------------------------------------------------------------------------------------- +// Init button handling +void pebble_init_buttons(Stm32Gpio *gpio[], const PblButtonMap *map) +{ + int i; + for (i = 0; i < PBL_NUM_BUTTONS; i++) { + qemu_irq irq = qdev_get_gpio_in((DeviceState *)gpio[map[i].gpio], map[i].pin); + if (map[i].active_high) { + s_button_irq[i] = qemu_irq_invert(irq); + + } else { + s_button_irq[i] = irq; + } + } + // GPIO A, pin 0 is the WKUP pin. + s_button_wakeup = qdev_get_gpio_in((DeviceState *)gpio[STM32_GPIOA_INDEX], 0); + qemu_add_kbd_event_handler(pebble_key_handler, s_button_irq); +} + + +// ---------------------------------------------------------------------------------------- +// Init the board device +DeviceState *pebble_init_board(Stm32Gpio *gpio[], qemu_irq display_vibe) +{ + // Create the board device and wire it up + DeviceState *board = qdev_create(NULL, "pebble_board"); + qdev_prop_set_ptr(board, "name", (void *)"Pebble"); + +#ifndef PEBBLE_NO_DISPLAY_VIBRATE + qdev_prop_set_ptr(board, "display_vibe", display_vibe); +#endif + + qdev_init_nofail(board); + return board; +} + +// ---------------------------------------------------------------------------------------- +// Set our QEMU specific settings to the target +void pebble_set_qemu_settings(DeviceState *rtc_dev) +{ + #define QEMU_REG_0_FIRST_BOOT_LOGIC_ENABLE 0x00000001 + #define QEMU_REG_0_START_CONNECTED 0x00000002 + #define QEMU_REG_0_START_PLUGGED_IN 0x00000004 + + // Default settings + uint32_t flags = QEMU_REG_0_START_CONNECTED; + + // Set the QEMU specific settings in the extra backup registers + char *strval; + strval = getenv("PEBBLE_QEMU_FIRST_BOOT_LOGIC_ENABLE"); + if (strval) { + // If set, allow "first boot" behavior, which displays the "Ready for Update" + // screen + if (atoi(strval)) { + flags |= QEMU_REG_0_FIRST_BOOT_LOGIC_ENABLE; + } else { + flags &= ~QEMU_REG_0_FIRST_BOOT_LOGIC_ENABLE; + } + } + + strval = getenv("PEBBLE_QEMU_START_CONNECTED"); + if (strval) { + // If set, default to bluetooth not connected + if (atoi(strval)) { + flags |= QEMU_REG_0_START_CONNECTED; + } else { + flags &= ~QEMU_REG_0_START_CONNECTED; + } + + } + + strval = getenv("PEBBLE_QEMU_START_PLUGGED_IN"); + if (strval) { + // If set, default to plugged in + if (atoi(strval)) { + flags |= QEMU_REG_0_START_PLUGGED_IN; + } else { + flags &= ~QEMU_REG_0_START_PLUGGED_IN; + } + } + + f2xx_rtc_set_extra_bkup_reg(rtc_dev, 0, flags); +} + + +// ------------------------------------------------------------------------------------------ +// Instantiate a 32f2xx based pebble +static void pebble_32f2_init(MachineState *machine, const PblBoardConfig *board_config) +{ + Stm32Gpio *gpio[STM32F2XX_GPIO_COUNT]; + Stm32Uart *uart[STM32F2XX_UART_COUNT]; + Stm32Timer *timer[STM32F2XX_TIM_COUNT]; + DeviceState *spi_flash; + DeviceState *rtc_dev; + SSIBus *spi; + struct stm32f2xx stm; + ARMCPU *cpu; + + // Note: allow for bigger flash images (4MByte) to aid in development and debugging + stm32f2xx_init( + board_config->flash_size, + board_config->ram_size, + machine->kernel_filename, + gpio, + uart, + timer, + &rtc_dev, + 8000000, /* osc_freq*/ + 32768, /* osc2_freq*/ + &stm, + &cpu); + + + // Set the Pebble specific QEMU settings on the target + pebble_set_qemu_settings(rtc_dev); + + /* SPI flash */ + spi = (SSIBus *)qdev_get_child_bus(stm.spi_dev[0], "ssi"); + spi_flash = ssi_create_slave_no_init(spi, "n25q032a11"); + DriveInfo *dinfo = drive_get_next(IF_MTD); + if (dinfo) { + qdev_prop_set_drive(spi_flash, "drive", + blk_by_legacy_dinfo(dinfo), + &error_fatal); + } + qdev_init_nofail(spi_flash); + + qemu_irq cs; + cs = qdev_get_gpio_in_named(spi_flash, SSI_GPIO_CS, 0); + qdev_connect_gpio_out((DeviceState *)gpio[STM32_GPIOA_INDEX], 4, cs); + + + /* Display */ + spi = (SSIBus *)qdev_get_child_bus(stm.spi_dev[1], "ssi"); + DeviceState *display_dev = ssi_create_slave_no_init(spi, "sm-lcd"); + qdev_prop_set_bit(display_dev, "rotate_display", true); + qdev_init_nofail(display_dev); + + qemu_irq backlight_enable; + backlight_enable = qdev_get_gpio_in_named(display_dev, "backlight_enable", 0); + qdev_connect_gpio_out_named((DeviceState *)gpio[STM32_GPIOB_INDEX], "af", 5, + backlight_enable); + + qemu_irq backlight_level; + backlight_level = qdev_get_gpio_in_named(display_dev, "backlight_level", 0); + qdev_connect_gpio_out_named((DeviceState *)timer[2], "pwm_ratio_changed", 0, // TIM3 + backlight_level); + + qemu_irq display_power; + display_power = qdev_get_gpio_in_named(display_dev, "power_ctl", 0); +//NVIC qdev_connect_gpio_out_named((DeviceState *)cpu->env.nvic, "power_out", 0, +//NVIC display_power); + + // Connect up the uarts + pebble_connect_uarts(uart, board_config); + + // Init the buttons + pebble_init_buttons(gpio, board_config->button_map); + + // Create the board device and wire it up + qemu_irq display_vibe; + display_vibe = qdev_get_gpio_in_named(display_dev, "vibe_ctl", 0); + DeviceState *board = pebble_init_board(gpio, display_vibe); + + // The GPIO from vibrate drives the vibe input on the board + qemu_irq board_vibe_in; + board_vibe_in = qdev_get_gpio_in_named(board, "pebble_board_vibe_in", 0); + qdev_connect_gpio_out((DeviceState *)gpio[STM32_GPIOB_INDEX], 0, board_vibe_in); +} + +// ------------------------------------------------------------------------------------------ +// Instantiate a 32f439 based pebble +void pebble_32f439_init(MachineState *machine, const PblBoardConfig *board_config) +{ + Stm32Gpio *gpio[STM32F4XX_GPIO_COUNT]; + Stm32Uart *uart[STM32F4XX_UART_COUNT]; + Stm32Timer *timer[STM32F4XX_TIM_COUNT]; + DeviceState *rtc_dev; + SSIBus *spi; + struct stm32f4xx stm; + ARMCPU *cpu; + + // Note: allow for bigger flash images (4MByte) to aid in development and debugging + stm32f4xx_init(board_config->flash_size, + board_config->ram_size, + machine->kernel_filename, + gpio, + board_config->gpio_idr_masks, + uart, + timer, + &rtc_dev, + 8000000 /*osc_freq*/, + 32768 /*osc2_freq*/, + &stm, + &cpu); + + + // Set the Pebble specific QEMU settings on the target + pebble_set_qemu_settings(rtc_dev); + + /* Storage flash (NOR-flash on Snowy) */ + const uint32_t flash_size_bytes = 16 * 1024 * 1024; /* 16 MBytes */ + const uint32_t flash_sector_size_bytes = 32 * 1024; /* 32 KBytes */ + const uint32_t bank_size_bytes = 2 * 1024 * 1024; /* 2 MBytes */ + DriveInfo *dinfo = drive_get(IF_PFLASH, 0, 1); /* Use the 2nd -pflash drive */ + if (dinfo) { + pflash_jedec_424_register( + 0x60000000, /* flash_base*/ + NULL, /* qdev, not used */ + "mx29vs128fb", /* name */ + flash_size_bytes, /* size */ + blk_by_legacy_dinfo(dinfo), /* driver state */ + flash_sector_size_bytes, /* sector size */ + flash_size_bytes / flash_sector_size_bytes, /* number of sectors */ + bank_size_bytes, /* size of each bank */ + 2, /* width in bytes */ + 0x00c2, 0x007e, 0x0065, 0x0001, /* id: 0, 1, 2, 3 */ + 0 /* big endian */ + ); + } + + + /* --- Display ------------------------------------------------ */ + spi = (SSIBus *)qdev_get_child_bus(stm.spi_dev[5], "ssi"); + DeviceState *display_dev = ssi_create_slave_no_init(spi, "pebble-snowy-display"); + + /* Create the outputs that the display will drive and associate them with the correct + * GPIO input pins on the MCU */ + qemu_irq display_done_irq = qdev_get_gpio_in((DeviceState *)gpio[STM32_GPIOG_INDEX], 9); + qdev_prop_set_ptr(display_dev, "done_output", display_done_irq); + qemu_irq display_intn_irq = qdev_get_gpio_in((DeviceState *)gpio[STM32_GPIOG_INDEX], 10); + qdev_prop_set_ptr(display_dev, "intn_output", display_intn_irq); + + qdev_prop_set_int32(display_dev, "num_rows", board_config->num_rows); + qdev_prop_set_int32(display_dev, "num_cols", board_config->num_cols); + qdev_prop_set_int32(display_dev, "num_border_rows", board_config->num_border_rows); + qdev_prop_set_int32(display_dev, "num_border_cols", board_config->num_border_cols); + qdev_prop_set_uint8(display_dev, "row_major", board_config->row_major); + qdev_prop_set_uint8(display_dev, "row_inverted", board_config->row_inverted); + qdev_prop_set_uint8(display_dev, "col_inverted", board_config->col_inverted); + qdev_prop_set_uint8(display_dev, "round_mask", board_config->round_mask); + + qdev_init_nofail(display_dev); + + /* Connect the correct MCU GPIO outputs to the inputs on the display */ + qemu_irq display_cs; + display_cs = qdev_get_gpio_in_named(display_dev, SSI_GPIO_CS, 0); + qdev_connect_gpio_out((DeviceState *)gpio[STM32_GPIOG_INDEX], 8, display_cs); + + qemu_irq display_reset; + display_reset = qdev_get_gpio_in_named(display_dev, "reset", 0); + qdev_connect_gpio_out((DeviceState *)gpio[STM32_GPIOG_INDEX], 15, display_reset); + + qemu_irq display_sclk; + display_sclk = qdev_get_gpio_in_named(display_dev, "sclk", 0); + qdev_connect_gpio_out((DeviceState *)gpio[STM32_GPIOG_INDEX], 13, display_sclk); + + qemu_irq backlight_enable; + backlight_enable = qdev_get_gpio_in_named(display_dev, + "backlight_enable", 0); + qdev_connect_gpio_out_named((DeviceState *)gpio[STM32_GPIOB_INDEX], "af", 14, + backlight_enable); + + qemu_irq backlight_level; + backlight_level = qdev_get_gpio_in_named(display_dev, + "backlight_level", 0); + qdev_connect_gpio_out_named((DeviceState *)timer[11], "pwm_ratio_changed", 0, // TIM12 + backlight_level); + + qemu_irq display_power; + display_power = qdev_get_gpio_in_named(display_dev, "power_ctl", 0); +//NVIC qdev_connect_gpio_out_named((DeviceState *)cpu->env.nvic, "power_out", 0, +// display_power); + + + // Connect up the uarts + pebble_connect_uarts(uart, board_config); + + // Init the buttons + pebble_init_buttons(gpio, board_config->button_map); + + + // Create the board device and wire it up + qemu_irq display_vibe; + display_vibe = qdev_get_gpio_in_named(display_dev, "vibe_ctl", 0); + DeviceState *board = pebble_init_board(gpio, display_vibe); + + // The GPIO from vibrate drives the vibe input on the board + qemu_irq board_vibe_in; + board_vibe_in = qdev_get_gpio_in_named(board, "pebble_board_vibe_in", 0); + qdev_connect_gpio_out((DeviceState *)gpio[STM32_GPIOF_INDEX], 4, board_vibe_in); +} + + +// ================================================================================ +// Pebble "board" device. Used when we need to fan out a GPIO outputs to one or more other +// devices/instances +typedef struct PebbleBoard { + SysBusDevice busdev; + void *name; + + union { + void *vibe_out_irq_prop; + qemu_irq vibe_out_irq; + }; + +} PebbleBoard; + + +static void pebble_board_vibe_ctl(void *opaque, int n, int level) +{ + PebbleBoard *s = (PebbleBoard *)opaque; + assert(n == 0); + + // Tell the pebble control instance that we vibrated + pebble_control_send_vibe_notification(s_pebble_control, level != 0); + + // Tell pass onto the vibe out output as well + qemu_set_irq(s->vibe_out_irq, level); +} + + +static void pebble_board_init(Object *dev) +{ + //PebbleBoard *s = FROM_SYSBUS(PebbleBoard, dev); + + /* This callback informs us that the vibrate is on/orr */ + qdev_init_gpio_in_named(DEVICE(dev), pebble_board_vibe_ctl, + "pebble_board_vibe_in", 1); +} + +static Property pebble_board_properties[] = { + DEFINE_PROP_PTR("name", PebbleBoard, name), + DEFINE_PROP_PTR("display_vibe", PebbleBoard, vibe_out_irq_prop), + DEFINE_PROP_END_OF_LIST(), +}; + +static void pebble_board_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + + device_class_set_props(dc, pebble_board_properties); +} + +static const TypeInfo pebble_board_info = { + .name = "pebble_board", + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(PebbleBoard), + .instance_init = pebble_board_init, + .class_init = pebble_board_class_init, +}; + +static void pebble_board_register_types(void) +{ + type_register_static(&pebble_board_info); +} + +type_init(pebble_board_register_types) + + +// ================================================================================ +// Machines +static void pebble_bb2_init(MachineState *machine) +{ + pebble_32f2_init(machine, &s_board_config_bb2_ev1_ev2); +} + +static void pebble_bb_init(MachineState *machine) +{ + pebble_32f2_init(machine, &s_board_config_bigboard); +} + +static void pebble_snowy_init(MachineState *machine) +{ + pebble_32f439_init(machine, &s_board_config_snowy_bb); +} + +static void pebble_s4_init(MachineState *machine) +{ + pebble_32f439_init(machine, &s_board_config_s4_bb); +} + + +static void pebble_bb2_machine_init(MachineClass *mc) +{ + mc->desc = "Pebble smartwatch (bb2/ev1/ev2)"; + mc->init = pebble_bb2_init; +} + +DEFINE_MACHINE("pebble-bb2", pebble_bb2_machine_init) + +static void pebble_bb_machine_init(MachineClass *mc) +{ + mc->desc = "Pebble smartwatch (bb)"; + mc->init = pebble_bb_init; +} + +DEFINE_MACHINE("pebble-bb", pebble_bb_machine_init) + +static void pebble_snowy_bb_machine_init(MachineClass *mc) +{ + mc->desc = "Pebble smartwatch (snowy)"; + mc->init = pebble_snowy_init; +} + +DEFINE_MACHINE("pebble-snowy-bb", pebble_snowy_bb_machine_init) + +static void pebble_s4_bb_machine_init(MachineClass *mc) +{ + mc->desc = "Pebble smartwatch (s4)"; + mc->init = pebble_s4_init; +} + +DEFINE_MACHINE("pebble-s4-bb", pebble_s4_bb_machine_init) + diff --git a/hw/arm/pebble.h b/hw/arm/pebble.h new file mode 100644 index 0000000000000..aea857abbe10a --- /dev/null +++ b/hw/arm/pebble.h @@ -0,0 +1,52 @@ +#include "stm32f2xx.h" +#include "stm32f4xx.h" +#include "stm32f7xx.h" + +typedef enum { + PBL_BUTTON_ID_NONE = -1, + PBL_BUTTON_ID_BACK = 0, + PBL_BUTTON_ID_UP = 1, + PBL_BUTTON_ID_SELECT = 2, + PBL_BUTTON_ID_DOWN = 3, + PBL_NUM_BUTTONS = 4 +} PblButtonID; + +typedef struct { + int gpio; + int pin; + bool active_high; +} PblButtonMap; + +typedef struct { + int dbgserial_uart_index; + int pebble_control_uart_index; + + PblButtonMap button_map[PBL_NUM_BUTTONS]; + uint32_t gpio_idr_masks[STM32F4XX_GPIO_COUNT]; + + // memory sizes + uint32_t flash_size; + uint32_t ram_size; + // screen sizes + uint32_t num_rows; + uint32_t num_cols; + uint32_t num_border_rows; + uint32_t num_border_cols; + bool row_major; + bool row_inverted; + bool col_inverted; + bool round_mask; +} PblBoardConfig; + +void pebble_32f412_init(MachineState *machine, const PblBoardConfig *board_config); +void pebble_32f439_init(MachineState *machine, const PblBoardConfig *board_config); +void pebble_32f7xx_init(MachineState *machine, const PblBoardConfig *board_config); + +// This method used externally (by pebble_control) for setting the button state +void pebble_set_button_state(uint32_t button_state); +void pebble_set_qemu_settings(DeviceState *rtc_dev); +void pebble_connect_uarts(Stm32Uart *uart[], const PblBoardConfig *board_config); +void pebble_connect_uarts_stm32f7xx(Stm32F7xxUart *uart[], const PblBoardConfig *board_config); +void pebble_init_buttons(Stm32Gpio *gpio[], const PblButtonMap *map); +DeviceState *pebble_init_board(Stm32Gpio *gpio[], qemu_irq display_vibe); + diff --git a/hw/arm/pebble_control.c b/hw/arm/pebble_control.c new file mode 100644 index 0000000000000..69fe2d3dd38e1 --- /dev/null +++ b/hw/arm/pebble_control.c @@ -0,0 +1,568 @@ +/* + * Pebble "remote control" module. + * + * This device is designed to sit in between a qemu_chr module and a UART device used + * by the emulated Pebble. It intercepts the traffic being sent to the UART, looks for + * specific packets that should be interpreted by QEMU and acts upon them. For other + * types of packets, it simply passes them on through to the Pebble UART. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "hw/sysbus.h" +#include "hw/arm/stm32.h" +#include "chardev/char.h" +#include "qemu/timer.h" +#include "qemu/sockets.h" +#include "qemu/log.h" + +#include "pebble_control.h" +#include "pebble.h" + +//#define DEBUG_PEBBLE_CONTROL +#ifdef DEBUG_PEBBLE_CONTROL +#define DPRINTF(fmt, ...) \ + do { printf("PEBBLE_CONTROL: " fmt , ## __VA_ARGS__); \ + usleep(1000); \ + } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + +#define EPRINTF(fmt, ...) \ + do { printf("PEBBLE_CONTROL: " fmt , ## __VA_ARGS__); \ + usleep(1000); \ + } while (0) + + +// ------------------------------------------------------------------------------------------ +// NOTE: The following QemuProtocol defines describe the protocol used by the host +// to control/communicate with the emulated Pebble. +#define QEMU_HEADER_SIGNATURE 0xFEED +#define QEMU_FOOTER_SIGNATURE 0xBEEF +#define QEMU_MAX_DATA_LEN 2048 + +// Every message sent over the QEMU control channel has the following header. All +// data is set in network byte order. The maximum data len (not including header or footer) +// allowed is QEMU_MAX_DATA_LEN bytes +typedef struct QEMU_PACKED { + uint16_t signature; // QEMU_HEADER_SIGNATURE + uint16_t protocol; // one of QemuProtocol + uint16_t len; // number of bytes that follow (not including this header or footer) +} QemuCommChannelHdr; + +// Every message sent over the QEMU comm channel has the following footer. +typedef struct QEMU_PACKED { + uint16_t signature; // QEMU_FOOTER_SIGNATURE +} QemuCommChannelFooter; + + +// Protocol IDs +typedef enum { + QemuProtocol_SPP = 1, + QemuProtocol_Tap = 2, + QemuProtocol_BluetoothConnection = 3, + QemuProtocol_Compass = 4, + QemuProtocol_Battery = 5, + QemuProtocol_Accel = 6, + QemuProtocol_Vibration = 7, + QemuProtocol_Button = 8 +} QemuProtocol; + + +// Structure of the data for various protocols + +// For QemuProtocol_SPP, the data is raw Pebble Protocol + +// QemuProtocol_Tap +typedef struct QEMU_PACKED { + uint8_t axis; // 0: x-axis, 1: y-axis, 2: z-axis + int8_t direction; // either +1 or -1 +} QemuProtocolTapHeader; + + +// QemuProtocol_BluetoothConnection +typedef struct QEMU_PACKED { + uint8_t connected; // true if connected +} QemuProtocolBluetoothConnectionHeader; + + +// QemuProtocol_Compass +typedef struct QEMU_PACKED { + uint32_t magnetic_heading; // 0x10000 represents 360 degress + uint8_t calib_status:8; // CompassStatus enum +} QemuProtocolCompassHeader; + + +// QemuProtocol_Battery +typedef struct QEMU_PACKED { + uint8_t battery_pct; // from 0 to 100 + uint8_t charger_connected; +} QemuProtocolBatteryHeader; + + +// QemuProtocol_Accel request (to Pebble) +//! A single accelerometer sample for all three axes +typedef struct QEMU_PACKED { + int16_t x; + int16_t y; + int16_t z; +} QemuProtocolAccelSample; +typedef struct QEMU_PACKED { + uint8_t num_samples; + QemuProtocolAccelSample samples[0]; +} QemuProtocolAccelHeader; + +// QemuProtocol_Accel response (back to host) +typedef struct QEMU_PACKED { + uint16_t avail_space; // Number of samples we can accept +} QemuProtocolAccelResponseHeader; + + +// QemuProtocol_Vibration notification (sent from Pebble to host) +typedef struct QEMU_PACKED { + uint8_t on; // non-zero if vibe is on, 0 if off +} QemuProtocolVibrationNotificationHeader; + + +// QemuProtocol_Button +typedef struct QEMU_PACKED { + // New button state. Bit x specifies the state of button x, where x is one of the + // ButtonId enum values. + uint8_t button_state; +} QemuProtocolButtonHeader; + + + +// ----------------------------------------------------------------------------------------- +// PebbleControl globals +#define PBLCONTROL_BUF_LEN (QEMU_MAX_DATA_LEN + sizeof(QemuCommChannelHdr) \ + + sizeof(QemuCommChannelFooter)) + +struct PebbleControl { + /* Inherited */ + SysBusDevice busdev; + + // The qemu_chr driver that connects to the host over a socket connection. We receive + // data from this device, interpret it, and either process it directly in here or forward + // it onto the uart in the emulated pebble. + Chardev *chr; + + // The uart used by the emulated Pebble. We send data to it using its IOHandler + // callbacks. Data written to the UART by the emulated Pebble gets passed onto us + // because we provide the UART device a pointer to our pebble_control_write() method. + void *uart; + IOEventHandler *uart_chr_event; + IOCanReadHandler *uart_chr_can_read; + IOReadHandler *uart_chr_read; + + + // We buffer the characters we receive from our qemu_chr receive handler here until + // we get a complete packet. From there, we can figure out if we should process it + // directly or pass it onto the target's UART + uint8_t rcv_char_buf[PBLCONTROL_BUF_LEN]; + uint32_t rcv_char_bytes; /* number of bytes avaialable in rcv_char_buf */ + + + // If we are passing a packet onto the target UART, this contains the number of bytes left + // to transfer. The bytes we are transferring are always at the front of the + // rcv_char_buf. + uint32_t target_send_bytes; + + // Timer used to wake us up to pump more data to the target + struct QEMUTimer *target_send_timer; + + // We buffer the characters the UART from the target wants to send out here. + // We only send it to the front end once we have a complete packet. This insures + // that packets we went to send out don't interrupt midstream one that the target is + // sending. + uint8_t send_char_buf[PBLCONTROL_BUF_LEN]; + uint32_t send_char_bytes; /* number of bytes avaialable in send_char_buf */ +}; + + +// Control channel handlers are defined using this structure +typedef void (*PebbleControlMessageCallback)(PebbleControl *s, const uint8_t* data, + uint32_t length); +typedef struct { + uint16_t protocol_id; + PebbleControlMessageCallback callback; +} PebbleControlMessageHandler; + + + +// ----------------------------------------------------------------------------------- +static void pebble_control_button_msg_callback(PebbleControl *s, const uint8_t *data, + uint32_t len) +{ + DPRINTF("%s: \n", __func__); + QemuProtocolButtonHeader *hdr = (QemuProtocolButtonHeader *)data; + if (len != sizeof(*hdr)) { + EPRINTF("%s: invalid packet\n", __func__); + return; + } + + DPRINTF("%s: new button state: 0x%x\n", __func__, (int)hdr->button_state); + pebble_set_button_state(hdr->button_state); +} + + + +// ----------------------------------------------------------------------------------------- +// Find handler from s_qemu_endpoints for a given protocol +static const PebbleControlMessageHandler* pebble_control_find_handler(PebbleControl *s, + uint16_t protocol_id) { + static const PebbleControlMessageHandler s_msg_endpoints[] = { + // IMPORTANT: These must be in sorted order!! + { QemuProtocol_Button, pebble_control_button_msg_callback }, + }; + + size_t i; + for (i = 0; i < ARRAY_LENGTH(s_msg_endpoints); ++i) { + const PebbleControlMessageHandler* handler = &s_msg_endpoints[i]; + if (!handler || handler->protocol_id > protocol_id) { + break; + } + + if (handler->protocol_id == protocol_id) { + return handler; + } + } + + return NULL; +} + + + + +// ----------------------------------------------------------------------------------- +// Drop the first N bytes out of the beginning of the receive buffer +static void pebble_control_consume_rcv_bytes(PebbleControl *s, uint32_t n) +{ + assert (n <= s->rcv_char_bytes); + s->rcv_char_bytes -= n; + memmove(&s->rcv_char_buf[0], &s->rcv_char_buf[n], s->rcv_char_bytes); +} + + +// ----------------------------------------------------------------------------------- +// Forward the remaining portion of the packet at the front of our receive buffer onto the +// target +static void pebble_control_forward_to_target(PebbleControl *s) +{ + if (s->target_send_bytes == 0) { + return; + } + DPRINTF("%s: %d bytes left to send to target\n", __func__, s->target_send_bytes); + + int can_read_bytes = s->uart_chr_can_read(s->uart); + if (can_read_bytes > 0) { + can_read_bytes = MIN(can_read_bytes, s->target_send_bytes); + s->uart_chr_read(s->uart, s->rcv_char_buf, can_read_bytes); + pebble_control_consume_rcv_bytes(s, can_read_bytes); + s->target_send_bytes -= can_read_bytes; + DPRINTF("%s: sent %d bytes to target, %d remaining\n", __func__, can_read_bytes, + s->target_send_bytes); + } + + // If more data to send, set a timer so we run again later + if (s->target_send_bytes) { + DPRINTF("%s: Scheduling pebble_control_forward_to_target timer\n", __func__); + timer_mod(s->target_send_timer, qemu_clock_get_ms(QEMU_CLOCK_HOST) + 1); + } +} + + +// ----------------------------------------------------------------------------------- +// Parse through our receive buffer, for each complete control packet, process it +static void pebble_control_parse_receive_buffer(PebbleControl *s) +{ + // If we are still forwarding data to the target, finish that first + if (s->target_send_bytes) { + pebble_control_forward_to_target(s); + if (s->target_send_bytes) { + return; + } + } + + // Look for a complete packet + while (s->rcv_char_bytes >= sizeof(QemuCommChannelHdr) + sizeof(QemuCommChannelFooter)) { + QemuCommChannelHdr *hdr = (QemuCommChannelHdr *)s->rcv_char_buf; + + // Check the header signature + if (ntohs(hdr->signature) != QEMU_HEADER_SIGNATURE) { + DPRINTF("%s: invalid packet hdr signature detected\n", __func__); + pebble_control_consume_rcv_bytes(s, sizeof(hdr->signature)); + } + + // Validate the length + uint16_t data_len = ntohs(hdr->len); + if (data_len > QEMU_MAX_DATA_LEN) { + DPRINTF("%s: invalid packet hdr len detected\n", __func__); + pebble_control_consume_rcv_bytes(s, sizeof(*hdr)); + } + + // If not a complete packet yet, break out + uint16_t total_size = sizeof(QemuCommChannelHdr) + data_len + + sizeof(QemuCommChannelFooter); + if (s->rcv_char_bytes < total_size) { + break; + } + + // We have a complete packet, see if we should process it directly or pass it onto + // the target + uint16_t protocol = ntohs(hdr->protocol); + const PebbleControlMessageHandler* handler = pebble_control_find_handler(s, protocol); + if (!handler) { + DPRINTF("%s: passing packet with protocol %d onto target\n", __func__, protocol); + s->target_send_bytes = total_size; + pebble_control_forward_to_target(s); + if (s->target_send_bytes) { + // If we couldn't pass it all on, break out and wait for the timer callback + // to send the rest out + break; + } + } else { + handler->callback(s, (uint8_t *)(hdr+1), data_len); + pebble_control_consume_rcv_bytes(s, total_size); + } + + } + +} + + +// ----------------------------------------------------------------------------------- +// Char device receive handlers +static void pebble_control_event(void *opaque, int event) +{ + PebbleControl *s = (PebbleControl *)opaque; + + s->uart_chr_event(s->uart, event); +} + +static int pebble_control_can_receive(void *opaque) +{ + PebbleControl *s = (PebbleControl *)opaque; + + /* How much space do we have in our buffer? */ + return (PBLCONTROL_BUF_LEN - s->rcv_char_bytes); +} + +static void pebble_control_receive(void *opaque, const uint8_t *buf, int size) +{ + PebbleControl *s = (PebbleControl *)opaque; + + assert(size > 0); + + // Copy the characters into our buffer first + assert (size <= PBLCONTROL_BUF_LEN - s->rcv_char_bytes); + memmove(s->rcv_char_buf + s->rcv_char_bytes, buf, size); + s->rcv_char_bytes += size; + + // Process any complete packets in the receive buffer + pebble_control_parse_receive_buffer(s); +} + + +// ----------------------------------------------------------------------------------- +// Drop the first N bytes out of the beginning of the send buffer +static void pebble_control_consume_send_bytes(PebbleControl *s, uint32_t n) +{ + assert (n <= s->send_char_bytes); + s->send_char_bytes -= n; + memmove(&s->send_char_buf[0], &s->send_char_buf[n], s->send_char_bytes); +} + + +// ----------------------------------------------------------------------------------- +// This method gets passed to the UART's stm32_uart_set_write_handler(). This way +// we can intercept all writes that the UART sends to the front end and insure that +// we don't interrupt one mid-stream by sending a packet from QEMU +static int pebble_control_write(void *opaque, const uint8_t *buf, int len) { + PebbleControl *s = (PebbleControl *)opaque; + + while (len) { + // Copy the new bytes in + uint32_t space_left = sizeof(s->send_char_buf) - s->send_char_bytes; + + if (space_left == 0) { + EPRINTF("%s: overflowed send buffer, aborting queued up data\n", __func__); + s->send_char_bytes = 0; + space_left = sizeof(s->send_char_buf); + } + uint32_t bytes_to_copy = MIN(space_left, len); + memmove(&s->send_char_buf[s->send_char_bytes], buf, bytes_to_copy); + s->send_char_bytes += bytes_to_copy; + len -= bytes_to_copy; + + + // ------------------------------------------------------------------ + // See if we have a complete packet yet + if (s->send_char_bytes < sizeof(QemuCommChannelHdr) + + sizeof(QemuCommChannelFooter)) { + break; + } + QemuCommChannelHdr *hdr = (QemuCommChannelHdr *)s->send_char_buf; + + // Check the header signature + if (ntohs(hdr->signature) != QEMU_HEADER_SIGNATURE) { + DPRINTF("%s: invalid packet hdr signature detected\n", __func__); + pebble_control_consume_send_bytes(s, sizeof(hdr->signature)); + } + + // Validate the length + uint16_t data_len = ntohs(hdr->len); + if (data_len > QEMU_MAX_DATA_LEN) { + DPRINTF("%s: invalid packet hdr len detected\n", __func__); + pebble_control_consume_send_bytes(s, sizeof(*hdr)); + } + + // If not a complete packet yet, break out + uint16_t total_size = sizeof(QemuCommChannelHdr) + data_len + + sizeof(QemuCommChannelFooter); + if (s->send_char_bytes < total_size) { + if (len > 0) { + // If we still have not put in all the bytes the caller wanted, + // we must be off-frame because we ran out of room. + EPRINTF("%s: overflowed send buffer, aborting queued up data\n", __func__); + s->send_char_bytes = 0; + continue; + } + break; + } + + // We have a complete packet, send it out the front end + int bytes_sent; + DPRINTF("%s: Sending packet of %d bytes to host\n", __func__, total_size); + while (total_size) { + bytes_sent = qemu_chr_fe_write(s->chr, s->send_char_buf, total_size); + total_size -= bytes_sent; + pebble_control_consume_send_bytes(s, bytes_sent); + } + + } + + return qemu_chr_fe_write(s->chr, buf, len); +} + + +// ----------------------------------------------------------------------------------------- +static void pebble_control_send_packet(PebbleControl *s, QemuProtocol protocol, void *data, + uint32_t len) +{ + // Send the header + QemuCommChannelHdr hdr = (QemuCommChannelHdr) { + .signature = htons(QEMU_HEADER_SIGNATURE), + .protocol = htons(protocol), + .len = htons(len) + }; + qemu_chr_fe_write(s->chr, (uint8_t *)&hdr, sizeof(hdr)); + + // Send the data + qemu_chr_fe_write(s->chr, data, len); + + // Send the footer + QemuCommChannelFooter footer = (QemuCommChannelFooter) { + .signature = htons(QEMU_FOOTER_SIGNATURE) + }; + + qemu_chr_fe_write(s->chr, (uint8_t *)&footer, sizeof(footer)); +} + +// ----------------------------------------------------------------------------------- +// Send a vibe notification to the host +void pebble_control_send_vibe_notification(PebbleControl *s, bool on) +{ + DPRINTF("%s: vibe %d\n", __func__, (int)on); + + QemuProtocolVibrationNotificationHeader hdr = { + .on = on + }; + pebble_control_send_packet(s, QemuProtocol_Vibration, &hdr, sizeof(hdr)); +} + +// ----------------------------------------------------------------------------------- +PebbleControl *pebble_control_create(Chardev *chr, Stm32Uart *uart) +{ + PebbleControl *s = malloc(sizeof(PebbleControl)); + memset(s, 0, sizeof(*s)); + + if (chr) { + s->chr = chr; + s->uart = uart; + + // The timer we use to pump more data to the uart + s->target_send_timer = timer_new_ms(QEMU_CLOCK_HOST, + (QEMUTimerCB *)pebble_control_parse_receive_buffer, s); + + + // Have the UART send writes to us + stm32_uart_set_write_handler(uart, s, pebble_control_write); + + // Save away the receive handlers that the uart installed into chr + stm32_uart_get_rcv_handlers(uart, &s->uart_chr_can_read, &s->uart_chr_read, &s->uart_chr_event); + + // Install our own receive handlers into the CharDriver + qemu_chr_fe_set_handlers( + &chr, + pebble_control_can_receive, + pebble_control_receive, + pebble_control_event, + NULL, + (void *)s, + NULL, + true); + } + + return s; +} + +// ----------------------------------------------------------------------------------- +PebbleControl *pebble_control_create_stm32f7xx(Chardev *chr, Stm32F7xxUart *uart) +{ + PebbleControl *s = malloc(sizeof(PebbleControl)); + memset(s, 0, sizeof(*s)); + + if (chr) { + s->chr = chr; + s->uart = uart; + + // The timer we use to pump more data to the uart + s->target_send_timer = timer_new_ms(QEMU_CLOCK_HOST, + (QEMUTimerCB *)pebble_control_parse_receive_buffer, s); + + + // Have the UART send writes to us + stm32f7xx_uart_set_write_handler(uart, s, pebble_control_write); + + // Save away the receive handlers that the uart installed into chr + stm32f7xx_uart_get_rcv_handlers(uart, &s->uart_chr_can_read, &s->uart_chr_read, &s->uart_chr_event); + + // Install our own receive handlers into the CharDriver + qemu_chr_fe_set_handlers( + &chr, + pebble_control_can_receive, + pebble_control_receive, + pebble_control_event, + NULL, + (void *)s, + NULL, + true); + } + + return s; +} + diff --git a/hw/arm/pebble_control.h b/hw/arm/pebble_control.h new file mode 100644 index 0000000000000..2530ff34f4067 --- /dev/null +++ b/hw/arm/pebble_control.h @@ -0,0 +1,10 @@ +#include "qemu/typedefs.h" +#include "hw/arm/stm32.h" + +typedef struct PebbleControl PebbleControl; + +PebbleControl *pebble_control_create(Chardev *chr, Stm32Uart *uart); +PebbleControl *pebble_control_create_stm32f7xx(Chardev *chr, Stm32F7xxUart *uart); + +void pebble_control_send_vibe_notification(PebbleControl *s, bool on); + diff --git a/hw/arm/pebble_robert.c b/hw/arm/pebble_robert.c new file mode 100644 index 0000000000000..7613e8b497679 --- /dev/null +++ b/hw/arm/pebble_robert.c @@ -0,0 +1,147 @@ +#include "qemu/osdep.h" +#include "pebble.h" +#include "hw/boards.h" +#include "hw/ssi/ssi.h" +#include "hw/qdev-properties.h" + +const static PblBoardConfig s_board_config_robert_bb = { + .dbgserial_uart_index = 2, // USART3 + .pebble_control_uart_index = 1, // USART2 + .button_map = { + {STM32_GPIOG_INDEX, 6}, + {STM32_GPIOG_INDEX, 3}, + {STM32_GPIOG_INDEX, 5}, + {STM32_GPIOG_INDEX, 4}, + }, + .flash_size = 4096, /* Kbytes - larger to aid in development and debugging */ + .ram_size = 512, /* Kbytes */ + .num_rows = 228, + .num_cols = 200, + .num_border_rows = 0, + .num_border_cols = 0, + .row_major = true, + .row_inverted = true, + .col_inverted = true, + .round_mask = false +}; + + +void pebble_32f7xx_init(MachineState *machine, const PblBoardConfig *board_config) +{ + Stm32Gpio *gpio[STM32F7XX_GPIO_COUNT]; + Stm32F7xxUart *uart[STM32F7XX_UART_COUNT]; + Stm32Timer *timer[STM32F7XX_TIM_COUNT]; + Stm32F7xxLPTimer *lptimer; + DeviceState *qspi_flash; + DeviceState *rtc_dev; + SSIBus *spi; + SSIBus *qspi; + struct stm32f7xx stm; + ARMCPU *cpu; + + stm32f7xx_init(board_config->flash_size, + board_config->ram_size, + machine->kernel_filename, + gpio, + board_config->gpio_idr_masks, + uart, + timer, + &lptimer, + &rtc_dev, + 8000000 /*osc_freq*/, + 32768 /*osc2_freq*/, + &stm, + &cpu); + + + // Set the Pebble specific QEMU settings on the target + pebble_set_qemu_settings(rtc_dev); + + /* --- QSPI Flash --------------------------------------------- */ + qspi = (SSIBus *)qdev_get_child_bus(stm.qspi_dev, "ssi"); + qspi_flash = ssi_create_slave_no_init(qspi, "mt25q256"); + qdev_init_nofail(qspi_flash); + + qemu_irq mt25q_cs = qdev_get_gpio_in_named(qspi_flash, SSI_GPIO_CS, 0); + qdev_connect_gpio_out_named(stm.qspi_dev, "qspi-gpio-cs", 0, mt25q_cs); + + + /* --- Display ------------------------------------------------ */ + spi = (SSIBus *)qdev_get_child_bus(stm.spi_dev[5], "ssi"); + DeviceState *display_dev = ssi_create_slave_no_init(spi, "pebble-snowy-display"); + + /* Create the outputs that the display will drive and associate them with the correct + * GPIO input pins on the MCU */ + qemu_irq display_done_irq = qdev_get_gpio_in((DeviceState *)gpio[STM32_GPIOB_INDEX], 2); + qdev_prop_set_ptr(display_dev, "done_output", display_done_irq); + qemu_irq display_intn_irq = qdev_get_gpio_in((DeviceState *)gpio[STM32_GPIOB_INDEX], 0); + qdev_prop_set_ptr(display_dev, "intn_output", display_intn_irq); + + qdev_prop_set_int32(display_dev, "num_rows", board_config->num_rows); + qdev_prop_set_int32(display_dev, "num_cols", board_config->num_cols); + qdev_prop_set_int32(display_dev, "num_border_rows", board_config->num_border_rows); + qdev_prop_set_int32(display_dev, "num_border_cols", board_config->num_border_cols); + qdev_prop_set_uint8(display_dev, "row_major", board_config->row_major); + qdev_prop_set_uint8(display_dev, "row_inverted", board_config->row_inverted); + qdev_prop_set_uint8(display_dev, "col_inverted", board_config->col_inverted); + qdev_prop_set_uint8(display_dev, "round_mask", board_config->round_mask); + + qdev_init_nofail(display_dev); + + /* Connect the correct MCU GPIO outputs to the inputs on the display */ + qemu_irq display_cs; + display_cs = qdev_get_gpio_in_named(display_dev, SSI_GPIO_CS, 0); + qdev_connect_gpio_out((DeviceState *)gpio[STM32_GPIOA_INDEX], 4, display_cs); + + qemu_irq display_reset; + display_reset = qdev_get_gpio_in_named(display_dev, "reset", 0); + qdev_connect_gpio_out((DeviceState *)gpio[STM32_GPIOA_INDEX], 3, display_reset); + + qemu_irq display_sclk; + display_sclk = qdev_get_gpio_in_named(display_dev, "sclk", 0); + qdev_connect_gpio_out((DeviceState *)gpio[STM32_GPIOA_INDEX], 5, display_sclk); + + qemu_irq backlight_enable; + backlight_enable = qdev_get_gpio_in_named(display_dev, "backlight_enable", 0); + qdev_connect_gpio_out_named((DeviceState *)gpio[STM32_GPIOG_INDEX], "af", 13, + backlight_enable); + + qemu_irq backlight_level; + backlight_level = qdev_get_gpio_in_named(display_dev, "backlight_level", 0); + qdev_connect_gpio_out_named((DeviceState *)lptimer, "pwm_ratio_changed", 0, // LPTIM1 + backlight_level); + + qemu_irq display_power; + display_power = qdev_get_gpio_in_named(display_dev, "power_ctl", 0); +//NVIC qdev_connect_gpio_out_named((DeviceState *)cpu->env.nvic, "power_out", 0, +//NVIC display_power); + + // Connect up the uarts + pebble_connect_uarts_stm32f7xx(uart, board_config); + + // Init the buttons + pebble_init_buttons(gpio, board_config->button_map); + + // Create the board device and wire it up + qemu_irq display_vibe; + display_vibe = qdev_get_gpio_in_named(display_dev, "vibe_ctl", 0); + DeviceState *board = pebble_init_board(gpio, display_vibe); + + // The GPIO from vibrate drives the vibe input on the board + qemu_irq board_vibe_in; + board_vibe_in = qdev_get_gpio_in_named(board, "pebble_board_vibe_in", 0); + qdev_connect_gpio_out((DeviceState *)gpio[STM32_GPIOD_INDEX], 14, board_vibe_in); +} + +static void pebble_robert_init(MachineState *machine) +{ + pebble_32f7xx_init(machine, &s_board_config_robert_bb); +} + +static void pebble_robert_bb_machine_init(MachineClass *mc) +{ + mc->desc = "Pebble smartwatch (robert)"; + mc->init = pebble_robert_init; +} + +DEFINE_MACHINE("pebble-robert-bb", pebble_robert_bb_machine_init) diff --git a/hw/arm/pebble_silk.c b/hw/arm/pebble_silk.c new file mode 100644 index 0000000000000..9725dc0daa7e3 --- /dev/null +++ b/hw/arm/pebble_silk.c @@ -0,0 +1,127 @@ +#include "qemu/osdep.h" +#include "pebble.h" +#include "hw/boards.h" +#include "hw/ssi/ssi.h" +#include "hw/qdev-properties.h" + +const static PblBoardConfig s_board_config_silk_bb = { + .dbgserial_uart_index = 0, // USART1 + .pebble_control_uart_index = 1, // USART2 -- note this is also used by the DA14681 on real HW + .button_map = { + { STM32_GPIOC_INDEX, 13, true }, + { STM32_GPIOD_INDEX, 2, true }, + { STM32_GPIOH_INDEX, 0, true }, + { STM32_GPIOH_INDEX, 1, true }, + }, + .gpio_idr_masks = { + [STM32_GPIOC_INDEX] = 1 << 13, + [STM32_GPIOD_INDEX] = 1 << 2, + [STM32_GPIOH_INDEX] = (1 << 1) | (1 << 0), + }, + .flash_size = 4096, /* Kbytes - larger to aid in development and debugging */ + .ram_size = 256, /* Kbytes */ + .num_rows = 172, /* not currently used */ + .num_cols = 148, /* not currently used */ + .num_border_rows = 2, /* not currently used */ + .num_border_cols = 2, /* not currently used */ + .row_major = false, /* not currently used */ + .row_inverted = false, /* not currently used */ + .col_inverted = false, /* not currently used */ + .round_mask = false /* not currently used */ +}; + +void pebble_32f412_init(MachineState *machine, const PblBoardConfig *board_config) +{ + Stm32Gpio *gpio[STM32F4XX_GPIO_COUNT]; + Stm32Uart *uart[STM32F4XX_UART_COUNT]; + Stm32Timer *timer[STM32F4XX_TIM_COUNT]; + DeviceState *qspi_flash; + DeviceState *rtc_dev; + SSIBus *spi; + SSIBus *qspi; + struct stm32f4xx stm; + ARMCPU *cpu; + + // Note: allow for bigger flash images (4MByte) to aid in development and debugging + stm32f4xx_init(board_config->flash_size, + board_config->ram_size, + machine->kernel_filename, + gpio, + board_config->gpio_idr_masks, + uart, + timer, + &rtc_dev, + 8000000 /*osc_freq*/, + 32768 /*osc2_freq*/, + &stm, + &cpu); + + + // Set the Pebble specific QEMU settings on the target + pebble_set_qemu_settings(rtc_dev); + + /* --- QSPI Flash --------------------------------------------- */ + qspi = (SSIBus *)qdev_get_child_bus(stm.qspi_dev, "ssi"); + qspi_flash = ssi_create_slave_no_init(qspi, "mx25u6435f"); + qdev_init_nofail(qspi_flash); + + qemu_irq mx25u_cs = qdev_get_gpio_in_named(qspi_flash, SSI_GPIO_CS, 0); + qdev_connect_gpio_out_named(stm.qspi_dev, "qspi-gpio-cs", 0, mx25u_cs); + + + /* --- Display ------------------------------------------------ */ + spi = (SSIBus *)qdev_get_child_bus(stm.spi_dev[1], "ssi"); // SPI2 + DeviceState *display_dev = ssi_create_slave_no_init(spi, "sm-lcd"); + qdev_prop_set_bit(display_dev, "rotate_display", false); + qdev_init_nofail(display_dev); + + qemu_irq backlight_enable; + backlight_enable = qdev_get_gpio_in_named(display_dev, "backlight_enable", 0); + qdev_connect_gpio_out((DeviceState *)gpio[STM32_GPIOB_INDEX], 13, backlight_enable); + + qemu_irq backlight_level; + backlight_level = qdev_get_gpio_in_named(display_dev, "backlight_level", 0); + qdev_connect_gpio_out_named((DeviceState *)timer[2], // TIM3 + "pwm_ratio_changed", + 0, + backlight_level); + + qemu_irq display_power; + display_power = qdev_get_gpio_in_named(display_dev, "power_ctl", 0); +//NVIC qdev_connect_gpio_out_named((DeviceState *)cpu->env.nvic, "power_out", 0, +//NVIC display_power); + + + // Connect up the uarts + pebble_connect_uarts(uart, board_config); + + // Init the buttons + pebble_init_buttons(gpio, board_config->button_map); + + // Create the board device and wire it up + qemu_irq display_vibe; + display_vibe = qdev_get_gpio_in_named(display_dev, "vibe_ctl", 0); + DeviceState *board = pebble_init_board(gpio, display_vibe); + + // The vibe PWM enables the qemu vibe + qemu_irq board_vibe_in; + board_vibe_in = qdev_get_gpio_in_named(board, "pebble_board_vibe_in", 0); + qdev_connect_gpio_out_named((DeviceState *)timer[13], // TIM14 + "pwm_enable", + 0, + board_vibe_in); +} + +static void pebble_silk_init(MachineState *machine) +{ + pebble_32f412_init(machine, &s_board_config_silk_bb); +} + +static void pebble_silk_bb_machine_init(MachineClass *mc) +{ + mc->desc = "Pebble smartwatch (silk)"; + mc->init = pebble_silk_init; +} + +DEFINE_MACHINE("pebble-silk-bb", pebble_silk_bb_machine_init) + diff --git a/hw/arm/stm32.c b/hw/arm/stm32.c new file mode 100644 index 0000000000000..ed883a7c5d9ad --- /dev/null +++ b/hw/arm/stm32.c @@ -0,0 +1,83 @@ +/* + * STM32 Microcontroller + * + * Copyright (C) 2010 Andre Beckus + * + * Implementation based on ST Microelectronics "RM0008 Reference Manual Rev 10" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "hw/arm/stm32.h" +#include "exec/address-spaces.h" +#include "exec/gdbstub.h" +#include "hw/qdev-properties.h" + +/* DEFINITIONS */ + +/* COMMON */ + +void stm32_hw_warn(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + fprintf(stderr, "qemu stm32: hardware warning: "); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + cpu_dump_state(first_cpu, stderr, 0); + va_end(ap); +} + + +void stm32_create_uart_dev( + Object *stm32_container, + stm32_periph_t periph, + int uart_num, + DeviceState *rcc_dev, + DeviceState **gpio_dev, + DeviceState *afio_dev, + hwaddr addr, + qemu_irq irq) +{ + char child_name[8]; + DeviceState *uart_dev = qdev_create(NULL, TYPE_STM32_UART); + QDEV_PROP_SET_PERIPH_T(uart_dev, "periph", periph); + qdev_prop_set_ptr(uart_dev, "stm32_rcc", rcc_dev); + qdev_prop_set_ptr(uart_dev, "stm32_gpio", gpio_dev); + qdev_prop_set_ptr(uart_dev, "stm32_afio", afio_dev); + snprintf(child_name, sizeof(child_name), "uart[%i]", uart_num); + object_property_add_child(stm32_container, child_name, OBJECT(uart_dev), NULL); + stm32_init_periph(uart_dev, periph, addr, irq); +} + + +/* INITIALIZATION */ + +/* I copied sysbus_create_varargs and split it into two parts. This is so that + * you can set properties before calling the device init function. + */ + +DeviceState *stm32_init_periph(DeviceState *dev, stm32_periph_t periph, + hwaddr addr, qemu_irq irq) +{ + qdev_init_nofail(dev); + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, addr); + if (irq) { + sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq); + } + return dev; +} + diff --git a/hw/arm/stm32_clktree.c b/hw/arm/stm32_clktree.c new file mode 100644 index 0000000000000..cd81887230ca8 --- /dev/null +++ b/hw/arm/stm32_clktree.c @@ -0,0 +1,301 @@ +/* + * Basic Clock Tree Building Blocks + * + * Copyright (C) 2012 Andre Beckus + * + * Source code roughly based on omap_clk.c + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "hw/hw.h" +#include "hw/arm/stm32_clktree.h" +#include "qemu/host-utils.h" + + +/* DEFINITIONS*/ + +/* See README for DEBUG documentation */ +//#define DEBUG_CLKTREE + + +/* Helper to: + * 1) Add a value to an array. + * 2) Increment the array size count. + * 3) Make sure the array does not overflow. + */ +#define CLKTREE_ADD_LINK(array, count, value, array_size) \ + (array)[(count)++] = (value); \ + assert((count) <= (array_size)); + + +struct Clk { + const char *name; + + bool enabled; + + uint32_t input_freq, output_freq, max_output_freq; + + uint16_t multiplier, divisor; + + unsigned user_count; + qemu_irq user[CLKTREE_MAX_IRQ]; /* Who to notify on change */ + + unsigned output_count; + struct Clk *output[CLKTREE_MAX_OUTPUT]; + + unsigned input_count; + int selected_input; + struct Clk *input[CLKTREE_MAX_INPUT]; +}; + +static void clktree_recalc_output_freq(Clk clk); + + + + +/* HELPER FUNCTIONS */ + +static Clk clktree_get_input_clk(Clk clk) +{ + return clk->input[clk->selected_input + 1]; +} + +#ifdef DEBUG_CLKTREE + +static void clktree_print_state(Clk clk) +{ + Clk input_clk = clktree_get_input_clk(clk); + + printf("CLKTREE: %s Output Change (SrcClk:%s InFreq:%lu OutFreq:%lu Mul:%u Div:%u Enabled:%c)\n", + clk->name, + input_clk ? input_clk->name : "None", + (unsigned long)clk->input_freq, + (unsigned long)clk->output_freq, + (unsigned)clk->multiplier, + (unsigned)clk->divisor, + clk->enabled ? '1' : '0'); +} +#endif + +static void clktree_set_input_freq(Clk clk, uint32_t input_freq) +{ + clk->input_freq = input_freq; + + clktree_recalc_output_freq(clk); +} + +/* Recalculates the output frequency based on the clock's input_freq variable. + */ +static void clktree_recalc_output_freq(Clk clk) { + int i; + Clk next_clk, next_clk_input; + uint32_t new_output_freq; + + /* Get the output frequency, or 0 if the output is disabled. */ + new_output_freq = clk->enabled ? + muldiv64(clk->input_freq, + clk->multiplier, + clk->divisor) + : 0; + + /* if the frequency has changed. */ + if(new_output_freq != clk->output_freq) { + clk->output_freq = new_output_freq; + +#ifdef DEBUG_CLKTREE + clktree_print_state(clk); +#endif + + /* Check the new frequency against the max frequency. */ + if(new_output_freq > clk->max_output_freq) { + fprintf(stderr, "%s: Clock %s output frequency (%d Hz) exceeds max frequency (%d Hz).\n", + __FUNCTION__, + clk->name, + new_output_freq, + clk->max_output_freq); + } + + /* Notify users of change. */ + for(i=0; i < clk->user_count; i++) { + qemu_set_irq(clk->user[i], 1); + } + + /* Propagate the frequency change to the child clocks */ + for(i=0; i < clk->output_count; i++) { + next_clk = clk->output[i]; + assert(next_clk != NULL); + + /* Only propagate the change if the child has selected the current + * clock as input. + */ + next_clk_input = clktree_get_input_clk(next_clk); + if(next_clk_input == clk) { + /* Recursively propagate changes. The clock tree should not be + * too deep, so we shouldn't have to recurse too many times. + */ + clktree_set_input_freq(next_clk, new_output_freq); + } + } + } +} + + +/* Generic create routine used by the public create routines. */ +static Clk clktree_create_generic( + const char *name, + uint16_t multiplier, + uint16_t divisor, + bool enabled) +{ + Clk clk = (Clk)g_malloc(sizeof(struct Clk)); + + clk->name = name; + + clk->input_freq = 0; + clk->output_freq = 0; + clk->max_output_freq = CLKTREE_NO_MAX_FREQ; + + clk->multiplier = multiplier; + clk->divisor = divisor; + + clk->enabled = enabled; + + clk->user_count = 0; + + clk->output_count = 0; + + clk->input_count = 1; + clk->input[0] = NULL; + clk->selected_input = CLKTREE_NO_INPUT; + + return clk; +} + + + + + + + + + +/* PUBLIC FUNCTIONS */ +bool clktree_is_enabled(Clk clk) +{ + return clk->enabled; +} + +uint32_t clktree_get_output_freq(Clk clk) +{ + return clk->output_freq; +} + +void clktree_adduser(Clk clk, qemu_irq user) +{ + CLKTREE_ADD_LINK( + clk->user, + clk->user_count, + user, + CLKTREE_MAX_IRQ); +} + + +Clk clktree_create_src_clk( + const char *name, + uint32_t src_freq, + bool enabled) +{ + Clk clk; + + clk = clktree_create_generic(name, 1, 1, enabled); + + clktree_set_input_freq(clk, src_freq); + + return clk; +} + + +Clk clktree_create_clk( + const char *name, + uint16_t multiplier, + uint16_t divisor, + bool enabled, + uint32_t max_output_freq, + int selected_input, + ...) +{ + va_list input_clks; + Clk clk, input_clk; + + clk = clktree_create_generic(name, multiplier, divisor, enabled); + + /* Add the input clock connections. */ + va_start(input_clks, selected_input); + while((input_clk = va_arg(input_clks, Clk)) != NULL) { + CLKTREE_ADD_LINK( + clk->input, + clk->input_count, + input_clk, + CLKTREE_MAX_INPUT); + + CLKTREE_ADD_LINK( + input_clk->output, + input_clk->output_count, + clk, + CLKTREE_MAX_OUTPUT); + } + + clktree_set_selected_input(clk, selected_input); + + return clk; +} + + +void clktree_set_scale(Clk clk, uint16_t multiplier, uint16_t divisor) +{ + clk->multiplier = multiplier; + clk->divisor = divisor; + + clktree_recalc_output_freq(clk); +} + + +void clktree_set_enabled(Clk clk, bool enabled) +{ + clk->enabled = enabled; + + clktree_recalc_output_freq(clk); +} + + +void clktree_set_selected_input(Clk clk, int selected_input) +{ + uint32_t input_freq; + + assert((selected_input + 1) < clk->input_count); + + clk->selected_input = selected_input; + + /* Get the input clock frequency. If there is no input, this should be 0. + */ + if(selected_input > -1) { + input_freq = clktree_get_input_clk(clk)->output_freq; + } else { + input_freq = 0; + } + + clktree_set_input_freq(clk, input_freq); +} diff --git a/hw/arm/stm32_exti.c b/hw/arm/stm32_exti.c new file mode 100644 index 0000000000000..3112ffb77c5b7 --- /dev/null +++ b/hw/arm/stm32_exti.c @@ -0,0 +1,400 @@ +/* + * STM32 Microcontroller EXTI (External Interrupt/Event Controller) module + * + * Copyright (C) 2010 Andre Beckus + * + * Implementation based on ST Microelectronics "RM0008 Reference Manual Rev 10" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "hw/arm/stm32.h" +#include "hw/irq.h" +#include "hw/qdev-properties.h" +#include "hw/hw.h" + + + + +/* DEFINITIONS*/ + +#define EXTI_IMR_OFFSET 0x00 + +#define EXTI_EMR_OFFSET 0x04 + +#define EXTI_RTSR_OFFSET 0x08 + +#define EXTI_FTSR_OFFSET 0x0c + +#define EXTI_SWIER_OFFSET 0x10 + +#define EXTI_PR_OFFSET 0x14 + +/* Some devices have fewer lines, but it doesn't hurt to handle the maximum + possible. */ +#define EXTI_LINE_COUNT 23 + +/* The number of IRQ connections to the NVIC */ +#define EXTI_IRQ_COUNT 14 + + +struct Stm32Exti { + /* Inherited */ + SysBusDevice busdev; + + /* Properties */ + /* Array of Stm32Gpio pointers (one for each GPIO). The QEMU property + * library expects this to be a void pointer. */ + void *stm32_gpio_prop; + + /* Private */ + MemoryRegion iomem; + + /* Copy of stm32_gpio_prop correctly typed as an array of Stm32Gpio + * pointers. */ + stm32f2xx_gpio **stm32_gpio; + + uint32_t + EXTI_IMR, + EXTI_RTSR, + EXTI_FTSR, + EXTI_SWIER, + EXTI_PR; + + qemu_irq irq[EXTI_IRQ_COUNT]; +}; + +static void stm32_exti_change_EXTI_PR_bit(Stm32Exti *s, unsigned pos, + unsigned new_bit_value); + + + +/* HELPER FUNCTIONS */ + +/* Call when the EXTI shouldbe tri */ +static void stm32_exti_trigger(Stm32Exti *s, int line) +{ + /* Make sure the interrupt for this EXTI line has been enabled. */ + if(IS_BIT_SET(s->EXTI_IMR, line)) { + /* Set the Pending flag for this line, which will trigger the interrupt + * (if the flag isn't already set). */ + stm32_exti_change_EXTI_PR_bit(s, line, 1); + } +} + +/* We will assume that this handler will only be called if the pin actually + * changed state. */ +static void stm32_exti_gpio_in_handler(void *opaque, int n, int level) +{ + Stm32Exti *s = (Stm32Exti *)opaque; + unsigned pin = n; + + assert(pin < EXTI_LINE_COUNT); + + /* Check the level - if it is rising, then trigger an interrupt if the + * corresponding Rising Trigger Selection Register flag is set. Otherwise, + * trigger if the Falling Trigger Selection Register flag is set. + */ + if((level && GET_BIT_VALUE(s->EXTI_RTSR, pin)) || + (!level && GET_BIT_VALUE(s->EXTI_FTSR, pin))) { + stm32_exti_trigger(s, pin); + } +} + + + + +/* REGISTER IMPLEMENTATION */ + +/* Update a Trigger Selection Register (both the Rising and Falling TSR + * registers are handled by this routine). + */ +static void update_TSR_bit(Stm32Exti *s, uint32_t *tsr_register, unsigned pos, + unsigned new_bit_value) +{ + assert((new_bit_value == 0) || (new_bit_value == 1)); + assert(pos < EXTI_LINE_COUNT); + + if(new_bit_value != GET_BIT_VALUE(*tsr_register, pos)) { + /* According to the documentation, the Pending register is cleared when + * the "sensitivity of the edge detector changes. Is this right??? */ + stm32_exti_change_EXTI_PR_bit(s, pos, 0); + } + CHANGE_BIT(*tsr_register, pos, new_bit_value); +} + +/* Update the Pending Register. This will trigger an interrupt if a bit is + * set. + */ +static void stm32_exti_change_EXTI_PR_bit(Stm32Exti *s, unsigned pos, + unsigned new_bit_value) +{ + unsigned old_bit_value; + + assert((new_bit_value == 0) || (new_bit_value == 1)); + assert(pos < EXTI_LINE_COUNT); + + old_bit_value = GET_BIT_VALUE(s->EXTI_PR, pos); + + /* Only continue if the PR bit is actually changing value. */ + if(new_bit_value != old_bit_value) { + /* If the bit is being reset, the corresponding Software Interrupt Event + * Register bit is automatically reset. + */ + if(!new_bit_value) { + RESET_BIT(s->EXTI_SWIER, pos); + } + + /* Update the IRQ for this EXTI line. Some lines share the same + * NVIC IRQ. + */ + if(pos <= 4) { + /* EXTI0 - EXTI4 each have their own NVIC IRQ */ + qemu_set_irq(s->irq[pos], new_bit_value); + } else if(pos <= 9) { + /* EXTI5 - EXTI9 share an NVIC IRQ */ + qemu_set_irq(s->irq[5], new_bit_value); + } else if(pos <= 15) { + /* EXTI10 - EXTI15 share an NVIC IRQ */ + qemu_set_irq(s->irq[6], new_bit_value); + } else if(pos == 16) { + /* PVD IRQ */ + qemu_set_irq(s->irq[7], new_bit_value); + } else if(pos == 17) { + /* RTCAlarm IRQ */ + qemu_set_irq(s->irq[8], new_bit_value); + } else if(pos == 18) { + /* OTG_FS_WKUP IRQ */ + qemu_set_irq(s->irq[9], new_bit_value); + } else if(pos == 19) { + /* ETH_WKUP IRQ */ + qemu_set_irq(s->irq[10], new_bit_value); + } else if(pos == 20) { + /* OTG_HS_WKUP IRQ */ + qemu_set_irq(s->irq[11], new_bit_value); + } else if(pos == 21) { + /* TAMP_STAMP IRQ */ + qemu_set_irq(s->irq[12], new_bit_value); + } else if(pos == 22) { + /* RTC_WKUP IRQ */ + qemu_set_irq(s->irq[13], new_bit_value); + } else { + assert(false); + } + + /* Update the register. */ + CHANGE_BIT(s->EXTI_PR, pos, new_bit_value); + } +} + + +static uint64_t stm32_exti_readw(void *opaque, hwaddr offset) +{ + Stm32Exti *s = (Stm32Exti *)opaque; + + switch (offset) { + case EXTI_IMR_OFFSET: + return s->EXTI_IMR; + case EXTI_EMR_OFFSET: + /* Do nothing, events are not implemented yet. */ + return 0; + case EXTI_RTSR_OFFSET: + return s->EXTI_RTSR; + case EXTI_FTSR_OFFSET: + return s->EXTI_FTSR; + case EXTI_SWIER_OFFSET: + return s->EXTI_SWIER; + case EXTI_PR_OFFSET: + return s->EXTI_PR; + default: + STM32_BAD_REG(offset, WORD_ACCESS_SIZE); + return 0; + } +} + + +static void stm32_exti_writew(void *opaque, hwaddr offset, uint64_t value) +{ + Stm32Exti *s = (Stm32Exti *)opaque; + + int pos, bit_value; + + if(offset <= EXTI_EMR_OFFSET) { + switch (offset) { + case EXTI_IMR_OFFSET: + s->EXTI_IMR = value; + break; + case EXTI_EMR_OFFSET: + /* Do nothing, events are not implemented yet. + * But we don't want to throw an error. */ + break; + default: + STM32_BAD_REG(offset, WORD_ACCESS_SIZE); + break; + } + } else { + /* These registers all contain one bit per EXTI line. We will loop + * through each line and then update each bit in the appropriate + * register. + */ + for(pos = 0; pos < EXTI_LINE_COUNT; pos++) { + bit_value = GET_BIT_VALUE(value, pos); + + switch (offset) { + case EXTI_RTSR_OFFSET: + update_TSR_bit(s, &(s->EXTI_RTSR), pos, bit_value); + break; + case EXTI_FTSR_OFFSET: + update_TSR_bit(s, &(s->EXTI_FTSR), pos, bit_value); + break; + case EXTI_SWIER_OFFSET: + /* If the Software Interrupt Event Register is changed + * from 0 to 1, trigger an interrupt. Changing the + * bit to 0 does nothing. */ + if(bit_value == 1) { + if(GET_BIT_VALUE(s->EXTI_SWIER, pos) == 0) { + SET_BIT(s->EXTI_SWIER, pos); + stm32_exti_trigger(s, pos); + } + } + break; + case EXTI_PR_OFFSET: + /* When a 1 is written to a PR bit, it actually clears the + * PR bit. */ + if(bit_value == 1) { + stm32_exti_change_EXTI_PR_bit(s, pos, 0); + } + break; + default: + STM32_BAD_REG(offset, WORD_ACCESS_SIZE); + break; + } + } + } +} + +static uint64_t stm32_exti_read(void *opaque, hwaddr offset, unsigned size) +{ + switch(size) { + case WORD_ACCESS_SIZE: + return stm32_exti_readw(opaque, offset); + default: + STM32_BAD_REG(offset, size); + return 0; + } +} + +static void stm32_exti_write(void *opaque, hwaddr offset, uint64_t value, + unsigned size) +{ + switch(size) { + case WORD_ACCESS_SIZE: + stm32_exti_writew(opaque, offset, value); + break; + default: + STM32_BAD_REG(offset, size); + break; + } +} + +static const MemoryRegionOps stm32_exti_ops = { + .read = stm32_exti_read, + .write = stm32_exti_write, + .endianness = DEVICE_NATIVE_ENDIAN +}; + +static void stm32_exti_reset(DeviceState *dev) +{ + Stm32Exti *s = STM32_EXTI(dev); + + s->EXTI_IMR = 0x00000000; + s->EXTI_RTSR = 0x00000000; + s->EXTI_FTSR = 0x00000000; + s->EXTI_SWIER = 0x00000000; + s->EXTI_PR = 0x00000000; +} + + + +/* PUBLIC FUNCTIONS */ + +void stm32_exti_set_gpio(Stm32Exti *s, unsigned exti_line, const uint8_t gpio_index) +{ + assert(exti_line < EXTI_LINE_COUNT); + + /* Call the GPIO module with the EXTI lines IRQ handler. */ + f2xx_gpio_exti_set(s->stm32_gpio[gpio_index], exti_line, qdev_get_gpio_in(DEVICE(&s->busdev), exti_line)); +} + +void stm32_exti_reset_gpio(Stm32Exti *s, unsigned exti_line, const uint8_t gpio_index) +{ + assert(exti_line < EXTI_LINE_COUNT); + + /* Call the GPIO module to clear its IRQ assignment. */ + f2xx_gpio_exti_set(s->stm32_gpio[gpio_index], exti_line, NULL); +} + + + +/* DEVICE INITIALIZATION */ + +static void stm32_exti_realize(DeviceState *obj, Error **pError) +{ + int i; + + Stm32Exti *s = STM32_EXTI(obj); + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + + s->stm32_gpio = (stm32f2xx_gpio **)s->stm32_gpio_prop; + + memory_region_init_io(&s->iomem, OBJECT(s), &stm32_exti_ops, s, + "exti", 0x03ff); + sysbus_init_mmio(dev, &s->iomem); + + for(i = 0; i < EXTI_IRQ_COUNT; i++) { + sysbus_init_irq(dev, &s->irq[i]); + } + + qdev_init_gpio_in(DEVICE(dev), stm32_exti_gpio_in_handler, EXTI_LINE_COUNT); +} + +static Property stm32_exti_properties[] = { + DEFINE_PROP_PTR("stm32_gpio", Stm32Exti, stm32_gpio_prop), + DEFINE_PROP_END_OF_LIST() +}; + +static void stm32_exti_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); + + dc->realize = stm32_exti_realize; + dc->reset = stm32_exti_reset; + device_class_set_props(dc, stm32_exti_properties); +} + +static TypeInfo stm32_exti_info = { + .name = TYPE_STM32_EXTI, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(Stm32Exti), + .class_init = stm32_exti_class_init +}; + +static void stm32_exti_register_types(void) +{ + type_register_static(&stm32_exti_info); +} + +type_init(stm32_exti_register_types) diff --git a/hw/arm/stm32_flash.c b/hw/arm/stm32_flash.c new file mode 100644 index 0000000000000..393c9739bacce --- /dev/null +++ b/hw/arm/stm32_flash.c @@ -0,0 +1,108 @@ +/* + * STM32 Microcontroller Flash Memory + * The STM32 family stores its Flash memory at some base address in memory + * (0x08000000 for medium density devices), and then aliases it to the + * boot memory space, which starts at 0x00000000 (the System Memory can also + * be aliased to 0x00000000, but this is not implemented here). The processor + * executes the code in the aliased memory at 0x00000000, but we need to + * implement the "real" flash memory as well. This "real" flash memory will + * pass reads through to the memory at 0x00000000, which is where QEMU loads + * the executable image. Note that this is opposite of real hardware, where the + * memory at 0x00000000 passes reads through the "real" flash memory, but it + * works the same either way. + * + * Copyright (C) 2010 Andre Beckus + * + * Implementation based on ST Microelectronics "RM0008 Reference Manual Rev 10" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "hw/arm/stm32.h" +#include "hw/hw.h" +#include "hw/qdev-properties.h" +//#include "exec-memory.h" + +typedef struct { + SysBusDevice busdev; + MemoryRegion iomem; + uint32_t size; +} Stm32Flash; + +static uint64_t stm32_flash_read(void *opaque, hwaddr offset, unsigned size) +{ + uint32_t v = 0; + + /* Pass the read through to base memory at 0x00000000 where QEMU has loaded + * the executable image. + */ + cpu_physical_memory_read(offset, (uint8_t *)&v, size); + return v; +} + +static void stm32_flash_write(void *opaque, hwaddr offset, uint64_t value, + unsigned size) +{ + /* Flash is treated as read only memory. */ + hw_error("stm32_flash: Attempted to write flash memory (read only)"); +} + +static const MemoryRegionOps stm32_flash_ops = { + .read = stm32_flash_read, + .write = stm32_flash_write, + .endianness = DEVICE_NATIVE_ENDIAN +}; + +static void stm32_flash_init(Object *obj) +{ + Stm32Flash *s = STM32_FLASH(obj); + SysBusDevice *sbd = SYS_BUS_DEVICE(obj); + + memory_region_init_io( + &s->iomem, + OBJECT(s), + &stm32_flash_ops, + &s, + "stm32_flash", + s->size); + sysbus_init_mmio(sbd, &s->iomem); +} + +static Property stm32_flash_properties[] = { + DEFINE_PROP_UINT32("size", Stm32Flash, size, 0), + DEFINE_PROP_END_OF_LIST(), +}; + +static void stm32_flash_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + + device_class_set_props(dc, stm32_flash_properties); +} + +static TypeInfo stm32_flash_info = { + .name = TYPE_STM32_FLASH, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(Stm32Flash), + .instance_init = stm32_flash_init, + .class_init = stm32_flash_class_init, +}; + +static void stm32_flash_register_types(void) +{ + type_register_static(&stm32_flash_info); +} + +type_init(stm32_flash_register_types) diff --git a/hw/arm/stm32_p103.c b/hw/arm/stm32_p103.c new file mode 100644 index 0000000000000..3c2c3f497ff43 --- /dev/null +++ b/hw/arm/stm32_p103.c @@ -0,0 +1,135 @@ +/* + * Olimex STM32 P103 Development Board + * + * Copyright (C) 2010 Andre Beckus + * + * Implementation based on + * Olimex "STM-P103 Development Board Users Manual Rev. A, April 2008" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "stm32f1xx.h" +#include "hw/sysbus.h" +#include "hw/arm/armv7m.h" +#include "ui/console.h" +#include "sysemu/sysemu.h" +#include "hw/boards.h" +#include "hw/irq.h" + + +typedef struct { + Stm32 *stm32; + Stm32Gpio *stm32_gpio[STM32F1XX_GPIO_COUNT]; + Stm32Uart *stm32_uart[STM32_UART_COUNT]; + + bool last_button_pressed; + qemu_irq button_irq; +} Stm32P103; + + + + +static void led_irq_handler(void *opaque, int n, int level) +{ + /* There should only be one IRQ for the LED */ + assert(n == 0); + + /* Assume that the IRQ is only triggered if the LED has changed state. + * If this is not correct, we may get multiple LED Offs or Ons in a row. + */ + switch (level) { + case 0: + printf("LED Off\n"); + break; + case 1: + printf("LED On\n"); + break; + } +} + +static void stm32_p103_key_event(void *opaque, int keycode) +{ + Stm32P103 *s = (Stm32P103 *)opaque; + bool make; + int core_keycode; + + if((keycode & 0x80) == 0) { + make = true; + core_keycode = keycode; + } else { + make = false; + core_keycode = keycode & 0x7f; + } + + /* Responds when a "B" key press is received. + * Inside the monitor, you can type "sendkey b" + */ + if(core_keycode == 0x30) { + if(make) { + if(!s->last_button_pressed) { + qemu_irq_raise(s->button_irq); + s->last_button_pressed = true; + } + } else { + if(s->last_button_pressed) { + qemu_irq_lower(s->button_irq); + s->last_button_pressed = false; + } + } + } + return; + +} + + +static void stm32_p103_init(MachineState *machine) { + + const char* kernel_filename = machine->kernel_filename; + qemu_irq *led_irq; + Stm32P103 *s; + + s = (Stm32P103 *)g_malloc0(sizeof(Stm32P103)); + + stm32f1xx_init(/*flash_size in bytes */ 128 * 1024, + /*ram_size in bytes */ 20 * 1024, + kernel_filename, + s->stm32_gpio, + s->stm32_uart, + 8000000, + 32768); + + /* Connect LED to GPIO C pin 12 */ + led_irq = qemu_allocate_irqs(led_irq_handler, NULL, 1); + qdev_connect_gpio_out((DeviceState *)s->stm32_gpio[STM32_GPIOC_INDEX], 12, led_irq[0]); + + /* Connect button to GPIO A pin 0 */ + s->button_irq = qdev_get_gpio_in((DeviceState *)s->stm32_gpio[STM32_GPIOA_INDEX], 0); + qemu_add_kbd_event_handler(stm32_p103_key_event, s); + + /* Connect RS232 to UART */ + stm32_uart_connect( + s->stm32_uart[STM32_UART2_INDEX], + serial_hd(0), + STM32_USART2_NO_REMAP); +} + +static void stm32_p103_machine_init(MachineClass *mc) +{ + mc->desc = "Olimex STM32 p103 Dev Board"; + mc->init = stm32_p103_init; +} + +DEFINE_MACHINE("stm32-p103", stm32_p103_machine_init) \ No newline at end of file diff --git a/hw/arm/stm32_rcc.c b/hw/arm/stm32_rcc.c new file mode 100644 index 0000000000000..f9841d3b0cd3e --- /dev/null +++ b/hw/arm/stm32_rcc.c @@ -0,0 +1,51 @@ +#include "qemu/osdep.h" +#include "hw/arm/stm32.h" +#include "hw/arm/stm32_clktree.h" +#include "stm32f2xx_rcc.h" + +/* PUBLIC FUNCTIONS */ + +void stm32_rcc_check_periph_clk(Stm32Rcc *s, stm32_periph_t periph) +{ + Clk clk = s->PERIPHCLK[periph]; + + assert(clk != NULL); + + if(!clktree_is_enabled(clk)) { + /* I assume writing to a peripheral register while the peripheral clock + * is disabled is a bug and give a warning to unsuspecting programmers. + * When I made this mistake on real hardware the write had no effect. + */ + stm32_hw_warn("Warning: You are attempting to use the stm32_rcc peripheral %d while " + "its clock is disabled.\n", periph); + } +} + +void stm32_rcc_set_periph_clk_irq( + Stm32Rcc *s, + stm32_periph_t periph, + qemu_irq periph_irq) +{ + Stm32f2xxRcc*v = STM32F2XX_RCC(s); + Clk clk2 = v->PERIPHCLK[periph]; + + assert(clk2 != NULL); + + clktree_adduser(clk2, periph_irq); +} + +uint32_t stm32_rcc_get_periph_freq( + Stm32Rcc *s, + stm32_periph_t periph) +{ + Clk clk; + + Stm32f2xxRcc*v = STM32F2XX_RCC(s); + clk = v->PERIPHCLK[periph]; + + assert(clk != NULL); + + return clktree_get_output_freq(clk); +} + + diff --git a/hw/arm/stm32_rcc.h b/hw/arm/stm32_rcc.h new file mode 100644 index 0000000000000..c24b0cf98124f --- /dev/null +++ b/hw/arm/stm32_rcc.h @@ -0,0 +1,20 @@ +#include "hw/sysbus.h" +#include "hw/arm/stm32_clktree.h" +#include "hw/arm/stm32.h" + +/** RCC Base data structure */ +struct Stm32Rcc { + /* Inherited */ + SysBusDevice busdev; + + /* Properties */ + uint32_t osc_freq; + uint32_t osc32_freq; + + /* Private */ + MemoryRegion iomem; + qemu_irq irq; + + /* Peripheral clocks */ + Clk PERIPHCLK[]; +}; diff --git a/hw/arm/stm32f1xx.c b/hw/arm/stm32f1xx.c new file mode 100644 index 0000000000000..be33a529b871b --- /dev/null +++ b/hw/arm/stm32f1xx.c @@ -0,0 +1,199 @@ +/* + * STM32 Microcontroller + * + * Copyright (C) 2010 Andre Beckus + * + * Implementation based on ST Microelectronics "RM0008 Reference Manual Rev 10" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "hw/arm/stm32.h" +#include "stm32f1xx.h" +#include "exec/address-spaces.h" +#include "hw/qdev-properties.h" + +/* PERIPHERALS */ + +static const char *stm32f1xx_periph_name_arr[] = { + ENUM_STRING(STM32F1XX_RCC), + ENUM_STRING(STM32F1XX_GPIOA), + ENUM_STRING(STM32F1XX_GPIOB), + ENUM_STRING(STM32F1XX_GPIOC), + ENUM_STRING(STM32F1XX_GPIOD), + ENUM_STRING(STM32F1XX_GPIOE), + ENUM_STRING(STM32F1XX_GPIOF), + ENUM_STRING(STM32F1XX_GPIOG), + ENUM_STRING(STM32F1XX_AFIO), + ENUM_STRING(STM32F1XX_UART1), + ENUM_STRING(STM32F1XX_UART2), + ENUM_STRING(STM32F1XX_UART3), + ENUM_STRING(STM32F1XX_UART4), + ENUM_STRING(STM32F1XX_UART5), + ENUM_STRING(STM32F1XX_ADC1), + ENUM_STRING(STM32F1XX_ADC2), + ENUM_STRING(STM32F1XX_ADC3), + ENUM_STRING(STM32F1XX_DAC), + ENUM_STRING(STM32F1XX_TIM1), + ENUM_STRING(STM32F1XX_TIM2), + ENUM_STRING(STM32F1XX_TIM3), + ENUM_STRING(STM32F1XX_TIM4), + ENUM_STRING(STM32F1XX_TIM5), + ENUM_STRING(STM32F1XX_TIM6), + ENUM_STRING(STM32F1XX_TIM7), + ENUM_STRING(STM32F1XX_TIM8), + ENUM_STRING(STM32F1XX_BKP), + ENUM_STRING(STM32F1XX_PWR), + ENUM_STRING(STM32F1XX_I2C1), + ENUM_STRING(STM32F1XX_I2C2), + ENUM_STRING(STM32F1XX_I2S2), + ENUM_STRING(STM32F1XX_I2S3), + ENUM_STRING(STM32F1XX_WWDG), + ENUM_STRING(STM32F1XX_CAN1), + ENUM_STRING(STM32F1XX_CAN2), + ENUM_STRING(STM32F1XX_CAN), + ENUM_STRING(STM32F1XX_USB), + ENUM_STRING(STM32F1XX_SPI1), + ENUM_STRING(STM32F1XX_SPI2), + ENUM_STRING(STM32F1XX_SPI3), + ENUM_STRING(STM32F1XX_EXTI), + ENUM_STRING(STM32F1XX_SDIO), + ENUM_STRING(STM32F1XX_FSMC), + ENUM_STRING(STM32F1XX_PERIPH_COUNT), +}; + +void stm32f1xx_init( + ram_addr_t flash_size, + ram_addr_t sram_size, + const char *kernel_filename, + Stm32Gpio *stm32_gpio[], + Stm32Uart *stm32_uart[], + uint32_t osc_freq, + uint32_t osc32_freq) +{ + MemoryRegion *address_space_mem = get_system_memory(); + MemoryRegion *flash_alias_mem = g_malloc(sizeof(MemoryRegion)); + DeviceState *nvic; + int i; + + Object *stm32_container = container_get(qdev_get_machine(), "/stm32"); + + nvic = armv7m_init( + stm32_container, + address_space_mem, + flash_size, + sram_size, + 0, /* default number of irqs */ + kernel_filename, + "cortex-m3"); + + /* The STM32 family stores its Flash memory at some base address in memory + * (0x08000000 for medium density devices), and then aliases it to the + * boot memory space, which starts at 0x00000000 (the "System Memory" can also + * be aliased to 0x00000000, but this is not implemented here). The processor + * executes the code in the aliased memory at 0x00000000. We need to make a + * QEMU alias so that reads in the 0x08000000 area are passed through to the + * 0x00000000 area. Note that this is the opposite of real hardware, where the + * memory at 0x00000000 passes reads through the "real" flash memory at + * 0x08000000, but it works the same either way. */ + /* TODO: Parameterize the base address of the aliased memory. */ + memory_region_init_alias( + flash_alias_mem, + NULL, + "stm32-flash-alias-mem", + address_space_mem, + 0, + flash_size); + memory_region_add_subregion(address_space_mem, 0x08000000, flash_alias_mem); + + DeviceState *rcc_dev = qdev_create(NULL, TYPE_STM32F1XX_RCC); + qdev_prop_set_uint32(rcc_dev, "osc_freq", osc_freq); + qdev_prop_set_uint32(rcc_dev, "osc32_freq", osc32_freq); + object_property_add_child(stm32_container, "stm32f1xx_rcc", OBJECT(rcc_dev), NULL); + stm32_init_periph(rcc_dev, STM32_RCC_PERIPH, 0x40021000, qdev_get_gpio_in(nvic, STM32_RCC_IRQ)); + + DeviceState **gpio_dev = (DeviceState **)stm32_gpio; + for(i = 0; i < STM32F1XX_GPIO_COUNT; i++) { + char child_name[8]; + stm32_periph_t periph = STM32_GPIOA + i; + gpio_dev[i] = qdev_create(NULL, TYPE_STM32_GPIO); + gpio_dev[i]->id = stm32f1xx_periph_name_arr[periph]; + QDEV_PROP_SET_PERIPH_T(gpio_dev[i], "periph", periph); + qdev_prop_set_ptr(gpio_dev[i], "stm32_rcc", rcc_dev); + snprintf(child_name, sizeof(child_name), "gpio[%c]", 'a' + i); + object_property_add_child(stm32_container, child_name, OBJECT(gpio_dev[i]), NULL); + stm32_init_periph(gpio_dev[i], periph, 0x40010800 + (i * 0x400), NULL); + } + + DeviceState *exti_dev = qdev_create(NULL, TYPE_STM32_EXTI); + object_property_add_child(stm32_container, "exti", OBJECT(exti_dev), NULL); + stm32_init_periph(exti_dev, STM32_EXTI_PERIPH, 0x40010400, NULL); + SysBusDevice *exti_busdev = SYS_BUS_DEVICE(exti_dev); + sysbus_connect_irq(exti_busdev, 0, qdev_get_gpio_in(nvic, STM32_EXTI0_IRQ)); + sysbus_connect_irq(exti_busdev, 1, qdev_get_gpio_in(nvic, STM32_EXTI1_IRQ)); + sysbus_connect_irq(exti_busdev, 2, qdev_get_gpio_in(nvic, STM32_EXTI2_IRQ)); + sysbus_connect_irq(exti_busdev, 3, qdev_get_gpio_in(nvic, STM32_EXTI3_IRQ)); + sysbus_connect_irq(exti_busdev, 4, qdev_get_gpio_in(nvic, STM32_EXTI4_IRQ)); + sysbus_connect_irq(exti_busdev, 5, qdev_get_gpio_in(nvic, STM32_EXTI9_5_IRQ)); + sysbus_connect_irq(exti_busdev, 6, qdev_get_gpio_in(nvic, STM32_EXTI15_10_IRQ)); + sysbus_connect_irq(exti_busdev, 7, qdev_get_gpio_in(nvic, STM32_PVD_IRQ)); + sysbus_connect_irq(exti_busdev, 8, qdev_get_gpio_in(nvic, STM32_RTCAlarm_IRQ)); + sysbus_connect_irq(exti_busdev, 9, qdev_get_gpio_in(nvic, STM32_OTG_FS_WKUP_IRQ)); + + DeviceState *afio_dev = qdev_create(NULL, TYPE_STM32_AFIO); + qdev_prop_set_ptr(afio_dev, "stm32_rcc", rcc_dev); + object_property_set_link(OBJECT(afio_dev), OBJECT(gpio_dev[0]), "gpio[a]", NULL); + object_property_set_link(OBJECT(afio_dev), OBJECT(gpio_dev[1]), "gpio[b]", NULL); + object_property_set_link(OBJECT(afio_dev), OBJECT(gpio_dev[2]), "gpio[c]", NULL); + object_property_set_link(OBJECT(afio_dev), OBJECT(gpio_dev[3]), "gpio[d]", NULL); + object_property_set_link(OBJECT(afio_dev), OBJECT(gpio_dev[4]), "gpio[e]", NULL); + object_property_set_link(OBJECT(afio_dev), OBJECT(gpio_dev[5]), "gpio[f]", NULL); + object_property_set_link(OBJECT(afio_dev), OBJECT(gpio_dev[6]), "gpio[g]", NULL); + object_property_set_link(OBJECT(afio_dev), OBJECT(exti_dev), "exti", NULL); + object_property_add_child(stm32_container, "afio", OBJECT(afio_dev), NULL); + stm32_init_periph(afio_dev, STM32_AFIO_PERIPH, 0x40010000, NULL); + + // Create UARTs: + struct { + uint32_t addr; + uint8_t irq_idx; + } const uart_desc[] = { + {0x40013800, STM32_UART1_IRQ}, + {0x40004400, STM32_UART2_IRQ}, + {0x40004800, STM32_UART3_IRQ}, + {0x40004c00, STM32_UART4_IRQ}, + {0x40005000, STM32_UART5_IRQ}, + }; + for (i = 0; i < ARRAY_LENGTH(uart_desc); ++i) { + const stm32_periph_t periph = STM32F1XX_UART1 + i; + DeviceState *uart_dev = qdev_create(NULL, TYPE_STM32_UART); + uart_dev->id = stm32f1xx_periph_name_arr[periph]; + qdev_prop_set_int32(uart_dev, "periph", periph); + qdev_prop_set_ptr(uart_dev, "stm32_rcc", rcc_dev); + qdev_prop_set_ptr(uart_dev, "stm32_gpio", gpio_dev); + qdev_prop_set_ptr(uart_dev, "stm32_afio", afio_dev); + qdev_prop_set_ptr(uart_dev, "stm32_check_tx_pin_callback", (void *)stm32_afio_uart_check_tx_pin_callback); + stm32_init_periph(uart_dev, periph, uart_desc[i].addr, + qdev_get_gpio_in(nvic, uart_desc[i].irq_idx)); + stm32_uart[i] = (Stm32Uart*)uart_dev; + } + /* + stm32_create_uart_dev(stm32_container, STM32_UART1, 1, rcc_dev, gpio_dev, afio_dev, 0x40013800, pic[STM32_UART1_IRQ]); + stm32_create_uart_dev(stm32_container, STM32_UART2, 2, rcc_dev, gpio_dev, afio_dev, 0x40004400, pic[STM32_UART2_IRQ]); + stm32_create_uart_dev(stm32_container, STM32_UART3, 3, rcc_dev, gpio_dev, afio_dev, 0x40004800, pic[STM32_UART3_IRQ]); + stm32_create_uart_dev(stm32_container, STM32_UART4, 4, rcc_dev, gpio_dev, afio_dev, 0x40004c00, pic[STM32_UART4_IRQ]); + stm32_create_uart_dev(stm32_container, STM32_UART5, 5, rcc_dev, gpio_dev, afio_dev, 0x40005000, pic[STM32_UART5_IRQ]); + */ +} diff --git a/hw/arm/stm32f1xx.h b/hw/arm/stm32f1xx.h new file mode 100644 index 0000000000000..e30591c470ba4 --- /dev/null +++ b/hw/arm/stm32f1xx.h @@ -0,0 +1,61 @@ +#include "hw/arm/stm32.h" + +enum { + STM32F1XX_PERIPH_UNDEFINED = -1, + STM32F1XX_RCC = 0, + STM32F1XX_GPIOA, + STM32F1XX_GPIOB, + STM32F1XX_GPIOC, + STM32F1XX_GPIOD, + STM32F1XX_GPIOE, + STM32F1XX_GPIOF, + STM32F1XX_GPIOG, + STM32F1XX_GPIOH, + STM32F1XX_GPIOI, + STM32F1XX_GPIOJ, + STM32F1XX_GPIOK, + STM32F1XX_SYSCFG, + STM32F1XX_AFIO, + STM32F1XX_UART1, + STM32F1XX_UART2, + STM32F1XX_UART3, + STM32F1XX_UART4, + STM32F1XX_UART5, + STM32F1XX_UART6, + STM32F1XX_UART7, + STM32F1XX_UART8, + STM32F1XX_ADC1, + STM32F1XX_ADC2, + STM32F1XX_ADC3, + STM32F1XX_DAC, + STM32F1XX_TIM1, + STM32F1XX_TIM2, + STM32F1XX_TIM3, + STM32F1XX_TIM4, + STM32F1XX_TIM5, + STM32F1XX_TIM6, + STM32F1XX_TIM7, + STM32F1XX_TIM8, + STM32F1XX_BKP, + STM32F1XX_PWR, + STM32F1XX_I2C1, + STM32F1XX_I2C2, + STM32F1XX_I2S2, + STM32F1XX_I2S3, + STM32F1XX_WWDG, + STM32F1XX_CAN1, + STM32F1XX_CAN2, + STM32F1XX_CAN, + STM32F1XX_USB, + STM32F1XX_SPI1, + STM32F1XX_SPI2, + STM32F1XX_SPI3, + STM32F1XX_EXTI, + STM32F1XX_SDIO, + STM32F1XX_FSMC, + STM32F1XX_PERIPH_COUNT, +}; + +const char *stm32f1xx_periph_name(stm32_periph_t periph); + +#define STM32F1XX_GPIO_COUNT (STM32F1XX_GPIOG - STM32F1XX_GPIOA + 1) diff --git a/hw/arm/stm32f1xx_rcc.c b/hw/arm/stm32f1xx_rcc.c new file mode 100644 index 0000000000000..a028688f6bf65 --- /dev/null +++ b/hw/arm/stm32f1xx_rcc.c @@ -0,0 +1,688 @@ +/* + * STM32 Microcontroller RCC (Reset and Clock Control) module + * + * Copyright (C) 2010 Andre Beckus + * + * Source code based on omap_clk.c + * Implementation based on ST Microelectronics "RM0008 Reference Manual Rev 10" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "stm32f1xx_rcc.h" +#include "qemu/timer.h" +#include "hw/hw.h" +#include +#include "hw/qdev-properties.h" +#include "hw/timer/armv7m_systick.h" +#include "hw/irq.h" + + +/* DEFINITIONS*/ + +/* See README for DEBUG details. */ +//#define DEBUG_STM32_RCC + +#ifdef DEBUG_STM32_RCC +#define DPRINTF(fmt, ...) \ +do { printf("STM32F1XX_RCC: " fmt , ## __VA_ARGS__); } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + +#define HSI_FREQ 8000000 +#define LSI_FREQ 40000 + +#define RCC_CR_OFFSET 0x00 +#define RCC_CR_PLL3RDY_CL_BIT 29 +#define RCC_CR_PLL3ON_CL_BIT 28 +#define RCC_CR_PLL2RDY_CL_BIT 27 +#define RCC_CR_PLL2ON_CL_BIT 26 +#define RCC_CR_PLLRDY_BIT 25 +#define RCC_CR_PLLON_BIT 24 +#define RCC_CR_CSSON_BIT 19 +#define RCC_CR_HSEBYP_BIT 18 +#define RCC_CR_HSERDY_BIT 17 +#define RCC_CR_HSEON_BIT 16 +#define RCC_CR_HSICAL_START 8 +#define RCC_CR_HSICAL_MASK 0x0000ff00 +#define RCC_CR_HSITRIM_START 3 +#define RCC_CR_HSITRIM_MASK 0x000000f8 +#define RCC_CR_HSIRDY_BIT 1 +#define RCC_CR_HSION_BIT 0 + +#define RCC_CFGR_OFFSET 0x04 +#define RCC_CFGR_MCO_START 24 +#define RCC_CFGR_MCO_MASK 0x07000000 +#define RCC_CFGR_MCO_CL_MASK 0x0f000000 +#define RCC_CFGR_USBPRE_BIT 22 +#define RCC_CFGR_OTGFSPRE_CL_BIT 22 +#define RCC_CFGR_PLLMUL_START 18 +#define RCC_CFGR_PLLMUL_MASK 0x003c0000 +#define RCC_CFGR_PLLXTPRE_BIT 17 +#define RCC_CFGR_PLLSRC_BIT 16 +#define RCC_CFGR_ADCPRE_START 14 +#define RCC_CFGR_ADCPRE_MASK 0x0000c000 +#define RCC_CFGR_PPRE2_START 11 +#define RCC_CFGR_PPRE2_MASK 0x00003c00 +#define RCC_CFGR_PPRE1_START 8 +#define RCC_CFGR_PPRE1_MASK 0x00000700 +#define RCC_CFGR_HPRE_START 4 +#define RCC_CFGR_HPRE_MASK 0x000000f0 +#define RCC_CFGR_SWS_START 2 +#define RCC_CFGR_SWS_MASK 0x0000000c +#define RCC_CFGR_SW_START 0 +#define RCC_CFGR_SW_MASK 0x00000003 + +#define RCC_CIR_OFFSET 0x08 + +#define RCC_APB2RSTR_OFFSET 0x0c + +#define RCC_APB1RSTR_OFFSET 0x10 + +#define RCC_AHBENR_OFFSET 0x14 + +#define RCC_APB2ENR_OFFSET 0x18 +#define RCC_APB2ENR_ADC3EN_BIT 15 +#define RCC_APB2ENR_USART1EN_BIT 14 +#define RCC_APB2ENR_TIM8EN_BIT 13 +#define RCC_APB2ENR_SPI1EN_BIT 12 +#define RCC_APB2ENR_TIM1EN_BIT 11 +#define RCC_APB2ENR_ADC2EN_BIT 10 +#define RCC_APB2ENR_ADC1EN_BIT 9 +#define RCC_APB2ENR_IOPGEN_BIT 8 +#define RCC_APB2ENR_IOPFEN_BIT 7 +#define RCC_APB2ENR_IOPEEN_BIT 6 +#define RCC_APB2ENR_IOPDEN_BIT 5 +#define RCC_APB2ENR_IOPCEN_BIT 4 +#define RCC_APB2ENR_IOPBEN_BIT 3 +#define RCC_APB2ENR_IOPAEN_BIT 2 +#define RCC_APB2ENR_AFIOEN_BIT 0 + +#define RCC_APB1ENR_OFFSET 0x1c +#define RCC_APB1ENR_DACEN_BIT 29 +#define RCC_APB1ENR_PWREN_BIT 28 +#define RCC_APB1ENR_BKPEN_BIT 27 +#define RCC_APB1ENR_CAN2EN_BIT 26 +#define RCC_APB1ENR_CAN1EN_BIT 25 +#define RCC_APB1ENR_CANEN_BIT 25 +#define RCC_APB1ENR_USBEN_BIT 23 +#define RCC_APB1ENR_I2C2EN_BIT 22 +#define RCC_APB1ENR_I2C1EN_BIT 21 +#define RCC_APB1ENR_USART5EN_BIT 20 +#define RCC_APB1ENR_USART4EN_BIT 19 +#define RCC_APB1ENR_USART3EN_BIT 18 +#define RCC_APB1ENR_USART2EN_BIT 17 +#define RCC_APB1ENR_SPI3EN_BIT 15 +#define RCC_APB1ENR_SPI2EN_BIT 14 +#define RCC_APB1ENR_WWDGEN_BIT 11 +#define RCC_APB1ENR_TIM7EN_BIT 5 +#define RCC_APB1ENR_TIM6EN_BIT 4 +#define RCC_APB1ENR_TIM5EN_BIT 3 +#define RCC_APB1ENR_TIM4EN_BIT 2 +#define RCC_APB1ENR_TIM3EN_BIT 1 +#define RCC_APB1ENR_TIM2EN_BIT 0 + +#define RCC_BDCR_OFFSET 0x20 +#define RCC_BDCR_RTCEN_BIT 15 +#define RCC_BDCR_RTCSEL_START 8 +#define RCC_BDCR_RTCSEL_MASK 0x00000300 +#define RCC_BDCR_LSERDY_BIT 1 +#define RCC_BDCR_LSEON_BIT 0 + +#define RCC_CSR_OFFSET 0x24 +#define RCC_CSR_LSIRDY_BIT 1 +#define RCC_CSR_LSION_BIT 0 + +#define RCC_AHBRSTR 0x28 + +#define RCC_CFGR2_OFFSET 0x2c +#define RCC_CFGR2_I2S3SRC_BIT 18 +#define RCC_CFGR2_I2S2SRC_BIT 17 +#define RCC_CFGR2_PREDIV1SRC_BIT 16 +#define RCC_CFGR2_PLL3MUL_START 12 +#define RCC_CFGR2_PLL3MUL_MASK 0x0000f000 +#define RCC_CFGR2_PLL2MUL_START 8 +#define RCC_CFGR2_PLL2MUL_MASK 0x00000f00 +#define RCC_CFGR2_PREDIV2_START 4 +#define RCC_CFGR2_PREDIV2_MASK 0x000000f0 +#define RCC_CFGR2_PREDIV_START 0 +#define RCC_CFGR2_PREDIV_MASK 0x0000000f +#define RCC_CFGR2_PLLXTPRE_BIT 0 + +#define PLLSRC_HSI_SELECTED 0 +#define PLLSRC_HSE_SELECTED 1 + +#define SW_HSI_SELECTED 0 +#define SW_HSE_SELECTED 1 +#define SW_PLL_SELECTED 2 + + +/* HELPER FUNCTIONS */ + +/* Enable the peripheral clock if the specified bit is set in the value. */ +static void stm32_rcc_periph_enable( + Stm32Rcc *s, + uint32_t new_value, + bool init, + int periph, + uint32_t bit_mask) +{ + clktree_set_enabled(s->PERIPHCLK[periph], IS_BIT_SET(new_value, bit_mask)); +} + + + + + +/* REGISTER IMPLEMENTATION */ + +/* Read the configuration register. */ +static uint32_t stm32_rcc_RCC_CR_read(Stm32f1xxRcc *s) +{ + /* Get the status of the clocks. */ + bool PLLON = clktree_is_enabled(s->PLLCLK); + bool HSEON = clktree_is_enabled(s->HSECLK); + bool HSION = clktree_is_enabled(s->HSICLK); + + /* build the register value based on the clock states. If a clock is on, + * then its ready bit is always set. + */ + return GET_BIT_MASK(RCC_CR_PLLRDY_BIT, PLLON) | + GET_BIT_MASK(RCC_CR_PLLON_BIT, PLLON) | + GET_BIT_MASK(RCC_CR_HSERDY_BIT, HSEON) | + GET_BIT_MASK(RCC_CR_HSEON_BIT, HSEON) | + GET_BIT_MASK(RCC_CR_HSIRDY_BIT, HSION) | + GET_BIT_MASK(RCC_CR_HSION_BIT, HSION); +} + +/* Write the Configuration Register. + * This updates the states of the corresponding clocks. The bit values are not + * saved - when the register is read, its value will be built using the clock + * states. + */ +static void stm32_rcc_RCC_CR_write(Stm32f1xxRcc *s, uint32_t new_value, bool init) +{ + bool new_PLLON, new_HSEON, new_HSION; + + new_PLLON = IS_BIT_SET(new_value, RCC_CR_PLLON_BIT); + if((clktree_is_enabled(s->PLLCLK) && !new_PLLON) && + s->RCC_CFGR_SW == SW_PLL_SELECTED) { + stm32_hw_warn("PLL cannot be disabled while it is selected as the system clock."); + } + clktree_set_enabled(s->PLLCLK, new_PLLON); + + new_HSEON = IS_BIT_SET(new_value, RCC_CR_HSEON_BIT); + if((clktree_is_enabled(s->HSECLK) && !new_HSEON) && + (s->RCC_CFGR_SW == SW_HSE_SELECTED || + (s->RCC_CFGR_SW == SW_PLL_SELECTED && s->RCC_CFGR_PLLSRC == PLLSRC_HSE_SELECTED) + ) + ) { + stm32_hw_warn("HSE oscillator cannot be disabled while it is driving the system clock."); + } + clktree_set_enabled(s->HSECLK, new_HSEON); + + new_HSION = IS_BIT_SET(new_value, RCC_CR_HSION_BIT); + if((clktree_is_enabled(s->HSECLK) && !new_HSEON) && + (s->RCC_CFGR_SW == SW_HSI_SELECTED || + (s->RCC_CFGR_SW == SW_PLL_SELECTED && s->RCC_CFGR_PLLSRC == PLLSRC_HSI_SELECTED) + ) + ) { + stm32_hw_warn("HSI oscillator cannot be disabled while it is driving the system clock."); + } + clktree_set_enabled(s->HSICLK, new_HSION); +} + + +static uint32_t stm32_rcc_RCC_CFGR_read(Stm32f1xxRcc *s) +{ + return (s->RCC_CFGR_PLLMUL << RCC_CFGR_PLLMUL_START) | + (s->RCC_CFGR_PLLXTPRE << RCC_CFGR_PLLXTPRE_BIT) | + (s->RCC_CFGR_PLLSRC << RCC_CFGR_PLLSRC_BIT) | + (s->RCC_CFGR_PPRE2 << RCC_CFGR_PPRE2_START) | + (s->RCC_CFGR_PPRE1 << RCC_CFGR_PPRE1_START) | + (s->RCC_CFGR_HPRE << RCC_CFGR_HPRE_START) | + (s->RCC_CFGR_SW << RCC_CFGR_SW_START) | + (s->RCC_CFGR_SW << RCC_CFGR_SWS_START); +} + + +static void stm32_rcc_RCC_CFGR_write(Stm32f1xxRcc *s, uint32_t new_value, bool init) +{ + uint32_t new_PLLMUL, new_PLLXTPRE, new_PLLSRC; + + /* PLLMUL */ + new_PLLMUL = (new_value & RCC_CFGR_PLLMUL_MASK) >> RCC_CFGR_PLLMUL_START; + if(!init) { + if(clktree_is_enabled(s->PLLCLK) && + (new_PLLMUL != s->RCC_CFGR_PLLMUL)) { + stm32_hw_warn("Can only change PLLMUL while PLL is disabled"); + } + } + assert(new_PLLMUL <= 0xf); + if(new_PLLMUL == 0xf) { + clktree_set_scale(s->PLLCLK, 16, 1); + } else { + clktree_set_scale(s->PLLCLK, new_PLLMUL + 2, 1); + } + s->RCC_CFGR_PLLMUL = new_PLLMUL; + + /* PLLXTPRE */ + new_PLLXTPRE = GET_BIT_VALUE(new_value, RCC_CFGR_PLLXTPRE_BIT); + if(!init) { + if(clktree_is_enabled(s->PLLCLK) && + (new_PLLXTPRE != s->RCC_CFGR_PLLXTPRE)) { + stm32_hw_warn("Can only change PLLXTPRE while PLL is disabled"); + } + } + clktree_set_selected_input(s->PLLXTPRECLK, new_PLLXTPRE); + s->RCC_CFGR_PLLXTPRE = new_PLLXTPRE; + + /* PLLSRC */ + new_PLLSRC = GET_BIT_VALUE(new_value, RCC_CFGR_PLLSRC_BIT); + if(!init) { + if(clktree_is_enabled(s->PLLCLK) && + (new_PLLSRC != s->RCC_CFGR_PLLSRC)) { + stm32_hw_warn("Can only change PLLSRC while PLL is disabled"); + } + } + clktree_set_selected_input(s->PLLCLK, new_PLLSRC); + s->RCC_CFGR_PLLSRC = new_PLLSRC; + + /* PPRE2 */ + s->RCC_CFGR_PPRE2 = (new_value & RCC_CFGR_PPRE2_MASK) >> RCC_CFGR_PPRE2_START; + if(s->RCC_CFGR_PPRE2 < 0x4) { + clktree_set_scale(s->PCLK2, 1, 1); + } else { + clktree_set_scale(s->PCLK2, 1, 2 * (s->RCC_CFGR_PPRE2 - 3)); + } + + /* PPRE1 */ + s->RCC_CFGR_PPRE1 = (new_value & RCC_CFGR_PPRE1_MASK) >> RCC_CFGR_PPRE1_START; + if(s->RCC_CFGR_PPRE1 < 4) { + clktree_set_scale(s->PCLK1, 1, 1); + } else { + clktree_set_scale(s->PCLK1, 1, 2 * (s->RCC_CFGR_PPRE1 - 3)); + } + + /* HPRE */ + s->RCC_CFGR_HPRE = (new_value & RCC_CFGR_HPRE_MASK) >> RCC_CFGR_HPRE_START; + if(s->RCC_CFGR_HPRE < 8) { + clktree_set_scale(s->HCLK, 1, 1); + } else { + clktree_set_scale(s->HCLK, 1, 2 * (s->RCC_CFGR_HPRE - 7)); + } + + /* SW */ + s->RCC_CFGR_SW = (new_value & RCC_CFGR_SW_MASK) >> RCC_CFGR_SW_START; + switch(s->RCC_CFGR_SW) { + case 0x0: + case 0x1: + case 0x2: + clktree_set_selected_input(s->SYSCLK, s->RCC_CFGR_SW); + break; + default: + hw_error("Invalid input selected for SYSCLK"); + break; + } +} + +/* Write the APB2 peripheral clock enable register + * Enables/Disables the peripheral clocks based on each bit. */ +static void stm32_rcc_RCC_APB2ENR_write(Stm32f1xxRcc *s, uint32_t new_value, + bool init) +{ + stm32_rcc_periph_enable(&(s->inherited), new_value, init, STM32F1XX_UART1, + RCC_APB2ENR_USART1EN_BIT); + stm32_rcc_periph_enable(&(s->inherited), new_value, init, STM32F1XX_GPIOE, + RCC_APB2ENR_IOPEEN_BIT); + stm32_rcc_periph_enable(&(s->inherited), new_value, init, STM32F1XX_GPIOD, + RCC_APB2ENR_IOPDEN_BIT); + stm32_rcc_periph_enable(&(s->inherited), new_value, init, STM32F1XX_GPIOC, + RCC_APB2ENR_IOPCEN_BIT); + stm32_rcc_periph_enable(&(s->inherited), new_value, init, STM32F1XX_GPIOB, + RCC_APB2ENR_IOPBEN_BIT); + stm32_rcc_periph_enable(&(s->inherited), new_value, init, STM32F1XX_GPIOA, + RCC_APB2ENR_IOPAEN_BIT); + stm32_rcc_periph_enable(&(s->inherited), new_value, init, STM32F1XX_AFIO, + RCC_APB2ENR_AFIOEN_BIT); + stm32_rcc_periph_enable(&(s->inherited), new_value, init, STM32F1XX_GPIOG, + RCC_APB2ENR_IOPGEN_BIT); + stm32_rcc_periph_enable(&(s->inherited), new_value, init, STM32F1XX_GPIOF, + RCC_APB2ENR_IOPFEN_BIT); + + s->RCC_APB2ENR = new_value & 0x0000fffd; +} + +/* Write the APB1 peripheral clock enable register + * Enables/Disables the peripheral clocks based on each bit. */ +static void stm32_rcc_RCC_APB1ENR_write(Stm32f1xxRcc *s, uint32_t new_value, + bool init) +{ + stm32_rcc_periph_enable(&(s->inherited), new_value, init, STM32F1XX_UART5, + RCC_APB1ENR_USART5EN_BIT); + stm32_rcc_periph_enable(&(s->inherited), new_value, init, STM32F1XX_UART4, + RCC_APB1ENR_USART4EN_BIT); + stm32_rcc_periph_enable(&(s->inherited), new_value, init, STM32F1XX_UART3, + RCC_APB1ENR_USART3EN_BIT); + stm32_rcc_periph_enable(&(s->inherited), new_value, init, STM32F1XX_UART2, + RCC_APB1ENR_USART2EN_BIT); + + s->RCC_APB1ENR = new_value & 0x00005e7d; +} + +static uint32_t stm32_rcc_RCC_BDCR_read(Stm32f1xxRcc *s) +{ + bool lseon = clktree_is_enabled(s->LSECLK); + + return GET_BIT_MASK(RCC_BDCR_LSERDY_BIT, lseon) | + GET_BIT_MASK(RCC_BDCR_LSEON_BIT, lseon); +} + +static void stm32_rcc_RCC_BDCR_write(Stm32f1xxRcc *s, uint32_t new_value, bool init) +{ + clktree_set_enabled(s->LSECLK, IS_BIT_SET(new_value, RCC_BDCR_LSEON_BIT)); +} + +/* Works the same way as stm32_rcc_RCC_CR_read */ +static uint32_t stm32_rcc_RCC_CSR_read(Stm32f1xxRcc *s) +{ + bool lseon = clktree_is_enabled(s->LSICLK); + + return GET_BIT_MASK(RCC_CSR_LSIRDY_BIT, lseon) | + GET_BIT_MASK(RCC_CSR_LSION_BIT, lseon); +} + +/* Works the same way as stm32_rcc_RCC_CR_write */ +static void stm32_rcc_RCC_CSR_write(Stm32f1xxRcc *s, uint32_t new_value, bool init) +{ + clktree_set_enabled(s->LSICLK, IS_BIT_SET(new_value, RCC_CSR_LSION_BIT)); +} + + + +static uint64_t stm32_rcc_readw(void *opaque, hwaddr offset) +{ + Stm32f1xxRcc *s = (Stm32f1xxRcc *)opaque; + + switch (offset) { + case RCC_CR_OFFSET: + return stm32_rcc_RCC_CR_read(s); + case RCC_CFGR_OFFSET: + return stm32_rcc_RCC_CFGR_read(s); + case RCC_CIR_OFFSET: + return 0; + case RCC_APB2RSTR_OFFSET: + case RCC_APB1RSTR_OFFSET: + case RCC_AHBENR_OFFSET: + STM32_NOT_IMPL_REG(offset, 4); + return 0; + case RCC_APB2ENR_OFFSET: + return s->RCC_APB2ENR; + case RCC_APB1ENR_OFFSET: + return s->RCC_APB1ENR; + case RCC_BDCR_OFFSET: + return stm32_rcc_RCC_BDCR_read(s); + case RCC_CSR_OFFSET: + return stm32_rcc_RCC_CSR_read(s); + case RCC_AHBRSTR: + STM32_NOT_IMPL_REG(offset, 4); + return 0; + case RCC_CFGR2_OFFSET: + STM32_NOT_IMPL_REG(offset, 4); + return 0; + default: + STM32_BAD_REG(offset, 4); + break; + } +} + + +static void stm32_rcc_writew(void *opaque, hwaddr offset, + uint64_t value) +{ + Stm32f1xxRcc *s = (Stm32f1xxRcc *)opaque; + + switch(offset) { + case RCC_CR_OFFSET: + stm32_rcc_RCC_CR_write(s, value, false); + break; + case RCC_CFGR_OFFSET: + stm32_rcc_RCC_CFGR_write(s, value, false); + break; + case RCC_CIR_OFFSET: + /* Allow a write but don't take any action */ + break; + case RCC_APB2RSTR_OFFSET: + case RCC_APB1RSTR_OFFSET: + case RCC_AHBENR_OFFSET: + STM32_NOT_IMPL_REG(offset, 4); + break; + case RCC_APB2ENR_OFFSET: + stm32_rcc_RCC_APB2ENR_write(s, value, false); + break; + case RCC_APB1ENR_OFFSET: + stm32_rcc_RCC_APB1ENR_write(s, value, false); + break; + case RCC_BDCR_OFFSET: + stm32_rcc_RCC_BDCR_write(s, value, false); + break; + case RCC_CSR_OFFSET: + stm32_rcc_RCC_CSR_write(s, value, false); + break; + case RCC_AHBRSTR: + STM32_NOT_IMPL_REG(offset, 4); + break; + case RCC_CFGR2_OFFSET: + STM32_NOT_IMPL_REG(offset, 4); + break; + default: + STM32_BAD_REG(offset, 4); + break; + } +} + +static uint64_t stm32_rcc_read(void *opaque, hwaddr offset, + unsigned size) +{ + switch(size) { + case 4: + return stm32_rcc_readw(opaque, offset); + default: + STM32_NOT_IMPL_REG(offset, size); + return 0; + } +} + +static void stm32_rcc_write(void *opaque, hwaddr offset, + uint64_t value, unsigned size) +{ + switch(size) { + case 4: + stm32_rcc_writew(opaque, offset, value); + break; + default: + STM32_NOT_IMPL_REG(offset, size); + break; + } +} + +static const MemoryRegionOps stm32_rcc_ops = { + .read = stm32_rcc_read, + .write = stm32_rcc_write, + .endianness = DEVICE_NATIVE_ENDIAN +}; + + +static void stm32_rcc_reset(DeviceState *dev) +{ + Stm32f1xxRcc *s = STM32F1XX_RCC(dev); + + stm32_rcc_RCC_CR_write(s, 0x00000083, true); + stm32_rcc_RCC_CFGR_write(s, 0x00000000, true); + stm32_rcc_RCC_APB2ENR_write(s, 0x00000000, true); + stm32_rcc_RCC_APB1ENR_write(s, 0x00000000, true); + stm32_rcc_RCC_BDCR_write(s, 0x00000000, true); + stm32_rcc_RCC_CSR_write(s, 0x0c000000, true); +} + +/* IRQ handler to handle updates to the HCLK frequency. + * This updates the SysTick scales. */ +static void stm32_rcc_hclk_upd_irq_handler(void *opaque, int n, int level) +{ + Stm32f1xxRcc *s = (Stm32f1xxRcc *)opaque; + + uint32_t hclk_freq = 0; + uint32_t ext_ref_freq = 0; + + hclk_freq = clktree_get_output_freq(s->HCLK); + + /* Only update the scales if the frequency is not zero. */ + if (hclk_freq > 0) { + ext_ref_freq = hclk_freq / 8; + + /* Update the scales - these are the ratio of QEMU clock ticks + * (which is an unchanging number independent of the CPU frequency) to + * system/external clock ticks. + */ + system_clock_scale = NANOSECONDS_PER_SECOND / hclk_freq; + } + +#ifdef DEBUG_STM32_RCC + DPRINTF("Cortex SYSTICK frequency set to %lu Hz (scale set to %d).\n", + (unsigned long)hclk_freq, system_clock_scale); +#endif +} + + + + +/* DEVICE INITIALIZATION */ + +/* Set up the clock tree */ +static void stm32_rcc_init_clk(Stm32f1xxRcc *s) +{ + int i; + qemu_irq *hclk_upd_irq = + qemu_allocate_irqs(stm32_rcc_hclk_upd_irq_handler, s, 1); + Clk HSI_DIV2, HSE_DIV2; + + /* Make sure all the peripheral clocks are null initially. + * This will be used for error checking to make sure + * an invalid clock is not referenced (not all of the + * indexes will be used). + */ + for(i = 0; i < STM32F1XX_PERIPH_COUNT; i++) { + s->PERIPHCLK[i] = NULL; + } + + /* Initialize clocks */ + /* Source clocks are initially disabled, which represents + * a disabled oscillator. Enabling the clock represents + * turning the clock on. + */ + s->HSICLK = clktree_create_src_clk("HSI", HSI_FREQ, false); + s->LSICLK = clktree_create_src_clk("LSI", LSI_FREQ, false); + s->HSECLK = clktree_create_src_clk("HSE", s->osc_freq, false); + s->LSECLK = clktree_create_src_clk("LSE", s->osc32_freq, false); + + HSI_DIV2 = clktree_create_clk("HSI/2", 1, 2, true, CLKTREE_NO_MAX_FREQ, 0, + s->HSICLK, NULL); + HSE_DIV2 = clktree_create_clk("HSE/2", 1, 2, true, CLKTREE_NO_MAX_FREQ, 0, + s->HSECLK, NULL); + + s->PLLXTPRECLK = clktree_create_clk("PLLXTPRE", 1, 1, true, CLKTREE_NO_MAX_FREQ, CLKTREE_NO_INPUT, + s->HSECLK, HSE_DIV2, NULL); + /* PLLCLK contains both the switch and the multiplier, which are shown as + * two separate components in the clock tree diagram. + */ + s->PLLCLK = clktree_create_clk("PLLCLK", 0, 1, false, 72000000, CLKTREE_NO_INPUT, + HSI_DIV2, s->PLLXTPRECLK, NULL); + + s->SYSCLK = clktree_create_clk("SYSCLK", 1, 1, true, 72000000, CLKTREE_NO_INPUT, + s->HSICLK, s->HSECLK, s->PLLCLK, NULL); + + s->HCLK = clktree_create_clk("HCLK", 0, 1, true, 72000000, 0, + s->SYSCLK, NULL); + clktree_adduser(s->HCLK, hclk_upd_irq[0]); + + s->PCLK1 = clktree_create_clk("PCLK1", 0, 1, true, 36000000, 0, + s->HCLK, NULL); + s->PCLK2 = clktree_create_clk("PCLK2", 0, 1, true, 72000000, 0, + s->HCLK, NULL); + + /* Peripheral clocks */ + s->PERIPHCLK[STM32F1XX_GPIOA] = clktree_create_clk("GPIOA", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK2, NULL); + s->PERIPHCLK[STM32F1XX_GPIOB] = clktree_create_clk("GPIOB", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK2, NULL); + s->PERIPHCLK[STM32F1XX_GPIOC] = clktree_create_clk("GPIOC", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK2, NULL); + s->PERIPHCLK[STM32F1XX_GPIOD] = clktree_create_clk("GPIOD", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK2, NULL); + s->PERIPHCLK[STM32F1XX_GPIOE] = clktree_create_clk("GPIOE", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK2, NULL); + s->PERIPHCLK[STM32F1XX_GPIOF] = clktree_create_clk("GPIOF", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK2, NULL); + s->PERIPHCLK[STM32F1XX_GPIOG] = clktree_create_clk("GPIOG", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK2, NULL); + + s->PERIPHCLK[STM32F1XX_AFIO] = clktree_create_clk("AFIO", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK2, NULL); + + s->PERIPHCLK[STM32F1XX_UART1] = clktree_create_clk("UART1", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK2, NULL); + s->PERIPHCLK[STM32F1XX_UART2] = clktree_create_clk("UART2", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK1, NULL); + s->PERIPHCLK[STM32F1XX_UART3] = clktree_create_clk("UART3", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK1, NULL); + s->PERIPHCLK[STM32F1XX_UART4] = clktree_create_clk("UART4", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK1, NULL); + s->PERIPHCLK[STM32F1XX_UART5] = clktree_create_clk("UART5", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK1, NULL); +} + +static void stm32_rcc_init(Object *obj) +{ + SysBusDevice *sbd = SYS_BUS_DEVICE(obj); + Stm32f1xxRcc *s = STM32F1XX_RCC(obj); + + memory_region_init_io(&s->iomem, OBJECT(s), &stm32_rcc_ops, s, + "rcc", 0x1000); + + sysbus_init_mmio(sbd, &s->iomem); + + sysbus_init_irq(sbd, &s->irq); + + stm32_rcc_init_clk(s); +} + + +static Property stm32_rcc_properties[] = { + DEFINE_PROP_UINT32("osc_freq", Stm32Rcc, osc_freq, 0), + DEFINE_PROP_UINT32("osc32_freq", Stm32Rcc, osc32_freq, 0), + DEFINE_PROP_END_OF_LIST() +}; + + +static void stm32_rcc_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + + dc->reset = stm32_rcc_reset; + device_class_set_props(dc, stm32_rcc_properties); +} + +static TypeInfo stm32_rcc_info = { + .name = TYPE_STM32F1XX_RCC, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(Stm32f1xxRcc), + .instance_init=stm32_rcc_init, + .class_init = stm32_rcc_class_init +}; + +static void stm32_rcc_register_types(void) +{ + type_register_static(&stm32_rcc_info); +} + +type_init(stm32_rcc_register_types) diff --git a/hw/arm/stm32f1xx_rcc.h b/hw/arm/stm32f1xx_rcc.h new file mode 100644 index 0000000000000..fe9bb9b96e036 --- /dev/null +++ b/hw/arm/stm32f1xx_rcc.h @@ -0,0 +1,51 @@ +#include "hw/sysbus.h" +#include "hw/arm/stm32_clktree.h" +#include "stm32f1xx.h" +#include "stm32_rcc.h" + +typedef struct Stm32f1xxRcc { + /* Inherited */ + union { + Stm32Rcc inherited; + struct { + /* Inherited */ + SysBusDevice busdev; + + /* Properties */ + uint32_t osc_freq; + uint32_t osc32_freq; + + /* Private */ + MemoryRegion iomem; + qemu_irq irq; + }; + }; + + Clk PERIPHCLK[STM32F1XX_PERIPH_COUNT], // MUST be first field after `inherited`, because Stm32Rcc's last field aliases this array + HSICLK, + HSECLK, + LSECLK, + LSICLK, + SYSCLK, + PLLXTPRECLK, + PLLCLK, + HCLK, /* Output from AHB Prescaler */ + PCLK1, /* Output from APB1 Prescaler */ + PCLK2; /* Output from APB2 Prescaler */ + + /* Register Values */ + uint32_t + RCC_APB1ENR, + RCC_APB2ENR; + + /* Register Field Values */ + uint32_t + RCC_CFGR_PLLMUL, + RCC_CFGR_PLLXTPRE, + RCC_CFGR_PLLSRC, + RCC_CFGR_PPRE1, + RCC_CFGR_PPRE2, + RCC_CFGR_HPRE, + RCC_CFGR_SW; + +} Stm32f1xxRcc; diff --git a/hw/arm/stm32f2xx.c b/hw/arm/stm32f2xx.c new file mode 100644 index 0000000000000..9d89c13790f53 --- /dev/null +++ b/hw/arm/stm32f2xx.c @@ -0,0 +1,390 @@ +/* + * STM32 Microcontroller + * + * Copyright (C) 2010 Andre Beckus + * + * Implementation based on ST Microelectronics "RM0008 Reference Manual Rev 10" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "sysemu/runstate.h" +#include "hw/arm/stm32.h" +#include "stm32f2xx.h" +#include "exec/address-spaces.h" +#include "exec/memory.h" +#include "hw/ssi/ssi.h" +#include "hw/irq.h" +#include "hw/block/flash.h" +#include "sysemu/blockdev.h" // drive_get +#include "hw/qdev-properties.h" +#include "../../target/arm/cpu.h" + +static const char *stm32f2xx_periph_name_arr[] = { + ENUM_STRING(STM32_UART1), + ENUM_STRING(STM32_UART2), + ENUM_STRING(STM32_UART3), + ENUM_STRING(STM32_UART4), + ENUM_STRING(STM32_UART5), + ENUM_STRING(STM32_UART6), + + ENUM_STRING(STM32_SPI1), + ENUM_STRING(STM32_SPI2), + ENUM_STRING(STM32_SPI3), + + ENUM_STRING(STM32_I2C1), + ENUM_STRING(STM32_I2C2), + ENUM_STRING(STM32_I2C3), + + ENUM_STRING(STM32_TIM1), + ENUM_STRING(STM32_TIM2), + ENUM_STRING(STM32_TIM3), + ENUM_STRING(STM32_TIM4), + ENUM_STRING(STM32_TIM5), + ENUM_STRING(STM32_TIM6), + ENUM_STRING(STM32_TIM7), + ENUM_STRING(STM32_TIM8), + ENUM_STRING(STM32_TIM9), + ENUM_STRING(STM32_TIM10), + ENUM_STRING(STM32_TIM11), + ENUM_STRING(STM32_TIM12), + ENUM_STRING(STM32_TIM13), + ENUM_STRING(STM32_TIM14), + + ENUM_STRING(STM32_GPIOA), + ENUM_STRING(STM32_GPIOB), + ENUM_STRING(STM32_GPIOC), + ENUM_STRING(STM32_GPIOD), + ENUM_STRING(STM32_GPIOE), + ENUM_STRING(STM32_GPIOF), + ENUM_STRING(STM32_GPIOG), + ENUM_STRING(STM32_GPIOH), + ENUM_STRING(STM32_GPIOI), + ENUM_STRING(STM32_GPIOJ), + ENUM_STRING(STM32_GPIOK), + + ENUM_STRING(STM32_PERIPH_COUNT) +}; + +/* Init STM32F2XX CPU and memory. + flash_size and sram_size are in kb. */ + +static uint64_t kernel_load_translate_fn(void *opaque, uint64_t from_addr) { + if (from_addr == STM32_FLASH_ADDR_START) { + return 0x00000000; + } + return from_addr; +} + +static +void do_sys_reset(void *opaque, int n, int level) { + if (level) { + qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); + } +} + +void stm32f2xx_init( + ram_addr_t flash_size, + ram_addr_t ram_size, + const char *kernel_filename, + Stm32Gpio **stm32_gpio, + Stm32Uart **stm32_uart, + Stm32Timer **stm32_timer, + DeviceState **stm32_rtc, + uint32_t osc_freq, + uint32_t osc32_freq, + struct stm32f2xx *stm, + ARMCPU **cpu) { + MemoryRegion *address_space_mem = get_system_memory(); + DriveInfo *dinfo; + DeviceState *nvic; + int i; + + Object * stm32_container = container_get(qdev_get_machine(), "/stm32"); + + nvic = armv7m_translated_init( + stm32_container, + address_space_mem, + flash_size * 1024, + ram_size * 1024, + 128, /* default number of irqs */ + kernel_filename, + kernel_load_translate_fn, + NULL, + ARM_CPU_TYPE_NAME("cortex-m3"), + cpu); + + qdev_connect_gpio_out_named(nvic, "SYSRESETREQ", 0, + qemu_allocate_irq(&do_sys_reset, NULL, 0)); + + dinfo = drive_get(IF_PFLASH, 0, 0); + if (dinfo) { + f2xx_flash_register(blk_by_legacy_dinfo(dinfo), 1 * 0x08000000, flash_size * 1024); + } + + // Create alias at 0x08000000 for internal flash, that is hard-coded at 0x00000000 in armv7m.c: + // TODO: Let BOOT0 and BOOT1 configuration pins determine what is mapped at 0x00000000, see SYSCFG_MEMRMP. + + MemoryRegionSection mrs = memory_region_find(address_space_mem, STM32_FLASH_ADDR_START, WORD_ACCESS_SIZE); + MemoryRegion *flash_alias = g_new(MemoryRegion, 1); + memory_region_init_alias( + flash_alias, + NULL, + "stm32f2xx.flash.alias", + mrs.mr, + 0, + flash_size * 1024); + memory_region_add_subregion(address_space_mem, 0, flash_alias); + + DeviceState *rcc_dev = qdev_create(NULL, TYPE_STM32F2XX_RCC); + qdev_prop_set_uint32(rcc_dev, "osc_freq", osc_freq); + qdev_prop_set_uint32(rcc_dev, "osc32_freq", osc32_freq); + object_property_add_child(stm32_container, "rcc", OBJECT(rcc_dev), NULL); + stm32_init_periph(rcc_dev, STM32_RCC_PERIPH, 0x40023800, + qdev_get_gpio_in(nvic, STM32_RCC_IRQ)); + + DeviceState **gpio_dev = (DeviceState **) g_malloc0(sizeof(DeviceState *) * STM32F2XX_GPIO_COUNT); + for (i = 0; i < STM32F2XX_GPIO_COUNT; i++) { + stm32_periph_t periph = STM32_GPIOA + i; + gpio_dev[i] = qdev_create(NULL, TYPE_STM32F2XX_GPIO); + gpio_dev[i]->id = stm32f2xx_periph_name_arr[periph]; + qdev_prop_set_int32(gpio_dev[i], "periph", periph); +// qdev_prop_set_ptr(gpio_dev[i], "stm32_rcc", rcc_dev); + stm32_init_periph(gpio_dev[i], periph, 0x40020000 + (i * 0x400), NULL); + stm32_gpio[i] = (Stm32Gpio *) gpio_dev[i]; + } + + /* Connect the WKUP pin (GPIO A, pin 0) to the NVIC's WKUP handler */ +//NVIC qemu_irq nvic_wake_irq = qdev_get_gpio_in_named(DEVICE((*cpu)->env.nvic), "wakeup_in", 0); +//NVIC f2xx_gpio_wake_set((stm32f2xx_gpio *)(stm32_gpio[STM32_GPIOA_INDEX]), 0, nvic_wake_irq); + + + /* EXTI */ + DeviceState *exti_dev = qdev_create(NULL, TYPE_STM32_EXTI); + qdev_prop_set_ptr(exti_dev, "stm32_gpio", gpio_dev); + stm32_init_periph(exti_dev, STM32_EXTI_PERIPH, 0x40013C00, NULL); + SysBusDevice *exti_busdev = SYS_BUS_DEVICE(exti_dev); + /* IRQs from EXTI to NVIC */ + sysbus_connect_irq(exti_busdev, 0, qdev_get_gpio_in(nvic, STM32_EXTI0_IRQ)); + sysbus_connect_irq(exti_busdev, 1, qdev_get_gpio_in(nvic, STM32_EXTI1_IRQ)); + sysbus_connect_irq(exti_busdev, 2, qdev_get_gpio_in(nvic, STM32_EXTI2_IRQ)); + sysbus_connect_irq(exti_busdev, 3, qdev_get_gpio_in(nvic, STM32_EXTI3_IRQ)); + sysbus_connect_irq(exti_busdev, 4, qdev_get_gpio_in(nvic, STM32_EXTI4_IRQ)); + sysbus_connect_irq(exti_busdev, 5, qdev_get_gpio_in(nvic, STM32_EXTI9_5_IRQ)); + sysbus_connect_irq(exti_busdev, 6, qdev_get_gpio_in(nvic, STM32_EXTI15_10_IRQ)); + sysbus_connect_irq(exti_busdev, 7, qdev_get_gpio_in(nvic, STM32_PVD_IRQ)); + sysbus_connect_irq(exti_busdev, 8, qdev_get_gpio_in(nvic, STM32_RTCAlarm_IRQ)); + sysbus_connect_irq(exti_busdev, 9, qdev_get_gpio_in(nvic, STM32_OTG_FS_WKUP_IRQ)); + sysbus_connect_irq(exti_busdev, 10, qdev_get_gpio_in(nvic, STM32_ETH_WKUP_IRQ)); + sysbus_connect_irq(exti_busdev, 11, qdev_get_gpio_in(nvic, STM32_OTG_FS_WKUP_IRQ)); + sysbus_connect_irq(exti_busdev, 12, qdev_get_gpio_in(nvic, STM32_TAMP_STAMP_IRQ)); + sysbus_connect_irq(exti_busdev, 13, qdev_get_gpio_in(nvic, STM32_RTC_WKUP_IRQ)); + + DeviceState *syscfg_dev = qdev_create(NULL, TYPE_STM32F2XX_SYSCFG); + qdev_prop_set_ptr(syscfg_dev, "stm32_rcc", rcc_dev); + qdev_prop_set_ptr(syscfg_dev, "stm32_exti", exti_dev); + qdev_prop_set_bit(syscfg_dev, "boot0", 0); + qdev_prop_set_bit(syscfg_dev, "boot1", 0); + stm32_init_periph(syscfg_dev, STM32_SYSCFG, 0x40013800, NULL); + + struct { + uint32_t addr; + uint8_t irq_idx; + } const uart_desc[] = { + {0x40011000, STM32_UART1_IRQ}, + {0x40004400, STM32_UART2_IRQ}, + {0x40004800, STM32_UART3_IRQ}, + {0x40004C00, STM32_UART4_IRQ}, + {0x40005000, STM32_UART5_IRQ}, + {0x40011400, STM32_UART6_IRQ}, + }; + for (i = 0; i < ARRAY_LENGTH(uart_desc); ++i) { + assert(i < STM32F2XX_UART_COUNT); + const stm32_periph_t periph = STM32_UART1 + i; + DeviceState *uart_dev = qdev_create(NULL, TYPE_STM32_UART); + uart_dev->id = stm32f2xx_periph_name_arr[periph]; + qdev_prop_set_int32(uart_dev, "periph", periph); + qdev_prop_set_ptr(uart_dev, "stm32_rcc", rcc_dev); +// qdev_prop_set_ptr(uart_dev, "stm32_gpio", gpio_dev); +// qdev_prop_set_ptr(uart_dev, "stm32_afio", afio_dev); +// qdev_prop_set_ptr(uart_dev, "stm32_check_tx_pin_callback", (void *)stm32_afio_uart_check_tx_pin_callback); + stm32_init_periph(uart_dev, periph, uart_desc[i].addr, + qdev_get_gpio_in(nvic, uart_desc[i].irq_idx)); + stm32_uart[i] = (Stm32Uart *) uart_dev; + } + + + /* SPI */ + struct { + uint32_t addr; + uint8_t irq_idx; + } const spi_desc[] = { + {0x40013000, STM32_SPI1_IRQ}, + {0x40003800, STM32_SPI2_IRQ}, + {0x40003CD0, STM32_SPI3_IRQ}, + }; + for (i = 0; i < ARRAY_LENGTH(spi_desc); ++i) { + const stm32_periph_t periph = STM32_SPI1 + i; + stm->spi_dev[i] = qdev_create(NULL, TYPE_STM32F2XX_SPI); + stm->spi_dev[i]->id = stm32f2xx_periph_name_arr[periph]; + qdev_prop_set_int32(stm->spi_dev[i], "periph", periph); + stm32_init_periph(stm->spi_dev[i], periph, spi_desc[i].addr, + qdev_get_gpio_in(nvic, spi_desc[i].irq_idx)); + + } + +// stm32_uart[STM32_UART1_INDEX] = stm32_create_uart_dev(STM32_UART1, rcc_dev, gpio_dev, afio_dev, 0x40011000, qdev_get_gpio_in(nvic, STM32_UART1_IRQ]); +// stm32_uart[STM32_UART2_INDEX] = stm32_create_uart_dev(STM32_UART2, rcc_dev, gpio_dev, afio_dev, 0x40004400, qdev_get_gpio_in(nvic, STM32_UART2_IRQ]); +// stm32_uart[STM32_UART3_INDEX] = stm32_create_uart_dev(STM32_UART3, rcc_dev, gpio_dev, afio_dev, 0x40004800, qdev_get_gpio_in(nvic, STM32_UART3_IRQ]); +// stm32_uart[STM32_UART4_INDEX] = stm32_create_uart_dev(STM32_UART4, rcc_dev, gpio_dev, afio_dev, 0x40004C00, qdev_get_gpio_in(nvic, STM32_UART4_IRQ]); +// stm32_uart[STM32_UART5_INDEX] = stm32_create_uart_dev(STM32_UART5, rcc_dev, gpio_dev, afio_dev, 0x40005000, qdev_get_gpio_in(nvic, STM32_UART5_IRQ]); +// stm32_uart[STM32_UART6_INDEX] = stm32_create_uart_dev(STM32_UART6, rcc_dev, gpio_dev, afio_dev, 0x40011400, qdev_get_gpio_in(nvic, STM32_UART6_IRQ]); + DeviceState *adc_dev = qdev_create(NULL, TYPE_STM32_ADC); + stm32_init_periph(adc_dev, STM32_ADC1, 0x40012000, NULL); + + /* RTC real time clock */ + DeviceState *rtc_dev = qdev_create(NULL, TYPE_STM32F2XX_RTC); + *stm32_rtc = rtc_dev; + stm32_init_periph(rtc_dev, STM32_RTC, 0x40002800, NULL); + // Alarm A + sysbus_connect_irq(SYS_BUS_DEVICE(rtc_dev), 0, qdev_get_gpio_in(exti_dev, 17)); + // Alarm B + sysbus_connect_irq(SYS_BUS_DEVICE(rtc_dev), 1, qdev_get_gpio_in(exti_dev, 17)); + // Wake up timer + sysbus_connect_irq(SYS_BUS_DEVICE(rtc_dev), 2, qdev_get_gpio_in(exti_dev, 22)); + + /* Power management */ + DeviceState *pwr_dev = qdev_create(NULL, TYPE_STM32F2XX_PWR); + stm32_init_periph(pwr_dev, STM32_RTC, 0x40007000, NULL); +//NVIC qdev_prop_set_ptr((*cpu)->env.nvic, "stm32_pwr", pwr_dev); + + +#define dummy_dev(name, start, size) do {\ + DeviceState *dummy = qdev_create(NULL, TYPE_STM32F2XX_DUMMY); \ + qdev_prop_set_ptr(dummy, "name", (void *)name); \ + qdev_prop_set_int32(dummy, "size", size); \ + qdev_init_nofail(dummy); \ + sysbus_mmio_map(SYS_BUS_DEVICE(dummy), 0, start); \ +} while (0) + + /* Timers */ + struct { + uint8_t timer_num; + uint32_t addr; + uint8_t irq_idx; + } const timer_desc[] = { + {2, 0x40000000, STM32_TIM2_IRQ}, + {3, 0x40000400, STM32_TIM3_IRQ}, + {4, 0x40000800, STM32_TIM4_IRQ}, + {5, 0x40000C00, STM32_TIM5_IRQ}, + {6, 0x40001000, STM32_TIM6_IRQ}, + {7, 0x40001400, STM32_TIM7_IRQ}, + {9, 0x40014000, STM32_TIM1_BRK_TIM9_IRQ}, + {10, 0x40014400, STM32_TIM1_UP_TIM10_IRQ}, + {11, 0x40014800, STM32_TIM1_TRG_COM_TIM11_IRQ}, + {12, 0x40001800, STM32_TIM8_BRK_TIM12_IRQ}, + {13, 0x40001C00, STM32_TIM8_UP_TIM13_IRQ}, + {14, 0x40002000, STM32_TIM8_TRG_COMM_TIM14_IRQ}, + }; + for (i = 0; i < ARRAY_LENGTH(timer_desc); ++i) { + assert(i < STM32F2XX_TIM_COUNT); + const stm32_periph_t periph = STM32_TIM1 + timer_desc[i].timer_num - 1; + + DeviceState *timer = qdev_create(NULL, TYPE_STM32F2XX_TIM); + timer->id = stm32f2xx_periph_name_arr[periph]; + stm32_init_periph(timer, periph, timer_desc[i].addr, qdev_get_gpio_in(nvic, timer_desc[i].irq_idx)); + stm32_timer[timer_desc[i].timer_num - 1] = (Stm32Timer *) timer; + } + + dummy_dev("Reserved", 0x40002400, 0x400); + // + dummy_dev("WWDG", 0x40002C00, 0x400); + dummy_dev("IWDG", 0x40003000, 0x400); + dummy_dev("Reserved", 0x40003400, 0x400); + // + // + dummy_dev("Reserved", 0x40004000, 0x400); + // + // + // + // + + DeviceState *i2c1 = qdev_create(NULL, TYPE_STM32F2XX_I2C); + i2c1->id = stm32f2xx_periph_name_arr[STM32_I2C1]; + qdev_prop_set_int32(i2c1, "periph", STM32_I2C1); + stm32_init_periph(i2c1, STM32_I2C1, 0x40005400, qdev_get_gpio_in(nvic, STM32_I2C1_EV_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(i2c1), 1, qdev_get_gpio_in(nvic, STM32_I2C1_ER_IRQ)); + + DeviceState *i2c2 = qdev_create(NULL, TYPE_STM32F2XX_I2C); + i2c2->id = stm32f2xx_periph_name_arr[STM32_I2C2]; + qdev_prop_set_int32(i2c2, "periph", STM32_I2C2); + stm32_init_periph(i2c2, STM32_I2C2, 0x40005800, qdev_get_gpio_in(nvic, STM32_I2C2_EV_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(i2c2), 1, qdev_get_gpio_in(nvic, STM32_I2C2_ER_IRQ)); + + DeviceState *i2c3 = qdev_create(NULL, TYPE_STM32F2XX_I2C); + i2c3->id = stm32f2xx_periph_name_arr[STM32_I2C3]; + qdev_prop_set_int32(i2c3, "periph", STM32_I2C3); + stm32_init_periph(i2c3, STM32_I2C2, 0x40005C00, qdev_get_gpio_in(nvic, STM32_I2C3_EV_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(i2c3), 1, qdev_get_gpio_in(nvic, STM32_I2C3_ER_IRQ)); + + dummy_dev("OTP", 0x1FFF7800, 0x1FFF7A0F - 0x1FFF7800 + 1); + dummy_dev("FLASH_R", 0x40023C00, 0x400); + dummy_dev("DBGMCU", 0xe0042000, 0x100); + dummy_dev("U_ID", 0x1FFF7A10, 96 / 8); + + dummy_dev("Reserved", 0x40006000, 0x400); + dummy_dev("BxCAN1", 0x40006400, 0x400); + dummy_dev("BxCAN2", 0x40006800, 0x400); + dummy_dev("Reserved", 0x40006C00, 0x400); + // PWR + dummy_dev("DAC1/DAC2", 0x40007400, 0x400); + dummy_dev("Reserved", 0x40007800, 0x400); + dummy_dev("Reserved", 0x40008000, 0x8000); + dummy_dev("TIM1/PWM1", 0x40010000, 0x400); + dummy_dev("TIM8/PWM2", 0x40010400, 0x400); + // USART1 + // USART6 + dummy_dev("Reserved", 0x40011800, 0x800); + // ADC1 - ADC2 - ADC3 + // skipped reserved from here on + dummy_dev("SDIO", 0x40012C00, 0x400); + // SPI1 + // SYSCFG needed + + DeviceState *crc = qdev_create(NULL, TYPE_STM32F2XX_CRC); + stm32_init_periph(crc, STM32_CRC, 0x40023000, NULL); + + DeviceState *dma1 = qdev_create(NULL, TYPE_STM32F2XX_DMA); + stm32_init_periph(dma1, STM32_DMA1, 0x40026000, NULL); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 0, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM0_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 1, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM1_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 2, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM2_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 3, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM3_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 4, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM4_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 5, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM5_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 6, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM6_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 7, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM7_IRQ)); + + DeviceState *dma2 = qdev_create(NULL, TYPE_STM32F2XX_DMA); + stm32_init_periph(dma2, STM32_DMA2, 0x40026400, NULL); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 0, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM0_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 1, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM1_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 2, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM2_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 3, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM3_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 4, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM4_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 5, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM5_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 6, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM6_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 7, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM7_IRQ)); +} diff --git a/hw/arm/stm32f2xx.h b/hw/arm/stm32f2xx.h new file mode 100644 index 0000000000000..2f0629224cd59 --- /dev/null +++ b/hw/arm/stm32f2xx.h @@ -0,0 +1,11 @@ +#include "hw/arm/stm32.h" + +#define STM32F2XX_GPIO_COUNT (STM32_GPIOI - STM32_GPIOA + 1) +#define STM32F2XX_SPI_COUNT 3 + +#define STM32F2XX_UART_COUNT 6 +#define STM32F2XX_TIM_COUNT 14 + +struct stm32f2xx { + DeviceState *spi_dev[STM32F2XX_SPI_COUNT]; +}; diff --git a/hw/arm/stm32f2xx_adc.c b/hw/arm/stm32f2xx_adc.c new file mode 100644 index 0000000000000..c686e885e245d --- /dev/null +++ b/hw/arm/stm32f2xx_adc.c @@ -0,0 +1,249 @@ +/*- + * Copyright (c) 2013 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +/* + * QEMU model of the stm32f2xx ADC. + */ + +#include "qemu/osdep.h" +#include "hw/sysbus.h" +#include "hw/arm/stm32.h" +#include "hw/qdev-properties.h" + +/* Per-ADC registers */ +#define R_ADC_SR (0x00 / 4) +#define R_ADC_SR_MASK 0x3f +#define R_ADC_SR_EOC (1 << 1) +#define R_ADC_CR1 (0x04 / 4) +#define R_ADC_CR2 (0x08 / 4) +#define R_ADC_SMPR1 (0x0c / 4) +#define R_ADC_SMPR2 (0x10 / 4) +#define R_ADC_JOFRx (0x14 / 4) +#define R_ADC_HTR (0x24 / 4) +#define R_ADC_HTR_RESET 0x00000fff +#define R_ADC_LTR (0x28 / 4) +#define R_ADC_SQR1 (0x2c / 4) +#define R_ADC_SQR2 (0x30 / 4) +#define R_ADC_SQR3 (0x34 / 4) +#define R_ADC_JSQR (0x38 / 4) +#define R_ADC_JDRx (0x3c / 4) +#define R_ADC_DR (0x4c / 4) +#define R_ADC_MAX (0x50 / 4) + +/* Common registers */ +#define R_ADC_CSR (0x00 / 4) +#define R_ADC_CCR (0x04 / 4) +#define R_ADC_CDR (0x08 / 4) +#define R_ADC_CMAX (0x0c / 4) + +typedef struct { + SysBusDevice busdev; + MemoryRegion iomem; + + uint32_t regs[3][R_ADC_MAX]; + uint32_t ccr; +} stm32_adc; + +static uint64_t +stm32f2xx_adc_common_read(stm32_adc *s, hwaddr offset, unsigned int size) +{ + uint32_t r = 0; + int i; + + offset >>= 2; + switch(offset) { + case R_ADC_CSR: + for (i = 0; i < 3; i++) { + r |= (s->regs[i][R_ADC_SR] & R_ADC_SR_MASK) << 8 * i; + } + break; + case R_ADC_CCR: + r = s->ccr; + break; + default: + qemu_log_mask(LOG_UNIMP, "f2xx adc unimplemented read reg 0x%x\n", + (int)offset << 2); + } + return 0; +} + +static uint64_t +stm32f2xx_adc_read(void *arg, hwaddr offset, unsigned int size) +{ + stm32_adc *s = arg; + uint32_t r; + int unit = (offset & 0x300) >> 8; + + if (unit == 3) { + return stm32f2xx_adc_common_read(s, offset - 0x300, size); + } + offset = (offset & 0xFF) >> 2; + r = s->regs[unit][offset]; + switch (offset) { + case R_ADC_SR: + r |= R_ADC_SR_EOC; + break; + + /* Registers with standard read behaviour. */ + case R_ADC_CR1: + case R_ADC_CR2: + case R_ADC_SMPR1: + case R_ADC_SMPR2: + case R_ADC_SQR1: + case R_ADC_SQR2: + case R_ADC_SQR3: + break; + case R_ADC_DR: + break; /* Hack */ + default: + qemu_log_mask(LOG_UNIMP, "adc %d reg %x return 0x%x\n", unit, (int)offset << 2, r); + } + return r; +} + +static void +stm32f2xx_adc_common_write(stm32_adc *s, hwaddr offset, uint64_t data, + unsigned int size) +{ + offset >>= 2; + switch (offset) { + case R_ADC_CSR: + case R_ADC_CDR: + break; + case R_ADC_CCR: + //printf("ccr set 0x%x\n", (int)data); + s->ccr = data; + break; + default: + qemu_log_mask(LOG_UNIMP, "f2xx adc unimplemented write reg 0x%x\n", + (int)offset << 2); + } +} + +static void +stm32f2xx_adc_write(void *arg, hwaddr offset, uint64_t data, unsigned int size) +{ + stm32_adc *s = arg; + int unit = (offset & 0x300) >> 8; + + if (unit == 3) { + stm32f2xx_adc_common_write(s, offset - 0x300, data, size); + return; + } + offset = (offset & 0xFF) >> 2; + switch (offset) { + case R_ADC_SR: + s->regs[unit][offset] &= data; /* rc_w0 */ + break; + case R_ADC_CR1: + s->regs[unit][offset] = data; + if (data != 0) { + qemu_log_mask(LOG_UNIMP, "f2xx adc unimplemented CR1 write 0x%08x\n", (unsigned int)data); + } + break; + case R_ADC_CR2: + if (data & ~0x40000001) { + qemu_log_mask(LOG_UNIMP, "f2xx adc unimplemented CR2 write 0x%08x\n", (unsigned int)data); + } + s->regs[unit][offset] = data; + break; + case R_ADC_SMPR1: /* XXX Ignore sampling time setting. */ + case R_ADC_SQR1: + case R_ADC_SQR2: + case R_ADC_SQR3: + s->regs[unit][offset] = data; + break; + case R_ADC_DR: + qemu_log_mask(LOG_GUEST_ERROR, "f2xx adc write to r/o data reg\n"); + break; + default: + qemu_log_mask(LOG_UNIMP, "adc %d reg %x write 0x%x\n", unit, + (int)offset << 2, (int)data); + if (offset < R_ADC_MAX) { + s->regs[unit][offset] = data; + } + break; + } +} + +static const MemoryRegionOps stm32f2xx_adc_ops = { + .read = stm32f2xx_adc_read, + .write = stm32f2xx_adc_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .valid = { + .min_access_size = 4, /* XXX actually 1 */ + .max_access_size = 4 + } +}; + +static void +f2xx_adc_reset(DeviceState *ds) +{ + stm32_adc *s = STM32_ADC(ds); + + /* Hack for low ambient light level (2500) */ + s->regs[0][R_ADC_DR] = 2730; + s->regs[1][R_ADC_DR] = 2500; +} + +static void +stm32f2xx_adc_init(Object *obj) +{ + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + stm32_adc *s = STM32_ADC(obj); + +#if 0 + sysbus_init_irq(dev, &s->irq); +#endif + + memory_region_init_io(&s->iomem, OBJECT(s), &stm32f2xx_adc_ops, s, "adc", 0x400); + sysbus_init_mmio(dev, &s->iomem); +} + +static Property stm32f2xx_adc_properties[] = { + DEFINE_PROP_END_OF_LIST() +}; + +static void +stm32f2xx_adc_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + SysBusDeviceClass *sc = SYS_BUS_DEVICE_CLASS(klass); + + dc->reset = f2xx_adc_reset; + device_class_set_props(dc, stm32f2xx_adc_properties); +} + +static const TypeInfo stm32f2xx_adc_info = { + .name = TYPE_STM32_ADC, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(stm32_adc), + .instance_init = stm32f2xx_adc_init, + .class_init = stm32f2xx_adc_class_init +}; + +static void +stm32f2xx_adc_register_types(void) +{ + type_register_static(&stm32f2xx_adc_info); +} + +type_init(stm32f2xx_adc_register_types); diff --git a/hw/arm/stm32f2xx_crc.c b/hw/arm/stm32f2xx_crc.c new file mode 100644 index 0000000000000..3a8d321c9f276 --- /dev/null +++ b/hw/arm/stm32f2xx_crc.c @@ -0,0 +1,235 @@ +/*- + * Copyright (c) 2013 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +/* + * QEMU crc emulation + */ + +#include "qemu/osdep.h" +#include "hw/sysbus.h" +#include "hw/arm/stm32.h" +#include "hw/qdev-properties.h" + +#define R_CRC_DR (0x00 / 4) +#define R_CRC_DR_RESET 0xffffffff +#define R_CRC_IDR (0x04 / 4) +#define R_CRC_CR (0x08 / 4) +#define R_CRC_MAX (0x0c / 4) + +/*****************************************************************/ +/* */ +/* CRC LOOKUP TABLE */ +/* ================ */ +/* The following CRC lookup table was generated automagically */ +/* by the Rocksoft^tm Model CRC Algorithm Table Generation */ +/* Program V1.0 using the following model parameters: */ +/* */ +/* Width : 4 bytes. */ +/* Poly : 0x04C11DB7L */ +/* Reverse : FALSE. */ +/* */ +/* For more information on the Rocksoft^tm Model CRC Algorithm, */ +/* see the document titled "A Painless Guide to CRC Error */ +/* Detection Algorithms" by Ross Williams */ +/* (ross@guest.adelaide.edu.au.). This document is likely to be */ +/* in the FTP archive "ftp.adelaide.edu.au/pub/rocksoft". */ +/* */ +/*****************************************************************/ + +static unsigned long crctable[256] = +{ + 0x00000000L, 0x04C11DB7L, 0x09823B6EL, 0x0D4326D9L, 0x130476DCL, 0x17C56B6BL, + 0x1A864DB2L, 0x1E475005L, 0x2608EDB8L, 0x22C9F00FL, 0x2F8AD6D6L, 0x2B4BCB61L, + 0x350C9B64L, 0x31CD86D3L, 0x3C8EA00AL, 0x384FBDBDL, 0x4C11DB70L, 0x48D0C6C7L, + 0x4593E01EL, 0x4152FDA9L, 0x5F15ADACL, 0x5BD4B01BL, 0x569796C2L, 0x52568B75L, + 0x6A1936C8L, 0x6ED82B7FL, 0x639B0DA6L, 0x675A1011L, 0x791D4014L, 0x7DDC5DA3L, + 0x709F7B7AL, 0x745E66CDL, 0x9823B6E0L, 0x9CE2AB57L, 0x91A18D8EL, 0x95609039L, + 0x8B27C03CL, 0x8FE6DD8BL, 0x82A5FB52L, 0x8664E6E5L, 0xBE2B5B58L, 0xBAEA46EFL, + 0xB7A96036L, 0xB3687D81L, 0xAD2F2D84L, 0xA9EE3033L, 0xA4AD16EAL, 0xA06C0B5DL, + 0xD4326D90L, 0xD0F37027L, 0xDDB056FEL, 0xD9714B49L, 0xC7361B4CL, 0xC3F706FBL, + 0xCEB42022L, 0xCA753D95L, 0xF23A8028L, 0xF6FB9D9FL, 0xFBB8BB46L, 0xFF79A6F1L, + 0xE13EF6F4L, 0xE5FFEB43L, 0xE8BCCD9AL, 0xEC7DD02DL, 0x34867077L, 0x30476DC0L, + 0x3D044B19L, 0x39C556AEL, 0x278206ABL, 0x23431B1CL, 0x2E003DC5L, 0x2AC12072L, + 0x128E9DCFL, 0x164F8078L, 0x1B0CA6A1L, 0x1FCDBB16L, 0x018AEB13L, 0x054BF6A4L, + 0x0808D07DL, 0x0CC9CDCAL, 0x7897AB07L, 0x7C56B6B0L, 0x71159069L, 0x75D48DDEL, + 0x6B93DDDBL, 0x6F52C06CL, 0x6211E6B5L, 0x66D0FB02L, 0x5E9F46BFL, 0x5A5E5B08L, + 0x571D7DD1L, 0x53DC6066L, 0x4D9B3063L, 0x495A2DD4L, 0x44190B0DL, 0x40D816BAL, + 0xACA5C697L, 0xA864DB20L, 0xA527FDF9L, 0xA1E6E04EL, 0xBFA1B04BL, 0xBB60ADFCL, + 0xB6238B25L, 0xB2E29692L, 0x8AAD2B2FL, 0x8E6C3698L, 0x832F1041L, 0x87EE0DF6L, + 0x99A95DF3L, 0x9D684044L, 0x902B669DL, 0x94EA7B2AL, 0xE0B41DE7L, 0xE4750050L, + 0xE9362689L, 0xEDF73B3EL, 0xF3B06B3BL, 0xF771768CL, 0xFA325055L, 0xFEF34DE2L, + 0xC6BCF05FL, 0xC27DEDE8L, 0xCF3ECB31L, 0xCBFFD686L, 0xD5B88683L, 0xD1799B34L, + 0xDC3ABDEDL, 0xD8FBA05AL, 0x690CE0EEL, 0x6DCDFD59L, 0x608EDB80L, 0x644FC637L, + 0x7A089632L, 0x7EC98B85L, 0x738AAD5CL, 0x774BB0EBL, 0x4F040D56L, 0x4BC510E1L, + 0x46863638L, 0x42472B8FL, 0x5C007B8AL, 0x58C1663DL, 0x558240E4L, 0x51435D53L, + 0x251D3B9EL, 0x21DC2629L, 0x2C9F00F0L, 0x285E1D47L, 0x36194D42L, 0x32D850F5L, + 0x3F9B762CL, 0x3B5A6B9BL, 0x0315D626L, 0x07D4CB91L, 0x0A97ED48L, 0x0E56F0FFL, + 0x1011A0FAL, 0x14D0BD4DL, 0x19939B94L, 0x1D528623L, 0xF12F560EL, 0xF5EE4BB9L, + 0xF8AD6D60L, 0xFC6C70D7L, 0xE22B20D2L, 0xE6EA3D65L, 0xEBA91BBCL, 0xEF68060BL, + 0xD727BBB6L, 0xD3E6A601L, 0xDEA580D8L, 0xDA649D6FL, 0xC423CD6AL, 0xC0E2D0DDL, + 0xCDA1F604L, 0xC960EBB3L, 0xBD3E8D7EL, 0xB9FF90C9L, 0xB4BCB610L, 0xB07DABA7L, + 0xAE3AFBA2L, 0xAAFBE615L, 0xA7B8C0CCL, 0xA379DD7BL, 0x9B3660C6L, 0x9FF77D71L, + 0x92B45BA8L, 0x9675461FL, 0x8832161AL, 0x8CF30BADL, 0x81B02D74L, 0x857130C3L, + 0x5D8A9099L, 0x594B8D2EL, 0x5408ABF7L, 0x50C9B640L, 0x4E8EE645L, 0x4A4FFBF2L, + 0x470CDD2BL, 0x43CDC09CL, 0x7B827D21L, 0x7F436096L, 0x7200464FL, 0x76C15BF8L, + 0x68860BFDL, 0x6C47164AL, 0x61043093L, 0x65C52D24L, 0x119B4BE9L, 0x155A565EL, + 0x18197087L, 0x1CD86D30L, 0x029F3D35L, 0x065E2082L, 0x0B1D065BL, 0x0FDC1BECL, + 0x3793A651L, 0x3352BBE6L, 0x3E119D3FL, 0x3AD08088L, 0x2497D08DL, 0x2056CD3AL, + 0x2D15EBE3L, 0x29D4F654L, 0xC5A92679L, 0xC1683BCEL, 0xCC2B1D17L, 0xC8EA00A0L, + 0xD6AD50A5L, 0xD26C4D12L, 0xDF2F6BCBL, 0xDBEE767CL, 0xE3A1CBC1L, 0xE760D676L, + 0xEA23F0AFL, 0xEEE2ED18L, 0xF0A5BD1DL, 0xF464A0AAL, 0xF9278673L, 0xFDE69BC4L, + 0x89B8FD09L, 0x8D79E0BEL, 0x803AC667L, 0x84FBDBD0L, 0x9ABC8BD5L, 0x9E7D9662L, + 0x933EB0BBL, 0x97FFAD0CL, 0xAFB010B1L, 0xAB710D06L, 0xA6322BDFL, 0xA2F33668L, + 0xBCB4666DL, 0xB8757BDAL, 0xB5365D03L, 0xB1F740B4L +}; + +static inline uint32_t +update_crc(uint32_t crc, uint8_t byte) +{ + return crctable[((crc >> 24) ^ byte) & 0xff] ^ (crc << 8); +} + +typedef struct f2xx_crc { + SysBusDevice busdev; + MemoryRegion iomem; + + uint32_t crc; + uint8_t idr; +} f2xx_crc; + +static uint64_t +f2xx_crc_read(void *arg, hwaddr addr, unsigned int size) +{ + f2xx_crc *s = arg; + + if (size != 4) { + qemu_log_mask(LOG_UNIMP, "f2xx crc only supports 4-byte reads\n"); + return 0; + } + + addr >>= 2; + if (addr >= R_CRC_MAX) { + qemu_log_mask(LOG_GUEST_ERROR, "invalid read f2xx crc register 0x%x\n", + (unsigned int)addr << 2); + return 0; + } + switch(addr) { + case R_CRC_DR: + return s->crc; + case R_CRC_IDR: + return s->idr; + } + return 0; +} + + +static void +f2xx_crc_write(void *arg, hwaddr addr, uint64_t data, unsigned int size) +{ + f2xx_crc *s = arg; + + /* XXX Check periph clock enable. */ + if (size != 4) { + qemu_log_mask(LOG_UNIMP, "f2xx crc only supports 4-byte writes\n"); + return; + } + + addr >>= 2; + if (addr >= R_CRC_MAX) { + qemu_log_mask(LOG_GUEST_ERROR, "invalid write f2xx crc register 0x%x\n", + (unsigned int)addr << 2); + return; + } + switch(addr) { + case R_CRC_DR: + s->crc = update_crc(s->crc, (data >> 24) & 0xff); + s->crc = update_crc(s->crc, (data >> 16) & 0xff); + s->crc = update_crc(s->crc, (data >> 8) & 0xff); + s->crc = update_crc(s->crc, data & 0xff); + break; + case R_CRC_IDR: + s->idr = data; + break; + case R_CRC_CR: + if (data & 0x1) { + s->crc = R_CRC_DR_RESET; + } + break; + } +} + +static const MemoryRegionOps f2xx_crc_ops = { + .read = f2xx_crc_read, + .write = f2xx_crc_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .impl = { + .min_access_size = 1, + .max_access_size = 4, + } +}; + +static void +f2xx_crc_init(Object *obj) +{ + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + f2xx_crc *s = STM32F2XX_CRC(obj); + + memory_region_init_io(&s->iomem, OBJECT(s), &f2xx_crc_ops, s, "crc", 0x400); + sysbus_init_mmio(dev, &s->iomem); +} + +static void +f2xx_crc_reset(DeviceState *ds) +{ + f2xx_crc *s = STM32F2XX_CRC(ds); + + s->crc = R_CRC_DR_RESET; +} + +static Property f2xx_crc_properties[] = { + DEFINE_PROP_END_OF_LIST(), +}; + +static void +f2xx_crc_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + dc->reset = f2xx_crc_reset; + //TODO: fix this: dc->no_user = 1; + device_class_set_props(dc, f2xx_crc_properties); +} + +static const TypeInfo +f2xx_crc_info = { + .name = TYPE_STM32F2XX_CRC, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(f2xx_crc), + .instance_init = f2xx_crc_init, + .class_init = f2xx_crc_class_init, +}; + +static void +f2xx_crc_register_types(void) +{ + type_register_static(&f2xx_crc_info); +} + +type_init(f2xx_crc_register_types) diff --git a/hw/arm/stm32f2xx_dma.c b/hw/arm/stm32f2xx_dma.c new file mode 100644 index 0000000000000..75eaff8fa515e --- /dev/null +++ b/hw/arm/stm32f2xx_dma.c @@ -0,0 +1,419 @@ +/*- + * Copyright (c) 2013 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +/* + * QEMU DMA controller device model + */ + +#include "qemu/osdep.h" +#include "hw/sysbus.h" +#include "qemu/log.h" +#include "hw/irq.h" +#include "hw/qdev-properties.h" +#include "hw/arm/stm32.h" + +//#define DEBUG_STM32F2XX_DMA +#ifdef DEBUG_STM32F2XX_DMA + +// NOTE: The usleep() helps the MacOS stdout from freezing when we have a lot of print out +#define DPRINTF(fmt, ...) \ + do { printf("STM32F2XX_DMA: " fmt , ## __VA_ARGS__); \ + usleep(1000); \ + } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + + +/* Common interrupt status / clear registers. */ +#define R_DMA_LISR (0x00 / 4) +#define R_DMA_HISR (0x04 / 4)//r +#define R_DMA_LIFCR (0x08 / 4) +#define R_DMA_HIFCR (0x0c / 4)//w +#define R_DMA_ISR_FIEF (1 << 0) +#define R_DMA_ISR_DMEIF (1 << 2) +#define R_DMA_ISR_TIEF (1 << 3) +#define R_DMA_ISR_HTIF (1 << 4) +#define R_DMA_ISR_TCIF (1 << 5) + +/* Per-stream registers. */ +#define R_DMA_Sx (0x10 / 4) +#define R_DMA_Sx_COUNT 8 +#define R_DMA_Sx_REGS 6 +#define R_DMA_SxCR (0x00 / 4) +#define R_DMA_SxCR_EN 0x00000001 +#define R_DMA_SxNDTR (0x04 / 4) +#define R_DMA_SxNDTR_EN 0x00000001 +#define R_DMA_SxPAR (0x08 / 4) +#define R_DMA_SxM0AR (0x0c / 4) +#define R_DMA_SxM1AR (0x10 / 4) +#define R_DMA_SxFCR (0x14 / 4) + +#define R_DMA_MAX (0xd0 / 4) + +typedef struct f2xx_dma_stream { + qemu_irq irq; + + uint32_t cr; + uint16_t ndtr; + uint32_t par; + uint32_t m0ar; + uint32_t m1ar; + uint8_t isr; +} f2xx_dma_stream; + +static int msize_table[] = {1, 2, 4, 0}; + +typedef struct f2xx_dma { + SysBusDevice busdev; + MemoryRegion iomem; + + uint32_t ifcr[R_DMA_HIFCR - R_DMA_LIFCR + 1]; + f2xx_dma_stream stream[R_DMA_Sx_COUNT]; +} f2xx_dma; + +/* Pack ISR bits from four streams, for {L,H}ISR. */ +static uint32_t +f2xx_dma_pack_isr(struct f2xx_dma *s, int start_stream) +{ + uint32_t r = 0; + int i; + + for (i = 0; i < 4; i++) { + r |= s->stream[i + start_stream].isr << (6 * i); + } + return r; +} + +/* Per-stream read. */ +static uint32_t +f2xx_dma_stream_read(f2xx_dma_stream *s, int stream_no, uint32_t reg) +{ + switch (reg) { + case R_DMA_SxCR: + DPRINTF(" %s: stream: %d, register CR\n", __func__, stream_no); + return s->cr; + case R_DMA_SxNDTR: + DPRINTF(" %s: stream: %d, register NDTR (UNIMPLEMENTED)\n", __func__, stream_no); + qemu_log_mask(LOG_UNIMP, "f2xx dma unimp read reg NDTR\n"); + return 0; + case R_DMA_SxPAR: + DPRINTF(" %s: stream: %d, register PAR (UNIMPLEMENTED)\n", __func__, stream_no); + qemu_log_mask(LOG_UNIMP, "f2xx dma unimp read reg PAR\n"); + return 0; + case R_DMA_SxM0AR: + DPRINTF(" %s: stream: %d, register M0AR (UNIMPLEMENTED)\n", __func__, stream_no); + qemu_log_mask(LOG_UNIMP, "f2xx dma unimp read reg M0AR\n"); + return 0; + case R_DMA_SxM1AR: + DPRINTF(" %s: stream: %d, register M1AR (UNIMPLEMENTED)\n", __func__, stream_no); + qemu_log_mask(LOG_UNIMP, "f2xx dma unimp read reg M1AR\n"); + return 0; + case R_DMA_SxFCR: + DPRINTF(" %s: stream: %d, register FCR (UNIMPLEMENTED)\n", __func__, stream_no); + qemu_log_mask(LOG_UNIMP, "f2xx dma unimp read reg FCR\n"); + return 0; + default: + DPRINTF(" %s: stream: %d, register 0x%02x\n", __func__, stream_no, reg<<2); + qemu_log_mask(LOG_UNIMP, "f2xx dma unimp read stream reg 0x%02x\n", + (unsigned int)reg<<2); + } + return 0; +} + +/* Register read. */ +static uint64_t +f2xx_dma_read(void *arg, hwaddr addr, unsigned int size) +{ + f2xx_dma *s = arg; + uint64_t result; + + DPRINTF("%s: addr: 0x%llx, size:%d...\n", __func__, addr, size); + + if (size != 4) { + qemu_log_mask(LOG_UNIMP, "f2xx crc only supports 4-byte reads\n"); + return 0; + } + + addr >>= 2; + if (addr >= R_DMA_MAX) { + qemu_log_mask(LOG_GUEST_ERROR, "invalid read f2xx dma register 0x%02x\n", + (unsigned int)addr << 2); + result = 0; + } else { + switch(addr) { + case R_DMA_LISR: + DPRINTF(" %s: register LISR\n", __func__); + result = f2xx_dma_pack_isr(s, 0); + break; + case R_DMA_HISR: + DPRINTF(" %s: register HISR\n", __func__); + result = f2xx_dma_pack_isr(s, 4); + break; + case R_DMA_LIFCR: + DPRINTF(" %s: register LIFCR\n", __func__); + result = s->ifcr[addr - R_DMA_LIFCR]; + break; + case R_DMA_HIFCR: + DPRINTF(" %s: register HIFCR\n", __func__); + result = s->ifcr[addr - R_DMA_LIFCR]; + break; + default: + /* Only per-stream registers remain. */ + addr -= R_DMA_Sx; + int stream_no = addr / R_DMA_Sx_REGS; + result = f2xx_dma_stream_read(&s->stream[stream_no], stream_no, + addr % R_DMA_Sx_REGS); + break; + } + } + + DPRINTF(" %s: result:0x%llx\n", __func__, result); + return result; +} + +/* Start a DMA transfer for a given stream. */ +static void +f2xx_dma_stream_start(f2xx_dma_stream *s, int stream_no) +{ + uint8_t buf[4]; + int msize = msize_table[(s->cr >> 13) & 0x3]; + + DPRINTF("%s: stream: %d\n", __func__, stream_no); + + if (msize == 0) { + qemu_log_mask(LOG_GUEST_ERROR, "f2xx dma: invalid MSIZE\n"); + return; + } + /* XXX Skip USART, as pacing control is not yet in place. */ + if (s->par == 0x40011004) { + qemu_log_mask(LOG_UNIMP, "f2xx dma: skipping USART\n"); + return; + } + + /* XXX hack do the entire transfer here for now. */ + DPRINTF("%s: transferring %d x %d byte(s) from 0x%08x to 0x%08x\n", __func__, s->ndtr, + msize, s->m0ar, s->par); + while (s->ndtr--) { + cpu_physical_memory_read(s->m0ar, buf, msize); + cpu_physical_memory_write(s->par, buf, msize); + s->m0ar += msize; + } + /* Transfer complete. */ + s->cr &= ~R_DMA_SxCR_EN; + s->isr |= R_DMA_ISR_TCIF; + qemu_set_irq(s->irq, 1); +} + +/* Per-stream register write. */ +static void +f2xx_dma_stream_write(f2xx_dma_stream *s, int stream_no, uint32_t addr, uint32_t data) +{ + switch (addr) { + case R_DMA_SxCR: + DPRINTF("%s: stream: %d, register CR, data:0x%x\n", __func__, stream_no, data); + if ((s->cr & R_DMA_SxCR_EN) == 0 && (data & R_DMA_SxCR_EN) != 0) { + f2xx_dma_stream_start(s, stream_no); + } + s->cr = data; + break; + case R_DMA_SxNDTR: + DPRINTF("%s: stream: %d, register NDTR, data:0x%x\n", __func__, stream_no, data); + if (s->cr & R_DMA_SxNDTR_EN) { + qemu_log_mask(LOG_GUEST_ERROR, "f2xx dma write to NDTR while enabled\n"); + return; + } + s->ndtr = data; + break; + case R_DMA_SxPAR: + DPRINTF("%s: stream: %d, register PAR, data:0x%x\n", __func__, stream_no, data); + s->par = data; + break; + case R_DMA_SxM0AR: + DPRINTF("%s: stream: %d, register M0AR, data:0x%x\n", __func__, stream_no, data); + s->m0ar = data; + break; + case R_DMA_SxM1AR: + DPRINTF("%s: stream: %d, register M1AR, data:0x%x\n", __func__, stream_no, data); + s->m1ar = data; + break; + case R_DMA_SxFCR: + DPRINTF("%s: stream: %d, register FCR (UINIMPLEMENTED), data:0x%x\n", __func__, + stream_no, data); + qemu_log_mask(LOG_UNIMP, "f2xx dma SxFCR unimplemented\n"); + break; + } +} + +/* Register write. */ +static void +f2xx_dma_write(void *arg, hwaddr addr, uint64_t data, unsigned int size) +{ + f2xx_dma *s = arg; + int offset = addr & 0x3; + + (void)offset; + + /* XXX Check DMA peripheral clock enable. */ + if (size != 4) { + qemu_log_mask(LOG_UNIMP, "f2xx dma only supports 4-byte writes\n"); + return; + } + + addr >>= 2; + if (addr >= R_DMA_MAX) { + qemu_log_mask(LOG_GUEST_ERROR, "invalid write f2xx dma register 0x%02x\n", + (unsigned int)addr << 2); + return; + } + if (addr >= R_DMA_Sx && addr <= 0xcc) { + int num = (addr - R_DMA_Sx) / R_DMA_Sx_REGS; + f2xx_dma_stream_write(&s->stream[num], num, + (addr - R_DMA_Sx) % R_DMA_Sx_REGS, data); + return; + } + switch(addr) { + case R_DMA_LISR: + DPRINTF("%s: register LISR (READ-ONLY), data: 0x%llx\n", __func__, data); + qemu_log_mask(LOG_GUEST_ERROR, "f2xx dma: invalid write to ISR\n"); + break; + case R_DMA_HISR: + DPRINTF("%s: register HISR (READ-ONLY), data: 0x%llx\n", __func__, data); + qemu_log_mask(LOG_GUEST_ERROR, "f2xx dma: invalid write to ISR\n"); + break; + case R_DMA_LIFCR: + DPRINTF("%s: register LIFCR, data: 0x%llx\n", __func__, data); + // Any interrupt clear write to stream x clears all interrupts for that stream + s->ifcr[addr - R_DMA_LIFCR] = data; + if (data & 0x0f400000) { + s->stream[3].isr = 0; + qemu_set_irq(s->stream[3].irq, 0); + } + if (data & 0x003d0000) { + s->stream[2].isr = 0; + qemu_set_irq(s->stream[2].irq, 0); + } + if (data & 0x00000f40) { + s->stream[1].isr = 0; + qemu_set_irq(s->stream[1].irq, 0); + } + if (data & 0x0000003d) { + s->stream[0].isr = 0; + qemu_set_irq(s->stream[0].irq, 0); + } + break; + case R_DMA_HIFCR: + DPRINTF("%s: register HIFCR, data: 0x%llx\n", __func__, data); + // Any interrupt clear write to stream x clears all interrupts for that stream + s->ifcr[addr - R_DMA_LIFCR] = data; + if (data & 0x0f400000) { + s->stream[7].isr = 0; + qemu_set_irq(s->stream[7].irq, 0); + } + if (data & 0x003d0000) { + s->stream[6].isr = 0; + qemu_set_irq(s->stream[6].irq, 0); + } + if (data & 0x00000f40) { + s->stream[5].isr = 0; + qemu_set_irq(s->stream[5].irq, 0); + } + if (data & 0x0000003d) { + s->stream[4].isr = 0; + qemu_set_irq(s->stream[4].irq, 0); + } + break; + default: + qemu_log_mask(LOG_UNIMP, "f2xx dma unimpl write reg 0x%02x\n", + (unsigned int)addr << 2); + } +} + +static const MemoryRegionOps f2xx_dma_ops = { + .read = f2xx_dma_read, + .write = f2xx_dma_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .impl = { + .min_access_size = 1, + .max_access_size = 4, + } +}; + +static void +f2xx_dma_init(Object *obj) +{ + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + f2xx_dma *s = STM32F2XX_DMA(obj); + int i; + + memory_region_init_io(&s->iomem, OBJECT(s), &f2xx_dma_ops, s, "dma", 0x400); + sysbus_init_mmio(dev, &s->iomem); + + for (i = 0; i < R_DMA_Sx_COUNT; i++) { + sysbus_init_irq(dev, &s->stream[i].irq); + } +} + +static void +f2xx_dma_reset(DeviceState *ds) +{ + f2xx_dma *s = STM32F2XX_DMA(ds); + + memset(&s->ifcr, 0, sizeof(s->ifcr)); + + int i; + for (i=0; istream[i].irq; + memset(&s->stream[i], 0, sizeof(f2xx_dma_stream)); + s->stream[i].irq = save; + } +} + +static Property f2xx_dma_properties[] = { + DEFINE_PROP_END_OF_LIST(), +}; + +static void +f2xx_dma_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + SysBusDeviceClass *sc = SYS_BUS_DEVICE_CLASS(klass); + dc->reset = f2xx_dma_reset; + //TODO: fix this: dc->no_user = 1; + device_class_set_props(dc, f2xx_dma_properties); +} + +static const TypeInfo +f2xx_dma_info = { + .name = TYPE_STM32F2XX_DMA, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(f2xx_dma), + .instance_init = f2xx_dma_init, + .class_init = f2xx_dma_class_init, +}; + +static void +f2xx_dma_register_types(void) +{ + type_register_static(&f2xx_dma_info); +} + +type_init(f2xx_dma_register_types) diff --git a/hw/arm/stm32f2xx_dummy.c b/hw/arm/stm32f2xx_dummy.c new file mode 100644 index 0000000000000..30e3efd482d4f --- /dev/null +++ b/hw/arm/stm32f2xx_dummy.c @@ -0,0 +1,109 @@ +/*- + * Copyright (c) 2013 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +/* + * QEMU dummy emulation + */ + +#include "qemu/osdep.h" +#include "hw/sysbus.h" +#include "qemu/log.h" +#include "hw/qdev-properties.h" +#include "hw/arm/stm32.h" + +typedef struct f2xx_dummy { + SysBusDevice busdev; + MemoryRegion iomem; + void *name; + int32_t size; +} f2xx_dummy; + +static uint64_t +f2xx_dummy_read(void *arg, hwaddr addr, unsigned int size) +{ + f2xx_dummy *s = arg; + + qemu_log_mask(LOG_UNIMP, "%s dummy read 0x%x %d byte%s\n", s->name, + (unsigned int)addr, size, size != 1 ? "s" : ""); + + return 0; +} + +static void +f2xx_dummy_write(void *arg, hwaddr addr, uint64_t data, unsigned int size) +{ + f2xx_dummy *s = arg; + + qemu_log_mask(LOG_UNIMP, "%s dummy write 0x%x %d byte%s value 0x%x\n", + s->name, (unsigned int)addr, size, size != 1 ? "s" : "", + (unsigned int)data); +} + +static const MemoryRegionOps f2xx_dummy_ops = { + .read = f2xx_dummy_read, + .write = f2xx_dummy_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .impl = { + .min_access_size = 1, + .max_access_size = 4, + } +}; + +static void +f2xx_dummy_realize(DeviceState *obj, Error **pError) +{ + f2xx_dummy *s = STM32F2XX_DUMMY(obj); + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + + memory_region_init_io(&s->iomem, OBJECT(s), &f2xx_dummy_ops, s, "dummy", s->size); + sysbus_init_mmio(dev, &s->iomem); +} + +static Property f2xx_dummy_properties[] = { + DEFINE_PROP_PTR("name", f2xx_dummy, name), + DEFINE_PROP_INT32("size", f2xx_dummy, size, 0), + DEFINE_PROP_END_OF_LIST(), +}; + +static void +f2xx_dummy_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + // TODO: fix this: dc->no_user = 1; + dc->realize = f2xx_dummy_realize; + device_class_set_props(dc, f2xx_dummy_properties); +} + +static const TypeInfo +f2xx_dummy_info = { + .name = TYPE_STM32F2XX_DUMMY, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(f2xx_dummy), + .class_init = f2xx_dummy_class_init, +}; + +static void +f2xx_dummy_register_types(void) +{ + type_register_static(&f2xx_dummy_info); +} + +type_init(f2xx_dummy_register_types) diff --git a/hw/arm/stm32f2xx_flash.c b/hw/arm/stm32f2xx_flash.c new file mode 100644 index 0000000000000..49336de41b5e5 --- /dev/null +++ b/hw/arm/stm32f2xx_flash.c @@ -0,0 +1,147 @@ +/*- + * Copyright (c) 2013 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "qemu/osdep.h" +#include "sysemu/blockdev.h" +#include "hw/hw.h" +#include "hw/block/flash.h" +#include "block/block.h" +#include "sysemu/block-backend.h" +#include "hw/sysbus.h" +#include "hw/arm/stm32.h" +#include "hw/qdev-properties.h" +#include "migration/cpu.h" + +struct f2xx_flash { + SysBusDevice busdev; + BlockBackend *blk; + hwaddr base_address; + uint32_t size; + + MemoryRegion mem; + void *data; +}; // f2xx_flash_t; + +/* */ +f2xx_flash_t *f2xx_flash_register(BlockBackend *blk, hwaddr base, + hwaddr size) +{ + DeviceState *dev = qdev_create(NULL, TYPE_STM32F2XX_FLASH); + //SysBusDevice *busdev = SYS_BUS_DEVICE(dev); + f2xx_flash_t *flash = STM32F2XX_FLASH(dev); + + qdev_prop_set_uint32(dev, "size", size); + qdev_prop_set_uint64(dev, "base_address", base); + if (blk) { + Error *err = NULL; + qdev_prop_set_drive(dev, "drive", blk, &err); + if (err) { + printf("%s, have no drive???\n", __func__); + return NULL; + } + } + qdev_init_nofail(dev); + //sysbus_mmio_map(busdev, 0, base); + return flash; +} + +/* */ + +static uint64_t +f2xx_flash_read(void *arg, hwaddr offset, unsigned int size) +{ + //f2xx_flash_t *flash = arg; + + printf("read offset 0x%jx size %ju\n", (uintmax_t)offset, (uintmax_t)size); + return 0; +} + +static void +f2xx_flash_write(void *arg, hwaddr offset, uint64_t data, unsigned int size) +{ +} + +static const MemoryRegionOps f2xx_flash_ops = { + .read = f2xx_flash_read, + .write = f2xx_flash_write, + .endianness = DEVICE_NATIVE_ENDIAN, +}; + +MemoryRegion *get_system_memory(void); /* XXX */ + +static void f2xx_flash_init(DeviceState *obj, Error **pError) +{ + Error *err = NULL; + f2xx_flash_t *flash = STM32F2XX_FLASH(obj); + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + +// memory_region_init_rom_device(&flash->mem, &f2xx_flash_ops, flash, "name", +// size); + memory_region_init_ram(&flash->mem, OBJECT(flash), "f2xx.flash", flash->size, &err); + +// vmstate_register_ram(&flash->mem, DEVICE(flash)); + //vmstate_register_ram_global(&flash->mem); + memory_region_set_readonly(&flash->mem, true); + memory_region_add_subregion(get_system_memory(), flash->base_address, &flash->mem); +// sysbus_init_mmio(dev, &flash->mem); + + flash->data = memory_region_get_ram_ptr(&flash->mem); + memset(flash->data, 0xff, flash->size); + if (flash->blk) { + int r; + r = blk_pread(flash->blk, 0, flash->data, blk_getlength(flash->blk)); + if (r < 0) { + vmstate_unregister_ram(&flash->mem, DEVICE(flash)); + // memory_region_destroy(&flash->mem); +// return 1; + } + } +} + +static Property f2xx_flash_properties[] = { + DEFINE_PROP_DRIVE("drive", struct f2xx_flash, blk), + DEFINE_PROP_UINT32("size", struct f2xx_flash, size, 512*1024), + DEFINE_PROP_UINT64("base_address", struct f2xx_flash, base_address, 0x08000000), + DEFINE_PROP_END_OF_LIST(), +}; + +static void f2xx_flash_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + + dc->realize = f2xx_flash_init, + device_class_set_props(dc, f2xx_flash_properties); +} + +static const TypeInfo f2xx_flash_info = { + .name = TYPE_STM32F2XX_FLASH, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(struct f2xx_flash), + .class_init = f2xx_flash_class_init, +}; + +static void f2xx_flash_register_types(void) +{ + type_register_static(&f2xx_flash_info); +} + +type_init(f2xx_flash_register_types) diff --git a/hw/arm/stm32f2xx_gpio.c b/hw/arm/stm32f2xx_gpio.c new file mode 100644 index 0000000000000..93b2975ce1443 --- /dev/null +++ b/hw/arm/stm32f2xx_gpio.c @@ -0,0 +1,286 @@ +/*- + * Copyright (c) 2013 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +/* + * QEMU model of the stm32f2xx GPIO module + */ + +#include "qemu/osdep.h" +#include "hw/sysbus.h" +#include "hw/arm/stm32.h" +#include "hw/irq.h" +#include "hw/qdev-properties.h" + +//#define DEBUG_STM32_GPIO +#ifdef DEBUG_STM32_GPIO +// NOTE: The usleep() helps the MacOS stdout from freezing when we have a lot of print out +#define DPRINTF(fmt, ...) \ + do { printf("STM32F2XX_GPIO: " fmt , ## __VA_ARGS__); \ + usleep(100); \ + } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + + +#define R_GPIO_MODER (0x00 / 4) +#define R_GPIO_OTYPER (0x04 / 4) +#define R_GPIO_OSPEEDR (0x08 / 4) +#define R_GPIO_PUPDR (0x0c / 4) +#define R_GPIO_IDR (0x10 / 4) +#define R_GPIO_ODR (0x14 / 4) +#define R_GPIO_BSRR (0x18 / 4) +#define R_GPIO_LCKR (0x1c / 4) +#define R_GPIO_AFRL (0x20 / 4) +#define R_GPIO_AFRH (0x24 / 4) +#define R_GPIO_MAX (0x28 / 4) + +struct stm32f2xx_gpio { + SysBusDevice busdev; + MemoryRegion iomem; + + stm32_periph_t periph; + uint32_t idr_mask; + + qemu_irq pin[STM32_GPIO_PIN_COUNT]; + qemu_irq exti[STM32_GPIO_PIN_COUNT]; + qemu_irq alternate_function[STM32_GPIO_PIN_COUNT]; + qemu_irq cpu_wake[STM32_GPIO_PIN_COUNT]; + + uint32_t regs[R_GPIO_MAX]; + uint32_t ccr; +}; + +static uint64_t +stm32f2xx_gpio_read(void *arg, hwaddr offset, unsigned int size) +{ + stm32f2xx_gpio *s = arg; + uint32_t r; + + offset >>= 2; + r = s->regs[offset]; +//printf("GPIO unit %d reg %x return 0x%x\n", s->periph, (int)offset << 2, r); + return r; +} + +static void +f2xx_update_odr(stm32f2xx_gpio *s, uint16_t val) +{ + int i; + uint16_t changed = s->regs[R_GPIO_ODR] ^ val; + + for (i = 0; i < STM32_GPIO_PIN_COUNT; i++) + { + if ((changed & 1<busdev.parent_obj.id, i, !!(val & 1<periph, i, val & 1<pin[i], !!(val & 1<regs[R_GPIO_ODR] = val; +} + +static void +f2xx_update_mode(stm32f2xx_gpio *s, uint32_t val) +{ + int i; + uint32_t prev_value = s->regs[R_GPIO_MODER]; + + for (i = 0; i < STM32_GPIO_PIN_COUNT; i++) + { + uint32_t setting = (val >> i*2) & 0x03; + uint32_t prev_setting = (prev_value >> i*2) & 0x03; + if (setting == prev_setting) { + continue; + } + + DPRINTF("%s mode of pin %i changing to %d\n", s->busdev.parent_obj.id, i, setting); + bool is_alternate_function = (setting == 2); + qemu_set_irq(s->alternate_function[i], is_alternate_function); + } + s->regs[R_GPIO_MODER] = val; +} + +static void +stm32f2xx_gpio_write(void *arg, hwaddr addr, uint64_t data, unsigned int size) +{ + stm32f2xx_gpio *s = arg; + int offset = addr % 3; + + addr >>= 2; + if (addr > R_GPIO_MAX) { + qemu_log_mask(LOG_GUEST_ERROR, "invalid GPIO %d write reg 0x%x\n", + s->periph, (unsigned int)addr << 2); + return; + } + + switch(size) { + case 1: + data = (s->regs[addr] & ~(0xff << (offset * 8))) | data << (offset * 8); + break; + case 2: + data = (s->regs[addr] & ~(0xffff << (offset * 8))) | data << (offset * 8); + break; + case 4: + break; + default: + abort(); + } + + switch (addr) { + case R_GPIO_MODER: + f2xx_update_mode(s, data); + break; + case R_GPIO_ODR: + f2xx_update_odr(s, data); + break; + case R_GPIO_BSRR: + { + uint16_t new_val = s->regs[R_GPIO_ODR]; + new_val &= ~((data >> 16) & 0xffff); /* BRy */ + new_val |= data & 0xffff; /* BSy */ + f2xx_update_odr(s, new_val); + break; + } + default: + qemu_log_mask(LOG_UNIMP, "f2xx GPIO %d reg 0x%x:%d write (0x%x) unimplemented\n", + s->periph, (int)addr << 2, offset, (int)data); + s->regs[addr] = data; + break; + } +} + +static const MemoryRegionOps stm32f2xx_gpio_ops = { + .read = stm32f2xx_gpio_read, + .write = stm32f2xx_gpio_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .valid = { + .min_access_size = 1, + .max_access_size = 4 + } +}; + +static void +stm32f2xx_gpio_reset(DeviceState *dev) +{ + stm32f2xx_gpio *s = STM32F2XX_GPIO(dev); + + switch (s->periph) { + case 0: + s->regs[R_GPIO_MODER] = 0xa8000000; + s->regs[R_GPIO_OSPEEDR] = 0x00000000; + s->regs[R_GPIO_PUPDR] = 0x64000000; + break; + case 1: + s->regs[R_GPIO_MODER] = 0x00000280; + s->regs[R_GPIO_OSPEEDR] = 0x000000C0; + s->regs[R_GPIO_PUPDR] = 0x00000100; + break; + default: + s->regs[R_GPIO_MODER] = 0x00000000; + s->regs[R_GPIO_OSPEEDR] = 0x00000000; + s->regs[R_GPIO_PUPDR] = 0x00000000; + break; + } + /* Mask out the IDR bits as specified */ + s->regs[R_GPIO_IDR] = 0x0000ffff & ~(s->idr_mask); +} + +static void +f2xx_gpio_set(void *arg, int pin, int level) +{ + stm32f2xx_gpio *s = arg; + uint32_t bit = 1<regs[R_GPIO_IDR] |= bit; + else + s->regs[R_GPIO_IDR] &= ~bit; + + /* Inform EXTI module of pin state */ + qemu_set_irq(s->exti[pin], level); + + // For the stm32, only GPIOA, pin 0 will have a wakeup handler tied to it. It will be + // tied to a handler callback in the NVIC. + qemu_set_irq(s->cpu_wake[pin], level); + + DPRINTF("GPIO %d set pin %d level %d\n", s->periph, pin, level); +} + +void +f2xx_gpio_exti_set(stm32f2xx_gpio *s, unsigned pin, qemu_irq irq) +{ + s->exti[pin] = irq; + DPRINTF("GPIO %d set exti %d irq %p\n", s->periph, pin, irq); +} + +void +f2xx_gpio_wake_set(stm32f2xx_gpio *s, unsigned pin, qemu_irq irq) +{ + s->cpu_wake[pin] = irq; + DPRINTF("GPIO %d set cpu_wake %d irq %p\n", s->periph, pin, irq); +} + +static void +stm32f2xx_gpio_init(Object *obj) +{ + stm32f2xx_gpio *s = STM32F2XX_GPIO(obj); + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + + memory_region_init_io(&s->iomem, OBJECT(s), &stm32f2xx_gpio_ops, s, "gpio", 0x400); + sysbus_init_mmio(dev, &s->iomem); + + qdev_init_gpio_in(DEVICE(dev), f2xx_gpio_set, STM32_GPIO_PIN_COUNT); + qdev_init_gpio_out(DEVICE(dev), s->pin, STM32_GPIO_PIN_COUNT); + qdev_init_gpio_out_named(DEVICE(dev), s->alternate_function, "af", STM32_GPIO_PIN_COUNT); +} + +static Property stm32f2xx_gpio_properties[] = { + DEFINE_PROP_INT32("periph", stm32f2xx_gpio, periph, -1), + DEFINE_PROP_UINT32("idr-mask", stm32f2xx_gpio, idr_mask, 0), + DEFINE_PROP_END_OF_LIST() +}; + +static void +stm32f2xx_gpio_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + + dc->reset = stm32f2xx_gpio_reset; + device_class_set_props(dc, stm32f2xx_gpio_properties); +} + +static const TypeInfo stm32f2xx_gpio_info = { + .name = TYPE_STM32F2XX_GPIO, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(stm32f2xx_gpio), + .instance_init = stm32f2xx_gpio_init, + .class_init = stm32f2xx_gpio_class_init +}; + +static void +stm32f2xx_gpio_register_types(void) +{ + type_register_static(&stm32f2xx_gpio_info); +} + +type_init(stm32f2xx_gpio_register_types) diff --git a/hw/arm/stm32f2xx_i2c.c b/hw/arm/stm32f2xx_i2c.c new file mode 100644 index 0000000000000..68016eafa624a --- /dev/null +++ b/hw/arm/stm32f2xx_i2c.c @@ -0,0 +1,294 @@ +/*- + * Copyright (c) 2013 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +/* + * QEMU model of the stm32f2xx I2C controller. + */ + +#include "qemu/osdep.h" +#include "hw/sysbus.h" +#include "hw/arm/stm32.h" +#include "hw/i2c/i2c.h" +#include "hw/hw.h" +#include "hw/qdev-properties.h" +#include "hw/irq.h" + +#define R_I2C_CR1 (0x00 / 4) +#define R_I2C_CR2 (0x04 / 4) +#define R_I2C_OAR1 (0x08 / 4) +#define R_I2C_OAR2 (0x0c / 4) +#define R_I2C_DR (0x10 / 4) +#define R_I2C_SR1 (0x14 / 4) +#define R_I2C_SR2 (0x18 / 4) +#define R_I2C_CCR (0x1c / 4) +#define R_I2C_TRISE (0x20 / 4) +#define R_I2C_MAX (0x24 / 4) + + +#define R_I2C_CR1_PE_BIT 0x00001 +#define R_I2C_CR1_SMBUS_BIT 0x00002 +#define R_I2C_CR1_SMBTYPE_BIT 0x00008 +#define R_I2C_CR1_ENARB_BIT 0x00010 +#define R_I2C_CR1_ENPEC_BIT 0x00020 +#define R_I2C_CR1_ENGC_BIT 0x00040 +#define R_I2C_CR1_NOSTRETCH_BIT 0x00080 +#define R_I2C_CR1_START_BIT 0x00100 +#define R_I2C_CR1_STOP_BIT 0x00200 +#define R_I2C_CR1_ACK_BIT 0x00400 +#define R_I2C_CR1_POS_BIT 0x00800 +#define R_I2C_CR1_PEC_BIT 0x01000 +#define R_I2C_CR1_ALERT_BIT 0x02000 +#define R_I2C_CR1_SWRTS_BIT 0x08000 + + +#define R_I2C_CR2_ITERREN_BIT 0x00100 +#define R_I2C_CR2_ITEVTEN_BIT 0x00200 +#define R_I2C_CR2_ITBUFEN_BIT 0x00400 +#define R_I2C_CR2_DMAEN_BIT 0x00800 +#define R_I2C_CR2_LAST_BIT 0x01000 + +#define R_I2C_SR1_SB_BIT 0x00001 +#define R_I2C_SR1_ADDR_BIT 0x00002 +#define R_I2C_SR1_BTF_BIT 0x00004 +#define R_I2C_SR1_ADD10_BIT 0x00008 +#define R_I2C_SR1_STOPF_BIT 0x00010 +#define R_I2C_SR1_RxNE_BIT 0x00040 +#define R_I2C_SR1_TxE_BIT 0x00080 +#define R_I2C_SR1_BERR_BIT 0x00100 +#define R_I2C_SR1_ARLO_BIT 0x00200 +#define R_I2C_SR1_AF_BIT 0x00400 +#define R_I2C_SR1_OVR_BIT 0x00800 +#define R_I2C_SR1_PECERR_BIT 0x01000 +#define R_I2C_SR1_TIMEOUT_BIT 0x04000 +#define R_I2C_SR1_SMBALERT_BIT 0x08000 + + + +//#define DEBUG_STM32F2XX_I2c +#ifdef DEBUG_STM32F2XX_I2c +// NOTE: The usleep() helps the MacOS stdout from freezing when we have a lot of print out +#define DPRINTF(fmt, ...) \ + do { printf("STM32F2XX_I2c: " fmt , ## __VA_ARGS__); \ + usleep(1000); \ + } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + +static const char *f2xx_i2c_reg_name_arr[] = { + "CR1", + "CR2", + "OAR1", + "OAR2", + "DR", + "SR1", + "SR2", + "CCR", + "TRISE" +}; + + + +typedef struct f2xx_i2c { + SysBusDevice busdev; + MemoryRegion iomem; + qemu_irq evt_irq; + qemu_irq err_irq; + + I2CBus *bus; + + stm32_periph_t periph; + + int32_t rx; + int rx_full; + uint16_t regs[R_I2C_MAX]; + +} f2xx_i2c; + + +/* Routine which updates the I2C's IRQs. This should be called whenever + * an interrupt-related flag is updated. + */ +static void f2xx_i2c_update_irq(f2xx_i2c *s) { + int new_err_irq_level = 0; + if (s->regs[R_I2C_CR2] & R_I2C_CR2_ITERREN_BIT) { + new_err_irq_level = (s->regs[R_I2C_SR1] & R_I2C_SR1_BERR_BIT) + | (s->regs[R_I2C_SR1] & R_I2C_SR1_ARLO_BIT) + | (s->regs[R_I2C_SR1] & R_I2C_SR1_AF_BIT) + | (s->regs[R_I2C_SR1] & R_I2C_SR1_OVR_BIT) + | (s->regs[R_I2C_SR1] & R_I2C_SR1_PECERR_BIT) + | (s->regs[R_I2C_SR1] & R_I2C_SR1_TIMEOUT_BIT) + | (s->regs[R_I2C_SR1] & R_I2C_SR1_SMBALERT_BIT); + } + + int new_evt_irq_level = 0; + if (s->regs[R_I2C_CR2] & R_I2C_CR2_ITEVTEN_BIT) { + new_evt_irq_level = (s->regs[R_I2C_SR1] & R_I2C_SR1_SB_BIT) + | (s->regs[R_I2C_SR1] & R_I2C_SR1_ADDR_BIT) + | (s->regs[R_I2C_SR1] & R_I2C_SR1_ADD10_BIT) + | (s->regs[R_I2C_SR1] & R_I2C_SR1_STOPF_BIT) + | (s->regs[R_I2C_SR1] & R_I2C_SR1_BTF_BIT); + + if (s->regs[R_I2C_CR2] & R_I2C_CR2_ITBUFEN_BIT) { + new_evt_irq_level |= (s->regs[R_I2C_SR1] & R_I2C_SR1_TxE_BIT) + | (s->regs[R_I2C_SR1] & R_I2C_SR1_RxNE_BIT); + } + } + + DPRINTF("%s %s: setting evt_irq to %d\n", __func__, s->busdev.parent_obj.id, + !!new_evt_irq_level); + qemu_set_irq(s->evt_irq, !!new_evt_irq_level); + + DPRINTF("%s %s: setting err_irq to %d\n", __func__, s->busdev.parent_obj.id, + !!new_err_irq_level); + qemu_set_irq(s->err_irq, !!new_err_irq_level); +} + + + +static uint64_t +f2xx_i2c_read(void *arg, hwaddr offset, unsigned size) +{ + f2xx_i2c *s = arg; + uint16_t r = UINT16_MAX; + const char *reg_name = "UNKNOWN"; + + if (!(size == 2 || size == 4 || (offset & 0x3) != 0)) { + STM32_BAD_REG(offset, size); + } + offset >>= 2; + if (offset < R_I2C_MAX) { + r = s->regs[offset]; + reg_name = f2xx_i2c_reg_name_arr[offset]; + } else { + qemu_log_mask(LOG_GUEST_ERROR, "Out of range I2C write, offset 0x%x\n", + (unsigned)offset << 2); + } + + DPRINTF("%s %s: register %s, result: 0x%x\n", __func__, s->busdev.parent_obj.id, + reg_name, r); + return r; +} + + +static void +f2xx_i2c_write(void *arg, hwaddr offset, uint64_t data, unsigned size) +{ + const char *reg_name = "UNKNOWN"; + struct f2xx_i2c *s = (struct f2xx_i2c *)arg; + + if (size != 2 && size != 4) { + STM32_BAD_REG(offset, size); + } + /* I2C registers are all at most 16 bits wide */ + data &= 0xFFFFF; + offset >>= 2; + + if (offset < R_I2C_MAX) { + reg_name = f2xx_i2c_reg_name_arr[offset]; + } + DPRINTF("%s %s: register %s, data: 0x%llx, size:%d\n", __func__, s->busdev.parent_obj.id, + reg_name, data, size); + + + switch (offset) { + case R_I2C_CR1: + s->regs[offset] = data; + if (data & R_I2C_CR1_START_BIT) { + // For now, abort all attempted master transfers with a bus error + s->regs[R_I2C_SR1] |= R_I2C_SR1_BERR_BIT; + } + if ((data & R_I2C_CR1_PE_BIT) == 0) { + s->regs[R_I2C_SR1] = 0; + } + break; + + case R_I2C_DR: + i2c_send(s->bus, (uint8_t)data); + break; + + default: + if (offset < ARRAY_SIZE(s->regs)) { + s->regs[offset] = data; + } else { + STM32_BAD_REG(offset, WORD_ACCESS_SIZE); + } + } + f2xx_i2c_update_irq(s); +} + +static const MemoryRegionOps f2xx_i2c_ops = { + .read = f2xx_i2c_read, + .write = f2xx_i2c_write, + .endianness = DEVICE_NATIVE_ENDIAN +}; + +static void +f2xx_i2c_reset(DeviceState *dev) +{ + //struct f2xx_i2c *s = FROM_SYSBUS(struct f2xx_i2c, SYS_BUS_DEVICE(dev)); + +// s->regs[R_SR] = R_SR_RESET; +} + +static void +f2xx_i2c_init(Object *obj) +{ + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + struct f2xx_i2c *s = STM32F2XX_I2C(obj); + + memory_region_init_io(&s->iomem, OBJECT(s), &f2xx_i2c_ops, s, "i2c", 0x3ff); + sysbus_init_mmio(dev, &s->iomem); + sysbus_init_irq(dev, &s->evt_irq); + sysbus_init_irq(dev, &s->err_irq); + s->bus = i2c_init_bus(DEVICE(dev), "i2c"); +} + + +static Property f2xx_i2c_properties[] = { + DEFINE_PROP_INT32("periph", struct f2xx_i2c, periph, -1), + DEFINE_PROP_END_OF_LIST() +}; + +static void +f2xx_i2c_class_init(ObjectClass *c, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(c); + + dc->reset = f2xx_i2c_reset; + device_class_set_props(dc, f2xx_i2c_properties); +} + +static const TypeInfo f2xx_i2c_info = { + .name = TYPE_STM32F2XX_I2C, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(struct f2xx_i2c), + .instance_init = f2xx_i2c_init, + .class_init = f2xx_i2c_class_init +}; + +static void +f2xx_i2c_register_types(void) +{ + type_register_static(&f2xx_i2c_info); +} + +type_init(f2xx_i2c_register_types) diff --git a/hw/arm/stm32f2xx_pwr.c b/hw/arm/stm32f2xx_pwr.c new file mode 100644 index 0000000000000..25a5d0045ef02 --- /dev/null +++ b/hw/arm/stm32f2xx_pwr.c @@ -0,0 +1,194 @@ +/*- + * Copyright (c) 2014 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +/* + * QEMU stm32f2xx RTC emulation + */ + +#include "qemu/osdep.h" +#include +#include "hw/sysbus.h" +#include "qemu/timer.h" +#include "hw/qdev-properties.h" +#include "hw/arm/stm32.h" + +//#define DEBUG_STM32F2XX_PWR +#ifdef DEBUG_STM32F2XX_PWR +// NOTE: The usleep() helps the MacOS stdout from freezing when we have a lot of print out +#define DPRINTF(fmt, ...) \ + do { printf("DEBUG_STM32F2XX_PWR: " fmt , ## __VA_ARGS__); \ + usleep(1000); \ + } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + +#define R_PWR_CR (0x00/4) +#define R_PWR_CR_LPDS 0x00000001 +#define R_PWR_CR_PDDS 0x00000002 + +#define R_PWR_CSR (0x04/4) + +#define R_PWR_MAX (0x08/4) + +typedef struct f2xx_pwr { + SysBusDevice busdev; + MemoryRegion iomem; + + uint32_t regs[R_PWR_MAX]; +} f2xx_pwr; + + + +static uint64_t +f2xx_pwr_read(void *arg, hwaddr addr, unsigned int size) +{ + f2xx_pwr *s = arg; + uint32_t r; + int offset = addr & 0x3; + + addr >>= 2; + if (addr >= R_PWR_MAX) { + qemu_log_mask(LOG_GUEST_ERROR, "invalid read f2xx pwr register 0x%x\n", + (unsigned int)addr << 2); + DPRINTF(" %s: result: 0\n", __func__); + return 0; + } + + uint32_t value = s->regs[addr]; + + r = (value >> offset * 8) & ((1ull << (8 * size)) - 1); + + DPRINTF("%s: addr: 0x%llx, size: %d, value: 0x%x\n", __func__, addr, size, r); + return r; +} + +static void +f2xx_pwr_write(void *arg, hwaddr addr, uint64_t data, unsigned int size) +{ + f2xx_pwr *s = arg; + int offset = addr & 0x3; + + DPRINTF("%s: addr: 0x%llx, data: 0x%llx, size: %d\n", __func__, addr, data, size); + + addr >>= 2; + if (addr >= R_PWR_MAX) { + qemu_log_mask(LOG_GUEST_ERROR, "invalid write f2xx pwr register 0x%x\n", + (unsigned int)addr << 2); + return; + } + + switch(size) { + case 1: + data = (s->regs[addr] & ~(0xff << (offset * 8))) | data << (offset * 8); + break; + case 2: + data = (s->regs[addr] & ~(0xffff << (offset * 8))) | data << (offset * 8); + break; + case 4: + break; + default: + abort(); + } + + switch(addr) { + case R_PWR_CR: + case R_PWR_CSR: + break; + default: + qemu_log_mask(LOG_UNIMP, "f2xx pwr unimplemented write 0x%x+%u size %u val 0x%x\n", + (unsigned int)addr << 2, offset, size, (unsigned int)data); + } + + // Save new value + s->regs[addr] = data; +} + +static const MemoryRegionOps f2xx_pwr_ops = { + .read = f2xx_pwr_read, + .write = f2xx_pwr_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .impl = { + .min_access_size = 1, + .max_access_size = 4, + } +}; + + +// Return true if we should go into standby mode when the process goes into deepsleep. +// deepsleep is entered if the SLEEPDEEP bit is set in the SCR register when the processor +// executes a WFI instruction. +bool f2xx_pwr_powerdown_deepsleep(void *opaqe) +{ + f2xx_pwr *s = opaqe; + return s->regs[R_PWR_CR] & R_PWR_CR_PDDS; +} + +static void f2xx_pwr_reset(DeviceState *dev) +{ + f2xx_pwr *s = STM32F2XX_PWR(dev); + + memset(s->regs, 0, sizeof(s->regs)); +} + + +static void +f2xx_pwr_init(Object *obj) +{ + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + f2xx_pwr *s = STM32F2XX_PWR(obj); + + memory_region_init_io(&s->iomem, OBJECT(s), &f2xx_pwr_ops, s, "pwr", 0x08); + sysbus_init_mmio(dev, &s->iomem); + + s->regs[R_PWR_CR] = 0; + s->regs[R_PWR_CSR] = 0; +} + +static Property f2xx_pwr_properties[] = { + DEFINE_PROP_END_OF_LIST(), +}; + +static void +f2xx_pwr_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + SysBusDeviceClass *sc = SYS_BUS_DEVICE_CLASS(klass); + dc->reset = f2xx_pwr_reset; + device_class_set_props(dc, f2xx_pwr_properties); +} + +static const TypeInfo +f2xx_pwr_info = { + .name = TYPE_STM32F2XX_PWR, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(f2xx_pwr), + .instance_init = f2xx_pwr_init, + .class_init = f2xx_pwr_class_init, +}; + +static void +f2xx_pwr_register_types(void) +{ + type_register_static(&f2xx_pwr_info); +} + +type_init(f2xx_pwr_register_types) diff --git a/hw/arm/stm32f2xx_rcc.c b/hw/arm/stm32f2xx_rcc.c new file mode 100644 index 0000000000000..d8c2d2499f8d9 --- /dev/null +++ b/hw/arm/stm32f2xx_rcc.c @@ -0,0 +1,1138 @@ +/* + * STM32 Microcontroller RCC (Reset and Clock Control) module + * + * Copyright (C) 2010 Andre Beckus + * + * Source code based on omap_clk.c + * Implementation based on ST Microelectronics "RM0008 Reference Manual Rev 10" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "stm32f2xx_rcc.h" +#include "qemu/timer.h" +#include "hw/hw.h" +#include "hw/qdev-properties.h" +#include "hw/irq.h" +#include "hw/timer/armv7m_systick.h" +#include + + +/* DEFINITIONS*/ + +/* See README for DEBUG details. */ +//#define DEBUG_STM32_RCC + +#ifdef DEBUG_STM32_RCC +#define DPRINTF(fmt, ...) \ +do { printf("STM32F2XX_RCC: " fmt , ## __VA_ARGS__); } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + +#define IS_RESET_VALUE(new_value, mask, reset_value) ((new_value & mask) == (mask & reset_value)) + +#define WARN_UNIMPLEMENTED(new_value, mask, reset_value) \ + if (!IS_RESET_VALUE(new_value, mask, reset_value)) { \ + stm32_unimp("Not implemented: RCC " #mask ". Masked value: 0x%08x\n", (new_value & mask)); \ + } + +#define WARN_UNIMPLEMENTED_REG(offset) \ + stm32_unimp("STM32f2xx_rcc: unimplemented register: 0x%x", (int)offset) + +#define HSI_FREQ 16000000 +#define LSI_FREQ 32000 + +#define RCC_CR_RESET_VALUE 0x00000083 +#define RCC_CR_OFFSET 0x00 +#define RCC_CR_PLLI2SRDY_BIT 27 +#define RCC_CR_PLLI2SON_BIT 26 +#define RCC_CR_PLLRDY_BIT 25 +#define RCC_CR_PLLON_BIT 24 +#define RCC_CR_CSSON_BIT 19 +#define RCC_CR_HSEBYP_BIT 18 +#define RCC_CR_HSERDY_BIT 17 +#define RCC_CR_HSEON_BIT 16 +#define RCC_CR_HSICAL_START 8 +#define RCC_CR_HSICAL_MASK 0x0000ff00 +#define RCC_CR_HSITRIM_START 3 +#define RCC_CR_HSITRIM_MASK 0x000000f8 +#define RCC_CR_HSIRDY_BIT 1 +#define RCC_CR_HSION_BIT 0 + +#define RCC_PLLCFGR_RESET_VALUE 0x24003010 +#define RCC_PLLCFGR_OFFSET 0x04 +#define RCC_PLLCFGR_PLLQ_MASK 0x0F000000 +#define RCC_PLLCFGR_PLLQ_START 24 +#define RCC_PLLCFGR_PLLSRC_BIT 22 +#define RCC_PLLCFGR_PLLP_MASK 0x00030000 +#define RCC_PLLCFGR_PLLP_START 16 +#define RCC_PLLCFGR_PLLN_MASK 0x00007FC0 +#define RCC_PLLCFGR_PLLN_START 6 +#define RCC_PLLCFGR_PLLM_MASK 0x0000003F +#define RCC_PLLCFGR_PLLM_START 0 + +#define RCC_CFGR_RESET_VALUE 0x00000000 +#define RCC_CFGR_OFFSET 0x08 +#define RCC_CFGR_MCO2_START 30 +#define RCC_CFGR_MCO2_MASK 0xC0000000 +#define RCC_CFGR_MCO2PRE_START 27 +#define RCC_CFGR_MCO2PRE_MASK 0x38000000 +#define RCC_CFGR_MCO1PRE_START 24 +#define RCC_CFGR_MCO1PRE_MASK 0x07000000 +#define RCC_CFGR_I2CSRC_BIT 23 +#define RCC_CFGR_MCO1_START 21 +#define RCC_CFGR_MCO1_MASK 0x00600000 +#define RCC_CFGR_RTCPRE_START 16 +#define RCC_CFGR_RTCPRE_MASK 0x001F0000 +#define RCC_CFGR_PPRE2_START 13 +#define RCC_CFGR_PPRE2_MASK 0x0000E000 +#define RCC_CFGR_PPRE1_START 10 +#define RCC_CFGR_PPRE1_MASK 0x00001C00 +#define RCC_CFGR_HPRE_START 4 +#define RCC_CFGR_HPRE_MASK 0x000000F0 +#define RCC_CFGR_SWS_START 2 +#define RCC_CFGR_SWS_MASK 0x0000000C +#define RCC_CFGR_SW_START 0 +#define RCC_CFGR_SW_MASK 0x00000003 + +#define RCC_CIR_RESET_VALUE 0x00000000 +#define RCC_CIR_OFFSET 0x0C +#define RCC_CIR_CSSC_BIT 23 +#define RCC_CIR_PLLI2SRDYC_BIT 21 +#define RCC_CIR_PLLRDYC_BIT 20 +#define RCC_CIR_HSERDYC_BIT 19 +#define RCC_CIR_HSIRDYC_BIT 18 +#define RCC_CIR_LSERDYC_BIT 17 +#define RCC_CIR_LSIRDYC_BIT 16 +#define RCC_CIR_PLLI2SRDYIE_BIT 13 +#define RCC_CIR_PLLRDYIE_BIT 12 +#define RCC_CIR_HSERDYIE_BIT 11 +#define RCC_CIR_HSIRDYIE_BIT 10 +#define RCC_CIR_LSERDYIE_BIT 9 +#define RCC_CIR_LSIRDYIE_BIT 8 +#define RCC_CIR_CSSF_BIT 7 +#define RCC_CIR_PLLI2SRDYF_BIT 5 +#define RCC_CIR_PLLRDYF_BIT 4 +#define RCC_CIR_HSERDYF_BIT 3 +#define RCC_CIR_HSIRDYF_BIT 2 +#define RCC_CIR_LSERDYF_BIT 1 +#define RCC_CIR_LSIRDYF_BIT 0 + +#define RCC_AHB1RSTR_OFFSET 0x10 + +#define RCC_AHB2RSTR_OFFSET 0x14 + +#define RCC_AHB3RSTR_OFFSET 0x18 + +#define RCC_APB1RSTR_OFFSET 0x20 + +#define RCC_APB2RSTR_RESET_VALUE 0x00000000 +#define RCC_APB2RSTR_OFFSET 0x24 +#define RCC_APB2RSTR_TIM11RST_BIT 18 +#define RCC_APB2RSTR_TIM10RST_BIT 17 +#define RCC_APB2RSTR_TIM9RST_BIT 16 +#define RCC_APB2RSTR_SYSCFGRST 14 +#define RCC_APB2RSTR_SPI1_BIT 12 +#define RCC_APB2RSTR_SDIORST_BIT 11 +#define RCC_APB2RSTR_ADCRST_BIT 8 +#define RCC_APB2RSTR_USART6RST 5 +#define RCC_APB2RSTR_USART1RST 4 +#define RCC_APB2RSTR_TIM8RST_BIT 1 +#define RCC_APB2RSTR_TIM1RST_BIT 0 + +#define RCC_AHB1ENR_RESET_VALUE 0x00000000 +#define RCC_AHB1ENR_OFFSET 0x30 +#define RCC_AHB1ENR_OTGHSULPIEN_BIT 30 +#define RCC_AHB1ENR_OTGHSEN_BIT 29 +#define RCC_AHB1ENR_ETHMACPTPEN_BIT 28 +#define RCC_AHB1ENR_ETHMACRXEN_BIT 27 +#define RCC_AHB1ENR_ETHMACTXEN_BIT 26 +#define RCC_AHB1ENR_ETHMACEN_BIT 25 +#define RCC_AHB1ENR_DMA2EN_BIT 22 +#define RCC_AHB1ENR_DMA1EN_BIT 21 +#define RCC_AHB1ENR_BKPSRAMEN_BIT 18 +#define RCC_AHB1ENR_CRCEN_BIT 12 +#define RCC_AHB1ENR_GPIOKEN_BIT 10 +#define RCC_AHB1ENR_GPIOJEN_BIT 9 +#define RCC_AHB1ENR_GPIOIEN_BIT 8 +#define RCC_AHB1ENR_GPIOHEN_BIT 7 +#define RCC_AHB1ENR_GPIOGEN_BIT 6 +#define RCC_AHB1ENR_GPIOFEN_BIT 5 +#define RCC_AHB1ENR_GPIOEEN_BIT 4 +#define RCC_AHB1ENR_GPIODEN_BIT 3 +#define RCC_AHB1ENR_GPIOCEN_BIT 2 +#define RCC_AHB1ENR_GPIOBEN_BIT 1 +#define RCC_AHB1ENR_GPIOAEN_BIT 0 + +#define RCC_AHB2ENR_OFFSET 0x34 +#define RCC_AHB2ENR_DCMIEN_BIT 0 +#define RCC_AHB2ENR_CRYPEN_BIT 4 +#define RCC_AHB2ENR_HASHEN_BIT 5 +#define RCC_AHB2ENR_RNGEN_BIT 6 +#define RCC_AHB2ENR_OTGFSEN_BIT 7 + +#define RCC_AHB3ENR_OFFSET 0x38 +#define RCC_AHB3ENR_FSMCEN_BIT 0 + +#define RCC_APB1ENR_RESET_VALUE 0x00000000 +#define RCC_APB1ENR_OFFSET 0x40 +#define RCC_APB1ENR_USART8EN_BIT 31 +#define RCC_APB1ENR_USART7EN_BIT 30 +#define RCC_APB1ENR_DACEN_BIT 29 +#define RCC_APB1ENR_PWREN_BIT 28 +#define RCC_APB1ENR_BKPEN_BIT 27 +#define RCC_APB1ENR_CAN2EN_BIT 26 +#define RCC_APB1ENR_CAN1EN_BIT 25 +#define RCC_APB1ENR_CANEN_BIT 25 +#define RCC_APB1ENR_USBEN_BIT 23 +#define RCC_APB1ENR_I2C2EN_BIT 22 +#define RCC_APB1ENR_I2C1EN_BIT 21 +#define RCC_APB1ENR_USART5EN_BIT 20 +#define RCC_APB1ENR_USART4EN_BIT 19 +#define RCC_APB1ENR_USART3EN_BIT 18 +#define RCC_APB1ENR_USART2EN_BIT 17 +#define RCC_APB1ENR_SPI3EN_BIT 15 +#define RCC_APB1ENR_SPI2EN_BIT 14 +#define RCC_APB1ENR_WWDGEN_BIT 11 +#define RCC_APB1ENR_TIM7EN_BIT 5 +#define RCC_APB1ENR_TIM6EN_BIT 4 +#define RCC_APB1ENR_TIM5EN_BIT 3 +#define RCC_APB1ENR_TIM4EN_BIT 2 +#define RCC_APB1ENR_TIM3EN_BIT 1 +#define RCC_APB1ENR_TIM2EN_BIT 0 + +#define RCC_APB2ENR_RESET_VALUE 0x00000000 +#define RCC_APB2ENR_OFFSET 0x44 +#define RCC_APB2ENR_MASK 0x00075F33 +#define RCC_APB2ENR_TIM11EN 18 +#define RCC_APB2ENR_TIM10EN 17 +#define RCC_APB2ENR_TIM9EN 16 +#define RCC_APB2ENR_SYSCFGEN_BIT 14 +#define RCC_APB2ENR_SPI1EN_BIT 12 +#define RCC_APB2ENR_SDIOEN_BIT 11 +#define RCC_APB2ENR_ADC3EN_BIT 10 +#define RCC_APB2ENR_ADC2EN_BIT 9 +#define RCC_APB2ENR_ADC1EN_BIT 8 +#define RCC_APB2ENR_USART6EN_BIT 5 +#define RCC_APB2ENR_USART1EN_BIT 4 +#define RCC_APB2ENR_TIM8EN_BIT 1 +#define RCC_APB2ENR_TIM1EN_BIT 0 + +#define RCC_AHB1LPENR_RESET_VALUE 0x7E6791FF +#define RCC_AHB1LPENR_OFFSET 0x50 + +#define RCC_AHB2LPENR_RESET_VALUE 0x000000F1 +#define RCC_AHB2LPENR_OFFSET 0x54 + +#define RCC_AHB3LPENR_RESET_VALUE 0x00000001 +#define RCC_AHB3LPENR_OFFSET 0x58 + +#define RCC_APB1LPENR_RESET_VALUE 0x36FEC9FF +#define RCC_APB1LPENR_OFFSET 0x60 + +#define RCC_APB2LPENR_RESET_VALUE 0x00075F33 +#define RCC_APB2LPENR_OFFSET 0x64 + +#define RCC_BDCR_RESET_VALUE 0x00000000 +#define RCC_BDCR_OFFSET 0x70 +#define RCC_BDCR_BDRST_BIT 16 +#define RCC_BDCR_RTCEN_BIT 15 +#define RCC_BDCR_RTCSEL_START 8 +#define RCC_BDCR_RTCSEL_MASK 0x00000300 +#define RCC_BDCR_LSEBYP_BIT 2 +#define RCC_BDCR_LSERDY_BIT 1 +#define RCC_BDCR_LSEON_BIT 0 + +#define RCC_CSR_RESET_VALUE 0x0E000000 +#define RCC_CSR_OFFSET 0x74 +#define RCC_CSR_LPWRRSTF_BIT 31 +#define RCC_CSR_WWDGRSTF_BIT 30 +#define RCC_CSR_IWDGRSTF_BIT 29 +#define RCC_CSR_SFTRSTF_BIT 28 +#define RCC_CSR_PORRSTF_BIT 27 +#define RCC_CSR_PINRSTF_BIT 26 +#define RCC_CSR_BORRSTF_BIT 25 +#define RCC_CSR_RMVF_BIT 24 +#define RCC_CSR_LSIRDY_BIT 1 +#define RCC_CSR_LSION_BIT 0 + +#define RCC_SSCGR_RESET_VALUE 0x00000000 +#define RCC_SSCGR_OFFSET 0x80 + +#define RCC_PLLI2SCFGR_RESET_VALUE 0x20003000 +#define RCC_PLLI2SCFGR_OFFSET 0x84 +#define RCC_PLLI2SCFGR_PLLR_MASK 0x70000000 +#define RCC_PLLI2SCFGR_PLLR_START 28 +#define RCC_PLLI2SCFGR_PLLQ_MASK 0x0F000000 +#define RCC_PLLI2SCFGR_PLLQ_START 24 +#define RCC_PLLI2SCFGR_PLLN_MASK 0x00007FC0 +#define RCC_PLLI2SCFGR_PLLN_START 6 + + + +#define PLLSRC_HSI_SELECTED 0 +#define PLLSRC_HSE_SELECTED 1 + +#define SW_HSI_SELECTED 0 +#define SW_HSE_SELECTED 1 +#define SW_PLL_SELECTED 2 + +/* HELPER FUNCTIONS */ +struct Clk { + const char *name; + + bool enabled; + + uint32_t input_freq, output_freq, max_output_freq; + + uint16_t multiplier, divisor; + + unsigned user_count; + qemu_irq user[CLKTREE_MAX_IRQ]; /* Who to notify on change */ + + unsigned output_count; + struct Clk *output[CLKTREE_MAX_OUTPUT]; + + unsigned input_count; + int selected_input; + struct Clk *input[CLKTREE_MAX_INPUT]; +}; + + +/* Enable the peripheral clock if the specified bit is set in the value. */ +static void stm32_rcc_periph_enable( + Stm32f2xxRcc *s, + uint32_t new_value, + bool init, + int periph, + uint32_t bit_mask) +{ + //printf("rcc set 0x%x %s %d %x: %sable\n", new_value, s->PERIPHCLK[periph]->name, periph, bit_mask, IS_BIT_SET(new_value, bit_mask)?"en":"dis"); + clktree_set_enabled(s->PERIPHCLK[periph], IS_BIT_SET(new_value, bit_mask)); +} + + + + + +/* REGISTER IMPLEMENTATION */ + +/* Read the configuration register. + NOTE: Not implemented: CSS, PLLI2S, clock calibration and trimming. */ +static uint32_t stm32_rcc_RCC_CR_read(Stm32f2xxRcc *s) +{ + /* Get the status of the clocks. */ + const bool PLLON = clktree_is_enabled(s->PLLCLK); + const bool HSEON = clktree_is_enabled(s->HSECLK); + const bool HSION = clktree_is_enabled(s->HSICLK); + const bool PLLI2SON = clktree_is_enabled(s->PLLI2SCLK); + + /* build the register value based on the clock states. If a clock is on, + * then its ready bit is always set. + */ + return ( + GET_BIT_MASK(RCC_CR_PLLRDY_BIT, PLLON) | + GET_BIT_MASK(RCC_CR_PLLON_BIT, PLLON) | + + GET_BIT_MASK(RCC_CR_HSERDY_BIT, HSEON) | + GET_BIT_MASK(RCC_CR_HSEON_BIT, HSEON) | + + GET_BIT_MASK(RCC_CR_HSIRDY_BIT, HSION) | + GET_BIT_MASK(RCC_CR_HSION_BIT, HSION) | + + GET_BIT_MASK(RCC_CR_PLLI2SRDY_BIT, PLLI2SON) | + GET_BIT_MASK(RCC_CR_PLLI2SON_BIT, PLLI2SON) + ); +} + +/* Write the Configuration Register. + * This updates the states of the corresponding clocks. The bit values are not + * saved - when the register is read, its value will be built using the clock + * states. + */ +static void stm32_rcc_RCC_CR_write(Stm32f2xxRcc *s, uint32_t new_value, bool init) +{ + bool new_PLLON, new_HSEON, new_HSION, new_PLLI2SON; + + new_PLLON = IS_BIT_SET(new_value, RCC_CR_PLLON_BIT); + if((clktree_is_enabled(s->PLLCLK) && !new_PLLON) && + s->RCC_CFGR_SW == SW_PLL_SELECTED) { + stm32_hw_warn("PLL cannot be disabled while it is selected as the system clock."); + } + clktree_set_enabled(s->PLLCLK, new_PLLON); + + new_HSEON = IS_BIT_SET(new_value, RCC_CR_HSEON_BIT); + if((clktree_is_enabled(s->HSECLK) && !new_HSEON) && + (s->RCC_CFGR_SW == SW_HSE_SELECTED || s->RCC_CFGR_SW == SW_PLL_SELECTED) + ) { + stm32_hw_warn("HSE oscillator cannot be disabled while it is driving the system clock."); + } + clktree_set_enabled(s->HSECLK, new_HSEON); + + new_HSION = IS_BIT_SET(new_value, RCC_CR_HSION_BIT); + if((clktree_is_enabled(s->HSECLK) && !new_HSEON) && + (s->RCC_CFGR_SW == SW_HSI_SELECTED || s->RCC_CFGR_SW == SW_PLL_SELECTED) + ) { + stm32_hw_warn("HSI oscillator cannot be disabled while it is driving the system clock."); + } + clktree_set_enabled(s->HSICLK, new_HSION); + + new_PLLI2SON = IS_BIT_SET(new_value, RCC_CR_PLLI2SON_BIT); + clktree_set_enabled(s->PLLI2SCLK, new_PLLI2SON); + + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CR_CSSON_BIT, RCC_CR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, RCC_CR_HSICAL_MASK, RCC_CR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, RCC_CR_HSITRIM_MASK, RCC_CR_RESET_VALUE); +} + + +static uint32_t stm32_rcc_RCC_PLLCFGR_read(Stm32f2xxRcc *s) +{ + return s->RCC_PLLCFGR; +} + +static void stm32_rcc_RCC_PLLCFGR_write(Stm32f2xxRcc *s, uint32_t new_value, bool init) +{ + /* PLLM division factor */ + const uint8_t new_PLLM = (new_value & RCC_PLLCFGR_PLLM_MASK) >> RCC_PLLCFGR_PLLM_START; + if (new_PLLM <= 1) { + hw_error("PLLM division factor cannot be 0 or 1. Given: %u", new_PLLM); + } + + /* PLLN multiplication factor */ + const uint16_t new_PLLN = (new_value & RCC_PLLCFGR_PLLN_MASK) >> RCC_PLLCFGR_PLLN_START; + if (new_PLLN <= 1 || new_PLLN >= 433) { + hw_error("PLLN multiplication factor must be between 2 and 432 (inclusive). Given: %u", new_PLLN); + } + + /* PLLSRC */ + const uint8_t new_PLLSRC = IS_BIT_SET(new_value, RCC_PLLCFGR_PLLSRC_BIT); + + /* PPLP division factor */ + const uint8_t new_PLLP = 2 + (2 * ((new_value & RCC_PLLCFGR_PLLP_MASK) >> RCC_PLLCFGR_PLLP_START)); + + /* Warn in case of illegal writes: */ + if (init == false) { + const bool are_disabled = (!clktree_is_enabled(s->PLLCLK) /* && TODO: !clktree_is_enabled(s->PLLI2SCLK) */); + if (are_disabled == false) { + const char *warning_fmt = "Can only change %s while PLL and PLLI2S are disabled"; + if (new_PLLM != s->RCC_PLLCFGR_PLLM) { + stm32_hw_warn(warning_fmt, "PLLM"); + } + if (new_PLLN != s->RCC_PLLCFGR_PLLN) { + stm32_hw_warn(warning_fmt, "PLLN"); + } + if (new_PLLSRC != s->RCC_PLLCFGR_PLLSRC) { + stm32_hw_warn(warning_fmt, "PLLSRC"); + } + } + } + + /* Save new register value */ + s->RCC_PLLCFGR = new_value; + + /* Set the new values: */ + s->RCC_PLLCFGR_PLLM = new_PLLM; + s->RCC_PLLCFGR_PLLN = new_PLLN; + clktree_set_scale(s->PLLM, new_PLLN, new_PLLM); + + s->RCC_PLLCFGR_PLLSRC = new_PLLSRC; + clktree_set_selected_input(s->PLLM, new_PLLSRC); + + s->RCC_PLLCFGR_PLLP = new_PLLP; + clktree_set_scale(s->PLLCLK, 1, new_PLLP); + + WARN_UNIMPLEMENTED(new_value, RCC_PLLCFGR_PLLQ_MASK, RCC_PLLCFGR_RESET_VALUE); +} + + +static uint32_t stm32_rcc_RCC_PLLI2SCFGR_read(Stm32f2xxRcc *s) +{ + return s->RCC_PLLI2SCFGR; +} + + +static void stm32_rcc_RCC_PLLI2SCFGR_write(Stm32f2xxRcc *s, uint32_t new_value, bool init) +{ + /* PLLR division factor */ + const uint16_t new_PLLR = (new_value & RCC_PLLI2SCFGR_PLLR_MASK) >> RCC_PLLI2SCFGR_PLLR_START; + if (new_PLLR < 2 || new_PLLR > 7) { + hw_error("PLLR multiplication factor must be between 2 and 7. Given: %u", new_PLLR); + } + + /* PLLQ division factor */ + const uint16_t new_PLLQ = (new_value & RCC_PLLI2SCFGR_PLLQ_MASK) >> RCC_PLLI2SCFGR_PLLQ_START; + if (new_PLLQ > 15) { + hw_error("PLLQ multiplication factor must be between 0 and 15 " + "(inclusive). Given: %u", new_PLLQ); + } + + /* PLLN multiplication factor */ + const uint16_t new_PLLN = (new_value & RCC_PLLI2SCFGR_PLLN_MASK) >> RCC_PLLI2SCFGR_PLLN_START; + if (new_PLLN < 2 || new_PLLN > 433) { + hw_error("PLLN multiplication factor must be between 2 and 432 (inclusive). Given: %u", new_PLLN); + } + + + /* Warn in case of illegal writes: */ + if (init == false) { + const bool are_disabled = (!clktree_is_enabled(s->PLLI2SCLK) /* && TODO: !clktree_is_enabled(s->PLLI2SCLK) */); + if (are_disabled == false) { + const char *warning_fmt = "Can only change %s while PLL and PLLI2S are disabled"; + if (new_PLLR != s->RCC_PLLI2SCFGR_PLLR) { + stm32_hw_warn(warning_fmt, "PLLR"); + } + if (new_PLLQ != s->RCC_PLLI2SCFGR_PLLQ) { + stm32_hw_warn(warning_fmt, "PLLQ"); + } + if (new_PLLN != s->RCC_PLLCFGR_PLLN) { + stm32_hw_warn(warning_fmt, "PLLN"); + } + } + } + + /* Save new register value */ + s->RCC_PLLI2SCFGR = new_value; + + /* Set the new values: */ + s->RCC_PLLI2SCFGR_PLLR = new_PLLR; + s->RCC_PLLI2SCFGR_PLLQ = new_PLLQ; + s->RCC_PLLI2SCFGR_PLLN = new_PLLN; + clktree_set_scale(s->PLLI2SM, new_PLLN, s->RCC_PLLCFGR_PLLM ); + + clktree_set_scale(s->PLLI2SCLK, 1, new_PLLR); + WARN_UNIMPLEMENTED(new_value, RCC_PLLI2SCFGR_PLLQ_MASK, RCC_PLLI2SCFGR_RESET_VALUE); +} + + +static uint32_t stm32_rcc_RCC_CFGR_read(Stm32f2xxRcc *s) +{ + return + (s->RCC_CFGR_PPRE2 << RCC_CFGR_PPRE2_START) | + (s->RCC_CFGR_PPRE1 << RCC_CFGR_PPRE1_START) | + (s->RCC_CFGR_HPRE << RCC_CFGR_HPRE_START) | + (s->RCC_CFGR_SW << RCC_CFGR_SW_START) | + (s->RCC_CFGR_SW << RCC_CFGR_SWS_START); +} + +static void stm32_rcc_RCC_CFGR_write(Stm32f2xxRcc *s, uint32_t new_value, bool init) +{ + /* PPRE2 */ + s->RCC_CFGR_PPRE2 = (new_value & RCC_CFGR_PPRE2_MASK) >> RCC_CFGR_PPRE2_START; + if(s->RCC_CFGR_PPRE2 < 0x4) { + clktree_set_scale(s->PCLK2, 1, 1); + } else { + clktree_set_scale(s->PCLK2, 1, 2 * (s->RCC_CFGR_PPRE2 - 3)); + } + + /* PPRE1 */ + s->RCC_CFGR_PPRE1 = (new_value & RCC_CFGR_PPRE1_MASK) >> RCC_CFGR_PPRE1_START; + if(s->RCC_CFGR_PPRE1 < 4) { + clktree_set_scale(s->PCLK1, 1, 1); + } else { + clktree_set_scale(s->PCLK1, 1, 2 * (s->RCC_CFGR_PPRE1 - 3)); + } + + /* HPRE */ + s->RCC_CFGR_HPRE = (new_value & RCC_CFGR_HPRE_MASK) >> RCC_CFGR_HPRE_START; + if(s->RCC_CFGR_HPRE < 8) { + clktree_set_scale(s->HCLK, 1, 1); + } else { + clktree_set_scale(s->HCLK, 1, 2 * (s->RCC_CFGR_HPRE - 7)); + } + + /* SW */ + s->RCC_CFGR_SW = (new_value & RCC_CFGR_SW_MASK) >> RCC_CFGR_SW_START; + switch(s->RCC_CFGR_SW) { + case 0x0: + case 0x1: + case 0x2: + clktree_set_selected_input(s->SYSCLK, s->RCC_CFGR_SW); + break; + default: + hw_error("Invalid input selected for SYSCLK"); + break; + } + + WARN_UNIMPLEMENTED(new_value, RCC_CFGR_MCO2_MASK, RCC_CFGR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, RCC_CFGR_MCO2PRE_MASK, RCC_CFGR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, RCC_CFGR_MCO1PRE_MASK, RCC_CFGR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CFGR_I2CSRC_BIT, RCC_CFGR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, RCC_CFGR_MCO1_MASK, RCC_CFGR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, RCC_CFGR_RTCPRE_MASK, RCC_CFGR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, RCC_CFGR_SWS_MASK, RCC_CFGR_RESET_VALUE); +} + +static uint32_t stm32_rcc_RCC_CIR_read(Stm32f2xxRcc *s) +{ + return s->RCC_CIR; +} + +static void stm32_rcc_RCC_CIR_write(Stm32f2xxRcc *s, uint32_t new_value, bool init) +{ + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_CSSC_BIT, RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_PLLI2SRDYC_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_PLLRDYC_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_HSERDYC_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_HSIRDYC_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_LSERDYC_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_LSIRDYC_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_PLLI2SRDYIE_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_PLLRDYIE_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_HSERDYIE_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_HSIRDYIE_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_LSERDYIE_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_LSIRDYIE_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_CSSF_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_PLLI2SRDYF_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_PLLRDYF_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_HSERDYF_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_HSIRDYF_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_LSERDYF_BIT , RCC_CIR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_CIR_LSIRDYF_BIT , RCC_CIR_RESET_VALUE); +} + +static uint32_t stm32_rcc_RCC_AHB1ENR_read(Stm32f2xxRcc *s) +{ + return s->RCC_AHB1ENR; +} + +static uint32_t stm32_rcc_RCC_AHB2ENR_read(Stm32f2xxRcc *s) +{ + return s->RCC_AHB2ENR; +} + +static uint32_t stm32_rcc_RCC_AHB3ENR_read(Stm32f2xxRcc *s) +{ + return s->RCC_AHB3ENR; +} + +static void stm32_rcc_RCC_AHB1ENR_write(Stm32f2xxRcc *s, uint32_t new_value, bool init) +{ + clktree_set_enabled(s->PERIPHCLK[STM32_DMA2], IS_BIT_SET(new_value, RCC_AHB1ENR_DMA2EN_BIT)); + clktree_set_enabled(s->PERIPHCLK[STM32_DMA1], IS_BIT_SET(new_value, RCC_AHB1ENR_DMA1EN_BIT)); + + clktree_set_enabled(s->PERIPHCLK[STM32_CRC], IS_BIT_SET(new_value, RCC_AHB1ENR_CRCEN_BIT)); + + clktree_set_enabled(s->PERIPHCLK[STM32_GPIOK], IS_BIT_SET(new_value, RCC_AHB1ENR_GPIOKEN_BIT)); + clktree_set_enabled(s->PERIPHCLK[STM32_GPIOJ], IS_BIT_SET(new_value, RCC_AHB1ENR_GPIOJEN_BIT)); + clktree_set_enabled(s->PERIPHCLK[STM32_GPIOI], IS_BIT_SET(new_value, RCC_AHB1ENR_GPIOIEN_BIT)); + clktree_set_enabled(s->PERIPHCLK[STM32_GPIOH], IS_BIT_SET(new_value, RCC_AHB1ENR_GPIOHEN_BIT)); + clktree_set_enabled(s->PERIPHCLK[STM32_GPIOG], IS_BIT_SET(new_value, RCC_AHB1ENR_GPIOGEN_BIT)); + clktree_set_enabled(s->PERIPHCLK[STM32_GPIOF], IS_BIT_SET(new_value, RCC_AHB1ENR_GPIOFEN_BIT)); + clktree_set_enabled(s->PERIPHCLK[STM32_GPIOE], IS_BIT_SET(new_value, RCC_AHB1ENR_GPIOEEN_BIT)); + clktree_set_enabled(s->PERIPHCLK[STM32_GPIOD], IS_BIT_SET(new_value, RCC_AHB1ENR_GPIODEN_BIT)); + clktree_set_enabled(s->PERIPHCLK[STM32_GPIOC], IS_BIT_SET(new_value, RCC_AHB1ENR_GPIOCEN_BIT)); + clktree_set_enabled(s->PERIPHCLK[STM32_GPIOB], IS_BIT_SET(new_value, RCC_AHB1ENR_GPIOBEN_BIT)); + clktree_set_enabled(s->PERIPHCLK[STM32_GPIOA], IS_BIT_SET(new_value, RCC_AHB1ENR_GPIOAEN_BIT)); + + s->RCC_AHB1ENR = new_value; + + WARN_UNIMPLEMENTED(new_value, 1 << RCC_AHB1ENR_OTGHSULPIEN_BIT, RCC_AHB1ENR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_AHB1ENR_OTGHSEN_BIT, RCC_AHB1ENR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_AHB1ENR_ETHMACPTPEN_BIT, RCC_AHB1ENR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_AHB1ENR_ETHMACRXEN_BIT, RCC_AHB1ENR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_AHB1ENR_ETHMACTXEN_BIT, RCC_AHB1ENR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_AHB1ENR_ETHMACEN_BIT, RCC_AHB1ENR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_AHB1ENR_BKPSRAMEN_BIT, RCC_AHB1ENR_RESET_VALUE); +} + +static void stm32_rcc_RCC_AHB2ENR_write(Stm32f2xxRcc *s, uint32_t new_value, bool init) +{ + clktree_set_enabled(s->PERIPHCLK[STM32_DCMI_PERIPH], + IS_BIT_SET(new_value, RCC_AHB2ENR_DCMIEN_BIT)); + clktree_set_enabled(s->PERIPHCLK[STM32_CRYP_PERIPH], + IS_BIT_SET(new_value, RCC_AHB2ENR_CRYPEN_BIT)); + clktree_set_enabled(s->PERIPHCLK[STM32_HASH_PERIPH], + IS_BIT_SET(new_value, RCC_AHB2ENR_HASHEN_BIT)); + clktree_set_enabled(s->PERIPHCLK[STM32_RNG_PERIPH], + IS_BIT_SET(new_value, RCC_AHB2ENR_RNGEN_BIT)); + s->RCC_AHB2ENR = new_value; +} + +static void stm32_rcc_RCC_AHB3ENR_write(Stm32f2xxRcc *s, uint32_t new_value, bool init) +{ + clktree_set_enabled(s->PERIPHCLK[STM32_FSMC], + IS_BIT_SET(new_value, RCC_AHB3ENR_FSMCEN_BIT)); + s->RCC_AHB3ENR = new_value; +} + +/* Write the APB2 peripheral clock enable register + * Enables/Disables the peripheral clocks based on each bit. */ +static void stm32_rcc_RCC_APB2ENR_write(Stm32f2xxRcc *s, uint32_t new_value, + bool init) +{ + /* TODO: enable/disable missing peripherals */ + stm32_rcc_periph_enable(s, new_value, init, STM32_SYSCFG, RCC_APB2ENR_SYSCFGEN_BIT); + stm32_rcc_periph_enable(s, new_value, init, STM32_UART1, RCC_APB2ENR_USART1EN_BIT); + stm32_rcc_periph_enable(s, new_value, init, STM32_UART6, RCC_APB2ENR_USART6EN_BIT); + + s->RCC_APB2ENR = new_value & RCC_APB2ENR_MASK; +} + +/* Write the APB1 peripheral clock enable register + * Enables/Disables the peripheral clocks based on each bit. */ +static void stm32_rcc_RCC_APB1ENR_write(Stm32f2xxRcc *s, uint32_t new_value, + bool init) +{ + stm32_rcc_periph_enable(s, new_value, init, STM32_UART8, + RCC_APB1ENR_USART8EN_BIT); + stm32_rcc_periph_enable(s, new_value, init, STM32_UART7, + RCC_APB1ENR_USART7EN_BIT); + stm32_rcc_periph_enable(s, new_value, init, STM32_UART5, + RCC_APB1ENR_USART5EN_BIT); + stm32_rcc_periph_enable(s, new_value, init, STM32_UART4, + RCC_APB1ENR_USART4EN_BIT); + stm32_rcc_periph_enable(s, new_value, init, STM32_UART3, + RCC_APB1ENR_USART3EN_BIT); + stm32_rcc_periph_enable(s, new_value, init, STM32_UART2, + RCC_APB1ENR_USART2EN_BIT); + + /* 0b00110110111111101100100111111111 */ + s->RCC_APB1ENR = new_value & 0x36fec9ff; +} + +static uint32_t stm32_rcc_RCC_BDCR_read(Stm32f2xxRcc *s) +{ + bool lseon = clktree_is_enabled(s->LSECLK); + + return GET_BIT_MASK(RCC_BDCR_LSERDY_BIT, lseon) | + GET_BIT_MASK(RCC_BDCR_LSEON_BIT, lseon) | 0x100; /* XXX force LSE */ +} + +static void stm32_rcc_RCC_BDCR_writeb0(Stm32f2xxRcc *s, uint8_t new_value, bool init) +{ + clktree_set_enabled(s->LSECLK, IS_BIT_SET(new_value, RCC_BDCR_LSEON_BIT)); + + WARN_UNIMPLEMENTED(new_value, 1 << RCC_BDCR_LSEBYP_BIT, RCC_BDCR_RESET_VALUE); +} + +static void stm32_rcc_RCC_BDCR_write(Stm32f2xxRcc *s, uint32_t new_value, bool init) +{ + stm32_rcc_RCC_BDCR_writeb0(s, new_value & 0xff, init); + + WARN_UNIMPLEMENTED(new_value, 1 << RCC_BDCR_BDRST_BIT, RCC_BDCR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, 1 << RCC_BDCR_RTCEN_BIT, RCC_BDCR_RESET_VALUE); + WARN_UNIMPLEMENTED(new_value, RCC_BDCR_RTCSEL_MASK, RCC_BDCR_RESET_VALUE); +} + +/* Works the same way as stm32_rcc_RCC_CR_read */ +static uint32_t stm32_rcc_RCC_CSR_read(Stm32f2xxRcc *s) +{ + bool lseon = clktree_is_enabled(s->LSICLK); + + return GET_BIT_MASK(RCC_CSR_LSIRDY_BIT, lseon) | + GET_BIT_MASK(RCC_CSR_LSION_BIT, lseon); +} + +/* Works the same way as stm32_rcc_RCC_CR_write */ +static void stm32_rcc_RCC_CSR_write(Stm32f2xxRcc *s, uint32_t new_value, bool init) +{ + clktree_set_enabled(s->LSICLK, IS_BIT_SET(new_value, RCC_CSR_LSION_BIT)); +} + + + +static uint64_t stm32_rcc_readw(void *opaque, hwaddr offset) +{ + Stm32f2xxRcc *s = (Stm32f2xxRcc *)opaque; + + switch (offset) { + case RCC_CR_OFFSET: + return stm32_rcc_RCC_CR_read(s); + case RCC_PLLCFGR_OFFSET: + return stm32_rcc_RCC_PLLCFGR_read(s); + case RCC_CFGR_OFFSET: + return stm32_rcc_RCC_CFGR_read(s); + case RCC_CIR_OFFSET: + return stm32_rcc_RCC_CIR_read(s); + case RCC_AHB1RSTR_OFFSET: + case RCC_AHB2RSTR_OFFSET: + case RCC_AHB3RSTR_OFFSET: + WARN_UNIMPLEMENTED_REG(offset); + return 0; + case RCC_APB1RSTR_OFFSET: + WARN_UNIMPLEMENTED_REG(offset); + return 0; + case RCC_APB2RSTR_OFFSET: + WARN_UNIMPLEMENTED_REG(offset); + return 0; + case RCC_AHB1ENR_OFFSET: + return stm32_rcc_RCC_AHB1ENR_read(s); + case RCC_AHB2ENR_OFFSET: + return stm32_rcc_RCC_AHB2ENR_read(s); + case RCC_AHB3ENR_OFFSET: + return stm32_rcc_RCC_AHB3ENR_read(s); + case RCC_APB1ENR_OFFSET: + return s->RCC_APB1ENR; + case RCC_APB2ENR_OFFSET: + return s->RCC_APB2ENR; + case RCC_AHB1LPENR_OFFSET: + case RCC_AHB2LPENR_OFFSET: + case RCC_AHB3LPENR_OFFSET: + case RCC_APB1LPENR_OFFSET: + case RCC_APB2LPENR_OFFSET: + WARN_UNIMPLEMENTED_REG(offset); + return 0; + case RCC_BDCR_OFFSET: + return stm32_rcc_RCC_BDCR_read(s); + case RCC_CSR_OFFSET: + return stm32_rcc_RCC_CSR_read(s); + case RCC_SSCGR_OFFSET: + WARN_UNIMPLEMENTED_REG(offset); + return 0; + case RCC_PLLI2SCFGR_OFFSET: + return stm32_rcc_RCC_PLLI2SCFGR_read(s); + default: + WARN_UNIMPLEMENTED_REG(offset); + break; + } + return 0; +} + +static void stm32_rcc_writeb(void *opaque, hwaddr offset, uint64_t value) +{ + Stm32f2xxRcc *s = (Stm32f2xxRcc *)opaque; + + switch (offset) { + case RCC_BDCR_OFFSET: + stm32_rcc_RCC_BDCR_writeb0(s, value, false); + break; + default: + STM32_BAD_REG(offset, 1); + break; + } +} + +static void stm32_rcc_writew(void *opaque, hwaddr offset, + uint64_t value) +{ + Stm32f2xxRcc *s = (Stm32f2xxRcc *)opaque; + + switch(offset) { + case RCC_CR_OFFSET: + stm32_rcc_RCC_CR_write(s, value, false); + break; + case RCC_PLLCFGR_OFFSET: + stm32_rcc_RCC_PLLCFGR_write(s, value, false); + break; + case RCC_CFGR_OFFSET: + stm32_rcc_RCC_CFGR_write(s, value, false); + break; + case RCC_CIR_OFFSET: + stm32_rcc_RCC_CIR_write(s, value, false); + break; + case RCC_APB1RSTR_OFFSET: + stm32_unimp("Unimplemented write: RCC_APB1RSTR_OFFSET 0x%x\n", (uint32_t)value); + break; + case RCC_APB2RSTR_OFFSET: + stm32_unimp("Unimplemented write: RCC_APB2RSTR_OFFSET 0x%x\n", (uint32_t)value); + break; + case RCC_AHB3RSTR_OFFSET: + WARN_UNIMPLEMENTED_REG(offset); + break; + case RCC_AHB1ENR_OFFSET: + stm32_rcc_RCC_AHB1ENR_write(s, value, false); + break; + case RCC_AHB2ENR_OFFSET: + stm32_rcc_RCC_AHB2ENR_write(s, value, false); + break; + case RCC_AHB3ENR_OFFSET: + stm32_rcc_RCC_AHB3ENR_write(s, value, false); + break; + case RCC_APB1LPENR_OFFSET: + case RCC_APB2LPENR_OFFSET: + WARN_UNIMPLEMENTED_REG(offset); + break; + case RCC_APB2ENR_OFFSET: + stm32_rcc_RCC_APB2ENR_write(s, value, false); + break; + case RCC_APB1ENR_OFFSET: + stm32_rcc_RCC_APB1ENR_write(s, value, false); + break; + case RCC_AHB1LPENR_OFFSET: + stm32_unimp("Unimplemented: RCC_AHB1LPENR_OFFSET\n"); + break; + case RCC_AHB2LPENR_OFFSET: + stm32_unimp("Unimplemented: RCC_AHB2LPENR_OFFSET\n"); + break; + case RCC_AHB3LPENR_OFFSET: + stm32_unimp("Unimplemented: RCC_AHB3LPENR_OFFSET\n"); + break; + case RCC_BDCR_OFFSET: + stm32_rcc_RCC_BDCR_write(s, value, false); + break; + case RCC_CSR_OFFSET: + stm32_rcc_RCC_CSR_write(s, value, false); + break; + case RCC_SSCGR_OFFSET: + WARN_UNIMPLEMENTED_REG(offset); + break; + case RCC_PLLI2SCFGR_OFFSET: + stm32_rcc_RCC_PLLI2SCFGR_write(s, value, false); + break; + default: + WARN_UNIMPLEMENTED_REG(offset); + break; + } +} + +static uint64_t stm32_rcc_read(void *opaque, hwaddr offset, + unsigned size) +{ + switch(size) { + case 4: + return stm32_rcc_readw(opaque, offset); + default: + stm32_unimp("Unimplemented: RCC read from register at offset %lld", offset); + return 0; + } +} + +static void stm32_rcc_write(void *opaque, hwaddr offset, + uint64_t value, unsigned size) +{ + switch(size) { + case 4: + stm32_rcc_writew(opaque, offset, value); + break; + case 1: + stm32_rcc_writeb(opaque, offset, value); + break; + default: + WARN_UNIMPLEMENTED_REG(offset); + break; + } +} + +static const MemoryRegionOps stm32_rcc_ops = { + .read = stm32_rcc_read, + .write = stm32_rcc_write, + .endianness = DEVICE_NATIVE_ENDIAN +}; + + +static void stm32_rcc_reset(DeviceState *dev) +{ + Stm32f2xxRcc *s = STM32F2XX_RCC(dev); + + stm32_rcc_RCC_CR_write(s, RCC_CR_RESET_VALUE, true); + stm32_rcc_RCC_PLLCFGR_write(s, RCC_PLLCFGR_RESET_VALUE, true); + stm32_rcc_RCC_CFGR_write(s, RCC_CFGR_RESET_VALUE, true); + stm32_rcc_RCC_APB2ENR_write(s, RCC_APB2ENR_RESET_VALUE, true); + stm32_rcc_RCC_APB1ENR_write(s, RCC_APB1ENR_RESET_VALUE, true); + stm32_rcc_RCC_BDCR_write(s, RCC_BDCR_RESET_VALUE, true); + stm32_rcc_RCC_CSR_write(s, RCC_CSR_RESET_VALUE, true); +} + +/* IRQ handler to handle updates to the HCLK frequency. + * This updates the SysTick scales. */ +static void stm32_rcc_hclk_upd_irq_handler(void *opaque, int n, int level) +{ + Stm32f2xxRcc *s = (Stm32f2xxRcc *)opaque; + + uint32_t hclk_freq = 0; + uint32_t ext_ref_freq = 0; + + hclk_freq = clktree_get_output_freq(s->HCLK); + + /* Only update the scales if the frequency is not zero. */ + if (hclk_freq > 0) { + ext_ref_freq = hclk_freq / 8; + + /* Update the scales - these are the ratio of QEMU clock ticks + * (which is an unchanging number independent of the CPU frequency) to + * system/external clock ticks. + */ + system_clock_scale = NANOSECONDS_PER_SECOND / hclk_freq; + } + +#ifdef DEBUG_STM32_RCC + DPRINTF("Cortex SYSTICK frequency set to %lu Hz (scale set to %d).\n", + (unsigned long)hclk_freq, system_clock_scale); +#endif +} + + + +/* DEVICE INITIALIZATION */ + +/* Set up the clock tree */ +static void stm32_rcc_init_clk(Stm32f2xxRcc *s) +{ + int i; + qemu_irq *hclk_upd_irq = + qemu_allocate_irqs(stm32_rcc_hclk_upd_irq_handler, s, 1); + + /* Make sure all the peripheral clocks are null initially. + * This will be used for error checking to make sure + * an invalid clock is not referenced (not all of the + * indexes will be used). + */ + for(i = 0; i < STM32_PERIPH_COUNT; i++) { + s->PERIPHCLK[i] = NULL; + } + + /* Initialize clocks */ + /* Source clocks are initially disabled, which represents + * a disabled oscillator. Enabling the clock represents + * turning the clock on. + */ + s->HSICLK = clktree_create_src_clk("HSI", HSI_FREQ, false); + s->LSICLK = clktree_create_src_clk("LSI", LSI_FREQ, false); + s->HSECLK = clktree_create_src_clk("HSE", s->osc_freq, false); + s->LSECLK = clktree_create_src_clk("LSE", s->osc32_freq, false); + + s->IWDGCLK = clktree_create_clk("IWDGCLK", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, + s->LSICLK, NULL); + s->RTCCLK = clktree_create_clk("RTCCLK", 1, 1, false, CLKTREE_NO_MAX_FREQ, + CLKTREE_NO_INPUT, s->LSECLK, s->LSICLK, s->HSECLK, NULL); + + s->PLLM = clktree_create_clk("PLLM", 1, 16, true, CLKTREE_NO_MAX_FREQ, 0, s->HSICLK, + s->HSECLK, NULL); + s->PLLCLK = clktree_create_clk("PLLCLK", 1, 2, false, 120000000, 0, s->PLLM, NULL); + s->PLL48CLK = clktree_create_clk("PLL48CLK", 1, 1, false, 48000000, 0, s->PLLM, NULL); + + s->PLLI2SM = clktree_create_clk("PLLI2SM", 1, 16, true, CLKTREE_NO_MAX_FREQ, 0, s->PLLM, NULL); + s->PLLI2SCLK = clktree_create_clk("PLLI2SCLK", 1, 2, false, 120000000, 0, s->PLLI2SM, NULL); + + s->SYSCLK = clktree_create_clk("SYSCLK", 1, 1, true, 168000000, CLKTREE_NO_INPUT, + s->HSICLK, s->HSECLK, s->PLLCLK, NULL); + + // HCLK: to AHB bus, core memory and DMA + s->HCLK = clktree_create_clk("HCLK", 0, 1, true, 168000000, 0, s->SYSCLK, NULL); + clktree_adduser(s->HCLK, hclk_upd_irq[0]); + + // Clock source for APB1 peripherals: + s->PCLK1 = clktree_create_clk("PCLK1", 0, 1, true, 30000000, 0, s->HCLK, NULL); + + // Clock source for APB2 peripherals: + s->PCLK2 = clktree_create_clk("PCLK2", 0, 1, true, 60000000, 0, s->HCLK, NULL); + + /* Peripheral clocks */ + s->PERIPHCLK[STM32_GPIOA] = + clktree_create_clk("GPIOA", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + s->PERIPHCLK[STM32_GPIOB] = + clktree_create_clk("GPIOB", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + s->PERIPHCLK[STM32_GPIOC] = + clktree_create_clk("GPIOC", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + s->PERIPHCLK[STM32_GPIOD] = + clktree_create_clk("GPIOD", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + s->PERIPHCLK[STM32_GPIOE] = + clktree_create_clk("GPIOE", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + s->PERIPHCLK[STM32_GPIOF] = + clktree_create_clk("GPIOF", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + s->PERIPHCLK[STM32_GPIOG] = + clktree_create_clk("GPIOG", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + s->PERIPHCLK[STM32_GPIOH] = + clktree_create_clk("GPIOH", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + s->PERIPHCLK[STM32_GPIOI] = + clktree_create_clk("GPIOI", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + s->PERIPHCLK[STM32_GPIOJ] = + clktree_create_clk("GPIOJ", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + s->PERIPHCLK[STM32_GPIOK] = + clktree_create_clk("GPIOK", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + + s->PERIPHCLK[STM32_CRC] = + clktree_create_clk("CRC", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + + s->PERIPHCLK[STM32_DMA1] = + clktree_create_clk("DMA1", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + s->PERIPHCLK[STM32_DMA2] = + clktree_create_clk("DMA2", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + + s->PERIPHCLK[STM32_SYSCFG] = + clktree_create_clk("SYSCFG", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK2, NULL); + + s->PERIPHCLK[STM32_UART1] = + clktree_create_clk("UART1", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK2, NULL); + s->PERIPHCLK[STM32_UART2] = + clktree_create_clk("UART2", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK1, NULL); + s->PERIPHCLK[STM32_UART3] = + clktree_create_clk("UART3", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK1, NULL); + s->PERIPHCLK[STM32_UART4] = + clktree_create_clk("UART4", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK1, NULL); + s->PERIPHCLK[STM32_UART5] = + clktree_create_clk("UART5", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK1, NULL); + s->PERIPHCLK[STM32_UART6] = + clktree_create_clk("UART6", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK2, NULL); + s->PERIPHCLK[STM32_UART7] = + clktree_create_clk("UART7", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK1, NULL); + s->PERIPHCLK[STM32_UART8] = + clktree_create_clk("UART8", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->PCLK1, NULL); + + + s->PERIPHCLK[STM32_DCMI_PERIPH] = + clktree_create_clk("DCMI", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + s->PERIPHCLK[STM32_CRYP_PERIPH] = + clktree_create_clk("CRYP", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + s->PERIPHCLK[STM32_HASH_PERIPH] = + clktree_create_clk("HASH", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + s->PERIPHCLK[STM32_RNG_PERIPH] = + clktree_create_clk("RNG", 1, 1, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); + + s->PERIPHCLK[STM32_FSMC] = + clktree_create_clk("FSMC", 1, 2, false, CLKTREE_NO_MAX_FREQ, 0, s->HCLK, NULL); +} + + + +static void stm32_rcc_realize(DeviceState *obj, Error **pError) +{ + Stm32f2xxRcc *s = STM32F2XX_RCC(obj); + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + + memory_region_init_io(&s->iomem, OBJECT(s), &stm32_rcc_ops, s, + "rcc", 0x40023BFF - 0x40023800 + 1); + + sysbus_init_mmio(dev, &s->iomem); + + sysbus_init_irq(dev, &s->irq); + + stm32_rcc_init_clk(s); +} + + +static Property stm32_rcc_properties[] = { + DEFINE_PROP_UINT32("osc_freq", Stm32f2xxRcc, osc_freq, 0), + DEFINE_PROP_UINT32("osc32_freq", Stm32f2xxRcc, osc32_freq, 0), + DEFINE_PROP_END_OF_LIST() +}; + + +static void stm32_rcc_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); + + dc->realize = stm32_rcc_realize, + dc->reset = stm32_rcc_reset; + device_class_set_props(dc, stm32_rcc_properties); +} + +static TypeInfo stm32_rcc_info = { + .name = TYPE_STM32F2XX_RCC, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(Stm32f2xxRcc), + .class_init = stm32_rcc_class_init +}; + +static void stm32_rcc_register_types(void) +{ + type_register_static(&stm32_rcc_info); +} + +type_init(stm32_rcc_register_types) diff --git a/hw/arm/stm32f2xx_rcc.h b/hw/arm/stm32f2xx_rcc.h new file mode 100644 index 0000000000000..54ded12733b07 --- /dev/null +++ b/hw/arm/stm32f2xx_rcc.h @@ -0,0 +1,78 @@ +#include "hw/sysbus.h" +#include "hw/arm/stm32_clktree.h" +#include "stm32f2xx.h" +#include "stm32_rcc.h" + +typedef struct Stm32f2xxRcc { + /* Inherited */ + union { + Stm32Rcc inherited; + struct { + /* Inherited */ + SysBusDevice busdev; + + /* Properties */ + uint32_t osc_freq; + uint32_t osc32_freq; + + /* Private */ + MemoryRegion iomem; + qemu_irq irq; + }; + }; + + /* Peripheral clocks */ + Clk PERIPHCLK[STM32_PERIPH_COUNT], // MUST be first field after `inherited`, because Stm32Rcc's last field aliases this array + HSICLK, + HSECLK, + LSECLK, + LSICLK, + SYSCLK, + IWDGCLK, + RTCCLK, + + PLLM, /* Applies "M" division and "N" multiplication factors for PLL */ + PLLCLK, + PLL48CLK, + + PLLI2SM, /* Applies "M" division and "N" multiplication factors for PLLI2S */ + PLLI2SCLK, + + HCLK, /* Output from AHB Prescaler */ + PCLK1, /* Output from APB1 Prescaler */ + PCLK2; /* Output from APB2 Prescaler */ + + /* Register Values */ + uint32_t + RCC_CIR, + RCC_APB1ENR, + RCC_APB2ENR; + + /* Register Field Values */ + uint32_t + RCC_CFGR_PPRE1, + RCC_CFGR_PPRE2, + RCC_CFGR_HPRE, + RCC_AHB1ENR, + RCC_AHB2ENR, + RCC_AHB3ENR, + RCC_CFGR_SW, + RCC_PLLCFGR, + RCC_PLLI2SCFGR; + + uint8_t + RCC_PLLCFGR_PLLM, + RCC_PLLCFGR_PLLP, + RCC_PLLCFGR_PLLSRC; + + uint16_t + RCC_PLLCFGR_PLLN; + + uint8_t + RCC_PLLI2SCFGR_PLLR, + RCC_PLLI2SCFGR_PLLQ; + + uint16_t + RCC_PLLI2SCFGR_PLLN; + +} Stm32f2xxRcc; diff --git a/hw/arm/stm32f2xx_rtc.c b/hw/arm/stm32f2xx_rtc.c new file mode 100644 index 0000000000000..9e512f0ea7e70 --- /dev/null +++ b/hw/arm/stm32f2xx_rtc.c @@ -0,0 +1,694 @@ +/*- + * Copyright (c) 2013 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +/* + * QEMU stm32f2xx RTC emulation + */ + +#include "qemu/osdep.h" +#include +#include "hw/sysbus.h" +#include "qemu/timer.h" +#include "hw/arm/stm32.h" +#include "hw/qdev-properties.h" +#include "hw/irq.h" +#include "qemu/bcd.h" +#include "qemu/cutils.h" + +// Define this to add extra BKUP registers past the normal ones implemented by the STM. +// For Pebble emulation, we use these to pass settings flags to the emulated target +#define STM32F2XX_RTC_NUM_EXTRA_BKUP_REG 1 + +//#define DEBUG_STM32F2XX_RTC +#ifdef DEBUG_STM32F2XX_RTC +// NOTE: The usleep() helps the MacOS stdout from freezing when we have a lot of print out +#define DPRINTF(fmt, ...) \ + do { printf("DEBUG_STM32F2XX_RTC: " fmt , ## __VA_ARGS__); \ + usleep(100); \ + } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + + + +#define R_RTC_TR (0x00 / 4) +#define R_RTC_DR (0x04 / 4) +#define R_RTC_CR (0x08 / 4) +#define R_RTC_CR_ALRAE_BIT 8 +#define R_RTC_CR_WUTE 0x00000400 +#define R_RTC_CR_WUTIE 0x00004000 + +#define R_RTC_ISR (0x0c / 4) +#define R_RTC_ISR_RESET 0x00000007 +#define R_RTC_ISR_RSF 0x00000020 +#define R_RTC_ISR_WUT 0x00000400 + +#define R_RTC_PRER (0x10 / 4) +#define R_RTC_PRER_PREDIV_A_MASK 0x7f +#define R_RTC_PRER_PREDIV_A_SHIFT 16 +#define R_RTC_PRER_PREDIV_S_MASK 0x1fff +#define R_RTC_PRER_PREDIV_S_SHIFT 0 +#define R_RTC_PRER_RESET 0x007f00ff +#define R_RTC_WUTR (0x14 / 4) +#define R_RTC_WUTR_RESET 0x0000ffff +#define R_RTC_CALIBR (0x18 / 4) +#define R_RTC_ALRMAR (0x1c / 4) +#define R_RTC_ALRMBR (0x20 / 4) +#define R_RTC_WPR (0x24 / 4) +#define R_RTC_SSR (0x28 / 4) +#define R_RTC_TSTR (0x30 / 4) +#define R_RTC_TSDR (0x34 / 4) +#define R_RTC_TAFCR (0x40 / 4) +#define R_RTC_BKPxR (0x50 / 4) +#define R_RTC_BKPxR_LAST (0x9c / 4) +#define R_RTC_BKPxR_INC_EXTRA_LAST (R_RTC_BKPxR_LAST + STM32F2XX_RTC_NUM_EXTRA_BKUP_REG) +#define R_RTC_MAX (R_RTC_BKPxR_INC_EXTRA_LAST + 1) + +#define R_RTC_CR_FMT_MASK (0x01 << 6) + +#define DEBUG_ALARM(x...) + +typedef struct f2xx_rtc { + SysBusDevice busdev; + MemoryRegion iomem; + QEMUTimer *timer; + QEMUTimer *wu_timer; + qemu_irq irq[2]; + qemu_irq wut_irq; + + // target_us = host_us + host_to_target_offset_us + int64_t host_to_target_offset_us; + + // target time in ticks (seconds according to the RTC registers) + time_t ticks; + + uint32_t regs[R_RTC_MAX]; + int wp_count; /* Number of correct writes to WP reg */ +} f2xx_rtc; + + +// Update target date and time from the host +static void f2xx_update_current_date_and_time(void *arg); + + +// Compute the period for the clock (seconds increments) in nanoseconds +static uint64_t +f2xx_clock_period_ns(f2xx_rtc *s) +{ + uint32_t prer = s->regs[R_RTC_PRER]; + unsigned int prescale; + + // NOTE: We are making the assumption here, as in f2xx_wut_period_ns, that RTC_CLK + // is the 32768 LSE clock + prescale = (((prer >> R_RTC_PRER_PREDIV_A_SHIFT) & R_RTC_PRER_PREDIV_A_MASK) + 1) * + (((prer >> R_RTC_PRER_PREDIV_S_SHIFT) & R_RTC_PRER_PREDIV_S_MASK) + 1); + uint64_t result = 1000000000LL * prescale / 32768; + + //DPRINTF("%s: period = %lldns\n", __func__, result); + return result; +} + + +// Compute the period for the wakeup timer in nanoseconds if the WUT counter is set to the +// given value +static uint64_t +f2xx_wut_period_ns(f2xx_rtc *s, uint32_t counter) +{ + uint32_t clock_sel = s->regs[R_RTC_CR] & 0x07; + + // NOTE: We are making the assumption here, as in f2xx_clock_period_ns, that RTC_CLK + // is the 32768 LSE clock + uint64_t rtc_clk_period_ns = 1000000000LL / 32768; + + // Using the synchronous clock (clk_spre) + if (clock_sel & 0x04) { + if (clock_sel & 0x02) { + return counter * f2xx_clock_period_ns(s); + } else { + return (counter + 65536) * f2xx_clock_period_ns(s); + } + } else if (clock_sel == 0) { + return counter * rtc_clk_period_ns * 16; + } else if (clock_sel == 1) { + return counter * rtc_clk_period_ns * 8; + } else if (clock_sel == 2) { + return counter * rtc_clk_period_ns * 4; + } else if (clock_sel == 3) { + return counter * rtc_clk_period_ns * 2; + } else { + abort(); + } +} + + +// Set the time and registers based on the content of the passed in tm struct +static void +f2xx_rtc_set_time_and_date_registers(f2xx_rtc *s, struct tm *tm) +{ + uint8_t wday; + + wday = tm->tm_wday == 0 ? tm->tm_wday : 7; + s->regs[R_RTC_TR] = to_bcd(tm->tm_sec) | + to_bcd(tm->tm_min) << 8 | + to_bcd(tm->tm_hour) << 16; + s->regs[R_RTC_DR] = to_bcd(tm->tm_mday) | + to_bcd(tm->tm_mon + 1) << 8 | + wday << 13 | + to_bcd(tm->tm_year % 100) << 16; +} + + +// Compute what time we want in the target based on the host's current date and time. +// This takes into consideration the host_to_target_offset_us we have computed and captured +// previously. +// The rtc_period_ns passed in is the number of nanoseconds in host time that corresponds to 1 +// "tick" (i.e. a second increment in the RTC register). Usually, you would expect this to +// be 1e9, but on Pebble plastic for example, the firmware sets up the RTC so that the +// seconds increment 1024 times/sec. +static time_t +f2xx_rtc_compute_target_time_from_host_time(f2xx_rtc *s, uint64_t rtc_period_ns, + struct tm *target_tm) +{ + // Get the host time in microseconds + struct timeval tv; + gettimeofday(&tv, NULL); + int64_t host_time_us = tv.tv_sec * 1000000LL + (tv.tv_usec); + + // Compute the target time by adding the offset + int64_t target_time_us = host_time_us + s->host_to_target_offset_us; + + // Convert to target ticks according period set in the RTC + time_t target_time_ticks = (target_time_us * 1000) / rtc_period_ns; + + // Convert to date, hour, min, sec components + gmtime_r(&target_time_ticks, target_tm); + + +#ifdef DEBUG_STM32F2XX_RTC + char new_date_time[256]; + strftime(new_date_time, sizeof(new_date_time), "%c", target_tm); + //DPRINTF("%s: setting new date & time to: %s\n", __func__, new_date_time); +#endif + return target_time_ticks; +} + + +// Return the current date and time as stored in the RTC TR and DR registers in two forms: +// By filling in the passed in tm struct and by returning the UTC time in seconds. +static time_t +f2xx_rtc_get_current_target_time(f2xx_rtc *s, struct tm *target_tm) +{ + memset(target_tm, 0, sizeof(*target_tm)); + + // Fill in the target_tm from the contents of the time register and date registers + uint32_t time_reg = s->regs[R_RTC_TR]; + + target_tm->tm_hour = from_bcd((time_reg & 0x003F0000) >> 16); + bool pm = (time_reg & 0x00800000) != 0; + if (pm && (s->regs[R_RTC_CR] & R_RTC_CR_FMT_MASK)) { + target_tm->tm_hour += 12; + } + target_tm->tm_min = from_bcd((time_reg & 0x00007F00) >> 8); + target_tm->tm_sec = from_bcd(time_reg & 0x0000007F); + + uint32_t date_reg = s->regs[R_RTC_DR]; + target_tm->tm_mday = from_bcd(date_reg & 0x3f); + target_tm->tm_mon = from_bcd((date_reg & 0x00001F00) >> 8) - 1; + target_tm->tm_year = from_bcd((date_reg & 0x00FF0000) >> 16) + 100; + + // Have mktime fill in the remaining fields and return the UTC seconds as well + return mktimegm(target_tm); +} + + + +// Compute the host to target offset based on the passed in target ticks and the current +// host time. +static int64_t +f2xx_rtc_compute_host_to_target_offset(f2xx_rtc *s, int64_t period_ns, time_t target_ticks) +{ + // Convert target ticks to real clock microseconds + int64_t target_time_us = target_ticks * period_ns / 1000; + + // Get the host time in microseconds + struct timeval tv; + gettimeofday(&tv, NULL); + int64_t host_time_us = tv.tv_sec * 1000000LL + (tv.tv_usec); + + // Get the host to target offset in micro seconds + return target_time_us - host_time_us; +} + + +static uint64_t +f2xx_rtc_read(void *arg, hwaddr addr, unsigned int size) +{ + f2xx_rtc *s = arg; + uint32_t r; + int offset = addr & 0x3; + + addr >>= 2; + if (addr >= R_RTC_MAX) { + qemu_log_mask(LOG_GUEST_ERROR, "invalid read f2xx rtc register 0x%x\n", + (unsigned int)addr << 2); + DPRINTF(" %s: result: 0\n", __func__); + return 0; + } + + // If reading the time or date register, make sure they are brought up to date first + if (addr == R_RTC_TR || addr == R_RTC_DR) { + f2xx_update_current_date_and_time(s); + } + + uint32_t value = s->regs[addr]; + if (addr == R_RTC_ISR) { + value |= R_RTC_ISR_RSF; + } + + // HACK for Pebble. Clear the "entered standby" bit. If this bit is set, the Pebble + // will only continue booting if one of the buttons is held down. Because the button GPIOs + // are setup AFTER QEMU gets the key press event, it is difficult to set the GPIOs according + // to the buttons held down before the reset. + if (addr == R_RTC_BKPxR) { + value &= ~0x10000; + } + + // If reading the sub-second register, determine what it should be from the current + // host time + if (addr == R_RTC_SSR) { + // How many ns are in in a full cycle of the subsecond counter? + uint32_t prer = s->regs[R_RTC_PRER];; + uint32_t prer_s = (prer >> R_RTC_PRER_PREDIV_S_SHIFT) & R_RTC_PRER_PREDIV_S_MASK; + + uint64_t full_cycle_us = f2xx_clock_period_ns(s) / 1000; + + // What fraction of a full cycle are we in? + struct timeval tv; + gettimeofday(&tv, NULL); + int64_t host_time_us = tv.tv_sec * 1000000LL + (tv.tv_usec); + host_time_us += s->host_to_target_offset_us; + + int64_t host_mod = host_time_us % full_cycle_us; + double fract = (double)host_mod / full_cycle_us; + + // Compute the prescaler value + value = prer_s - (fract * prer_s); + DPRINTF("%s: SSR value = %d\n", __func__, value); + } + + r = (value >> offset * 8) & ((1ull << (8 * size)) - 1); + +#ifdef DEBUG_STM32F2XX_RTC + // Debug printing + if (addr == R_RTC_TR || addr == R_RTC_DR) { + struct tm target_tm; + f2xx_rtc_get_current_target_time(s, &target_tm); + + char date_time_str[256]; + strftime(date_time_str, sizeof(date_time_str), "%x %X", &target_tm); + DPRINTF("%s: current date/time: %s\n", __func__, date_time_str); + } else { + DPRINTF("%s: addr: 0x%llx, size: %d, value: 0x%x\n", __func__, addr << 2, size, r); + } +#endif + + return r; +} + +static void +f2xx_rtc_write(void *arg, hwaddr addr, uint64_t data, unsigned int size) +{ + f2xx_rtc *s = arg; + int offset = addr & 0x3; + bool compute_new_target_offset = false; + bool update_wut = false; + + DPRINTF("%s: addr: 0x%llx, data: 0x%llx, size: %d\n", __func__, addr, data, size); + + addr >>= 2; + if (addr >= R_RTC_MAX) { + qemu_log_mask(LOG_GUEST_ERROR, "invalid write f2xx rtc register 0x%x\n", + (unsigned int)addr << 2); + return; + } + + /* Special case for write protect state machine. */ + if (addr == R_RTC_WPR) { + if (offset > 0) { + return; + } + data &= 0xff; + if ((s->wp_count == 0 && data == 0xca) || + (s->wp_count == 1 && data == 0x53)) { + s->wp_count++; + } else { + s->wp_count = 0; + } + s->regs[addr] = data; + return; + } + + switch(size) { + case 1: + data = (s->regs[addr] & ~(0xff << (offset * 8))) | data << (offset * 8); + break; + case 2: + data = (s->regs[addr] & ~(0xffff << (offset * 8))) | data << (offset * 8); + break; + case 4: + break; + default: + abort(); + } + if (addr >= R_RTC_BKPxR && addr <= R_RTC_BKPxR_INC_EXTRA_LAST) { + s->regs[addr] = data; + return; + } + /* Write protect */ + if (s->wp_count < 2 && addr != R_RTC_TAFCR && addr != R_RTC_ISR + && addr != R_RTC_WPR) { + qemu_log_mask(LOG_GUEST_ERROR, "f2xx rtc write reg 0x%x+%u without wp disable\n", + (unsigned int)addr << 2, offset); + return; + } + switch(addr) { + case R_RTC_TR: + case R_RTC_DR: + compute_new_target_offset = true; + break; + case R_RTC_CR: + if ((data & R_RTC_CR_WUTE) != (s->regs[R_RTC_CR] & R_RTC_CR_WUTE)) { + update_wut = true; + } + break; + case R_RTC_ISR: + if ((data & 1<<8) == 0 && (s->regs[R_RTC_ISR] & 1<<8) != 0) { + DPRINTF("f2xx rtc isr lowered\n"); + qemu_irq_lower(s->irq[0]); + } + if ((data & 1<<10) == 0 && (s->regs[R_RTC_ISR] & 1<<10) != 0) { + DPRINTF("f2xx rtc WUT isr lowered\n"); + qemu_irq_lower(s->wut_irq); + } + break; + case R_RTC_PRER: + /* + * XXX currently updates upon next clock tick. To do this properly we + * would need to account for the time already elapsed, and then update + * the timer for the remaining period. + */ + break; + case R_RTC_WUTR: + update_wut = true; + break; + case R_RTC_ALRMAR: + case R_RTC_ALRMBR: + break; + case R_RTC_TAFCR: + if (data) { + qemu_log_mask(LOG_UNIMP, + "f2xx rtc unimplemented write TAFCR+%u size %u val %u\n", + offset, size, (unsigned int)data); + } + break; + default: + qemu_log_mask(LOG_UNIMP, "f2xx rtc unimplemented write 0x%x+%u size %u val 0x%x\n", + (unsigned int)addr << 2, offset, size, (unsigned int)data); + } + s->regs[addr] = data; + + + // Do we need to recompute the host to target offset? + if (compute_new_target_offset) { + struct tm target_tm; + // Recompute ticks based on the modified contents of the TR and DR registers + s->ticks = f2xx_rtc_get_current_target_time(s, &target_tm); + // Update the host to target offset as well + s->host_to_target_offset_us = f2xx_rtc_compute_host_to_target_offset(s, + f2xx_clock_period_ns(s), s->ticks); + } + + // Do we need to update the timer for the wake-up-timer? + if (update_wut) { + if (s->regs[R_RTC_CR] & R_RTC_CR_WUTE) { + int64_t elapsed = f2xx_wut_period_ns(s, s->regs[R_RTC_WUTR]); + DPRINTF("%s: scheduling WUT to fire in %f ms\n", __func__, (float)elapsed/1000000.0); + timer_mod(s->wu_timer, qemu_clock_get_ns(QEMU_CLOCK_REALTIME) + elapsed); + } else { + DPRINTF("%s: Cancelling WUT\n", __func__); + qemu_set_irq(s->wut_irq, 0); + timer_del(s->wu_timer); + } + } +} + + +static bool +f2xx_alarm_match(f2xx_rtc *s, uint32_t alarm_reg) +{ + uint32_t tr = s->regs[R_RTC_TR]; + + if ((alarm_reg & (1<<7)) == 0 && (tr & 0x7f) != (alarm_reg & 0x7f)) { + /* Seconds match requested, but do not match. */ + return false; + } + if ((alarm_reg & (1<<15)) == 0 && (tr & 0x7f00) != (alarm_reg & 0x7f00)) { + /* Minutes match requested, but do not match. */ + return false; + } + if ((alarm_reg & (1<<23)) == 0 && (tr & 0x7f0000) != (alarm_reg & 0x7f0000)) { + /* Hours match requested, but do not match. */ + return false; + } + if ((alarm_reg & (1<<31)) == 0) { /* Day match. */ + uint32_t dr = s->regs[R_RTC_DR]; + if (alarm_reg & (1<<30)) { /* Day is week day. */ + if (((alarm_reg>>24) & 0xf) != ((dr>>13) & 0xf)) { + return false; + } + } else { /* Day is day of month. */ + if (((alarm_reg>>24) & 0x3f) != (dr & 0x3f)) { + return false; + } + } + } + return true; +} + +static void +f2xx_alarm_check(f2xx_rtc *s, int unit) +{ + uint32_t cr = s->regs[R_RTC_CR]; + uint32_t isr = s->regs[R_RTC_ISR]; + + if ((cr & 1<<(R_RTC_CR_ALRAE_BIT + unit)) == 0) { + return; /* Not enabled. */ + } + + if ((isr & 1<<(R_RTC_CR_ALRAE_BIT + unit)) == 0) { + if (f2xx_alarm_match(s, s->regs[R_RTC_ALRMAR + unit])) { + isr |= 1<<(8 + unit); + s->regs[R_RTC_ISR] = isr; + DPRINTF("f2xx rtc alarm activated 0x%x 0x%x\n", isr, cr); + } + } + qemu_set_irq(s->irq[unit], cr & 1<<(12 + unit) && isr & 1<<(8 + unit)); +} + +// This method updates the current time and date registers to match the current +// host time. While it advances the target time, it checks for alarms that need to fire. +static void +f2xx_update_current_date_and_time(void *arg) +{ + f2xx_rtc *s = arg; + uint64_t period_ns = f2xx_clock_period_ns(s); + + struct tm new_target_tm; + time_t new_target_ticks = f2xx_rtc_compute_target_time_from_host_time(s, + period_ns, &new_target_tm); + + + // Normally, we would advance the target ticks until we catch up to the host ticks and + // check for an alarm at each tick. But, if the clocks got too far off (host or target + // changed time), just jam in the new target time without checking alarms + int delta = new_target_ticks - s->ticks; + //DPRINTF("%s: advancing target by %d ticks\n", __func__, delta); + if (delta < 0 || delta > 1000) { + printf("DEBUG_STM32F2XX_RTC %s: detected %d mismatch between host and target ticks, " + "jamming new host time into RTC without checking for alarms\n", __func__, delta); + s->ticks = new_target_ticks; + f2xx_rtc_set_time_and_date_registers(s, &new_target_tm); + } else { + while (s->ticks != new_target_ticks) { + s->ticks += 1; + gmtime_r(&s->ticks, &new_target_tm); + f2xx_rtc_set_time_and_date_registers(s, &new_target_tm); + + f2xx_alarm_check(s, 0); + f2xx_alarm_check(s, 1); + } + } + + // Reschedule tick timer to run one tick from now to check for alarms again + timer_mod(s->timer, qemu_clock_get_ns(QEMU_CLOCK_HOST) + period_ns); +} + + +// This timer runs on every tick (usually second) +static void +f2xx_timer(void *arg) +{ + f2xx_rtc *s = arg; + f2xx_update_current_date_and_time(s); +} + + +// This timer fires when the wake up time has expired +static void +f2xx_wu_timer(void *arg) +{ + f2xx_rtc *s = arg; + + DPRINTF("%s: fired\n", __func__); + + // Fire the interrupt? + uint32_t cr = s->regs[R_RTC_CR]; + uint32_t isr = s->regs[R_RTC_ISR]; + + // Make sure WUT is enabled + if ( (cr & R_RTC_CR_WUTE) == 0 ) { + return; /* Not enabled */ + } + + // If interrupt not already asserted, assert it + if ( (isr & R_RTC_ISR_WUT) == 0 ) { + isr |= R_RTC_ISR_WUT; + s->regs[R_RTC_ISR] = isr; + DPRINTF("f2xx wakeup timer ISR activated 0x%x 0x%x\n", isr, cr); + } + + qemu_set_irq(s->wut_irq, (cr & R_RTC_CR_WUTIE) && (isr & R_RTC_ISR_WUT)); + + // Reschedule again + int64_t elapsed = f2xx_wut_period_ns(s, s->regs[R_RTC_WUTR]); + timer_mod(s->wu_timer, qemu_clock_get_ns(QEMU_CLOCK_REALTIME) + elapsed); +} + + +// External interface to set the value of an "extra" backup register. This can be used to +// communicate emulator specific settings to the target +void f2xx_rtc_set_extra_bkup_reg(void *opaque, uint32_t idx, uint32_t value) +{ + f2xx_rtc *s = (f2xx_rtc *)opaque; + + // Copy in the extra backup registers that were specified via properties + assert(idx < STM32F2XX_RTC_NUM_EXTRA_BKUP_REG); + s->regs[R_RTC_BKPxR_LAST + 1 + idx] = value; +} + + + +static const MemoryRegionOps f2xx_rtc_ops = { + .read = f2xx_rtc_read, + .write = f2xx_rtc_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .impl = { + .min_access_size = 1, + .max_access_size = 4, + } +}; + +static void f2xx_rtc_reset(DeviceState *dev) +{ + f2xx_rtc *s = STM32F2XX_RTC(dev); + s->regs[R_RTC_CR] = 0; +} + +static void +f2xx_rtc_init(Object *obj) +{ + f2xx_rtc *s = STM32F2XX_RTC(obj); + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + + memory_region_init_io(&s->iomem, OBJECT(s), &f2xx_rtc_ops, s, "rtc", 0x03ff); + sysbus_init_mmio(dev, &s->iomem); + + sysbus_init_irq(dev, &s->irq[0]); + sysbus_init_irq(dev, &s->irq[1]); + sysbus_init_irq(dev, &s->wut_irq); + + s->regs[R_RTC_ISR] = R_RTC_ISR_RESET; + s->regs[R_RTC_PRER] = R_RTC_PRER_RESET; + s->regs[R_RTC_WUTR] = R_RTC_WUTR_RESET; + + uint32_t period_ns = f2xx_clock_period_ns(s); + DPRINTF("%s: period: %d ns\n", __func__, period_ns); + + // Init the time and date registers from the time on the host as the default + s->host_to_target_offset_us = 0; + struct tm now; + qemu_get_timedate(&now, 0); + + // Set time and date registers from the now struct + f2xx_rtc_set_time_and_date_registers(s, &now); + + // Compute current ticks and host to target offset + s->ticks = mktimegm(&now); + s->host_to_target_offset_us = f2xx_rtc_compute_host_to_target_offset(s, + f2xx_clock_period_ns(s), s->ticks); + + s->timer = timer_new_ns(QEMU_CLOCK_HOST, f2xx_timer, s); + timer_mod(s->timer, qemu_clock_get_ns(QEMU_CLOCK_HOST) + period_ns); + + s->wu_timer = timer_new_ns(QEMU_CLOCK_REALTIME, f2xx_wu_timer, s); +} + +static Property f2xx_rtc_properties[] = { + DEFINE_PROP_END_OF_LIST(), +}; + +static void +f2xx_rtc_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + + //TODO: fix this: dc->no_user = 1; + device_class_set_props(dc, f2xx_rtc_properties); + dc->reset = f2xx_rtc_reset; +} + +static const TypeInfo +f2xx_rtc_info = { + .name = TYPE_STM32F2XX_RTC, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(f2xx_rtc), + .instance_init = f2xx_rtc_init, + .class_init = f2xx_rtc_class_init, +}; + +static void +f2xx_rtc_register_types(void) +{ + type_register_static(&f2xx_rtc_info); +} + +type_init(f2xx_rtc_register_types) diff --git a/hw/arm/stm32f2xx_syscfg.c b/hw/arm/stm32f2xx_syscfg.c new file mode 100644 index 0000000000000..1ba1b7279ba7a --- /dev/null +++ b/hw/arm/stm32f2xx_syscfg.c @@ -0,0 +1,278 @@ +/* + * STM32F2XX Microcontroller SYSCFG (System Configuration Controller) module + * + * Copyright (C) 2013 Martijn The + * + * Implementation based on ST Microelectronics "RM0033 Reference Manual Rev 4" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "stm32f2xx.h" +#include "hw/hw.h" +#include "hw/qdev-properties.h" + + + +/* DEFINITIONS */ + +#define SYSCFG_MEMRMP_OFFSET 0x00 +#define SYSCFG_MEMRMP_MEM_MODE_MASK 0x3 + +#define SYSCFG_PMC_OFFSET 0x04 + +#define SYSCFG_EXTICR1_OFFSET 0x08 +#define SYSCFG_EXTICR2_OFFSET 0x0c +#define SYSCFG_EXTICR3_OFFSET 0x10 +#define SYSCFG_EXTICR4_OFFSET 0x14 + +#define SYSCFG_EXTICR_COUNT 4 +#define SYSCFG_EXTI_PER_CR 4 + +#define SYSCFG_CMPCR_OFFSET 0x20 + +typedef struct { + /* Inherited */ + SysBusDevice busdev; + + /* Properties */ + void *stm32_rcc_prop; + void *stm32_exti_prop; + uint32_t boot_pins; //!< BOOT0 and BOOT1 pins + + /* Private */ + MemoryRegion iomem; + + Stm32Rcc *stm32_rcc; + Stm32Exti *stm32_exti; + + uint32_t + USART1_REMAP, + USART2_REMAP, + USART3_REMAP, + SYSCFG_MEMRMP, + SYSCFG_EXTICR[SYSCFG_EXTICR_COUNT]; +} Stm32Syscfg; + + +/* REGISTER IMPLEMENTATION */ + +static uint32_t stm32_syscfg_SYSCFG_MEMRMP_read(Stm32Syscfg *s) +{ + return s->SYSCFG_MEMRMP; +} + +static void stm32_syscfg_SYSCFG_MEMRMP_write(Stm32Syscfg *s, uint32_t new_value, + bool init) +{ + if (init) { + // "After reset these bits take the value selected by the BOOT pins." + s->SYSCFG_MEMRMP = (SYSCFG_MEMRMP_MEM_MODE_MASK & s->boot_pins); + } else { + s->SYSCFG_MEMRMP = new_value; + } +} + +/* Write the External Interrupt Configuration Register. + * There are four of these registers, each of which configures + * four EXTI interrupt lines. Each line is represented by four bits, which + * indicate which GPIO the line is connected to. When the register is + * written, the changes are propagated to the EXTI module. + */ +static void stm32_syscfg_SYSCFG_EXTICR_write(Stm32Syscfg *s, unsigned index, + uint32_t new_value, bool init) +{ + int i; + unsigned exti_line; + unsigned start; + unsigned old_gpio_index, new_gpio_index; + + assert(index < SYSCFG_EXTICR_COUNT); + + /* Loop through the four EXTI lines controlled by this register. */ + for(i = 0; i < SYSCFG_EXTI_PER_CR; i++) { + /* For each line, notify the EXTI module if it has changed. */ + exti_line = (index * SYSCFG_EXTI_PER_CR) + i; + start = i * 4; + + new_gpio_index = (new_value >> start) & 0xf; + if(!init) { + old_gpio_index = (s->SYSCFG_EXTICR[index] >> start) & 0xf; + if (old_gpio_index == new_gpio_index) { + continue; + } + stm32_exti_reset_gpio(s->stm32_exti, exti_line, old_gpio_index); + } + stm32_exti_set_gpio(s->stm32_exti, exti_line, new_gpio_index); + } + + s->SYSCFG_EXTICR[index] = new_value; +} + + +static uint64_t stm32_syscfg_readw(Stm32Syscfg *s, hwaddr offset) +{ + switch (offset) { + case SYSCFG_MEMRMP_OFFSET: + return stm32_syscfg_SYSCFG_MEMRMP_read(s); + case SYSCFG_PMC_OFFSET: + STM32_NOT_IMPL_REG(SYSCFG_PMC_OFFSET, WORD_ACCESS_SIZE); + return 0; + case SYSCFG_EXTICR1_OFFSET: + return s->SYSCFG_EXTICR[0]; + case SYSCFG_EXTICR2_OFFSET: + return s->SYSCFG_EXTICR[1]; + case SYSCFG_EXTICR3_OFFSET: + return s->SYSCFG_EXTICR[2]; + case SYSCFG_EXTICR4_OFFSET: + return s->SYSCFG_EXTICR[3]; + case SYSCFG_CMPCR_OFFSET: + STM32_NOT_IMPL_REG(SYSCFG_CMPCR_OFFSET, WORD_ACCESS_SIZE); + return 0; + default: + STM32_BAD_REG(offset, WORD_ACCESS_SIZE); + return 0; + } +} + +static void stm32_syscfg_writew(Stm32Syscfg *s, hwaddr offset, + uint64_t value) +{ + switch (offset) { + case SYSCFG_MEMRMP_OFFSET: + stm32_syscfg_SYSCFG_MEMRMP_write(s, value, false); + break; + case SYSCFG_PMC_OFFSET: + STM32_NOT_IMPL_REG(SYSCFG_PMC_OFFSET, WORD_ACCESS_SIZE); + break; + case SYSCFG_EXTICR1_OFFSET: + stm32_syscfg_SYSCFG_EXTICR_write(s, 0, value, false); + break; + case SYSCFG_EXTICR2_OFFSET: + stm32_syscfg_SYSCFG_EXTICR_write(s, 1, value, false); + break; + case SYSCFG_EXTICR3_OFFSET: + stm32_syscfg_SYSCFG_EXTICR_write(s, 2, value, false); + break; + case SYSCFG_EXTICR4_OFFSET: + stm32_syscfg_SYSCFG_EXTICR_write(s, 3, value, false); + break; + case SYSCFG_CMPCR_OFFSET: + STM32_NOT_IMPL_REG(SYSCFG_CMPCR_OFFSET, WORD_ACCESS_SIZE); + break; + default: + STM32_BAD_REG(offset, WORD_ACCESS_SIZE); + break; + } +} + +static uint64_t stm32_syscfg_read(void *opaque, hwaddr offset, + unsigned size) +{ + Stm32Syscfg *s = (Stm32Syscfg *)opaque; + + stm32_rcc_check_periph_clk((Stm32Rcc *)s->stm32_rcc, STM32_SYSCFG); + + switch(size) { + case 4: + return stm32_syscfg_readw(opaque, offset); + default: + STM32_BAD_REG(offset, size); + return 0; + } +} + +static void stm32_syscfg_write(void *opaque, hwaddr offset, + uint64_t value, unsigned size) +{ + Stm32Syscfg *s = (Stm32Syscfg *)opaque; + + stm32_rcc_check_periph_clk((Stm32Rcc *)s->stm32_rcc, STM32_SYSCFG); + + switch(size) { + case 4: + stm32_syscfg_writew(opaque, offset, value); + break; + default: + STM32_BAD_REG(offset, size); + break; + } +} + +static const MemoryRegionOps stm32_syscfg_ops = { + .read = stm32_syscfg_read, + .write = stm32_syscfg_write, + .endianness = DEVICE_NATIVE_ENDIAN +}; + +static void stm32_syscfg_reset(DeviceState *dev) +{ + Stm32Syscfg *s = STM32F2XX_SYSCFG(dev); + + stm32_syscfg_SYSCFG_MEMRMP_write(s, 0x00000000, true); + stm32_syscfg_SYSCFG_EXTICR_write(s, 0, 0x00000000, true); + stm32_syscfg_SYSCFG_EXTICR_write(s, 1, 0x00000000, true); + stm32_syscfg_SYSCFG_EXTICR_write(s, 2, 0x00000000, true); + stm32_syscfg_SYSCFG_EXTICR_write(s, 3, 0x00000000, true); +} + + + +/* DEVICE INITIALIZATION */ + +static void stm32_syscfg_realize(DeviceState *obj, Error **pError) +{ + Stm32Syscfg *s = STM32F2XX_SYSCFG(obj); + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + + s->stm32_rcc = (Stm32Rcc *)s->stm32_rcc_prop; + s->stm32_exti = (Stm32Exti *)s->stm32_exti_prop; + + memory_region_init_io(&s->iomem, OBJECT(s), &stm32_syscfg_ops, s, + "syscfg", 0x03ff); + sysbus_init_mmio(dev, &s->iomem); +} + +static Property stm32_syscfg_properties[] = { + DEFINE_PROP_PTR("stm32_rcc", Stm32Syscfg, stm32_rcc_prop), + DEFINE_PROP_PTR("stm32_exti", Stm32Syscfg, stm32_exti_prop), + DEFINE_PROP_BIT("boot0", Stm32Syscfg, boot_pins, 0, 0), // BOOT0 pin + DEFINE_PROP_BIT("boot1", Stm32Syscfg, boot_pins, 1, 0), // BOOT1 pin + DEFINE_PROP_END_OF_LIST() +}; + +static void stm32_syscfg_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + + dc->realize = stm32_syscfg_realize; + dc->reset = stm32_syscfg_reset; + device_class_set_props(dc, stm32_syscfg_properties); +} + +static TypeInfo stm32_syscfg_info = { + .name = TYPE_STM32F2XX_SYSCFG, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(Stm32Syscfg), + .class_init = stm32_syscfg_class_init +}; + +static void stm32_syscfg_register_types(void) +{ + type_register_static(&stm32_syscfg_info); +} + +type_init(stm32_syscfg_register_types) + diff --git a/hw/arm/stm32f2xx_tim.c b/hw/arm/stm32f2xx_tim.c new file mode 100644 index 0000000000000..56ce6093bc50b --- /dev/null +++ b/hw/arm/stm32f2xx_tim.c @@ -0,0 +1,334 @@ +/*- + * Copyright (c) 2013 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +/* + * QEMU stm32f2xx TIM emulation + */ + +#include "qemu/osdep.h" +#include "hw/sysbus.h" +#include "hw/arm/stm32.h" +#include "qemu/timer.h" +#include "hw/irq.h" +#include "hw/qdev-properties.h" + +//#define DEBUG_STM32F2XX_TIM +#ifdef DEBUG_STM32F2XX_TIM +// NOTE: The usleep() helps the MacOS stdout from freezing when we have a lot of print out +#define DPRINTF(fmt, ...) \ + do { printf("DEBUG_STM32F2XX_TIM: " fmt , ## __VA_ARGS__); \ + usleep(100); \ + } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + + + +#define R_TIM_CR1 (0x00 / 4) //p +#define R_TIM_CR2 (0x04 / 4) +#define R_TIM_SMCR (0x08 / 4) +#define R_TIM_DIER (0x0c / 4) //p +#define R_TIM_SR (0x10 / 4) //p +#define R_TIM_EGR (0x14 / 4) //p +#define R_TIM_CCMR1 (0x18 / 4) +#define R_TIM_CCMR2 (0x1c / 4) +#define R_TIM_CCER (0x20 / 4) +#define R_TIM_CNT (0x24 / 4) +#define R_TIM_PSC (0x28 / 4) //p +#define R_TIM_ARR (0x2c / 4) //p +#define R_TIM_CCR1 (0x34 / 4) +#define R_TIM_CCR2 (0x38 / 4) +#define R_TIM_CCR3 (0x3c / 4) +#define R_TIM_CCR4 (0x40 / 4) +#define R_TIM_DCR (0x48 / 4) +#define R_TIM_DMAR (0x4c / 4) +#define R_TIM_OR (0x50 / 4) +#define R_TIM_MAX (0x54 / 4) + +static const char *f2xx_tim_reg_names[] = { + ENUM_STRING(R_TIM_CR1), + ENUM_STRING(R_TIM_CR2), + ENUM_STRING(R_TIM_SMCR), + ENUM_STRING(R_TIM_DIER), + ENUM_STRING(R_TIM_SR), + ENUM_STRING(R_TIM_EGR), + ENUM_STRING(R_TIM_CCMR1), + ENUM_STRING(R_TIM_CCMR2), + ENUM_STRING(R_TIM_CCER), + ENUM_STRING(R_TIM_CNT), + ENUM_STRING(R_TIM_PSC), + ENUM_STRING(R_TIM_ARR), + ENUM_STRING(R_TIM_CCR1), + ENUM_STRING(R_TIM_CCR2), + ENUM_STRING(R_TIM_CCR3), + ENUM_STRING(R_TIM_CCR4), + ENUM_STRING(R_TIM_DCR), + ENUM_STRING(R_TIM_CCMR1), + ENUM_STRING(R_TIM_DMAR), + ENUM_STRING(R_TIM_OR) +}; + + +typedef struct f2xx_tim { + SysBusDevice busdev; + MemoryRegion iomem; + QEMUTimer *timer; + qemu_irq irq; + uint32_t regs[R_TIM_MAX]; + + qemu_irq pwm_ratio_changed; + qemu_irq pwm_enable; +} f2xx_tim; + +static uint32_t +f2xx_tim_period(f2xx_tim *s) +{ + /* FIXME: hard coded to 32kHz */ + return 31250; +} + +static int64_t +f2xx_tim_next_transition(f2xx_tim *s, int64_t current_time) +{ + if (s->regs[R_TIM_CR1] & 0x70) { + qemu_log_mask(LOG_UNIMP, "f2xx tim, only upedge-aligned mode supported\n"); + return -1; + } + return current_time + f2xx_tim_period(s) * s->regs[R_TIM_ARR]; +} + +static void +f2xx_tim_timer(void *arg) +{ + f2xx_tim *s = arg; + + if (s->regs[R_TIM_CR1] & 1) { + timer_mod(s->timer, f2xx_tim_next_transition(s, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL))); + } + if (!(s->regs[R_TIM_SR] & 1)) { + //printf("f2xx tim timer expired, setting int\n"); + s->regs[R_TIM_SR] |= 1; + } + qemu_set_irq(s->irq, 1); +} + +static uint64_t +f2xx_tim_read(void *arg, hwaddr addr, unsigned int size) +{ + f2xx_tim *s = arg; + uint32_t r; + int offset = addr & 0x3; + + addr >>= 2; + if (addr >= R_TIM_MAX) { + qemu_log_mask(LOG_GUEST_ERROR, "f2xx tim invalid read register 0x%x\n", + (unsigned int)addr << 2); + return 0; + } + r = (s->regs[addr] >> offset * 8) & ((1ull << (8 * size)) - 1); + switch (addr) { + case R_TIM_CR1: + case R_TIM_DIER: + case R_TIM_SR: + break; + default: + qemu_log_mask(LOG_UNIMP, "f2xx tim unimplemented read 0x%x+%u size %u val 0x%x\n", + (unsigned int)addr << 2, offset, size, (unsigned int)r); + } + + DPRINTF("%s %s: reg: %s, size: %d, value: 0x%x\n", s->busdev.parent_obj.id, + __func__, f2xx_tim_reg_names[addr], size, r); + return r; +} + +static void +f2xx_tim_write(void *arg, hwaddr addr, uint64_t data, unsigned int size) +{ + f2xx_tim *s = arg; + int offset = addr & 0x3; + + addr >>= 2; + + DPRINTF("%s %s: reg:%s, size: %d, value: 0x%llx\n", s->busdev.parent_obj.id, + __func__, f2xx_tim_reg_names[addr], size, data); + if (addr >= R_TIM_MAX) { + qemu_log_mask(LOG_GUEST_ERROR, "f2xx tim invalid write register 0x%x\n", + (unsigned int)addr << 2); + return; + } + + switch(size) { + case 1: + data = (s->regs[addr] & ~(0xff << (offset * 8))) | data << (offset * 8); + break; + case 2: + data = (s->regs[addr] & ~(0xffff << (offset * 8))) | data << (offset * 8); + break; + case 4: + break; + default: + abort(); + } + + switch(addr) { + case R_TIM_CR1: + if (data & ~1) { + qemu_log_mask(LOG_UNIMP, "f2xx tim non-zero CR1 unimplemented\n"); + } + if ((s->regs[addr] & 1) == 0 && data & 1) { + //printf("f2xx tim started\n"); + timer_mod(s->timer, f2xx_tim_next_transition(s, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL))); + qemu_set_irq(s->pwm_enable, 1); + } else if (s->regs[addr] & 1 && (data & 1) == 0) { + timer_del(s->timer); + qemu_set_irq(s->pwm_enable, 0); + } + s->regs[addr] = data; + break; + case R_TIM_SR: + if (s->regs[addr] & 1 && (data & 1) == 0) { + //printf("f2xx tim clearing int\n"); + qemu_set_irq(s->irq, 0); + } + s->regs[addr] &= data; + break; + case R_TIM_EGR: + qemu_log_mask(LOG_UNIMP, "f2xx tim unimplemented write EGR+%u size %u val 0x%x\n", + offset, size, (unsigned int)data); + break; + case R_TIM_CCER: + // Capture/Compare Enable register + s->regs[addr] = data; + + // If we are enabling PWM mode in output 1, notify the callback if we have one registered + if ( (data & 0x01) // Capture Compare 1 output enable + && ((s->regs[R_TIM_CCMR1] & 0x60) == 0x60) + && ((s->regs[R_TIM_CCMR1] & 0x03) == 0x00)) { + + uint32_t ratio = (s->regs[R_TIM_CCR1] * 255) / s->regs[R_TIM_ARR]; + DPRINTF("Setting PWM ratio to %d\n", ratio); + qemu_set_irq(s->pwm_ratio_changed, ratio); + } + + // If we are enabling PWM mode in output 1, notify the callback if we have one registered + else if ( (data & 0x10) // Capture Compare 2 output enable + && ((s->regs[R_TIM_CCMR1] & 0x6000) == 0x6000) + && ((s->regs[R_TIM_CCMR1] & 0x0300) == 0x0000)) { + + uint32_t ratio = (s->regs[R_TIM_CCR2] * 255) / s->regs[R_TIM_ARR]; + DPRINTF("Setting PWM ratio to %d\n", ratio); + qemu_set_irq(s->pwm_ratio_changed, ratio); + + } else { + qemu_set_irq(s->pwm_ratio_changed, 0); + } + + break; + case R_TIM_CCMR1: + // Capture/Compare mode register 1 + s->regs[addr] = data; + break; + case R_TIM_CCMR2: + // Capture/Compare mode register 2 + s->regs[addr] = data; + break; + case R_TIM_DIER: + case R_TIM_PSC: + case R_TIM_ARR: + case R_TIM_CCR1: + case R_TIM_CCR2: + s->regs[addr] = data; + break; + default: + qemu_log_mask(LOG_UNIMP, "f2xx tim unimplemented write 0x%x+%u size %u val 0x%x\n", + (unsigned int)addr << 2, offset, size, (unsigned int)data); + } + +} + +static const MemoryRegionOps f2xx_tim_ops = { + .read = f2xx_tim_read, + .write = f2xx_tim_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .impl = { + .min_access_size = 1, + .max_access_size = 4, + } +}; + +static void f2xx_tim_reset(DeviceState *dev) +{ + f2xx_tim *s = STM32F2XX_TIM(dev); + + timer_del(s->timer); + memset(&s->regs, 0, sizeof(s->regs)); +} + + +static void +f2xx_tim_init(Object *obj) +{ + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + f2xx_tim *s = STM32F2XX_TIM(obj); + + memory_region_init_io(&s->iomem, OBJECT(s), &f2xx_tim_ops, s, "tim", 0xa0); + sysbus_init_mmio(dev, &s->iomem); + //s->regs[R_RTC_ISR] = R_RTC_ISR_RESET; + ////s->regs[R_RTC_PRER] = R_RTC_PRER_RESET; + //s->regs[R_RTC_WUTR] = R_RTC_WUTR_RESET; + s->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, f2xx_tim_timer, s); + sysbus_init_irq(dev, &s->irq); + + qdev_init_gpio_out_named(DEVICE(dev), &s->pwm_ratio_changed, "pwm_ratio_changed", 1); + qdev_init_gpio_out_named(DEVICE(dev), &s->pwm_enable, "pwm_enable", 1); +} + +static Property f2xx_tim_properties[] = { + DEFINE_PROP_END_OF_LIST(), +}; + +static void +f2xx_tim_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + SysBusDeviceClass *sc = SYS_BUS_DEVICE_CLASS(klass); + //TODO: fix this: dc->no_user = 1; + device_class_set_props(dc, f2xx_tim_properties); + dc->reset = f2xx_tim_reset; +} + +static const TypeInfo +f2xx_tim_info = { + .name = TYPE_STM32F2XX_TIM, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(f2xx_tim), + .instance_init = f2xx_tim_init, + .class_init = f2xx_tim_class_init, +}; + +static void +f2xx_tim_register_types(void) +{ + type_register_static(&f2xx_tim_info); +} + +type_init(f2xx_tim_register_types) diff --git a/hw/arm/stm32f4xx.c b/hw/arm/stm32f4xx.c new file mode 100644 index 0000000000000..50e910987668b --- /dev/null +++ b/hw/arm/stm32f4xx.c @@ -0,0 +1,428 @@ +/* + * STM32F4xx Microcontroller + * + * Copyright (C) 2010 Andre Beckus + * + * Implementation based on ST Microelectronics "RM0090 Reference Manual Rev 8" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "sysemu/runstate.h" +#include "hw/arm/stm32.h" +#include "stm32f4xx.h" +#include "exec/address-spaces.h" +#include "exec/memory.h" +#include "hw/ssi/ssi.h" +#include "hw/block/flash.h" +#include "sysemu/blockdev.h" // drive_get +#include "hw/irq.h" +#include "hw/qdev-properties.h" +#include "../../target/arm/cpu.h" + +static const char *stm32f4xx_periph_name_arr[] = { + ENUM_STRING(STM32_UART1), + ENUM_STRING(STM32_UART2), + ENUM_STRING(STM32_UART3), + ENUM_STRING(STM32_UART4), + ENUM_STRING(STM32_UART5), + ENUM_STRING(STM32_UART6), + ENUM_STRING(STM32_UART7), + ENUM_STRING(STM32_UART8), + + ENUM_STRING(STM32_SPI1), + ENUM_STRING(STM32_SPI2), + ENUM_STRING(STM32_SPI3), + + ENUM_STRING(STM32_I2C1), + ENUM_STRING(STM32_I2C2), + ENUM_STRING(STM32_I2C3), + + ENUM_STRING(STM32_TIM1), + ENUM_STRING(STM32_TIM2), + ENUM_STRING(STM32_TIM3), + ENUM_STRING(STM32_TIM4), + ENUM_STRING(STM32_TIM5), + ENUM_STRING(STM32_TIM6), + ENUM_STRING(STM32_TIM7), + ENUM_STRING(STM32_TIM8), + ENUM_STRING(STM32_TIM9), + ENUM_STRING(STM32_TIM10), + ENUM_STRING(STM32_TIM11), + ENUM_STRING(STM32_TIM12), + ENUM_STRING(STM32_TIM13), + ENUM_STRING(STM32_TIM14), + + ENUM_STRING(STM32_GPIOA), + ENUM_STRING(STM32_GPIOB), + ENUM_STRING(STM32_GPIOC), + ENUM_STRING(STM32_GPIOD), + ENUM_STRING(STM32_GPIOE), + ENUM_STRING(STM32_GPIOF), + ENUM_STRING(STM32_GPIOG), + ENUM_STRING(STM32_GPIOH), + ENUM_STRING(STM32_GPIOI), + ENUM_STRING(STM32_GPIOJ), + ENUM_STRING(STM32_GPIOK), + + ENUM_STRING(STM32_QSPI), + + ENUM_STRING(STM32_PERIPH_COUNT) +}; + +/* Init STM32F4XX CPU and memory. + flash_size and sram_size are in kb. */ + +static uint64_t kernel_load_translate_fn(void *opaque, uint64_t from_addr) { + if (from_addr == STM32_FLASH_ADDR_START) { + return 0x00000000; + } + return from_addr; +} + +static +void do_sys_reset(void *opaque, int n, int level) { + if (level) { + qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); + } +} + +void stm32f4xx_init( + ram_addr_t flash_size, /* in KBytes */ + ram_addr_t ram_size, /* in KBytes */ + const char *kernel_filename, + Stm32Gpio **stm32_gpio, + const uint32_t *gpio_idr_masks, + Stm32Uart **stm32_uart, + Stm32Timer **stm32_timer, + DeviceState **stm32_rtc, + uint32_t osc_freq, + uint32_t osc32_freq, + struct stm32f4xx *stm, + ARMCPU **cpu) { + MemoryRegion *address_space_mem = get_system_memory(); + DriveInfo *dinfo; + DeviceState *nvic; + int i; + + Object * stm32_container = container_get(qdev_get_machine(), "/stm32"); + + nvic = armv7m_translated_init( + stm32_container, /* parent */ + address_space_mem, /* address space memory */ + flash_size * 1024, /* flash size in bytes */ + ram_size * 1024, /* sram size in bytes */ + 128, /* default number of irqs */ + kernel_filename, /* kernel filename */ + kernel_load_translate_fn, /* kernel translate address function */ + NULL, /* translate function opaque argument */ + ARM_CPU_TYPE_NAME("cortex-m4"), /* cpu model */ + cpu); /* Returned cpu instance */ + + qdev_connect_gpio_out_named(nvic, "SYSRESETREQ", 0, + qemu_allocate_irq(&do_sys_reset, NULL, 0)); + + dinfo = drive_get(IF_PFLASH, 0, 0); /* Use the first -pflash argument */ + if (dinfo) { + f2xx_flash_register(blk_by_legacy_dinfo(dinfo), STM32_FLASH_ADDR_START, flash_size * 1024); + } + + + // Create alias at 0x08000000 for internal flash, that is hard-coded at 0x00000000 + // in armv7m.c: + // TODO: Let BOOT0 and BOOT1 configuration pins determine what is mapped at 0x00000000, + // see SYSCFG_MEMRMP. + MemoryRegionSection mrs = memory_region_find(address_space_mem, STM32_FLASH_ADDR_START, + WORD_ACCESS_SIZE); + MemoryRegion *flash_alias = g_new(MemoryRegion, 1); + memory_region_init_alias( + flash_alias, /* alias memory region */ + NULL, /* owner */ + "stm32f4xx.flash.alias", /* name */ + mrs.mr, /* original region */ + 0, /* offset */ + flash_size * 1024); /* size in bytes */ + memory_region_add_subregion(address_space_mem, 0, flash_alias); + + + /* Setup the RCC */ + DeviceState *rcc_dev = qdev_create(NULL, TYPE_STM32F2XX_RCC); + qdev_prop_set_uint32(rcc_dev, "osc_freq", osc_freq); + qdev_prop_set_uint32(rcc_dev, "osc32_freq", osc32_freq); + object_property_add_child(stm32_container, "rcc", OBJECT(rcc_dev), NULL); + stm32_init_periph(rcc_dev, + STM32_RCC_PERIPH, /* periph index, not used */ + 0x40023800, /* base address */ + qdev_get_gpio_in(nvic, STM32_RCC_IRQ)); /* irq */ + + /* Setup GPIOs */ + DeviceState **gpio_dev = (DeviceState **) g_malloc0(sizeof(DeviceState *) + * STM32F4XX_GPIO_COUNT); + for (i = 0; i < STM32F4XX_GPIO_COUNT; i++) { + stm32_periph_t periph = STM32_GPIOA + i; + gpio_dev[i] = qdev_create(NULL, TYPE_STM32F2XX_GPIO); + gpio_dev[i]->id = stm32f4xx_periph_name_arr[periph]; + qdev_prop_set_int32(gpio_dev[i], "periph", periph); + qdev_prop_set_uint32(gpio_dev[i], "idr-mask", gpio_idr_masks[i]); + // qdev_prop_set_ptr(gpio_dev[i], "stm32_rcc", rcc_dev); + stm32_init_periph(gpio_dev[i], periph, 0x40020000 + (i * 0x400), NULL /*irq*/); + stm32_gpio[i] = (Stm32Gpio *) gpio_dev[i]; + } + + /* Connect the WKUP pin (GPIO A, pin 0) to the NVIC's WKUP handler */ +//NVIC qemu_irq nvic_wake_irq = qdev_get_gpio_in_named(DEVICE((*cpu)->env.nvic), "wakeup_in", 0); +//NVIC f2xx_gpio_wake_set((stm32f2xx_gpio *) (stm32_gpio[STM32_GPIOA_INDEX]), 0, nvic_wake_irq); + + + /* EXTI */ + DeviceState *exti_dev = qdev_create(NULL, TYPE_STM32_EXTI); + qdev_prop_set_ptr(exti_dev, "stm32_gpio", gpio_dev); + stm32_init_periph(exti_dev, STM32_EXTI_PERIPH, 0x40013C00, NULL); + SysBusDevice *exti_busdev = SYS_BUS_DEVICE(exti_dev); + + /* IRQs from EXTI to NVIC */ + sysbus_connect_irq(exti_busdev, 0, qdev_get_gpio_in(nvic, STM32_EXTI0_IRQ)); + sysbus_connect_irq(exti_busdev, 1, qdev_get_gpio_in(nvic, STM32_EXTI1_IRQ)); + sysbus_connect_irq(exti_busdev, 2, qdev_get_gpio_in(nvic, STM32_EXTI2_IRQ)); + sysbus_connect_irq(exti_busdev, 3, qdev_get_gpio_in(nvic, STM32_EXTI3_IRQ)); + sysbus_connect_irq(exti_busdev, 4, qdev_get_gpio_in(nvic, STM32_EXTI4_IRQ)); + sysbus_connect_irq(exti_busdev, 5, qdev_get_gpio_in(nvic, STM32_EXTI9_5_IRQ)); + sysbus_connect_irq(exti_busdev, 6, qdev_get_gpio_in(nvic, STM32_EXTI15_10_IRQ)); + sysbus_connect_irq(exti_busdev, 7, qdev_get_gpio_in(nvic, STM32_PVD_IRQ)); + sysbus_connect_irq(exti_busdev, 8, qdev_get_gpio_in(nvic, STM32_RTCAlarm_IRQ)); + sysbus_connect_irq(exti_busdev, 9, qdev_get_gpio_in(nvic, STM32_OTG_FS_WKUP_IRQ)); + sysbus_connect_irq(exti_busdev, 10, qdev_get_gpio_in(nvic, STM32_ETH_WKUP_IRQ)); + sysbus_connect_irq(exti_busdev, 11, qdev_get_gpio_in(nvic, STM32_OTG_FS_WKUP_IRQ)); + sysbus_connect_irq(exti_busdev, 12, qdev_get_gpio_in(nvic, STM32_TAMP_STAMP_IRQ)); + sysbus_connect_irq(exti_busdev, 13, qdev_get_gpio_in(nvic, STM32_RTC_WKUP_IRQ)); + + + /* System configuration controller */ + DeviceState *syscfg_dev = qdev_create(NULL, TYPE_STM32F2XX_SYSCFG); + qdev_prop_set_ptr(syscfg_dev, "stm32_rcc", rcc_dev); + qdev_prop_set_ptr(syscfg_dev, "stm32_exti", exti_dev); + qdev_prop_set_bit(syscfg_dev, "boot0", 0); + qdev_prop_set_bit(syscfg_dev, "boot1", 0); + stm32_init_periph(syscfg_dev, STM32_SYSCFG, 0x40013800, NULL /*irq*/); + + /* UARTS */ + struct { + uint32_t addr; + uint8_t irq_idx; + } const uart_desc[] = { + {0x40011000, STM32_UART1_IRQ}, + {0x40004400, STM32_UART2_IRQ}, + {0x40004800, STM32_UART3_IRQ}, + {0x40004C00, STM32_UART4_IRQ}, + {0x40005000, STM32_UART5_IRQ}, + {0x40011400, STM32_UART6_IRQ}, + {0x40007800, 0}, /* no IRQ for UART 7 */ + {0x40007C00, 0}, /* no IRQ for UART 8 */ + }; + for (i = 0; i < ARRAY_LENGTH(uart_desc); ++i) { + assert(i < STM32F4XX_UART_COUNT); + const stm32_periph_t periph = STM32_UART1 + i; + DeviceState *uart_dev = qdev_create(NULL, TYPE_STM32_UART); + uart_dev->id = stm32f4xx_periph_name_arr[periph]; + qdev_prop_set_int32(uart_dev, "periph", periph); + qdev_prop_set_ptr(uart_dev, "stm32_rcc", rcc_dev); + // qdev_prop_set_ptr(uart_dev, "stm32_gpio", gpio_dev); + // qdev_prop_set_ptr(uart_dev, "stm32_afio", afio_dev); + // qdev_prop_set_ptr(uart_dev, "stm32_check_tx_pin_callback", + // (void *)stm32_afio_uart_check_tx_pin_callback); + qemu_irq irq = NULL; + if (uart_desc[i].irq_idx != 0) { + irq = qdev_get_gpio_in(nvic, uart_desc[i].irq_idx); + } + stm32_init_periph(uart_dev, periph, uart_desc[i].addr, irq); + stm32_uart[i] = (Stm32Uart *) uart_dev; + } + // TODO: Should we use these instead? +// stm32_uart[STM32_UART1_INDEX] = stm32_create_uart_dev(STM32_UART1, rcc_dev, gpio_dev, afio_dev, 0x40011000, pic[STM32_UART1_IRQ]); +// stm32_uart[STM32_UART2_INDEX] = stm32_create_uart_dev(STM32_UART2, rcc_dev, gpio_dev, afio_dev, 0x40004400, pic[STM32_UART2_IRQ]); +// stm32_uart[STM32_UART3_INDEX] = stm32_create_uart_dev(STM32_UART3, rcc_dev, gpio_dev, afio_dev, 0x40004800, pic[STM32_UART3_IRQ]); +// stm32_uart[STM32_UART4_INDEX] = stm32_create_uart_dev(STM32_UART4, rcc_dev, gpio_dev, afio_dev, 0x40004C00, pic[STM32_UART4_IRQ]); +// stm32_uart[STM32_UART5_INDEX] = stm32_create_uart_dev(STM32_UART5, rcc_dev, gpio_dev, afio_dev, 0x40005000, pic[STM32_UART5_IRQ]); +// stm32_uart[STM32_UART6_INDEX] = stm32_create_uart_dev(STM32_UART6, rcc_dev, gpio_dev, afio_dev, 0x40011400, pic[STM32_UART6_IRQ]); + + + /* SPI */ + struct { + uint32_t addr; + uint8_t irq_idx; + } const spi_desc[] = { + {0x40013000, STM32_SPI1_IRQ}, + {0x40003800, STM32_SPI2_IRQ}, + {0x40003CD0, STM32_SPI3_IRQ}, + {0x40013400, STM32_SPI4_IRQ}, + {0x40015000, STM32_SPI5_IRQ}, + {0x40015400, STM32_SPI6_IRQ}, + }; + for (i = 0; i < ARRAY_LENGTH(spi_desc); ++i) { + assert(i < STM32F4XX_SPI_COUNT); + const stm32_periph_t periph = STM32_SPI1 + i; + stm->spi_dev[i] = qdev_create(NULL, TYPE_STM32F2XX_SPI); + stm->spi_dev[i]->id = stm32f4xx_periph_name_arr[periph]; + qdev_prop_set_int32(stm->spi_dev[i], "periph", periph); + stm32_init_periph(stm->spi_dev[i], periph, spi_desc[i].addr, + qdev_get_gpio_in(nvic, spi_desc[i].irq_idx)); + } + + /* QSPI */ + stm->qspi_dev = qdev_create(NULL, TYPE_STM32F412_QSPI); + stm->qspi_dev->id = stm32f4xx_periph_name_arr[STM32_QSPI]; + stm32_init_periph(stm->qspi_dev, STM32_QSPI, 0xA0001000, qdev_get_gpio_in(nvic, STM32_QSPI_IRQ)); + + /* ADC */ + DeviceState *adc_dev = qdev_create(NULL, TYPE_STM32_ADC); + stm32_init_periph(adc_dev, STM32_ADC1, 0x40012000, NULL); + + /* RTC real time clock */ + DeviceState *rtc_dev = qdev_create(NULL, TYPE_STM32F2XX_RTC); + *stm32_rtc = rtc_dev; + stm32_init_periph(rtc_dev, STM32_RTC, 0x40002800, NULL); + // Alarm A + sysbus_connect_irq(SYS_BUS_DEVICE(rtc_dev), 0, qdev_get_gpio_in(exti_dev, 17)); + // Alarm B + sysbus_connect_irq(SYS_BUS_DEVICE(rtc_dev), 1, qdev_get_gpio_in(exti_dev, 17)); + // Wake up timer + sysbus_connect_irq(SYS_BUS_DEVICE(rtc_dev), 2, qdev_get_gpio_in(exti_dev, 22)); + + /* Power management */ + DeviceState *pwr_dev = qdev_create(NULL, TYPE_STM32F2XX_PWR); + stm32_init_periph(pwr_dev, STM32_RTC, 0x40007000, NULL); +//NVIC qdev_prop_set_ptr((*cpu)->env.nvic, "stm32_pwr", pwr_dev); + +#define dummy_dev(name, start, size) do {\ + DeviceState *dummy = qdev_create(NULL, TYPE_STM32F2XX_DUMMY); \ + qdev_prop_set_ptr(dummy, "name", (void *)name); \ + qdev_prop_set_int32(dummy, "size", size); \ + qdev_init_nofail(dummy); \ + sysbus_mmio_map(SYS_BUS_DEVICE(dummy), 0, start); \ +} while (0) + + + /* Timers */ + struct { + uint8_t timer_num; + uint32_t addr; + uint8_t irq_idx; + } const timer_desc[] = { + {1, 0x40010000, 0}, // TIM1 FIXME: TIM1 is a complex timer w/ multiple IRQs + {2, 0x40000000, STM32_TIM2_IRQ}, // TIM2 + {3, 0x40000400, STM32_TIM3_IRQ}, // TIM3 + {4, 0x40000800, STM32_TIM4_IRQ}, // TIM4 + {5, 0x40000C00, STM32_TIM5_IRQ}, // TIM5 + {6, 0x40001000, STM32_TIM6_IRQ}, // TIM6 + {7, 0x40001400, STM32_TIM7_IRQ}, // TIM7 + {8, 0x40010400, 0}, // TIM8 FIXME: TIM8 is a complex timer w/ multiple IRQs + {9, 0x40014000, STM32_TIM1_BRK_TIM9_IRQ}, // TIM9 + {10, 0x40014400, STM32_TIM1_UP_TIM10_IRQ}, // TIM10 + {11, 0x40014800, STM32_TIM1_TRG_COM_TIM11_IRQ}, // TIM11 + {12, 0x40001800, STM32_TIM8_BRK_TIM12_IRQ}, // TIM12 + {13, 0x40001C00, STM32_TIM8_UP_TIM13_IRQ}, // TIM13 + {14, 0x40002000, STM32_TIM8_TRG_COMM_TIM14_IRQ}, // TIM14 + }; + for (i = 0; i < ARRAY_LENGTH(timer_desc); ++i) { + assert(i < STM32F4XX_TIM_COUNT); + const stm32_periph_t periph = STM32_TIM1 + timer_desc[i].timer_num - 1; + + DeviceState *timer = qdev_create(NULL, TYPE_STM32F2XX_TIM); + timer->id = stm32f4xx_periph_name_arr[periph]; + stm32_init_periph(timer, periph, timer_desc[i].addr, + qdev_get_gpio_in(nvic, timer_desc[i].irq_idx)); + stm32_timer[timer_desc[i].timer_num - 1] = (Stm32Timer *) timer; + } + + dummy_dev("Reserved", 0x40002400, 0x400); + // 0x40002800 + dummy_dev("WWDG", 0x40002C00, 0x400); + dummy_dev("IWDG", 0x40003000, 0x400); + dummy_dev("Reserved", 0x40003400, 0x400); + // 0x40003800 + // 0x40003C00 + dummy_dev("Reserved", 0x40004000, 0x400); + // 0x40004400 + // 0x40004800 + // 0x40004C00 + // 0x40005000 + + DeviceState *i2c1 = qdev_create(NULL, TYPE_STM32F2XX_I2C); + i2c1->id = stm32f4xx_periph_name_arr[STM32_I2C1]; + qdev_prop_set_int32(i2c1, "periph", STM32_I2C1); + stm32_init_periph(i2c1, STM32_I2C1, 0x40005400, + qdev_get_gpio_in(nvic, STM32_I2C1_EV_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(i2c1), 1, + qdev_get_gpio_in(nvic, STM32_I2C1_ER_IRQ)); + + DeviceState *i2c2 = qdev_create(NULL, TYPE_STM32F2XX_I2C); + i2c2->id = stm32f4xx_periph_name_arr[STM32_I2C2]; + qdev_prop_set_int32(i2c2, "periph", STM32_I2C2); + stm32_init_periph(i2c2, STM32_I2C2, 0x40005800, + qdev_get_gpio_in(nvic, STM32_I2C2_EV_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(i2c2), 1, + qdev_get_gpio_in(nvic, STM32_I2C2_ER_IRQ)); + + DeviceState *i2c3 = qdev_create(NULL, TYPE_STM32F2XX_I2C); + i2c3->id = stm32f4xx_periph_name_arr[STM32_I2C3]; + qdev_prop_set_int32(i2c3, "periph", STM32_I2C3); + stm32_init_periph(i2c3, STM32_I2C2, 0x40005C00, + qdev_get_gpio_in(nvic, STM32_I2C3_EV_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(i2c3), 1, + qdev_get_gpio_in(nvic, STM32_I2C3_ER_IRQ)); + + dummy_dev("Reserved", 0x40006000, 0x400); + dummy_dev("BxCAN1", 0x40006400, 0x400); + dummy_dev("BxCAN2", 0x40006800, 0x400); + dummy_dev("Reserved", 0x40006C00, 0x400); + // 0x40007000 PWR probably common + dummy_dev("DAC1/DAC2", 0x40007400, 0x400); + dummy_dev("Reserved", 0x40007800, 0x400); + dummy_dev("Reserved", 0x40008000, 0x8000); + // USART1 + // USART6 + dummy_dev("Reserved", 0x40011800, 0x800); + // ADC1 - ADC2 - ADC3 + // skipped reserved from here on + dummy_dev("SDIO", 0x40012C00, 0x400); + // SPI1 + // SYSCFG needed + + DeviceState *crc = qdev_create(NULL, TYPE_STM32F2XX_CRC); + stm32_init_periph(crc, STM32_CRC, 0x40023000, NULL); + + DeviceState *dma1 = qdev_create(NULL, TYPE_STM32F2XX_DMA); + stm32_init_periph(dma1, STM32_DMA1, 0x40026000, NULL); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 0, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM0_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 1, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM1_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 2, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM2_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 3, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM3_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 4, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM4_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 5, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM5_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 6, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM6_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 7, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM7_IRQ)); + + DeviceState *dma2 = qdev_create(NULL, TYPE_STM32F2XX_DMA); + stm32_init_periph(dma2, STM32_DMA2, 0x40026400, NULL); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 0, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM0_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 1, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM1_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 2, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM2_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 3, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM3_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 4, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM4_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 5, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM5_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 6, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM6_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 7, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM7_IRQ)); +} + diff --git a/hw/arm/stm32f4xx.h b/hw/arm/stm32f4xx.h new file mode 100644 index 0000000000000..fdc92b714996f --- /dev/null +++ b/hw/arm/stm32f4xx.h @@ -0,0 +1,15 @@ +#include "hw/arm/stm32.h" + + +#define STM32F4XX_GPIO_COUNT (STM32_GPIOK - STM32_GPIOA + 1) +#define STM32F4XX_SPI_COUNT 6 + +#define STM32F4XX_UART_COUNT 8 +#define STM32F4XX_TIM_COUNT 14 + +struct stm32f4xx { + DeviceState *spi_dev[STM32F4XX_SPI_COUNT]; + DeviceState *qspi_dev; + + qemu_irq display_done_signal; +}; diff --git a/hw/arm/stm32f7xx.c b/hw/arm/stm32f7xx.c new file mode 100644 index 0000000000000..88f1fea3bcb4b --- /dev/null +++ b/hw/arm/stm32f7xx.c @@ -0,0 +1,427 @@ +/* + * STM32F7xx Microcontroller + * + * Copyright (C) 2010 Andre Beckus + * Copyright (C) 2016 Pebble + * + * This implementation contains support for many of the STM32F7xx peripherals based on RM0410 rev 2, + * but currently uses a cortex-m4 core. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "sysemu/runstate.h" +#include "hw/arm/stm32.h" +#include "stm32f7xx.h" +#include "exec/address-spaces.h" +#include "exec/memory.h" +#include "hw/ssi/ssi.h" +#include "hw/irq.h" +#include "hw/block/flash.h" +#include "sysemu/blockdev.h" // drive_get +#include "hw/qdev-properties.h" +#include "../../target/arm/cpu.h" + +static const char *stm32f7xx_periph_name_arr[] = { + ENUM_STRING(STM32_UART1), + ENUM_STRING(STM32_UART2), + ENUM_STRING(STM32_UART3), + ENUM_STRING(STM32_UART4), + ENUM_STRING(STM32_UART5), + ENUM_STRING(STM32_UART6), + ENUM_STRING(STM32_UART7), + ENUM_STRING(STM32_UART8), + + ENUM_STRING(STM32_SPI1), + ENUM_STRING(STM32_SPI2), + ENUM_STRING(STM32_SPI3), + + ENUM_STRING(STM32_I2C1), + ENUM_STRING(STM32_I2C2), + ENUM_STRING(STM32_I2C3), + ENUM_STRING(STM32_I2C4), + + ENUM_STRING(STM32_TIM1), + ENUM_STRING(STM32_TIM2), + ENUM_STRING(STM32_TIM3), + ENUM_STRING(STM32_TIM4), + ENUM_STRING(STM32_TIM5), + ENUM_STRING(STM32_TIM6), + ENUM_STRING(STM32_TIM7), + ENUM_STRING(STM32_TIM8), + ENUM_STRING(STM32_TIM9), + ENUM_STRING(STM32_TIM10), + ENUM_STRING(STM32_TIM11), + ENUM_STRING(STM32_TIM12), + ENUM_STRING(STM32_TIM13), + ENUM_STRING(STM32_TIM14), + + ENUM_STRING(STM32_GPIOA), + ENUM_STRING(STM32_GPIOB), + ENUM_STRING(STM32_GPIOC), + ENUM_STRING(STM32_GPIOD), + ENUM_STRING(STM32_GPIOE), + ENUM_STRING(STM32_GPIOF), + ENUM_STRING(STM32_GPIOG), + ENUM_STRING(STM32_GPIOH), + ENUM_STRING(STM32_GPIOI), + ENUM_STRING(STM32_GPIOJ), + ENUM_STRING(STM32_GPIOK), + + ENUM_STRING(STM32_QSPI), + ENUM_STRING(STM32_LPTIM1), + + ENUM_STRING(STM32_PERIPH_COUNT) +}; + +/* Init STM32F7XX CPU and memory. + flash_size and sram_size are in kb. */ + +static uint64_t kernel_load_translate_fn(void *opaque, uint64_t from_addr) { + if (from_addr == STM32_FLASH_ADDR_START) { + return 0x00000000; + } + return from_addr; +} + +static +void do_sys_reset(void *opaque, int n, int level) +{ + if (level) { + qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); + } +} + +void stm32f7xx_init( + ram_addr_t flash_size, /* in KBytes */ + ram_addr_t ram_size, /* in KBytes */ + const char *kernel_filename, + Stm32Gpio **stm32_gpio, + const uint32_t *gpio_idr_masks, + Stm32F7xxUart **stm32_uart, + Stm32Timer **stm32_timer, + Stm32F7xxLPTimer **stm32_lptimer, + DeviceState **stm32_rtc, + uint32_t osc_freq, + uint32_t osc32_freq, + struct stm32f7xx *stm, + ARMCPU **cpu) +{ + MemoryRegion *address_space_mem = get_system_memory(); + DriveInfo *dinfo; + DeviceState *nvic; + int i; + + Object *stm32_container = container_get(qdev_get_machine(), "/stm32"); + + nvic = armv7m_translated_init( + stm32_container, /* parent */ + address_space_mem, /* address space memory */ + flash_size * 1024, /* flash size in bytes */ + ram_size * 1024, /* sram size in bytes */ + 128, /* default number of irqs */ + kernel_filename, /* kernel filename */ + kernel_load_translate_fn, /* kernel translate address function */ + NULL, /* translate function opaque argument */ + ARM_CPU_TYPE_NAME("cortex-m4"), /* cpu model */ + cpu); /* Returned cpu instance */ + + qdev_connect_gpio_out_named(nvic, "SYSRESETREQ", 0, + qemu_allocate_irq(&do_sys_reset, NULL, 0)); + + dinfo = drive_get(IF_PFLASH, 0, 0); /* Use the first -pflash argument */ + if (dinfo) { + f2xx_flash_register(blk_by_legacy_dinfo(dinfo), STM32_FLASH_ADDR_START, flash_size * 1024); + } + + + // Create alias at 0x08000000 for internal flash, that is hard-coded at 0x00000000 + // in armv7m.c: + // TODO: Let BOOT0 and BOOT1 configuration pins determine what is mapped at 0x00000000, + // see SYSCFG_MEMRMP. + MemoryRegionSection mrs = memory_region_find(address_space_mem, STM32_FLASH_ADDR_START, + WORD_ACCESS_SIZE); + MemoryRegion *flash_alias = g_new(MemoryRegion, 1); + memory_region_init_alias( + flash_alias, /* alias memory region */ + NULL, /* owner */ + "stm32f7xx.flash.alias", /* name */ + mrs.mr, /* original region */ + 0, /* offset */ + flash_size * 1024); /* size in bytes */ + memory_region_add_subregion(address_space_mem, 0, flash_alias); + + + /* Setup the RCC */ + DeviceState *rcc_dev = qdev_create(NULL, TYPE_STM32F2XX_RCC); + qdev_prop_set_uint32(rcc_dev, "osc_freq", osc_freq); + qdev_prop_set_uint32(rcc_dev, "osc32_freq", osc32_freq); + object_property_add_child(stm32_container, "rcc", OBJECT(rcc_dev), NULL); + stm32_init_periph(rcc_dev, + STM32_RCC_PERIPH, /* periph index, not used */ + 0x40023800, /* base address */ + qdev_get_gpio_in(nvic, STM32_RCC_IRQ)); /* irq */ + + /* Setup GPIOs */ + DeviceState **gpio_dev = (DeviceState **)g_malloc0(sizeof(DeviceState *) + * STM32F7XX_GPIO_COUNT); + for(i = 0; i < STM32F7XX_GPIO_COUNT; i++) { + stm32_periph_t periph = STM32_GPIOA + i; + gpio_dev[i] = qdev_create(NULL, TYPE_STM32F2XX_GPIO); + gpio_dev[i]->id = stm32f7xx_periph_name_arr[periph]; + qdev_prop_set_int32(gpio_dev[i], "periph", periph); + qdev_prop_set_uint32(gpio_dev[i], "idr-mask", gpio_idr_masks[i]); + // qdev_prop_set_ptr(gpio_dev[i], "stm32_rcc", rcc_dev); + stm32_init_periph(gpio_dev[i], periph, 0x40020000 + (i * 0x400), NULL /*irq*/); + stm32_gpio[i] = (Stm32Gpio *)gpio_dev[i]; + } + + /* Connect the WKUP pin (GPIO A, pin 0) to the NVIC's WKUP handler */ +//NVIC qemu_irq nvic_wake_irq = qdev_get_gpio_in_named(DEVICE((*cpu)->env.nvic), "wakeup_in", 0); +//NVIC f2xx_gpio_wake_set((stm32f2xx_gpio *)(stm32_gpio[STM32_GPIOA_INDEX]), 0, nvic_wake_irq); + + + /* EXTI */ + DeviceState *exti_dev = qdev_create(NULL, TYPE_STM32_EXTI); + qdev_prop_set_ptr(exti_dev, "stm32_gpio", gpio_dev); + stm32_init_periph(exti_dev, STM32_EXTI_PERIPH, 0x40013C00, NULL); + SysBusDevice *exti_busdev = SYS_BUS_DEVICE(exti_dev); + + /* IRQs from EXTI to NVIC */ + sysbus_connect_irq(exti_busdev, 0, qdev_get_gpio_in(nvic, STM32_EXTI0_IRQ)); + sysbus_connect_irq(exti_busdev, 1, qdev_get_gpio_in(nvic, STM32_EXTI1_IRQ)); + sysbus_connect_irq(exti_busdev, 2, qdev_get_gpio_in(nvic, STM32_EXTI2_IRQ)); + sysbus_connect_irq(exti_busdev, 3, qdev_get_gpio_in(nvic, STM32_EXTI3_IRQ)); + sysbus_connect_irq(exti_busdev, 4, qdev_get_gpio_in(nvic, STM32_EXTI4_IRQ)); + sysbus_connect_irq(exti_busdev, 5, qdev_get_gpio_in(nvic, STM32_EXTI9_5_IRQ)); + sysbus_connect_irq(exti_busdev, 6, qdev_get_gpio_in(nvic, STM32_EXTI15_10_IRQ)); + sysbus_connect_irq(exti_busdev, 7, qdev_get_gpio_in(nvic, STM32_PVD_IRQ)); + sysbus_connect_irq(exti_busdev, 8, qdev_get_gpio_in(nvic, STM32_RTCAlarm_IRQ)); + sysbus_connect_irq(exti_busdev, 9, qdev_get_gpio_in(nvic, STM32_OTG_FS_WKUP_IRQ)); + sysbus_connect_irq(exti_busdev, 10, qdev_get_gpio_in(nvic, STM32_ETH_WKUP_IRQ)); + sysbus_connect_irq(exti_busdev, 11, qdev_get_gpio_in(nvic, STM32_OTG_FS_WKUP_IRQ)); + sysbus_connect_irq(exti_busdev, 12, qdev_get_gpio_in(nvic, STM32_TAMP_STAMP_IRQ)); + sysbus_connect_irq(exti_busdev, 13, qdev_get_gpio_in(nvic, STM32_RTC_WKUP_IRQ)); + + + /* System configuration controller */ + DeviceState *syscfg_dev = qdev_create(NULL, TYPE_STM32F2XX_SYSCFG); + qdev_prop_set_ptr(syscfg_dev, "stm32_rcc", rcc_dev); + qdev_prop_set_ptr(syscfg_dev, "stm32_exti", exti_dev); + qdev_prop_set_bit(syscfg_dev, "boot0", 0); + qdev_prop_set_bit(syscfg_dev, "boot1", 0); + stm32_init_periph(syscfg_dev, STM32_SYSCFG, 0x40013800, NULL /*irq*/); + + /* UARTS */ + struct { + uint32_t addr; + uint8_t irq_idx; + } const uart_desc[] = { + {0x40011000, STM32_UART1_IRQ}, + {0x40004400, STM32_UART2_IRQ}, + {0x40004800, STM32_UART3_IRQ}, + {0x40004C00, STM32_UART4_IRQ}, + {0x40005000, STM32_UART5_IRQ}, + {0x40011400, STM32_UART6_IRQ}, + {0x40007800, 0}, /* no IRQ for UART 7 */ + {0x40007C00, 0}, /* no IRQ for UART 8 */ + }; + for (i = 0; i < ARRAY_LENGTH(uart_desc); ++i) { + assert(i < STM32F7XX_UART_COUNT); + const stm32_periph_t periph = STM32_UART1 + i; + DeviceState *uart_dev = qdev_create(NULL, "stm32f7xx-uart"); + uart_dev->id = stm32f7xx_periph_name_arr[periph]; + qdev_prop_set_int32(uart_dev, "periph", periph); + qdev_prop_set_ptr(uart_dev, "stm32_rcc", rcc_dev); + qemu_irq irq = NULL; + if (uart_desc[i].irq_idx != 0) { + irq = qdev_get_gpio_in(nvic, uart_desc[i].irq_idx); + } + stm32_init_periph(uart_dev, periph, uart_desc[i].addr, irq); + stm32_uart[i] = (Stm32F7xxUart *)uart_dev; + } + + /* SPI */ + struct { + uint32_t addr; + uint8_t irq_idx; + } const spi_desc[] = { + {0x40013000, STM32_SPI1_IRQ}, + {0x40003800, STM32_SPI2_IRQ}, + {0x40003CD0, STM32_SPI3_IRQ}, + {0x40013400, STM32_SPI4_IRQ}, + {0x40015000, STM32_SPI5_IRQ}, + {0x40015400, STM32_SPI6_IRQ}, + }; + for (i = 0; i < ARRAY_LENGTH(spi_desc); ++i) { + assert(i < STM32F7XX_SPI_COUNT); + const stm32_periph_t periph = STM32_SPI1 + i; + stm->spi_dev[i] = qdev_create(NULL, TYPE_STM32F2XX_SPI); + stm->spi_dev[i]->id = stm32f7xx_periph_name_arr[periph]; + qdev_prop_set_int32(stm->spi_dev[i], "periph", periph); + stm32_init_periph(stm->spi_dev[i], periph, spi_desc[i].addr, + qdev_get_gpio_in(nvic, spi_desc[i].irq_idx)); + } + + /* QSPI */ + stm->qspi_dev = qdev_create(NULL, TYPE_STM32F412_QSPI); + stm->qspi_dev->id = stm32f7xx_periph_name_arr[STM32_QSPI]; + stm32_init_periph(stm->qspi_dev, STM32_QSPI, 0xA0001000, qdev_get_gpio_in(nvic, STM32_QSPI_IRQ)); + + /* ADC */ + DeviceState *adc_dev = qdev_create(NULL, TYPE_STM32_ADC); + stm32_init_periph(adc_dev, STM32_ADC1, 0x40012000, NULL); + + /* RTC real time clock */ + DeviceState *rtc_dev = qdev_create(NULL, TYPE_STM32F2XX_RTC); + *stm32_rtc = rtc_dev; + stm32_init_periph(rtc_dev, STM32_RTC, 0x40002800, NULL); + // Alarm A + sysbus_connect_irq(SYS_BUS_DEVICE(rtc_dev), 0, qdev_get_gpio_in(exti_dev, 17)); + // Alarm B + sysbus_connect_irq(SYS_BUS_DEVICE(rtc_dev), 1, qdev_get_gpio_in(exti_dev, 17)); + // Wake up timer + sysbus_connect_irq(SYS_BUS_DEVICE(rtc_dev), 2, qdev_get_gpio_in(exti_dev, 22)); + + /* Power management */ + DeviceState *pwr_dev = qdev_create(NULL, TYPE_STM32F2XX_PWR); + stm32_init_periph(pwr_dev, STM32_RTC, 0x40007000, NULL); +//NVIC qdev_prop_set_ptr((*cpu)->env.nvic, "stm32_pwr", pwr_dev); + +#define dummy_dev(name, start, size) do {\ + DeviceState *dummy = qdev_create(NULL, TYPE_STM32F2XX_DUMMY); \ + qdev_prop_set_ptr(dummy, "name", (void *)name); \ + qdev_prop_set_int32(dummy, "size", size); \ + qdev_init_nofail(dummy); \ + sysbus_mmio_map(SYS_BUS_DEVICE(dummy), 0, start); \ +} while (0) + + + /* Timers */ + struct { + uint8_t timer_num; + uint32_t addr; + uint8_t irq_idx; + } const timer_desc[] = { + {1, 0x40010000, 0}, // TIM1 FIXME: TIM1 is a complex timer w/ multiple IRQs + {2, 0x40000000, STM32_TIM2_IRQ}, // TIM2 + {3, 0x40000400, STM32_TIM3_IRQ}, // TIM3 + {4, 0x40000800, STM32_TIM4_IRQ}, // TIM4 + {5, 0x40000C00, STM32_TIM5_IRQ}, // TIM5 + {6, 0x40001000, STM32_TIM6_IRQ}, // TIM6 + {7, 0x40001400, STM32_TIM7_IRQ}, // TIM7 + {8, 0x40010400, 0}, // TIM8 FIXME: TIM8 is a complex timer w/ multiple IRQs + {9, 0x40014000, STM32_TIM1_BRK_TIM9_IRQ}, // TIM9 + {10, 0x40014400, STM32_TIM1_UP_TIM10_IRQ}, // TIM10 + {11, 0x40014800, STM32_TIM1_TRG_COM_TIM11_IRQ}, // TIM11 + {12, 0x40001800, STM32_TIM8_BRK_TIM12_IRQ}, // TIM12 + {13, 0x40001C00, STM32_TIM8_UP_TIM13_IRQ}, // TIM13 + {14, 0x40002000, STM32_TIM8_TRG_COMM_TIM14_IRQ}, // TIM14 + }; + for (i = 0; i < ARRAY_LENGTH(timer_desc); ++i) { + assert(i < STM32F7XX_TIM_COUNT); + const stm32_periph_t periph = STM32_TIM1 + timer_desc[i].timer_num - 1; + + DeviceState *timer = qdev_create(NULL, TYPE_STM32F2XX_TIM); + timer->id = stm32f7xx_periph_name_arr[periph]; + stm32_init_periph(timer, periph, timer_desc[i].addr, + qdev_get_gpio_in(nvic, timer_desc[i].irq_idx)); + stm32_timer[timer_desc[i].timer_num - 1] = (Stm32Timer *)timer; + } + + /* Low-Power Timer */ + DeviceState *lptimer = qdev_create(NULL, TYPE_STM32F7XX_LPTIM); + lptimer->id = stm32f7xx_periph_name_arr[STM32_LPTIM1]; + stm32_init_periph(lptimer, STM32_LPTIM1, 0x40002400, qdev_get_gpio_in(nvic, STM32_LPTIM1_IRQ)); + *stm32_lptimer = (Stm32F7xxLPTimer *)lptimer; + + // 0x40002800 + dummy_dev("WWDG", 0x40002C00, 0x400); + dummy_dev("IWDG", 0x40003000, 0x400); + dummy_dev("Reserved", 0x40003400, 0x400); + // 0x40003800 + // 0x40003C00 + dummy_dev("Reserved", 0x40004000, 0x400); + // 0x40004400 + // 0x40004800 + // 0x40004C00 + // 0x40005000 + + DeviceState *i2c1 = qdev_create(NULL, TYPE_STM32F7XX_I2C); + i2c1->id = stm32f7xx_periph_name_arr[STM32_I2C1]; + qdev_prop_set_int32(i2c1, "periph", STM32_I2C1); + stm32_init_periph(i2c1, STM32_I2C1, 0x40005400, qdev_get_gpio_in(nvic, STM32_I2C1_EV_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(i2c1), 1, qdev_get_gpio_in(nvic, STM32_I2C1_ER_IRQ)); + + DeviceState *i2c2 = qdev_create(NULL, TYPE_STM32F7XX_I2C); + i2c2->id = stm32f7xx_periph_name_arr[STM32_I2C2]; + qdev_prop_set_int32(i2c2, "periph", STM32_I2C2); + stm32_init_periph(i2c2, STM32_I2C2, 0x40005800, qdev_get_gpio_in(nvic, STM32_I2C2_EV_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(i2c2), 1, qdev_get_gpio_in(nvic, STM32_I2C2_ER_IRQ)); + + DeviceState *i2c3 = qdev_create(NULL, TYPE_STM32F7XX_I2C); + i2c3->id = stm32f7xx_periph_name_arr[STM32_I2C3]; + qdev_prop_set_int32(i2c3, "periph", STM32_I2C3); + stm32_init_periph(i2c3, STM32_I2C3, 0x40005C00, qdev_get_gpio_in(nvic, STM32_I2C3_EV_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(i2c3), 1, qdev_get_gpio_in(nvic, STM32_I2C3_ER_IRQ)); + + DeviceState *i2c4 = qdev_create(NULL, TYPE_STM32F7XX_I2C); + i2c4->id = stm32f7xx_periph_name_arr[STM32_I2C4]; + qdev_prop_set_int32(i2c4, "periph", STM32_I2C4); + stm32_init_periph(i2c4, STM32_I2C4, 0x40006000, qdev_get_gpio_in(nvic, STM32_I2C4_EV_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(i2c4), 1, qdev_get_gpio_in(nvic, STM32_I2C4_ER_IRQ)); + + dummy_dev("BxCAN1", 0x40006400, 0x400); + dummy_dev("BxCAN2", 0x40006800, 0x400); + dummy_dev("Reserved", 0x40006C00, 0x400); + // 0x40007000 PWR probably common + dummy_dev("DAC1/DAC2", 0x40007400, 0x400); + dummy_dev("Reserved", 0x40007800, 0x400); + dummy_dev("Reserved", 0x40008000, 0x8000); + // USART1 + // USART6 + dummy_dev("Reserved", 0x40011800, 0x800); + // ADC1 - ADC2 - ADC3 + // skipped reserved from here on + dummy_dev("SDIO", 0x40012C00, 0x400); + // SPI1 + // SYSCFG needed + + DeviceState *crc = qdev_create(NULL, TYPE_STM32F2XX_CRC); + stm32_init_periph(crc, STM32_CRC, 0x40023000, NULL); + + DeviceState *dma1 = qdev_create(NULL, TYPE_STM32F2XX_DMA); + stm32_init_periph(dma1, STM32_DMA1, 0x40026000, NULL); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 0, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM0_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 1, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM1_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 2, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM2_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 3, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM3_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 4, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM4_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 5, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM5_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 6, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM6_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma1), 7, qdev_get_gpio_in(nvic, STM32_DMA1_STREAM7_IRQ)); + + DeviceState *dma2 = qdev_create(NULL, TYPE_STM32F2XX_DMA); + stm32_init_periph(dma2, STM32_DMA2, 0x40026400, NULL); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 0, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM0_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 1, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM1_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 2, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM2_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 3, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM3_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 4, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM4_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 5, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM5_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 6, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM6_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma2), 7, qdev_get_gpio_in(nvic, STM32_DMA2_STREAM7_IRQ)); +} + diff --git a/hw/arm/stm32f7xx.h b/hw/arm/stm32f7xx.h new file mode 100644 index 0000000000000..2620f61a1c99e --- /dev/null +++ b/hw/arm/stm32f7xx.h @@ -0,0 +1,15 @@ +#include "hw/arm/stm32.h" + + +#define STM32F7XX_GPIO_COUNT (STM32_GPIOK - STM32_GPIOA + 1) +#define STM32F7XX_SPI_COUNT 6 + +#define STM32F7XX_UART_COUNT 8 +#define STM32F7XX_TIM_COUNT 14 + +struct stm32f7xx { + DeviceState *spi_dev[STM32F7XX_SPI_COUNT]; + DeviceState *qspi_dev; + + qemu_irq display_done_signal; +}; diff --git a/hw/arm/stm32f7xx_i2c.c b/hw/arm/stm32f7xx_i2c.c new file mode 100644 index 0000000000000..a5cb938e3155f --- /dev/null +++ b/hw/arm/stm32f7xx_i2c.c @@ -0,0 +1,256 @@ +/* + * Copyright (c) 2016 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * QEMU model of the stm32f7xx I2C controller. + */ + +#include "qemu/osdep.h" +#include "hw/sysbus.h" +#include "hw/arm/stm32.h" +#include "hw/i2c/i2c.h" +#include "hw/hw.h" +#include "hw/qdev-properties.h" +#include "hw/irq.h" + +#define R_I2C_CR1 (0x00 / 4) +#define R_I2C_CR2 (0x04 / 4) +#define R_I2C_OAR1 (0x08 / 4) +#define R_I2C_OAR2 (0x0c / 4) +#define R_I2C_TIMINGR (0x10 / 4) +#define R_I2C_TIMEOUTR (0x14 / 4) +#define R_I2C_ISR (0x18 / 4) +#define R_I2C_ICR (0x1C / 4) +#define R_I2C_PECR (0x20 / 4) +#define R_I2C_RXDR (0x24 / 4) +#define R_I2C_TXDR (0x28 / 4) +#define R_I2C_MAX (0x28 / 4) + +#define R_I2C_CR1_PE_BIT (1 << 0) + +#define R_I2C_CR2_START_BIT (1 << 13) + +#define R_I2C_ISR_BERR_BIT (1 << 8) + + +#ifdef DEBUG_STM32_I2C +// NOTE: The usleep() helps the MacOS stdout from freezing when we have a lot of print out +#define DPRINTF(fmt, ...) \ + do { printf("STM32F7XX_I2c: " fmt , ## __VA_ARGS__); \ + usleep(1000); \ + } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + +static const char *stm32f7xx_i2c_reg_name_arr[] = { + "CR1", + "CR2", + "OAR1", + "OAR2", + "TIMINGR", + "TIMEOUTR", + "ISR", + "ICR", + "PECR", + "RXDR", + "TXDR", +}; + + + +typedef struct stm32f7xx_i2c { + SysBusDevice busdev; + MemoryRegion iomem; + qemu_irq evt_irq; + qemu_irq err_irq; + + I2CBus *bus; + + stm32_periph_t periph; + + int32_t rx; + int rx_full; + uint16_t regs[R_I2C_MAX]; + +} stm32f7xx_i2c; + + +/* Routine which updates the I2C's IRQs. This should be called whenever + * an interrupt-related flag is updated. + */ +static void stm32f7xx_i2c_update_irq(stm32f7xx_i2c *s) { + int new_err_irq_level = (s->regs[R_I2C_ISR] & R_I2C_ISR_BERR_BIT); + + int new_evt_irq_level = 0; + + DPRINTF("%s %s: setting evt_irq to %d\n", __func__, s->busdev.parent_obj.id, + !!new_evt_irq_level); + qemu_set_irq(s->evt_irq, !!new_evt_irq_level); + + DPRINTF("%s %s: setting err_irq to %d\n", __func__, s->busdev.parent_obj.id, + !!new_err_irq_level); + qemu_set_irq(s->err_irq, !!new_err_irq_level); +} + + + +static uint64_t stm32f7xx_i2c_read(void *arg, hwaddr offset, unsigned size) +{ + stm32f7xx_i2c *s = arg; + uint32_t r = UINT32_MAX; + const char *reg_name = "UNKNOWN"; + + if (!(size == 2 || size == 4 || (offset & 0x3) != 0)) { + STM32_BAD_REG(offset, size); + } + offset >>= 2; + if (offset < R_I2C_MAX) { + r = s->regs[offset]; + reg_name = stm32f7xx_i2c_reg_name_arr[offset]; + } else { + qemu_log_mask(LOG_GUEST_ERROR, "Out of range I2C write, offset 0x%x\n", + (unsigned)offset << 2); + } + + DPRINTF("%s %s: register %s, result: 0x%x\n", __func__, s->busdev.parent_obj.id, + reg_name, r); + return r; +} + + +static void stm32f7xx_i2c_write(void *arg, hwaddr offset, uint64_t data, unsigned size) +{ + const char *reg_name = "UNKNOWN"; + struct stm32f7xx_i2c *s = (struct stm32f7xx_i2c *)arg; + + if (size != 2 && size != 4) { + STM32_BAD_REG(offset, size); + } + /* I2C registers are all at most 32 bits wide */ + data &= 0xffffffff; + offset >>= 2; + + if (offset < R_I2C_MAX) { + reg_name = stm32f7xx_i2c_reg_name_arr[offset]; + } + DPRINTF("%s %s: register %s, data: 0x%llx, size:%d\n", __func__, s->busdev.parent_obj.id, + reg_name, data, size); + + + switch (offset) { + case R_I2C_CR1: + if ((data & R_I2C_CR1_PE_BIT) == 0) { + s->regs[R_I2C_ISR] = 0; + } + break; + + case R_I2C_CR2: + if (data & R_I2C_CR2_START_BIT) { + // Abort all attempted master transfers with a bus error + s->regs[R_I2C_ISR] |= R_I2C_ISR_BERR_BIT; + } else { + s->regs[offset] = data; + } + break; + + case R_I2C_TXDR: + i2c_send(s->bus, (uint8_t)data); + break; + + case R_I2C_ICR: + s->regs[R_I2C_ISR] &= ~data; + break; + + case R_I2C_ISR: + case R_I2C_RXDR: + STM32_WARN_RO_REG(offset); + break; + + case R_I2C_OAR1: + case R_I2C_OAR2: + case R_I2C_TIMINGR: + case R_I2C_TIMEOUTR: + case R_I2C_PECR: + s->regs[offset] = data; + break; + + default: + STM32_BAD_REG(offset, size); + break; + } + stm32f7xx_i2c_update_irq(s); +} + +static const MemoryRegionOps stm32f7xx_i2c_ops = { + .read = stm32f7xx_i2c_read, + .write = stm32f7xx_i2c_write, + .endianness = DEVICE_NATIVE_ENDIAN +}; + +static void stm32f7xx_i2c_reset(DeviceState *dev) +{ +} + +static void stm32f7xx_i2c_init(Object *obj) +{ + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + struct stm32f7xx_i2c *s = STM32F7XX_I2C(obj); + + memory_region_init_io(&s->iomem, OBJECT(s), &stm32f7xx_i2c_ops, s, "i2c", 0x3ff); + sysbus_init_mmio(dev, &s->iomem); + sysbus_init_irq(dev, &s->evt_irq); + sysbus_init_irq(dev, &s->err_irq); + s->bus = i2c_init_bus(DEVICE(dev), "i2c"); + + DPRINTF("%s %s: INITIALIZED\n", __func__, s->busdev.parent_obj.id); +} + + +static Property stm32f7xx_i2c_properties[] = { + DEFINE_PROP_INT32("periph", struct stm32f7xx_i2c, periph, -1), + DEFINE_PROP_END_OF_LIST() +}; + +static void stm32f7xx_i2c_class_init(ObjectClass *c, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(c); + SysBusDeviceClass *sc = SYS_BUS_DEVICE_CLASS(c); + + dc->reset = stm32f7xx_i2c_reset; + device_class_set_props(dc, stm32f7xx_i2c_properties); +} + +static const TypeInfo stm32f7xx_i2c_info = { + .name = TYPE_STM32F7XX_I2C, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(struct stm32f7xx_i2c), + .instance_init = stm32f7xx_i2c_init, + .class_init = stm32f7xx_i2c_class_init +}; + +static void stm32f7xx_i2c_register_types(void) +{ + type_register_static(&stm32f7xx_i2c_info); +} + +type_init(stm32f7xx_i2c_register_types) diff --git a/hw/arm/stm32f7xx_lptim.c b/hw/arm/stm32f7xx_lptim.c new file mode 100644 index 0000000000000..9e9a767eb688f --- /dev/null +++ b/hw/arm/stm32f7xx_lptim.c @@ -0,0 +1,245 @@ +/* + * Source code based on stm32f2xx_tim.c + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +/* + * QEMU stm32f7xx LPTIM emulation + */ + +#include "qemu/osdep.h" +#include "hw/sysbus.h" +#include "hw/arm/stm32.h" +#include "qemu/timer.h" +#include "hw/qdev-properties.h" +#include "hw/irq.h" + +//#define DEBUG_STM32F7XX_LPTIM +#ifdef DEBUG_STM32F7XX_LPTIM +// NOTE: The usleep() helps the MacOS stdout from freezing when we have a lot of print out +#define DPRINTF(fmt, ...) \ + do { \ + printf("DEBUG_STM32F7XX_LPTIM %s: " fmt , __func__, ## __VA_ARGS__); \ + usleep(100); \ + } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + + +#define R_LPTIM_ISR (0x00 / 4) +#define R_LPTIM_ICR (0x04 / 4) +#define R_LPTIM_IER (0x08 / 4) +#define R_LPTIM_CFGR (0x0C / 4) +#define R_LPTIM_CR (0x10 / 4) +#define R_LPTIM_CMP (0x14 / 4) +#define R_LPTIM_ARR (0x18 / 4) +#define R_LPTIM_CNT (0x1C / 4) +#define R_LPTIM_OR (0x20 / 4) +#define R_LPTIM_MAX (0x24 / 4) + +static const char *f7xx_lptim_reg_names[] = { + ENUM_STRING(R_LPTIM_ISR), + ENUM_STRING(R_LPTIM_ICR), + ENUM_STRING(R_LPTIM_IER), + ENUM_STRING(R_LPTIM_CFGR), + ENUM_STRING(R_LPTIM_CR), + ENUM_STRING(R_LPTIM_CMP), + ENUM_STRING(R_LPTIM_ARR), + ENUM_STRING(R_LPTIM_CNT), + ENUM_STRING(R_LPTIM_OR), +}; + + +typedef struct f7xx_lptim { + SysBusDevice busdev; + MemoryRegion iomem; + QEMUTimer *timer; + qemu_irq irq; + uint32_t regs[R_LPTIM_MAX]; + + qemu_irq pwm_ratio_changed; + qemu_irq pwm_enable; +} f7xx_lptim; + +static uint32_t f7xx_lptim_period(f7xx_lptim *s) { + /* FIXME: hard coded to 32kHz */ + return 31250; +} + +static int64_t f7xx_lptim_next_transition(f7xx_lptim *s, int64_t current_time) { + return current_time + f7xx_lptim_period(s) * s->regs[R_LPTIM_ARR]; +} + +static void f7xx_lptim_timer(void *arg) { + f7xx_lptim *s = arg; + if (s->regs[R_LPTIM_CR] & 1) { + timer_mod(s->timer, f7xx_lptim_next_transition(s, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL))); + } + qemu_set_irq(s->irq, 1); +} + +static uint64_t f7xx_lptim_read(void *arg, hwaddr addr, unsigned int size) { + f7xx_lptim *s = arg; + uint32_t r = 0; + int offset = addr & 0x3; + addr >>= 2; + if (addr >= R_LPTIM_MAX) { + DPRINTF("invalid read register 0x%x\n", (unsigned int)addr << 2); + qemu_log_mask(LOG_GUEST_ERROR, "f7xx lptim invalid read register 0x%x\n", + (unsigned int)addr << 2); + return 0; + } + + switch (addr) { + case R_LPTIM_CFGR: + case R_LPTIM_CMP: + case R_LPTIM_ARR: + case R_LPTIM_CNT: + case R_LPTIM_CR: + r = (s->regs[addr] >> offset * 8) & ((1ull << (8 * size)) - 1); + break; + default: + DPRINTF("unimplemented read 0x%x+%u size %u\n", (unsigned int)addr << 2, offset, size); + qemu_log_mask(LOG_UNIMP, "f7xx lptim unimplemented read 0x%x+%u size %u\n", + (unsigned int)addr << 2, offset, size); + break; + } + + DPRINTF("reg: %s, size: %d, value: 0x%x\n", f7xx_lptim_reg_names[addr], size, r); + return r; +} + +static void f7xx_lptim_write(void *arg, hwaddr addr, uint64_t data, unsigned int size) { + f7xx_lptim *s = arg; + int offset = addr & 0x3; + addr >>= 2; + DPRINTF("reg:%s, size: %d, value: 0x%llx\n", f7xx_lptim_reg_names[addr], size, data); + if (addr >= R_LPTIM_MAX) { + DPRINTF("invalid write register 0x%x\n", (unsigned int)addr << 2); + qemu_log_mask(LOG_GUEST_ERROR, "f7xx lptim invalid write register 0x%x\n", + (unsigned int)addr << 2); + return; + } + + switch (size) { + case 1: + data = (s->regs[addr] & ~(0xff << (offset * 8))) | data << (offset * 8); + break; + case 2: + data = (s->regs[addr] & ~(0xffff << (offset * 8))) | data << (offset * 8); + break; + case 4: + break; + default: + abort(); + } + + switch (addr) { + case R_LPTIM_CR: + if ((s->regs[addr] & 1) == 0 && data & 1) { + DPRINTF("started\n"); + timer_mod(s->timer, f7xx_lptim_next_transition(s, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL))); + qemu_set_irq(s->pwm_enable, 1); + } else if (s->regs[addr] & 1 && (data & 1) == 0) { + DPRINTF("stopped\n"); + timer_del(s->timer); + qemu_set_irq(s->pwm_enable, 0); + } + s->regs[addr] = data; + break; + case R_LPTIM_CMP: + { + s->regs[addr] = data; + uint32_t ratio = (s->regs[R_LPTIM_CMP] * 255) / s->regs[R_LPTIM_ARR]; + DPRINTF("Setting PWM ratio to %d (0x%x, 0x%x)\n", ratio, s->regs[R_LPTIM_CMP], s->regs[R_LPTIM_ARR]); + qemu_set_irq(s->pwm_ratio_changed, ratio); + break; + } + case R_LPTIM_CFGR: + case R_LPTIM_ARR: + case R_LPTIM_CNT: + s->regs[addr] = data; + break; + default: + DPRINTF("unimplemented write 0x%x+%u size %u val 0x%x\n", (unsigned int)addr << 2, + offset, size, (unsigned int)data); + qemu_log_mask(LOG_UNIMP, "f7xx lptim unimplemented write 0x%x+%u size %u val 0x%x\n", + (unsigned int)addr << 2, offset, size, (unsigned int)data); + break; + } +} + +static const MemoryRegionOps f7xx_lptim_ops = { + .read = f7xx_lptim_read, + .write = f7xx_lptim_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .impl = { + .min_access_size = 1, + .max_access_size = 4, + } +}; + +static void f7xx_lptim_reset(DeviceState *dev) { + f7xx_lptim *s = STM32F7XX_LPTIM(dev); + + timer_del(s->timer); + memset(&s->regs, 0, sizeof(s->regs)); +} + + +static void f7xx_lptim_init(Object *obj) { + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + f7xx_lptim *s = STM32F7XX_LPTIM(obj); + + memory_region_init_io(&s->iomem, OBJECT(s), &f7xx_lptim_ops, s, "lptim", 0xa0); + sysbus_init_mmio(dev, &s->iomem); + s->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, f7xx_lptim_timer, s); + sysbus_init_irq(dev, &s->irq); + + qdev_init_gpio_out_named(DEVICE(dev), &s->pwm_ratio_changed, "pwm_ratio_changed", 1); + qdev_init_gpio_out_named(DEVICE(dev), &s->pwm_enable, "pwm_enable", 1); +} + +static Property f7xx_lptim_properties[] = { + DEFINE_PROP_END_OF_LIST(), +}; + +static void f7xx_lptim_class_init(ObjectClass *klass, void *data) { + DeviceClass *dc = DEVICE_CLASS(klass); + SysBusDeviceClass *sc = SYS_BUS_DEVICE_CLASS(klass); + //TODO: fix this: dc->no_user = 1; + dc->reset = f7xx_lptim_reset; + + device_class_set_props(dc, f7xx_lptim_properties); +} + +static const TypeInfo f7xx_lptim_info = { + .name = TYPE_STM32F7XX_LPTIM, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(f7xx_lptim), + .instance_init = f7xx_lptim_init, + .class_init = f7xx_lptim_class_init, +}; + +static void f7xx_lptim_register_types(void) { + type_register_static(&f7xx_lptim_info); +} + +type_init(f7xx_lptim_register_types) diff --git a/hw/block/Makefile.objs b/hw/block/Makefile.objs index 4b4a2b338dc47..c3f834d4ac178 100644 --- a/hw/block/Makefile.objs +++ b/hw/block/Makefile.objs @@ -1,9 +1,11 @@ common-obj-y += block.o cdrom.o hd-geometry.o +common-obj-y += mx25u.o mt25q.o common-obj-$(CONFIG_FDC) += fdc.o common-obj-$(CONFIG_SSI_M25P80) += m25p80.o common-obj-$(CONFIG_NAND) += nand.o common-obj-$(CONFIG_PFLASH_CFI01) += pflash_cfi01.o common-obj-$(CONFIG_PFLASH_CFI02) += pflash_cfi02.o +common-obj-y += pflash_jedec_424.o common-obj-$(CONFIG_XEN) += xen-block.o common-obj-$(CONFIG_ECC) += ecc.o common-obj-$(CONFIG_ONENAND) += onenand.o diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index 82270884416e3..3999cf1d87bb6 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -215,6 +215,7 @@ static const FlashPartInfo known_devices[] = { { INFO("mx25l1606e", 0xc22015, 0, 64 << 10, 32, ER_4K) }, { INFO("mx25l3205d", 0xc22016, 0, 64 << 10, 64, 0) }, { INFO("mx25l6405d", 0xc22017, 0, 64 << 10, 128, 0) }, + //{ INFO("mx25u6435f", 0xc22537, 0, 64 << 10, 128, ER_4K | ER_32K) }, { INFO("mx25l12805d", 0xc22018, 0, 64 << 10, 256, 0) }, { INFO("mx25l12855e", 0xc22618, 0, 64 << 10, 256, 0) }, { INFO("mx25l25635e", 0xc22019, 0, 64 << 10, 512, 0) }, @@ -389,6 +390,9 @@ typedef enum { WEVCR = 0x61, DIE_ERASE = 0xC4, + + SLEEP = 0xb9, + WAKE = 0xab, } FlashCMD; typedef enum { @@ -1068,6 +1072,8 @@ static void decode_new_cmd(Flash *s, uint32_t value) } break; case NOP: + case SLEEP: +// case WAKE: break; case EN_4BYTE_ADDR: s->four_bytes_address_mode = true; diff --git a/hw/block/mt25q.c b/hw/block/mt25q.c new file mode 100644 index 0000000000000..0964e5a83a993 --- /dev/null +++ b/hw/block/mt25q.c @@ -0,0 +1,518 @@ +/* + * Emulate a QSPI flash device following the mt25q command set. + * Modelled after the m25p80 emulation found in hw/block/m25p80.c + */ + +#include "qemu/osdep.h" +#include "qemu/log.h" +#include "qapi/error.h" +#include "hw/hw.h" +#include "sysemu/block-backend.h" +#include "sysemu/blockdev.h" +#include "hw/qdev-properties.h" +#include "hw/ssi/ssi.h" +#include "migration/vmstate.h" + + +// TODO: These should be made configurable to support different flash parts +#define FLASH_SECTOR_SIZE (64 * 1024) +#define FLASH_NUM_SECTORS (256) +#define FLASH_PAGE_SIZE (256) +const uint8_t MT25Q_ID[] = { 0x20, 0xbb, 0x19 }; + +#ifndef MT25Q_ERR_DEBUG +#define MT25Q_ERR_DEBUG 0 +#endif + +// The usleep() helps MacOS stdout from freezing when printing a lot +#define DB_PRINT_L(level, ...) do { \ + if (MT25Q_ERR_DEBUG > (level)) { \ + fprintf(stderr, "%d: %s: ", level, __func__); \ + fprintf(stderr, ## __VA_ARGS__); \ + fprintf(stderr, "\n"); \ + usleep(1000); \ + } \ +} while (0); + + +typedef enum { + READ_EVCR = 0x65, + WRITE_EVCR = 0x61, + + RESET_ENABLE = 0x66, + RESET = 0x99, + + WRITE_ENABLE = 0x06, + WRITE_DISABLE = 0x04, + + READ_STATUS_REG = 0x05, + READ_FLAG_STATUS_REG = 0x70, + + FAST_READ = 0x0b, + FAST_READ_DDR = 0x0d, + READ_QID = 0xaf, + + PAGE_PROGRAM = 0x02, + + ERASE_SUBSECTOR = 0x20, // Erase 4k sector + ERASE_BLOCK = 0xd8, // Erase 64k block + + ERASE_SUSPEND = 0x75, + ERASE_RESUME = 0x7a, + + DEEP_SLEEP = 0xb9, + WAKE = 0xab, + + QUAD_ENABLE = 0x35, +} FlashCmd; + +typedef enum { + STATE_IDLE, + + STATE_COLLECT_CMD_DATA, + + STATE_WRITE, + STATE_READ, + STATE_READ_QID, + STATE_READ_REGISTER, +} CMDState; + +#define R_STATUS_BUSY (1 << 0) +#define R_STATUS_WRITE_ENABLE (1 << 1) + +#define R_FLAG_STATUS_ERASE_SUSPEND (1 << 6) + +typedef struct { + SSISlave parent_obj; + + //--- Storage --- + BlockBackend *blk; + uint8_t *storage; + uint32_t size; + int page_size; + + int64_t dirty_page; + + //--- Registers --- + uint8_t EVCR; + uint8_t STATUS_REG; + uint8_t FLAG_STATUS_REG; + + //--- Command state --- + CMDState state; + FlashCmd cmd_in_progress; + uint8_t cmd_data[4]; //! Commands can require up to 4 bytes of additional data + uint8_t cmd_bytes; //! Number of bytes required by command [0,4] + uint32_t len; + uint32_t pos; + uint64_t current_address; + + uint8_t *current_register; + uint8_t register_read_mask; //! mask to apply after reading current_register + + bool reset_enabled; +} Flash; + +typedef struct { + SSISlaveClass parent_class; +} MT25QClass; + +#define TYPE_MT25Q "mt25q-generic" +#define MT25Q(obj) \ + OBJECT_CHECK(Flash, (obj), TYPE_MT25Q) +#define MT25Q_CLASS(klass) \ + OBJECT_CLASS_CHECK(MT25QClass, (klass), TYPE_MT25Q) +#define MT25Q_GET_CLASS(obj) \ + OBJECT_GET_CLASS(MT25QClass, (obj), TYPE_MT25Q) + +static void blk_sync_complete(void *opaque, int ret) +{ + /* do nothing. Masters do not directly interact with the backing store, + * only the working copy so no mutexing required. + */ +} + +static void mt25q_flash_sync_page(Flash *s, int page) +{ + int blk_sector, nb_sectors; + QEMUIOVector iov; + + if (!s->blk || blk_is_read_only(s->blk)) { + return; + } + + blk_sector = (page * s->page_size) / BDRV_SECTOR_SIZE; + nb_sectors = DIV_ROUND_UP(s->page_size, BDRV_SECTOR_SIZE); + qemu_iovec_init(&iov, 1); + qemu_iovec_add(&iov, s->storage + blk_sector * BDRV_SECTOR_SIZE, + nb_sectors * BDRV_SECTOR_SIZE); + blk_aio_pwritev(s->blk, page * s->page_size, &iov, 0, + blk_sync_complete, NULL); +} + +static inline void mt25q_flash_sync_area(Flash *s, int64_t off, int64_t len) +{ + int64_t start, end, nb_sectors; + QEMUIOVector iov; + + if (!s->blk || blk_is_read_only(s->blk)) { + return; + } + + assert(!(len % BDRV_SECTOR_SIZE)); + start = off / BDRV_SECTOR_SIZE; + end = (off + len) / BDRV_SECTOR_SIZE; + nb_sectors = end - start; + qemu_iovec_init(&iov, 1); + qemu_iovec_add(&iov, s->storage + (start * BDRV_SECTOR_SIZE), + nb_sectors * BDRV_SECTOR_SIZE); + blk_aio_pwritev(s->blk, off, &iov, 0, blk_sync_complete, NULL); +} + +static inline void flash_sync_dirty(Flash *s, int64_t newpage) +{ + if (s->dirty_page >= 0 && s->dirty_page != newpage) { + mt25q_flash_sync_page(s, s->dirty_page); + s->dirty_page = newpage; + } +} + +static void mt25q_flash_erase(Flash *s, uint32_t offset, FlashCmd cmd) +{ + uint32_t len; + + switch (cmd) { + case ERASE_SUBSECTOR: // Erase 4k sector + len = 4 << 10; + break; + case ERASE_BLOCK: // Erase 64k block + len = 64 << 10; + break; + default: + abort(); + } + + DB_PRINT_L(0, "erase offset = %#x, len = %d", offset, len); + + if (!(s->STATUS_REG & R_STATUS_WRITE_ENABLE)) { + DB_PRINT_L(-1, "erase with write protect!\n"); + qemu_log_mask(LOG_GUEST_ERROR, "MT25Q: erase with write protect!\n"); + return; + } + + memset(s->storage + offset, 0xff, len); + mt25q_flash_sync_area(s, offset, len); +} + +static void mt25q_decode_new_cmd(Flash *s, uint32_t value) +{ + s->cmd_in_progress = value; + DB_PRINT_L(2, "decoding new command: 0x%x", value); + + switch (value) { + case RESET_ENABLE: + // handled below + break; + + case RESET: + assert(s->reset_enabled); + break; + + case WRITE_ENABLE: + s->STATUS_REG |= R_STATUS_WRITE_ENABLE; + s->state = STATE_IDLE; + break; + case WRITE_DISABLE: + s->STATUS_REG &= ~R_STATUS_WRITE_ENABLE; + s->state = STATE_IDLE; + break; + + case WRITE_EVCR: + s->pos = 0; + s->cmd_bytes = 1; + s->state = STATE_COLLECT_CMD_DATA; + break; + case READ_EVCR: + s->current_register = &s->EVCR; + s->state = STATE_READ_REGISTER; + break; + case READ_STATUS_REG: + s->current_register = &s->STATUS_REG; + s->state = STATE_READ_REGISTER; + break; + case READ_FLAG_STATUS_REG: + s->current_register = &s->FLAG_STATUS_REG; + s->state = STATE_READ_REGISTER; + break; + + case FAST_READ: + case FAST_READ_DDR: + s->cmd_bytes = 3; + s->pos = 0; + s->state = STATE_COLLECT_CMD_DATA; + break; + + case READ_QID: + s->cmd_bytes = 0; + s->state = STATE_READ_QID; + s->len = 3; + s->pos = 0; + break; + + case PAGE_PROGRAM: + s->pos = 0; + s->cmd_bytes = 3; + s->state = STATE_COLLECT_CMD_DATA; + break; + + case ERASE_SUBSECTOR: + case ERASE_BLOCK: + s->pos = 0; + s->cmd_bytes = 3; + s->state = STATE_COLLECT_CMD_DATA; + break; + + case ERASE_SUSPEND: + case ERASE_RESUME: + break; + + case DEEP_SLEEP: + case WAKE: + break; + + case QUAD_ENABLE: + break; + + default: + DB_PRINT_L(-1, "Unknown cmd 0x%x\n", value); + qemu_log_mask(LOG_GUEST_ERROR, "MT25Q: Unknown cmd 0x%x\n", value); + } + + s->reset_enabled = (value == RESET_ENABLE); +} + +static void mt25q_handle_cmd_data(Flash *s) +{ + s->state = STATE_IDLE; + + switch (s->cmd_in_progress) { + case WRITE_EVCR: + s->EVCR = s->cmd_data[0]; + s->current_address = 0; + break; + case READ_EVCR: + assert(false); + break; + case PAGE_PROGRAM: + s->current_address = (s->cmd_data[2] << 16) | (s->cmd_data[1] << 8) | (s->cmd_data[0]); + s->state = STATE_WRITE; + break; + case READ_STATUS_REG: + case READ_FLAG_STATUS_REG: + assert(false); + break; + case FAST_READ: + case FAST_READ_DDR: + s->current_address = (s->cmd_data[2] << 16) | (s->cmd_data[1] << 8) | (s->cmd_data[0]); + DB_PRINT_L(2, "Read From: 0x%"PRIu64, s->current_address); + s->state = STATE_READ; + break; + case ERASE_SUBSECTOR: + case ERASE_BLOCK: + s->current_address = (s->cmd_data[2] << 16) | (s->cmd_data[1] << 8) | (s->cmd_data[0]); + mt25q_flash_erase(s, s->current_address, s->cmd_in_progress); + s->STATUS_REG |= R_STATUS_BUSY; + s->register_read_mask = R_STATUS_BUSY; + break; + + case ERASE_SUSPEND: + case ERASE_RESUME: + s->current_address = (s->cmd_data[2] << 16) | (s->cmd_data[1] << 8) | (s->cmd_data[0]); + break; + + default: + s->current_address = (s->cmd_data[2] << 16) | (s->cmd_data[1] << 8) | (s->cmd_data[0]); + DB_PRINT_L(-1, "Unknown cmd data 0x%x\n", s->cmd_in_progress); + qemu_log_mask(LOG_GUEST_ERROR, "MT25Q: Unknown cmd data 0x%x\n", s->cmd_in_progress); + break; + } +} + +static void mt25q_write8(Flash *s, uint8_t value) +{ + int64_t page = s->current_address / s->page_size; + + // TODO: Write protection + + uint8_t current = s->storage[s->current_address]; + if (value & ~current) { + DB_PRINT_L(-1, "Flipping bit from 0 => 1 (addr=0x%llx, value=0x%x, current=0x%x)\n", + s->current_address, value, current); + qemu_log_mask(LOG_GUEST_ERROR, "MT25Q: Flipping bit from 0 => 1\n"); + // if a bit in the flash is already a 0, leave it as a 0 + value &= current; + } + DB_PRINT_L(2, "Write 0x%"PRIx8" = 0x%"PRIx64, (uint8_t)value, s->current_address); + s->storage[s->current_address] = (uint8_t)value; + + flash_sync_dirty(s, page); + s->dirty_page = page; +} + +static uint32_t mt25q_transfer8(SSISlave *ss, uint32_t tx) +{ + Flash *s = MT25Q(ss); + uint32_t r = 0; + + switch (s->state) { + case STATE_COLLECT_CMD_DATA: + DB_PRINT_L(2, "Collected: 0x%"PRIx32, (uint32_t)tx); + s->cmd_data[s->pos++] = (uint8_t)tx; + if (s->pos == s->cmd_bytes) { + mt25q_handle_cmd_data(s); + } + break; + case STATE_WRITE: + if (s->current_address > s->size) { + DB_PRINT_L(-1, "MT25Q: Out of bounds flash write to 0x%"PRIx64"\n", s->current_address); + qemu_log_mask(LOG_GUEST_ERROR, + "MT25Q: Out of bounds flash write to 0x%"PRIx64"\n", s->current_address); + } else { + mt25q_write8(s, tx); + s->current_address += 1; + } + break; + case STATE_READ: + if (s->current_address > s->size) { + DB_PRINT_L(-1, "MT25Q: Out of bounds flash read from 0x%"PRIx64"\n", s->current_address); + qemu_log_mask(LOG_GUEST_ERROR, + "MT25Q: Out of bounds flash read from 0x%"PRIx64"\n", s->current_address); + } else { + DB_PRINT_L(2, "Read 0x%"PRIx64" = 0x%"PRIx8, s->current_address, (uint8_t)r); + r = s->storage[s->current_address]; + s->current_address = (s->current_address + 1) % s->size; + } + break; + case STATE_READ_QID: + r = MT25Q_ID[s->pos]; + DB_PRINT_L(1, "Read QID 0x%x (pos 0x%x)", (uint8_t)r, s->pos); + ++s->pos; + if (s->pos == s->len) { + s->pos = 0; + s->state = STATE_IDLE; + } + break; + case STATE_READ_REGISTER: + r = *s->current_register; + *s->current_register &= ~s->register_read_mask; + s->register_read_mask = 0; + s->state = STATE_IDLE; + DB_PRINT_L(2, "Read register"); + break; + case STATE_IDLE: + mt25q_decode_new_cmd(s, tx); + break; + } + + return r; +} + +static void mt25q_realize(SSISlave *ss, Error **errp) +{ + DriveInfo *dinfo; + Flash *s = MT25Q(ss); + + s->state = STATE_IDLE; + s->size = FLASH_SECTOR_SIZE * FLASH_NUM_SECTORS; + s->page_size = FLASH_PAGE_SIZE; + s->dirty_page = -1; + s->STATUS_REG = 0; + + if (s->blk) { + DB_PRINT_L(0, "Binding to IF_MTD drive"); + s->storage = blk_blockalign(s->blk, s->size); + + + if (blk_pread(s->blk, 0, s->storage, s->size) != s->size) { + error_setg(errp, "Failed to initialize SPI flash!"); + return; + } + } else { + DB_PRINT_L(-1, "No BDRV - binding to RAM"); + s->storage = blk_blockalign(NULL, s->size); + memset(s->storage, 0xFF, s->size); + } +} + +static int mt25q_cs(SSISlave *ss, bool select) +{ + Flash *s = MT25Q(ss); + + if (select) { + s->len = 0; + s->pos = 0; + s->state = STATE_IDLE; + flash_sync_dirty(s, -1); + } + + DB_PRINT_L(2, "CS %s", select ? "HIGH" : "LOW"); + + return 0; +} + +static int mt25q_pre_save(void *opaque) +{ + flash_sync_dirty((Flash *)opaque, -1); + + return 0; +} + +static const VMStateDescription vmstate_mt25q = { + .name = "mt25q", + .version_id = 1, + .minimum_version_id = 1, + .pre_save = mt25q_pre_save, + .fields = (VMStateField[]) { + VMSTATE_END_OF_LIST() + } +}; + +static Property mx251_properties[] = { + DEFINE_PROP_DRIVE("drive", Flash, blk), + DEFINE_PROP_END_OF_LIST(), +}; + +static void mt25q_class_init(ObjectClass *class, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(class); + SSISlaveClass *c = SSI_SLAVE_CLASS(class); + + c->realize = mt25q_realize; + c->transfer = mt25q_transfer8; + c->set_cs = mt25q_cs; + c->cs_polarity = SSI_CS_LOW; + dc->vmsd = &vmstate_mt25q; + device_class_set_props(dc, mx251_properties); +} + +static const TypeInfo mt25q_info = { + .name = TYPE_MT25Q, + .parent = TYPE_SSI_SLAVE, + .instance_size = sizeof(Flash), + .class_size = sizeof(MT25QClass), + .abstract = true, +}; + +static void mt25q_register_types(void) +{ + type_register_static(&mt25q_info); + + TypeInfo ti = { + .name = "mt25q256", + .parent = TYPE_MT25Q, + .class_init = mt25q_class_init, + }; + type_register(&ti); +} + +type_init(mt25q_register_types) diff --git a/hw/block/mx25u.c b/hw/block/mx25u.c new file mode 100644 index 0000000000000..c2d0b985ec8b2 --- /dev/null +++ b/hw/block/mx25u.c @@ -0,0 +1,537 @@ +/* + * Emulate a QSPI flash device following the mx25u command set. + * Modelled after the m25p80 emulation found in hw/block/m25p80.c + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "qemu/log.h" +#include "hw/hw.h" +#include "migration/vmstate.h" +#include "sysemu/block-backend.h" +#include "sysemu/blockdev.h" +#include "hw/qdev-properties.h" +#include "hw/ssi/ssi.h" + + +// TODO: These should be made configurable to support different flash parts +#define FLASH_SECTOR_SIZE (64 << 10) +#define FLASH_NUM_SECTORS (128) +#define FLASH_PAGE_SIZE (256) +const uint8_t MX25U_ID[] = { 0xc2, 0x25, 0x37 }; + +#ifndef MX25U_ERR_DEBUG +#define MX25U_ERR_DEBUG 0 +#endif + +// The usleep() helps MacOS stdout from freezing when printing a lot +#define DB_PRINT_L(level, ...) do { \ + if (MX25U_ERR_DEBUG > (level)) { \ + fprintf(stderr, "%d: %s: ", level, __func__); \ + fprintf(stderr, ## __VA_ARGS__); \ + fprintf(stderr, "\n"); \ + usleep(1000); \ + } \ +} while (0); + +typedef enum { + WRITE_ENABLE = 0x06, + WRITE_DISABLE = 0x04, + + READ_STATUS_REG = 0x05, + READ_SCUR_REG = 0x2b, + + READ = 0x03, + FAST_READ = 0x0b, + QREAD = 0x6b, + READ_ID = 0x9f, + READ_QID = 0xaf, + + PAGE_PROGRAM = 0x02, + QPAGE_PROGRAM = 0x38, + + ERASE_SUBSECTOR = 0x20, // Erase 4k sector + ERASE_SECTOR = 0x52, // Erase 32k sector + ERASE_BLOCK = 0xd8, // Erase 64k block + ERASE_CHIP = 0xc7, + + ERASE_SUSPEND = 0xB0, + ERASE_RESUME = 0x30, + + DEEP_SLEEP = 0xb9, + WAKE = 0xab, + + QUAD_ENABLE = 0x35, + QUAD_DISABLE = 0xf5, +} FlashCmd; + +typedef enum { + STATE_IDLE, + + STATE_COLLECT_CMD_DATA, + + STATE_WRITE, + STATE_READ, + STATE_READ_ID, + STATE_READ_REGISTER, +} CMDState; + +#define R_SR_WIP (1 << 0) +#define R_SR_WEL (1 << 1) +#define R_SR_BP0 (1 << 2) +#define R_SR_BP1 (1 << 3) +#define R_SR_BP2 (1 << 4) +#define R_SR_BP3 (1 << 5) +#define R_SR_QE (1 << 6) +#define R_SR_SRWD (1 << 7) + +#define R_SCUR_SOTP (1 << 0) +#define R_SCUR_LDSO (1 << 1) +#define R_SCUR_PSB (1 << 2) +#define R_SCUR_ESB (1 << 3) +#define R_SCUR_PFAIL (1 << 5) +#define R_SCUR_EFAIL (1 << 6) +#define R_SCUR_WPSEL (1 << 7) + +typedef struct FLASH { + SSISlave parent_obj; + + //--- Storage --- + BlockBackend *blk; + uint8_t *storage; + uint32_t size; + int page_size; + + int64_t dirty_page; + + //--- Registers --- + uint8_t SR; + uint8_t SCUR; + + //--- Command state --- + CMDState state; + FlashCmd cmd_in_progress; + uint8_t cmd_data[4]; //! Commands can require up to 4 bytes of additional data + uint8_t cmd_bytes; //! Number of bytes required by command [0,4] + uint32_t len; + uint32_t pos; + uint64_t current_address; + + uint8_t *current_register; + uint8_t register_read_mask; //! mask to apply after reading current_register +} Flash; + +typedef struct M25P80Class { + SSISlaveClass parent_class; + //FlashPartInfo *pi; +} MX25UClass; + +#define TYPE_MX25U "mx25u-generic" +#define MX25U(obj) \ + OBJECT_CHECK(Flash, (obj), TYPE_MX25U) +#define MX25U_CLASS(klass) \ + OBJECT_CLASS_CHECK(MX25UClass, (klass), TYPE_MX25U) +#define MX25U_GET_CLASS(obj) \ + OBJECT_GET_CLASS(MX25UClass, (obj), TYPE_MX25U) + +static void +blk_sync_complete(void *opaque, int ret) +{ + /* do nothing. Masters do not directly interact with the backing store, + * only the working copy so no mutexing required. + */ +} + +static void +mx25u_flash_sync_page(Flash *s, int page) +{ + int blk_sector, nb_sectors; + QEMUIOVector iov; + + if (!s->blk || blk_is_read_only(s->blk)) { + return; + } + + blk_sector = (page * s->page_size) / BDRV_SECTOR_SIZE; + nb_sectors = DIV_ROUND_UP(s->page_size, BDRV_SECTOR_SIZE); + qemu_iovec_init(&iov, 1); + qemu_iovec_add(&iov, s->storage + blk_sector * BDRV_SECTOR_SIZE, + nb_sectors * BDRV_SECTOR_SIZE); + blk_aio_pwritev(s->blk, (page * s->page_size), &iov, 0, blk_sync_complete, + NULL); +} + +static inline void +mx25u_flash_sync_area(Flash *s, int64_t off, int64_t len) +{ + int64_t start, end, nb_sectors; + QEMUIOVector iov; + + if (!s->blk || blk_is_read_only(s->blk)) { + return; + } + + assert(!(len % BDRV_SECTOR_SIZE)); + start = off / BDRV_SECTOR_SIZE; + end = (off + len) / BDRV_SECTOR_SIZE; + nb_sectors = end - start; + qemu_iovec_init(&iov, 1); + qemu_iovec_add(&iov, s->storage + (start * BDRV_SECTOR_SIZE), + nb_sectors * BDRV_SECTOR_SIZE); + blk_aio_pwritev(s->blk, off, &iov, 0, blk_sync_complete, NULL); +} + +static inline void +flash_sync_dirty(Flash *s, int64_t newpage) +{ + if (s->dirty_page >= 0 && s->dirty_page != newpage) { + mx25u_flash_sync_page(s, s->dirty_page); + s->dirty_page = newpage; + } +} + +static void +mx25u_flash_erase(Flash *s, uint32_t offset, FlashCmd cmd) +{ + uint32_t len; + + switch (cmd) { + case ERASE_SUBSECTOR: // Erase 4k sector + len = 4 << 10; + break; + case ERASE_SECTOR: // Erase 32k sector + len = 32 << 10; + break; + case ERASE_BLOCK: // Erase 64k block + len = 64 << 10; + break; + case ERASE_CHIP: + len = s->size; + break; + default: + abort(); + } + + DB_PRINT_L(0, "erase offset = %#x, len = %d", offset, len); + + if (!(s->SR & R_SR_WEL)) { + qemu_log_mask(LOG_GUEST_ERROR, "MX25U: erase with write protect!\n"); + return; + } + + memset(s->storage + offset, 0xff, len); + mx25u_flash_sync_area(s, offset, len); +} + +static void +mx25u_decode_new_cmd(Flash *s, uint32_t value) +{ + s->cmd_in_progress = value; + DB_PRINT_L(0, "decoding new command: 0x%x", value); + + switch (value) { + case WRITE_ENABLE: + s->SR |= R_SR_WEL; + s->state = STATE_IDLE; + break; + case WRITE_DISABLE: + s->SR &= ~R_SR_WEL; + s->state = STATE_IDLE; + break; + + case READ_STATUS_REG: + s->current_register = &s->SR; + s->state = STATE_READ_REGISTER; + break; + case READ_SCUR_REG: + s->current_register = &s->SCUR; + s->state = STATE_READ_REGISTER; + break; + + case READ: + case FAST_READ: + case QREAD: + s->cmd_bytes = 3; + s->pos = 0; + s->state = STATE_COLLECT_CMD_DATA; + break; + + case READ_ID: + case READ_QID: + s->cmd_bytes = 0; + s->state = STATE_READ_ID; + s->len = 3; + s->pos = 0; + break; + + case PAGE_PROGRAM: + case QPAGE_PROGRAM: + s->pos = 0; + s->cmd_bytes = 3; + s->state = STATE_COLLECT_CMD_DATA; + break; + + case ERASE_SUBSECTOR: + case ERASE_SECTOR: + case ERASE_BLOCK: + s->pos = 0; + s->cmd_bytes = 3; + s->state = STATE_COLLECT_CMD_DATA; + break; + + case ERASE_CHIP: + mx25u_flash_erase(s, 0, ERASE_CHIP); + s->SR |= R_SR_WIP; + s->register_read_mask = R_SR_WIP; + s->state = STATE_IDLE; + break; + + case ERASE_SUSPEND: + case ERASE_RESUME: + break; + + case DEEP_SLEEP: + case WAKE: + break; + + case QUAD_ENABLE: + case QUAD_DISABLE: + break; + + default: + qemu_log_mask(LOG_GUEST_ERROR, "MX25U: Unknown cmd 0x%x\n", value); + } +} + +static void +mx25u_handle_cmd_data(Flash *s) +{ + s->current_address = (s->cmd_data[2] << 16) | (s->cmd_data[1] << 8) | (s->cmd_data[0]); + s->state = STATE_IDLE; + + switch (s->cmd_in_progress) { + case PAGE_PROGRAM: + case QPAGE_PROGRAM: + s->state = STATE_WRITE; + break; + case READ_STATUS_REG: + case READ_SCUR_REG: + assert(false); + break; + case READ: + case FAST_READ: + case QREAD: + DB_PRINT_L(1, "Read From: 0x%"PRIu64, s->current_address); + s->state = STATE_READ; + break; + case ERASE_SUBSECTOR: + case ERASE_SECTOR: + case ERASE_BLOCK: + mx25u_flash_erase(s, s->current_address, s->cmd_in_progress); + s->SR |= R_SR_WIP; + s->register_read_mask = R_SR_WIP; + break; + + case ERASE_SUSPEND: + case ERASE_RESUME: + break; + + case ERASE_CHIP: + default: + break; + } +} + +static void +mx25u_write8(Flash *s, uint8_t value) +{ + int64_t page = s->current_address / s->page_size; + + // TODO: Write protection + + uint8_t current = s->storage[s->current_address]; + if (value & ~current) { + qemu_log_mask(LOG_GUEST_ERROR, "MX25U: Flipping bit from 0 => 1\n"); + // if a bit in the flash is already a 0, leave it as a 0 + value &= current; + } + DB_PRINT_L(1, "Write 0x%"PRIx8" = 0x%"PRIx64, (uint8_t)value, s->current_address); + s->storage[s->current_address] = (uint8_t)value; + + flash_sync_dirty(s, page); + s->dirty_page = page; +} + +static uint32_t +mx25u_transfer8(SSISlave *ss, uint32_t tx) +{ + Flash *s = MX25U(ss); + uint32_t r = 0; + + switch (s->state) { + case STATE_COLLECT_CMD_DATA: + DB_PRINT_L(2, "Collected: 0x%"PRIx32, (uint32_t)tx); + s->cmd_data[s->pos++] = (uint8_t)tx; + if (s->pos == s->cmd_bytes) { + mx25u_handle_cmd_data(s); + } + break; + case STATE_WRITE: + if (s->current_address > s->size) { + qemu_log_mask(LOG_GUEST_ERROR, + "MX25U: Out of bounds flash write to 0x%"PRIx64"\n", s->current_address); + } else { + mx25u_write8(s, tx); + s->current_address += 1; + } + break; + case STATE_READ: + if (s->current_address > s->size) { + qemu_log_mask(LOG_GUEST_ERROR, + "MX25U: Out of bounds flash read from 0x%"PRIx64"\n", s->current_address); + } else { + DB_PRINT_L(1, "Read 0x%"PRIx64" = 0x%"PRIx8, s->current_address, (uint8_t)r); + r = s->storage[s->current_address]; + s->current_address = (s->current_address + 1) % s->size; + } + break; + case STATE_READ_ID: + r = MX25U_ID[s->pos]; + DB_PRINT_L(2, "Read ID 0x%x (pos 0x%x)", (uint8_t)r, s->pos); + ++s->pos; + if (s->pos == s->len) { + s->pos = 0; + s->state = STATE_IDLE; + } + break; + case STATE_READ_REGISTER: + r = *s->current_register; + *s->current_register &= ~s->register_read_mask; + s->register_read_mask = 0; + s->state = STATE_IDLE; + DB_PRINT_L(1, "Read register"); + break; + case STATE_IDLE: + mx25u_decode_new_cmd(s, tx); + break; + } + + return r; +} + +static void +mx25u_realize(SSISlave *ss, Error **errp) +{ + DriveInfo *dinfo; + Flash *s = MX25U(ss); + + s->state = STATE_IDLE; + s->size = FLASH_SECTOR_SIZE * FLASH_NUM_SECTORS; + s->page_size = FLASH_PAGE_SIZE; + s->dirty_page = -1; + s->SR = 0; + + if (s->blk) { + DB_PRINT_L(0, "Binding to IF_MTD drive"); + s->storage = blk_blockalign(s->blk, s->size); + + if (blk_pread(s->blk, 0, s->storage, s->size) != s->size) { + error_setg(errp, "Failed to initialize SPI flash!"); + return; + } + } else { + DB_PRINT_L(0, "No BDRV - binding to RAM"); + s->storage = blk_blockalign(NULL, s->size); + memset(s->storage, 0xFF, s->size); + } +} + +static int +mx25u_cs(SSISlave *ss, bool select) +{ + Flash *s = MX25U(ss); + + if (select) { + s->len = 0; + s->pos = 0; + s->state = STATE_IDLE; + flash_sync_dirty(s, -1); + } + + DB_PRINT_L(0, "CS %s", select ? "HIGH" : "LOW"); + + return 0; +} + +static int +mx25u_pre_save(void *opaque) +{ + flash_sync_dirty((Flash *)opaque, -1); + + return 0; +} + +static const VMStateDescription vmstate_mx25u = { + .name = "mx25u", + .version_id = 1, + .minimum_version_id = 1, + .pre_save = mx25u_pre_save, + .fields = (VMStateField[]) { +#if 0 + VMSTATE_UINT8(SR, Flash), + VMSTATE_UINT8(SCUR, Flash), + VMSTATE_UINT8(state, Flash), + VMSTATE_UINT8_ARRAY(cmd_data, Flash, 4), + VMSTATE_UINT8(cmd_bytes, Flash), + VMSTATE_UINT32(len, Flash), + VMSTATE_UINT32(pos, Flash), + VMSTATE_UINT32(current_address, Flash), + VMSTATE_UINT8(cmd_in_progress, Flash), +#endif + VMSTATE_END_OF_LIST() + } +}; + +static Property mx25u_properties[] = { + DEFINE_PROP_DRIVE("drive", Flash, blk), + DEFINE_PROP_END_OF_LIST(), +}; + +static void +mx25u_class_init(ObjectClass *class, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(class); + SSISlaveClass *c = SSI_SLAVE_CLASS(class); + + c->realize = mx25u_realize; + c->transfer = mx25u_transfer8; + c->set_cs = mx25u_cs; + c->cs_polarity = SSI_CS_LOW; + dc->vmsd = &vmstate_mx25u; + device_class_set_props(dc, mx25u_properties); + //mc->pi = data; +} + +static const TypeInfo mx25u_info = { + .name = TYPE_MX25U, + .parent = TYPE_SSI_SLAVE, + .instance_size = sizeof(Flash), + .class_size = sizeof(MX25UClass), + .abstract = true, +}; + +static void +mx25u_register_types(void) +{ + type_register_static(&mx25u_info); + + TypeInfo ti = { + .name = "mx25u6435f", + .parent = TYPE_MX25U, + .class_init = mx25u_class_init, + //.class_data = (void *) + }; + type_register(&ti); +} + +type_init(mx25u_register_types) diff --git a/hw/block/pflash_jedec_424.c b/hw/block/pflash_jedec_424.c new file mode 100644 index 0000000000000..0375c0bd89fef --- /dev/null +++ b/hw/block/pflash_jedec_424.c @@ -0,0 +1,983 @@ +/* + * CFI parallel flash with Jedec (42.4) command set emulation + * + * Copyright (c) 2006 Thorsten Zitterell + * Copyright (c) 2005 Jocelyn Mayer + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * For now, this code can emulate flashes of 1, 2 or 4 bytes width. + * Supported commands/modes are: + * - flash read + * - flash write + * - flash ID read + * - sector erase + * - CFI queries + * + * It does not support timings + * It does not support flash interleaving + * It does not implement software data protection as found in many real chips + * It does not implement erase suspend/resume commands + * It does not implement multiple sectors erase + * + * It does not implement much more ... + */ + +#include "qemu/osdep.h" +#include "hw/hw.h" +#include "hw/block/flash.h" +#include "block/block.h" +#include "block/block_int.h" +#include "sysemu/block-backend.h" +#include "qemu/bitops.h" +#include "exec/address-spaces.h" +#include "qemu/host-utils.h" +#include "hw/sysbus.h" +#include "hw/qdev-properties.h" +#include "qapi/error.h" +#include "migration/vmstate.h" + +#define PFLASH_BUG(fmt, ...) \ +do { \ + fprintf(stderr, "PFLASH: Possible BUG - " fmt, ## __VA_ARGS__); \ + exit(1); \ +} while(0) + +//#define PFLASH_DEBUG +#ifdef PFLASH_DEBUG +// NOTE: The usleep() helps the MacOS stdout from freezing when we have a lot of print out +#define DPRINTF(fmt, ...) \ +do { \ + printf("PFLASH: " fmt , ## __VA_ARGS__); \ + usleep(1000); \ +} while (0) +#else +#define DPRINTF(fmt, ...) do { } while (0) +#endif + +#define PFLASH_MAX_BANKS 8 + +struct PFlashJedec424 { + /*< private >*/ + SysBusDevice parent_obj; + /*< public >*/ + + BlockBackend *blk; + uint32_t nb_blocs; + uint64_t sector_len; + uint8_t bank_width; + uint8_t device_width; /* If 0, device width not specified. */ + uint8_t max_device_width; /* max device width in bytes */ + uint32_t bank_size; /* size of each bank */ + uint8_t be; + int ro; + uint8_t wcycle[PFLASH_MAX_BANKS]; // which write-cycle this bank is in + uint8_t cmd[PFLASH_MAX_BANKS]; // which command we're processing + uint8_t global_cmd; // some operations don't have separate bank states + uint8_t status; + uint16_t ident0; + uint16_t ident1; + uint16_t ident2; + uint16_t ident3; + uint8_t cfi_len; + uint8_t cfi_table[0x60]; + uint64_t counter; + unsigned int writeblock_size; + MemoryRegion mem; + char *name; + void *storage; + uint16_t configuration_register; +}; + +static const VMStateDescription vmstate_pflash = { + .name = "pflash_jedec_424", + .version_id = 2, + .minimum_version_id = 2, + .fields = (VMStateField[]) { + VMSTATE_UINT8_ARRAY(wcycle, PFlashJedec424, PFLASH_MAX_BANKS), + VMSTATE_UINT8_ARRAY(cmd, PFlashJedec424, PFLASH_MAX_BANKS), + VMSTATE_UINT8(global_cmd, PFlashJedec424), + VMSTATE_UINT8(status, PFlashJedec424), + VMSTATE_UINT64(counter, PFlashJedec424), + VMSTATE_END_OF_LIST() + } +}; + +static void pflash_reset_state(PFlashJedec424* pfl) +{ + memset(pfl->wcycle, 0, sizeof(pfl->wcycle)); + memset(pfl->cmd, 0, sizeof(pfl->cmd)); + pfl->global_cmd = 0; +} + +/* Perform a CFI query based on the bank width of the flash. + * If this code is called we know we have a device_width set for + * this flash. + */ +static uint32_t pflash_cfi_query(PFlashJedec424 *pfl, hwaddr offset) +{ + int i; + uint32_t resp = 0; + hwaddr boff; + + /* Adjust incoming offset to match expected device-width + * addressing. CFI query addresses are always specified in terms of + * the maximum supported width of the device. This means that x8 + * devices and x8/x16 devices in x8 mode behave differently. For + * devices that are not used at their max width, we will be + * provided with addresses that use higher address bits than + * expected (based on the max width), so we will shift them lower + * so that they will match the addresses used when + * device_width==max_device_width. + */ + boff = offset >> (ctz32(pfl->bank_width) + + ctz32(pfl->max_device_width) - ctz32(pfl->device_width)); + + if (boff > pfl->cfi_len) { + return 0; + } + /* Now we will construct the CFI response generated by a single + * device, then replicate that for all devices that make up the + * bus. For wide parts used in x8 mode, CFI query responses + * are different than native byte-wide parts. + */ + resp = pfl->cfi_table[boff]; + if (pfl->device_width != pfl->max_device_width) { + /* The only case currently supported is x8 mode for a + * wider part. + */ + if (pfl->device_width != 1 || pfl->bank_width > 4) { + DPRINTF("%s: Unsupported device configuration: " + "device_width=%d, max_device_width=%d\n", + __func__, pfl->device_width, + pfl->max_device_width); + return 0; + } + /* CFI query data is repeated, rather than zero padded for + * wide devices used in x8 mode. + */ + for (i = 1; i < pfl->max_device_width; i++) { + resp = deposit32(resp, 8 * i, 8, pfl->cfi_table[boff]); + } + } + /* Replicate responses for each device in bank. */ + if (pfl->device_width < pfl->bank_width) { + for (i = pfl->device_width; + i < pfl->bank_width; i += pfl->device_width) { + resp = deposit32(resp, 8 * i, 8 * pfl->device_width, resp); + } + } + + return resp; +} + + + +/* Perform a device id query based on the bank width of the flash. */ +static uint32_t pflash_devid_query(PFlashJedec424 *pfl, hwaddr offset) +{ + int i; + uint32_t resp; + hwaddr boff; + + /* Adjust incoming offset to match expected device-width + * addressing. Device ID read addresses are always specified in + * terms of the maximum supported width of the device. This means + * that x8 devices and x8/x16 devices in x8 mode behave + * differently. For devices that are not used at their max width, + * we will be provided with addresses that use higher address bits + * than expected (based on the max width), so we will shift them + * lower so that they will match the addresses used when + * device_width==max_device_width. + */ + boff = offset >> (ctz32(pfl->bank_width) + + ctz32(pfl->max_device_width) - ctz32(pfl->device_width)); + + /* Mask off upper bits which may be used in to query block + * or sector lock status at other addresses. + * Offsets 2/3 are block lock status, is not emulated. + */ + switch (boff & 0xFF) { + case 0: + resp = pfl->ident0; + DPRINTF("%s: Manufacturer Code %04x\n", __func__, resp); + break; + case 1: + resp = pfl->ident1; + DPRINTF("%s: Device ID Code %04x\n", __func__, resp); + break; + default: + DPRINTF("%s: Read Device Information offset=%x\n", __func__, + (unsigned)offset); + return 0; + break; + } + /* Replicate responses for each device in bank. */ + if (pfl->device_width < pfl->bank_width) { + for (i = pfl->device_width; + i < pfl->bank_width; i += pfl->device_width) { + resp = deposit32(resp, 8 * i, 8 * pfl->device_width, resp); + } + } + + return resp; +} + +static uint64_t pflash_read (void *opaque, hwaddr offset, + unsigned int width) +{ + hwaddr boff; + uint32_t ret; + uint8_t *p; + + PFlashJedec424 *pfl = CFI_PFLASH_JEDEC(opaque); + ret = -1; + + uint8_t bank = offset / pfl->bank_size; + + //DPRINTF("%s: reading offset " TARGET_FMT_plx " under cmd %02x width %d\n", + // __func__, offset, pfl->cmd[bank], width); + + switch (pfl->cmd[bank]) { + default: + /* This should never happen : reset state & treat it as a read */ + fprintf(stderr, "%s: unknown command state: %x\n", __func__, pfl->cmd[bank]); + pfl->wcycle[bank] = 0; + pfl->cmd[bank] = 0; + pfl->global_cmd = 0; + /* fall through to read code */ + case 0x00: + /* Flash area read */ + p = pfl->storage; + switch (width) { + case 1: + ret = p[offset]; + //DPRINTF("%s: data offset " TARGET_FMT_plx " %02x\n", + // __func__, offset, ret); + break; + case 2: +// if (be) { +// ret = p[offset] << 8; +// ret |= p[offset + 1]; +// } else { + ret = p[offset]; + ret |= p[offset + 1] << 8; +// } + //DPRINTF("%s: data offset " TARGET_FMT_plx " %04x\n", + // __func__, offset, ret); + break; + case 4: +// if (be) { + ret = p[offset] << 24; + ret |= p[offset + 1] << 16; + ret |= p[offset + 2] << 8; + ret |= p[offset + 3]; +// } else { +// ret = p[offset]; +// ret |= p[offset + 1] << 8; +// ret |= p[offset + 2] << 16; +// ret |= p[offset + 3] << 24; +// } + //DPRINTF("%s: data offset " TARGET_FMT_plx " %08x\n", + // __func__, offset, ret); + break; + default: + DPRINTF("BUG in %s\n", __func__); + } + + break; + case 0x70: /* Status Register */ + /* Status register read. Return status from each device in + * bank. + */ + ret = pfl->status; + if (pfl->device_width && width > pfl->device_width) { + int shift = pfl->device_width * 8; + while (shift + pfl->device_width * 8 <= width * 8) { + ret |= pfl->status << shift; + shift += pfl->device_width * 8; + } + } else if (!pfl->device_width && width > 2) { + /* Handle 32 bit flash cases where device width is not + * set. (Existing behavior before device width added.) + */ + ret |= pfl->status << 16; + } + DPRINTF("%s: status %x\n", __func__, ret); + pfl->cmd[bank] = 0; + break; + case 0x90: + if (!pfl->device_width) { + /* Preserve old behavior if device width not specified */ + boff = offset & 0xFF; + if (pfl->bank_width == 2) { + boff = boff >> 1; + } else if (pfl->bank_width == 4) { + boff = boff >> 2; + } + + switch (boff) { + case 0: + ret = pfl->ident0 << 8 | pfl->ident1; + DPRINTF("%s: Manufacturer Code %04x\n", __func__, ret); + break; + case 1: + ret = pfl->ident2 << 8 | pfl->ident3; + DPRINTF("%s: Device ID Code %04x\n", __func__, ret); + break; + default: + DPRINTF("%s: Read Device Information boff=%x\n", __func__, + (unsigned)boff); + ret = 0; + break; + } + } else { + /* If we have a read larger than the bank_width, combine multiple + * manufacturer/device ID queries into a single response. + */ + int i; + for (i = 0; i < width; i += pfl->bank_width) { + ret = deposit32(ret, i * 8, pfl->bank_width * 8, + pflash_devid_query(pfl, + offset + i * pfl->bank_width)); + } + } + break; + case 0x98: /* Query mode */ + if (!pfl->device_width) { + /* Preserve old behavior if device width not specified */ + boff = offset & 0xFF; + if (pfl->bank_width == 2) { + boff = boff >> 1; + } else if (pfl->bank_width == 4) { + boff = boff >> 2; + } + + if (boff > pfl->cfi_len) { + ret = 0; + } else { + ret = pfl->cfi_table[boff]; + } + } else { + /* If we have a read larger than the bank_width, combine multiple + * CFI queries into a single response. + */ + int i; + for (i = 0; i < width; i += pfl->bank_width) { + ret = deposit32(ret, i * 8, pfl->bank_width * 8, + pflash_cfi_query(pfl, + offset + i * pfl->bank_width)); + } + } + + break; + + case 0xd0: /* Configuration register */ + ret = pfl->configuration_register; /* default configuration */ + break; + } + + //DPRINTF("%s: returning 0x%x\n", __func__, ret); + return ret; +} + +/* update flash content on disk */ +static void pflash_update(PFlashJedec424 *pfl, int offset, + int size) +{ + int offset_end; + if (pfl->blk) { + offset_end = offset + size; + blk_pwrite(pfl->blk, offset, pfl->storage + offset, + offset_end - offset, 0); + } +} + +static inline void pflash_data_write(PFlashJedec424 *pfl, hwaddr offset, + uint32_t value, int width, int be) +{ + uint8_t *p = pfl->storage; + + DPRINTF("%s: block write offset " TARGET_FMT_plx + " value %x width %d counter %016" PRIx64 "\n", + __func__, offset, value, width, pfl->counter); + + // NOTE: Flash can only flip 1's to 0's, so use a &= operation to update the + // flash contents. This is critical because some drivers assume they can write + // 0xFF to preserve the original value. + switch (width) { + case 1: + p[offset] &= value; + break; + case 2: + if (be) { + p[offset] &= value >> 8; + p[offset + 1] &= value; + } else { + p[offset] &= value; + p[offset + 1] &= value >> 8; + } + break; + case 4: + if (be) { + p[offset] &= value >> 24; + p[offset + 1] &= value >> 16; + p[offset + 2] &= value >> 8; + p[offset + 3] &= value; + } else { + p[offset] &= value; + p[offset + 1] &= value >> 8; + p[offset + 2] &= value >> 16; + p[offset + 3] &= value >> 24; + } + break; + } + +} + +static void pflash_write(void *opaque, hwaddr offset, + uint64_t value, unsigned int width) +{ + uint8_t cmd; + int i; + uint8_t *p; + + PFlashJedec424 *pfl = CFI_PFLASH_JEDEC(opaque); + cmd = value; + + uint8_t bank = pfl->global_cmd ? 0 : offset / pfl->bank_size; + uint32_t sector_offset = offset & (pfl->sector_len - 1); + sector_offset = sector_offset >> (pfl->bank_width - 1); + + DPRINTF("%s: writing offset 0x%llx sector offset 0x%x value 0x%x width %d " + "pfl->wcycle %d pfl->cmd 0x%x\n", __func__, offset, sector_offset, value, width, + pfl->wcycle[bank], pfl->cmd[bank]); + + if (!pfl->wcycle[bank]) { + /* Set the device in I/O access mode */ + memory_region_rom_device_set_romd(&pfl->mem, false); + } + + switch (pfl->wcycle[bank]) { + case 0: + /* read mode */ + switch (cmd) { + case 0x00: /* ??? */ + goto reset_bank; + case 0x25: + DPRINTF("%s: Program to buffer\n", __func__); + pfl->status |= 0x80; /* Ready! */ + break; + // Not implemented: 0x29 Buffer to Flash + // Not implemented: 0x30 Erase Resume + case 0x33: + DPRINTF("%s: Blank check\n", __func__); + // Is it blank? + pfl->status |= 0x80; /* Ready! */ + pfl->status &= ~0x20; /* clear non-erased bit */ + uint8_t *p = pfl->storage; + offset &= ~(pfl->sector_len - 1); + p += offset; + for (i=0; isector_len; i++) { + if (p[i] != 0xFF) { + pfl->status |= 0x20; // Not erased + break; + } + } + goto reset_bank; + // Not implemented: 0x40 SSR Lock Entry + // Not implemented: 0x50 Program Resume + // Not implemented: 0x51 Program Suspend + case 0x60: /* Sector Lock/Unlock */ + pfl->global_cmd = 0x60; + bank = 0; + DPRINTF("%s: Sector Lock/Unlock\n", __func__); + break; + case 0x70: /* Status Register */ + DPRINTF("%s: Read status register\n", __func__); + pfl->cmd[bank] = cmd; + return; + case 0x71: /* Clear status bits */ + DPRINTF("%s: Clear status bits\n", __func__); + pfl->status = 0x80; // set device ready bit + goto reset_bank; + case 0x80: /* Erase setup */ + DPRINTF("%s: Erase setup\n", __func__); + break; + // Not implemented: 0x88 Secure Silicon Region Entry + case 0x90: /* Read Device ID */ + DPRINTF("%s: Read Device information\n", __func__); + pfl->cmd[bank] = cmd; + return; + case 0x98: /* CFI query */ + DPRINTF("%s: CFI query\n", __func__); + break; + // Not implemented: 0xB0 Erase Suspend + case 0xd0: /* Enter configuration register */ + DPRINTF("%s: Configuration register enter\n", __func__); + break; + case 0xf0: /* Reset */ + DPRINTF("%s: Reset\n", __func__); + pflash_reset_state(pfl); + goto reset_bank; + case 0xff: /* Read array mode */ + DPRINTF("%s: Read array mode\n", __func__); + goto reset_bank; + default: + goto error_flash; + } + pfl->wcycle[bank]++; + pfl->cmd[bank] = cmd; + break; + + case 1: + switch (pfl->cmd[bank]) { + case 0x25: + /* Mask writeblock size based on device width, or bank width if + * device width not specified. + */ + pfl->counter = value + 1; + DPRINTF("%s: Program to buffer of %lld words\n", __func__, pfl->counter); + pfl->wcycle[bank]++; + break; + case 0x60: /* Sector Lock... Expecting 0x288 = 60 */ + if (cmd == 0x60) { + pfl->cmd[bank] = 0x60; + pfl->wcycle[bank]++; + } else { + goto reset_bank; + } + break; + case 0x80: + if (sector_offset == 0x2aa && cmd == 0x30) { + // sector erase + offset &= ~(pfl->sector_len - 1); + DPRINTF("%s: sector erase at " TARGET_FMT_plx " bytes %x\n", + __func__, offset, (unsigned)pfl->sector_len); + + if (!pfl->ro) { + p = pfl->storage; + memset(p + offset, 0xff, pfl->sector_len); + pflash_update(pfl, offset, pfl->sector_len); + pfl->status &= ~0x20; /* clear non-erased bit */ + } else { + pfl->status |= 0x20; /* Block erase error */ + } + pfl->status |= 0x80; /* Ready! */ + } else if (sector_offset == 0x2aa && cmd == 0x10) { + DPRINTF("%s: chip erase", __func__); + if (!pfl->ro) { + memset(pfl->storage, 0xff, pfl->sector_len * pfl->nb_blocs); + pflash_update(pfl, 0, pfl->sector_len * pfl->nb_blocs); + pfl->status &= ~0x20; /* clear non-erased bit */ + } else { + pfl->status |= 0x20; /* Block erase error */ + } + pfl->status |= 0x80; /* Ready! */ + } else { + DPRINTF("%s: Unexpected command byte: 0x%x\n", __func__, cmd); + } + goto reset_bank; + break; + case 0x98: + if (cmd == 0xf0) { + DPRINTF("%s: leaving query mode\n", __func__); + goto reset_bank; + } else { + DPRINTF("%s: Unexpected command byte: 0x%x\n", __func__, cmd); + goto reset_bank; + } + case 0xd0: + if (cmd == 0xf0) { + DPRINTF("%s: leaving configuration register mode\n", __func__); + pfl->status |= 0x80; + goto reset_bank; + } else if (cmd == 0x25) { + /* program to buffer */ + DPRINTF("%s: 2nd byte of program to config register buffer\n", __func__); + pfl->wcycle[bank]++; + } else if (cmd == 0x29) { + DPRINTF("%s: program config register buffer to flash \n", __func__); + pfl->wcycle[bank] = 1; + } else { + DPRINTF("%s: Unexpected command byte: 0x%x\n", __func__, cmd); + goto reset_bank; + } + break; + default: + goto error_flash; + } + break; + + case 2: + switch (pfl->cmd[bank]) { + case 0x25: /* Program to buffer */ + if (!pfl->ro) { + DPRINTF("%s: Programming %d bytes at " TARGET_FMT_plx " to 0x%x\n", __func__, + width, offset, value); + pflash_data_write(pfl, offset, value, width, 0); + } else { + pfl->status |= 0x10; /* Programming error */ + } + pfl->status |= 0x80; + + pfl->counter--; + if (!pfl->counter) { + hwaddr mask = pfl->writeblock_size - 1; + mask = ~mask; + + DPRINTF("%s: Programming finished\n", __func__); + pfl->wcycle[bank]++; + if (!pfl->ro) { + /* Flush the entire write buffer onto backing storage. */ + pflash_update(pfl, offset & mask, pfl->writeblock_size); + } else { + pfl->status |= 0x10; /* Programming error */ + } + } + + break; + case 0xd0: + if (sector_offset == 0x2aa && cmd == 0) { + DPRINTF("%s: 3rd byte of program to config register buffer\n", __func__); + pfl->wcycle[bank]++; + } else { + DPRINTF("%s: Unexpected command byte: 0x%x\n", __func__, cmd); + goto reset_bank; + } + break; + case 0x60: /* Sector Lock... expecting SLA = 0x60 (lock/unlock) or SLA = 0x61 (range) */ + // we don't implement locking but we should at least accept the command + if (cmd == 0x60) { + DPRINTF("%s: 3rd byte of Sector Lock\n", __func__); + goto reset_bank; // command is finished + } else if (cmd == 0x61) { // 0X61 multi sector lock + pfl->wcycle[bank]++; + pfl->cmd[bank] = 0x61; + } else { + goto error_flash; + } + break; + default: + goto error_flash; + } + break; + + case 3: /* Confirm mode */ + switch (pfl->cmd[bank]) { + case 0x25: /* Block write */ + if (cmd == 0x29 && sector_offset == 0x555) { + pfl->wcycle[bank] = 0; + pfl->status |= 0x80; + } else { + PFLASH_BUG("%s: unknown command for Programming\n", __func__); + goto reset_bank; + } + break; + case 0x61: /* Sector Lock... expecting SLA = 0x61 */ + // we don't implement locking but we should at least accept the command + if (cmd == 0x61) { + DPRINTF("%s: 4th byte of Sector Lock\n", __func__); + goto reset_bank; // command is finished + } + goto error_flash; + break; + case 0xd0: + if (sector_offset == 0) { + pfl->configuration_register = value; + DPRINTF("%s: setting new config regsistr: 0x%x\n", __func__, value); + pfl->wcycle[bank] = 1; + } else { + DPRINTF("%s: Unexpected command byte: 0x%x\n", __func__, cmd); + goto reset_bank; + } + break; + default: + goto error_flash; + } + break; + default: + /* Should never happen */ + DPRINTF("%s: invalid write state\n", __func__); + goto reset_bank; + } + return; + + error_flash: + fprintf(stderr, "PFLASH %s: Unimplemented flash cmd sequence " + "(offset 0x%llx sector offset 0x%x, bank %u pfl->wcycle %d pfl->cmd 0x%x value 0x%x)" + "\n", __func__, offset, sector_offset, bank, pfl->wcycle[bank], pfl->cmd[bank], value); + + reset_bank: + memory_region_rom_device_set_romd(&pfl->mem, true); + + pfl->wcycle[bank] = 0; + pfl->cmd[bank] = 0; + pfl->global_cmd = 0; +} + + +static const MemoryRegionOps pflash_jedec_ops = { + .read = pflash_read, + .write = pflash_write, + .valid.min_access_size = 1, + .valid.max_access_size = 4, + .endianness = DEVICE_NATIVE_ENDIAN, +}; + +static void pflash_jedec_realize(DeviceState *dev, Error **errp) +{ + PFlashJedec424 *pfl = CFI_PFLASH_JEDEC(dev); + uint64_t total_len; + int ret; + uint64_t blocks_per_device, device_len; + int num_devices; + + total_len = pfl->sector_len * pfl->nb_blocs; + + /* These are only used to expose the parameters of each device + * in the cfi_table[]. + */ + num_devices = pfl->device_width ? (pfl->bank_width / pfl->device_width) : 1; + blocks_per_device = pfl->nb_blocs / num_devices; + device_len = pfl->sector_len * blocks_per_device; + + memory_region_init_rom_device( + &pfl->mem, OBJECT(dev), + &pflash_jedec_ops, pfl, + pfl->name, total_len, errp); + vmstate_register_ram(&pfl->mem, DEVICE(pfl)); + pfl->storage = memory_region_get_ram_ptr(&pfl->mem); + sysbus_init_mmio(SYS_BUS_DEVICE(dev), &pfl->mem); + + if (pfl->blk) { + /* read the initial flash content */ + ret = blk_pread(pfl->blk, 0, pfl->storage, total_len); + + if (ret < 0) { + vmstate_unregister_ram(&pfl->mem, DEVICE(pfl)); + error_setg(errp, "failed to read the initial flash content"); + return; + } + } + + if (pfl->blk) { + pfl->ro = blk_is_read_only(pfl->blk); + } else { + pfl->ro = 0; + } + + /* Default to devices being used at their maximum device width. This was + * assumed before the device_width support was added. + */ + if (!pfl->max_device_width) { + pfl->max_device_width = pfl->device_width; + } + + pfl->configuration_register = 0xdf48; + + pflash_reset_state(pfl); + pfl->status = 0; + /* Hardcoded CFI table */ + pfl->cfi_len = 0x52; + /* Standard "QRY" string */ + pfl->cfi_table[0x10] = 'Q'; + pfl->cfi_table[0x11] = 'R'; + pfl->cfi_table[0x12] = 'Y'; + /* Command set (JEDEC 42.4) */ + pfl->cfi_table[0x13] = 0x02; + pfl->cfi_table[0x14] = 0x00; + /* Primary extended table address (none) */ + pfl->cfi_table[0x15] = 0x40; + pfl->cfi_table[0x16] = 0x00; + /* Alternate command set (none) */ + pfl->cfi_table[0x17] = 0x00; + pfl->cfi_table[0x18] = 0x00; + /* Alternate extended table (none) */ + pfl->cfi_table[0x19] = 0x00; + pfl->cfi_table[0x1A] = 0x00; + /* Vcc min */ + pfl->cfi_table[0x1B] = 0x17; + /* Vcc max */ + pfl->cfi_table[0x1C] = 0x19; + /* Vpp min (no Vpp pin) */ + pfl->cfi_table[0x1D] = 0x00; + /* Vpp max (no Vpp pin) */ + pfl->cfi_table[0x1E] = 0x00; + /* Reserved */ + pfl->cfi_table[0x1F] = 0x04; + /* Timeout for min size buffer write */ + pfl->cfi_table[0x20] = 0x09; + /* Typical timeout for block erase */ + pfl->cfi_table[0x21] = 0x0a; + /* Typical timeout for full chip erase (4096 ms) */ + pfl->cfi_table[0x22] = 0x11; + /* Reserved */ + pfl->cfi_table[0x23] = 0x04; + /* Max timeout for buffer write */ + pfl->cfi_table[0x24] = 0x02; + /* Max timeout for block erase */ + pfl->cfi_table[0x25] = 0x03; + /* Max timeout for chip erase */ + pfl->cfi_table[0x26] = 0x00; + /* Device size */ + pfl->cfi_table[0x27] = ctz32(device_len); /* + 1; */ + /* Flash device interface (8 & 16 bits) */ + pfl->cfi_table[0x28] = 0x01; + pfl->cfi_table[0x29] = 0x00; + /* Max number of bytes in multi-bytes write */ + if (pfl->bank_width == 1) { + pfl->cfi_table[0x2A] = 0x06; + } else { + pfl->cfi_table[0x2A] = 0x06; + } + pfl->writeblock_size = 1 << pfl->cfi_table[0x2A]; + + pfl->cfi_table[0x2B] = 0x00; + /* Number of erase block regions (uniform) */ + pfl->cfi_table[0x2C] = 0x02; + /* Erase block region 1 */ + pfl->cfi_table[0x2D] = 3; + pfl->cfi_table[0x2E] = 0; + pfl->cfi_table[0x2F] = pfl->sector_len >> 8; + pfl->cfi_table[0x30] = pfl->sector_len >> 16; + /* Erase block region 2 */ + pfl->cfi_table[0x31] = 0x7e; + pfl->cfi_table[0x32] = 0; + pfl->cfi_table[0x33] = 0; + pfl->cfi_table[0x34] = 0x02; + + + /* Extended */ + pfl->cfi_table[0x40] = 'P'; + pfl->cfi_table[0x41] = 'R'; + pfl->cfi_table[0x42] = 'I'; + + pfl->cfi_table[0x43] = '1'; + pfl->cfi_table[0x44] = '3'; + + pfl->cfi_table[0x45] = 0x00; + pfl->cfi_table[0x46] = 0x02; + pfl->cfi_table[0x47] = 0x01; + pfl->cfi_table[0x48] = 0x00; + + pfl->cfi_table[0x49] = 0x08; + pfl->cfi_table[0x4a] = 0x00; + pfl->cfi_table[0x4b] = 0x01; + pfl->cfi_table[0x4c] = 0x00; + pfl->cfi_table[0x4d] = 0x85; + pfl->cfi_table[0x4e] = 0x95; + pfl->cfi_table[0x4f] = 0x02; + pfl->cfi_table[0x50] = 0x01; + +} + +static Property pflash_jedec_properties[] = { + DEFINE_PROP_DRIVE("drive", PFlashJedec424, blk), + /* num-blocks is the number of blocks actually visible to the guest, + * ie the total size of the device divided by the sector length. + * If we're emulating flash devices wired in parallel the actual + * number of blocks per indvidual device will differ. + */ + DEFINE_PROP_UINT32("num-blocks", PFlashJedec424, nb_blocs, 0), + DEFINE_PROP_UINT64("sector-length", PFlashJedec424, sector_len, 0), + /* width here is the overall width of this QEMU device in bytes. + * The QEMU device may be emulating a number of flash devices + * wired up in parallel; the width of each individual flash + * device should be specified via device-width. If the individual + * devices have a maximum width which is greater than the width + * they are being used for, this maximum width should be set via + * max-device-width (which otherwise defaults to device-width). + * So for instance a 32-bit wide QEMU flash device made from four + * 16-bit flash devices used in 8-bit wide mode would be configured + * with width = 4, device-width = 1, max-device-width = 2. + * + * If device-width is not specified we default to backwards + * compatible behaviour which is a bad emulation of two + * 16 bit devices making up a 32 bit wide QEMU device. This + * is deprecated for new uses of this device. + */ + DEFINE_PROP_UINT8("width", PFlashJedec424, bank_width, 0), + DEFINE_PROP_UINT8("device-width", PFlashJedec424, device_width, 0), + DEFINE_PROP_UINT8("max-device-width", PFlashJedec424, max_device_width, 0), + DEFINE_PROP_UINT32("bank-size", PFlashJedec424, bank_size, 0), + DEFINE_PROP_UINT8("big-endian", PFlashJedec424, be, 0), + DEFINE_PROP_UINT16("id0", PFlashJedec424, ident0, 0), + DEFINE_PROP_UINT16("id1", PFlashJedec424, ident1, 0), + DEFINE_PROP_UINT16("id2", PFlashJedec424, ident2, 0), + DEFINE_PROP_UINT16("id3", PFlashJedec424, ident3, 0), + DEFINE_PROP_STRING("name", PFlashJedec424, name), + DEFINE_PROP_END_OF_LIST(), +}; + +static void pflash_jedec_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + + dc->realize = pflash_jedec_realize;; + dc->vmsd = &vmstate_pflash; + set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); + device_class_set_props(dc, pflash_jedec_properties); +} + + +static const TypeInfo pflash_jedec_info = { + .name = TYPE_CFI_PFLASH_JEDEC_424, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(PFlashJedec424), + .class_init = pflash_jedec_class_init, +}; + +static void pflash_jedec_register_types(void) +{ + type_register_static(&pflash_jedec_info); +} + +type_init(pflash_jedec_register_types) + +PFlashJedec424 *pflash_jedec_424_register(hwaddr base, + DeviceState *qdev, const char *name, + hwaddr size, + BlockBackend *blk, + uint32_t sector_len, int nb_blocs, uint32_t bank_size, + int bank_width, uint16_t id0, uint16_t id1, + uint16_t id2, uint16_t id3, int be) +{ + DeviceState *dev = qdev_create(NULL, TYPE_CFI_PFLASH_JEDEC_424); + + if (blk) { + qdev_prop_set_drive(dev, "drive", blk, &error_fatal); + } + qdev_prop_set_uint32(dev, "num-blocks", nb_blocs); + qdev_prop_set_uint64(dev, "sector-length", sector_len); + qdev_prop_set_uint8(dev, "width", bank_width); + qdev_prop_set_uint32(dev, "bank-size", bank_size); + qdev_prop_set_uint8(dev, "big-endian", !!be); + qdev_prop_set_uint16(dev, "id0", id0); + qdev_prop_set_uint16(dev, "id1", id1); + qdev_prop_set_uint16(dev, "id2", id2); + qdev_prop_set_uint16(dev, "id3", id3); + qdev_prop_set_string(dev, "name", name); + qdev_init_nofail(dev); + + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base); + return CFI_PFLASH_JEDEC(dev); +} + +static MemoryRegion *pflash_jedec_424_get_memory(PFlashJedec424 *fl) +{ + return &fl->mem; +} diff --git a/hw/char/Makefile.objs b/hw/char/Makefile.objs index 9e9a6c1affb6b..ce66bfb6457a2 100644 --- a/hw/char/Makefile.objs +++ b/hw/char/Makefile.objs @@ -34,3 +34,5 @@ common-obj-$(CONFIG_SCLPCONSOLE) += sclpconsole.o sclpconsole-lm.o obj-$(CONFIG_VIRTIO) += virtio-serial-bus.o obj-$(CONFIG_PSERIES) += spapr_vty.o obj-$(CONFIG_TERMINAL3270) += terminal3270.o +obj-y += stm32_uart.o +obj-y += stm32f7xx_uart.o diff --git a/hw/char/stm32_uart.c b/hw/char/stm32_uart.c new file mode 100644 index 0000000000000..afdca4f3137e0 --- /dev/null +++ b/hw/char/stm32_uart.c @@ -0,0 +1,852 @@ +/* + * STM32 Microcontroller UART module + * + * Copyright (C) 2010 Andre Beckus + * + * Source code based on pl011.c + * Implementation based on ST Microelectronics "RM0008 Reference Manual Rev 10" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "hw/sysbus.h" +#include "hw/arm/stm32.h" +#include "qemu/bitops.h" +#include "hw/qdev-properties.h" +#include "hw/arm/stm32f1xx.h" +#include "hw/irq.h" +#include "hw/hw.h" + + + +/* DEFINITIONS*/ + +/* See the README file for details on these settings. */ +#define DEBUG_STM32_UART +//#define STM32_UART_NO_BAUD_DELAY +//#define STM32_UART_ENABLE_OVERRUN + +#ifdef DEBUG_STM32_UART +#define DPRINTF(fmt, ...) \ + do { printf("STM32_UART: " fmt , ## __VA_ARGS__); } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + +#define USART_SR_OFFSET 0x00 +#define USART_SR_TXE_BIT 7 +#define USART_SR_TC_BIT 6 +#define USART_SR_RXNE_BIT 5 +#define USART_SR_ORE_BIT 3 + +#define USART_DR_OFFSET 0x04 + +#define USART_BRR_OFFSET 0x08 + +#define USART_CR1_OFFSET 0x0c +#define USART_CR1_UE_BIT 13 +#define USART_CR1_M_BIT 12 +#define USART_CR1_PCE_BIT 10 +#define USART_CR1_PS_BIT 9 +#define USART_CR1_TXEIE_BIT 7 +#define USART_CR1_TCIE_BIT 6 +#define USART_CR1_RXNEIE_BIT 5 +#define USART_CR1_TE_BIT 3 +#define USART_CR1_RE_BIT 2 + +#define USART_CR2_OFFSET 0x10 +#define USART_CR2_STOP_START 12 +#define USART_CR2_STOP_MASK 0x00003000 + +#define USART_CR3_OFFSET 0x14 +#define USART_CR3_CTSE_BIT 9 +#define USART_CR3_RTSE_BIT 8 + +#define USART_GTPR_OFFSET 0x18 + +#define USART_RCV_BUF_LEN 256 + +struct Stm32Uart { + /* Inherited */ + SysBusDevice busdev; + + /* Properties */ + stm32_periph_t periph; + void *stm32_rcc_prop; + void *stm32_gpio_prop; + void *stm32_afio_prop; + + /* Checks the USART transmit pin's GPIO settings. If the GPIO is not configured + * properly, a hardware error is triggered. + */ + union { + void *check_tx_pin_prop; + void (*check_tx_pin_callback)(Stm32Uart *); + }; + + /* Private */ + MemoryRegion iomem; + + Stm32Rcc *stm32_rcc; + Stm32Gpio **stm32_gpio; + Stm32Afio *stm32_afio; + + int uart_index; + + uint32_t bits_per_sec; + int64_t ns_per_char; + + /* Register Values */ + uint32_t + USART_RDR, + USART_TDR, + USART_BRR, + USART_CR1, + USART_CR2, + USART_CR3; + + /* Register Field Values */ + uint32_t + USART_SR_TXE, + USART_SR_TC, + USART_SR_RXNE, + USART_SR_ORE, + USART_CR1_UE, + USART_CR1_TXEIE, + USART_CR1_TCIE, + USART_CR1_RXNEIE, + USART_CR1_TE, + USART_CR1_RE; + + bool sr_read_since_ore_set; + + /* Indicates whether the USART is currently receiving a byte. */ + bool receiving; + + /* Timers used to simulate a delay corresponding to the baud rate. */ + struct QEMUTimer *rx_timer; + struct QEMUTimer *tx_timer; + + void *chr_write_obj; + int (*chr_write)(void *chr_write_obj, const uint8_t *buf, int len); + + /* Stores the USART pin mapping used by the board. This is used to check + * the AFIO's USARTx_REMAP register to make sure the software has set + * the correct mapping. + */ + uint32_t afio_board_map; + + qemu_irq irq; + int curr_irq_level; + + /* We buffer the characters we receive from our qemu_chr receive handler in here + * to increase our overall throughput. This allows us to tell the target that + * another character is ready immediately after it does a read. + */ + uint8_t rcv_char_buf[USART_RCV_BUF_LEN]; + uint32_t rcv_char_bytes; /* number of bytes avaialable in rcv_char_buf */ +}; + + + +/* STM32F1XX Specific stuff */ + +/* Checks the USART transmit pin's GPIO settings. If the GPIO is not configured + * properly, a hardware error is triggered. + */ +void stm32_afio_uart_check_tx_pin_callback(Stm32Uart *s) +{ + int tx_periph, tx_pin; + int config; + + switch(s->periph) { + case STM32F1XX_UART1: + switch(stm32_afio_get_periph_map(s->stm32_afio, s->periph)) { + case STM32_USART1_NO_REMAP: + tx_periph = STM32F1XX_GPIOA; + tx_pin = 9; + break; + case STM32_USART1_REMAP: + tx_periph = STM32F1XX_GPIOB; + tx_pin = 6; + break; + default: + assert(false); + break; + } + break; + case STM32F1XX_UART2: + switch(stm32_afio_get_periph_map(s->stm32_afio, s->periph)) { + case STM32_USART2_NO_REMAP: + tx_periph = STM32F1XX_GPIOA; + tx_pin = 2; + break; + case STM32_USART2_REMAP: + tx_periph = STM32F1XX_GPIOD; + tx_pin = 5; + break; + default: + assert(false); + break; + } + break; + case STM32F1XX_UART3: + switch(stm32_afio_get_periph_map(s->stm32_afio, s->periph)) { + case STM32_USART3_NO_REMAP: + tx_periph = STM32F1XX_GPIOB; + tx_pin = 10; + break; + case STM32_USART3_PARTIAL_REMAP: + tx_periph = STM32F1XX_GPIOC; + tx_pin = 10; + break; + case STM32_USART3_FULL_REMAP: + tx_periph = STM32F1XX_GPIOD; + tx_pin = 8; + break; + default: + assert(false); + break; + } + break; + default: + assert(false); + break; + } + + Stm32Gpio *gpio_dev = s->stm32_gpio[tx_periph - STM32F1XX_GPIOA]; + + if(stm32_gpio_get_mode_bits(gpio_dev, tx_pin) == STM32_GPIO_MODE_IN) { + hw_error("UART TX pin needs to be configured as output"); + } + + config = stm32_gpio_get_config_bits(gpio_dev, tx_pin); + if((config != STM32_GPIO_OUT_ALT_PUSHPULL) && + (config != STM32_GPIO_OUT_ALT_OPEN)) { + hw_error("UART TX pin needs to be configured as " + "alternate function output"); + } +} + + +/* HELPER FUNCTIONS */ + +/* Update the baud rate based on the USART's peripheral clock frequency. */ +static void stm32_uart_baud_update(Stm32Uart *s) +{ + uint32_t clk_freq = stm32_rcc_get_periph_freq(s->stm32_rcc, s->periph); + uint64_t ns_per_bit; + + if((s->USART_BRR == 0) || (clk_freq == 0)) { + s->bits_per_sec = 0; + } else { + s->bits_per_sec = clk_freq / s->USART_BRR; + ns_per_bit = 1000000000LL / s->bits_per_sec; + + /* We assume 10 bits per character. This may not be exactly + * accurate depending on settings, but it should be good enough. */ + s->ns_per_char = ns_per_bit * 10; + } + +#ifdef DEBUG_STM32_UART + const char *periph_name = s->busdev.parent_obj.id; + DPRINTF("%s clock is set to %lu Hz.\n", + periph_name, + (unsigned long)clk_freq); + DPRINTF("%s BRR set to %lu.\n", + periph_name, + (unsigned long)s->USART_BRR); + DPRINTF("%s Baud is set to %lu bits per sec.\n", + periph_name, + (unsigned long)s->bits_per_sec); +#endif +} + +/* Handle a change in the peripheral clock. */ +static void stm32_uart_clk_irq_handler(void *opaque, int n, int level) +{ + Stm32Uart *s = (Stm32Uart *)opaque; + + assert(n == 0); + + /* Only update the BAUD rate if the IRQ is being set. */ + if(level) { + stm32_uart_baud_update(s); + } +} + +/* Routine which updates the USART's IRQ. This should be called whenever + * an interrupt-related flag is updated. + */ +static void stm32_uart_update_irq(Stm32Uart *s) { + /* Note that we are not checking the ORE flag, but we should be. */ + int new_irq_level = + (s->USART_CR1_TCIE & s->USART_SR_TC) | + (s->USART_CR1_TXEIE & s->USART_SR_TXE) | + (s->USART_CR1_RXNEIE & + (s->USART_SR_ORE | s->USART_SR_RXNE)); + + /* Only trigger an interrupt if the IRQ level changes. We probably could + * set the level regardless, but we will just check for good measure. + */ + if(new_irq_level ^ s->curr_irq_level) { + qemu_set_irq(s->irq, new_irq_level); + s->curr_irq_level = new_irq_level; + } +} + + +static void stm32_uart_start_tx(Stm32Uart *s, uint32_t value); + +/* Routine to be called when a transmit is complete. */ +static void stm32_uart_tx_complete(Stm32Uart *s) +{ + if(s->USART_SR_TXE == 1) { + /* If the buffer is empty, there is nothing waiting to be transmitted. + * Mark the transmit complete. */ + s->USART_SR_TC = 1; + stm32_uart_update_irq(s); + } else { + /* Otherwise, mark the transmit buffer as empty and + * start transmitting the value stored there. + */ + s->USART_SR_TXE = 1; + stm32_uart_update_irq(s); + stm32_uart_start_tx(s, s->USART_TDR); + } +} + +/* Start transmitting a character. */ +static void stm32_uart_start_tx(Stm32Uart *s, uint32_t value) +{ + uint8_t ch = value; //This will truncate the ninth bit + + /* Reset the Transmission Complete flag to indicate a transmit is in + * progress. + */ + s->USART_SR_TC = 0; + + /* Write the character out. */ + if (s->chr_write_obj) { + s->chr_write(s->chr_write_obj, &ch, 1); + } +#ifdef STM32_UART_NO_BAUD_DELAY + /* If BAUD delays are not being simulated, then immediately mark the + * transmission as complete. + */ + stm32_uart_tx_complete(s); +#else + /* Otherwise, start the transmit delay timer. */ + timer_mod(s->tx_timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + s->ns_per_char); +#endif +} + + +/* Put byte into the receive data register, if we have one and the target is + * ready for it. */ +static void stm32_uart_fill_receive_data_register(Stm32Uart *s) +{ + bool enabled = (s->USART_CR1_UE && s->USART_CR1_RE); + + /* If we have no more data, or we are emulating baud delay and it's not + * time yet for the next byte, return without filling the RDR */ + if (!s->rcv_char_bytes || s->receiving) { + return; + } + +#ifndef STM32_UART_ENABLE_OVERRUN + /* If overrun is not enabled, don't overwrite the current byte in the RDR */ + if (enabled && s->USART_SR_RXNE) { + return; + } +#endif + + /* Pull the byte out of our buffer */ + uint8_t byte = s->rcv_char_buf[0]; + memmove(&s->rcv_char_buf[0], &s->rcv_char_buf[1], --(s->rcv_char_bytes)); + + /* Only handle the received character if the module is enabled, */ + if (enabled) { + if(s->USART_SR_RXNE) { + DPRINTF("stm32_uart_receive: overrun error\n"); + s->USART_SR_ORE = 1; + s->sr_read_since_ore_set = false; + stm32_uart_update_irq(s); + } + + /* Receive the character and mark the buffer as not empty. */ + s->USART_RDR = byte; + s->USART_SR_RXNE = 1; + stm32_uart_update_irq(s); + } + +#ifndef STM32_UART_NO_BAUD_DELAY + /* Indicate the module is receiving and start the delay. */ + s->receiving = true; + timer_mod(s->rx_timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + s->ns_per_char); +#endif +} + + + +/* TIMER HANDLERS */ +/* Once the receive delay is finished, indicate the USART is finished receiving. + * This will allow it to receive the next character. The current character was + * already received before starting the delay. + */ +static void stm32_uart_rx_timer_expire(void *opaque) { + Stm32Uart *s = (Stm32Uart *)opaque; + + s->receiving = false; + + /* Put next byte into the receive data register, if we have one ready */ + stm32_uart_fill_receive_data_register(s); +} + +/* When the transmit delay is complete, mark the transmit as complete + * (the character was already sent before starting the delay). */ +static void stm32_uart_tx_timer_expire(void *opaque) { + Stm32Uart *s = (Stm32Uart *)opaque; + + stm32_uart_tx_complete(s); +} + + + + + +/* CHAR DEVICE HANDLERS */ + +static int stm32_uart_can_receive(void *opaque) +{ + Stm32Uart *s = (Stm32Uart *)opaque; + + /* How much space do we have in our buffer? */ + return (USART_RCV_BUF_LEN - s->rcv_char_bytes); +} + +static void stm32_uart_event(void *opaque, QEMUChrEvent event) +{ + /* Do nothing */ +} + +static void stm32_uart_receive(void *opaque, const uint8_t *buf, int size) +{ + Stm32Uart *s = (Stm32Uart *)opaque; + + assert(size > 0); + + /* Copy the characters into our buffer first */ + assert (size <= USART_RCV_BUF_LEN - s->rcv_char_bytes); + memmove(s->rcv_char_buf + s->rcv_char_bytes, buf, size); + s->rcv_char_bytes += size; + + /* Put next byte into RDR if the target is ready for it */ + stm32_uart_fill_receive_data_register(s); +} + + + + +/* REGISTER IMPLEMENTATION */ + +static uint32_t stm32_uart_USART_SR_read(Stm32Uart *s) +{ + /* If the Overflow flag is set, reading the SR register is the first step + * to resetting the flag. + */ + if(s->USART_SR_ORE) { + s->sr_read_since_ore_set = true; + } + + return (s->USART_SR_TXE << USART_SR_TXE_BIT) | + (s->USART_SR_TC << USART_SR_TC_BIT) | + (s->USART_SR_RXNE << USART_SR_RXNE_BIT) | + (s->USART_SR_ORE << USART_SR_ORE_BIT); +} + + + + + +static void stm32_uart_USART_SR_write(Stm32Uart *s, uint32_t new_value) +{ + uint32_t new_TC, new_RXNE; + + new_TC = extract32(new_value, USART_SR_TC_BIT, 1); + /* The Transmit Complete flag can be cleared, but not set. */ + if(new_TC) { + hw_error("Software attempted to set USART TC bit\n"); + } + s->USART_SR_TC = new_TC; + + new_RXNE = extract32(new_value, USART_SR_RXNE_BIT, 1); + /* The Read Data Register Not Empty flag can be cleared, but not set. */ + if(new_RXNE) { + hw_error("Software attempted to set USART RXNE bit\n"); + } + s->USART_SR_RXNE = new_RXNE; + + stm32_uart_update_irq(s); +} + + +static void stm32_uart_USART_DR_read(Stm32Uart *s, uint32_t *read_value) +{ + /* If the Overflow flag is set, then it should be cleared if the software + * performs an SR read followed by a DR read. + */ + if(s->USART_SR_ORE) { + if(s->sr_read_since_ore_set) { + s->USART_SR_ORE = 0; + + } + } + + if(!s->USART_CR1_UE) { + hw_error("Attempted to read from USART_DR while UART was disabled."); + } + + if(!s->USART_CR1_RE) { + hw_error("Attempted to read from USART_DR while UART receiver " + "was disabled."); + } + + if(s->USART_SR_RXNE) { + /* If the receive buffer is not empty, return the value. and mark the + * buffer as empty. + */ + (*read_value) = s->USART_RDR; + s->USART_SR_RXNE = 0; + + /* Put next character into the RDR if we have one */ + stm32_uart_fill_receive_data_register(s); + } else { + printf("STM32_UART WARNING: Read value from USART_DR while it was empty.\n"); + } + + stm32_uart_update_irq(s); +} + + +static void stm32_uart_USART_DR_write(Stm32Uart *s, uint32_t new_value) +{ + uint32_t write_value = new_value & 0x000001ff; + + if(!s->USART_CR1_UE) { + hw_error("Attempted to write to USART_DR while UART was disabled."); + } + + if(!s->USART_CR1_TE) { + hw_error("Attempted to write to USART_DR while UART transmitter " + "was disabled."); + } + + if (s->check_tx_pin_callback) { + s->check_tx_pin_callback(s); + } + + if(s->USART_SR_TC) { + /* If the Transmission Complete bit is set, it means the USART is not + * currently transmitting. This means, a transmission can immediately + * start. + */ + stm32_uart_start_tx(s, write_value); + } else { + /* Otherwise check to see if the buffer is empty. + * If it is, then store the new character there and mark it as not empty. + * If it is not empty, trigger a hardware error. Software should check + * to make sure it is empty before writing to the Data Register. + */ + if(s->USART_SR_TXE) { + s->USART_TDR = write_value; + s->USART_SR_TXE = 0; + } else { + hw_error("Wrote new value to USART_DR while it was non-empty."); + } + } + + stm32_uart_update_irq(s); +} + +/* Update the Baud Rate Register. */ +static void stm32_uart_USART_BRR_write(Stm32Uart *s, uint32_t new_value, + bool init) +{ + s->USART_BRR = new_value & 0x0000ffff; + + stm32_uart_baud_update(s); +} + +static void stm32_uart_USART_CR1_write(Stm32Uart *s, uint32_t new_value, + bool init) +{ + s->USART_CR1_UE = extract32(new_value, USART_CR1_UE_BIT, 1); +#if 0 /* XXX Does not work with f2xx yet */ + if(s->USART_CR1_UE) { + /* Check to make sure the correct mapping is selected when enabling the + * USART. + */ + if(s->afio_board_map != stm32_afio_get_periph_map(s->stm32_afio, s->periph)) { + hw_error("Bad AFIO mapping for %s", s->busdev.parent_obj.id); + } + } +#endif + + s->USART_CR1_TXEIE = extract32(new_value, USART_CR1_TXEIE_BIT, 1); + s->USART_CR1_TCIE = extract32(new_value, USART_CR1_TCIE_BIT, 1); + s->USART_CR1_RXNEIE = extract32(new_value, USART_CR1_RXNEIE_BIT, 1); + + s->USART_CR1_TE = extract32(new_value, USART_CR1_TE_BIT, 1); + s->USART_CR1_RE = extract32(new_value, USART_CR1_RE_BIT, 1); + + s->USART_CR1 = new_value & 0x00003fff; + + stm32_uart_update_irq(s); +} + +static void stm32_uart_USART_CR2_write(Stm32Uart *s, uint32_t new_value, + bool init) +{ + s->USART_CR2 = new_value & 0x00007f7f; +} + +static void stm32_uart_USART_CR3_write(Stm32Uart *s, uint32_t new_value, + bool init) +{ + s->USART_CR3 = new_value & 0x000007ff; +} + +static void stm32_uart_reset(DeviceState *dev) +{ + Stm32Uart *s = STM32_UART(dev); + + /* Initialize the status registers. These are mostly + * read-only, so we do not call the "write" routine + * like normal. + */ + s->USART_SR_TXE = 1; + s->USART_SR_TC = 1; + s->USART_SR_RXNE = 0; + s->USART_SR_ORE = 0; + + // Do not initialize USART_DR - it is documented as undefined at reset + // and does not behave like normal registers. + stm32_uart_USART_BRR_write(s, 0x00000000, true); + stm32_uart_USART_CR1_write(s, 0x00000000, true); + stm32_uart_USART_CR2_write(s, 0x00000000, true); + stm32_uart_USART_CR3_write(s, 0x00000000, true); + + stm32_uart_update_irq(s); +} + +static uint64_t stm32_uart_read(void *opaque, hwaddr offset, + unsigned size) +{ + Stm32Uart *s = (Stm32Uart *)opaque; + uint32_t value; + int start = (offset & 3) * 8; + int length = size * 8; + + switch (offset & 0xfffffffc) { + case USART_SR_OFFSET: + return extract64(stm32_uart_USART_SR_read(s), start, length); + case USART_DR_OFFSET: + stm32_uart_USART_DR_read(s, &value); + return extract64(value, start, length); + case USART_BRR_OFFSET: + return extract64(s->USART_BRR, start, length); + case USART_CR1_OFFSET: + return extract64(s->USART_CR1, start, length); + case USART_CR2_OFFSET: + return extract64(s->USART_CR2, start, length); + case USART_CR3_OFFSET: + return extract64(s->USART_CR3, start, length); + case USART_GTPR_OFFSET: + STM32_NOT_IMPL_REG(offset, size); + return 0; + default: + STM32_BAD_REG(offset, size); + return 0; + } +} + +static void stm32_uart_write(void *opaque, hwaddr offset, + uint64_t value, unsigned size) +{ + Stm32Uart *s = (Stm32Uart *)opaque; + int start = (offset & 3) * 8; + int length = size * 8; + + stm32_rcc_check_periph_clk((Stm32Rcc *)s->stm32_rcc, s->periph); + + switch (offset & 0xfffffffc) { + case USART_SR_OFFSET: + stm32_uart_USART_SR_write(s, + deposit64(stm32_uart_USART_SR_read(s), start, length, value)); + break; + case USART_DR_OFFSET: + stm32_uart_USART_DR_write(s, + deposit64(0, start, length, value)); + break; + case USART_BRR_OFFSET: + stm32_uart_USART_BRR_write(s, + deposit64(s->USART_BRR, start, length, value), false); + break; + case USART_CR1_OFFSET: + stm32_uart_USART_CR1_write(s, + deposit64(s->USART_CR1, start, length, value), false); + break; + case USART_CR2_OFFSET: + stm32_uart_USART_CR2_write(s, + deposit64(s->USART_CR2, start, length, value), false); + break; + case USART_CR3_OFFSET: + stm32_uart_USART_CR3_write(s, + deposit64(s->USART_CR3, start, length, value), false); + break; + case USART_GTPR_OFFSET: + STM32_NOT_IMPL_REG(offset, 2); + break; + default: + STM32_BAD_REG(offset, 2); + break; + } +} + +static const MemoryRegionOps stm32_uart_ops = { + .read = stm32_uart_read, + .write = stm32_uart_write, + .valid.min_access_size = 2, + .valid.max_access_size = 4, + .endianness = DEVICE_NATIVE_ENDIAN +}; + + + + + +/* PUBLIC FUNCTIONS */ + +void stm32_uart_set_write_handler(Stm32Uart *s, void *obj, + int (*chr_write_handler)(void *chr_write_obj, const uint8_t *buf, int len)) +{ + s->chr_write_obj = obj; + s->chr_write = chr_write_handler; +} + + +void stm32_uart_get_rcv_handlers(Stm32Uart *s, IOCanReadHandler **can_read, + IOReadHandler **read, IOEventHandler **event) +{ + *can_read = stm32_uart_can_receive; + *read = stm32_uart_receive; + *event = stm32_uart_event; +} + + +// Stub used to typecast the generic write handler prototype to a +// qemu_chr write handler. +static int stm32_uart_chr_fe_write_stub(void *s, const uint8_t *buf, int len) +{ + return qemu_chr_fe_write((Chardev *)s, buf, len); +} + + +// Helper method that connects this UART device's receive handlers to a qemu_chr instance. +void stm32_uart_connect(Stm32Uart *s, Chardev *chr, uint32_t afio_board_map) +{ + s->chr_write_obj = chr; + if (chr) { + stm32_uart_set_write_handler(s, chr, stm32_uart_chr_fe_write_stub); + IOCanReadHandler *can_read_cb; + IOReadHandler *read_cb; + IOEventHandler *event_cb; + stm32_uart_get_rcv_handlers(s, &can_read_cb, &read_cb, &event_cb); + qemu_chr_fe_set_handlers(&chr, can_read_cb, read_cb, event_cb, NULL, s, NULL, true); + } + + s->afio_board_map = afio_board_map; +} + + + + +/* DEVICE INITIALIZATION */ + +static void stm32_uart_realize(DeviceState *obj, Error **pError) +{ + qemu_irq *clk_irq; + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + Stm32Uart *s = STM32_UART(obj); + + s->stm32_rcc = (Stm32Rcc *)s->stm32_rcc_prop; + s->stm32_gpio = (Stm32Gpio **)s->stm32_gpio_prop; + s->stm32_afio = (Stm32Afio *)s->stm32_afio_prop; + + memory_region_init_io(&s->iomem, OBJECT(s), &stm32_uart_ops, s, + "uart", 0x03ff); + sysbus_init_mmio(dev, &s->iomem); + + sysbus_init_irq(dev, &s->irq); + + s->rx_timer = + timer_new_ns(QEMU_CLOCK_VIRTUAL, + (QEMUTimerCB *)stm32_uart_rx_timer_expire, s); + s->tx_timer = + timer_new_ns(QEMU_CLOCK_VIRTUAL, + (QEMUTimerCB *)stm32_uart_tx_timer_expire, s); + + /* Register handlers to handle updates to the USART's peripheral clock. */ + clk_irq = + qemu_allocate_irqs(stm32_uart_clk_irq_handler, (void *)s, 1); + stm32_rcc_set_periph_clk_irq(s->stm32_rcc, s->periph, clk_irq[0]); + + s->rcv_char_bytes = 0; + + stm32_uart_reset((DeviceState *)s); +} + +static Property stm32_uart_properties[] = { + DEFINE_PROP_PERIPH_T("periph", Stm32Uart, periph, STM32_PERIPH_UNDEFINED), + DEFINE_PROP_PTR("stm32_rcc", Stm32Uart, stm32_rcc_prop), + DEFINE_PROP_PTR("stm32_gpio", Stm32Uart, stm32_gpio_prop), + DEFINE_PROP_PTR("stm32_afio", Stm32Uart, stm32_afio_prop), + DEFINE_PROP_PTR("stm32_check_tx_pin_callback", Stm32Uart, check_tx_pin_prop), + DEFINE_PROP_END_OF_LIST() +}; + +static void stm32_uart_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + + dc->realize = stm32_uart_realize; + dc->reset = stm32_uart_reset; + device_class_set_props(dc, stm32_uart_properties); +} + +static TypeInfo stm32_uart_info = { + .name = TYPE_STM32_UART, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(Stm32Uart), + .class_init = stm32_uart_class_init +}; + +static void stm32_uart_register_types(void) +{ + type_register_static(&stm32_uart_info); +} + +type_init(stm32_uart_register_types) diff --git a/hw/char/stm32f7xx_uart.c b/hw/char/stm32f7xx_uart.c new file mode 100644 index 0000000000000..72ad6bfb5859e --- /dev/null +++ b/hw/char/stm32f7xx_uart.c @@ -0,0 +1,738 @@ +/* + * STM32F7xx Microcontroller UART module + * + * Copyright (C) 2010 Andre Beckus + * Copyright (C) 2016 Pebble + * + * Source code based on stm32_uart.c + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "hw/sysbus.h" +#include "hw/arm/stm32.h" +#include "qemu/bitops.h" +#include "hw/qdev-properties.h" +#include "hw/irq.h" +#include "hw/hw.h" + + + +/* DEFINITIONS*/ + +/* See the README file for details on these settings. */ +//#define DEBUG_STM32_UART +//#define STM32_UART_NO_BAUD_DELAY +//#define STM32_UART_ENABLE_OVERRUN + +#ifdef DEBUG_STM32_UART +#define DPRINTF(fmt, ...) \ + do { printf("STM32F7XX_UART: " fmt , ## __VA_ARGS__); } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + +#define USART_CR1_OFFSET 0x00 +#define USART_CR1_UE_BIT 0 +#define USART_CR1_RE_BIT 2 +#define USART_CR1_TE_BIT 3 +#define USART_CR1_RXNEIE_BIT 5 +#define USART_CR1_TCIE_BIT 6 +#define USART_CR1_TXEIE_BIT 7 + +#define USART_CR2_OFFSET 0x04 + +#define USART_CR3_OFFSET 0x08 + +#define USART_BRR_OFFSET 0x0C + +#define USART_GTPR_OFFSET 0x10 + +#define USART_RTOR_OFFSET 0x14 + +#define USART_RQR_OFFSET 0x18 +#define USART_RQR_RXFRQ_BIT 3 + +#define USART_ISR_OFFSET 0x1C +#define USART_ISR_ORE_BIT 3 +#define USART_ISR_RXNE_BIT 5 +#define USART_ISR_TC_BIT 6 +#define USART_ISR_TXE_BIT 7 + +#define USART_ICR_OFFSET 0x20 +#define USART_ICR_ORECF_BIT 3 + +#define USART_RDR_OFFSET 0x24 + +#define USART_TDR_OFFSET 0x28 + +#define USART_RCV_BUF_LEN 256 + +struct Stm32F7xxUart { + /* Inherited */ + SysBusDevice busdev; + + /* Properties */ + stm32_periph_t periph; + void *stm32_rcc_prop; + void *stm32_gpio_prop; + void *stm32_afio_prop; + + /* Checks the USART transmit pin's GPIO settings. If the GPIO is not configured + * properly, a hardware error is triggered. + */ + union { + void *check_tx_pin_prop; + void (*check_tx_pin_callback)(Stm32F7xxUart *); + }; + + /* Private */ + MemoryRegion iomem; + + Stm32Rcc *stm32_rcc; + Stm32Gpio **stm32_gpio; + Stm32Afio *stm32_afio; + + int uart_index; + + uint32_t bits_per_sec; + int64_t ns_per_char; + + /* Register Values */ + uint32_t USART_RDR; + uint32_t USART_TDR; + uint32_t USART_BRR; + uint32_t USART_CR1; + uint32_t USART_CR2; + uint32_t USART_CR3; + + /* Register Field Values */ + uint32_t USART_ISR_TXE; + uint32_t USART_ISR_TC; + uint32_t USART_ISR_RXNE; + uint32_t USART_ISR_ORE; + uint32_t USART_CR1_UE; + uint32_t USART_CR1_TXEIE; + uint32_t USART_CR1_TCIE; + uint32_t USART_CR1_RXNEIE; + uint32_t USART_CR1_TE; + uint32_t USART_CR1_RE; + + /* Indicates whether the USART is currently receiving a byte. */ + bool receiving; + + /* Timers used to simulate a delay corresponding to the baud rate. */ + struct QEMUTimer *rx_timer; + struct QEMUTimer *tx_timer; + + void *chr_write_obj; + int (*chr_write)(void *chr_write_obj, const uint8_t *buf, int len); + + /* Stores the USART pin mapping used by the board. This is used to check + * the AFIO's USARTx_REMAP register to make sure the software has set + * the correct mapping. + */ + uint32_t afio_board_map; + + qemu_irq irq; + int curr_irq_level; + + /* We buffer the characters we receive from our qemu_chr receive handler in here + * to increase our overall throughput. This allows us to tell the target that + * another character is ready immediately after it does a read. + */ + uint8_t rcv_char_buf[USART_RCV_BUF_LEN]; + uint32_t rcv_char_bytes; /* number of bytes avaialable in rcv_char_buf */ +}; + + +/* HELPER FUNCTIONS */ + +/* Update the baud rate based on the USART's peripheral clock frequency. */ +static void stm32f7xx_uart_baud_update(Stm32F7xxUart *s) +{ + uint32_t clk_freq = stm32_rcc_get_periph_freq(s->stm32_rcc, s->periph); + uint64_t ns_per_bit; + + if ((s->USART_BRR == 0) || (clk_freq == 0)) { + s->bits_per_sec = 0; + } else { + s->bits_per_sec = clk_freq / s->USART_BRR; + ns_per_bit = 1000000000LL / s->bits_per_sec; + + /* We assume 10 bits per character. This may not be exactly + * accurate depending on settings, but it should be good enough. */ + s->ns_per_char = ns_per_bit * 10; + } + +#ifdef DEBUG_STM32_UART + const char *periph_name = s->busdev.parent_obj.id; + DPRINTF("%s clock is set to %lu Hz.\n", + periph_name, + (unsigned long)clk_freq); + DPRINTF("%s BRR set to %lu.\n", + periph_name, + (unsigned long)s->USART_BRR); + DPRINTF("%s Baud is set to %lu bits per sec.\n", + periph_name, + (unsigned long)s->bits_per_sec); +#endif +} + +/* Handle a change in the peripheral clock. */ +static void stm32f7xx_uart_clk_irq_handler(void *opaque, int n, int level) +{ + Stm32F7xxUart *s = (Stm32F7xxUart *)opaque; + + assert(n == 0); + + /* Only update the BAUD rate if the IRQ is being set. */ + if (level) { + stm32f7xx_uart_baud_update(s); + } +} + +/* Routine which updates the USART's IRQ. This should be called whenever + * an interrupt-related flag is updated. + */ +static void stm32f7xx_uart_update_irq(Stm32F7xxUart *s) { + /* Note that we are not checking the ORE flag, but we should be. */ + int new_irq_level = + (s->USART_CR1_TCIE & s->USART_ISR_TC) | + (s->USART_CR1_TXEIE & s->USART_ISR_TXE) | + (s->USART_CR1_RXNEIE & (s->USART_ISR_ORE | s->USART_ISR_RXNE)); + + /* Only trigger an interrupt if the IRQ level changes. We probably could + * set the level regardless, but we will just check for good measure. + */ + if (new_irq_level ^ s->curr_irq_level) { + qemu_set_irq(s->irq, new_irq_level); + s->curr_irq_level = new_irq_level; + } +} + + +static void stm32f7xx_uart_start_tx(Stm32F7xxUart *s, uint32_t value); + +/* Routine to be called when a transmit is complete. */ +static void stm32f7xx_uart_tx_complete(Stm32F7xxUart *s) +{ + if (s->USART_ISR_TXE == 1) { + /* If the buffer is empty, there is nothing waiting to be transmitted. + * Mark the transmit complete. */ + s->USART_ISR_TC = 1; + stm32f7xx_uart_update_irq(s); + } else { + /* Otherwise, mark the transmit buffer as empty and + * start transmitting the value stored there. + */ + s->USART_ISR_TXE = 1; + stm32f7xx_uart_update_irq(s); + stm32f7xx_uart_start_tx(s, s->USART_TDR); + } +} + +/* Start transmitting a character. */ +static void stm32f7xx_uart_start_tx(Stm32F7xxUart *s, uint32_t value) +{ + uint8_t ch = value; //This will truncate the ninth bit + + /* Reset the Transmission Complete flag to indicate a transmit is in + * progress. + */ + s->USART_ISR_TC = 0; + + /* Write the character out. */ + if (s->chr_write_obj) { + s->chr_write(s->chr_write_obj, &ch, 1); + } +#ifdef STM32_UART_NO_BAUD_DELAY + /* If BAUD delays are not being simulated, then immediately mark the + * transmission as complete. + */ + stm32f7xx_uart_tx_complete(s); +#else + /* Otherwise, start the transmit delay timer. */ + timer_mod(s->tx_timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + s->ns_per_char); +#endif +} + + +/* Put byte into the receive data register, if we have one and the target is ready for it. */ +static void stm32f7xx_uart_fill_receive_data_register(Stm32F7xxUart *s) +{ + bool enabled = (s->USART_CR1_UE && s->USART_CR1_RE); + + /* If we have no more data, or we are emulating baud delay and it's not + * time yet for the next byte, return without filling the RDR */ + if (!s->rcv_char_bytes || s->receiving) { + return; + } + +#ifndef STM32_UART_ENABLE_OVERRUN + /* If overrun is not enabled, don't overwrite the current byte in the RDR */ + if (enabled && s->USART_ISR_RXNE) { + return; + } +#endif + + /* Pull the byte out of our buffer */ + uint8_t byte = s->rcv_char_buf[0]; + memmove(&s->rcv_char_buf[0], &s->rcv_char_buf[1], --(s->rcv_char_bytes)); + + /* Only handle the received character if the module is enabled, */ + if (enabled) { + if (s->USART_ISR_RXNE) { + DPRINTF("stm32f7xx_uart_receive: overrun error\n"); + s->USART_ISR_ORE = 1; + stm32f7xx_uart_update_irq(s); + } + + /* Receive the character and mark the buffer as not empty. */ + s->USART_RDR = byte; + s->USART_ISR_RXNE = 1; + stm32f7xx_uart_update_irq(s); + } + +#ifndef STM32_UART_NO_BAUD_DELAY + /* Indicate the module is receiving and start the delay. */ + s->receiving = true; + timer_mod(s->rx_timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + s->ns_per_char); +#endif +} + + + +/* TIMER HANDLERS */ +/* Once the receive delay is finished, indicate the USART is finished receiving. + * This will allow it to receive the next character. The current character was + * already received before starting the delay. + */ +static void stm32f7xx_uart_rx_timer_expire(void *opaque) { + Stm32F7xxUart *s = (Stm32F7xxUart *)opaque; + + s->receiving = false; + + /* Put next byte into the receive data register, if we have one ready */ + stm32f7xx_uart_fill_receive_data_register(s); +} + +/* When the transmit delay is complete, mark the transmit as complete + * (the character was already sent before starting the delay). */ +static void stm32f7xx_uart_tx_timer_expire(void *opaque) { + Stm32F7xxUart *s = (Stm32F7xxUart *)opaque; + + stm32f7xx_uart_tx_complete(s); +} + + + + + +/* CHAR DEVICE HANDLERS */ + +static int stm32f7xx_uart_can_receive(void *opaque) +{ + Stm32F7xxUart *s = (Stm32F7xxUart *)opaque; + + /* How much space do we have in our buffer? */ + return (USART_RCV_BUF_LEN - s->rcv_char_bytes); +} + +static void stm32f7xx_uart_event(void *opaque, int event) +{ + /* Do nothing */ +} + +static void stm32f7xx_uart_receive(void *opaque, const uint8_t *buf, int size) +{ + Stm32F7xxUart *s = (Stm32F7xxUart *)opaque; + + assert(size > 0); + + /* Copy the characters into our buffer first */ + assert (size <= USART_RCV_BUF_LEN - s->rcv_char_bytes); + memmove(s->rcv_char_buf + s->rcv_char_bytes, buf, size); + s->rcv_char_bytes += size; + + /* Put next byte into RDR if the target is ready for it */ + stm32f7xx_uart_fill_receive_data_register(s); +} + + + + +/* REGISTER IMPLEMENTATION */ + +static uint32_t stm32f7xx_uart_USART_ISR_read(Stm32F7xxUart *s) +{ + return (s->USART_ISR_TXE << USART_ISR_TXE_BIT) | + (s->USART_ISR_TC << USART_ISR_TC_BIT) | + (s->USART_ISR_RXNE << USART_ISR_RXNE_BIT) | + (s->USART_ISR_ORE << USART_ISR_ORE_BIT); +} + + +static void stm32f7xx_uart_USART_ICR_write(Stm32F7xxUart *s, uint32_t new_value) +{ + if (new_value & USART_ICR_ORECF_BIT) { + s->USART_ISR_ORE = 0; + } + + stm32f7xx_uart_update_irq(s); +} + + +static uint32_t stm32f7xx_uart_USART_RDR_read(Stm32F7xxUart *s) +{ + uint32_t read_value = 0; + if (!s->USART_CR1_UE) { + hw_error("Attempted to read from USART_RDR while UART was disabled."); + } + + if (!s->USART_CR1_RE) { + hw_error("Attempted to read from USART_RDR while UART receiver was disabled."); + } + + if (s->USART_ISR_RXNE) { + /* If the receive buffer is not empty, return the value. and mark the + * buffer as empty. + */ + read_value = s->USART_RDR; + s->USART_ISR_RXNE = 0; + + /* Put next character into the RDR if we have one */ + stm32f7xx_uart_fill_receive_data_register(s); + } else { + printf("STM32_UART WARNING: Read value from USART_RDR while it was empty.\n"); + } + + stm32f7xx_uart_update_irq(s); + return read_value; +} + + +static void stm32f7xx_uart_USART_TDR_write(Stm32F7xxUart *s, uint32_t new_value) +{ + uint32_t write_value = new_value & 0x000001ff; + + if (!s->USART_CR1_UE) { + hw_error("Attempted to write to USART_TDR while UART was disabled."); + } + + if (!s->USART_CR1_TE) { + hw_error("Attempted to write to USART_TDR while UART transmitter was disabled."); + } + + if (s->check_tx_pin_callback) { + s->check_tx_pin_callback(s); + } + + DPRINTF("Writing to TDR (value=0x%x, ISR_TC=%d, ISR_TXE=%d)\n", write_value, s->USART_ISR_TC, + s->USART_ISR_TXE); + if (s->USART_ISR_TC) { + /* If the Transmission Complete bit is set, it means the USART is not + * currently transmitting. This means, a transmission can immediately + * start. + */ + stm32f7xx_uart_start_tx(s, write_value); + } else { + /* Otherwise check to see if the buffer is empty. + * If it is, then store the new character there and mark it as not empty. + * If it is not empty, trigger a hardware error. Software should check + * to make sure it is empty before writing to the Data Register. + */ + if (s->USART_ISR_TXE) { + s->USART_TDR = write_value; + s->USART_ISR_TXE = 0; + } else { + hw_error("Wrote new value to USART_TDR while it was non-empty."); + } + } + + stm32f7xx_uart_update_irq(s); +} + +/* Update the Baud Rate Register. */ +static void stm32f7xx_uart_USART_BRR_write(Stm32F7xxUart *s, uint32_t new_value, bool init) +{ + s->USART_BRR = new_value & 0x0000ffff; + + stm32f7xx_uart_baud_update(s); +} + +static void stm32f7xx_uart_USART_CR1_write(Stm32F7xxUart *s, uint32_t new_value, bool init) +{ + s->USART_CR1_UE = extract32(new_value, USART_CR1_UE_BIT, 1); +#if 0 + if (s->USART_CR1_UE) { + /* Check to make sure the correct mapping is selected when enabling the + * USART. + */ + if (s->afio_board_map != stm32_afio_get_periph_map(s->stm32_afio, s->periph)) { + hw_error("Bad AFIO mapping for %s", s->busdev.parent_obj.id); + } + } +#endif + + s->USART_CR1_TXEIE = extract32(new_value, USART_CR1_TXEIE_BIT, 1); + s->USART_CR1_TCIE = extract32(new_value, USART_CR1_TCIE_BIT, 1); + s->USART_CR1_RXNEIE = extract32(new_value, USART_CR1_RXNEIE_BIT, 1); + + s->USART_CR1_TE = extract32(new_value, USART_CR1_TE_BIT, 1); + s->USART_CR1_RE = extract32(new_value, USART_CR1_RE_BIT, 1); + + s->USART_CR1 = new_value & 0x1ffffffd; + + stm32f7xx_uart_update_irq(s); +} + +static void stm32f7xx_uart_USART_CR2_write(Stm32F7xxUart *s, uint32_t new_value, bool init) +{ + s->USART_CR2 = new_value & 0xffffff70; +} + +static void stm32f7xx_uart_USART_CR3_write(Stm32F7xxUart *s, uint32_t new_value, bool init) +{ + s->USART_CR3 = new_value & 0x0000e7ff; +} + +static void stm32f7xx_uart_reset(DeviceState *dev) +{ + Stm32F7xxUart *s = STM32F7XX_UART(dev); + + /* Initialize the status registers. These are mostly + * read-only, so we do not call the "write" routine + * like normal. + */ + s->USART_ISR_TXE = 1; + s->USART_ISR_TC = 1; + s->USART_ISR_RXNE = 0; + s->USART_ISR_ORE = 0; + + // Do not initialize USART_RDR/USART_TDR - it is documented as undefined at reset + // and does not behave like normal registers. + stm32f7xx_uart_USART_BRR_write(s, 0x00000000, true); + stm32f7xx_uart_USART_CR1_write(s, 0x00000000, true); + stm32f7xx_uart_USART_CR2_write(s, 0x00000000, true); + stm32f7xx_uart_USART_CR3_write(s, 0x00000000, true); + + stm32f7xx_uart_update_irq(s); +} + +static uint64_t stm32f7xx_uart_read(void *opaque, hwaddr offset, unsigned size) +{ + Stm32F7xxUart *s = (Stm32F7xxUart *)opaque; + uint64_t value = 0; + int start = (offset & 3) * 8; + int length = size * 8; + + switch (offset & 0xfffffffc) { + case USART_ISR_OFFSET: + value = stm32f7xx_uart_USART_ISR_read(s); + break; + case USART_RDR_OFFSET: + value = stm32f7xx_uart_USART_RDR_read(s); + break; + case USART_BRR_OFFSET: + value = s->USART_BRR; + break; + case USART_CR1_OFFSET: + value = s->USART_CR1; + break; + case USART_CR2_OFFSET: + value = s->USART_CR2; + break; + case USART_CR3_OFFSET: + value = s->USART_CR3; + break; + case USART_GTPR_OFFSET: + case USART_RTOR_OFFSET: + case USART_RQR_OFFSET: + case USART_ICR_OFFSET: + // always reads as 0 + break; + default: + STM32_BAD_REG(offset, size); + break; + } + + return extract64(value, start, length); +} + +static void stm32f7xx_uart_write(void *opaque, hwaddr offset, uint64_t value, unsigned size) +{ + Stm32F7xxUart *s = (Stm32F7xxUart *)opaque; + int start = (offset & 3) * 8; + int length = size * 8; + + stm32_rcc_check_periph_clk((Stm32Rcc *)s->stm32_rcc, s->periph); + + switch (offset & 0xfffffffc) { + case USART_ICR_OFFSET: + stm32f7xx_uart_USART_ICR_write(s, deposit64(0, start, length, value)); + break; + case USART_ISR_OFFSET: + STM32_WARN_RO_REG(offset); + break; + case USART_TDR_OFFSET: + stm32f7xx_uart_USART_TDR_write(s, deposit64(0, start, length, value)); + break; + case USART_BRR_OFFSET: + stm32f7xx_uart_USART_BRR_write(s, deposit64(s->USART_BRR, start, length, value), false); + break; + case USART_CR1_OFFSET: + stm32f7xx_uart_USART_CR1_write(s, deposit64(s->USART_CR1, start, length, value), false); + break; + case USART_CR2_OFFSET: + stm32f7xx_uart_USART_CR2_write(s, deposit64(s->USART_CR2, start, length, value), false); + break; + case USART_CR3_OFFSET: + stm32f7xx_uart_USART_CR3_write(s, deposit64(s->USART_CR3, start, length, value), false); + break; + case USART_RQR_OFFSET: + if (extract32(value, USART_RQR_RXFRQ_BIT, 1) == 1) { + s->USART_ISR_RXNE = 0; + } + break; + case USART_GTPR_OFFSET: + case USART_RTOR_OFFSET: + STM32_NOT_IMPL_REG(offset, size); + break; + default: + STM32_BAD_REG(offset, size); + break; + } +} + +static const MemoryRegionOps stm32f7xx_uart_ops = { + .read = stm32f7xx_uart_read, + .write = stm32f7xx_uart_write, + .valid.min_access_size = 2, + .valid.max_access_size = 4, + .endianness = DEVICE_NATIVE_ENDIAN +}; + + + + + +/* PUBLIC FUNCTIONS */ + +void stm32f7xx_uart_set_write_handler(Stm32F7xxUart *s, void *obj, + int (*chr_write_handler)(void *chr_write_obj, const uint8_t *buf, int len)) +{ + s->chr_write_obj = obj; + s->chr_write = chr_write_handler; +} + + +void stm32f7xx_uart_get_rcv_handlers(Stm32F7xxUart *s, IOCanReadHandler **can_read, + IOReadHandler **read, IOEventHandler **event) +{ + *can_read = stm32f7xx_uart_can_receive; + *read = stm32f7xx_uart_receive; + *event = stm32f7xx_uart_event; +} + + +// Stub used to typecast the generic write handler prototype to a qemu_chr write handler. +static int stm32f7xx_uart_chr_fe_write_stub(void *s, const uint8_t *buf, int len) +{ + return qemu_chr_fe_write((Chardev *)s, buf, len); +} + + +// Helper method that connects this UART device's receive handlers to a qemu_chr instance. +void stm32f7xx_uart_connect(Stm32F7xxUart *s, Chardev *chr, uint32_t afio_board_map) +{ + s->chr_write_obj = chr; + if (chr) { + stm32f7xx_uart_set_write_handler(s, chr, stm32f7xx_uart_chr_fe_write_stub); + IOCanReadHandler *can_read_cb; + IOReadHandler *read_cb; + IOEventHandler *event_cb; + stm32f7xx_uart_get_rcv_handlers(s, &can_read_cb, &read_cb, &event_cb); + qemu_chr_fe_set_handlers(&chr, can_read_cb, read_cb, event_cb, NULL, s, NULL, true); + } + + s->afio_board_map = afio_board_map; +} + + + + +/* DEVICE INITIALIZATION */ + +static void stm32f7xx_uart_init(Object *obj) +{ + qemu_irq *clk_irq; + Stm32F7xxUart *s = STM32F7XX_UART(obj); + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + + s->stm32_rcc = (Stm32Rcc *)s->stm32_rcc_prop; + s->stm32_gpio = (Stm32Gpio **)s->stm32_gpio_prop; + s->stm32_afio = (Stm32Afio *)s->stm32_afio_prop; + + memory_region_init_io(&s->iomem, OBJECT(s), &stm32f7xx_uart_ops, s, "uart", 0x03ff); + sysbus_init_mmio(dev, &s->iomem); + + sysbus_init_irq(dev, &s->irq); + + s->rx_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, + (QEMUTimerCB *)stm32f7xx_uart_rx_timer_expire, s); + s->tx_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, + (QEMUTimerCB *)stm32f7xx_uart_tx_timer_expire, s); + + /* Register handlers to handle updates to the USART's peripheral clock. */ + clk_irq = qemu_allocate_irqs(stm32f7xx_uart_clk_irq_handler, (void *)s, 1); + stm32_rcc_set_periph_clk_irq(s->stm32_rcc, s->periph, clk_irq[0]); + + s->rcv_char_bytes = 0; + + stm32f7xx_uart_reset((DeviceState *)s); +} + +static Property stm32f7xx_uart_properties[] = { + DEFINE_PROP_PERIPH_T("periph", Stm32F7xxUart, periph, STM32_PERIPH_UNDEFINED), + DEFINE_PROP_PTR("stm32_rcc", Stm32F7xxUart, stm32_rcc_prop), + DEFINE_PROP_PTR("stm32_gpio", Stm32F7xxUart, stm32_gpio_prop), + DEFINE_PROP_PTR("stm32_afio", Stm32F7xxUart, stm32_afio_prop), + DEFINE_PROP_PTR("stm32_check_tx_pin_callback", Stm32F7xxUart, check_tx_pin_prop), + DEFINE_PROP_END_OF_LIST() +}; + +static void stm32f7xx_uart_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + + dc->reset = stm32f7xx_uart_reset; + device_class_set_props(dc, stm32f7xx_uart_properties); +} + +static TypeInfo stm32f7xx_uart_info = { + .name = "stm32f7xx-uart", + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(Stm32F7xxUart), + .instance_init = stm32f7xx_uart_init, + .class_init = stm32f7xx_uart_class_init +}; + +static void stm32f7xx_uart_register_types(void) +{ + type_register_static(&stm32f7xx_uart_info); +} + +type_init(stm32f7xx_uart_register_types) diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 85f062def72b5..44b0b9eef2349 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -499,6 +499,14 @@ void qdev_init_gpio_out_named(DeviceState *dev, qemu_irq *pins, NamedGPIOList *gpio_list = qdev_get_named_gpio_list(dev, name); assert(gpio_list->num_in == 0 || !name); + // + // update the out array... + // + int old = gpio_list->num_out; + gpio_list->out = old ? g_renew(qemu_irq, gpio_list->out, old + n) : g_new(qemu_irq, n); + for (i = 0; i < n; ++i) { + gpio_list->out[old + i] = pins[i]; + } if (!name) { name = "unnamed-gpio-out"; diff --git a/hw/display/Makefile.objs b/hw/display/Makefile.objs index 77a7d622bd2da..cef9f80ef052b 100644 --- a/hw/display/Makefile.objs +++ b/hw/display/Makefile.objs @@ -14,6 +14,8 @@ common-obj-$(CONFIG_SII9022) += sii9022.o common-obj-$(CONFIG_SSD0303) += ssd0303.o common-obj-$(CONFIG_SSD0323) += ssd0323.o common-obj-$(CONFIG_XEN) += xenfb.o +common-obj-y += ls013b7dh01.o +common-obj-$(CONFIG_PEBBLE_SNOWY_DISPLAY) += pebble_snowy_display.o common-obj-$(CONFIG_VGA_PCI) += vga-pci.o common-obj-$(CONFIG_VGA_ISA) += vga-isa.o diff --git a/hw/display/ls013b7dh01.c b/hw/display/ls013b7dh01.c new file mode 100644 index 0000000000000..f1289bba9d74b --- /dev/null +++ b/hw/display/ls013b7dh01.c @@ -0,0 +1,381 @@ +/*- + * Copyright (c) 2013 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/* + * QEMU Sharp LS013B7DH01 Memory LCD device model. + */ + +/* + * TODO: + * Add part number attribute and set ROWS/COLS appropriately. + * Add attribute for 'off' bit colour for simulating backlight. + * Add display rotation attribute. + * Handle 24bpp host displays. + */ + + +#include "qemu/osdep.h" +#include "ui/console.h" +#include "ui/pixel_ops.h" +#include "hw/ssi/ssi.h" +#include "hw/qdev-properties.h" +#include "hw/ssi/ssi.h" +#include "qemu/log.h" + +#define NUM_ROWS 168 +#define NUM_COLS 144 // 18 bytes +#define NUM_COL_BYTES (NUM_COLS / 8) + +typedef enum { + COMMAND, + LINENO, + DATA, + TRAILER +} xfer_state_t; + +typedef struct { + SSISlave ssidev; + QemuConsole *con; + bool redraw; + uint8_t framebuffer[NUM_ROWS * NUM_COL_BYTES]; + int fbindex; + xfer_state_t state; + + bool backlight_enabled; + float brightness; + + bool vibrate_on; + int vibrate_offset; + + bool power_on; + + /* Tintin display was installed 'upside-down'. + * Use the "rotate_display" property to flip it. + */ + bool rotate_display; +} lcd_state; + +static uint8_t +bitswap(uint8_t val) +{ + return ((val * 0x0802LU & 0x22110LU) | (val * 0x8020LU & 0x88440LU)) * 0x10101LU >> 16; +} + +static uint32_t +sm_lcd_transfer(SSISlave *dev, uint32_t data) +{ + lcd_state *s = FROM_SSI_SLAVE(lcd_state, dev); + /* XXX QEMU's SPI infrastructure is implicitly MSB-first */ + data = bitswap(data); + + switch(s->state) { + case COMMAND: + data &= 0xfd; /* Mask VCOM bit */ + switch(data) { + case 0x01: /* Write Line */ + s->state = LINENO; + break; + case 0x04: /* Clear Screen */ + memset(s->framebuffer, 0, sizeof(*s->framebuffer)); + s->redraw = true; + break; + case 0x00: /* Toggle VCOM */ + break; + default: + /* Simulate confused display controller. */ + memset(s->framebuffer, 0x55, sizeof(*s->framebuffer)); + s->redraw = true; + break; + } + break; + case LINENO: + if (data == 0) { + s->state = COMMAND; + } else { + s->fbindex = (data - 1) * NUM_COL_BYTES; + s->state = DATA; + } + break; + case DATA: + s->framebuffer[s->fbindex++] = data; + if (s->fbindex % NUM_COL_BYTES == 0) { + s->state = TRAILER; + } + break; + case TRAILER: + if (data != 0) { + qemu_log_mask(LOG_GUEST_ERROR, + "ls013 memory lcd received non-zero data in TRAILER\n"); + } + s->state = LINENO; + s->redraw = true; + break; + } + return 0; +} + +static void sm_lcd_update_display(void *arg) +{ + lcd_state *s = arg; + + uint8_t *d; + uint32_t colour_on, colour_off, colour; + int x, y, bpp; + + DisplaySurface *surface = qemu_console_surface(s->con); + bpp = surface_bits_per_pixel(surface); + d = surface_data(surface); + + + // If vibrate is on, simply jiggle the display + if (s->vibrate_on) { + if (s->vibrate_offset == 0) { + s->vibrate_offset = 2; + } + int bytes_per_pixel; + switch (bpp) { + case 8: + bytes_per_pixel = 1; + break; + case 15: + case 16: + bytes_per_pixel = 2; + break; + case 32: + bytes_per_pixel = 4; + break; + default: + abort(); + } + int total_bytes = NUM_ROWS * NUM_COLS * bytes_per_pixel + - abs(s->vibrate_offset) * bytes_per_pixel; + if (s->vibrate_offset > 0) { + memmove(d, d + s->vibrate_offset * bytes_per_pixel, total_bytes); + } else { + memmove(d - s->vibrate_offset * bytes_per_pixel, d, total_bytes); + } + s->vibrate_offset *= -1; + dpy_gfx_update(s->con, 0, 0, NUM_COLS, NUM_ROWS); + return; + } + + if (!s->redraw) { + return; + } + + // Adjust the white level to compensate for the set brightness. + // brightness = 0: 255 in maps to 170 out + // brightness = 1.0: 255 in maps to 255 out + float brightness = s->backlight_enabled ? s->brightness : 0.0; + int max_val = 170 + (255 - 170) * brightness; + + /* set colours according to bpp */ + switch (bpp) { + case 8: + colour_on = rgb_to_pixel8(max_val, max_val, max_val); + colour_off = rgb_to_pixel8(0x00, 0x00, 0x00); + break; + case 15: + colour_on = rgb_to_pixel15(max_val, max_val, max_val); + colour_off = rgb_to_pixel15(0x00, 0x00, 0x00); + break; + case 16: + colour_on = rgb_to_pixel16(max_val, max_val, max_val); + colour_off = rgb_to_pixel16(0x00, 0x00, 0x00); + case 24: + colour_on = rgb_to_pixel24(max_val, max_val, max_val); + colour_off = rgb_to_pixel24(0x00, 0x00, 0x00); + break; + case 32: + colour_on = rgb_to_pixel32(max_val, max_val, max_val); + colour_off = rgb_to_pixel32(0x00, 0x00, 0x00); + break; + default: + return; + } + + for (y = 0; y < NUM_ROWS; y++) { + for (x = 0; x < NUM_COLS; x++) { + /* Rotate the display if necessary */ + int xr = (s->rotate_display) ? NUM_COLS - 1 - x : x; + int yr = (s->rotate_display) ? NUM_ROWS - 1 - y : y; + bool on = s->framebuffer[yr * NUM_COL_BYTES + xr / 8] & 1 << (xr % 8); + colour = on ? colour_on : colour_off; + switch(bpp) { + case 8: + *((uint8_t *)d) = colour; + d++; + break; + case 15: + case 16: + *((uint16_t *)d) = colour; + d += 2; + break; + case 24: + abort(); + case 32: + *((uint32_t *)d) = colour; + d += 4; + break; + } + } + } + + dpy_gfx_update(s->con, 0, 0, NUM_COLS, NUM_ROWS); + s->redraw = false; +} + +static void sm_lcd_invalidate_display(void *arg) +{ + lcd_state *s = arg; + s->redraw = true; +} + + +// ----------------------------------------------------------------------------- +static void sm_lcd_backlight_enable_cb(void *opaque, int n, int level) +{ + lcd_state *s = (lcd_state *)opaque; + assert(n == 0); + + bool enable = (level != 0); + if (s->backlight_enabled != enable) { + s->backlight_enabled = enable; + s->redraw = true; + } +} + + +// ----------------------------------------------------------------------------- +// Set brightness, from 0 to 255 +static void sm_lcd_set_backlight_level_cb(void *opaque, int n, int level) +{ + lcd_state *s = (lcd_state *)opaque; + assert(n == 0); + + float bright_f = (float)level / 255; + + // Temp hack - the Pebble sets the PWM to 25% for max brightness + float new_setting = MIN(1.0, bright_f * 4); + if (new_setting != s->brightness) { + s->brightness = MIN(1.0, bright_f * 4); + if (s->backlight_enabled) { + s->redraw = true; + } + } +} + + +// ----------------------------------------------------------------------------- +static void sm_lcd_vibe_ctl(void *opaque, int n, int level) +{ + lcd_state *s = (lcd_state *)opaque; + assert(n == 0); + + s->vibrate_on = (level != 0); +} + +// ----------------------------------------------------------------------------- +static void sm_lcd_power_ctl(void *opaque, int n, int level) +{ + lcd_state *s = (lcd_state *)opaque; + assert(n == 0); + + if (!level && s->power_on) { + memset(&s->framebuffer, 0, sizeof(s->framebuffer)); + s->redraw = true; + s->power_on = false; + } + s->power_on = !!level; +} + + +static void sm_lcd_reset(DeviceState *dev) +{ + lcd_state *s = (lcd_state *)dev; + memset(&s->framebuffer, 0, sizeof(s->framebuffer)); + s->redraw = true; +} + + +// ----------------------------------------------------------------------------- +static const GraphicHwOps sm_lcd_ops = { + .gfx_update = sm_lcd_update_display, + .invalidate = sm_lcd_invalidate_display, +}; + +static void sm_lcd_init(SSISlave *dev, Error **pError) +{ + lcd_state *s = FROM_SSI_SLAVE(lcd_state, dev); + + s->brightness = 0.0; + + s->con = graphic_console_init(DEVICE(dev), 0, &sm_lcd_ops, s); + qemu_console_resize(s->con, NUM_COLS, NUM_ROWS); + + /* This callback informs us that brightness control is enabled */ + qdev_init_gpio_in_named(DEVICE(dev), sm_lcd_backlight_enable_cb, + "backlight_enable", 1); + + /* This callback informs us of the brightness level (from 0 to 255) */ + qdev_init_gpio_in_named(DEVICE(dev), sm_lcd_set_backlight_level_cb, + "backlight_level", 1); + + /* This callback informs us that the vibrate is on/orr */ + qdev_init_gpio_in_named(DEVICE(dev), sm_lcd_vibe_ctl, + "vibe_ctl", 1); + + /* This callback informs us that power is on/off */ + qdev_init_gpio_in_named(DEVICE(dev), sm_lcd_power_ctl, + "power_ctl", 1); +} + +static Property sm_lcd_init_properties[] = { + DEFINE_PROP_BOOL("rotate_display", lcd_state, rotate_display, true), + DEFINE_PROP_END_OF_LIST() +}; + +static void sm_lcd_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + SSISlaveClass *k = SSI_SLAVE_CLASS(klass); + + k->realize = sm_lcd_init; + k->transfer = sm_lcd_transfer; + k->cs_polarity = SSI_CS_LOW; + k->parent_class.reset = sm_lcd_reset; + device_class_set_props(dc, sm_lcd_init_properties); +} + +static const TypeInfo sm_lcd_info = { + .name = "sm-lcd", + .parent = TYPE_SSI_SLAVE, + .instance_size = sizeof(lcd_state), + .class_init = sm_lcd_class_init, +}; + +static void sm_lcd_register(void) +{ + type_register_static(&sm_lcd_info); +} + +type_init(sm_lcd_register); diff --git a/hw/display/pebble_snowy_display.c b/hw/display/pebble_snowy_display.c new file mode 100644 index 0000000000000..10d8e783c0d2f --- /dev/null +++ b/hw/display/pebble_snowy_display.c @@ -0,0 +1,2186 @@ +/*- + * Copyright (c) 2014 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/* + * 8-bit color display connected through SPI bus. The 8 bits are organized as (starting from MSB): + * 2 bits red, 2 bits green, 2 bits blue, 2 bits of 0. + * + * This display is used in the Pebble Snowy platform and actually represents an FPGA connected + * to a LPM012A220A display. The FPGA implements the SPI interface. + * + * Some example colors: + * black: 0x00 + * white: 0xFC + * red: 0xC0 + * green: 0x30 + * blue: 0x0C + * + * + * This device implements various versions of the FPGA programming, identified by the + * PDisplayCmdSet enum: + * + * PDISPLAY_CMD_SET_0: + * ------------------- + * This is used by the boot loader and has cmd IDs that tell the FPGA to display pre-canned + * images + * + * + * PDISPLAY_CMD_SET_1: + * ------------------- + * The display expects complete frames to be setn through the SPI bus, one column at a time + * starting from the left-most column, each column sent from bottom to top. The bits and bytes + * in each column are scrambled however and need to be unscrambled before placing them into the + * framebuffer. + */ + +#include + +#include "qemu/osdep.h" +#include "qemu-common.h" +#include "ui/console.h" +#include "ui/pixel_ops.h" +#include "hw/ssi.h" +#include "pebble_snowy_display.h" +#include "pebble_snowy_display_overlays.h" + +//#define DEBUG_PEBBLE_SNOWY_DISPLAY +#ifdef DEBUG_PEBBLE_SNOWY_DISPLAY +// NOTE: The usleep() helps the MacOS stdout from freezing when we have a lot of print out +#define DPRINTF(fmt, ...) \ + do { printf("PEBBLE_SNOWY_DISPLAY: " fmt , ## __VA_ARGS__); \ + usleep(1000); \ + } while (0) +#else +#define DPRINTF(fmt, ...) +#endif + + +// Colors +#define SNOWY_COLOR_BLACK 0 +#define SNOWY_COLOR_WHITE 0xFC +#define SNOWY_COLOR_RED 0xC0 +#define SNOWY_COLOR_GREEN 0x30 +#define SNOWY_COLOR_BLUE 0x0C + + +/* Various states the Display can be in */ +typedef enum { + PSDISPLAYSTATE_PROGRAMMING, + PSDISPLAYSTATE_ACCEPTING_CMD, + PSDISPLAYSTATE_ACCEPTING_PARAM, + PSDISPLAYSTATE_ACCEPTING_SCENE_BYTE, + PSDISPLAYSTATE_ACCEPTING_FRAME_DATA, // used in PSDISPLAY_CMD_SET_1 command set +} PSDisplayState; + +#ifdef DEBUG_PEBBLE_SNOWY_DISPLAY +static const char *s_display_state[] = { + "PSDISPLAYSTATE_PROGRAMMING", + "PSDISPLAYSTATE_ACCEPTING_CMD", + "PSDISPLAYSTATE_ACCEPTING_PARAM", + "PSDISPLAYSTATE_ACCEPTING_SCENE_BYTE", + "PSDISPLAYSTATE_ACCEPTING_FRAME_DATA" +}; +#endif + +// Which command set the FPGA is implementing +typedef enum { + PSDISPLAY_CMD_SET_UNKNOWN, + PSDISPLAY_CMD_SET_0, // Boot ROM built on Dec 10, 2014 + PSDISPLAY_CMD_SET_1, // FW ROM built on Jan 9, 2015 +} PDisplayCmdSet; + + +/* Commands for PSDISPLAY_CMD_SET_0. We accept these while in the + * PSDISPLAYSTATE_ACCEPTING_CMD state. These are implemented in the first boot loader + * ROM built Dec 2014 */ +typedef enum { + PSDISPLAYCMD0_NULL = 0, + PSDISPLAYCMD0_SET_PARAMETER = 1, + PSDISPLAYCMD0_DISPLAY_OFF = 2, + PSDISPLAYCMD0_DISPLAY_ON = 3, + PSDISPLAYCMD0_DRAW_SCENE = 4 +} PDisplayCmd0; + + +/* Commands for PSDISPLAY_CMD_SET_1. We accept these while in the + * PSDISPLAYSTATE_ACCEPTING_CMD state. These are implemented in the firmware + * buit Jan 2015 */ +typedef enum { + PSDISPLAYCMD1_FRAME_BEGIN = 5, +} PDisplayCmd1; + + +// Scene numbers put into cmd_parameter and used by the PSDISPLAYCMD0_DRAW_SCENE command. +typedef enum { + PSDISPLAYSCENE_BLACK = 0, + PSDISPLAYSCENE_SPLASH = 1, // splash screen + PSDISPLAYSCENE_UPDATE = 2, // firmware update + PSDISPLAYSCENE_ERROR = 3 // display error code +} PDisplayScene; + + +typedef struct { + SSISlave ssidev; + + // ----------------------------------------------------------------- + // Properties + union { + void *vdone_output; + qemu_irq done_output; + }; + + // This output line gets asserted (low) when we are done processing a drawing command. + // It is generally to an IRQ + union { + void *vintn_output; + qemu_irq intn_output; + }; + + uint32_t num_rows; + uint32_t num_cols; + int32_t num_border_rows; + int32_t num_border_cols; + uint8_t row_major; + uint8_t row_inverted; + uint8_t col_inverted; + uint8_t round_mask; + + // ------------------------------------------------------------------- + // Other state variables + QemuConsole *con; + bool redraw; + uint32_t bytes_per_row; + uint32_t bytes_per_frame; + uint8_t *framebuffer; + uint8_t *framebuffer_copy; + int col_index; + int row_index; + bool backlight_enabled; + float brightness; + bool power_on; + + /* State variables */ + PSDisplayState state; + uint8_t cmd; + uint32_t parameter; + uint32_t parameter_byte_offset; + PDisplayScene scene; + + bool sclk_value; + bool cs_value; // low means asserted + + bool vibrate_on; + int vibrate_offset; + + /* We capture the first 256 bytes of the programming and inspect it to try and figure + * out which command set to expect */ + uint8_t prog_header[256]; + uint32_t prog_byte_offset; + + // Which command set we are emulating + PDisplayCmdSet cmd_set; + +} PSDisplayGlobals; + +static uint8_t *get_pebble_logo_4colors_image(int *width, int *height); +static uint8_t *get_dead_face_image(int *width, int *height); +static uint8_t *get_small_pebble_logo_image(int *width, int *height); +static uint8_t *get_url_image(int *width, int *height); +static uint8_t *get_pixel_mask(void); + +static uint32_t display_bytes = 0; +static uint32_t frameno = 0; + +static void ps_set_state(PSDisplayGlobals *s, PSDisplayState new_state) { + DPRINTF("state change from %u (%s) to %u (%s) frame: %u - bytes: %u\n", + s->state, s_display_state[s->state], new_state, s_display_state[new_state], frameno, display_bytes); + s->state = new_state; +} + +// ----------------------------------------------------------------------------- +static void ps_set_redraw(PSDisplayGlobals *s) { + s->redraw = true; + memmove(s->framebuffer_copy, s->framebuffer, s->bytes_per_frame); +} + + +// ----------------------------------------------------------------------------- +static void ps_display_set_pixel(PSDisplayGlobals *s, uint32_t x, uint32_t y, + uint8_t pixel_byte) { + s->framebuffer[y * s->bytes_per_row + x] = pixel_byte; +} + + +// ----------------------------------------------------------------------------- +// Draw an 8-bits per pixel bitmap to the framebuffer +static void ps_display_draw_8bpp_bitmap(PSDisplayGlobals *s, uint8_t *bytes, + uint32_t x_offset, uint32_t y_offset, uint32_t width, uint32_t height) +{ + uint32_t pixels = width * height; + + int i; + for (i = 0; i < pixels; ++i) { + uint8_t value = bytes[i]; + uint8_t x = x_offset + (i % width); + uint8_t y = y_offset + (i / width); + ps_display_set_pixel(s, x, y, value); + } +} + +/* +// ----------------------------------------------------------------------------- +// Draw a 1-bit per pixel bitmap to the framebuffer +static void ps_display_draw_1bpp_bitmap(PSDisplayGlobals *s, uint8_t *bits, + uint32_t x_offset, uint32_t y_offset, uint32_t width, uint32_t height) { + uint32_t pixels = width * height; + + for (int i = 0; i < pixels; ++i) { + bool value = bits[i / 8] & (1 << (i % 8)); + uint8_t x = x_offset + (i % width); + uint8_t y = y_offset + (i / width); + if (value) { + ps_display_set_pixel(s, x, y, 0xFC); + } else { + ps_display_set_pixel(s, x, y, 0x00); + } + } +} +*/ + +/* ----------------------------------------------------------------------------- + Scan through the first part of the programming data and try and determine which + command set the FPGA is implementing. Here is an example of the data comprising + the programming for PSDISPLAY_CMD_SET_BOOT_0: + + 39F0: FF 00 4C 61 74 74 69 63 65 00 69 43 45 63 pG..Lattice.iCEc + 3A00: 75 62 65 32 20 32 30 31 34 2E 30 38 2E 32 36 37 ube2 2014.08.267 + 3A10: 32 33 00 50 61 72 74 3A 20 69 43 45 34 30 4C 50 23.Part: iCE40LP + 3A20: 31 4B 2D 43 4D 33 36 00 44 61 74 65 3A 20 44 65 1K-CM36.Date: De + 3A30: 63 20 31 30 20 32 30 31 34 20 30 38 3A 33 30 3A c 10 2014 08:30: + 3A40: 00 FF 31 38 00 7E AA 99 7E 51 00 01 05 92 00 20 ..18.~..~Q..... + 3A50: 62 01 4B 72 00 90 82 00 00 11 00 01 01 00 00 00 b.Kr........... */ +static void ps_display_determine_command_set(PSDisplayGlobals *s) +{ + // Table of programming header dates and command sets + typedef struct { + const char *date_str; + PDisplayCmdSet cmd_set; + } CommandSetInfo; + static const CommandSetInfo cmd_sets[] = { + {"Date: Dec 10 2014 08:30", PSDISPLAY_CMD_SET_0}, + {"Date: Jan 9 2015 10:49:47", PSDISPLAY_CMD_SET_1}, + {"Date: Jan 30 2015 15:11:", PSDISPLAY_CMD_SET_1}, + {"Date: Jan 30 2015 15:10:", PSDISPLAY_CMD_SET_1}, + }; + + + // Make sure prog_header is null terminated + if (s->prog_byte_offset >= sizeof(s->prog_header)) { + s->prog_byte_offset = sizeof(s->prog_header) - 1; + } + s->prog_header[s->prog_byte_offset] = 0; + + // Default one to use + s->cmd_set = PSDISPLAY_CMD_SET_1; + + // Skip first two bytes which contain 0xFF 00 + int i; + for (i=2; iprog_byte_offset; i++) { + const char *str_p = (const char *)s->prog_header + i; + + DPRINTF("%s: found '%s' string in programming header\n", __func__, str_p); + + // Look for a string that starts with "Date:" + if (!strncmp(str_p, "Date:", 5)) { + int n_cmd_sets = sizeof(cmd_sets) / sizeof(cmd_sets[0]); + int n; + for (n=0; ncmd_set = cmd_sets[n].cmd_set; + DPRINTF("%s: determined command set as %d\n", __func__, s->cmd_set); + return; + } + } + + // We didn't find the command set, bail + DPRINTF("PEBBLE_SNOWY_DISPLAY: Unknown FPGA programming with a date" + " stamp of '%s'. Defaulting to command set %d\n", str_p, s->cmd_set); + return; + } else { + // Skip this string + i += strlen(str_p); + } + + } + + // Couldn't find the "Date:" string + DPRINTF("PEBBLE_SNOWY_DISPLAY: Error parsing FPGA programming data to" + " determine command set. Defaulting to command set %d\n", s->cmd_set); + return; +} + + +// ----------------------------------------------------------------------------- +static void ps_display_reset_state(PSDisplayGlobals *s, bool assert_done) +{ + // If we are resetting because we done with the previous command, assert done + if (assert_done) { + DPRINTF("Asserting done interrupt\n"); + qemu_set_irq(s->intn_output, false); + } + + DPRINTF("Resetting state to accept command\n"); + ps_set_state(s, PSDISPLAYSTATE_ACCEPTING_CMD); + s->parameter_byte_offset = 0; +} + +// ----------------------------------------------------------------------------- +// Implements command PSDISPLAY_CMD_SET_0, used in the first boot ROM, built Dec 2014 +static void ps_display_execute_current_cmd_set0(PSDisplayGlobals *s) +{ + int width, height, x_offset, y_offset; + uint8_t *pixels; + + DPRINTF("ps_display_execute_current_cmd_set0: cmd: %u -- cs: %s\n", s->cmd, s->cs_value ? "Not CS" : "CS"); + switch (s->cmd) { + case PSDISPLAYCMD0_NULL: + DPRINTF("Executing command: NULL\n"); + ps_display_reset_state(s, true /*assert_done*/); + break; + + case PSDISPLAYCMD0_SET_PARAMETER: + DPRINTF("Executing command: SET_PARAMETER\n"); + ps_set_state(s, PSDISPLAYSTATE_ACCEPTING_PARAM); + s->parameter_byte_offset = 0; + break; + + case PSDISPLAYCMD0_DISPLAY_OFF: + DPRINTF("Executing command: DISPLAY_OFF\n"); + ps_display_reset_state(s, true /*assert_done*/); + break; + + case PSDISPLAYCMD0_DISPLAY_ON: + DPRINTF("Executing command: DISPLAY_ON\n"); + ps_display_reset_state(s, true /*assert_done*/); + break; + + case PSDISPLAYCMD0_DRAW_SCENE: + if (s->state == PSDISPLAYSTATE_ACCEPTING_CMD) { + ps_set_state(s, PSDISPLAYSTATE_ACCEPTING_SCENE_BYTE); + } else if (s->state == PSDISPLAYSTATE_ACCEPTING_SCENE_BYTE) { + DPRINTF("Executing command: DRAW_SCENE: %d\n", s->scene); + switch (s->scene) { + case PSDISPLAYSCENE_BLACK: + memset(s->framebuffer, SNOWY_COLOR_BLACK, s->bytes_per_frame); + break; + case PSDISPLAYSCENE_SPLASH: + pixels = get_pebble_logo_4colors_image(&width, &height); + x_offset = (s->num_cols - width)/2; + y_offset = (s->num_rows - height)/2; + ps_display_draw_8bpp_bitmap(s, pixels, x_offset, y_offset, width, height); + break; + case PSDISPLAYSCENE_UPDATE: + // NOTE: We do not yet support showing the progress bar, which should show + // the progress percent as indicated by s->parameter + pixels = get_small_pebble_logo_image(&width, &height); + x_offset = (s->num_cols - width)/2; + y_offset = s->num_rows - height - 88; + ps_display_draw_8bpp_bitmap(s, pixels, x_offset, y_offset, width, height); + break; + case PSDISPLAYSCENE_ERROR: + // NOTE: We do not yet support showing the error code, which should show + // the error in hex as indicated by s->parameter + pixels = get_dead_face_image(&width, &height); + x_offset = (s->num_cols - width)/2; + y_offset = s->num_rows - height - 92; + ps_display_draw_8bpp_bitmap(s, pixels, x_offset, y_offset, width, height); + + pixels = get_url_image(&width, &height); + x_offset = (s->num_cols - width)/2; + y_offset = (s->num_rows - height - 10); + ps_display_draw_8bpp_bitmap(s, pixels, x_offset, y_offset, width, height); + break; + default: + DPRINTF("PEBBLE_SNOWY_DISPLAY: Unsupported scene: %d\n", s->scene); + break; + } + ps_display_reset_state(s, true /*assert_done*/); + ps_set_redraw(s); + } else { + DPRINTF("PEBBLE_SNOWY_DISPLAY: Tried to execute draw scene in " + "wrong state: %d\n", s->state); + ps_display_reset_state(s, true /*assert_done*/); + } + break; + + default: + DPRINTF("PEBBLE_SNOWY_DISPLAY: Unsupported cmd: %d\n", s->cmd); + ps_display_reset_state(s, true /*assert_done*/); + break; + } +} + +// ----------------------------------------------------------------------------- +// Implements command set PSDISPLAY_CMD_SET_1, used in the firmware, built Jan 2015 +static void ps_display_execute_current_cmd_set1(PSDisplayGlobals *s) +{ + + DPRINTF("ps_display_execute_current_cmd_set1: cmd: %u -- cs: %s\n", s->cmd, s->cs_value ? "Not CS" : "CS"); + switch (s->cmd) { + case PSDISPLAYCMD1_FRAME_BEGIN: + DPRINTF("Executing command: FRAME_BEGIN\n"); + if (s->row_major) { + if (s->row_inverted) { + // Expect to be sent rows, bottom to top + s->row_index = s->num_rows - s->num_border_rows - 1; + s->col_index = s->num_border_cols; + } else { + // Expect to be sent rows, top to bottom + s->row_index = s->num_border_rows; + s->col_index = s->num_border_cols; + } + } else { + // Expect to be sent columns, left to right + s->row_index = s->num_rows - s->num_border_rows - 1; + s->col_index = s->num_border_cols; + } + ps_set_state(s, PSDISPLAYSTATE_ACCEPTING_FRAME_DATA); + // Just say we are done immediately. We can accept more data right away. + qemu_set_irq(s->intn_output, false); + break; + + default: + DPRINTF("PEBBLE_SNOWY_DISPLAY: Unsupported cmd: %d\n", s->cmd); + ps_display_reset_state(s, true /*assert_done*/); + break; + } +} + + +// ----------------------------------------------------------------------------- +static void ps_display_cmd_set_2_unscramble_column(PSDisplayGlobals *s, uint32_t col_index) +{ + int row_idx; + const int line_bytes = s->num_rows - 2 * s->num_border_rows; + uint8_t col_buffer[line_bytes]; + + // Copy the column into temp buffer first, without border pixels + for (row_idx = 0; row_idx < line_bytes; row_idx++) { + col_buffer[row_idx] = s->framebuffer[(row_idx + s->num_border_rows) * s->bytes_per_row + + col_index]; + } + + // Unscramble the bytes in the scanline. + // + // In the desription below, the bits in the first pixel in a column are + // identified as follows: + // r0_msb r0_lsb g0_msb g0_lsb b0_msb b0_lsb 0 0 + // The second pixel: + // r1_msb r1_lsb g1_msb g1_lsb b1_msb b1_lsb 0 0 + // + // Each scan line contains N bytes of data for the N pixels. + // [LSB0 LSB2 .................LSBN MSB0 MSB2 ....................MSBN] + // + // LSB0 contains the following bits: + // 0 0 r1_lsb r0_lsb g1_lsb g0_lsb b1_lsb b0_lsb + // MSB0 contains the following bits: + // 0 0 r1_msb r0_msb g1_msb g0_msb b1_msb b0_msb + + // LSB2 contains the following bits: + // 0 0 r3_lsb r2_lsb g3_lsb g2_lsb b3_lsb b2_lsb + // MSB2 contains the following bits: + // 0 0 r3_msb r2_msb g3_msb g2_msb b3_msb b2_msb + // + uint8_t ms_bits, ls_bits; + for (row_idx = 0; row_idx < line_bytes; row_idx += 2) { + ls_bits = col_buffer[row_idx/2]; + ms_bits = col_buffer[row_idx/2 + line_bytes/2]; + + // Form the 2 pixels whose data is found in ls_bits and ms_bits + uint8_t pixel_0, pixel_1; + pixel_0 = ((ms_bits & 0b00010101) << 1) | (ls_bits & 0b00010101); + pixel_0 <<= 2; + pixel_1 = (ms_bits & 0b00101010) | ((ls_bits & 0b00101010) >> 1); + pixel_1 <<= 2; + + // Write them to the frame buffer + s->framebuffer[(row_idx + s->num_border_rows) * s->bytes_per_row + + col_index] = pixel_0; + s->framebuffer[(row_idx + s->num_border_rows + 1) * s->bytes_per_row + + col_index] = pixel_1; + } +} + + +// ----------------------------------------------------------------------------- +static void ps_display_cmd_set_2_unscramble_row(PSDisplayGlobals *s, uint32_t row_index) +{ + const int line_bytes = s->num_cols - 2 * s->num_border_cols; + uint8_t row_buffer[line_bytes]; + uint8_t *fb = &s->framebuffer[row_index * s->bytes_per_row + s->num_border_cols]; + + // Copy the row into temp buffer first, without border pixels + memcpy(row_buffer, fb, line_bytes); + + // Unscramble the bytes in the scanline. + // + // In the desription below, the bits in the first pixel in a column are + // identified as follows: + // r0_msb r0_lsb g0_msb g0_lsb b0_msb b0_lsb 0 0 + // The second pixel: + // r1_msb r1_lsb g1_msb g1_lsb b1_msb b1_lsb 0 0 + // + // Each scan line contains N bytes of data for the N pixels. + // [LSB0 LSB2 .................LSBN MSB0 MSB2 ....................MSBN] + // + // LSB0 contains the following bits: + // 0 0 r1_lsb r0_lsb g1_lsb g0_lsb b1_lsb b0_lsb + // MSB0 contains the following bits: + // 0 0 r1_msb r0_msb g1_msb g0_msb b1_msb b0_msb + + // LSB2 contains the following bits: + // 0 0 r3_lsb r2_lsb g3_lsb g2_lsb b3_lsb b2_lsb + // MSB2 contains the following bits: + // 0 0 r3_msb r2_msb g3_msb g2_msb b3_msb b2_msb + // + for (int col_idx = 0; col_idx < line_bytes; col_idx += 2) { + const uint8_t ms_bits = row_buffer[col_idx / 2]; + const uint8_t ls_bits = row_buffer[col_idx / 2 + line_bytes / 2]; + + // Form the 2 pixels whose data is found in ls_bits and ms_bits + uint8_t pixel_0, pixel_1; + pixel_0 = ((ms_bits & 0b00010101) << 1) | (ls_bits & 0b00010101); + pixel_0 <<= 2; + pixel_1 = (ms_bits & 0b00101010) | ((ls_bits & 0b00101010) >> 1); + pixel_1 <<= 2; + + // Write them to the frame buffer + if (s->col_inverted) { + fb[line_bytes - col_idx - 2] = pixel_0; + fb[line_bytes - col_idx - 1] = pixel_1; + } else { + fb[col_idx] = pixel_1; + fb[col_idx + 1] = pixel_0; + } + } +} + +static bool newdisp = true; + +// ----------------------------------------------------------------------------- +static uint32_t ps_display_transfer(SSISlave *dev, uint32_t data) +{ + ++display_bytes; + PSDisplayGlobals *s = FROM_SSI_SLAVE(PSDisplayGlobals, dev); + uint32_t data_byte = data & 0x00FF; + + //DPRINTF("rcv byte: 0x%02x\n", data_byte); + + /* Ignore incoming data if our chip select is not asserted */ + if (s->cs_value) { + if (s->state != PSDISPLAYSTATE_PROGRAMMING) { + DPRINTF("PEBBLE_SNOWY_DISPLAY: received data without CS asserted"); + } + return 0; + } + + switch(s->state) { + case PSDISPLAYSTATE_PROGRAMMING: + // Capture the start of the programming data + if (s->prog_byte_offset < sizeof(s->prog_header)) { + s->prog_header[s->prog_byte_offset++] = data_byte; + } + break; + + case PSDISPLAYSTATE_ACCEPTING_CMD: + s->cmd = data_byte; + DPRINTF("received command %d, deasserting done interrupt\n", s->cmd); + + // Start of a command. Deassert done interrupt, it will get asserted again when + // ps_display_reset_state() is called at the end of the command + qemu_set_irq(s->intn_output, true); + + if (s->cmd_set == PSDISPLAY_CMD_SET_0) { + ps_display_execute_current_cmd_set0(s); + } else if (s->cmd_set == PSDISPLAY_CMD_SET_1) { + ps_display_execute_current_cmd_set1(s); + } else { + DPRINTF("Unimplemeneted command set\n"); + abort(); + } + break; + + case PSDISPLAYSTATE_ACCEPTING_PARAM: + + DPRINTF("received param byte %d\n", data_byte); + /* Params are sent low byte first */ + if (s->parameter_byte_offset == 0) { + s->parameter = (s->parameter & 0xFFFFFF00) | data_byte; + } else if (s->parameter_byte_offset == 1) { + s->parameter = (s->parameter & 0xFFFF00FF) | (data_byte << 8); + } else if (s->parameter_byte_offset == 2) { + s->parameter = (s->parameter & 0xFF00FFFF) | (data_byte << 16); + } else if (s->parameter_byte_offset == 3) { + s->parameter = (s->parameter & 0x00FFFFFF) | (data_byte << 24); + } else { + DPRINTF("PEBBLE_SNOWY_DISPLAY: received more than 4 bytes of parameter"); + } + + s->parameter_byte_offset++; + if (s->parameter_byte_offset >= 4) { + DPRINTF("assembled complete param value of %d\n", s->parameter); + ps_display_reset_state(s, true /*assert_done*/); + } + break; + + case PSDISPLAYSTATE_ACCEPTING_SCENE_BYTE: + s->scene = data_byte; + DPRINTF("received scene ID: %d\n", s->scene); + ps_display_execute_current_cmd_set0(s); + break; + + case PSDISPLAYSTATE_ACCEPTING_FRAME_DATA: + if (newdisp) { + DPRINTF("New frame? -- 0x%02X, row %d, col %d -- bytes: %u -- cs: %s\n", data, s->row_index, s->col_index, display_bytes, s->cs_value ? "Not CS" : "CS"); + newdisp = false; + } + s->framebuffer[s->row_index * s->bytes_per_row + s->col_index] = data; + if (s->row_major) { + // We get sent one row at a time + s->col_index++; + if (s->col_index >= s->num_cols - s->num_border_cols) { + // Reached end of row, unscramble the one we just received and go onto the + // next row + ps_display_cmd_set_2_unscramble_row(s, s->row_index); + s->col_index = s->num_border_cols; + bool got_last_byte; + if (s->row_inverted) { + s->row_index--; + got_last_byte = (s->row_index < s->num_border_rows); + } else { + s->row_index++; + got_last_byte = (s->row_index >= s->num_rows - s->num_border_rows); + } + if (got_last_byte) { + DPRINTF("Got last byte in frame (row) row %d, col %d -- bytes: %u\n", + s->row_index, s->col_index, display_bytes); + ps_set_state(s, PSDISPLAYSTATE_ACCEPTING_CMD); + ps_set_redraw(s); + newdisp = true; + ++frameno; + } + } + } else { + // We get sent one column at a time + s->row_index--; + if (s->row_index < s->num_border_rows) { + // Reached top of column, unscramble the one we just received and go onto the + // next column + ps_display_cmd_set_2_unscramble_column(s, s->col_index); + s->row_index = s->num_rows - s->num_border_rows - 1; + s->col_index += 1; + if (s->col_index >= s->num_cols - s->num_border_cols) { + DPRINTF("Got last byte in frame (col) row %d, col %d\n", s->row_index, s->col_index); + ps_set_state(s, PSDISPLAYSTATE_ACCEPTING_CMD); + ps_set_redraw(s); + newdisp = true; + ++frameno; + } + } + } + break; + } + return 0; +} + + +// ----------------------------------------------------------------------------- +// This function maps an 8 bit value from the frame buffer into red, green, and blue +// components +static PSDisplayPixelColor ps_display_get_rgb(PSDisplayGlobals *s, uint8_t pixel_value) { + + PSDisplayPixelColor c; + c.red = ((pixel_value & 0xC0) >> 6) * 255 / 3; + c.green = ((pixel_value & 0x30) >> 4) * 255 / 3; + c.blue = ((pixel_value & 0x0C) >> 2) * 255 / 3; + + // Adjust the pixel RGB to compensate for the set brightness. + // brightness = 0: 255 in maps to 170 out + // brightness = 1.0: 255 in maps to 255 out + float brightness = s->backlight_enabled ? s->brightness : 0.0; + int max_val = 170 + (255 - 170) * brightness; + c.red = (int)c.red * max_val/255; + c.green = (int)c.green * max_val/255; + c.blue = (int)c.blue * max_val/255; + + return c; + + /* + static PSDisplayPixelColors[256] = { + {0, 0, 0 }, + }; + + return PSDisplayPixelColors[pixel_value]; + */ +} + + +// ----------------------------------------------------------------------------- +static void ps_display_update_display(void *arg) +{ + PSDisplayGlobals *s = arg; + uint8_t *d; + int x, y, bpp, rgb_value; + + DisplaySurface *surface = qemu_console_surface(s->con); + bpp = surface_bits_per_pixel(surface); + d = surface_data(surface); + + + // If vibrate is on, simply jiggle the display + if (s->vibrate_on) { + if (s->vibrate_offset == 0) { + s->vibrate_offset = 2; + } + int bytes_per_pixel; + switch (bpp) { + case 8: + bytes_per_pixel = 1; + break; + case 15: + case 16: + bytes_per_pixel = 2; + break; + case 32: + bytes_per_pixel = 4; + break; + default: + abort(); + } + int total_bytes = s->num_rows * s->num_cols * bytes_per_pixel + - abs(s->vibrate_offset) * bytes_per_pixel; + if (s->vibrate_offset > 0) { + memmove(d, d + s->vibrate_offset * bytes_per_pixel, total_bytes); + } else { + memmove(d - s->vibrate_offset * bytes_per_pixel, d, total_bytes); + } + s->vibrate_offset *= -1; + dpy_gfx_update(s->con, 0, 0, s->num_cols, s->num_rows); + return; + } + + if (!s->redraw) { + return; + } + + const bool is_spalding = s->round_mask; + const PSDisplayPixelColorWithAlpha *overlay = is_spalding ? g_spalding_overlay : NULL; + uint8_t *pixel_mask = get_pixel_mask(); + for (y = 0; y < s->num_rows; y++) { + for (x = 0; x < s->num_cols; x++) { + uint32_t offset = y * s->bytes_per_row + x; + uint8_t pixel = s->framebuffer_copy[offset]; + if (s->round_mask) { + // Compute the vertical distance from top or bottom edge, whichever is closest + int vert_distance = y; + if (vert_distance >= s->num_rows/2) { + vert_distance = s->num_rows - 1 - y ; + } + int mask_width = pixel_mask[vert_distance]; + if (x < mask_width || x >= s->num_cols - mask_width) { + pixel = 0; + } + } + + PSDisplayPixelColor color = ps_display_get_rgb(s, pixel); + if (overlay) { + const PSDisplayPixelColorWithAlpha blend_color = overlay[offset]; + const int32_t factor_over = blend_color.alpha; + const int32_t factor_dest = 255 - blend_color.alpha; + color.red = MIN(255, (factor_over * blend_color.color.red + factor_dest * color.red) / 255); + color.green = MIN(255,(factor_over * blend_color.color.green + factor_dest * color.green) / 255); + color.blue = MIN(255, (factor_over * blend_color.color.blue + factor_dest * color.blue) / 255); + } + + switch(bpp) { + case 8: + *((uint8_t *)d) = rgb_to_pixel8(color.red, color.green, color.blue); + d++; + break; + case 15: + *((uint16_t *)d) = rgb_to_pixel15(color.red, color.green, color.blue);; + d += 2; + break; + case 16: + *((uint16_t *)d) = rgb_to_pixel16(color.red, color.green, color.blue);; + d += 2; + break; + case 24: + rgb_value = rgb_to_pixel24(color.red, color.green, color.blue); + *d++ = (rgb_value & 0x00FF0000) >> 16; + *d++ = (rgb_value & 0x0000FF00) >> 8; + *d++ = (rgb_value & 0x000000FF); + break; + case 32: + *((uint32_t *)d) = rgb_to_pixel32(color.red, color.green, color.blue);; + d += 4; + break; + } + } + } + + dpy_gfx_update(s->con, 0, 0, s->num_cols, s->num_rows); + s->redraw = false; +} + +// ----------------------------------------------------------------------------- +static int ps_display_set_cs(SSISlave *dev, bool value) +{ + PSDisplayGlobals *s = FROM_SSI_SLAVE(PSDisplayGlobals, dev); + + DPRINTF("CS changed to %d\n", value); + s->cs_value = value; + + // When CS goes up (unasserted), we are done programming + if (value && s->state == PSDISPLAYSTATE_PROGRAMMING) { + DPRINTF("Exiting programming mode\n"); + ps_display_reset_state(s, true /*assert_done*/); + + // Try and figure out which command set the FPGA expects by parsing the + // programming data + ps_display_determine_command_set(s); + } + + return 0; +} + +// ----------------------------------------------------------------------------- +static void ps_display_set_reset_pin_cb(void *opaque, int n, int level) +{ + PSDisplayGlobals *s = FROM_SSI_SLAVE(PSDisplayGlobals, opaque); + bool value = !!level; + assert(n == 0); + + DPRINTF("RESET changed to %d\n", value); + qemu_set_irq(s->done_output, false); + + // When reset goes high, sample the CS input to see what state we should be in + // if CS is low, expect new FPGA programming to arrive + // if CS is high, assume we will be using the bootloader configuration + if (value) { + // After a reset, we are not done. De-assert our interrupt (asserted low). + qemu_set_irq(s->intn_output, true); + + if (s->cs_value) { + // Assume we are using the bootloader configuration + s->cmd_set = PSDISPLAY_CMD_SET_0; + ps_display_reset_state(s, true); + } else { + ps_set_state(s, PSDISPLAYSTATE_PROGRAMMING); + s->prog_byte_offset = 0; + } + } +} + +// ----------------------------------------------------------------------------- +static void ps_display_set_sclk_pin_cb(void *opaque, int n, int level) +{ + PSDisplayGlobals *s = FROM_SSI_SLAVE(PSDisplayGlobals, opaque); + assert(n == 0); + + /* Save new value */ + s->sclk_value = !!level; +} + + +// ----------------------------------------------------------------------------- +static void ps_display_invalidate_display(void *arg) +{ + PSDisplayGlobals *s = arg; + s->redraw = true; +} + +// ----------------------------------------------------------------------------- +static const GraphicHwOps ps_display_ops = +{ + .gfx_update = ps_display_update_display, + .invalidate = ps_display_invalidate_display, +}; + + +// ----------------------------------------------------------------------------- +static void ps_display_backlight_enable_cb(void *opaque, int n, int level) +{ + PSDisplayGlobals *s = (PSDisplayGlobals *)opaque; + assert(n == 0); + + bool enable = (level != 0); + if (s->backlight_enabled != enable) { + s->backlight_enabled = enable; + s->redraw = true; + } +} + + +// ----------------------------------------------------------------------------- +// Set brightness, from 0 to 255 +static void ps_display_set_backlight_level_cb(void *opaque, int n, int level) +{ + PSDisplayGlobals *s = (PSDisplayGlobals *)opaque; + assert(n == 0); + + float bright_f = (float)level / 255; + + // Temp hack - the Pebble sets the PWM to 25% for max brightness + float new_setting = MIN(1.0, bright_f * 4); + if (new_setting != s->brightness) { + s->brightness = MIN(1.0, bright_f * 4); + if (s->backlight_enabled) { + s->redraw = true; + } + } +} + +// ----------------------------------------------------------------------------- +static void ps_display_vibe_ctl(void *opaque, int n, int level) +{ + PSDisplayGlobals *s = (PSDisplayGlobals *)opaque; + assert(n == 0); + + s->vibrate_on = (level != 0); + s->redraw = true; +} + + +// ----------------------------------------------------------------------------- +static void ps_display_power_ctl(void *opaque, int n, int level) +{ + PSDisplayGlobals *s = (PSDisplayGlobals *)opaque; + assert(n == 0); + + if (!level && s->power_on) { + memset(s->framebuffer, 0, s->bytes_per_frame); + ps_set_redraw(s); + s->power_on = false; + } + s->power_on = !!level; +} + + +// ----------------------------------------------------------------------------- +static void ps_display_reset(DeviceState *dev) +{ + PSDisplayGlobals *s = (PSDisplayGlobals *)dev; + memset(s->framebuffer, 0, s->bytes_per_frame); + ps_set_redraw(s); +} + + +// ----------------------------------------------------------------------------- +static int ps_display_init(SSISlave *dev) +{ + PSDisplayGlobals *s = FROM_SSI_SLAVE(PSDisplayGlobals, dev); + + s->brightness = 0.0; + s->backlight_enabled = false; + s->cmd_set = PSDISPLAY_CMD_SET_0; + ps_set_state(s, PSDISPLAYSTATE_ACCEPTING_CMD); + + // Allocate the frame buffer + s->bytes_per_row = s->num_cols; + s->bytes_per_frame = s->bytes_per_row * s->num_rows; + s->framebuffer = g_malloc(s->num_rows * s->bytes_per_row); + s->framebuffer_copy = g_malloc(s->num_rows * s->bytes_per_row); + + s->con = graphic_console_init(DEVICE(dev), 0, &ps_display_ops, s); + qemu_console_resize(s->con, s->num_cols, s->num_rows); + + /* Create our inputs that will be connected to GPIOs from the STM32 */ + qdev_init_gpio_in_named(DEVICE(dev), ps_display_set_reset_pin_cb, + "reset", 1); + + /* Create our inputs that will be connected to GPIOs from the STM32 */ + qdev_init_gpio_in_named(DEVICE(dev), ps_display_set_sclk_pin_cb, + "sclk", 1); + + /* This callback informs us that brightness control is enabled */ + qdev_init_gpio_in_named(DEVICE(dev), ps_display_backlight_enable_cb, + "backlight_enable", 1); + + /* This callback informs us of the brightness level (from 0 to 255) */ + qdev_init_gpio_in_named(DEVICE(dev), ps_display_set_backlight_level_cb, + "backlight_level", 1); + + /* This callback informs us that the vibrate is on/orr */ + qdev_init_gpio_in_named(DEVICE(dev), ps_display_vibe_ctl, + "vibe_ctl", 1); + + /* This callback informs us that power is on/orr */ + qdev_init_gpio_in_named(DEVICE(dev), ps_display_power_ctl, + "power_ctl", 1); + + return 0; +} + +// ----------------------------------------------------------------------------- +static Property ps_display_init_properties[] = { + DEFINE_PROP_PTR("done_output", PSDisplayGlobals, vdone_output), + + // NOTE: The "done" flag, asserted low. If unasserted (high), the MPU asssumes the + // display is busy. + DEFINE_PROP_PTR("intn_output", PSDisplayGlobals, vintn_output), + + DEFINE_PROP_UINT32("num_rows", PSDisplayGlobals, num_rows, 172), + DEFINE_PROP_UINT32("num_cols", PSDisplayGlobals, num_cols, 168), + DEFINE_PROP_INT32("num_border_rows", PSDisplayGlobals, num_border_rows, 2), + DEFINE_PROP_INT32("num_border_cols", PSDisplayGlobals, num_border_cols, 2), + DEFINE_PROP_UINT8("row_major", PSDisplayGlobals, row_major, 0), + DEFINE_PROP_UINT8("row_inverted", PSDisplayGlobals, row_inverted, 0), + DEFINE_PROP_UINT8("col_inverted", PSDisplayGlobals, col_inverted, 0), + DEFINE_PROP_UINT8("round_mask", PSDisplayGlobals, round_mask, 0), + + DEFINE_PROP_END_OF_LIST() +}; + + +// ----------------------------------------------------------------------------- +static void ps_display_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + SSISlaveClass *k = SSI_SLAVE_CLASS(klass); + + dc->props = ps_display_init_properties; + k->init = ps_display_init; + k->transfer = ps_display_transfer; + k->cs_polarity = SSI_CS_LOW; + k->set_cs = ps_display_set_cs; + k->parent_class.reset = ps_display_reset; +} + +// ----------------------------------------------------------------------------- +static const TypeInfo ps_display_info = { + .name = "pebble-snowy-display", + .parent = TYPE_SSI_SLAVE, + .instance_size = sizeof(PSDisplayGlobals), + .class_init = ps_display_class_init, +}; + +// ----------------------------------------------------------------------------- +static void ps_display_register(void) +{ + type_register_static(&ps_display_info); +} + +// ----------------------------------------------------------------------------- +type_init(ps_display_register); + + +// ------------------------------------------------------------------------- +// The Spalding round display is logically a square 180x180 display with +// some of the pixels hidden under a mask or missing entirely. The mask +// is symmetrical both horizontally and vertically: the masks on the +// left and right side of a line are equal, and the mask on the top half +// of the display is a mirror image of the bottom half. +// +// This array maps the number of pixels masked off for one quadrant of +// the display. Array element zero is the number of masked pixels from +// a display corner inwards. Subsequent array elements contain the mask +// for the adjacent rows or columns moving inwards towards the center +// of the display. +static uint8_t *get_pixel_mask(void) { + + static uint8_t pixel_mask[] = { + 76, 71, 66, 63, 60, 57, 55, 52, 50, 48, 46, 45, 43, 41, 40, 38, 37, + 36, 34, 33, 32, 31, 29, 28, 27, 26, 25, 24, 23, 22, 22, 21, 20, 19, + 18, 18, 17, 16, 15, 15, 14, 13, 13, 12, 12, 11, 10, 10, 9, 9, 8, 8, 7, + 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + return pixel_mask; +} + + +static uint8_t *get_pebble_logo_4colors_image(int *width, int *height) { + + // C struct format image converted from 'pebble_logo_4colors.png using png_to_cstruct.py' + *width = 110; + *height = 30; + static uint8_t pebble_logo_4colors[3300] = { + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xa8, 0xa8, 0xa8, 0xa8, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x54, 0xa8, 0xfc, 0xfc, 0xfc, 0xfc, 0xa8, 0xa8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x54, 0xa8, 0xa8, 0xa8, 0xa8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x54, 0xa8, + 0xa8, 0xa8, 0xa8, 0xa8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x54, 0xa8, 0xfc, 0xfc, 0xfc, 0xfc, 0xa8, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xa8, 0xfc, 0xfc, 0xfc, 0xa8, 0xa8, 0xa8, 0xfc, 0xfc, 0xfc, 0xa8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0xa8, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0x00, 0x54, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, + 0xfc, 0xfc, 0xfc, 0xa8, 0xa8, 0xa8, 0xfc, 0xfc, 0xfc, 0xa8, 0x00, 0x00, + 0x00, 0x00, + + 0x00, 0x00, 0x00, 0xa8, 0xfc, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x54, + 0xa8, 0xfc, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0xfc, 0xa8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xfc, + 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0xfc, 0xfc, + 0xa8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x54, 0xa8, 0xfc, 0xfc, 0x54, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0xa8, 0xfc, 0xfc, 0xa8, 0x54, + 0x00, 0x00, 0x00, 0x54, 0xa8, 0xfc, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, + 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xa8, 0xfc, 0xfc, 0x54, + 0x00, 0x00, + + 0x00, 0x00, 0xa8, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x54, 0xfc, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0xfc, 0xfc, 0xa8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0xa8, 0xfc, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0xa8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xfc, + 0x00, 0x00, + + 0x00, 0xa8, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x54, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, + 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa8, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x54, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xa8, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x54, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xa8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, + 0xa8, 0x00, + + 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xa8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, + 0x54, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xa8, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x54, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0xfc, 0x54, + + 0xa8, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x54, 0xfc, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xa8, 0xfc, 0x54, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x54, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xa8, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x54, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, + 0xfc, 0xa8, + + 0xa8, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, + 0xa8, 0xa8, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0xfc, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0x54, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x54, 0xfc, 0x54, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xa8, 0xa8, + 0xfc, 0xfc, + + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0x54, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, 0xa8, 0xa8, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0xfc, 0x54, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x54, 0x54, 0xa8, 0xa8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xa8, + + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0x54, 0x00, 0x00, 0xfc, 0xfc, 0x54, + 0x54, 0xa8, 0xa8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xa8, 0xa8, 0x54, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, + 0xfc, 0x54, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x54, 0x54, 0xa8, + 0xa8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xa8, 0xa8, 0x54, 0x54, 0x00, + 0x00, 0x00, + + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0x54, 0x00, 0x00, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xa8, 0xa8, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x54, 0x54, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0xfc, 0x54, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xa8, 0xa8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0x54, + + 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0xa8, + 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x54, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0xfc, 0x00, 0x00, 0x00, 0x54, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0x54, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xa8, 0x54, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0xa8, + + 0xfc, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x54, 0xfc, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xa8, 0xfc, 0x54, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x54, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xa8, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x54, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, + 0xfc, 0xa8, + + 0xfc, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xa8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, + 0x54, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xa8, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x54, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0xfc, 0x00, + + 0xfc, 0xfc, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x54, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, + 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa8, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0x54, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xa8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x54, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, + 0xa8, 0x00, + + 0xfc, 0xa8, 0xa8, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x54, 0xfc, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xa8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa8, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xfc, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0xa8, + 0x00, 0x00, + + 0xfc, 0xa8, 0x00, 0xa8, 0xfc, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x54, + 0xa8, 0xfc, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa8, 0xfc, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0xfc, + 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0xa8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x54, 0xa8, 0xfc, 0xfc, 0x54, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, 0xfc, 0xa8, 0x54, + 0x00, 0x00, 0x00, 0x54, 0xa8, 0xfc, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x54, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xfc, + 0xfc, 0xa8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xfc, 0xa8, 0x00, + 0x00, 0x00, + + 0xfc, 0xa8, 0x00, 0x00, 0xa8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x54, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xa8, 0xfc, 0xfc, 0x54, 0x00, 0x00, 0x00, 0x00, 0x54, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xa8, 0x00, 0x00, + 0x00, 0x00, + + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x54, 0xa8, 0xa8, 0xa8, 0xa8, 0x54, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x54, 0xa8, 0xa8, 0xfc, 0xa8, 0xa8, 0x54, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x54, 0xa8, 0xa8, 0xa8, 0xa8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xa8, + 0xa8, 0xa8, 0xa8, 0xa8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x54, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x54, 0xa8, 0xa8, 0xfc, 0xa8, 0xa8, 0x54, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + + 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + + }; + return pebble_logo_4colors; +} + + +// C struct format image converted from 'dead_face.png' using png_to_cstruct.py +static uint8_t *get_dead_face_image(int *width, int *height) { + + *width = 88; + *height = 44; + static uint8_t dead_face[3872] = { + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0xfc, 0x00, 0x00, + + 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0xfc, 0x00, + + 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xfc, + + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, + + }; + return dead_face; +} + +// C struct format image converted from 'small_pebble_logo.png' using png_to_cstruct.py +static uint8_t *get_small_pebble_logo_image(int *width, int *height) { + + *width = 67; + *height = 18; + static uint8_t small_pebble_logo[1206] = { + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + + 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, + 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, + + 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, + 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, + + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, + 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, + + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, + 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, + + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, + 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, + 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, + + 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, + + 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, + + 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + + 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + }; + return small_pebble_logo; +} + + +// C struct format image converted from 'url.png' using png_to_cstruct.py +static uint8_t *get_url_image(int *width, int *height) { + + *width = 125; + *height = 14; + static uint8_t url[1750] = { + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, + 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, + 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, + 0xfc, 0xfc, 0x00, 0xfc, 0xfc, + + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + + 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, + 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0xfc, 0xfc, 0x00, 0x00, 0x00, + + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, + 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0xfc, 0xfc, 0x00, 0x00, 0x00, + + 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, + 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0xfc, 0xfc, 0x00, 0x00, 0x00, + + 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, + 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0xfc, 0xfc, 0x00, 0x00, 0x00, + + 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, + 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, + 0xfc, 0xfc, 0x00, 0x00, 0x00, + + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, + 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, + 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, + 0xfc, 0xfc, 0x00, 0x00, 0x00, + + 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + + }; + return url; +} diff --git a/hw/display/pebble_snowy_display.h b/hw/display/pebble_snowy_display.h new file mode 100644 index 0000000000000..80a091472b325 --- /dev/null +++ b/hw/display/pebble_snowy_display.h @@ -0,0 +1,12 @@ +#pragma once + +#include "qemu-common.h" + +typedef struct { + uint8_t red, green, blue; +} PSDisplayPixelColor; + +typedef struct { + uint8_t alpha; + PSDisplayPixelColor color; +} PSDisplayPixelColorWithAlpha; diff --git a/hw/display/pebble_snowy_display_overlays.h b/hw/display/pebble_snowy_display_overlays.h new file mode 100644 index 0000000000000..4741665551f04 --- /dev/null +++ b/hw/display/pebble_snowy_display_overlays.h @@ -0,0 +1,32416 @@ +#pragma once + +#include "pebble_snowy_display.h" + +// from PIL import Image +// im = Image.open('qemu-spalding-overlay.png') +// px = im.load() +// print "const PSDisplayPixelColorWithAlpha *g_spalding_overlay = (PSDisplayPixelColorWithAlpha[]){" +// for y in range(im.size[1]): +// for x in range(im.size[0]): +// color = px[x, y] +// print " {%3d, {%3d, %3d, %3d}}, // (%3d, %3d)" % (color[3], color[0], color[1], color[2], x, y) +// print "};" + +const PSDisplayPixelColorWithAlpha *g_spalding_overlay = (PSDisplayPixelColorWithAlpha[]){ + {128, { 0, 0, 0}}, // ( 0, 0) + {128, { 0, 0, 0}}, // ( 1, 0) + {128, { 0, 0, 0}}, // ( 2, 0) + {128, { 0, 0, 0}}, // ( 3, 0) + {128, { 0, 0, 0}}, // ( 4, 0) + {128, { 0, 0, 0}}, // ( 5, 0) + {128, { 0, 0, 0}}, // ( 6, 0) + {128, { 0, 0, 0}}, // ( 7, 0) + {128, { 0, 0, 0}}, // ( 8, 0) + {128, { 0, 0, 0}}, // ( 9, 0) + {128, { 0, 0, 0}}, // ( 10, 0) + {128, { 0, 0, 0}}, // ( 11, 0) + {128, { 0, 0, 0}}, // ( 12, 0) + {128, { 0, 0, 0}}, // ( 13, 0) + {128, { 0, 0, 0}}, // ( 14, 0) + {128, { 0, 0, 0}}, // ( 15, 0) + {128, { 0, 0, 0}}, // ( 16, 0) + {128, { 0, 0, 0}}, // ( 17, 0) + {128, { 0, 0, 0}}, // ( 18, 0) + {128, { 0, 0, 0}}, // ( 19, 0) + {128, { 0, 0, 0}}, // ( 20, 0) + {128, { 0, 0, 0}}, // ( 21, 0) + {128, { 0, 0, 0}}, // ( 22, 0) + {128, { 0, 0, 0}}, // ( 23, 0) + {128, { 0, 0, 0}}, // ( 24, 0) + {128, { 0, 0, 0}}, // ( 25, 0) + {128, { 0, 0, 0}}, // ( 26, 0) + {128, { 0, 0, 0}}, // ( 27, 0) + {128, { 0, 0, 0}}, // ( 28, 0) + {128, { 0, 0, 0}}, // ( 29, 0) + {128, { 0, 0, 0}}, // ( 30, 0) + {128, { 0, 0, 0}}, // ( 31, 0) + {128, { 0, 0, 0}}, // ( 32, 0) + {128, { 0, 0, 0}}, // ( 33, 0) + {128, { 0, 0, 0}}, // ( 34, 0) + {128, { 0, 0, 0}}, // ( 35, 0) + {128, { 0, 0, 0}}, // ( 36, 0) + {128, { 0, 0, 0}}, // ( 37, 0) + {128, { 0, 0, 0}}, // ( 38, 0) + {128, { 0, 0, 0}}, // ( 39, 0) + {128, { 0, 0, 0}}, // ( 40, 0) + {128, { 0, 0, 0}}, // ( 41, 0) + {128, { 0, 0, 0}}, // ( 42, 0) + {128, { 0, 0, 0}}, // ( 43, 0) + {128, { 0, 0, 0}}, // ( 44, 0) + {128, { 0, 0, 0}}, // ( 45, 0) + {128, { 0, 0, 0}}, // ( 46, 0) + {128, { 0, 0, 0}}, // ( 47, 0) + {128, { 0, 0, 0}}, // ( 48, 0) + {128, { 0, 0, 0}}, // ( 49, 0) + {128, { 0, 0, 0}}, // ( 50, 0) + {128, { 0, 0, 0}}, // ( 51, 0) + {128, { 0, 0, 0}}, // ( 52, 0) + {128, { 0, 0, 0}}, // ( 53, 0) + {128, { 0, 0, 0}}, // ( 54, 0) + {128, { 0, 0, 0}}, // ( 55, 0) + {128, { 0, 0, 0}}, // ( 56, 0) + {128, { 0, 0, 0}}, // ( 57, 0) + {128, { 0, 0, 0}}, // ( 58, 0) + {128, { 0, 0, 0}}, // ( 59, 0) + {128, { 0, 0, 0}}, // ( 60, 0) + {128, { 0, 0, 0}}, // ( 61, 0) + {128, { 0, 0, 0}}, // ( 62, 0) + {128, { 0, 0, 0}}, // ( 63, 0) + {128, { 0, 0, 0}}, // ( 64, 0) + {128, { 0, 0, 0}}, // ( 65, 0) + {128, { 0, 0, 0}}, // ( 66, 0) + {128, { 0, 0, 0}}, // ( 67, 0) + {128, { 0, 0, 0}}, // ( 68, 0) + {128, { 0, 0, 0}}, // ( 69, 0) + {128, { 0, 0, 0}}, // ( 70, 0) + {128, { 0, 0, 0}}, // ( 71, 0) + {128, { 0, 0, 0}}, // ( 72, 0) + {128, { 0, 0, 0}}, // ( 73, 0) + {128, { 0, 0, 0}}, // ( 74, 0) + {128, { 0, 0, 0}}, // ( 75, 0) + {128, { 0, 0, 0}}, // ( 76, 0) + {128, { 0, 0, 0}}, // ( 77, 0) + {128, { 0, 0, 0}}, // ( 78, 0) + {128, { 0, 0, 0}}, // ( 79, 0) + {128, { 0, 0, 0}}, // ( 80, 0) + {128, { 0, 0, 0}}, // ( 81, 0) + {128, { 0, 0, 0}}, // ( 82, 0) + {128, { 0, 0, 0}}, // ( 83, 0) + {128, { 0, 0, 0}}, // ( 84, 0) + {128, { 0, 0, 0}}, // ( 85, 0) + {128, { 0, 0, 0}}, // ( 86, 0) + {128, { 0, 0, 0}}, // ( 87, 0) + {128, { 0, 0, 0}}, // ( 88, 0) + {128, { 0, 0, 0}}, // ( 89, 0) + {128, { 0, 0, 0}}, // ( 90, 0) + {128, { 0, 0, 0}}, // ( 91, 0) + {128, { 0, 0, 0}}, // ( 92, 0) + {128, { 0, 0, 0}}, // ( 93, 0) + {128, { 0, 0, 0}}, // ( 94, 0) + {128, { 0, 0, 0}}, // ( 95, 0) + {128, { 0, 0, 0}}, // ( 96, 0) + {128, { 0, 0, 0}}, // ( 97, 0) + {128, { 0, 0, 0}}, // ( 98, 0) + {128, { 0, 0, 0}}, // ( 99, 0) + {128, { 0, 0, 0}}, // (100, 0) + {128, { 0, 0, 0}}, // (101, 0) + {128, { 0, 0, 0}}, // (102, 0) + {128, { 0, 0, 0}}, // (103, 0) + {128, { 0, 0, 0}}, // (104, 0) + {128, { 0, 0, 0}}, // (105, 0) + {128, { 0, 0, 0}}, // (106, 0) + {128, { 0, 0, 0}}, // (107, 0) + {128, { 0, 0, 0}}, // (108, 0) + {128, { 0, 0, 0}}, // (109, 0) + {128, { 0, 0, 0}}, // (110, 0) + {128, { 0, 0, 0}}, // (111, 0) + {128, { 0, 0, 0}}, // (112, 0) + {128, { 0, 0, 0}}, // (113, 0) + {128, { 0, 0, 0}}, // (114, 0) + {128, { 0, 0, 0}}, // (115, 0) + {128, { 0, 0, 0}}, // (116, 0) + {128, { 0, 0, 0}}, // (117, 0) + {128, { 0, 0, 0}}, // (118, 0) + {128, { 0, 0, 0}}, // (119, 0) + {128, { 0, 0, 0}}, // (120, 0) + {128, { 0, 0, 0}}, // (121, 0) + {128, { 0, 0, 0}}, // (122, 0) + {128, { 0, 0, 0}}, // (123, 0) + {128, { 0, 0, 0}}, // (124, 0) + {128, { 0, 0, 0}}, // (125, 0) + {128, { 0, 0, 0}}, // (126, 0) + {128, { 0, 0, 0}}, // (127, 0) + {128, { 0, 0, 0}}, // (128, 0) + {128, { 0, 0, 0}}, // (129, 0) + {128, { 0, 0, 0}}, // (130, 0) + {128, { 0, 0, 0}}, // (131, 0) + {128, { 0, 0, 0}}, // (132, 0) + {128, { 0, 0, 0}}, // (133, 0) + {128, { 0, 0, 0}}, // (134, 0) + {128, { 0, 0, 0}}, // (135, 0) + {128, { 0, 0, 0}}, // (136, 0) + {128, { 0, 0, 0}}, // (137, 0) + {128, { 0, 0, 0}}, // (138, 0) + {128, { 0, 0, 0}}, // (139, 0) + {128, { 0, 0, 0}}, // (140, 0) + {128, { 0, 0, 0}}, // (141, 0) + {128, { 0, 0, 0}}, // (142, 0) + {128, { 0, 0, 0}}, // (143, 0) + {128, { 0, 0, 0}}, // (144, 0) + {128, { 0, 0, 0}}, // (145, 0) + {128, { 0, 0, 0}}, // (146, 0) + {128, { 0, 0, 0}}, // (147, 0) + {128, { 0, 0, 0}}, // (148, 0) + {128, { 0, 0, 0}}, // (149, 0) + {128, { 0, 0, 0}}, // (150, 0) + {128, { 0, 0, 0}}, // (151, 0) + {128, { 0, 0, 0}}, // (152, 0) + {128, { 0, 0, 0}}, // (153, 0) + {128, { 0, 0, 0}}, // (154, 0) + {128, { 0, 0, 0}}, // (155, 0) + {128, { 0, 0, 0}}, // (156, 0) + {128, { 0, 0, 0}}, // (157, 0) + {128, { 0, 0, 0}}, // (158, 0) + {128, { 0, 0, 0}}, // (159, 0) + {128, { 0, 0, 0}}, // (160, 0) + {128, { 0, 0, 0}}, // (161, 0) + {128, { 0, 0, 0}}, // (162, 0) + {128, { 0, 0, 0}}, // (163, 0) + {128, { 0, 0, 0}}, // (164, 0) + {128, { 0, 0, 0}}, // (165, 0) + {128, { 0, 0, 0}}, // (166, 0) + {128, { 0, 0, 0}}, // (167, 0) + {128, { 0, 0, 0}}, // (168, 0) + {128, { 0, 0, 0}}, // (169, 0) + {128, { 0, 0, 0}}, // (170, 0) + {128, { 0, 0, 0}}, // (171, 0) + {128, { 0, 0, 0}}, // (172, 0) + {128, { 0, 0, 0}}, // (173, 0) + {128, { 0, 0, 0}}, // (174, 0) + {128, { 0, 0, 0}}, // (175, 0) + {128, { 0, 0, 0}}, // (176, 0) + {128, { 0, 0, 0}}, // (177, 0) + {128, { 0, 0, 0}}, // (178, 0) + {128, { 0, 0, 0}}, // (179, 0) + {128, { 0, 0, 0}}, // ( 0, 1) + {128, { 0, 0, 0}}, // ( 1, 1) + {128, { 0, 0, 0}}, // ( 2, 1) + {128, { 0, 0, 0}}, // ( 3, 1) + {128, { 0, 0, 0}}, // ( 4, 1) + {128, { 0, 0, 0}}, // ( 5, 1) + {128, { 0, 0, 0}}, // ( 6, 1) + {128, { 0, 0, 0}}, // ( 7, 1) + {128, { 0, 0, 0}}, // ( 8, 1) + {128, { 0, 0, 0}}, // ( 9, 1) + {128, { 0, 0, 0}}, // ( 10, 1) + {128, { 0, 0, 0}}, // ( 11, 1) + {128, { 0, 0, 0}}, // ( 12, 1) + {128, { 0, 0, 0}}, // ( 13, 1) + {128, { 0, 0, 0}}, // ( 14, 1) + {128, { 0, 0, 0}}, // ( 15, 1) + {128, { 0, 0, 0}}, // ( 16, 1) + {128, { 0, 0, 0}}, // ( 17, 1) + {128, { 0, 0, 0}}, // ( 18, 1) + {128, { 0, 0, 0}}, // ( 19, 1) + {128, { 0, 0, 0}}, // ( 20, 1) + {128, { 0, 0, 0}}, // ( 21, 1) + {128, { 0, 0, 0}}, // ( 22, 1) + {128, { 0, 0, 0}}, // ( 23, 1) + {128, { 0, 0, 0}}, // ( 24, 1) + {128, { 0, 0, 0}}, // ( 25, 1) + {128, { 0, 0, 0}}, // ( 26, 1) + {128, { 0, 0, 0}}, // ( 27, 1) + {128, { 0, 0, 0}}, // ( 28, 1) + {128, { 0, 0, 0}}, // ( 29, 1) + {128, { 0, 0, 0}}, // ( 30, 1) + {128, { 0, 0, 0}}, // ( 31, 1) + {128, { 0, 0, 0}}, // ( 32, 1) + {128, { 0, 0, 0}}, // ( 33, 1) + {128, { 0, 0, 0}}, // ( 34, 1) + {128, { 0, 0, 0}}, // ( 35, 1) + {128, { 0, 0, 0}}, // ( 36, 1) + {128, { 0, 0, 0}}, // ( 37, 1) + {128, { 0, 0, 0}}, // ( 38, 1) + {128, { 0, 0, 0}}, // ( 39, 1) + {128, { 0, 0, 0}}, // ( 40, 1) + {128, { 0, 0, 0}}, // ( 41, 1) + {128, { 0, 0, 0}}, // ( 42, 1) + {128, { 0, 0, 0}}, // ( 43, 1) + {128, { 0, 0, 0}}, // ( 44, 1) + {128, { 0, 0, 0}}, // ( 45, 1) + {128, { 0, 0, 0}}, // ( 46, 1) + {128, { 0, 0, 0}}, // ( 47, 1) + {128, { 0, 0, 0}}, // ( 48, 1) + {128, { 0, 0, 0}}, // ( 49, 1) + {128, { 0, 0, 0}}, // ( 50, 1) + {128, { 0, 0, 0}}, // ( 51, 1) + {128, { 0, 0, 0}}, // ( 52, 1) + {128, { 0, 0, 0}}, // ( 53, 1) + {128, { 0, 0, 0}}, // ( 54, 1) + {128, { 0, 0, 0}}, // ( 55, 1) + {128, { 0, 0, 0}}, // ( 56, 1) + {128, { 0, 0, 0}}, // ( 57, 1) + {128, { 0, 0, 0}}, // ( 58, 1) + {128, { 0, 0, 0}}, // ( 59, 1) + {128, { 0, 0, 0}}, // ( 60, 1) + {128, { 0, 0, 0}}, // ( 61, 1) + {128, { 0, 0, 0}}, // ( 62, 1) + {128, { 0, 0, 0}}, // ( 63, 1) + {128, { 0, 0, 0}}, // ( 64, 1) + {128, { 0, 0, 0}}, // ( 65, 1) + {128, { 0, 0, 0}}, // ( 66, 1) + {128, { 0, 0, 0}}, // ( 67, 1) + {128, { 0, 0, 0}}, // ( 68, 1) + {128, { 0, 0, 0}}, // ( 69, 1) + {128, { 0, 0, 0}}, // ( 70, 1) + {128, { 0, 0, 0}}, // ( 71, 1) + {128, { 0, 0, 0}}, // ( 72, 1) + {128, { 0, 0, 0}}, // ( 73, 1) + {128, { 0, 0, 0}}, // ( 74, 1) + {128, { 0, 0, 0}}, // ( 75, 1) + {128, { 0, 0, 0}}, // ( 76, 1) + {128, { 0, 0, 0}}, // ( 77, 1) + {128, { 0, 0, 0}}, // ( 78, 1) + {128, { 0, 0, 0}}, // ( 79, 1) + {128, { 0, 0, 0}}, // ( 80, 1) + {128, { 0, 0, 0}}, // ( 81, 1) + {128, { 0, 0, 0}}, // ( 82, 1) + {128, { 0, 0, 0}}, // ( 83, 1) + {128, { 0, 0, 0}}, // ( 84, 1) + {128, { 0, 0, 0}}, // ( 85, 1) + {128, { 0, 0, 0}}, // ( 86, 1) + {128, { 0, 0, 0}}, // ( 87, 1) + {128, { 0, 0, 0}}, // ( 88, 1) + {128, { 0, 0, 0}}, // ( 89, 1) + {128, { 0, 0, 0}}, // ( 90, 1) + {128, { 0, 0, 0}}, // ( 91, 1) + {128, { 0, 0, 0}}, // ( 92, 1) + {128, { 0, 0, 0}}, // ( 93, 1) + {128, { 0, 0, 0}}, // ( 94, 1) + {128, { 0, 0, 0}}, // ( 95, 1) + {128, { 0, 0, 0}}, // ( 96, 1) + {128, { 0, 0, 0}}, // ( 97, 1) + {128, { 0, 0, 0}}, // ( 98, 1) + {128, { 0, 0, 0}}, // ( 99, 1) + {128, { 0, 0, 0}}, // (100, 1) + {128, { 0, 0, 0}}, // (101, 1) + {128, { 0, 0, 0}}, // (102, 1) + {128, { 0, 0, 0}}, // (103, 1) + {128, { 0, 0, 0}}, // (104, 1) + {128, { 0, 0, 0}}, // (105, 1) + {128, { 0, 0, 0}}, // (106, 1) + {128, { 0, 0, 0}}, // (107, 1) + {128, { 0, 0, 0}}, // (108, 1) + {128, { 0, 0, 0}}, // (109, 1) + {128, { 0, 0, 0}}, // (110, 1) + {128, { 0, 0, 0}}, // (111, 1) + {128, { 0, 0, 0}}, // (112, 1) + {128, { 0, 0, 0}}, // (113, 1) + {128, { 0, 0, 0}}, // (114, 1) + {128, { 0, 0, 0}}, // (115, 1) + {128, { 0, 0, 0}}, // (116, 1) + {128, { 0, 0, 0}}, // (117, 1) + {128, { 0, 0, 0}}, // (118, 1) + {128, { 0, 0, 0}}, // (119, 1) + {128, { 0, 0, 0}}, // (120, 1) + {128, { 0, 0, 0}}, // (121, 1) + {128, { 0, 0, 0}}, // (122, 1) + {128, { 0, 0, 0}}, // (123, 1) + {128, { 0, 0, 0}}, // (124, 1) + {128, { 0, 0, 0}}, // (125, 1) + {128, { 0, 0, 0}}, // (126, 1) + {128, { 0, 0, 0}}, // (127, 1) + {128, { 0, 0, 0}}, // (128, 1) + {128, { 0, 0, 0}}, // (129, 1) + {128, { 0, 0, 0}}, // (130, 1) + {128, { 0, 0, 0}}, // (131, 1) + {128, { 0, 0, 0}}, // (132, 1) + {128, { 0, 0, 0}}, // (133, 1) + {128, { 0, 0, 0}}, // (134, 1) + {128, { 0, 0, 0}}, // (135, 1) + {128, { 0, 0, 0}}, // (136, 1) + {128, { 0, 0, 0}}, // (137, 1) + {128, { 0, 0, 0}}, // (138, 1) + {128, { 0, 0, 0}}, // (139, 1) + {128, { 0, 0, 0}}, // (140, 1) + {128, { 0, 0, 0}}, // (141, 1) + {128, { 0, 0, 0}}, // (142, 1) + {128, { 0, 0, 0}}, // (143, 1) + {128, { 0, 0, 0}}, // (144, 1) + {128, { 0, 0, 0}}, // (145, 1) + {128, { 0, 0, 0}}, // (146, 1) + {128, { 0, 0, 0}}, // (147, 1) + {128, { 0, 0, 0}}, // (148, 1) + {128, { 0, 0, 0}}, // (149, 1) + {128, { 0, 0, 0}}, // (150, 1) + {128, { 0, 0, 0}}, // (151, 1) + {128, { 0, 0, 0}}, // (152, 1) + {128, { 0, 0, 0}}, // (153, 1) + {128, { 0, 0, 0}}, // (154, 1) + {128, { 0, 0, 0}}, // (155, 1) + {128, { 0, 0, 0}}, // (156, 1) + {128, { 0, 0, 0}}, // (157, 1) + {128, { 0, 0, 0}}, // (158, 1) + {128, { 0, 0, 0}}, // (159, 1) + {128, { 0, 0, 0}}, // (160, 1) + {128, { 0, 0, 0}}, // (161, 1) + {128, { 0, 0, 0}}, // (162, 1) + {128, { 0, 0, 0}}, // (163, 1) + {128, { 0, 0, 0}}, // (164, 1) + {128, { 0, 0, 0}}, // (165, 1) + {128, { 0, 0, 0}}, // (166, 1) + {128, { 0, 0, 0}}, // (167, 1) + {128, { 0, 0, 0}}, // (168, 1) + {128, { 0, 0, 0}}, // (169, 1) + {128, { 0, 0, 0}}, // (170, 1) + {128, { 0, 0, 0}}, // (171, 1) + {128, { 0, 0, 0}}, // (172, 1) + {128, { 0, 0, 0}}, // (173, 1) + {128, { 0, 0, 0}}, // (174, 1) + {128, { 0, 0, 0}}, // (175, 1) + {128, { 0, 0, 0}}, // (176, 1) + {128, { 0, 0, 0}}, // (177, 1) + {128, { 0, 0, 0}}, // (178, 1) + {128, { 0, 0, 0}}, // (179, 1) + {128, { 0, 0, 0}}, // ( 0, 2) + {128, { 0, 0, 0}}, // ( 1, 2) + {128, { 0, 0, 0}}, // ( 2, 2) + {128, { 0, 0, 0}}, // ( 3, 2) + {128, { 0, 0, 0}}, // ( 4, 2) + {128, { 0, 0, 0}}, // ( 5, 2) + {128, { 0, 0, 0}}, // ( 6, 2) + {128, { 0, 0, 0}}, // ( 7, 2) + {128, { 0, 0, 0}}, // ( 8, 2) + {128, { 0, 0, 0}}, // ( 9, 2) + {128, { 0, 0, 0}}, // ( 10, 2) + {128, { 0, 0, 0}}, // ( 11, 2) + {128, { 0, 0, 0}}, // ( 12, 2) + {128, { 0, 0, 0}}, // ( 13, 2) + {128, { 0, 0, 0}}, // ( 14, 2) + {128, { 0, 0, 0}}, // ( 15, 2) + {128, { 0, 0, 0}}, // ( 16, 2) + {128, { 0, 0, 0}}, // ( 17, 2) + {128, { 0, 0, 0}}, // ( 18, 2) + {128, { 0, 0, 0}}, // ( 19, 2) + {128, { 0, 0, 0}}, // ( 20, 2) + {128, { 0, 0, 0}}, // ( 21, 2) + {128, { 0, 0, 0}}, // ( 22, 2) + {128, { 0, 0, 0}}, // ( 23, 2) + {128, { 0, 0, 0}}, // ( 24, 2) + {128, { 0, 0, 0}}, // ( 25, 2) + {128, { 0, 0, 0}}, // ( 26, 2) + {128, { 0, 0, 0}}, // ( 27, 2) + {128, { 0, 0, 0}}, // ( 28, 2) + {128, { 0, 0, 0}}, // ( 29, 2) + {128, { 0, 0, 0}}, // ( 30, 2) + {128, { 0, 0, 0}}, // ( 31, 2) + {128, { 0, 0, 0}}, // ( 32, 2) + {128, { 0, 0, 0}}, // ( 33, 2) + {128, { 0, 0, 0}}, // ( 34, 2) + {128, { 0, 0, 0}}, // ( 35, 2) + {128, { 0, 0, 0}}, // ( 36, 2) + {128, { 0, 0, 0}}, // ( 37, 2) + {128, { 0, 0, 0}}, // ( 38, 2) + {128, { 0, 0, 0}}, // ( 39, 2) + {128, { 0, 0, 0}}, // ( 40, 2) + {128, { 0, 0, 0}}, // ( 41, 2) + {128, { 0, 0, 0}}, // ( 42, 2) + {128, { 0, 0, 0}}, // ( 43, 2) + {128, { 0, 0, 0}}, // ( 44, 2) + {128, { 0, 0, 0}}, // ( 45, 2) + {128, { 0, 0, 0}}, // ( 46, 2) + {128, { 0, 0, 0}}, // ( 47, 2) + {128, { 0, 0, 0}}, // ( 48, 2) + {128, { 0, 0, 0}}, // ( 49, 2) + {128, { 0, 0, 0}}, // ( 50, 2) + {128, { 0, 0, 0}}, // ( 51, 2) + {128, { 0, 0, 0}}, // ( 52, 2) + {128, { 0, 0, 0}}, // ( 53, 2) + {128, { 0, 0, 0}}, // ( 54, 2) + {128, { 0, 0, 0}}, // ( 55, 2) + {128, { 0, 0, 0}}, // ( 56, 2) + {128, { 0, 0, 0}}, // ( 57, 2) + {128, { 0, 0, 0}}, // ( 58, 2) + {128, { 0, 0, 0}}, // ( 59, 2) + {128, { 0, 0, 0}}, // ( 60, 2) + {128, { 0, 0, 0}}, // ( 61, 2) + {128, { 0, 0, 0}}, // ( 62, 2) + {128, { 0, 0, 0}}, // ( 63, 2) + {128, { 0, 0, 0}}, // ( 64, 2) + {128, { 0, 0, 0}}, // ( 65, 2) + {128, { 0, 0, 0}}, // ( 66, 2) + {128, { 0, 0, 0}}, // ( 67, 2) + {128, { 0, 0, 0}}, // ( 68, 2) + {128, { 0, 0, 0}}, // ( 69, 2) + {128, { 0, 0, 0}}, // ( 70, 2) + {128, { 0, 0, 0}}, // ( 71, 2) + {128, { 0, 0, 0}}, // ( 72, 2) + {128, { 0, 0, 0}}, // ( 73, 2) + {128, { 0, 0, 0}}, // ( 74, 2) + {128, { 0, 0, 0}}, // ( 75, 2) + {127, { 0, 0, 0}}, // ( 76, 2) + {113, { 0, 0, 0}}, // ( 77, 2) + { 96, { 0, 0, 0}}, // ( 78, 2) + { 81, { 0, 0, 0}}, // ( 79, 2) + { 66, { 0, 0, 0}}, // ( 80, 2) + { 54, { 0, 0, 0}}, // ( 81, 2) + { 44, { 0, 0, 0}}, // ( 82, 2) + { 34, { 0, 0, 0}}, // ( 83, 2) + { 24, { 0, 0, 0}}, // ( 84, 2) + { 17, { 0, 0, 0}}, // ( 85, 2) + { 9, { 0, 0, 0}}, // ( 86, 2) + { 9, { 0, 0, 0}}, // ( 87, 2) + { 7, { 0, 0, 0}}, // ( 88, 2) + { 0, { 0, 0, 0}}, // ( 89, 2) + { 0, { 0, 0, 0}}, // ( 90, 2) + { 7, { 0, 0, 0}}, // ( 91, 2) + { 9, { 0, 0, 0}}, // ( 92, 2) + { 9, { 0, 0, 0}}, // ( 93, 2) + { 17, { 0, 0, 0}}, // ( 94, 2) + { 24, { 0, 0, 0}}, // ( 95, 2) + { 34, { 0, 0, 0}}, // ( 96, 2) + { 44, { 0, 0, 0}}, // ( 97, 2) + { 54, { 0, 0, 0}}, // ( 98, 2) + { 66, { 0, 0, 0}}, // ( 99, 2) + { 81, { 0, 0, 0}}, // (100, 2) + { 96, { 0, 0, 0}}, // (101, 2) + {113, { 0, 0, 0}}, // (102, 2) + {127, { 0, 0, 0}}, // (103, 2) + {128, { 0, 0, 0}}, // (104, 2) + {128, { 0, 0, 0}}, // (105, 2) + {128, { 0, 0, 0}}, // (106, 2) + {128, { 0, 0, 0}}, // (107, 2) + {128, { 0, 0, 0}}, // (108, 2) + {128, { 0, 0, 0}}, // (109, 2) + {128, { 0, 0, 0}}, // (110, 2) + {128, { 0, 0, 0}}, // (111, 2) + {128, { 0, 0, 0}}, // (112, 2) + {128, { 0, 0, 0}}, // (113, 2) + {128, { 0, 0, 0}}, // (114, 2) + {128, { 0, 0, 0}}, // (115, 2) + {128, { 0, 0, 0}}, // (116, 2) + {128, { 0, 0, 0}}, // (117, 2) + {128, { 0, 0, 0}}, // (118, 2) + {128, { 0, 0, 0}}, // (119, 2) + {128, { 0, 0, 0}}, // (120, 2) + {128, { 0, 0, 0}}, // (121, 2) + {128, { 0, 0, 0}}, // (122, 2) + {128, { 0, 0, 0}}, // (123, 2) + {128, { 0, 0, 0}}, // (124, 2) + {128, { 0, 0, 0}}, // (125, 2) + {128, { 0, 0, 0}}, // (126, 2) + {128, { 0, 0, 0}}, // (127, 2) + {128, { 0, 0, 0}}, // (128, 2) + {128, { 0, 0, 0}}, // (129, 2) + {128, { 0, 0, 0}}, // (130, 2) + {128, { 0, 0, 0}}, // (131, 2) + {128, { 0, 0, 0}}, // (132, 2) + {128, { 0, 0, 0}}, // (133, 2) + {128, { 0, 0, 0}}, // (134, 2) + {128, { 0, 0, 0}}, // (135, 2) + {128, { 0, 0, 0}}, // (136, 2) + {128, { 0, 0, 0}}, // (137, 2) + {128, { 0, 0, 0}}, // (138, 2) + {128, { 0, 0, 0}}, // (139, 2) + {128, { 0, 0, 0}}, // (140, 2) + {128, { 0, 0, 0}}, // (141, 2) + {128, { 0, 0, 0}}, // (142, 2) + {128, { 0, 0, 0}}, // (143, 2) + {128, { 0, 0, 0}}, // (144, 2) + {128, { 0, 0, 0}}, // (145, 2) + {128, { 0, 0, 0}}, // (146, 2) + {128, { 0, 0, 0}}, // (147, 2) + {128, { 0, 0, 0}}, // (148, 2) + {128, { 0, 0, 0}}, // (149, 2) + {128, { 0, 0, 0}}, // (150, 2) + {128, { 0, 0, 0}}, // (151, 2) + {128, { 0, 0, 0}}, // (152, 2) + {128, { 0, 0, 0}}, // (153, 2) + {128, { 0, 0, 0}}, // (154, 2) + {128, { 0, 0, 0}}, // (155, 2) + {128, { 0, 0, 0}}, // (156, 2) + {128, { 0, 0, 0}}, // (157, 2) + {128, { 0, 0, 0}}, // (158, 2) + {128, { 0, 0, 0}}, // (159, 2) + {128, { 0, 0, 0}}, // (160, 2) + {128, { 0, 0, 0}}, // (161, 2) + {128, { 0, 0, 0}}, // (162, 2) + {128, { 0, 0, 0}}, // (163, 2) + {128, { 0, 0, 0}}, // (164, 2) + {128, { 0, 0, 0}}, // (165, 2) + {128, { 0, 0, 0}}, // (166, 2) + {128, { 0, 0, 0}}, // (167, 2) + {128, { 0, 0, 0}}, // (168, 2) + {128, { 0, 0, 0}}, // (169, 2) + {128, { 0, 0, 0}}, // (170, 2) + {128, { 0, 0, 0}}, // (171, 2) + {128, { 0, 0, 0}}, // (172, 2) + {128, { 0, 0, 0}}, // (173, 2) + {128, { 0, 0, 0}}, // (174, 2) + {128, { 0, 0, 0}}, // (175, 2) + {128, { 0, 0, 0}}, // (176, 2) + {128, { 0, 0, 0}}, // (177, 2) + {128, { 0, 0, 0}}, // (178, 2) + {128, { 0, 0, 0}}, // (179, 2) + {128, { 0, 0, 0}}, // ( 0, 3) + {128, { 0, 0, 0}}, // ( 1, 3) + {128, { 0, 0, 0}}, // ( 2, 3) + {128, { 0, 0, 0}}, // ( 3, 3) + {128, { 0, 0, 0}}, // ( 4, 3) + {128, { 0, 0, 0}}, // ( 5, 3) + {128, { 0, 0, 0}}, // ( 6, 3) + {128, { 0, 0, 0}}, // ( 7, 3) + {128, { 0, 0, 0}}, // ( 8, 3) + {128, { 0, 0, 0}}, // ( 9, 3) + {128, { 0, 0, 0}}, // ( 10, 3) + {128, { 0, 0, 0}}, // ( 11, 3) + {128, { 0, 0, 0}}, // ( 12, 3) + {128, { 0, 0, 0}}, // ( 13, 3) + {128, { 0, 0, 0}}, // ( 14, 3) + {128, { 0, 0, 0}}, // ( 15, 3) + {128, { 0, 0, 0}}, // ( 16, 3) + {128, { 0, 0, 0}}, // ( 17, 3) + {128, { 0, 0, 0}}, // ( 18, 3) + {128, { 0, 0, 0}}, // ( 19, 3) + {128, { 0, 0, 0}}, // ( 20, 3) + {128, { 0, 0, 0}}, // ( 21, 3) + {128, { 0, 0, 0}}, // ( 22, 3) + {128, { 0, 0, 0}}, // ( 23, 3) + {128, { 0, 0, 0}}, // ( 24, 3) + {128, { 0, 0, 0}}, // ( 25, 3) + {128, { 0, 0, 0}}, // ( 26, 3) + {128, { 0, 0, 0}}, // ( 27, 3) + {128, { 0, 0, 0}}, // ( 28, 3) + {128, { 0, 0, 0}}, // ( 29, 3) + {128, { 0, 0, 0}}, // ( 30, 3) + {128, { 0, 0, 0}}, // ( 31, 3) + {128, { 0, 0, 0}}, // ( 32, 3) + {128, { 0, 0, 0}}, // ( 33, 3) + {128, { 0, 0, 0}}, // ( 34, 3) + {128, { 0, 0, 0}}, // ( 35, 3) + {128, { 0, 0, 0}}, // ( 36, 3) + {128, { 0, 0, 0}}, // ( 37, 3) + {128, { 0, 0, 0}}, // ( 38, 3) + {128, { 0, 0, 0}}, // ( 39, 3) + {128, { 0, 0, 0}}, // ( 40, 3) + {128, { 0, 0, 0}}, // ( 41, 3) + {128, { 0, 0, 0}}, // ( 42, 3) + {128, { 0, 0, 0}}, // ( 43, 3) + {128, { 0, 0, 0}}, // ( 44, 3) + {128, { 0, 0, 0}}, // ( 45, 3) + {128, { 0, 0, 0}}, // ( 46, 3) + {128, { 0, 0, 0}}, // ( 47, 3) + {128, { 0, 0, 0}}, // ( 48, 3) + {128, { 0, 0, 0}}, // ( 49, 3) + {128, { 0, 0, 0}}, // ( 50, 3) + {128, { 0, 0, 0}}, // ( 51, 3) + {128, { 0, 0, 0}}, // ( 52, 3) + {128, { 0, 0, 0}}, // ( 53, 3) + {128, { 0, 0, 0}}, // ( 54, 3) + {128, { 0, 0, 0}}, // ( 55, 3) + {128, { 0, 0, 0}}, // ( 56, 3) + {128, { 0, 0, 0}}, // ( 57, 3) + {128, { 0, 0, 0}}, // ( 58, 3) + {128, { 0, 0, 0}}, // ( 59, 3) + {128, { 0, 0, 0}}, // ( 60, 3) + {128, { 0, 0, 0}}, // ( 61, 3) + {128, { 0, 0, 0}}, // ( 62, 3) + {128, { 0, 0, 0}}, // ( 63, 3) + {128, { 0, 0, 0}}, // ( 64, 3) + {128, { 0, 0, 0}}, // ( 65, 3) + {128, { 0, 0, 0}}, // ( 66, 3) + {128, { 0, 0, 0}}, // ( 67, 3) + {128, { 0, 0, 0}}, // ( 68, 3) + {128, { 0, 0, 0}}, // ( 69, 3) + {128, { 0, 0, 0}}, // ( 70, 3) + {121, { 0, 0, 0}}, // ( 71, 3) + { 96, { 0, 0, 0}}, // ( 72, 3) + { 73, { 0, 0, 0}}, // ( 73, 3) + { 50, { 0, 0, 0}}, // ( 74, 3) + { 27, { 0, 0, 0}}, // ( 75, 3) + { 5, { 0, 0, 0}}, // ( 76, 3) + { 0, { 0, 0, 0}}, // ( 77, 3) + { 0, { 0, 0, 0}}, // ( 78, 3) + { 0, { 0, 0, 0}}, // ( 79, 3) + { 0, { 0, 0, 0}}, // ( 80, 3) + { 0, { 0, 0, 0}}, // ( 81, 3) + { 0, { 0, 0, 0}}, // ( 82, 3) + { 0, { 0, 0, 0}}, // ( 83, 3) + { 0, { 0, 0, 0}}, // ( 84, 3) + { 0, { 0, 0, 0}}, // ( 85, 3) + { 0, { 0, 0, 0}}, // ( 86, 3) + { 0, { 0, 0, 0}}, // ( 87, 3) + { 0, { 0, 0, 0}}, // ( 88, 3) + { 0, { 0, 0, 0}}, // ( 89, 3) + { 0, { 0, 0, 0}}, // ( 90, 3) + { 0, { 0, 0, 0}}, // ( 91, 3) + { 0, { 0, 0, 0}}, // ( 92, 3) + { 0, { 0, 0, 0}}, // ( 93, 3) + { 0, { 0, 0, 0}}, // ( 94, 3) + { 0, { 0, 0, 0}}, // ( 95, 3) + { 0, { 0, 0, 0}}, // ( 96, 3) + { 0, { 0, 0, 0}}, // ( 97, 3) + { 0, { 0, 0, 0}}, // ( 98, 3) + { 0, { 0, 0, 0}}, // ( 99, 3) + { 0, { 0, 0, 0}}, // (100, 3) + { 0, { 0, 0, 0}}, // (101, 3) + { 0, { 0, 0, 0}}, // (102, 3) + { 5, { 0, 0, 0}}, // (103, 3) + { 27, { 0, 0, 0}}, // (104, 3) + { 50, { 0, 0, 0}}, // (105, 3) + { 73, { 0, 0, 0}}, // (106, 3) + { 96, { 0, 0, 0}}, // (107, 3) + {121, { 0, 0, 0}}, // (108, 3) + {128, { 0, 0, 0}}, // (109, 3) + {128, { 0, 0, 0}}, // (110, 3) + {128, { 0, 0, 0}}, // (111, 3) + {128, { 0, 0, 0}}, // (112, 3) + {128, { 0, 0, 0}}, // (113, 3) + {128, { 0, 0, 0}}, // (114, 3) + {128, { 0, 0, 0}}, // (115, 3) + {128, { 0, 0, 0}}, // (116, 3) + {128, { 0, 0, 0}}, // (117, 3) + {128, { 0, 0, 0}}, // (118, 3) + {128, { 0, 0, 0}}, // (119, 3) + {128, { 0, 0, 0}}, // (120, 3) + {128, { 0, 0, 0}}, // (121, 3) + {128, { 0, 0, 0}}, // (122, 3) + {128, { 0, 0, 0}}, // (123, 3) + {128, { 0, 0, 0}}, // (124, 3) + {128, { 0, 0, 0}}, // (125, 3) + {128, { 0, 0, 0}}, // (126, 3) + {128, { 0, 0, 0}}, // (127, 3) + {128, { 0, 0, 0}}, // (128, 3) + {128, { 0, 0, 0}}, // (129, 3) + {128, { 0, 0, 0}}, // (130, 3) + {128, { 0, 0, 0}}, // (131, 3) + {128, { 0, 0, 0}}, // (132, 3) + {128, { 0, 0, 0}}, // (133, 3) + {128, { 0, 0, 0}}, // (134, 3) + {128, { 0, 0, 0}}, // (135, 3) + {128, { 0, 0, 0}}, // (136, 3) + {128, { 0, 0, 0}}, // (137, 3) + {128, { 0, 0, 0}}, // (138, 3) + {128, { 0, 0, 0}}, // (139, 3) + {128, { 0, 0, 0}}, // (140, 3) + {128, { 0, 0, 0}}, // (141, 3) + {128, { 0, 0, 0}}, // (142, 3) + {128, { 0, 0, 0}}, // (143, 3) + {128, { 0, 0, 0}}, // (144, 3) + {128, { 0, 0, 0}}, // (145, 3) + {128, { 0, 0, 0}}, // (146, 3) + {128, { 0, 0, 0}}, // (147, 3) + {128, { 0, 0, 0}}, // (148, 3) + {128, { 0, 0, 0}}, // (149, 3) + {128, { 0, 0, 0}}, // (150, 3) + {128, { 0, 0, 0}}, // (151, 3) + {128, { 0, 0, 0}}, // (152, 3) + {128, { 0, 0, 0}}, // (153, 3) + {128, { 0, 0, 0}}, // (154, 3) + {128, { 0, 0, 0}}, // (155, 3) + {128, { 0, 0, 0}}, // (156, 3) + {128, { 0, 0, 0}}, // (157, 3) + {128, { 0, 0, 0}}, // (158, 3) + {128, { 0, 0, 0}}, // (159, 3) + {128, { 0, 0, 0}}, // (160, 3) + {128, { 0, 0, 0}}, // (161, 3) + {128, { 0, 0, 0}}, // (162, 3) + {128, { 0, 0, 0}}, // (163, 3) + {128, { 0, 0, 0}}, // (164, 3) + {128, { 0, 0, 0}}, // (165, 3) + {128, { 0, 0, 0}}, // (166, 3) + {128, { 0, 0, 0}}, // (167, 3) + {128, { 0, 0, 0}}, // (168, 3) + {128, { 0, 0, 0}}, // (169, 3) + {128, { 0, 0, 0}}, // (170, 3) + {128, { 0, 0, 0}}, // (171, 3) + {128, { 0, 0, 0}}, // (172, 3) + {128, { 0, 0, 0}}, // (173, 3) + {128, { 0, 0, 0}}, // (174, 3) + {128, { 0, 0, 0}}, // (175, 3) + {128, { 0, 0, 0}}, // (176, 3) + {128, { 0, 0, 0}}, // (177, 3) + {128, { 0, 0, 0}}, // (178, 3) + {128, { 0, 0, 0}}, // (179, 3) + {128, { 0, 0, 0}}, // ( 0, 4) + {128, { 0, 0, 0}}, // ( 1, 4) + {128, { 0, 0, 0}}, // ( 2, 4) + {128, { 0, 0, 0}}, // ( 3, 4) + {128, { 0, 0, 0}}, // ( 4, 4) + {128, { 0, 0, 0}}, // ( 5, 4) + {128, { 0, 0, 0}}, // ( 6, 4) + {128, { 0, 0, 0}}, // ( 7, 4) + {128, { 0, 0, 0}}, // ( 8, 4) + {128, { 0, 0, 0}}, // ( 9, 4) + {128, { 0, 0, 0}}, // ( 10, 4) + {128, { 0, 0, 0}}, // ( 11, 4) + {128, { 0, 0, 0}}, // ( 12, 4) + {128, { 0, 0, 0}}, // ( 13, 4) + {128, { 0, 0, 0}}, // ( 14, 4) + {128, { 0, 0, 0}}, // ( 15, 4) + {128, { 0, 0, 0}}, // ( 16, 4) + {128, { 0, 0, 0}}, // ( 17, 4) + {128, { 0, 0, 0}}, // ( 18, 4) + {128, { 0, 0, 0}}, // ( 19, 4) + {128, { 0, 0, 0}}, // ( 20, 4) + {128, { 0, 0, 0}}, // ( 21, 4) + {128, { 0, 0, 0}}, // ( 22, 4) + {128, { 0, 0, 0}}, // ( 23, 4) + {128, { 0, 0, 0}}, // ( 24, 4) + {128, { 0, 0, 0}}, // ( 25, 4) + {128, { 0, 0, 0}}, // ( 26, 4) + {128, { 0, 0, 0}}, // ( 27, 4) + {128, { 0, 0, 0}}, // ( 28, 4) + {128, { 0, 0, 0}}, // ( 29, 4) + {128, { 0, 0, 0}}, // ( 30, 4) + {128, { 0, 0, 0}}, // ( 31, 4) + {128, { 0, 0, 0}}, // ( 32, 4) + {128, { 0, 0, 0}}, // ( 33, 4) + {128, { 0, 0, 0}}, // ( 34, 4) + {128, { 0, 0, 0}}, // ( 35, 4) + {128, { 0, 0, 0}}, // ( 36, 4) + {128, { 0, 0, 0}}, // ( 37, 4) + {128, { 0, 0, 0}}, // ( 38, 4) + {128, { 0, 0, 0}}, // ( 39, 4) + {128, { 0, 0, 0}}, // ( 40, 4) + {128, { 0, 0, 0}}, // ( 41, 4) + {128, { 0, 0, 0}}, // ( 42, 4) + {128, { 0, 0, 0}}, // ( 43, 4) + {128, { 0, 0, 0}}, // ( 44, 4) + {128, { 0, 0, 0}}, // ( 45, 4) + {128, { 0, 0, 0}}, // ( 46, 4) + {128, { 0, 0, 0}}, // ( 47, 4) + {128, { 0, 0, 0}}, // ( 48, 4) + {128, { 0, 0, 0}}, // ( 49, 4) + {128, { 0, 0, 0}}, // ( 50, 4) + {128, { 0, 0, 0}}, // ( 51, 4) + {128, { 0, 0, 0}}, // ( 52, 4) + {128, { 0, 0, 0}}, // ( 53, 4) + {128, { 0, 0, 0}}, // ( 54, 4) + {128, { 0, 0, 0}}, // ( 55, 4) + {128, { 0, 0, 0}}, // ( 56, 4) + {128, { 0, 0, 0}}, // ( 57, 4) + {128, { 0, 0, 0}}, // ( 58, 4) + {128, { 0, 0, 0}}, // ( 59, 4) + {128, { 0, 0, 0}}, // ( 60, 4) + {128, { 0, 0, 0}}, // ( 61, 4) + {128, { 0, 0, 0}}, // ( 62, 4) + {128, { 0, 0, 0}}, // ( 63, 4) + {128, { 0, 0, 0}}, // ( 64, 4) + {128, { 0, 0, 0}}, // ( 65, 4) + {128, { 0, 0, 0}}, // ( 66, 4) + {116, { 0, 0, 0}}, // ( 67, 4) + { 84, { 0, 0, 0}}, // ( 68, 4) + { 55, { 0, 0, 0}}, // ( 69, 4) + { 26, { 0, 0, 0}}, // ( 70, 4) + { 2, { 0, 0, 0}}, // ( 71, 4) + { 0, { 0, 0, 0}}, // ( 72, 4) + { 0, { 0, 0, 0}}, // ( 73, 4) + { 0, { 0, 0, 0}}, // ( 74, 4) + { 0, { 0, 0, 0}}, // ( 75, 4) + { 0, { 0, 0, 0}}, // ( 76, 4) + { 0, { 0, 0, 0}}, // ( 77, 4) + { 0, { 0, 0, 0}}, // ( 78, 4) + { 0, { 0, 0, 0}}, // ( 79, 4) + { 0, { 0, 0, 0}}, // ( 80, 4) + { 0, { 0, 0, 0}}, // ( 81, 4) + { 0, { 0, 0, 0}}, // ( 82, 4) + { 0, { 0, 0, 0}}, // ( 83, 4) + { 0, { 0, 0, 0}}, // ( 84, 4) + { 0, { 0, 0, 0}}, // ( 85, 4) + { 0, { 0, 0, 0}}, // ( 86, 4) + { 0, { 0, 0, 0}}, // ( 87, 4) + { 0, { 0, 0, 0}}, // ( 88, 4) + { 0, { 0, 0, 0}}, // ( 89, 4) + { 0, { 0, 0, 0}}, // ( 90, 4) + { 0, { 0, 0, 0}}, // ( 91, 4) + { 0, { 0, 0, 0}}, // ( 92, 4) + { 0, { 0, 0, 0}}, // ( 93, 4) + { 0, { 0, 0, 0}}, // ( 94, 4) + { 0, { 0, 0, 0}}, // ( 95, 4) + { 0, { 0, 0, 0}}, // ( 96, 4) + { 0, { 0, 0, 0}}, // ( 97, 4) + { 0, { 0, 0, 0}}, // ( 98, 4) + { 0, { 0, 0, 0}}, // ( 99, 4) + { 0, { 0, 0, 0}}, // (100, 4) + { 0, { 0, 0, 0}}, // (101, 4) + { 0, { 0, 0, 0}}, // (102, 4) + { 0, { 0, 0, 0}}, // (103, 4) + { 0, { 0, 0, 0}}, // (104, 4) + { 0, { 0, 0, 0}}, // (105, 4) + { 0, { 0, 0, 0}}, // (106, 4) + { 0, { 0, 0, 0}}, // (107, 4) + { 2, { 0, 0, 0}}, // (108, 4) + { 26, { 0, 0, 0}}, // (109, 4) + { 55, { 0, 0, 0}}, // (110, 4) + { 84, { 0, 0, 0}}, // (111, 4) + {116, { 0, 0, 0}}, // (112, 4) + {128, { 0, 0, 0}}, // (113, 4) + {128, { 0, 0, 0}}, // (114, 4) + {128, { 0, 0, 0}}, // (115, 4) + {128, { 0, 0, 0}}, // (116, 4) + {128, { 0, 0, 0}}, // (117, 4) + {128, { 0, 0, 0}}, // (118, 4) + {128, { 0, 0, 0}}, // (119, 4) + {128, { 0, 0, 0}}, // (120, 4) + {128, { 0, 0, 0}}, // (121, 4) + {128, { 0, 0, 0}}, // (122, 4) + {128, { 0, 0, 0}}, // (123, 4) + {128, { 0, 0, 0}}, // (124, 4) + {128, { 0, 0, 0}}, // (125, 4) + {128, { 0, 0, 0}}, // (126, 4) + {128, { 0, 0, 0}}, // (127, 4) + {128, { 0, 0, 0}}, // (128, 4) + {128, { 0, 0, 0}}, // (129, 4) + {128, { 0, 0, 0}}, // (130, 4) + {128, { 0, 0, 0}}, // (131, 4) + {128, { 0, 0, 0}}, // (132, 4) + {128, { 0, 0, 0}}, // (133, 4) + {128, { 0, 0, 0}}, // (134, 4) + {128, { 0, 0, 0}}, // (135, 4) + {128, { 0, 0, 0}}, // (136, 4) + {128, { 0, 0, 0}}, // (137, 4) + {128, { 0, 0, 0}}, // (138, 4) + {128, { 0, 0, 0}}, // (139, 4) + {128, { 0, 0, 0}}, // (140, 4) + {128, { 0, 0, 0}}, // (141, 4) + {128, { 0, 0, 0}}, // (142, 4) + {128, { 0, 0, 0}}, // (143, 4) + {128, { 0, 0, 0}}, // (144, 4) + {128, { 0, 0, 0}}, // (145, 4) + {128, { 0, 0, 0}}, // (146, 4) + {128, { 0, 0, 0}}, // (147, 4) + {128, { 0, 0, 0}}, // (148, 4) + {128, { 0, 0, 0}}, // (149, 4) + {128, { 0, 0, 0}}, // (150, 4) + {128, { 0, 0, 0}}, // (151, 4) + {128, { 0, 0, 0}}, // (152, 4) + {128, { 0, 0, 0}}, // (153, 4) + {128, { 0, 0, 0}}, // (154, 4) + {128, { 0, 0, 0}}, // (155, 4) + {128, { 0, 0, 0}}, // (156, 4) + {128, { 0, 0, 0}}, // (157, 4) + {128, { 0, 0, 0}}, // (158, 4) + {128, { 0, 0, 0}}, // (159, 4) + {128, { 0, 0, 0}}, // (160, 4) + {128, { 0, 0, 0}}, // (161, 4) + {128, { 0, 0, 0}}, // (162, 4) + {128, { 0, 0, 0}}, // (163, 4) + {128, { 0, 0, 0}}, // (164, 4) + {128, { 0, 0, 0}}, // (165, 4) + {128, { 0, 0, 0}}, // (166, 4) + {128, { 0, 0, 0}}, // (167, 4) + {128, { 0, 0, 0}}, // (168, 4) + {128, { 0, 0, 0}}, // (169, 4) + {128, { 0, 0, 0}}, // (170, 4) + {128, { 0, 0, 0}}, // (171, 4) + {128, { 0, 0, 0}}, // (172, 4) + {128, { 0, 0, 0}}, // (173, 4) + {128, { 0, 0, 0}}, // (174, 4) + {128, { 0, 0, 0}}, // (175, 4) + {128, { 0, 0, 0}}, // (176, 4) + {128, { 0, 0, 0}}, // (177, 4) + {128, { 0, 0, 0}}, // (178, 4) + {128, { 0, 0, 0}}, // (179, 4) + {128, { 0, 0, 0}}, // ( 0, 5) + {128, { 0, 0, 0}}, // ( 1, 5) + {128, { 0, 0, 0}}, // ( 2, 5) + {128, { 0, 0, 0}}, // ( 3, 5) + {128, { 0, 0, 0}}, // ( 4, 5) + {128, { 0, 0, 0}}, // ( 5, 5) + {128, { 0, 0, 0}}, // ( 6, 5) + {128, { 0, 0, 0}}, // ( 7, 5) + {128, { 0, 0, 0}}, // ( 8, 5) + {128, { 0, 0, 0}}, // ( 9, 5) + {128, { 0, 0, 0}}, // ( 10, 5) + {128, { 0, 0, 0}}, // ( 11, 5) + {128, { 0, 0, 0}}, // ( 12, 5) + {128, { 0, 0, 0}}, // ( 13, 5) + {128, { 0, 0, 0}}, // ( 14, 5) + {128, { 0, 0, 0}}, // ( 15, 5) + {128, { 0, 0, 0}}, // ( 16, 5) + {128, { 0, 0, 0}}, // ( 17, 5) + {128, { 0, 0, 0}}, // ( 18, 5) + {128, { 0, 0, 0}}, // ( 19, 5) + {128, { 0, 0, 0}}, // ( 20, 5) + {128, { 0, 0, 0}}, // ( 21, 5) + {128, { 0, 0, 0}}, // ( 22, 5) + {128, { 0, 0, 0}}, // ( 23, 5) + {128, { 0, 0, 0}}, // ( 24, 5) + {128, { 0, 0, 0}}, // ( 25, 5) + {128, { 0, 0, 0}}, // ( 26, 5) + {128, { 0, 0, 0}}, // ( 27, 5) + {128, { 0, 0, 0}}, // ( 28, 5) + {128, { 0, 0, 0}}, // ( 29, 5) + {128, { 0, 0, 0}}, // ( 30, 5) + {128, { 0, 0, 0}}, // ( 31, 5) + {128, { 0, 0, 0}}, // ( 32, 5) + {128, { 0, 0, 0}}, // ( 33, 5) + {128, { 0, 0, 0}}, // ( 34, 5) + {128, { 0, 0, 0}}, // ( 35, 5) + {128, { 0, 0, 0}}, // ( 36, 5) + {128, { 0, 0, 0}}, // ( 37, 5) + {128, { 0, 0, 0}}, // ( 38, 5) + {128, { 0, 0, 0}}, // ( 39, 5) + {128, { 0, 0, 0}}, // ( 40, 5) + {128, { 0, 0, 0}}, // ( 41, 5) + {128, { 0, 0, 0}}, // ( 42, 5) + {128, { 0, 0, 0}}, // ( 43, 5) + {128, { 0, 0, 0}}, // ( 44, 5) + {128, { 0, 0, 0}}, // ( 45, 5) + {128, { 0, 0, 0}}, // ( 46, 5) + {128, { 0, 0, 0}}, // ( 47, 5) + {128, { 0, 0, 0}}, // ( 48, 5) + {128, { 0, 0, 0}}, // ( 49, 5) + {128, { 0, 0, 0}}, // ( 50, 5) + {128, { 0, 0, 0}}, // ( 51, 5) + {128, { 0, 0, 0}}, // ( 52, 5) + {128, { 0, 0, 0}}, // ( 53, 5) + {128, { 0, 0, 0}}, // ( 54, 5) + {128, { 0, 0, 0}}, // ( 55, 5) + {128, { 0, 0, 0}}, // ( 56, 5) + {128, { 0, 0, 0}}, // ( 57, 5) + {128, { 0, 0, 0}}, // ( 58, 5) + {128, { 0, 0, 0}}, // ( 59, 5) + {128, { 0, 0, 0}}, // ( 60, 5) + {128, { 0, 0, 0}}, // ( 61, 5) + {128, { 0, 0, 0}}, // ( 62, 5) + {126, { 0, 0, 0}}, // ( 63, 5) + { 97, { 0, 0, 0}}, // ( 64, 5) + { 59, { 0, 0, 0}}, // ( 65, 5) + { 23, { 0, 0, 0}}, // ( 66, 5) + { 1, { 0, 0, 0}}, // ( 67, 5) + { 0, { 0, 0, 0}}, // ( 68, 5) + { 0, { 0, 0, 0}}, // ( 69, 5) + { 0, { 0, 0, 0}}, // ( 70, 5) + { 0, { 0, 0, 0}}, // ( 71, 5) + { 0, { 0, 0, 0}}, // ( 72, 5) + { 0, { 0, 0, 0}}, // ( 73, 5) + { 0, { 0, 0, 0}}, // ( 74, 5) + { 0, { 0, 0, 0}}, // ( 75, 5) + { 0, { 0, 0, 0}}, // ( 76, 5) + { 0, { 0, 0, 0}}, // ( 77, 5) + { 0, { 0, 0, 0}}, // ( 78, 5) + { 0, { 0, 0, 0}}, // ( 79, 5) + { 0, { 0, 0, 0}}, // ( 80, 5) + { 0, { 0, 0, 0}}, // ( 81, 5) + { 0, { 0, 0, 0}}, // ( 82, 5) + { 0, { 0, 0, 0}}, // ( 83, 5) + { 0, { 0, 0, 0}}, // ( 84, 5) + { 0, { 0, 0, 0}}, // ( 85, 5) + { 0, { 0, 0, 0}}, // ( 86, 5) + { 0, { 0, 0, 0}}, // ( 87, 5) + { 0, { 0, 0, 0}}, // ( 88, 5) + { 0, { 0, 0, 0}}, // ( 89, 5) + { 0, { 0, 0, 0}}, // ( 90, 5) + { 0, { 0, 0, 0}}, // ( 91, 5) + { 0, { 0, 0, 0}}, // ( 92, 5) + { 0, { 0, 0, 0}}, // ( 93, 5) + { 0, { 0, 0, 0}}, // ( 94, 5) + { 0, { 0, 0, 0}}, // ( 95, 5) + { 0, { 0, 0, 0}}, // ( 96, 5) + { 0, { 0, 0, 0}}, // ( 97, 5) + { 0, { 0, 0, 0}}, // ( 98, 5) + { 0, { 0, 0, 0}}, // ( 99, 5) + { 0, { 0, 0, 0}}, // (100, 5) + { 0, { 0, 0, 0}}, // (101, 5) + { 0, { 0, 0, 0}}, // (102, 5) + { 0, { 0, 0, 0}}, // (103, 5) + { 0, { 0, 0, 0}}, // (104, 5) + { 0, { 0, 0, 0}}, // (105, 5) + { 0, { 0, 0, 0}}, // (106, 5) + { 0, { 0, 0, 0}}, // (107, 5) + { 0, { 0, 0, 0}}, // (108, 5) + { 0, { 0, 0, 0}}, // (109, 5) + { 0, { 0, 0, 0}}, // (110, 5) + { 0, { 0, 0, 0}}, // (111, 5) + { 1, { 0, 0, 0}}, // (112, 5) + { 23, { 0, 0, 0}}, // (113, 5) + { 59, { 0, 0, 0}}, // (114, 5) + { 97, { 0, 0, 0}}, // (115, 5) + {126, { 0, 0, 0}}, // (116, 5) + {128, { 0, 0, 0}}, // (117, 5) + {128, { 0, 0, 0}}, // (118, 5) + {128, { 0, 0, 0}}, // (119, 5) + {128, { 0, 0, 0}}, // (120, 5) + {128, { 0, 0, 0}}, // (121, 5) + {128, { 0, 0, 0}}, // (122, 5) + {128, { 0, 0, 0}}, // (123, 5) + {128, { 0, 0, 0}}, // (124, 5) + {128, { 0, 0, 0}}, // (125, 5) + {128, { 0, 0, 0}}, // (126, 5) + {128, { 0, 0, 0}}, // (127, 5) + {128, { 0, 0, 0}}, // (128, 5) + {128, { 0, 0, 0}}, // (129, 5) + {128, { 0, 0, 0}}, // (130, 5) + {128, { 0, 0, 0}}, // (131, 5) + {128, { 0, 0, 0}}, // (132, 5) + {128, { 0, 0, 0}}, // (133, 5) + {128, { 0, 0, 0}}, // (134, 5) + {128, { 0, 0, 0}}, // (135, 5) + {128, { 0, 0, 0}}, // (136, 5) + {128, { 0, 0, 0}}, // (137, 5) + {128, { 0, 0, 0}}, // (138, 5) + {128, { 0, 0, 0}}, // (139, 5) + {128, { 0, 0, 0}}, // (140, 5) + {128, { 0, 0, 0}}, // (141, 5) + {128, { 0, 0, 0}}, // (142, 5) + {128, { 0, 0, 0}}, // (143, 5) + {128, { 0, 0, 0}}, // (144, 5) + {128, { 0, 0, 0}}, // (145, 5) + {128, { 0, 0, 0}}, // (146, 5) + {128, { 0, 0, 0}}, // (147, 5) + {128, { 0, 0, 0}}, // (148, 5) + {128, { 0, 0, 0}}, // (149, 5) + {128, { 0, 0, 0}}, // (150, 5) + {128, { 0, 0, 0}}, // (151, 5) + {128, { 0, 0, 0}}, // (152, 5) + {128, { 0, 0, 0}}, // (153, 5) + {128, { 0, 0, 0}}, // (154, 5) + {128, { 0, 0, 0}}, // (155, 5) + {128, { 0, 0, 0}}, // (156, 5) + {128, { 0, 0, 0}}, // (157, 5) + {128, { 0, 0, 0}}, // (158, 5) + {128, { 0, 0, 0}}, // (159, 5) + {128, { 0, 0, 0}}, // (160, 5) + {128, { 0, 0, 0}}, // (161, 5) + {128, { 0, 0, 0}}, // (162, 5) + {128, { 0, 0, 0}}, // (163, 5) + {128, { 0, 0, 0}}, // (164, 5) + {128, { 0, 0, 0}}, // (165, 5) + {128, { 0, 0, 0}}, // (166, 5) + {128, { 0, 0, 0}}, // (167, 5) + {128, { 0, 0, 0}}, // (168, 5) + {128, { 0, 0, 0}}, // (169, 5) + {128, { 0, 0, 0}}, // (170, 5) + {128, { 0, 0, 0}}, // (171, 5) + {128, { 0, 0, 0}}, // (172, 5) + {128, { 0, 0, 0}}, // (173, 5) + {128, { 0, 0, 0}}, // (174, 5) + {128, { 0, 0, 0}}, // (175, 5) + {128, { 0, 0, 0}}, // (176, 5) + {128, { 0, 0, 0}}, // (177, 5) + {128, { 0, 0, 0}}, // (178, 5) + {128, { 0, 0, 0}}, // (179, 5) + {128, { 0, 0, 0}}, // ( 0, 6) + {128, { 0, 0, 0}}, // ( 1, 6) + {128, { 0, 0, 0}}, // ( 2, 6) + {128, { 0, 0, 0}}, // ( 3, 6) + {128, { 0, 0, 0}}, // ( 4, 6) + {128, { 0, 0, 0}}, // ( 5, 6) + {128, { 0, 0, 0}}, // ( 6, 6) + {128, { 0, 0, 0}}, // ( 7, 6) + {128, { 0, 0, 0}}, // ( 8, 6) + {128, { 0, 0, 0}}, // ( 9, 6) + {128, { 0, 0, 0}}, // ( 10, 6) + {128, { 0, 0, 0}}, // ( 11, 6) + {128, { 0, 0, 0}}, // ( 12, 6) + {128, { 0, 0, 0}}, // ( 13, 6) + {128, { 0, 0, 0}}, // ( 14, 6) + {128, { 0, 0, 0}}, // ( 15, 6) + {128, { 0, 0, 0}}, // ( 16, 6) + {128, { 0, 0, 0}}, // ( 17, 6) + {128, { 0, 0, 0}}, // ( 18, 6) + {128, { 0, 0, 0}}, // ( 19, 6) + {128, { 0, 0, 0}}, // ( 20, 6) + {128, { 0, 0, 0}}, // ( 21, 6) + {128, { 0, 0, 0}}, // ( 22, 6) + {128, { 0, 0, 0}}, // ( 23, 6) + {128, { 0, 0, 0}}, // ( 24, 6) + {128, { 0, 0, 0}}, // ( 25, 6) + {128, { 0, 0, 0}}, // ( 26, 6) + {128, { 0, 0, 0}}, // ( 27, 6) + {128, { 0, 0, 0}}, // ( 28, 6) + {128, { 0, 0, 0}}, // ( 29, 6) + {128, { 0, 0, 0}}, // ( 30, 6) + {128, { 0, 0, 0}}, // ( 31, 6) + {128, { 0, 0, 0}}, // ( 32, 6) + {128, { 0, 0, 0}}, // ( 33, 6) + {128, { 0, 0, 0}}, // ( 34, 6) + {128, { 0, 0, 0}}, // ( 35, 6) + {128, { 0, 0, 0}}, // ( 36, 6) + {128, { 0, 0, 0}}, // ( 37, 6) + {128, { 0, 0, 0}}, // ( 38, 6) + {128, { 0, 0, 0}}, // ( 39, 6) + {128, { 0, 0, 0}}, // ( 40, 6) + {128, { 0, 0, 0}}, // ( 41, 6) + {128, { 0, 0, 0}}, // ( 42, 6) + {128, { 0, 0, 0}}, // ( 43, 6) + {128, { 0, 0, 0}}, // ( 44, 6) + {128, { 0, 0, 0}}, // ( 45, 6) + {128, { 0, 0, 0}}, // ( 46, 6) + {128, { 0, 0, 0}}, // ( 47, 6) + {128, { 0, 0, 0}}, // ( 48, 6) + {128, { 0, 0, 0}}, // ( 49, 6) + {128, { 0, 0, 0}}, // ( 50, 6) + {128, { 0, 0, 0}}, // ( 51, 6) + {128, { 0, 0, 0}}, // ( 52, 6) + {128, { 0, 0, 0}}, // ( 53, 6) + {128, { 0, 0, 0}}, // ( 54, 6) + {128, { 0, 0, 0}}, // ( 55, 6) + {128, { 0, 0, 0}}, // ( 56, 6) + {128, { 0, 0, 0}}, // ( 57, 6) + {128, { 0, 0, 0}}, // ( 58, 6) + {128, { 0, 0, 0}}, // ( 59, 6) + {126, { 0, 0, 0}}, // ( 60, 6) + { 92, { 0, 0, 0}}, // ( 61, 6) + { 50, { 0, 0, 0}}, // ( 62, 6) + { 10, { 0, 0, 0}}, // ( 63, 6) + { 0, { 0, 0, 0}}, // ( 64, 6) + { 0, { 0, 0, 0}}, // ( 65, 6) + { 0, { 0, 0, 0}}, // ( 66, 6) + { 0, { 0, 0, 0}}, // ( 67, 6) + { 0, { 0, 0, 0}}, // ( 68, 6) + { 0, { 0, 0, 0}}, // ( 69, 6) + { 0, { 0, 0, 0}}, // ( 70, 6) + { 0, { 0, 0, 0}}, // ( 71, 6) + { 0, { 0, 0, 0}}, // ( 72, 6) + { 0, { 0, 0, 0}}, // ( 73, 6) + { 0, { 0, 0, 0}}, // ( 74, 6) + { 0, { 0, 0, 0}}, // ( 75, 6) + { 0, { 0, 0, 0}}, // ( 76, 6) + { 0, { 0, 0, 0}}, // ( 77, 6) + { 0, { 0, 0, 0}}, // ( 78, 6) + { 0, { 0, 0, 0}}, // ( 79, 6) + { 0, { 0, 0, 0}}, // ( 80, 6) + { 0, { 0, 0, 0}}, // ( 81, 6) + { 0, { 0, 0, 0}}, // ( 82, 6) + { 0, { 0, 0, 0}}, // ( 83, 6) + { 0, { 0, 0, 0}}, // ( 84, 6) + { 0, { 0, 0, 0}}, // ( 85, 6) + { 0, { 0, 0, 0}}, // ( 86, 6) + { 0, { 0, 0, 0}}, // ( 87, 6) + { 0, { 0, 0, 0}}, // ( 88, 6) + { 0, { 0, 0, 0}}, // ( 89, 6) + { 0, { 0, 0, 0}}, // ( 90, 6) + { 0, { 0, 0, 0}}, // ( 91, 6) + { 0, { 0, 0, 0}}, // ( 92, 6) + { 0, { 0, 0, 0}}, // ( 93, 6) + { 0, { 0, 0, 0}}, // ( 94, 6) + { 0, { 0, 0, 0}}, // ( 95, 6) + { 0, { 0, 0, 0}}, // ( 96, 6) + { 0, { 0, 0, 0}}, // ( 97, 6) + { 0, { 0, 0, 0}}, // ( 98, 6) + { 0, { 0, 0, 0}}, // ( 99, 6) + { 0, { 0, 0, 0}}, // (100, 6) + { 0, { 0, 0, 0}}, // (101, 6) + { 0, { 0, 0, 0}}, // (102, 6) + { 0, { 0, 0, 0}}, // (103, 6) + { 0, { 0, 0, 0}}, // (104, 6) + { 0, { 0, 0, 0}}, // (105, 6) + { 0, { 0, 0, 0}}, // (106, 6) + { 0, { 0, 0, 0}}, // (107, 6) + { 0, { 0, 0, 0}}, // (108, 6) + { 0, { 0, 0, 0}}, // (109, 6) + { 0, { 0, 0, 0}}, // (110, 6) + { 0, { 0, 0, 0}}, // (111, 6) + { 0, { 0, 0, 0}}, // (112, 6) + { 0, { 0, 0, 0}}, // (113, 6) + { 0, { 0, 0, 0}}, // (114, 6) + { 0, { 0, 0, 0}}, // (115, 6) + { 10, { 0, 0, 0}}, // (116, 6) + { 50, { 0, 0, 0}}, // (117, 6) + { 92, { 0, 0, 0}}, // (118, 6) + {126, { 0, 0, 0}}, // (119, 6) + {128, { 0, 0, 0}}, // (120, 6) + {128, { 0, 0, 0}}, // (121, 6) + {128, { 0, 0, 0}}, // (122, 6) + {128, { 0, 0, 0}}, // (123, 6) + {128, { 0, 0, 0}}, // (124, 6) + {128, { 0, 0, 0}}, // (125, 6) + {128, { 0, 0, 0}}, // (126, 6) + {128, { 0, 0, 0}}, // (127, 6) + {128, { 0, 0, 0}}, // (128, 6) + {128, { 0, 0, 0}}, // (129, 6) + {128, { 0, 0, 0}}, // (130, 6) + {128, { 0, 0, 0}}, // (131, 6) + {128, { 0, 0, 0}}, // (132, 6) + {128, { 0, 0, 0}}, // (133, 6) + {128, { 0, 0, 0}}, // (134, 6) + {128, { 0, 0, 0}}, // (135, 6) + {128, { 0, 0, 0}}, // (136, 6) + {128, { 0, 0, 0}}, // (137, 6) + {128, { 0, 0, 0}}, // (138, 6) + {128, { 0, 0, 0}}, // (139, 6) + {128, { 0, 0, 0}}, // (140, 6) + {128, { 0, 0, 0}}, // (141, 6) + {128, { 0, 0, 0}}, // (142, 6) + {128, { 0, 0, 0}}, // (143, 6) + {128, { 0, 0, 0}}, // (144, 6) + {128, { 0, 0, 0}}, // (145, 6) + {128, { 0, 0, 0}}, // (146, 6) + {128, { 0, 0, 0}}, // (147, 6) + {128, { 0, 0, 0}}, // (148, 6) + {128, { 0, 0, 0}}, // (149, 6) + {128, { 0, 0, 0}}, // (150, 6) + {128, { 0, 0, 0}}, // (151, 6) + {128, { 0, 0, 0}}, // (152, 6) + {128, { 0, 0, 0}}, // (153, 6) + {128, { 0, 0, 0}}, // (154, 6) + {128, { 0, 0, 0}}, // (155, 6) + {128, { 0, 0, 0}}, // (156, 6) + {128, { 0, 0, 0}}, // (157, 6) + {128, { 0, 0, 0}}, // (158, 6) + {128, { 0, 0, 0}}, // (159, 6) + {128, { 0, 0, 0}}, // (160, 6) + {128, { 0, 0, 0}}, // (161, 6) + {128, { 0, 0, 0}}, // (162, 6) + {128, { 0, 0, 0}}, // (163, 6) + {128, { 0, 0, 0}}, // (164, 6) + {128, { 0, 0, 0}}, // (165, 6) + {128, { 0, 0, 0}}, // (166, 6) + {128, { 0, 0, 0}}, // (167, 6) + {128, { 0, 0, 0}}, // (168, 6) + {128, { 0, 0, 0}}, // (169, 6) + {128, { 0, 0, 0}}, // (170, 6) + {128, { 0, 0, 0}}, // (171, 6) + {128, { 0, 0, 0}}, // (172, 6) + {128, { 0, 0, 0}}, // (173, 6) + {128, { 0, 0, 0}}, // (174, 6) + {128, { 0, 0, 0}}, // (175, 6) + {128, { 0, 0, 0}}, // (176, 6) + {128, { 0, 0, 0}}, // (177, 6) + {128, { 0, 0, 0}}, // (178, 6) + {128, { 0, 0, 0}}, // (179, 6) + {128, { 0, 0, 0}}, // ( 0, 7) + {128, { 0, 0, 0}}, // ( 1, 7) + {128, { 0, 0, 0}}, // ( 2, 7) + {128, { 0, 0, 0}}, // ( 3, 7) + {128, { 0, 0, 0}}, // ( 4, 7) + {128, { 0, 0, 0}}, // ( 5, 7) + {128, { 0, 0, 0}}, // ( 6, 7) + {128, { 0, 0, 0}}, // ( 7, 7) + {128, { 0, 0, 0}}, // ( 8, 7) + {128, { 0, 0, 0}}, // ( 9, 7) + {128, { 0, 0, 0}}, // ( 10, 7) + {128, { 0, 0, 0}}, // ( 11, 7) + {128, { 0, 0, 0}}, // ( 12, 7) + {128, { 0, 0, 0}}, // ( 13, 7) + {128, { 0, 0, 0}}, // ( 14, 7) + {128, { 0, 0, 0}}, // ( 15, 7) + {128, { 0, 0, 0}}, // ( 16, 7) + {128, { 0, 0, 0}}, // ( 17, 7) + {128, { 0, 0, 0}}, // ( 18, 7) + {128, { 0, 0, 0}}, // ( 19, 7) + {128, { 0, 0, 0}}, // ( 20, 7) + {128, { 0, 0, 0}}, // ( 21, 7) + {128, { 0, 0, 0}}, // ( 22, 7) + {128, { 0, 0, 0}}, // ( 23, 7) + {128, { 0, 0, 0}}, // ( 24, 7) + {128, { 0, 0, 0}}, // ( 25, 7) + {128, { 0, 0, 0}}, // ( 26, 7) + {128, { 0, 0, 0}}, // ( 27, 7) + {128, { 0, 0, 0}}, // ( 28, 7) + {128, { 0, 0, 0}}, // ( 29, 7) + {128, { 0, 0, 0}}, // ( 30, 7) + {128, { 0, 0, 0}}, // ( 31, 7) + {128, { 0, 0, 0}}, // ( 32, 7) + {128, { 0, 0, 0}}, // ( 33, 7) + {128, { 0, 0, 0}}, // ( 34, 7) + {128, { 0, 0, 0}}, // ( 35, 7) + {128, { 0, 0, 0}}, // ( 36, 7) + {128, { 0, 0, 0}}, // ( 37, 7) + {128, { 0, 0, 0}}, // ( 38, 7) + {128, { 0, 0, 0}}, // ( 39, 7) + {128, { 0, 0, 0}}, // ( 40, 7) + {128, { 0, 0, 0}}, // ( 41, 7) + {128, { 0, 0, 0}}, // ( 42, 7) + {128, { 0, 0, 0}}, // ( 43, 7) + {128, { 0, 0, 0}}, // ( 44, 7) + {128, { 0, 0, 0}}, // ( 45, 7) + {128, { 0, 0, 0}}, // ( 46, 7) + {128, { 0, 0, 0}}, // ( 47, 7) + {128, { 0, 0, 0}}, // ( 48, 7) + {128, { 0, 0, 0}}, // ( 49, 7) + {128, { 0, 0, 0}}, // ( 50, 7) + {128, { 0, 0, 0}}, // ( 51, 7) + {128, { 0, 0, 0}}, // ( 52, 7) + {128, { 0, 0, 0}}, // ( 53, 7) + {128, { 0, 0, 0}}, // ( 54, 7) + {128, { 0, 0, 0}}, // ( 55, 7) + {128, { 0, 0, 0}}, // ( 56, 7) + {128, { 0, 0, 0}}, // ( 57, 7) + {107, { 0, 0, 0}}, // ( 58, 7) + { 57, { 0, 0, 0}}, // ( 59, 7) + { 12, { 0, 0, 0}}, // ( 60, 7) + { 0, { 0, 0, 0}}, // ( 61, 7) + { 0, { 0, 0, 0}}, // ( 62, 7) + { 0, { 0, 0, 0}}, // ( 63, 7) + { 0, { 0, 0, 0}}, // ( 64, 7) + { 0, { 0, 0, 0}}, // ( 65, 7) + { 0, { 0, 0, 0}}, // ( 66, 7) + { 0, { 0, 0, 0}}, // ( 67, 7) + { 0, { 0, 0, 0}}, // ( 68, 7) + { 0, { 0, 0, 0}}, // ( 69, 7) + { 0, { 0, 0, 0}}, // ( 70, 7) + { 0, { 0, 0, 0}}, // ( 71, 7) + { 0, { 0, 0, 0}}, // ( 72, 7) + { 0, { 0, 0, 0}}, // ( 73, 7) + { 0, { 0, 0, 0}}, // ( 74, 7) + { 0, { 0, 0, 0}}, // ( 75, 7) + { 0, { 0, 0, 0}}, // ( 76, 7) + { 0, { 0, 0, 0}}, // ( 77, 7) + { 0, { 0, 0, 0}}, // ( 78, 7) + { 0, { 0, 0, 0}}, // ( 79, 7) + { 0, { 0, 0, 0}}, // ( 80, 7) + { 0, { 0, 0, 0}}, // ( 81, 7) + { 0, { 0, 0, 0}}, // ( 82, 7) + { 0, { 0, 0, 0}}, // ( 83, 7) + { 0, { 0, 0, 0}}, // ( 84, 7) + { 0, { 0, 0, 0}}, // ( 85, 7) + { 0, { 0, 0, 0}}, // ( 86, 7) + { 0, { 0, 0, 0}}, // ( 87, 7) + { 0, { 0, 0, 0}}, // ( 88, 7) + { 0, { 0, 0, 0}}, // ( 89, 7) + { 0, { 0, 0, 0}}, // ( 90, 7) + { 0, { 0, 0, 0}}, // ( 91, 7) + { 0, { 0, 0, 0}}, // ( 92, 7) + { 0, { 0, 0, 0}}, // ( 93, 7) + { 0, { 0, 0, 0}}, // ( 94, 7) + { 0, { 0, 0, 0}}, // ( 95, 7) + { 0, { 0, 0, 0}}, // ( 96, 7) + { 0, { 0, 0, 0}}, // ( 97, 7) + { 0, { 0, 0, 0}}, // ( 98, 7) + { 0, { 0, 0, 0}}, // ( 99, 7) + { 0, { 0, 0, 0}}, // (100, 7) + { 0, { 0, 0, 0}}, // (101, 7) + { 0, { 0, 0, 0}}, // (102, 7) + { 0, { 0, 0, 0}}, // (103, 7) + { 0, { 0, 0, 0}}, // (104, 7) + { 0, { 0, 0, 0}}, // (105, 7) + { 0, { 0, 0, 0}}, // (106, 7) + { 0, { 0, 0, 0}}, // (107, 7) + { 0, { 0, 0, 0}}, // (108, 7) + { 0, { 0, 0, 0}}, // (109, 7) + { 0, { 0, 0, 0}}, // (110, 7) + { 0, { 0, 0, 0}}, // (111, 7) + { 0, { 0, 0, 0}}, // (112, 7) + { 0, { 0, 0, 0}}, // (113, 7) + { 0, { 0, 0, 0}}, // (114, 7) + { 0, { 0, 0, 0}}, // (115, 7) + { 0, { 0, 0, 0}}, // (116, 7) + { 0, { 0, 0, 0}}, // (117, 7) + { 0, { 0, 0, 0}}, // (118, 7) + { 12, { 0, 0, 0}}, // (119, 7) + { 57, { 0, 0, 0}}, // (120, 7) + {106, { 0, 0, 0}}, // (121, 7) + {128, { 0, 0, 0}}, // (122, 7) + {128, { 0, 0, 0}}, // (123, 7) + {128, { 0, 0, 0}}, // (124, 7) + {128, { 0, 0, 0}}, // (125, 7) + {128, { 0, 0, 0}}, // (126, 7) + {128, { 0, 0, 0}}, // (127, 7) + {128, { 0, 0, 0}}, // (128, 7) + {128, { 0, 0, 0}}, // (129, 7) + {128, { 0, 0, 0}}, // (130, 7) + {128, { 0, 0, 0}}, // (131, 7) + {128, { 0, 0, 0}}, // (132, 7) + {128, { 0, 0, 0}}, // (133, 7) + {128, { 0, 0, 0}}, // (134, 7) + {128, { 0, 0, 0}}, // (135, 7) + {128, { 0, 0, 0}}, // (136, 7) + {128, { 0, 0, 0}}, // (137, 7) + {128, { 0, 0, 0}}, // (138, 7) + {128, { 0, 0, 0}}, // (139, 7) + {128, { 0, 0, 0}}, // (140, 7) + {128, { 0, 0, 0}}, // (141, 7) + {128, { 0, 0, 0}}, // (142, 7) + {128, { 0, 0, 0}}, // (143, 7) + {128, { 0, 0, 0}}, // (144, 7) + {128, { 0, 0, 0}}, // (145, 7) + {128, { 0, 0, 0}}, // (146, 7) + {128, { 0, 0, 0}}, // (147, 7) + {128, { 0, 0, 0}}, // (148, 7) + {128, { 0, 0, 0}}, // (149, 7) + {128, { 0, 0, 0}}, // (150, 7) + {128, { 0, 0, 0}}, // (151, 7) + {128, { 0, 0, 0}}, // (152, 7) + {128, { 0, 0, 0}}, // (153, 7) + {128, { 0, 0, 0}}, // (154, 7) + {128, { 0, 0, 0}}, // (155, 7) + {128, { 0, 0, 0}}, // (156, 7) + {128, { 0, 0, 0}}, // (157, 7) + {128, { 0, 0, 0}}, // (158, 7) + {128, { 0, 0, 0}}, // (159, 7) + {128, { 0, 0, 0}}, // (160, 7) + {128, { 0, 0, 0}}, // (161, 7) + {128, { 0, 0, 0}}, // (162, 7) + {128, { 0, 0, 0}}, // (163, 7) + {128, { 0, 0, 0}}, // (164, 7) + {128, { 0, 0, 0}}, // (165, 7) + {128, { 0, 0, 0}}, // (166, 7) + {128, { 0, 0, 0}}, // (167, 7) + {128, { 0, 0, 0}}, // (168, 7) + {128, { 0, 0, 0}}, // (169, 7) + {128, { 0, 0, 0}}, // (170, 7) + {128, { 0, 0, 0}}, // (171, 7) + {128, { 0, 0, 0}}, // (172, 7) + {128, { 0, 0, 0}}, // (173, 7) + {128, { 0, 0, 0}}, // (174, 7) + {128, { 0, 0, 0}}, // (175, 7) + {128, { 0, 0, 0}}, // (176, 7) + {128, { 0, 0, 0}}, // (177, 7) + {128, { 0, 0, 0}}, // (178, 7) + {128, { 0, 0, 0}}, // (179, 7) + {128, { 0, 0, 0}}, // ( 0, 8) + {128, { 0, 0, 0}}, // ( 1, 8) + {128, { 0, 0, 0}}, // ( 2, 8) + {128, { 0, 0, 0}}, // ( 3, 8) + {128, { 0, 0, 0}}, // ( 4, 8) + {128, { 0, 0, 0}}, // ( 5, 8) + {128, { 0, 0, 0}}, // ( 6, 8) + {128, { 0, 0, 0}}, // ( 7, 8) + {128, { 0, 0, 0}}, // ( 8, 8) + {128, { 0, 0, 0}}, // ( 9, 8) + {128, { 0, 0, 0}}, // ( 10, 8) + {128, { 0, 0, 0}}, // ( 11, 8) + {128, { 0, 0, 0}}, // ( 12, 8) + {128, { 0, 0, 0}}, // ( 13, 8) + {128, { 0, 0, 0}}, // ( 14, 8) + {128, { 0, 0, 0}}, // ( 15, 8) + {128, { 0, 0, 0}}, // ( 16, 8) + {128, { 0, 0, 0}}, // ( 17, 8) + {128, { 0, 0, 0}}, // ( 18, 8) + {128, { 0, 0, 0}}, // ( 19, 8) + {128, { 0, 0, 0}}, // ( 20, 8) + {128, { 0, 0, 0}}, // ( 21, 8) + {128, { 0, 0, 0}}, // ( 22, 8) + {128, { 0, 0, 0}}, // ( 23, 8) + {128, { 0, 0, 0}}, // ( 24, 8) + {128, { 0, 0, 0}}, // ( 25, 8) + {128, { 0, 0, 0}}, // ( 26, 8) + {128, { 0, 0, 0}}, // ( 27, 8) + {128, { 0, 0, 0}}, // ( 28, 8) + {128, { 0, 0, 0}}, // ( 29, 8) + {128, { 0, 0, 0}}, // ( 30, 8) + {128, { 0, 0, 0}}, // ( 31, 8) + {128, { 0, 0, 0}}, // ( 32, 8) + {128, { 0, 0, 0}}, // ( 33, 8) + {128, { 0, 0, 0}}, // ( 34, 8) + {128, { 0, 0, 0}}, // ( 35, 8) + {128, { 0, 0, 0}}, // ( 36, 8) + {128, { 0, 0, 0}}, // ( 37, 8) + {128, { 0, 0, 0}}, // ( 38, 8) + {128, { 0, 0, 0}}, // ( 39, 8) + {128, { 0, 0, 0}}, // ( 40, 8) + {128, { 0, 0, 0}}, // ( 41, 8) + {128, { 0, 0, 0}}, // ( 42, 8) + {128, { 0, 0, 0}}, // ( 43, 8) + {128, { 0, 0, 0}}, // ( 44, 8) + {128, { 0, 0, 0}}, // ( 45, 8) + {128, { 0, 0, 0}}, // ( 46, 8) + {128, { 0, 0, 0}}, // ( 47, 8) + {128, { 0, 0, 0}}, // ( 48, 8) + {128, { 0, 0, 0}}, // ( 49, 8) + {128, { 0, 0, 0}}, // ( 50, 8) + {128, { 0, 0, 0}}, // ( 51, 8) + {128, { 0, 0, 0}}, // ( 52, 8) + {128, { 0, 0, 0}}, // ( 53, 8) + {128, { 0, 0, 0}}, // ( 54, 8) + {122, { 0, 0, 0}}, // ( 55, 8) + { 80, { 0, 0, 0}}, // ( 56, 8) + { 29, { 0, 0, 0}}, // ( 57, 8) + { 0, { 0, 0, 0}}, // ( 58, 8) + { 0, { 0, 0, 0}}, // ( 59, 8) + { 0, { 0, 0, 0}}, // ( 60, 8) + { 0, { 0, 0, 0}}, // ( 61, 8) + { 0, { 0, 0, 0}}, // ( 62, 8) + { 0, { 0, 0, 0}}, // ( 63, 8) + { 0, { 0, 0, 0}}, // ( 64, 8) + { 0, { 0, 0, 0}}, // ( 65, 8) + { 0, { 0, 0, 0}}, // ( 66, 8) + { 0, { 0, 0, 0}}, // ( 67, 8) + { 0, { 0, 0, 0}}, // ( 68, 8) + { 0, { 0, 0, 0}}, // ( 69, 8) + { 0, { 0, 0, 0}}, // ( 70, 8) + { 0, { 0, 0, 0}}, // ( 71, 8) + { 0, { 0, 0, 0}}, // ( 72, 8) + { 0, { 0, 0, 0}}, // ( 73, 8) + { 0, { 0, 0, 0}}, // ( 74, 8) + { 0, { 0, 0, 0}}, // ( 75, 8) + { 0, { 0, 0, 0}}, // ( 76, 8) + { 0, { 0, 0, 0}}, // ( 77, 8) + { 0, { 0, 0, 0}}, // ( 78, 8) + { 0, { 0, 0, 0}}, // ( 79, 8) + { 0, { 0, 0, 0}}, // ( 80, 8) + { 0, { 0, 0, 0}}, // ( 81, 8) + { 0, { 0, 0, 0}}, // ( 82, 8) + { 0, { 0, 0, 0}}, // ( 83, 8) + { 0, { 0, 0, 0}}, // ( 84, 8) + { 0, { 0, 0, 0}}, // ( 85, 8) + { 0, { 0, 0, 0}}, // ( 86, 8) + { 0, { 0, 0, 0}}, // ( 87, 8) + { 0, { 0, 0, 0}}, // ( 88, 8) + { 0, { 0, 0, 0}}, // ( 89, 8) + { 0, { 0, 0, 0}}, // ( 90, 8) + { 0, { 0, 0, 0}}, // ( 91, 8) + { 0, { 0, 0, 0}}, // ( 92, 8) + { 0, { 0, 0, 0}}, // ( 93, 8) + { 0, { 0, 0, 0}}, // ( 94, 8) + { 0, { 0, 0, 0}}, // ( 95, 8) + { 0, { 0, 0, 0}}, // ( 96, 8) + { 0, { 0, 0, 0}}, // ( 97, 8) + { 0, { 0, 0, 0}}, // ( 98, 8) + { 0, { 0, 0, 0}}, // ( 99, 8) + { 0, { 0, 0, 0}}, // (100, 8) + { 0, { 0, 0, 0}}, // (101, 8) + { 0, { 0, 0, 0}}, // (102, 8) + { 0, { 0, 0, 0}}, // (103, 8) + { 0, { 0, 0, 0}}, // (104, 8) + { 0, { 0, 0, 0}}, // (105, 8) + { 0, { 0, 0, 0}}, // (106, 8) + { 0, { 0, 0, 0}}, // (107, 8) + { 0, { 0, 0, 0}}, // (108, 8) + { 0, { 0, 0, 0}}, // (109, 8) + { 0, { 0, 0, 0}}, // (110, 8) + { 0, { 0, 0, 0}}, // (111, 8) + { 0, { 0, 0, 0}}, // (112, 8) + { 0, { 0, 0, 0}}, // (113, 8) + { 0, { 0, 0, 0}}, // (114, 8) + { 0, { 0, 0, 0}}, // (115, 8) + { 0, { 0, 0, 0}}, // (116, 8) + { 0, { 0, 0, 0}}, // (117, 8) + { 0, { 0, 0, 0}}, // (118, 8) + { 0, { 0, 0, 0}}, // (119, 8) + { 0, { 0, 0, 0}}, // (120, 8) + { 0, { 0, 0, 0}}, // (121, 8) + { 29, { 0, 0, 0}}, // (122, 8) + { 80, { 0, 0, 0}}, // (123, 8) + {122, { 0, 0, 0}}, // (124, 8) + {128, { 0, 0, 0}}, // (125, 8) + {128, { 0, 0, 0}}, // (126, 8) + {128, { 0, 0, 0}}, // (127, 8) + {128, { 0, 0, 0}}, // (128, 8) + {128, { 0, 0, 0}}, // (129, 8) + {128, { 0, 0, 0}}, // (130, 8) + {128, { 0, 0, 0}}, // (131, 8) + {128, { 0, 0, 0}}, // (132, 8) + {128, { 0, 0, 0}}, // (133, 8) + {128, { 0, 0, 0}}, // (134, 8) + {128, { 0, 0, 0}}, // (135, 8) + {128, { 0, 0, 0}}, // (136, 8) + {128, { 0, 0, 0}}, // (137, 8) + {128, { 0, 0, 0}}, // (138, 8) + {128, { 0, 0, 0}}, // (139, 8) + {128, { 0, 0, 0}}, // (140, 8) + {128, { 0, 0, 0}}, // (141, 8) + {128, { 0, 0, 0}}, // (142, 8) + {128, { 0, 0, 0}}, // (143, 8) + {128, { 0, 0, 0}}, // (144, 8) + {128, { 0, 0, 0}}, // (145, 8) + {128, { 0, 0, 0}}, // (146, 8) + {128, { 0, 0, 0}}, // (147, 8) + {128, { 0, 0, 0}}, // (148, 8) + {128, { 0, 0, 0}}, // (149, 8) + {128, { 0, 0, 0}}, // (150, 8) + {128, { 0, 0, 0}}, // (151, 8) + {128, { 0, 0, 0}}, // (152, 8) + {128, { 0, 0, 0}}, // (153, 8) + {128, { 0, 0, 0}}, // (154, 8) + {128, { 0, 0, 0}}, // (155, 8) + {128, { 0, 0, 0}}, // (156, 8) + {128, { 0, 0, 0}}, // (157, 8) + {128, { 0, 0, 0}}, // (158, 8) + {128, { 0, 0, 0}}, // (159, 8) + {128, { 0, 0, 0}}, // (160, 8) + {128, { 0, 0, 0}}, // (161, 8) + {128, { 0, 0, 0}}, // (162, 8) + {128, { 0, 0, 0}}, // (163, 8) + {128, { 0, 0, 0}}, // (164, 8) + {128, { 0, 0, 0}}, // (165, 8) + {128, { 0, 0, 0}}, // (166, 8) + {128, { 0, 0, 0}}, // (167, 8) + {128, { 0, 0, 0}}, // (168, 8) + {128, { 0, 0, 0}}, // (169, 8) + {128, { 0, 0, 0}}, // (170, 8) + {128, { 0, 0, 0}}, // (171, 8) + {128, { 0, 0, 0}}, // (172, 8) + {128, { 0, 0, 0}}, // (173, 8) + {128, { 0, 0, 0}}, // (174, 8) + {128, { 0, 0, 0}}, // (175, 8) + {128, { 0, 0, 0}}, // (176, 8) + {128, { 0, 0, 0}}, // (177, 8) + {128, { 0, 0, 0}}, // (178, 8) + {128, { 0, 0, 0}}, // (179, 8) + {128, { 0, 0, 0}}, // ( 0, 9) + {128, { 0, 0, 0}}, // ( 1, 9) + {128, { 0, 0, 0}}, // ( 2, 9) + {128, { 0, 0, 0}}, // ( 3, 9) + {128, { 0, 0, 0}}, // ( 4, 9) + {128, { 0, 0, 0}}, // ( 5, 9) + {128, { 0, 0, 0}}, // ( 6, 9) + {128, { 0, 0, 0}}, // ( 7, 9) + {128, { 0, 0, 0}}, // ( 8, 9) + {128, { 0, 0, 0}}, // ( 9, 9) + {128, { 0, 0, 0}}, // ( 10, 9) + {128, { 0, 0, 0}}, // ( 11, 9) + {128, { 0, 0, 0}}, // ( 12, 9) + {128, { 0, 0, 0}}, // ( 13, 9) + {128, { 0, 0, 0}}, // ( 14, 9) + {128, { 0, 0, 0}}, // ( 15, 9) + {128, { 0, 0, 0}}, // ( 16, 9) + {128, { 0, 0, 0}}, // ( 17, 9) + {128, { 0, 0, 0}}, // ( 18, 9) + {128, { 0, 0, 0}}, // ( 19, 9) + {128, { 0, 0, 0}}, // ( 20, 9) + {128, { 0, 0, 0}}, // ( 21, 9) + {128, { 0, 0, 0}}, // ( 22, 9) + {128, { 0, 0, 0}}, // ( 23, 9) + {128, { 0, 0, 0}}, // ( 24, 9) + {128, { 0, 0, 0}}, // ( 25, 9) + {128, { 0, 0, 0}}, // ( 26, 9) + {128, { 0, 0, 0}}, // ( 27, 9) + {128, { 0, 0, 0}}, // ( 28, 9) + {128, { 0, 0, 0}}, // ( 29, 9) + {128, { 0, 0, 0}}, // ( 30, 9) + {128, { 0, 0, 0}}, // ( 31, 9) + {128, { 0, 0, 0}}, // ( 32, 9) + {128, { 0, 0, 0}}, // ( 33, 9) + {128, { 0, 0, 0}}, // ( 34, 9) + {128, { 0, 0, 0}}, // ( 35, 9) + {128, { 0, 0, 0}}, // ( 36, 9) + {128, { 0, 0, 0}}, // ( 37, 9) + {128, { 0, 0, 0}}, // ( 38, 9) + {128, { 0, 0, 0}}, // ( 39, 9) + {128, { 0, 0, 0}}, // ( 40, 9) + {128, { 0, 0, 0}}, // ( 41, 9) + {128, { 0, 0, 0}}, // ( 42, 9) + {128, { 0, 0, 0}}, // ( 43, 9) + {128, { 0, 0, 0}}, // ( 44, 9) + {128, { 0, 0, 0}}, // ( 45, 9) + {128, { 0, 0, 0}}, // ( 46, 9) + {128, { 0, 0, 0}}, // ( 47, 9) + {128, { 0, 0, 0}}, // ( 48, 9) + {128, { 0, 0, 0}}, // ( 49, 9) + {128, { 0, 0, 0}}, // ( 50, 9) + {128, { 0, 0, 0}}, // ( 51, 9) + {128, { 0, 0, 0}}, // ( 52, 9) + {116, { 0, 0, 0}}, // ( 53, 9) + { 61, { 0, 0, 0}}, // ( 54, 9) + { 9, { 0, 0, 0}}, // ( 55, 9) + { 0, { 0, 0, 0}}, // ( 56, 9) + { 0, { 0, 0, 0}}, // ( 57, 9) + { 0, { 0, 0, 0}}, // ( 58, 9) + { 0, { 0, 0, 0}}, // ( 59, 9) + { 0, { 0, 0, 0}}, // ( 60, 9) + { 0, { 0, 0, 0}}, // ( 61, 9) + { 0, { 0, 0, 0}}, // ( 62, 9) + { 0, { 0, 0, 0}}, // ( 63, 9) + { 0, { 0, 0, 0}}, // ( 64, 9) + { 0, { 0, 0, 0}}, // ( 65, 9) + { 0, { 0, 0, 0}}, // ( 66, 9) + { 0, { 0, 0, 0}}, // ( 67, 9) + { 0, { 0, 0, 0}}, // ( 68, 9) + { 0, { 0, 0, 0}}, // ( 69, 9) + { 0, { 0, 0, 0}}, // ( 70, 9) + { 0, { 0, 0, 0}}, // ( 71, 9) + { 0, { 0, 0, 0}}, // ( 72, 9) + { 0, { 0, 0, 0}}, // ( 73, 9) + { 0, { 0, 0, 0}}, // ( 74, 9) + { 0, { 0, 0, 0}}, // ( 75, 9) + { 0, { 0, 0, 0}}, // ( 76, 9) + { 0, { 0, 0, 0}}, // ( 77, 9) + { 0, { 0, 0, 0}}, // ( 78, 9) + { 0, { 0, 0, 0}}, // ( 79, 9) + { 0, { 0, 0, 0}}, // ( 80, 9) + { 0, { 0, 0, 0}}, // ( 81, 9) + { 0, { 0, 0, 0}}, // ( 82, 9) + { 0, { 0, 0, 0}}, // ( 83, 9) + { 0, { 0, 0, 0}}, // ( 84, 9) + { 0, { 0, 0, 0}}, // ( 85, 9) + { 0, { 0, 0, 0}}, // ( 86, 9) + { 0, { 0, 0, 0}}, // ( 87, 9) + { 0, { 0, 0, 0}}, // ( 88, 9) + { 0, { 0, 0, 0}}, // ( 89, 9) + { 0, { 0, 0, 0}}, // ( 90, 9) + { 0, { 0, 0, 0}}, // ( 91, 9) + { 0, { 0, 0, 0}}, // ( 92, 9) + { 0, { 0, 0, 0}}, // ( 93, 9) + { 0, { 0, 0, 0}}, // ( 94, 9) + { 0, { 0, 0, 0}}, // ( 95, 9) + { 0, { 0, 0, 0}}, // ( 96, 9) + { 0, { 0, 0, 0}}, // ( 97, 9) + { 0, { 0, 0, 0}}, // ( 98, 9) + { 0, { 0, 0, 0}}, // ( 99, 9) + { 0, { 0, 0, 0}}, // (100, 9) + { 0, { 0, 0, 0}}, // (101, 9) + { 0, { 0, 0, 0}}, // (102, 9) + { 0, { 0, 0, 0}}, // (103, 9) + { 0, { 0, 0, 0}}, // (104, 9) + { 0, { 0, 0, 0}}, // (105, 9) + { 0, { 0, 0, 0}}, // (106, 9) + { 0, { 0, 0, 0}}, // (107, 9) + { 0, { 0, 0, 0}}, // (108, 9) + { 0, { 0, 0, 0}}, // (109, 9) + { 0, { 0, 0, 0}}, // (110, 9) + { 0, { 0, 0, 0}}, // (111, 9) + { 0, { 0, 0, 0}}, // (112, 9) + { 0, { 0, 0, 0}}, // (113, 9) + { 0, { 0, 0, 0}}, // (114, 9) + { 0, { 0, 0, 0}}, // (115, 9) + { 0, { 0, 0, 0}}, // (116, 9) + { 0, { 0, 0, 0}}, // (117, 9) + { 0, { 0, 0, 0}}, // (118, 9) + { 0, { 0, 0, 0}}, // (119, 9) + { 0, { 0, 0, 0}}, // (120, 9) + { 0, { 0, 0, 0}}, // (121, 9) + { 0, { 0, 0, 0}}, // (122, 9) + { 0, { 0, 0, 0}}, // (123, 9) + { 9, { 0, 0, 0}}, // (124, 9) + { 61, { 0, 0, 0}}, // (125, 9) + {116, { 0, 0, 0}}, // (126, 9) + {128, { 0, 0, 0}}, // (127, 9) + {128, { 0, 0, 0}}, // (128, 9) + {128, { 0, 0, 0}}, // (129, 9) + {128, { 0, 0, 0}}, // (130, 9) + {128, { 0, 0, 0}}, // (131, 9) + {128, { 0, 0, 0}}, // (132, 9) + {128, { 0, 0, 0}}, // (133, 9) + {128, { 0, 0, 0}}, // (134, 9) + {128, { 0, 0, 0}}, // (135, 9) + {128, { 0, 0, 0}}, // (136, 9) + {128, { 0, 0, 0}}, // (137, 9) + {128, { 0, 0, 0}}, // (138, 9) + {128, { 0, 0, 0}}, // (139, 9) + {128, { 0, 0, 0}}, // (140, 9) + {128, { 0, 0, 0}}, // (141, 9) + {128, { 0, 0, 0}}, // (142, 9) + {128, { 0, 0, 0}}, // (143, 9) + {128, { 0, 0, 0}}, // (144, 9) + {128, { 0, 0, 0}}, // (145, 9) + {128, { 0, 0, 0}}, // (146, 9) + {128, { 0, 0, 0}}, // (147, 9) + {128, { 0, 0, 0}}, // (148, 9) + {128, { 0, 0, 0}}, // (149, 9) + {128, { 0, 0, 0}}, // (150, 9) + {128, { 0, 0, 0}}, // (151, 9) + {128, { 0, 0, 0}}, // (152, 9) + {128, { 0, 0, 0}}, // (153, 9) + {128, { 0, 0, 0}}, // (154, 9) + {128, { 0, 0, 0}}, // (155, 9) + {128, { 0, 0, 0}}, // (156, 9) + {128, { 0, 0, 0}}, // (157, 9) + {128, { 0, 0, 0}}, // (158, 9) + {128, { 0, 0, 0}}, // (159, 9) + {128, { 0, 0, 0}}, // (160, 9) + {128, { 0, 0, 0}}, // (161, 9) + {128, { 0, 0, 0}}, // (162, 9) + {128, { 0, 0, 0}}, // (163, 9) + {128, { 0, 0, 0}}, // (164, 9) + {128, { 0, 0, 0}}, // (165, 9) + {128, { 0, 0, 0}}, // (166, 9) + {128, { 0, 0, 0}}, // (167, 9) + {128, { 0, 0, 0}}, // (168, 9) + {128, { 0, 0, 0}}, // (169, 9) + {128, { 0, 0, 0}}, // (170, 9) + {128, { 0, 0, 0}}, // (171, 9) + {128, { 0, 0, 0}}, // (172, 9) + {128, { 0, 0, 0}}, // (173, 9) + {128, { 0, 0, 0}}, // (174, 9) + {128, { 0, 0, 0}}, // (175, 9) + {128, { 0, 0, 0}}, // (176, 9) + {128, { 0, 0, 0}}, // (177, 9) + {128, { 0, 0, 0}}, // (178, 9) + {128, { 0, 0, 0}}, // (179, 9) + {128, { 0, 0, 0}}, // ( 0, 10) + {128, { 0, 0, 0}}, // ( 1, 10) + {128, { 0, 0, 0}}, // ( 2, 10) + {128, { 0, 0, 0}}, // ( 3, 10) + {128, { 0, 0, 0}}, // ( 4, 10) + {128, { 0, 0, 0}}, // ( 5, 10) + {128, { 0, 0, 0}}, // ( 6, 10) + {128, { 0, 0, 0}}, // ( 7, 10) + {128, { 0, 0, 0}}, // ( 8, 10) + {128, { 0, 0, 0}}, // ( 9, 10) + {128, { 0, 0, 0}}, // ( 10, 10) + {128, { 0, 0, 0}}, // ( 11, 10) + {128, { 0, 0, 0}}, // ( 12, 10) + {128, { 0, 0, 0}}, // ( 13, 10) + {128, { 0, 0, 0}}, // ( 14, 10) + {128, { 0, 0, 0}}, // ( 15, 10) + {128, { 0, 0, 0}}, // ( 16, 10) + {128, { 0, 0, 0}}, // ( 17, 10) + {128, { 0, 0, 0}}, // ( 18, 10) + {128, { 0, 0, 0}}, // ( 19, 10) + {128, { 0, 0, 0}}, // ( 20, 10) + {128, { 0, 0, 0}}, // ( 21, 10) + {128, { 0, 0, 0}}, // ( 22, 10) + {128, { 0, 0, 0}}, // ( 23, 10) + {128, { 0, 0, 0}}, // ( 24, 10) + {128, { 0, 0, 0}}, // ( 25, 10) + {128, { 0, 0, 0}}, // ( 26, 10) + {128, { 0, 0, 0}}, // ( 27, 10) + {128, { 0, 0, 0}}, // ( 28, 10) + {128, { 0, 0, 0}}, // ( 29, 10) + {128, { 0, 0, 0}}, // ( 30, 10) + {128, { 0, 0, 0}}, // ( 31, 10) + {128, { 0, 0, 0}}, // ( 32, 10) + {128, { 0, 0, 0}}, // ( 33, 10) + {128, { 0, 0, 0}}, // ( 34, 10) + {128, { 0, 0, 0}}, // ( 35, 10) + {128, { 0, 0, 0}}, // ( 36, 10) + {128, { 0, 0, 0}}, // ( 37, 10) + {128, { 0, 0, 0}}, // ( 38, 10) + {128, { 0, 0, 0}}, // ( 39, 10) + {128, { 0, 0, 0}}, // ( 40, 10) + {128, { 0, 0, 0}}, // ( 41, 10) + {128, { 0, 0, 0}}, // ( 42, 10) + {128, { 0, 0, 0}}, // ( 43, 10) + {128, { 0, 0, 0}}, // ( 44, 10) + {128, { 0, 0, 0}}, // ( 45, 10) + {128, { 0, 0, 0}}, // ( 46, 10) + {128, { 0, 0, 0}}, // ( 47, 10) + {128, { 0, 0, 0}}, // ( 48, 10) + {128, { 0, 0, 0}}, // ( 49, 10) + {128, { 0, 0, 0}}, // ( 50, 10) + {108, { 0, 0, 0}}, // ( 51, 10) + { 50, { 0, 0, 0}}, // ( 52, 10) + { 4, { 0, 0, 0}}, // ( 53, 10) + { 0, { 0, 0, 0}}, // ( 54, 10) + { 0, { 0, 0, 0}}, // ( 55, 10) + { 0, { 0, 0, 0}}, // ( 56, 10) + { 0, { 0, 0, 0}}, // ( 57, 10) + { 0, { 0, 0, 0}}, // ( 58, 10) + { 0, { 0, 0, 0}}, // ( 59, 10) + { 0, { 0, 0, 0}}, // ( 60, 10) + { 0, { 0, 0, 0}}, // ( 61, 10) + { 0, { 0, 0, 0}}, // ( 62, 10) + { 0, { 0, 0, 0}}, // ( 63, 10) + { 0, { 0, 0, 0}}, // ( 64, 10) + { 0, { 0, 0, 0}}, // ( 65, 10) + { 0, { 0, 0, 0}}, // ( 66, 10) + { 0, { 0, 0, 0}}, // ( 67, 10) + { 0, { 0, 0, 0}}, // ( 68, 10) + { 0, { 0, 0, 0}}, // ( 69, 10) + { 0, { 0, 0, 0}}, // ( 70, 10) + { 0, { 0, 0, 0}}, // ( 71, 10) + { 0, { 0, 0, 0}}, // ( 72, 10) + { 0, { 0, 0, 0}}, // ( 73, 10) + { 0, { 0, 0, 0}}, // ( 74, 10) + { 0, { 0, 0, 0}}, // ( 75, 10) + { 0, { 0, 0, 0}}, // ( 76, 10) + { 0, { 0, 0, 0}}, // ( 77, 10) + { 0, { 0, 0, 0}}, // ( 78, 10) + { 0, { 0, 0, 0}}, // ( 79, 10) + { 0, { 0, 0, 0}}, // ( 80, 10) + { 0, { 0, 0, 0}}, // ( 81, 10) + { 0, { 0, 0, 0}}, // ( 82, 10) + { 0, { 0, 0, 0}}, // ( 83, 10) + { 0, { 0, 0, 0}}, // ( 84, 10) + { 0, { 0, 0, 0}}, // ( 85, 10) + { 0, { 0, 0, 0}}, // ( 86, 10) + { 0, { 0, 0, 0}}, // ( 87, 10) + { 0, { 0, 0, 0}}, // ( 88, 10) + { 0, { 0, 0, 0}}, // ( 89, 10) + { 0, { 0, 0, 0}}, // ( 90, 10) + { 0, { 0, 0, 0}}, // ( 91, 10) + { 0, { 0, 0, 0}}, // ( 92, 10) + { 0, { 0, 0, 0}}, // ( 93, 10) + { 0, { 0, 0, 0}}, // ( 94, 10) + { 0, { 0, 0, 0}}, // ( 95, 10) + { 0, { 0, 0, 0}}, // ( 96, 10) + { 0, { 0, 0, 0}}, // ( 97, 10) + { 0, { 0, 0, 0}}, // ( 98, 10) + { 0, { 0, 0, 0}}, // ( 99, 10) + { 0, { 0, 0, 0}}, // (100, 10) + { 0, { 0, 0, 0}}, // (101, 10) + { 0, { 0, 0, 0}}, // (102, 10) + { 0, { 0, 0, 0}}, // (103, 10) + { 0, { 0, 0, 0}}, // (104, 10) + { 0, { 0, 0, 0}}, // (105, 10) + { 0, { 0, 0, 0}}, // (106, 10) + { 0, { 0, 0, 0}}, // (107, 10) + { 0, { 0, 0, 0}}, // (108, 10) + { 0, { 0, 0, 0}}, // (109, 10) + { 0, { 0, 0, 0}}, // (110, 10) + { 0, { 0, 0, 0}}, // (111, 10) + { 0, { 0, 0, 0}}, // (112, 10) + { 0, { 0, 0, 0}}, // (113, 10) + { 0, { 0, 0, 0}}, // (114, 10) + { 0, { 0, 0, 0}}, // (115, 10) + { 0, { 0, 0, 0}}, // (116, 10) + { 0, { 0, 0, 0}}, // (117, 10) + { 0, { 0, 0, 0}}, // (118, 10) + { 0, { 0, 0, 0}}, // (119, 10) + { 0, { 0, 0, 0}}, // (120, 10) + { 0, { 0, 0, 0}}, // (121, 10) + { 0, { 0, 0, 0}}, // (122, 10) + { 0, { 0, 0, 0}}, // (123, 10) + { 0, { 0, 0, 0}}, // (124, 10) + { 0, { 0, 0, 0}}, // (125, 10) + { 4, { 0, 0, 0}}, // (126, 10) + { 50, { 0, 0, 0}}, // (127, 10) + {108, { 0, 0, 0}}, // (128, 10) + {128, { 0, 0, 0}}, // (129, 10) + {128, { 0, 0, 0}}, // (130, 10) + {128, { 0, 0, 0}}, // (131, 10) + {128, { 0, 0, 0}}, // (132, 10) + {128, { 0, 0, 0}}, // (133, 10) + {128, { 0, 0, 0}}, // (134, 10) + {128, { 0, 0, 0}}, // (135, 10) + {128, { 0, 0, 0}}, // (136, 10) + {128, { 0, 0, 0}}, // (137, 10) + {128, { 0, 0, 0}}, // (138, 10) + {128, { 0, 0, 0}}, // (139, 10) + {128, { 0, 0, 0}}, // (140, 10) + {128, { 0, 0, 0}}, // (141, 10) + {128, { 0, 0, 0}}, // (142, 10) + {128, { 0, 0, 0}}, // (143, 10) + {128, { 0, 0, 0}}, // (144, 10) + {128, { 0, 0, 0}}, // (145, 10) + {128, { 0, 0, 0}}, // (146, 10) + {128, { 0, 0, 0}}, // (147, 10) + {128, { 0, 0, 0}}, // (148, 10) + {128, { 0, 0, 0}}, // (149, 10) + {128, { 0, 0, 0}}, // (150, 10) + {128, { 0, 0, 0}}, // (151, 10) + {128, { 0, 0, 0}}, // (152, 10) + {128, { 0, 0, 0}}, // (153, 10) + {128, { 0, 0, 0}}, // (154, 10) + {128, { 0, 0, 0}}, // (155, 10) + {128, { 0, 0, 0}}, // (156, 10) + {128, { 0, 0, 0}}, // (157, 10) + {128, { 0, 0, 0}}, // (158, 10) + {128, { 0, 0, 0}}, // (159, 10) + {128, { 0, 0, 0}}, // (160, 10) + {128, { 0, 0, 0}}, // (161, 10) + {128, { 0, 0, 0}}, // (162, 10) + {128, { 0, 0, 0}}, // (163, 10) + {128, { 0, 0, 0}}, // (164, 10) + {128, { 0, 0, 0}}, // (165, 10) + {128, { 0, 0, 0}}, // (166, 10) + {128, { 0, 0, 0}}, // (167, 10) + {128, { 0, 0, 0}}, // (168, 10) + {128, { 0, 0, 0}}, // (169, 10) + {128, { 0, 0, 0}}, // (170, 10) + {128, { 0, 0, 0}}, // (171, 10) + {128, { 0, 0, 0}}, // (172, 10) + {128, { 0, 0, 0}}, // (173, 10) + {128, { 0, 0, 0}}, // (174, 10) + {128, { 0, 0, 0}}, // (175, 10) + {128, { 0, 0, 0}}, // (176, 10) + {128, { 0, 0, 0}}, // (177, 10) + {128, { 0, 0, 0}}, // (178, 10) + {128, { 0, 0, 0}}, // (179, 10) + {128, { 0, 0, 0}}, // ( 0, 11) + {128, { 0, 0, 0}}, // ( 1, 11) + {128, { 0, 0, 0}}, // ( 2, 11) + {128, { 0, 0, 0}}, // ( 3, 11) + {128, { 0, 0, 0}}, // ( 4, 11) + {128, { 0, 0, 0}}, // ( 5, 11) + {128, { 0, 0, 0}}, // ( 6, 11) + {128, { 0, 0, 0}}, // ( 7, 11) + {128, { 0, 0, 0}}, // ( 8, 11) + {128, { 0, 0, 0}}, // ( 9, 11) + {128, { 0, 0, 0}}, // ( 10, 11) + {128, { 0, 0, 0}}, // ( 11, 11) + {128, { 0, 0, 0}}, // ( 12, 11) + {128, { 0, 0, 0}}, // ( 13, 11) + {128, { 0, 0, 0}}, // ( 14, 11) + {128, { 0, 0, 0}}, // ( 15, 11) + {128, { 0, 0, 0}}, // ( 16, 11) + {128, { 0, 0, 0}}, // ( 17, 11) + {128, { 0, 0, 0}}, // ( 18, 11) + {128, { 0, 0, 0}}, // ( 19, 11) + {128, { 0, 0, 0}}, // ( 20, 11) + {128, { 0, 0, 0}}, // ( 21, 11) + {128, { 0, 0, 0}}, // ( 22, 11) + {128, { 0, 0, 0}}, // ( 23, 11) + {128, { 0, 0, 0}}, // ( 24, 11) + {128, { 0, 0, 0}}, // ( 25, 11) + {128, { 0, 0, 0}}, // ( 26, 11) + {128, { 0, 0, 0}}, // ( 27, 11) + {128, { 0, 0, 0}}, // ( 28, 11) + {128, { 0, 0, 0}}, // ( 29, 11) + {128, { 0, 0, 0}}, // ( 30, 11) + {128, { 0, 0, 0}}, // ( 31, 11) + {128, { 0, 0, 0}}, // ( 32, 11) + {128, { 0, 0, 0}}, // ( 33, 11) + {128, { 0, 0, 0}}, // ( 34, 11) + {128, { 0, 0, 0}}, // ( 35, 11) + {128, { 0, 0, 0}}, // ( 36, 11) + {128, { 0, 0, 0}}, // ( 37, 11) + {128, { 0, 0, 0}}, // ( 38, 11) + {128, { 0, 0, 0}}, // ( 39, 11) + {128, { 0, 0, 0}}, // ( 40, 11) + {128, { 0, 0, 0}}, // ( 41, 11) + {128, { 0, 0, 0}}, // ( 42, 11) + {128, { 0, 0, 0}}, // ( 43, 11) + {128, { 0, 0, 0}}, // ( 44, 11) + {128, { 0, 0, 0}}, // ( 45, 11) + {128, { 0, 0, 0}}, // ( 46, 11) + {128, { 0, 0, 0}}, // ( 47, 11) + {128, { 0, 0, 0}}, // ( 48, 11) + {111, { 0, 0, 0}}, // ( 49, 11) + { 47, { 0, 0, 0}}, // ( 50, 11) + { 2, { 0, 0, 0}}, // ( 51, 11) + { 0, { 0, 0, 0}}, // ( 52, 11) + { 0, { 0, 0, 0}}, // ( 53, 11) + { 0, { 0, 0, 0}}, // ( 54, 11) + { 0, { 0, 0, 0}}, // ( 55, 11) + { 0, { 0, 0, 0}}, // ( 56, 11) + { 0, { 0, 0, 0}}, // ( 57, 11) + { 0, { 0, 0, 0}}, // ( 58, 11) + { 0, { 0, 0, 0}}, // ( 59, 11) + { 0, { 0, 0, 0}}, // ( 60, 11) + { 0, { 0, 0, 0}}, // ( 61, 11) + { 0, { 0, 0, 0}}, // ( 62, 11) + { 0, { 0, 0, 0}}, // ( 63, 11) + { 0, { 0, 0, 0}}, // ( 64, 11) + { 0, { 0, 0, 0}}, // ( 65, 11) + { 0, { 0, 0, 0}}, // ( 66, 11) + { 0, { 0, 0, 0}}, // ( 67, 11) + { 0, { 0, 0, 0}}, // ( 68, 11) + { 0, { 0, 0, 0}}, // ( 69, 11) + { 0, { 0, 0, 0}}, // ( 70, 11) + { 0, { 0, 0, 0}}, // ( 71, 11) + { 0, { 0, 0, 0}}, // ( 72, 11) + { 0, { 0, 0, 0}}, // ( 73, 11) + { 0, { 0, 0, 0}}, // ( 74, 11) + { 0, { 0, 0, 0}}, // ( 75, 11) + { 0, { 0, 0, 0}}, // ( 76, 11) + { 0, { 0, 0, 0}}, // ( 77, 11) + { 0, { 0, 0, 0}}, // ( 78, 11) + { 0, { 0, 0, 0}}, // ( 79, 11) + { 0, { 0, 0, 0}}, // ( 80, 11) + { 0, { 0, 0, 0}}, // ( 81, 11) + { 0, { 0, 0, 0}}, // ( 82, 11) + { 0, { 0, 0, 0}}, // ( 83, 11) + { 0, { 0, 0, 0}}, // ( 84, 11) + { 0, { 0, 0, 0}}, // ( 85, 11) + { 0, { 0, 0, 0}}, // ( 86, 11) + { 0, { 0, 0, 0}}, // ( 87, 11) + { 0, { 0, 0, 0}}, // ( 88, 11) + { 0, { 0, 0, 0}}, // ( 89, 11) + { 0, { 0, 0, 0}}, // ( 90, 11) + { 0, { 0, 0, 0}}, // ( 91, 11) + { 0, { 0, 0, 0}}, // ( 92, 11) + { 0, { 0, 0, 0}}, // ( 93, 11) + { 0, { 0, 0, 0}}, // ( 94, 11) + { 0, { 0, 0, 0}}, // ( 95, 11) + { 0, { 0, 0, 0}}, // ( 96, 11) + { 0, { 0, 0, 0}}, // ( 97, 11) + { 0, { 0, 0, 0}}, // ( 98, 11) + { 0, { 0, 0, 0}}, // ( 99, 11) + { 0, { 0, 0, 0}}, // (100, 11) + { 0, { 0, 0, 0}}, // (101, 11) + { 0, { 0, 0, 0}}, // (102, 11) + { 0, { 0, 0, 0}}, // (103, 11) + { 0, { 0, 0, 0}}, // (104, 11) + { 0, { 0, 0, 0}}, // (105, 11) + { 0, { 0, 0, 0}}, // (106, 11) + { 0, { 0, 0, 0}}, // (107, 11) + { 0, { 0, 0, 0}}, // (108, 11) + { 0, { 0, 0, 0}}, // (109, 11) + { 0, { 0, 0, 0}}, // (110, 11) + { 0, { 0, 0, 0}}, // (111, 11) + { 0, { 0, 0, 0}}, // (112, 11) + { 0, { 0, 0, 0}}, // (113, 11) + { 0, { 0, 0, 0}}, // (114, 11) + { 0, { 0, 0, 0}}, // (115, 11) + { 0, { 0, 0, 0}}, // (116, 11) + { 0, { 0, 0, 0}}, // (117, 11) + { 0, { 0, 0, 0}}, // (118, 11) + { 0, { 0, 0, 0}}, // (119, 11) + { 0, { 0, 0, 0}}, // (120, 11) + { 0, { 0, 0, 0}}, // (121, 11) + { 0, { 0, 0, 0}}, // (122, 11) + { 0, { 0, 0, 0}}, // (123, 11) + { 0, { 0, 0, 0}}, // (124, 11) + { 0, { 0, 0, 0}}, // (125, 11) + { 0, { 0, 0, 0}}, // (126, 11) + { 0, { 0, 0, 0}}, // (127, 11) + { 2, { 0, 0, 0}}, // (128, 11) + { 47, { 0, 0, 0}}, // (129, 11) + {111, { 0, 0, 0}}, // (130, 11) + {128, { 0, 0, 0}}, // (131, 11) + {128, { 0, 0, 0}}, // (132, 11) + {128, { 0, 0, 0}}, // (133, 11) + {128, { 0, 0, 0}}, // (134, 11) + {128, { 0, 0, 0}}, // (135, 11) + {128, { 0, 0, 0}}, // (136, 11) + {128, { 0, 0, 0}}, // (137, 11) + {128, { 0, 0, 0}}, // (138, 11) + {128, { 0, 0, 0}}, // (139, 11) + {128, { 0, 0, 0}}, // (140, 11) + {128, { 0, 0, 0}}, // (141, 11) + {128, { 0, 0, 0}}, // (142, 11) + {128, { 0, 0, 0}}, // (143, 11) + {128, { 0, 0, 0}}, // (144, 11) + {128, { 0, 0, 0}}, // (145, 11) + {128, { 0, 0, 0}}, // (146, 11) + {128, { 0, 0, 0}}, // (147, 11) + {128, { 0, 0, 0}}, // (148, 11) + {128, { 0, 0, 0}}, // (149, 11) + {128, { 0, 0, 0}}, // (150, 11) + {128, { 0, 0, 0}}, // (151, 11) + {128, { 0, 0, 0}}, // (152, 11) + {128, { 0, 0, 0}}, // (153, 11) + {128, { 0, 0, 0}}, // (154, 11) + {128, { 0, 0, 0}}, // (155, 11) + {128, { 0, 0, 0}}, // (156, 11) + {128, { 0, 0, 0}}, // (157, 11) + {128, { 0, 0, 0}}, // (158, 11) + {128, { 0, 0, 0}}, // (159, 11) + {128, { 0, 0, 0}}, // (160, 11) + {128, { 0, 0, 0}}, // (161, 11) + {128, { 0, 0, 0}}, // (162, 11) + {128, { 0, 0, 0}}, // (163, 11) + {128, { 0, 0, 0}}, // (164, 11) + {128, { 0, 0, 0}}, // (165, 11) + {128, { 0, 0, 0}}, // (166, 11) + {128, { 0, 0, 0}}, // (167, 11) + {128, { 0, 0, 0}}, // (168, 11) + {128, { 0, 0, 0}}, // (169, 11) + {128, { 0, 0, 0}}, // (170, 11) + {128, { 0, 0, 0}}, // (171, 11) + {128, { 0, 0, 0}}, // (172, 11) + {128, { 0, 0, 0}}, // (173, 11) + {128, { 0, 0, 0}}, // (174, 11) + {128, { 0, 0, 0}}, // (175, 11) + {128, { 0, 0, 0}}, // (176, 11) + {128, { 0, 0, 0}}, // (177, 11) + {128, { 0, 0, 0}}, // (178, 11) + {128, { 0, 0, 0}}, // (179, 11) + {128, { 0, 0, 0}}, // ( 0, 12) + {128, { 0, 0, 0}}, // ( 1, 12) + {128, { 0, 0, 0}}, // ( 2, 12) + {128, { 0, 0, 0}}, // ( 3, 12) + {128, { 0, 0, 0}}, // ( 4, 12) + {128, { 0, 0, 0}}, // ( 5, 12) + {128, { 0, 0, 0}}, // ( 6, 12) + {128, { 0, 0, 0}}, // ( 7, 12) + {128, { 0, 0, 0}}, // ( 8, 12) + {128, { 0, 0, 0}}, // ( 9, 12) + {128, { 0, 0, 0}}, // ( 10, 12) + {128, { 0, 0, 0}}, // ( 11, 12) + {128, { 0, 0, 0}}, // ( 12, 12) + {128, { 0, 0, 0}}, // ( 13, 12) + {128, { 0, 0, 0}}, // ( 14, 12) + {128, { 0, 0, 0}}, // ( 15, 12) + {128, { 0, 0, 0}}, // ( 16, 12) + {128, { 0, 0, 0}}, // ( 17, 12) + {128, { 0, 0, 0}}, // ( 18, 12) + {128, { 0, 0, 0}}, // ( 19, 12) + {128, { 0, 0, 0}}, // ( 20, 12) + {128, { 0, 0, 0}}, // ( 21, 12) + {128, { 0, 0, 0}}, // ( 22, 12) + {128, { 0, 0, 0}}, // ( 23, 12) + {128, { 0, 0, 0}}, // ( 24, 12) + {128, { 0, 0, 0}}, // ( 25, 12) + {128, { 0, 0, 0}}, // ( 26, 12) + {128, { 0, 0, 0}}, // ( 27, 12) + {128, { 0, 0, 0}}, // ( 28, 12) + {128, { 0, 0, 0}}, // ( 29, 12) + {128, { 0, 0, 0}}, // ( 30, 12) + {128, { 0, 0, 0}}, // ( 31, 12) + {128, { 0, 0, 0}}, // ( 32, 12) + {128, { 0, 0, 0}}, // ( 33, 12) + {128, { 0, 0, 0}}, // ( 34, 12) + {128, { 0, 0, 0}}, // ( 35, 12) + {128, { 0, 0, 0}}, // ( 36, 12) + {128, { 0, 0, 0}}, // ( 37, 12) + {128, { 0, 0, 0}}, // ( 38, 12) + {128, { 0, 0, 0}}, // ( 39, 12) + {128, { 0, 0, 0}}, // ( 40, 12) + {128, { 0, 0, 0}}, // ( 41, 12) + {128, { 0, 0, 0}}, // ( 42, 12) + {128, { 0, 0, 0}}, // ( 43, 12) + {128, { 0, 0, 0}}, // ( 44, 12) + {128, { 0, 0, 0}}, // ( 45, 12) + {128, { 0, 0, 0}}, // ( 46, 12) + {115, { 0, 0, 0}}, // ( 47, 12) + { 51, { 0, 0, 0}}, // ( 48, 12) + { 3, { 0, 0, 0}}, // ( 49, 12) + { 0, { 0, 0, 0}}, // ( 50, 12) + { 0, { 0, 0, 0}}, // ( 51, 12) + { 0, { 0, 0, 0}}, // ( 52, 12) + { 0, { 0, 0, 0}}, // ( 53, 12) + { 0, { 0, 0, 0}}, // ( 54, 12) + { 0, { 0, 0, 0}}, // ( 55, 12) + { 0, { 0, 0, 0}}, // ( 56, 12) + { 0, { 0, 0, 0}}, // ( 57, 12) + { 0, { 0, 0, 0}}, // ( 58, 12) + { 0, { 0, 0, 0}}, // ( 59, 12) + { 0, { 0, 0, 0}}, // ( 60, 12) + { 0, { 0, 0, 0}}, // ( 61, 12) + { 0, { 0, 0, 0}}, // ( 62, 12) + { 0, { 0, 0, 0}}, // ( 63, 12) + { 0, { 0, 0, 0}}, // ( 64, 12) + { 0, { 0, 0, 0}}, // ( 65, 12) + { 0, { 0, 0, 0}}, // ( 66, 12) + { 0, { 0, 0, 0}}, // ( 67, 12) + { 0, { 0, 0, 0}}, // ( 68, 12) + { 0, { 0, 0, 0}}, // ( 69, 12) + { 0, { 0, 0, 0}}, // ( 70, 12) + { 0, { 0, 0, 0}}, // ( 71, 12) + { 0, { 0, 0, 0}}, // ( 72, 12) + { 0, { 0, 0, 0}}, // ( 73, 12) + { 0, { 0, 0, 0}}, // ( 74, 12) + { 0, { 0, 0, 0}}, // ( 75, 12) + { 0, { 0, 0, 0}}, // ( 76, 12) + { 0, { 0, 0, 0}}, // ( 77, 12) + { 0, { 0, 0, 0}}, // ( 78, 12) + { 0, { 0, 0, 0}}, // ( 79, 12) + { 0, { 0, 0, 0}}, // ( 80, 12) + { 0, { 0, 0, 0}}, // ( 81, 12) + { 0, { 0, 0, 0}}, // ( 82, 12) + { 0, { 0, 0, 0}}, // ( 83, 12) + { 0, { 0, 0, 0}}, // ( 84, 12) + { 0, { 0, 0, 0}}, // ( 85, 12) + { 0, { 0, 0, 0}}, // ( 86, 12) + { 0, { 0, 0, 0}}, // ( 87, 12) + { 0, { 0, 0, 0}}, // ( 88, 12) + { 0, { 0, 0, 0}}, // ( 89, 12) + { 0, { 0, 0, 0}}, // ( 90, 12) + { 0, { 0, 0, 0}}, // ( 91, 12) + { 0, { 0, 0, 0}}, // ( 92, 12) + { 0, { 0, 0, 0}}, // ( 93, 12) + { 0, { 0, 0, 0}}, // ( 94, 12) + { 0, { 0, 0, 0}}, // ( 95, 12) + { 0, { 0, 0, 0}}, // ( 96, 12) + { 0, { 0, 0, 0}}, // ( 97, 12) + { 0, { 0, 0, 0}}, // ( 98, 12) + { 0, { 0, 0, 0}}, // ( 99, 12) + { 0, { 0, 0, 0}}, // (100, 12) + { 0, { 0, 0, 0}}, // (101, 12) + { 0, { 0, 0, 0}}, // (102, 12) + { 0, { 0, 0, 0}}, // (103, 12) + { 0, { 0, 0, 0}}, // (104, 12) + { 0, { 0, 0, 0}}, // (105, 12) + { 0, { 0, 0, 0}}, // (106, 12) + { 0, { 0, 0, 0}}, // (107, 12) + { 0, { 0, 0, 0}}, // (108, 12) + { 0, { 0, 0, 0}}, // (109, 12) + { 0, { 0, 0, 0}}, // (110, 12) + { 0, { 0, 0, 0}}, // (111, 12) + { 0, { 0, 0, 0}}, // (112, 12) + { 0, { 0, 0, 0}}, // (113, 12) + { 0, { 0, 0, 0}}, // (114, 12) + { 0, { 0, 0, 0}}, // (115, 12) + { 0, { 0, 0, 0}}, // (116, 12) + { 0, { 0, 0, 0}}, // (117, 12) + { 0, { 0, 0, 0}}, // (118, 12) + { 0, { 0, 0, 0}}, // (119, 12) + { 0, { 0, 0, 0}}, // (120, 12) + { 0, { 0, 0, 0}}, // (121, 12) + { 0, { 0, 0, 0}}, // (122, 12) + { 0, { 0, 0, 0}}, // (123, 12) + { 0, { 0, 0, 0}}, // (124, 12) + { 0, { 0, 0, 0}}, // (125, 12) + { 0, { 0, 0, 0}}, // (126, 12) + { 0, { 0, 0, 0}}, // (127, 12) + { 0, { 0, 0, 0}}, // (128, 12) + { 0, { 0, 0, 0}}, // (129, 12) + { 3, { 0, 0, 0}}, // (130, 12) + { 51, { 0, 0, 0}}, // (131, 12) + {115, { 0, 0, 0}}, // (132, 12) + {128, { 0, 0, 0}}, // (133, 12) + {128, { 0, 0, 0}}, // (134, 12) + {128, { 0, 0, 0}}, // (135, 12) + {128, { 0, 0, 0}}, // (136, 12) + {128, { 0, 0, 0}}, // (137, 12) + {128, { 0, 0, 0}}, // (138, 12) + {128, { 0, 0, 0}}, // (139, 12) + {128, { 0, 0, 0}}, // (140, 12) + {128, { 0, 0, 0}}, // (141, 12) + {128, { 0, 0, 0}}, // (142, 12) + {128, { 0, 0, 0}}, // (143, 12) + {128, { 0, 0, 0}}, // (144, 12) + {128, { 0, 0, 0}}, // (145, 12) + {128, { 0, 0, 0}}, // (146, 12) + {128, { 0, 0, 0}}, // (147, 12) + {128, { 0, 0, 0}}, // (148, 12) + {128, { 0, 0, 0}}, // (149, 12) + {128, { 0, 0, 0}}, // (150, 12) + {128, { 0, 0, 0}}, // (151, 12) + {128, { 0, 0, 0}}, // (152, 12) + {128, { 0, 0, 0}}, // (153, 12) + {128, { 0, 0, 0}}, // (154, 12) + {128, { 0, 0, 0}}, // (155, 12) + {128, { 0, 0, 0}}, // (156, 12) + {128, { 0, 0, 0}}, // (157, 12) + {128, { 0, 0, 0}}, // (158, 12) + {128, { 0, 0, 0}}, // (159, 12) + {128, { 0, 0, 0}}, // (160, 12) + {128, { 0, 0, 0}}, // (161, 12) + {128, { 0, 0, 0}}, // (162, 12) + {128, { 0, 0, 0}}, // (163, 12) + {128, { 0, 0, 0}}, // (164, 12) + {128, { 0, 0, 0}}, // (165, 12) + {128, { 0, 0, 0}}, // (166, 12) + {128, { 0, 0, 0}}, // (167, 12) + {128, { 0, 0, 0}}, // (168, 12) + {128, { 0, 0, 0}}, // (169, 12) + {128, { 0, 0, 0}}, // (170, 12) + {128, { 0, 0, 0}}, // (171, 12) + {128, { 0, 0, 0}}, // (172, 12) + {128, { 0, 0, 0}}, // (173, 12) + {128, { 0, 0, 0}}, // (174, 12) + {128, { 0, 0, 0}}, // (175, 12) + {128, { 0, 0, 0}}, // (176, 12) + {128, { 0, 0, 0}}, // (177, 12) + {128, { 0, 0, 0}}, // (178, 12) + {128, { 0, 0, 0}}, // (179, 12) + {128, { 0, 0, 0}}, // ( 0, 13) + {128, { 0, 0, 0}}, // ( 1, 13) + {128, { 0, 0, 0}}, // ( 2, 13) + {128, { 0, 0, 0}}, // ( 3, 13) + {128, { 0, 0, 0}}, // ( 4, 13) + {128, { 0, 0, 0}}, // ( 5, 13) + {128, { 0, 0, 0}}, // ( 6, 13) + {128, { 0, 0, 0}}, // ( 7, 13) + {128, { 0, 0, 0}}, // ( 8, 13) + {128, { 0, 0, 0}}, // ( 9, 13) + {128, { 0, 0, 0}}, // ( 10, 13) + {128, { 0, 0, 0}}, // ( 11, 13) + {128, { 0, 0, 0}}, // ( 12, 13) + {128, { 0, 0, 0}}, // ( 13, 13) + {128, { 0, 0, 0}}, // ( 14, 13) + {128, { 0, 0, 0}}, // ( 15, 13) + {128, { 0, 0, 0}}, // ( 16, 13) + {128, { 0, 0, 0}}, // ( 17, 13) + {128, { 0, 0, 0}}, // ( 18, 13) + {128, { 0, 0, 0}}, // ( 19, 13) + {128, { 0, 0, 0}}, // ( 20, 13) + {128, { 0, 0, 0}}, // ( 21, 13) + {128, { 0, 0, 0}}, // ( 22, 13) + {128, { 0, 0, 0}}, // ( 23, 13) + {128, { 0, 0, 0}}, // ( 24, 13) + {128, { 0, 0, 0}}, // ( 25, 13) + {128, { 0, 0, 0}}, // ( 26, 13) + {128, { 0, 0, 0}}, // ( 27, 13) + {128, { 0, 0, 0}}, // ( 28, 13) + {128, { 0, 0, 0}}, // ( 29, 13) + {128, { 0, 0, 0}}, // ( 30, 13) + {128, { 0, 0, 0}}, // ( 31, 13) + {128, { 0, 0, 0}}, // ( 32, 13) + {128, { 0, 0, 0}}, // ( 33, 13) + {128, { 0, 0, 0}}, // ( 34, 13) + {128, { 0, 0, 0}}, // ( 35, 13) + {128, { 0, 0, 0}}, // ( 36, 13) + {128, { 0, 0, 0}}, // ( 37, 13) + {128, { 0, 0, 0}}, // ( 38, 13) + {128, { 0, 0, 0}}, // ( 39, 13) + {128, { 0, 0, 0}}, // ( 40, 13) + {128, { 0, 0, 0}}, // ( 41, 13) + {128, { 0, 0, 0}}, // ( 42, 13) + {128, { 0, 0, 0}}, // ( 43, 13) + {128, { 0, 0, 0}}, // ( 44, 13) + {123, { 0, 0, 0}}, // ( 45, 13) + { 66, { 0, 0, 0}}, // ( 46, 13) + { 6, { 0, 0, 0}}, // ( 47, 13) + { 0, { 0, 0, 0}}, // ( 48, 13) + { 0, { 0, 0, 0}}, // ( 49, 13) + { 0, { 0, 0, 0}}, // ( 50, 13) + { 0, { 0, 0, 0}}, // ( 51, 13) + { 0, { 0, 0, 0}}, // ( 52, 13) + { 0, { 0, 0, 0}}, // ( 53, 13) + { 0, { 0, 0, 0}}, // ( 54, 13) + { 0, { 0, 0, 0}}, // ( 55, 13) + { 0, { 0, 0, 0}}, // ( 56, 13) + { 0, { 0, 0, 0}}, // ( 57, 13) + { 0, { 0, 0, 0}}, // ( 58, 13) + { 0, { 0, 0, 0}}, // ( 59, 13) + { 0, { 0, 0, 0}}, // ( 60, 13) + { 0, { 0, 0, 0}}, // ( 61, 13) + { 0, { 0, 0, 0}}, // ( 62, 13) + { 0, { 0, 0, 0}}, // ( 63, 13) + { 0, { 0, 0, 0}}, // ( 64, 13) + { 0, { 0, 0, 0}}, // ( 65, 13) + { 0, { 0, 0, 0}}, // ( 66, 13) + { 0, { 0, 0, 0}}, // ( 67, 13) + { 0, { 0, 0, 0}}, // ( 68, 13) + { 0, { 0, 0, 0}}, // ( 69, 13) + { 0, { 0, 0, 0}}, // ( 70, 13) + { 0, { 0, 0, 0}}, // ( 71, 13) + { 0, { 0, 0, 0}}, // ( 72, 13) + { 0, { 0, 0, 0}}, // ( 73, 13) + { 0, { 0, 0, 0}}, // ( 74, 13) + { 0, { 0, 0, 0}}, // ( 75, 13) + { 0, { 0, 0, 0}}, // ( 76, 13) + { 0, { 0, 0, 0}}, // ( 77, 13) + { 0, { 0, 0, 0}}, // ( 78, 13) + { 0, { 0, 0, 0}}, // ( 79, 13) + { 0, { 0, 0, 0}}, // ( 80, 13) + { 0, { 0, 0, 0}}, // ( 81, 13) + { 0, { 0, 0, 0}}, // ( 82, 13) + { 0, { 0, 0, 0}}, // ( 83, 13) + { 0, { 0, 0, 0}}, // ( 84, 13) + { 0, { 0, 0, 0}}, // ( 85, 13) + { 0, { 0, 0, 0}}, // ( 86, 13) + { 0, { 0, 0, 0}}, // ( 87, 13) + { 0, { 0, 0, 0}}, // ( 88, 13) + { 0, { 0, 0, 0}}, // ( 89, 13) + { 0, { 0, 0, 0}}, // ( 90, 13) + { 0, { 0, 0, 0}}, // ( 91, 13) + { 0, { 0, 0, 0}}, // ( 92, 13) + { 0, { 0, 0, 0}}, // ( 93, 13) + { 0, { 0, 0, 0}}, // ( 94, 13) + { 0, { 0, 0, 0}}, // ( 95, 13) + { 0, { 0, 0, 0}}, // ( 96, 13) + { 0, { 0, 0, 0}}, // ( 97, 13) + { 0, { 0, 0, 0}}, // ( 98, 13) + { 0, { 0, 0, 0}}, // ( 99, 13) + { 0, { 0, 0, 0}}, // (100, 13) + { 0, { 0, 0, 0}}, // (101, 13) + { 0, { 0, 0, 0}}, // (102, 13) + { 0, { 0, 0, 0}}, // (103, 13) + { 0, { 0, 0, 0}}, // (104, 13) + { 0, { 0, 0, 0}}, // (105, 13) + { 0, { 0, 0, 0}}, // (106, 13) + { 0, { 0, 0, 0}}, // (107, 13) + { 0, { 0, 0, 0}}, // (108, 13) + { 0, { 0, 0, 0}}, // (109, 13) + { 0, { 0, 0, 0}}, // (110, 13) + { 0, { 0, 0, 0}}, // (111, 13) + { 0, { 0, 0, 0}}, // (112, 13) + { 0, { 0, 0, 0}}, // (113, 13) + { 0, { 0, 0, 0}}, // (114, 13) + { 0, { 0, 0, 0}}, // (115, 13) + { 0, { 0, 0, 0}}, // (116, 13) + { 0, { 0, 0, 0}}, // (117, 13) + { 0, { 0, 0, 0}}, // (118, 13) + { 0, { 0, 0, 0}}, // (119, 13) + { 0, { 0, 0, 0}}, // (120, 13) + { 0, { 0, 0, 0}}, // (121, 13) + { 0, { 0, 0, 0}}, // (122, 13) + { 0, { 0, 0, 0}}, // (123, 13) + { 0, { 0, 0, 0}}, // (124, 13) + { 0, { 0, 0, 0}}, // (125, 13) + { 0, { 0, 0, 0}}, // (126, 13) + { 0, { 0, 0, 0}}, // (127, 13) + { 0, { 0, 0, 0}}, // (128, 13) + { 0, { 0, 0, 0}}, // (129, 13) + { 0, { 0, 0, 0}}, // (130, 13) + { 0, { 0, 0, 0}}, // (131, 13) + { 6, { 0, 0, 0}}, // (132, 13) + { 66, { 0, 0, 0}}, // (133, 13) + {123, { 0, 0, 0}}, // (134, 13) + {128, { 0, 0, 0}}, // (135, 13) + {128, { 0, 0, 0}}, // (136, 13) + {128, { 0, 0, 0}}, // (137, 13) + {128, { 0, 0, 0}}, // (138, 13) + {128, { 0, 0, 0}}, // (139, 13) + {128, { 0, 0, 0}}, // (140, 13) + {128, { 0, 0, 0}}, // (141, 13) + {128, { 0, 0, 0}}, // (142, 13) + {128, { 0, 0, 0}}, // (143, 13) + {128, { 0, 0, 0}}, // (144, 13) + {128, { 0, 0, 0}}, // (145, 13) + {128, { 0, 0, 0}}, // (146, 13) + {128, { 0, 0, 0}}, // (147, 13) + {128, { 0, 0, 0}}, // (148, 13) + {128, { 0, 0, 0}}, // (149, 13) + {128, { 0, 0, 0}}, // (150, 13) + {128, { 0, 0, 0}}, // (151, 13) + {128, { 0, 0, 0}}, // (152, 13) + {128, { 0, 0, 0}}, // (153, 13) + {128, { 0, 0, 0}}, // (154, 13) + {128, { 0, 0, 0}}, // (155, 13) + {128, { 0, 0, 0}}, // (156, 13) + {128, { 0, 0, 0}}, // (157, 13) + {128, { 0, 0, 0}}, // (158, 13) + {128, { 0, 0, 0}}, // (159, 13) + {128, { 0, 0, 0}}, // (160, 13) + {128, { 0, 0, 0}}, // (161, 13) + {128, { 0, 0, 0}}, // (162, 13) + {128, { 0, 0, 0}}, // (163, 13) + {128, { 0, 0, 0}}, // (164, 13) + {128, { 0, 0, 0}}, // (165, 13) + {128, { 0, 0, 0}}, // (166, 13) + {128, { 0, 0, 0}}, // (167, 13) + {128, { 0, 0, 0}}, // (168, 13) + {128, { 0, 0, 0}}, // (169, 13) + {128, { 0, 0, 0}}, // (170, 13) + {128, { 0, 0, 0}}, // (171, 13) + {128, { 0, 0, 0}}, // (172, 13) + {128, { 0, 0, 0}}, // (173, 13) + {128, { 0, 0, 0}}, // (174, 13) + {128, { 0, 0, 0}}, // (175, 13) + {128, { 0, 0, 0}}, // (176, 13) + {128, { 0, 0, 0}}, // (177, 13) + {128, { 0, 0, 0}}, // (178, 13) + {128, { 0, 0, 0}}, // (179, 13) + {128, { 0, 0, 0}}, // ( 0, 14) + {128, { 0, 0, 0}}, // ( 1, 14) + {128, { 0, 0, 0}}, // ( 2, 14) + {128, { 0, 0, 0}}, // ( 3, 14) + {128, { 0, 0, 0}}, // ( 4, 14) + {128, { 0, 0, 0}}, // ( 5, 14) + {128, { 0, 0, 0}}, // ( 6, 14) + {128, { 0, 0, 0}}, // ( 7, 14) + {128, { 0, 0, 0}}, // ( 8, 14) + {128, { 0, 0, 0}}, // ( 9, 14) + {128, { 0, 0, 0}}, // ( 10, 14) + {128, { 0, 0, 0}}, // ( 11, 14) + {128, { 0, 0, 0}}, // ( 12, 14) + {128, { 0, 0, 0}}, // ( 13, 14) + {128, { 0, 0, 0}}, // ( 14, 14) + {128, { 0, 0, 0}}, // ( 15, 14) + {128, { 0, 0, 0}}, // ( 16, 14) + {128, { 0, 0, 0}}, // ( 17, 14) + {128, { 0, 0, 0}}, // ( 18, 14) + {128, { 0, 0, 0}}, // ( 19, 14) + {128, { 0, 0, 0}}, // ( 20, 14) + {128, { 0, 0, 0}}, // ( 21, 14) + {128, { 0, 0, 0}}, // ( 22, 14) + {128, { 0, 0, 0}}, // ( 23, 14) + {128, { 0, 0, 0}}, // ( 24, 14) + {128, { 0, 0, 0}}, // ( 25, 14) + {128, { 0, 0, 0}}, // ( 26, 14) + {128, { 0, 0, 0}}, // ( 27, 14) + {128, { 0, 0, 0}}, // ( 28, 14) + {128, { 0, 0, 0}}, // ( 29, 14) + {128, { 0, 0, 0}}, // ( 30, 14) + {128, { 0, 0, 0}}, // ( 31, 14) + {128, { 0, 0, 0}}, // ( 32, 14) + {128, { 0, 0, 0}}, // ( 33, 14) + {128, { 0, 0, 0}}, // ( 34, 14) + {128, { 0, 0, 0}}, // ( 35, 14) + {128, { 0, 0, 0}}, // ( 36, 14) + {128, { 0, 0, 0}}, // ( 37, 14) + {128, { 0, 0, 0}}, // ( 38, 14) + {128, { 0, 0, 0}}, // ( 39, 14) + {128, { 0, 0, 0}}, // ( 40, 14) + {128, { 0, 0, 0}}, // ( 41, 14) + {128, { 0, 0, 0}}, // ( 42, 14) + {128, { 0, 0, 0}}, // ( 43, 14) + { 86, { 0, 0, 0}}, // ( 44, 14) + { 15, { 0, 0, 0}}, // ( 45, 14) + { 0, { 0, 0, 0}}, // ( 46, 14) + { 0, { 0, 0, 0}}, // ( 47, 14) + { 0, { 0, 0, 0}}, // ( 48, 14) + { 0, { 0, 0, 0}}, // ( 49, 14) + { 0, { 0, 0, 0}}, // ( 50, 14) + { 0, { 0, 0, 0}}, // ( 51, 14) + { 0, { 0, 0, 0}}, // ( 52, 14) + { 0, { 0, 0, 0}}, // ( 53, 14) + { 0, { 0, 0, 0}}, // ( 54, 14) + { 0, { 0, 0, 0}}, // ( 55, 14) + { 0, { 0, 0, 0}}, // ( 56, 14) + { 0, { 0, 0, 0}}, // ( 57, 14) + { 0, { 0, 0, 0}}, // ( 58, 14) + { 0, { 0, 0, 0}}, // ( 59, 14) + { 0, { 0, 0, 0}}, // ( 60, 14) + { 0, { 0, 0, 0}}, // ( 61, 14) + { 0, { 0, 0, 0}}, // ( 62, 14) + { 0, { 0, 0, 0}}, // ( 63, 14) + { 0, { 0, 0, 0}}, // ( 64, 14) + { 0, { 0, 0, 0}}, // ( 65, 14) + { 0, { 0, 0, 0}}, // ( 66, 14) + { 0, { 0, 0, 0}}, // ( 67, 14) + { 0, { 0, 0, 0}}, // ( 68, 14) + { 0, { 0, 0, 0}}, // ( 69, 14) + { 0, { 0, 0, 0}}, // ( 70, 14) + { 0, { 0, 0, 0}}, // ( 71, 14) + { 0, { 0, 0, 0}}, // ( 72, 14) + { 0, { 0, 0, 0}}, // ( 73, 14) + { 0, { 0, 0, 0}}, // ( 74, 14) + { 0, { 0, 0, 0}}, // ( 75, 14) + { 0, { 0, 0, 0}}, // ( 76, 14) + { 0, { 0, 0, 0}}, // ( 77, 14) + { 0, { 0, 0, 0}}, // ( 78, 14) + { 0, { 0, 0, 0}}, // ( 79, 14) + { 0, { 0, 0, 0}}, // ( 80, 14) + { 0, { 0, 0, 0}}, // ( 81, 14) + { 0, { 0, 0, 0}}, // ( 82, 14) + { 0, { 0, 0, 0}}, // ( 83, 14) + { 0, { 0, 0, 0}}, // ( 84, 14) + { 0, { 0, 0, 0}}, // ( 85, 14) + { 0, { 0, 0, 0}}, // ( 86, 14) + { 0, { 0, 0, 0}}, // ( 87, 14) + { 0, { 0, 0, 0}}, // ( 88, 14) + { 0, { 0, 0, 0}}, // ( 89, 14) + { 0, { 0, 0, 0}}, // ( 90, 14) + { 0, { 0, 0, 0}}, // ( 91, 14) + { 0, { 0, 0, 0}}, // ( 92, 14) + { 0, { 0, 0, 0}}, // ( 93, 14) + { 0, { 0, 0, 0}}, // ( 94, 14) + { 0, { 0, 0, 0}}, // ( 95, 14) + { 0, { 0, 0, 0}}, // ( 96, 14) + { 0, { 0, 0, 0}}, // ( 97, 14) + { 0, { 0, 0, 0}}, // ( 98, 14) + { 0, { 0, 0, 0}}, // ( 99, 14) + { 0, { 0, 0, 0}}, // (100, 14) + { 0, { 0, 0, 0}}, // (101, 14) + { 0, { 0, 0, 0}}, // (102, 14) + { 0, { 0, 0, 0}}, // (103, 14) + { 0, { 0, 0, 0}}, // (104, 14) + { 0, { 0, 0, 0}}, // (105, 14) + { 0, { 0, 0, 0}}, // (106, 14) + { 0, { 0, 0, 0}}, // (107, 14) + { 0, { 0, 0, 0}}, // (108, 14) + { 0, { 0, 0, 0}}, // (109, 14) + { 0, { 0, 0, 0}}, // (110, 14) + { 0, { 0, 0, 0}}, // (111, 14) + { 0, { 0, 0, 0}}, // (112, 14) + { 0, { 0, 0, 0}}, // (113, 14) + { 0, { 0, 0, 0}}, // (114, 14) + { 0, { 0, 0, 0}}, // (115, 14) + { 0, { 0, 0, 0}}, // (116, 14) + { 0, { 0, 0, 0}}, // (117, 14) + { 0, { 0, 0, 0}}, // (118, 14) + { 0, { 0, 0, 0}}, // (119, 14) + { 0, { 0, 0, 0}}, // (120, 14) + { 0, { 0, 0, 0}}, // (121, 14) + { 0, { 0, 0, 0}}, // (122, 14) + { 0, { 0, 0, 0}}, // (123, 14) + { 0, { 0, 0, 0}}, // (124, 14) + { 0, { 0, 0, 0}}, // (125, 14) + { 0, { 0, 0, 0}}, // (126, 14) + { 0, { 0, 0, 0}}, // (127, 14) + { 0, { 0, 0, 0}}, // (128, 14) + { 0, { 0, 0, 0}}, // (129, 14) + { 0, { 0, 0, 0}}, // (130, 14) + { 0, { 0, 0, 0}}, // (131, 14) + { 0, { 0, 0, 0}}, // (132, 14) + { 0, { 0, 0, 0}}, // (133, 14) + { 15, { 0, 0, 0}}, // (134, 14) + { 85, { 0, 0, 0}}, // (135, 14) + {128, { 0, 0, 0}}, // (136, 14) + {128, { 0, 0, 0}}, // (137, 14) + {128, { 0, 0, 0}}, // (138, 14) + {128, { 0, 0, 0}}, // (139, 14) + {128, { 0, 0, 0}}, // (140, 14) + {128, { 0, 0, 0}}, // (141, 14) + {128, { 0, 0, 0}}, // (142, 14) + {128, { 0, 0, 0}}, // (143, 14) + {128, { 0, 0, 0}}, // (144, 14) + {128, { 0, 0, 0}}, // (145, 14) + {128, { 0, 0, 0}}, // (146, 14) + {128, { 0, 0, 0}}, // (147, 14) + {128, { 0, 0, 0}}, // (148, 14) + {128, { 0, 0, 0}}, // (149, 14) + {128, { 0, 0, 0}}, // (150, 14) + {128, { 0, 0, 0}}, // (151, 14) + {128, { 0, 0, 0}}, // (152, 14) + {128, { 0, 0, 0}}, // (153, 14) + {128, { 0, 0, 0}}, // (154, 14) + {128, { 0, 0, 0}}, // (155, 14) + {128, { 0, 0, 0}}, // (156, 14) + {128, { 0, 0, 0}}, // (157, 14) + {128, { 0, 0, 0}}, // (158, 14) + {128, { 0, 0, 0}}, // (159, 14) + {128, { 0, 0, 0}}, // (160, 14) + {128, { 0, 0, 0}}, // (161, 14) + {128, { 0, 0, 0}}, // (162, 14) + {128, { 0, 0, 0}}, // (163, 14) + {128, { 0, 0, 0}}, // (164, 14) + {128, { 0, 0, 0}}, // (165, 14) + {128, { 0, 0, 0}}, // (166, 14) + {128, { 0, 0, 0}}, // (167, 14) + {128, { 0, 0, 0}}, // (168, 14) + {128, { 0, 0, 0}}, // (169, 14) + {128, { 0, 0, 0}}, // (170, 14) + {128, { 0, 0, 0}}, // (171, 14) + {128, { 0, 0, 0}}, // (172, 14) + {128, { 0, 0, 0}}, // (173, 14) + {128, { 0, 0, 0}}, // (174, 14) + {128, { 0, 0, 0}}, // (175, 14) + {128, { 0, 0, 0}}, // (176, 14) + {128, { 0, 0, 0}}, // (177, 14) + {128, { 0, 0, 0}}, // (178, 14) + {128, { 0, 0, 0}}, // (179, 14) + {128, { 0, 0, 0}}, // ( 0, 15) + {128, { 0, 0, 0}}, // ( 1, 15) + {128, { 0, 0, 0}}, // ( 2, 15) + {128, { 0, 0, 0}}, // ( 3, 15) + {128, { 0, 0, 0}}, // ( 4, 15) + {128, { 0, 0, 0}}, // ( 5, 15) + {128, { 0, 0, 0}}, // ( 6, 15) + {128, { 0, 0, 0}}, // ( 7, 15) + {128, { 0, 0, 0}}, // ( 8, 15) + {128, { 0, 0, 0}}, // ( 9, 15) + {128, { 0, 0, 0}}, // ( 10, 15) + {128, { 0, 0, 0}}, // ( 11, 15) + {128, { 0, 0, 0}}, // ( 12, 15) + {128, { 0, 0, 0}}, // ( 13, 15) + {128, { 0, 0, 0}}, // ( 14, 15) + {128, { 0, 0, 0}}, // ( 15, 15) + {128, { 0, 0, 0}}, // ( 16, 15) + {128, { 0, 0, 0}}, // ( 17, 15) + {128, { 0, 0, 0}}, // ( 18, 15) + {128, { 0, 0, 0}}, // ( 19, 15) + {128, { 0, 0, 0}}, // ( 20, 15) + {128, { 0, 0, 0}}, // ( 21, 15) + {128, { 0, 0, 0}}, // ( 22, 15) + {128, { 0, 0, 0}}, // ( 23, 15) + {128, { 0, 0, 0}}, // ( 24, 15) + {128, { 0, 0, 0}}, // ( 25, 15) + {128, { 0, 0, 0}}, // ( 26, 15) + {128, { 0, 0, 0}}, // ( 27, 15) + {128, { 0, 0, 0}}, // ( 28, 15) + {128, { 0, 0, 0}}, // ( 29, 15) + {128, { 0, 0, 0}}, // ( 30, 15) + {128, { 0, 0, 0}}, // ( 31, 15) + {128, { 0, 0, 0}}, // ( 32, 15) + {128, { 0, 0, 0}}, // ( 33, 15) + {128, { 0, 0, 0}}, // ( 34, 15) + {128, { 0, 0, 0}}, // ( 35, 15) + {128, { 0, 0, 0}}, // ( 36, 15) + {128, { 0, 0, 0}}, // ( 37, 15) + {128, { 0, 0, 0}}, // ( 38, 15) + {128, { 0, 0, 0}}, // ( 39, 15) + {128, { 0, 0, 0}}, // ( 40, 15) + {128, { 0, 0, 0}}, // ( 41, 15) + {114, { 0, 0, 0}}, // ( 42, 15) + { 39, { 0, 0, 0}}, // ( 43, 15) + { 0, { 0, 0, 0}}, // ( 44, 15) + { 0, { 0, 0, 0}}, // ( 45, 15) + { 0, { 0, 0, 0}}, // ( 46, 15) + { 0, { 0, 0, 0}}, // ( 47, 15) + { 0, { 0, 0, 0}}, // ( 48, 15) + { 0, { 0, 0, 0}}, // ( 49, 15) + { 0, { 0, 0, 0}}, // ( 50, 15) + { 0, { 0, 0, 0}}, // ( 51, 15) + { 0, { 0, 0, 0}}, // ( 52, 15) + { 0, { 0, 0, 0}}, // ( 53, 15) + { 0, { 0, 0, 0}}, // ( 54, 15) + { 0, { 0, 0, 0}}, // ( 55, 15) + { 0, { 0, 0, 0}}, // ( 56, 15) + { 0, { 0, 0, 0}}, // ( 57, 15) + { 0, { 0, 0, 0}}, // ( 58, 15) + { 0, { 0, 0, 0}}, // ( 59, 15) + { 0, { 0, 0, 0}}, // ( 60, 15) + { 0, { 0, 0, 0}}, // ( 61, 15) + { 0, { 0, 0, 0}}, // ( 62, 15) + { 0, { 0, 0, 0}}, // ( 63, 15) + { 0, { 0, 0, 0}}, // ( 64, 15) + { 0, { 0, 0, 0}}, // ( 65, 15) + { 0, { 0, 0, 0}}, // ( 66, 15) + { 0, { 0, 0, 0}}, // ( 67, 15) + { 0, { 0, 0, 0}}, // ( 68, 15) + { 0, { 0, 0, 0}}, // ( 69, 15) + { 0, { 0, 0, 0}}, // ( 70, 15) + { 0, { 0, 0, 0}}, // ( 71, 15) + { 0, { 0, 0, 0}}, // ( 72, 15) + { 0, { 0, 0, 0}}, // ( 73, 15) + { 0, { 0, 0, 0}}, // ( 74, 15) + { 0, { 0, 0, 0}}, // ( 75, 15) + { 0, { 0, 0, 0}}, // ( 76, 15) + { 0, { 0, 0, 0}}, // ( 77, 15) + { 0, { 0, 0, 0}}, // ( 78, 15) + { 0, { 0, 0, 0}}, // ( 79, 15) + { 0, { 0, 0, 0}}, // ( 80, 15) + { 0, { 0, 0, 0}}, // ( 81, 15) + { 0, { 0, 0, 0}}, // ( 82, 15) + { 0, { 0, 0, 0}}, // ( 83, 15) + { 0, { 0, 0, 0}}, // ( 84, 15) + { 0, { 0, 0, 0}}, // ( 85, 15) + { 0, { 0, 0, 0}}, // ( 86, 15) + { 0, { 0, 0, 0}}, // ( 87, 15) + { 0, { 0, 0, 0}}, // ( 88, 15) + { 0, { 0, 0, 0}}, // ( 89, 15) + { 0, { 0, 0, 0}}, // ( 90, 15) + { 0, { 0, 0, 0}}, // ( 91, 15) + { 0, { 0, 0, 0}}, // ( 92, 15) + { 0, { 0, 0, 0}}, // ( 93, 15) + { 0, { 0, 0, 0}}, // ( 94, 15) + { 0, { 0, 0, 0}}, // ( 95, 15) + { 0, { 0, 0, 0}}, // ( 96, 15) + { 0, { 0, 0, 0}}, // ( 97, 15) + { 0, { 0, 0, 0}}, // ( 98, 15) + { 0, { 0, 0, 0}}, // ( 99, 15) + { 0, { 0, 0, 0}}, // (100, 15) + { 0, { 0, 0, 0}}, // (101, 15) + { 0, { 0, 0, 0}}, // (102, 15) + { 0, { 0, 0, 0}}, // (103, 15) + { 0, { 0, 0, 0}}, // (104, 15) + { 0, { 0, 0, 0}}, // (105, 15) + { 0, { 0, 0, 0}}, // (106, 15) + { 0, { 0, 0, 0}}, // (107, 15) + { 0, { 0, 0, 0}}, // (108, 15) + { 0, { 0, 0, 0}}, // (109, 15) + { 0, { 0, 0, 0}}, // (110, 15) + { 0, { 0, 0, 0}}, // (111, 15) + { 0, { 0, 0, 0}}, // (112, 15) + { 0, { 0, 0, 0}}, // (113, 15) + { 0, { 0, 0, 0}}, // (114, 15) + { 0, { 0, 0, 0}}, // (115, 15) + { 0, { 0, 0, 0}}, // (116, 15) + { 0, { 0, 0, 0}}, // (117, 15) + { 0, { 0, 0, 0}}, // (118, 15) + { 0, { 0, 0, 0}}, // (119, 15) + { 0, { 0, 0, 0}}, // (120, 15) + { 0, { 0, 0, 0}}, // (121, 15) + { 0, { 0, 0, 0}}, // (122, 15) + { 0, { 0, 0, 0}}, // (123, 15) + { 0, { 0, 0, 0}}, // (124, 15) + { 0, { 0, 0, 0}}, // (125, 15) + { 0, { 0, 0, 0}}, // (126, 15) + { 0, { 0, 0, 0}}, // (127, 15) + { 0, { 0, 0, 0}}, // (128, 15) + { 0, { 0, 0, 0}}, // (129, 15) + { 0, { 0, 0, 0}}, // (130, 15) + { 0, { 0, 0, 0}}, // (131, 15) + { 0, { 0, 0, 0}}, // (132, 15) + { 0, { 0, 0, 0}}, // (133, 15) + { 0, { 0, 0, 0}}, // (134, 15) + { 0, { 0, 0, 0}}, // (135, 15) + { 38, { 0, 0, 0}}, // (136, 15) + {114, { 0, 0, 0}}, // (137, 15) + {128, { 0, 0, 0}}, // (138, 15) + {128, { 0, 0, 0}}, // (139, 15) + {128, { 0, 0, 0}}, // (140, 15) + {128, { 0, 0, 0}}, // (141, 15) + {128, { 0, 0, 0}}, // (142, 15) + {128, { 0, 0, 0}}, // (143, 15) + {128, { 0, 0, 0}}, // (144, 15) + {128, { 0, 0, 0}}, // (145, 15) + {128, { 0, 0, 0}}, // (146, 15) + {128, { 0, 0, 0}}, // (147, 15) + {128, { 0, 0, 0}}, // (148, 15) + {128, { 0, 0, 0}}, // (149, 15) + {128, { 0, 0, 0}}, // (150, 15) + {128, { 0, 0, 0}}, // (151, 15) + {128, { 0, 0, 0}}, // (152, 15) + {128, { 0, 0, 0}}, // (153, 15) + {128, { 0, 0, 0}}, // (154, 15) + {128, { 0, 0, 0}}, // (155, 15) + {128, { 0, 0, 0}}, // (156, 15) + {128, { 0, 0, 0}}, // (157, 15) + {128, { 0, 0, 0}}, // (158, 15) + {128, { 0, 0, 0}}, // (159, 15) + {128, { 0, 0, 0}}, // (160, 15) + {128, { 0, 0, 0}}, // (161, 15) + {128, { 0, 0, 0}}, // (162, 15) + {128, { 0, 0, 0}}, // (163, 15) + {128, { 0, 0, 0}}, // (164, 15) + {128, { 0, 0, 0}}, // (165, 15) + {128, { 0, 0, 0}}, // (166, 15) + {128, { 0, 0, 0}}, // (167, 15) + {128, { 0, 0, 0}}, // (168, 15) + {128, { 0, 0, 0}}, // (169, 15) + {128, { 0, 0, 0}}, // (170, 15) + {128, { 0, 0, 0}}, // (171, 15) + {128, { 0, 0, 0}}, // (172, 15) + {128, { 0, 0, 0}}, // (173, 15) + {128, { 0, 0, 0}}, // (174, 15) + {128, { 0, 0, 0}}, // (175, 15) + {128, { 0, 0, 0}}, // (176, 15) + {128, { 0, 0, 0}}, // (177, 15) + {128, { 0, 0, 0}}, // (178, 15) + {128, { 0, 0, 0}}, // (179, 15) + {128, { 0, 0, 0}}, // ( 0, 16) + {128, { 0, 0, 0}}, // ( 1, 16) + {128, { 0, 0, 0}}, // ( 2, 16) + {128, { 0, 0, 0}}, // ( 3, 16) + {128, { 0, 0, 0}}, // ( 4, 16) + {128, { 0, 0, 0}}, // ( 5, 16) + {128, { 0, 0, 0}}, // ( 6, 16) + {128, { 0, 0, 0}}, // ( 7, 16) + {128, { 0, 0, 0}}, // ( 8, 16) + {128, { 0, 0, 0}}, // ( 9, 16) + {128, { 0, 0, 0}}, // ( 10, 16) + {128, { 0, 0, 0}}, // ( 11, 16) + {128, { 0, 0, 0}}, // ( 12, 16) + {128, { 0, 0, 0}}, // ( 13, 16) + {128, { 0, 0, 0}}, // ( 14, 16) + {128, { 0, 0, 0}}, // ( 15, 16) + {128, { 0, 0, 0}}, // ( 16, 16) + {128, { 0, 0, 0}}, // ( 17, 16) + {128, { 0, 0, 0}}, // ( 18, 16) + {128, { 0, 0, 0}}, // ( 19, 16) + {128, { 0, 0, 0}}, // ( 20, 16) + {128, { 0, 0, 0}}, // ( 21, 16) + {128, { 0, 0, 0}}, // ( 22, 16) + {128, { 0, 0, 0}}, // ( 23, 16) + {128, { 0, 0, 0}}, // ( 24, 16) + {128, { 0, 0, 0}}, // ( 25, 16) + {128, { 0, 0, 0}}, // ( 26, 16) + {128, { 0, 0, 0}}, // ( 27, 16) + {128, { 0, 0, 0}}, // ( 28, 16) + {128, { 0, 0, 0}}, // ( 29, 16) + {128, { 0, 0, 0}}, // ( 30, 16) + {128, { 0, 0, 0}}, // ( 31, 16) + {128, { 0, 0, 0}}, // ( 32, 16) + {128, { 0, 0, 0}}, // ( 33, 16) + {128, { 0, 0, 0}}, // ( 34, 16) + {128, { 0, 0, 0}}, // ( 35, 16) + {128, { 0, 0, 0}}, // ( 36, 16) + {128, { 0, 0, 0}}, // ( 37, 16) + {128, { 0, 0, 0}}, // ( 38, 16) + {128, { 0, 0, 0}}, // ( 39, 16) + {127, { 0, 0, 0}}, // ( 40, 16) + { 74, { 0, 0, 0}}, // ( 41, 16) + { 7, { 0, 0, 0}}, // ( 42, 16) + { 0, { 0, 0, 0}}, // ( 43, 16) + { 0, { 0, 0, 0}}, // ( 44, 16) + { 0, { 0, 0, 0}}, // ( 45, 16) + { 0, { 0, 0, 0}}, // ( 46, 16) + { 0, { 0, 0, 0}}, // ( 47, 16) + { 0, { 0, 0, 0}}, // ( 48, 16) + { 0, { 0, 0, 0}}, // ( 49, 16) + { 0, { 0, 0, 0}}, // ( 50, 16) + { 0, { 0, 0, 0}}, // ( 51, 16) + { 0, { 0, 0, 0}}, // ( 52, 16) + { 0, { 0, 0, 0}}, // ( 53, 16) + { 0, { 0, 0, 0}}, // ( 54, 16) + { 0, { 0, 0, 0}}, // ( 55, 16) + { 0, { 0, 0, 0}}, // ( 56, 16) + { 0, { 0, 0, 0}}, // ( 57, 16) + { 0, { 0, 0, 0}}, // ( 58, 16) + { 0, { 0, 0, 0}}, // ( 59, 16) + { 0, { 0, 0, 0}}, // ( 60, 16) + { 0, { 0, 0, 0}}, // ( 61, 16) + { 0, { 0, 0, 0}}, // ( 62, 16) + { 0, { 0, 0, 0}}, // ( 63, 16) + { 0, { 0, 0, 0}}, // ( 64, 16) + { 0, { 0, 0, 0}}, // ( 65, 16) + { 0, { 0, 0, 0}}, // ( 66, 16) + { 0, { 0, 0, 0}}, // ( 67, 16) + { 0, { 0, 0, 0}}, // ( 68, 16) + { 0, { 0, 0, 0}}, // ( 69, 16) + { 0, { 0, 0, 0}}, // ( 70, 16) + { 0, { 0, 0, 0}}, // ( 71, 16) + { 0, { 0, 0, 0}}, // ( 72, 16) + { 0, { 0, 0, 0}}, // ( 73, 16) + { 0, { 0, 0, 0}}, // ( 74, 16) + { 0, { 0, 0, 0}}, // ( 75, 16) + { 0, { 0, 0, 0}}, // ( 76, 16) + { 0, { 0, 0, 0}}, // ( 77, 16) + { 0, { 0, 0, 0}}, // ( 78, 16) + { 0, { 0, 0, 0}}, // ( 79, 16) + { 0, { 0, 0, 0}}, // ( 80, 16) + { 0, { 0, 0, 0}}, // ( 81, 16) + { 0, { 0, 0, 0}}, // ( 82, 16) + { 0, { 0, 0, 0}}, // ( 83, 16) + { 0, { 0, 0, 0}}, // ( 84, 16) + { 0, { 0, 0, 0}}, // ( 85, 16) + { 0, { 0, 0, 0}}, // ( 86, 16) + { 0, { 0, 0, 0}}, // ( 87, 16) + { 0, { 0, 0, 0}}, // ( 88, 16) + { 0, { 0, 0, 0}}, // ( 89, 16) + { 0, { 0, 0, 0}}, // ( 90, 16) + { 0, { 0, 0, 0}}, // ( 91, 16) + { 0, { 0, 0, 0}}, // ( 92, 16) + { 0, { 0, 0, 0}}, // ( 93, 16) + { 0, { 0, 0, 0}}, // ( 94, 16) + { 0, { 0, 0, 0}}, // ( 95, 16) + { 0, { 0, 0, 0}}, // ( 96, 16) + { 0, { 0, 0, 0}}, // ( 97, 16) + { 0, { 0, 0, 0}}, // ( 98, 16) + { 0, { 0, 0, 0}}, // ( 99, 16) + { 0, { 0, 0, 0}}, // (100, 16) + { 0, { 0, 0, 0}}, // (101, 16) + { 0, { 0, 0, 0}}, // (102, 16) + { 0, { 0, 0, 0}}, // (103, 16) + { 0, { 0, 0, 0}}, // (104, 16) + { 0, { 0, 0, 0}}, // (105, 16) + { 0, { 0, 0, 0}}, // (106, 16) + { 0, { 0, 0, 0}}, // (107, 16) + { 0, { 0, 0, 0}}, // (108, 16) + { 0, { 0, 0, 0}}, // (109, 16) + { 0, { 0, 0, 0}}, // (110, 16) + { 0, { 0, 0, 0}}, // (111, 16) + { 0, { 0, 0, 0}}, // (112, 16) + { 0, { 0, 0, 0}}, // (113, 16) + { 0, { 0, 0, 0}}, // (114, 16) + { 0, { 0, 0, 0}}, // (115, 16) + { 0, { 0, 0, 0}}, // (116, 16) + { 0, { 0, 0, 0}}, // (117, 16) + { 0, { 0, 0, 0}}, // (118, 16) + { 0, { 0, 0, 0}}, // (119, 16) + { 0, { 0, 0, 0}}, // (120, 16) + { 0, { 0, 0, 0}}, // (121, 16) + { 0, { 0, 0, 0}}, // (122, 16) + { 0, { 0, 0, 0}}, // (123, 16) + { 0, { 0, 0, 0}}, // (124, 16) + { 0, { 0, 0, 0}}, // (125, 16) + { 0, { 0, 0, 0}}, // (126, 16) + { 0, { 0, 0, 0}}, // (127, 16) + { 0, { 0, 0, 0}}, // (128, 16) + { 0, { 0, 0, 0}}, // (129, 16) + { 0, { 0, 0, 0}}, // (130, 16) + { 0, { 0, 0, 0}}, // (131, 16) + { 0, { 0, 0, 0}}, // (132, 16) + { 0, { 0, 0, 0}}, // (133, 16) + { 0, { 0, 0, 0}}, // (134, 16) + { 0, { 0, 0, 0}}, // (135, 16) + { 0, { 0, 0, 0}}, // (136, 16) + { 7, { 0, 0, 0}}, // (137, 16) + { 74, { 0, 0, 0}}, // (138, 16) + {127, { 0, 0, 0}}, // (139, 16) + {128, { 0, 0, 0}}, // (140, 16) + {128, { 0, 0, 0}}, // (141, 16) + {128, { 0, 0, 0}}, // (142, 16) + {128, { 0, 0, 0}}, // (143, 16) + {128, { 0, 0, 0}}, // (144, 16) + {128, { 0, 0, 0}}, // (145, 16) + {128, { 0, 0, 0}}, // (146, 16) + {128, { 0, 0, 0}}, // (147, 16) + {128, { 0, 0, 0}}, // (148, 16) + {128, { 0, 0, 0}}, // (149, 16) + {128, { 0, 0, 0}}, // (150, 16) + {128, { 0, 0, 0}}, // (151, 16) + {128, { 0, 0, 0}}, // (152, 16) + {128, { 0, 0, 0}}, // (153, 16) + {128, { 0, 0, 0}}, // (154, 16) + {128, { 0, 0, 0}}, // (155, 16) + {128, { 0, 0, 0}}, // (156, 16) + {128, { 0, 0, 0}}, // (157, 16) + {128, { 0, 0, 0}}, // (158, 16) + {128, { 0, 0, 0}}, // (159, 16) + {128, { 0, 0, 0}}, // (160, 16) + {128, { 0, 0, 0}}, // (161, 16) + {128, { 0, 0, 0}}, // (162, 16) + {128, { 0, 0, 0}}, // (163, 16) + {128, { 0, 0, 0}}, // (164, 16) + {128, { 0, 0, 0}}, // (165, 16) + {128, { 0, 0, 0}}, // (166, 16) + {128, { 0, 0, 0}}, // (167, 16) + {128, { 0, 0, 0}}, // (168, 16) + {128, { 0, 0, 0}}, // (169, 16) + {128, { 0, 0, 0}}, // (170, 16) + {128, { 0, 0, 0}}, // (171, 16) + {128, { 0, 0, 0}}, // (172, 16) + {128, { 0, 0, 0}}, // (173, 16) + {128, { 0, 0, 0}}, // (174, 16) + {128, { 0, 0, 0}}, // (175, 16) + {128, { 0, 0, 0}}, // (176, 16) + {128, { 0, 0, 0}}, // (177, 16) + {128, { 0, 0, 0}}, // (178, 16) + {128, { 0, 0, 0}}, // (179, 16) + {128, { 0, 0, 0}}, // ( 0, 17) + {128, { 0, 0, 0}}, // ( 1, 17) + {128, { 0, 0, 0}}, // ( 2, 17) + {128, { 0, 0, 0}}, // ( 3, 17) + {128, { 0, 0, 0}}, // ( 4, 17) + {128, { 0, 0, 0}}, // ( 5, 17) + {128, { 0, 0, 0}}, // ( 6, 17) + {128, { 0, 0, 0}}, // ( 7, 17) + {128, { 0, 0, 0}}, // ( 8, 17) + {128, { 0, 0, 0}}, // ( 9, 17) + {128, { 0, 0, 0}}, // ( 10, 17) + {128, { 0, 0, 0}}, // ( 11, 17) + {128, { 0, 0, 0}}, // ( 12, 17) + {128, { 0, 0, 0}}, // ( 13, 17) + {128, { 0, 0, 0}}, // ( 14, 17) + {128, { 0, 0, 0}}, // ( 15, 17) + {128, { 0, 0, 0}}, // ( 16, 17) + {128, { 0, 0, 0}}, // ( 17, 17) + {128, { 0, 0, 0}}, // ( 18, 17) + {128, { 0, 0, 0}}, // ( 19, 17) + {128, { 0, 0, 0}}, // ( 20, 17) + {128, { 0, 0, 0}}, // ( 21, 17) + {128, { 0, 0, 0}}, // ( 22, 17) + {128, { 0, 0, 0}}, // ( 23, 17) + {128, { 0, 0, 0}}, // ( 24, 17) + {128, { 0, 0, 0}}, // ( 25, 17) + {128, { 0, 0, 0}}, // ( 26, 17) + {128, { 0, 0, 0}}, // ( 27, 17) + {128, { 0, 0, 0}}, // ( 28, 17) + {128, { 0, 0, 0}}, // ( 29, 17) + {128, { 0, 0, 0}}, // ( 30, 17) + {128, { 0, 0, 0}}, // ( 31, 17) + {128, { 0, 0, 0}}, // ( 32, 17) + {128, { 0, 0, 0}}, // ( 33, 17) + {128, { 0, 0, 0}}, // ( 34, 17) + {128, { 0, 0, 0}}, // ( 35, 17) + {128, { 0, 0, 0}}, // ( 36, 17) + {128, { 0, 0, 0}}, // ( 37, 17) + {128, { 0, 0, 0}}, // ( 38, 17) + {113, { 0, 0, 0}}, // ( 39, 17) + { 33, { 0, 0, 0}}, // ( 40, 17) + { 0, { 0, 0, 0}}, // ( 41, 17) + { 0, { 0, 0, 0}}, // ( 42, 17) + { 0, { 0, 0, 0}}, // ( 43, 17) + { 0, { 0, 0, 0}}, // ( 44, 17) + { 0, { 0, 0, 0}}, // ( 45, 17) + { 0, { 0, 0, 0}}, // ( 46, 17) + { 0, { 0, 0, 0}}, // ( 47, 17) + { 0, { 0, 0, 0}}, // ( 48, 17) + { 0, { 0, 0, 0}}, // ( 49, 17) + { 0, { 0, 0, 0}}, // ( 50, 17) + { 0, { 0, 0, 0}}, // ( 51, 17) + { 0, { 0, 0, 0}}, // ( 52, 17) + { 0, { 0, 0, 0}}, // ( 53, 17) + { 0, { 0, 0, 0}}, // ( 54, 17) + { 0, { 0, 0, 0}}, // ( 55, 17) + { 0, { 0, 0, 0}}, // ( 56, 17) + { 0, { 0, 0, 0}}, // ( 57, 17) + { 0, { 0, 0, 0}}, // ( 58, 17) + { 0, { 0, 0, 0}}, // ( 59, 17) + { 0, { 0, 0, 0}}, // ( 60, 17) + { 0, { 0, 0, 0}}, // ( 61, 17) + { 0, { 0, 0, 0}}, // ( 62, 17) + { 0, { 0, 0, 0}}, // ( 63, 17) + { 0, { 0, 0, 0}}, // ( 64, 17) + { 0, { 0, 0, 0}}, // ( 65, 17) + { 0, { 0, 0, 0}}, // ( 66, 17) + { 0, { 0, 0, 0}}, // ( 67, 17) + { 0, { 0, 0, 0}}, // ( 68, 17) + { 0, { 0, 0, 0}}, // ( 69, 17) + { 0, { 0, 0, 0}}, // ( 70, 17) + { 0, { 0, 0, 0}}, // ( 71, 17) + { 0, { 0, 0, 0}}, // ( 72, 17) + { 0, { 0, 0, 0}}, // ( 73, 17) + { 0, { 0, 0, 0}}, // ( 74, 17) + { 0, { 0, 0, 0}}, // ( 75, 17) + { 0, { 0, 0, 0}}, // ( 76, 17) + { 0, { 0, 0, 0}}, // ( 77, 17) + { 0, { 0, 0, 0}}, // ( 78, 17) + { 0, { 0, 0, 0}}, // ( 79, 17) + { 0, { 0, 0, 0}}, // ( 80, 17) + { 0, { 0, 0, 0}}, // ( 81, 17) + { 0, { 0, 0, 0}}, // ( 82, 17) + { 0, { 0, 0, 0}}, // ( 83, 17) + { 0, { 0, 0, 0}}, // ( 84, 17) + { 0, { 0, 0, 0}}, // ( 85, 17) + { 0, { 0, 0, 0}}, // ( 86, 17) + { 0, { 0, 0, 0}}, // ( 87, 17) + { 0, { 0, 0, 0}}, // ( 88, 17) + { 0, { 0, 0, 0}}, // ( 89, 17) + { 0, { 0, 0, 0}}, // ( 90, 17) + { 0, { 0, 0, 0}}, // ( 91, 17) + { 0, { 0, 0, 0}}, // ( 92, 17) + { 0, { 0, 0, 0}}, // ( 93, 17) + { 0, { 0, 0, 0}}, // ( 94, 17) + { 0, { 0, 0, 0}}, // ( 95, 17) + { 0, { 0, 0, 0}}, // ( 96, 17) + { 0, { 0, 0, 0}}, // ( 97, 17) + { 0, { 0, 0, 0}}, // ( 98, 17) + { 0, { 0, 0, 0}}, // ( 99, 17) + { 0, { 0, 0, 0}}, // (100, 17) + { 0, { 0, 0, 0}}, // (101, 17) + { 0, { 0, 0, 0}}, // (102, 17) + { 0, { 0, 0, 0}}, // (103, 17) + { 0, { 0, 0, 0}}, // (104, 17) + { 0, { 0, 0, 0}}, // (105, 17) + { 0, { 0, 0, 0}}, // (106, 17) + { 0, { 0, 0, 0}}, // (107, 17) + { 0, { 0, 0, 0}}, // (108, 17) + { 0, { 0, 0, 0}}, // (109, 17) + { 0, { 0, 0, 0}}, // (110, 17) + { 0, { 0, 0, 0}}, // (111, 17) + { 0, { 0, 0, 0}}, // (112, 17) + { 0, { 0, 0, 0}}, // (113, 17) + { 0, { 0, 0, 0}}, // (114, 17) + { 0, { 0, 0, 0}}, // (115, 17) + { 0, { 0, 0, 0}}, // (116, 17) + { 0, { 0, 0, 0}}, // (117, 17) + { 0, { 0, 0, 0}}, // (118, 17) + { 0, { 0, 0, 0}}, // (119, 17) + { 0, { 0, 0, 0}}, // (120, 17) + { 0, { 0, 0, 0}}, // (121, 17) + { 0, { 0, 0, 0}}, // (122, 17) + { 0, { 0, 0, 0}}, // (123, 17) + { 0, { 0, 0, 0}}, // (124, 17) + { 0, { 0, 0, 0}}, // (125, 17) + { 0, { 0, 0, 0}}, // (126, 17) + { 0, { 0, 0, 0}}, // (127, 17) + { 0, { 0, 0, 0}}, // (128, 17) + { 0, { 0, 0, 0}}, // (129, 17) + { 0, { 0, 0, 0}}, // (130, 17) + { 0, { 0, 0, 0}}, // (131, 17) + { 0, { 0, 0, 0}}, // (132, 17) + { 0, { 0, 0, 0}}, // (133, 17) + { 0, { 0, 0, 0}}, // (134, 17) + { 0, { 0, 0, 0}}, // (135, 17) + { 0, { 0, 0, 0}}, // (136, 17) + { 0, { 0, 0, 0}}, // (137, 17) + { 0, { 0, 0, 0}}, // (138, 17) + { 33, { 0, 0, 0}}, // (139, 17) + {113, { 0, 0, 0}}, // (140, 17) + {128, { 0, 0, 0}}, // (141, 17) + {128, { 0, 0, 0}}, // (142, 17) + {128, { 0, 0, 0}}, // (143, 17) + {128, { 0, 0, 0}}, // (144, 17) + {128, { 0, 0, 0}}, // (145, 17) + {128, { 0, 0, 0}}, // (146, 17) + {128, { 0, 0, 0}}, // (147, 17) + {128, { 0, 0, 0}}, // (148, 17) + {128, { 0, 0, 0}}, // (149, 17) + {128, { 0, 0, 0}}, // (150, 17) + {128, { 0, 0, 0}}, // (151, 17) + {128, { 0, 0, 0}}, // (152, 17) + {128, { 0, 0, 0}}, // (153, 17) + {128, { 0, 0, 0}}, // (154, 17) + {128, { 0, 0, 0}}, // (155, 17) + {128, { 0, 0, 0}}, // (156, 17) + {128, { 0, 0, 0}}, // (157, 17) + {128, { 0, 0, 0}}, // (158, 17) + {128, { 0, 0, 0}}, // (159, 17) + {128, { 0, 0, 0}}, // (160, 17) + {128, { 0, 0, 0}}, // (161, 17) + {128, { 0, 0, 0}}, // (162, 17) + {128, { 0, 0, 0}}, // (163, 17) + {128, { 0, 0, 0}}, // (164, 17) + {128, { 0, 0, 0}}, // (165, 17) + {128, { 0, 0, 0}}, // (166, 17) + {128, { 0, 0, 0}}, // (167, 17) + {128, { 0, 0, 0}}, // (168, 17) + {128, { 0, 0, 0}}, // (169, 17) + {128, { 0, 0, 0}}, // (170, 17) + {128, { 0, 0, 0}}, // (171, 17) + {128, { 0, 0, 0}}, // (172, 17) + {128, { 0, 0, 0}}, // (173, 17) + {128, { 0, 0, 0}}, // (174, 17) + {128, { 0, 0, 0}}, // (175, 17) + {128, { 0, 0, 0}}, // (176, 17) + {128, { 0, 0, 0}}, // (177, 17) + {128, { 0, 0, 0}}, // (178, 17) + {128, { 0, 0, 0}}, // (179, 17) + {128, { 0, 0, 0}}, // ( 0, 18) + {128, { 0, 0, 0}}, // ( 1, 18) + {128, { 0, 0, 0}}, // ( 2, 18) + {128, { 0, 0, 0}}, // ( 3, 18) + {128, { 0, 0, 0}}, // ( 4, 18) + {128, { 0, 0, 0}}, // ( 5, 18) + {128, { 0, 0, 0}}, // ( 6, 18) + {128, { 0, 0, 0}}, // ( 7, 18) + {128, { 0, 0, 0}}, // ( 8, 18) + {128, { 0, 0, 0}}, // ( 9, 18) + {128, { 0, 0, 0}}, // ( 10, 18) + {128, { 0, 0, 0}}, // ( 11, 18) + {128, { 0, 0, 0}}, // ( 12, 18) + {128, { 0, 0, 0}}, // ( 13, 18) + {128, { 0, 0, 0}}, // ( 14, 18) + {128, { 0, 0, 0}}, // ( 15, 18) + {128, { 0, 0, 0}}, // ( 16, 18) + {128, { 0, 0, 0}}, // ( 17, 18) + {128, { 0, 0, 0}}, // ( 18, 18) + {128, { 0, 0, 0}}, // ( 19, 18) + {128, { 0, 0, 0}}, // ( 20, 18) + {128, { 0, 0, 0}}, // ( 21, 18) + {128, { 0, 0, 0}}, // ( 22, 18) + {128, { 0, 0, 0}}, // ( 23, 18) + {128, { 0, 0, 0}}, // ( 24, 18) + {128, { 0, 0, 0}}, // ( 25, 18) + {128, { 0, 0, 0}}, // ( 26, 18) + {128, { 0, 0, 0}}, // ( 27, 18) + {128, { 0, 0, 0}}, // ( 28, 18) + {128, { 0, 0, 0}}, // ( 29, 18) + {128, { 0, 0, 0}}, // ( 30, 18) + {128, { 0, 0, 0}}, // ( 31, 18) + {128, { 0, 0, 0}}, // ( 32, 18) + {128, { 0, 0, 0}}, // ( 33, 18) + {128, { 0, 0, 0}}, // ( 34, 18) + {128, { 0, 0, 0}}, // ( 35, 18) + {128, { 0, 0, 0}}, // ( 36, 18) + {128, { 0, 0, 0}}, // ( 37, 18) + { 85, { 0, 0, 0}}, // ( 38, 18) + { 9, { 0, 0, 0}}, // ( 39, 18) + { 0, { 0, 0, 0}}, // ( 40, 18) + { 0, { 0, 0, 0}}, // ( 41, 18) + { 0, { 0, 0, 0}}, // ( 42, 18) + { 0, { 0, 0, 0}}, // ( 43, 18) + { 0, { 0, 0, 0}}, // ( 44, 18) + { 0, { 0, 0, 0}}, // ( 45, 18) + { 0, { 0, 0, 0}}, // ( 46, 18) + { 0, { 0, 0, 0}}, // ( 47, 18) + { 0, { 0, 0, 0}}, // ( 48, 18) + { 0, { 0, 0, 0}}, // ( 49, 18) + { 0, { 0, 0, 0}}, // ( 50, 18) + { 0, { 0, 0, 0}}, // ( 51, 18) + { 0, { 0, 0, 0}}, // ( 52, 18) + { 0, { 0, 0, 0}}, // ( 53, 18) + { 0, { 0, 0, 0}}, // ( 54, 18) + { 0, { 0, 0, 0}}, // ( 55, 18) + { 0, { 0, 0, 0}}, // ( 56, 18) + { 0, { 0, 0, 0}}, // ( 57, 18) + { 0, { 0, 0, 0}}, // ( 58, 18) + { 0, { 0, 0, 0}}, // ( 59, 18) + { 0, { 0, 0, 0}}, // ( 60, 18) + { 0, { 0, 0, 0}}, // ( 61, 18) + { 0, { 0, 0, 0}}, // ( 62, 18) + { 0, { 0, 0, 0}}, // ( 63, 18) + { 0, { 0, 0, 0}}, // ( 64, 18) + { 0, { 0, 0, 0}}, // ( 65, 18) + { 0, { 0, 0, 0}}, // ( 66, 18) + { 0, { 0, 0, 0}}, // ( 67, 18) + { 0, { 0, 0, 0}}, // ( 68, 18) + { 0, { 0, 0, 0}}, // ( 69, 18) + { 0, { 0, 0, 0}}, // ( 70, 18) + { 0, { 0, 0, 0}}, // ( 71, 18) + { 0, { 0, 0, 0}}, // ( 72, 18) + { 0, { 0, 0, 0}}, // ( 73, 18) + { 0, { 0, 0, 0}}, // ( 74, 18) + { 0, { 0, 0, 0}}, // ( 75, 18) + { 0, { 0, 0, 0}}, // ( 76, 18) + { 0, { 0, 0, 0}}, // ( 77, 18) + { 0, { 0, 0, 0}}, // ( 78, 18) + { 0, { 0, 0, 0}}, // ( 79, 18) + { 0, { 0, 0, 0}}, // ( 80, 18) + { 0, { 0, 0, 0}}, // ( 81, 18) + { 0, { 0, 0, 0}}, // ( 82, 18) + { 0, { 0, 0, 0}}, // ( 83, 18) + { 0, { 0, 0, 0}}, // ( 84, 18) + { 0, { 0, 0, 0}}, // ( 85, 18) + { 0, { 0, 0, 0}}, // ( 86, 18) + { 0, { 0, 0, 0}}, // ( 87, 18) + { 0, { 0, 0, 0}}, // ( 88, 18) + { 0, { 0, 0, 0}}, // ( 89, 18) + { 0, { 0, 0, 0}}, // ( 90, 18) + { 0, { 0, 0, 0}}, // ( 91, 18) + { 0, { 0, 0, 0}}, // ( 92, 18) + { 0, { 0, 0, 0}}, // ( 93, 18) + { 0, { 0, 0, 0}}, // ( 94, 18) + { 0, { 0, 0, 0}}, // ( 95, 18) + { 0, { 0, 0, 0}}, // ( 96, 18) + { 0, { 0, 0, 0}}, // ( 97, 18) + { 0, { 0, 0, 0}}, // ( 98, 18) + { 0, { 0, 0, 0}}, // ( 99, 18) + { 0, { 0, 0, 0}}, // (100, 18) + { 0, { 0, 0, 0}}, // (101, 18) + { 0, { 0, 0, 0}}, // (102, 18) + { 0, { 0, 0, 0}}, // (103, 18) + { 0, { 0, 0, 0}}, // (104, 18) + { 0, { 0, 0, 0}}, // (105, 18) + { 0, { 0, 0, 0}}, // (106, 18) + { 0, { 0, 0, 0}}, // (107, 18) + { 0, { 0, 0, 0}}, // (108, 18) + { 0, { 0, 0, 0}}, // (109, 18) + { 0, { 0, 0, 0}}, // (110, 18) + { 0, { 0, 0, 0}}, // (111, 18) + { 0, { 0, 0, 0}}, // (112, 18) + { 0, { 0, 0, 0}}, // (113, 18) + { 0, { 0, 0, 0}}, // (114, 18) + { 0, { 0, 0, 0}}, // (115, 18) + { 0, { 0, 0, 0}}, // (116, 18) + { 0, { 0, 0, 0}}, // (117, 18) + { 0, { 0, 0, 0}}, // (118, 18) + { 0, { 0, 0, 0}}, // (119, 18) + { 0, { 0, 0, 0}}, // (120, 18) + { 0, { 0, 0, 0}}, // (121, 18) + { 0, { 0, 0, 0}}, // (122, 18) + { 0, { 0, 0, 0}}, // (123, 18) + { 0, { 0, 0, 0}}, // (124, 18) + { 0, { 0, 0, 0}}, // (125, 18) + { 0, { 0, 0, 0}}, // (126, 18) + { 0, { 0, 0, 0}}, // (127, 18) + { 0, { 0, 0, 0}}, // (128, 18) + { 0, { 0, 0, 0}}, // (129, 18) + { 0, { 0, 0, 0}}, // (130, 18) + { 0, { 0, 0, 0}}, // (131, 18) + { 0, { 0, 0, 0}}, // (132, 18) + { 0, { 0, 0, 0}}, // (133, 18) + { 0, { 0, 0, 0}}, // (134, 18) + { 0, { 0, 0, 0}}, // (135, 18) + { 0, { 0, 0, 0}}, // (136, 18) + { 0, { 0, 0, 0}}, // (137, 18) + { 0, { 0, 0, 0}}, // (138, 18) + { 0, { 0, 0, 0}}, // (139, 18) + { 9, { 0, 0, 0}}, // (140, 18) + { 85, { 0, 0, 0}}, // (141, 18) + {128, { 0, 0, 0}}, // (142, 18) + {128, { 0, 0, 0}}, // (143, 18) + {128, { 0, 0, 0}}, // (144, 18) + {128, { 0, 0, 0}}, // (145, 18) + {128, { 0, 0, 0}}, // (146, 18) + {128, { 0, 0, 0}}, // (147, 18) + {128, { 0, 0, 0}}, // (148, 18) + {128, { 0, 0, 0}}, // (149, 18) + {128, { 0, 0, 0}}, // (150, 18) + {128, { 0, 0, 0}}, // (151, 18) + {128, { 0, 0, 0}}, // (152, 18) + {128, { 0, 0, 0}}, // (153, 18) + {128, { 0, 0, 0}}, // (154, 18) + {128, { 0, 0, 0}}, // (155, 18) + {128, { 0, 0, 0}}, // (156, 18) + {128, { 0, 0, 0}}, // (157, 18) + {128, { 0, 0, 0}}, // (158, 18) + {128, { 0, 0, 0}}, // (159, 18) + {128, { 0, 0, 0}}, // (160, 18) + {128, { 0, 0, 0}}, // (161, 18) + {128, { 0, 0, 0}}, // (162, 18) + {128, { 0, 0, 0}}, // (163, 18) + {128, { 0, 0, 0}}, // (164, 18) + {128, { 0, 0, 0}}, // (165, 18) + {128, { 0, 0, 0}}, // (166, 18) + {128, { 0, 0, 0}}, // (167, 18) + {128, { 0, 0, 0}}, // (168, 18) + {128, { 0, 0, 0}}, // (169, 18) + {128, { 0, 0, 0}}, // (170, 18) + {128, { 0, 0, 0}}, // (171, 18) + {128, { 0, 0, 0}}, // (172, 18) + {128, { 0, 0, 0}}, // (173, 18) + {128, { 0, 0, 0}}, // (174, 18) + {128, { 0, 0, 0}}, // (175, 18) + {128, { 0, 0, 0}}, // (176, 18) + {128, { 0, 0, 0}}, // (177, 18) + {128, { 0, 0, 0}}, // (178, 18) + {128, { 0, 0, 0}}, // (179, 18) + {128, { 0, 0, 0}}, // ( 0, 19) + {128, { 0, 0, 0}}, // ( 1, 19) + {128, { 0, 0, 0}}, // ( 2, 19) + {128, { 0, 0, 0}}, // ( 3, 19) + {128, { 0, 0, 0}}, // ( 4, 19) + {128, { 0, 0, 0}}, // ( 5, 19) + {128, { 0, 0, 0}}, // ( 6, 19) + {128, { 0, 0, 0}}, // ( 7, 19) + {128, { 0, 0, 0}}, // ( 8, 19) + {128, { 0, 0, 0}}, // ( 9, 19) + {128, { 0, 0, 0}}, // ( 10, 19) + {128, { 0, 0, 0}}, // ( 11, 19) + {128, { 0, 0, 0}}, // ( 12, 19) + {128, { 0, 0, 0}}, // ( 13, 19) + {128, { 0, 0, 0}}, // ( 14, 19) + {128, { 0, 0, 0}}, // ( 15, 19) + {128, { 0, 0, 0}}, // ( 16, 19) + {128, { 0, 0, 0}}, // ( 17, 19) + {128, { 0, 0, 0}}, // ( 18, 19) + {128, { 0, 0, 0}}, // ( 19, 19) + {128, { 0, 0, 0}}, // ( 20, 19) + {128, { 0, 0, 0}}, // ( 21, 19) + {128, { 0, 0, 0}}, // ( 22, 19) + {128, { 0, 0, 0}}, // ( 23, 19) + {128, { 0, 0, 0}}, // ( 24, 19) + {128, { 0, 0, 0}}, // ( 25, 19) + {128, { 0, 0, 0}}, // ( 26, 19) + {128, { 0, 0, 0}}, // ( 27, 19) + {128, { 0, 0, 0}}, // ( 28, 19) + {128, { 0, 0, 0}}, // ( 29, 19) + {128, { 0, 0, 0}}, // ( 30, 19) + {128, { 0, 0, 0}}, // ( 31, 19) + {128, { 0, 0, 0}}, // ( 32, 19) + {128, { 0, 0, 0}}, // ( 33, 19) + {128, { 0, 0, 0}}, // ( 34, 19) + {128, { 0, 0, 0}}, // ( 35, 19) + {123, { 0, 0, 0}}, // ( 36, 19) + { 49, { 0, 0, 0}}, // ( 37, 19) + { 0, { 0, 0, 0}}, // ( 38, 19) + { 0, { 0, 0, 0}}, // ( 39, 19) + { 0, { 0, 0, 0}}, // ( 40, 19) + { 0, { 0, 0, 0}}, // ( 41, 19) + { 0, { 0, 0, 0}}, // ( 42, 19) + { 0, { 0, 0, 0}}, // ( 43, 19) + { 0, { 0, 0, 0}}, // ( 44, 19) + { 0, { 0, 0, 0}}, // ( 45, 19) + { 0, { 0, 0, 0}}, // ( 46, 19) + { 0, { 0, 0, 0}}, // ( 47, 19) + { 0, { 0, 0, 0}}, // ( 48, 19) + { 0, { 0, 0, 0}}, // ( 49, 19) + { 0, { 0, 0, 0}}, // ( 50, 19) + { 0, { 0, 0, 0}}, // ( 51, 19) + { 0, { 0, 0, 0}}, // ( 52, 19) + { 0, { 0, 0, 0}}, // ( 53, 19) + { 0, { 0, 0, 0}}, // ( 54, 19) + { 0, { 0, 0, 0}}, // ( 55, 19) + { 0, { 0, 0, 0}}, // ( 56, 19) + { 0, { 0, 0, 0}}, // ( 57, 19) + { 0, { 0, 0, 0}}, // ( 58, 19) + { 0, { 0, 0, 0}}, // ( 59, 19) + { 0, { 0, 0, 0}}, // ( 60, 19) + { 0, { 0, 0, 0}}, // ( 61, 19) + { 0, { 0, 0, 0}}, // ( 62, 19) + { 0, { 0, 0, 0}}, // ( 63, 19) + { 0, { 0, 0, 0}}, // ( 64, 19) + { 0, { 0, 0, 0}}, // ( 65, 19) + { 0, { 0, 0, 0}}, // ( 66, 19) + { 0, { 0, 0, 0}}, // ( 67, 19) + { 0, { 0, 0, 0}}, // ( 68, 19) + { 0, { 0, 0, 0}}, // ( 69, 19) + { 0, { 0, 0, 0}}, // ( 70, 19) + { 0, { 0, 0, 0}}, // ( 71, 19) + { 0, { 0, 0, 0}}, // ( 72, 19) + { 0, { 0, 0, 0}}, // ( 73, 19) + { 0, { 0, 0, 0}}, // ( 74, 19) + { 0, { 0, 0, 0}}, // ( 75, 19) + { 0, { 0, 0, 0}}, // ( 76, 19) + { 0, { 0, 0, 0}}, // ( 77, 19) + { 0, { 0, 0, 0}}, // ( 78, 19) + { 0, { 0, 0, 0}}, // ( 79, 19) + { 0, { 0, 0, 0}}, // ( 80, 19) + { 0, { 0, 0, 0}}, // ( 81, 19) + { 0, { 0, 0, 0}}, // ( 82, 19) + { 0, { 0, 0, 0}}, // ( 83, 19) + { 0, { 0, 0, 0}}, // ( 84, 19) + { 0, { 0, 0, 0}}, // ( 85, 19) + { 0, { 0, 0, 0}}, // ( 86, 19) + { 0, { 0, 0, 0}}, // ( 87, 19) + { 0, { 0, 0, 0}}, // ( 88, 19) + { 0, { 0, 0, 0}}, // ( 89, 19) + { 0, { 0, 0, 0}}, // ( 90, 19) + { 0, { 0, 0, 0}}, // ( 91, 19) + { 0, { 0, 0, 0}}, // ( 92, 19) + { 0, { 0, 0, 0}}, // ( 93, 19) + { 0, { 0, 0, 0}}, // ( 94, 19) + { 0, { 0, 0, 0}}, // ( 95, 19) + { 0, { 0, 0, 0}}, // ( 96, 19) + { 0, { 0, 0, 0}}, // ( 97, 19) + { 0, { 0, 0, 0}}, // ( 98, 19) + { 0, { 0, 0, 0}}, // ( 99, 19) + { 0, { 0, 0, 0}}, // (100, 19) + { 0, { 0, 0, 0}}, // (101, 19) + { 0, { 0, 0, 0}}, // (102, 19) + { 0, { 0, 0, 0}}, // (103, 19) + { 0, { 0, 0, 0}}, // (104, 19) + { 0, { 0, 0, 0}}, // (105, 19) + { 0, { 0, 0, 0}}, // (106, 19) + { 0, { 0, 0, 0}}, // (107, 19) + { 0, { 0, 0, 0}}, // (108, 19) + { 0, { 0, 0, 0}}, // (109, 19) + { 0, { 0, 0, 0}}, // (110, 19) + { 0, { 0, 0, 0}}, // (111, 19) + { 0, { 0, 0, 0}}, // (112, 19) + { 0, { 0, 0, 0}}, // (113, 19) + { 0, { 0, 0, 0}}, // (114, 19) + { 0, { 0, 0, 0}}, // (115, 19) + { 0, { 0, 0, 0}}, // (116, 19) + { 0, { 0, 0, 0}}, // (117, 19) + { 0, { 0, 0, 0}}, // (118, 19) + { 0, { 0, 0, 0}}, // (119, 19) + { 0, { 0, 0, 0}}, // (120, 19) + { 0, { 0, 0, 0}}, // (121, 19) + { 0, { 0, 0, 0}}, // (122, 19) + { 0, { 0, 0, 0}}, // (123, 19) + { 0, { 0, 0, 0}}, // (124, 19) + { 0, { 0, 0, 0}}, // (125, 19) + { 0, { 0, 0, 0}}, // (126, 19) + { 0, { 0, 0, 0}}, // (127, 19) + { 0, { 0, 0, 0}}, // (128, 19) + { 0, { 0, 0, 0}}, // (129, 19) + { 0, { 0, 0, 0}}, // (130, 19) + { 0, { 0, 0, 0}}, // (131, 19) + { 0, { 0, 0, 0}}, // (132, 19) + { 0, { 0, 0, 0}}, // (133, 19) + { 0, { 0, 0, 0}}, // (134, 19) + { 0, { 0, 0, 0}}, // (135, 19) + { 0, { 0, 0, 0}}, // (136, 19) + { 0, { 0, 0, 0}}, // (137, 19) + { 0, { 0, 0, 0}}, // (138, 19) + { 0, { 0, 0, 0}}, // (139, 19) + { 0, { 0, 0, 0}}, // (140, 19) + { 0, { 0, 0, 0}}, // (141, 19) + { 49, { 0, 0, 0}}, // (142, 19) + {123, { 0, 0, 0}}, // (143, 19) + {128, { 0, 0, 0}}, // (144, 19) + {128, { 0, 0, 0}}, // (145, 19) + {128, { 0, 0, 0}}, // (146, 19) + {128, { 0, 0, 0}}, // (147, 19) + {128, { 0, 0, 0}}, // (148, 19) + {128, { 0, 0, 0}}, // (149, 19) + {128, { 0, 0, 0}}, // (150, 19) + {128, { 0, 0, 0}}, // (151, 19) + {128, { 0, 0, 0}}, // (152, 19) + {128, { 0, 0, 0}}, // (153, 19) + {128, { 0, 0, 0}}, // (154, 19) + {128, { 0, 0, 0}}, // (155, 19) + {128, { 0, 0, 0}}, // (156, 19) + {128, { 0, 0, 0}}, // (157, 19) + {128, { 0, 0, 0}}, // (158, 19) + {128, { 0, 0, 0}}, // (159, 19) + {128, { 0, 0, 0}}, // (160, 19) + {128, { 0, 0, 0}}, // (161, 19) + {128, { 0, 0, 0}}, // (162, 19) + {128, { 0, 0, 0}}, // (163, 19) + {128, { 0, 0, 0}}, // (164, 19) + {128, { 0, 0, 0}}, // (165, 19) + {128, { 0, 0, 0}}, // (166, 19) + {128, { 0, 0, 0}}, // (167, 19) + {128, { 0, 0, 0}}, // (168, 19) + {128, { 0, 0, 0}}, // (169, 19) + {128, { 0, 0, 0}}, // (170, 19) + {128, { 0, 0, 0}}, // (171, 19) + {128, { 0, 0, 0}}, // (172, 19) + {128, { 0, 0, 0}}, // (173, 19) + {128, { 0, 0, 0}}, // (174, 19) + {128, { 0, 0, 0}}, // (175, 19) + {128, { 0, 0, 0}}, // (176, 19) + {128, { 0, 0, 0}}, // (177, 19) + {128, { 0, 0, 0}}, // (178, 19) + {128, { 0, 0, 0}}, // (179, 19) + {128, { 0, 0, 0}}, // ( 0, 20) + {128, { 0, 0, 0}}, // ( 1, 20) + {128, { 0, 0, 0}}, // ( 2, 20) + {128, { 0, 0, 0}}, // ( 3, 20) + {128, { 0, 0, 0}}, // ( 4, 20) + {128, { 0, 0, 0}}, // ( 5, 20) + {128, { 0, 0, 0}}, // ( 6, 20) + {128, { 0, 0, 0}}, // ( 7, 20) + {128, { 0, 0, 0}}, // ( 8, 20) + {128, { 0, 0, 0}}, // ( 9, 20) + {128, { 0, 0, 0}}, // ( 10, 20) + {128, { 0, 0, 0}}, // ( 11, 20) + {128, { 0, 0, 0}}, // ( 12, 20) + {128, { 0, 0, 0}}, // ( 13, 20) + {128, { 0, 0, 0}}, // ( 14, 20) + {128, { 0, 0, 0}}, // ( 15, 20) + {128, { 0, 0, 0}}, // ( 16, 20) + {128, { 0, 0, 0}}, // ( 17, 20) + {128, { 0, 0, 0}}, // ( 18, 20) + {128, { 0, 0, 0}}, // ( 19, 20) + {128, { 0, 0, 0}}, // ( 20, 20) + {128, { 0, 0, 0}}, // ( 21, 20) + {128, { 0, 0, 0}}, // ( 22, 20) + {128, { 0, 0, 0}}, // ( 23, 20) + {128, { 0, 0, 0}}, // ( 24, 20) + {128, { 0, 0, 0}}, // ( 25, 20) + {128, { 0, 0, 0}}, // ( 26, 20) + {128, { 0, 0, 0}}, // ( 27, 20) + {128, { 0, 0, 0}}, // ( 28, 20) + {128, { 0, 0, 0}}, // ( 29, 20) + {128, { 0, 0, 0}}, // ( 30, 20) + {128, { 0, 0, 0}}, // ( 31, 20) + {128, { 0, 0, 0}}, // ( 32, 20) + {128, { 0, 0, 0}}, // ( 33, 20) + {128, { 0, 0, 0}}, // ( 34, 20) + {111, { 0, 0, 0}}, // ( 35, 20) + { 24, { 0, 0, 0}}, // ( 36, 20) + { 0, { 0, 0, 0}}, // ( 37, 20) + { 0, { 0, 0, 0}}, // ( 38, 20) + { 0, { 0, 0, 0}}, // ( 39, 20) + { 0, { 0, 0, 0}}, // ( 40, 20) + { 0, { 0, 0, 0}}, // ( 41, 20) + { 0, { 0, 0, 0}}, // ( 42, 20) + { 0, { 0, 0, 0}}, // ( 43, 20) + { 0, { 0, 0, 0}}, // ( 44, 20) + { 0, { 0, 0, 0}}, // ( 45, 20) + { 0, { 0, 0, 0}}, // ( 46, 20) + { 0, { 0, 0, 0}}, // ( 47, 20) + { 0, { 0, 0, 0}}, // ( 48, 20) + { 0, { 0, 0, 0}}, // ( 49, 20) + { 0, { 0, 0, 0}}, // ( 50, 20) + { 0, { 0, 0, 0}}, // ( 51, 20) + { 0, { 0, 0, 0}}, // ( 52, 20) + { 0, { 0, 0, 0}}, // ( 53, 20) + { 0, { 0, 0, 0}}, // ( 54, 20) + { 0, { 0, 0, 0}}, // ( 55, 20) + { 0, { 0, 0, 0}}, // ( 56, 20) + { 0, { 0, 0, 0}}, // ( 57, 20) + { 0, { 0, 0, 0}}, // ( 58, 20) + { 0, { 0, 0, 0}}, // ( 59, 20) + { 0, { 0, 0, 0}}, // ( 60, 20) + { 0, { 0, 0, 0}}, // ( 61, 20) + { 0, { 0, 0, 0}}, // ( 62, 20) + { 0, { 0, 0, 0}}, // ( 63, 20) + { 0, { 0, 0, 0}}, // ( 64, 20) + { 0, { 0, 0, 0}}, // ( 65, 20) + { 0, { 0, 0, 0}}, // ( 66, 20) + { 0, { 0, 0, 0}}, // ( 67, 20) + { 0, { 0, 0, 0}}, // ( 68, 20) + { 0, { 0, 0, 0}}, // ( 69, 20) + { 0, { 0, 0, 0}}, // ( 70, 20) + { 0, { 0, 0, 0}}, // ( 71, 20) + { 0, { 0, 0, 0}}, // ( 72, 20) + { 0, { 0, 0, 0}}, // ( 73, 20) + { 0, { 0, 0, 0}}, // ( 74, 20) + { 0, { 0, 0, 0}}, // ( 75, 20) + { 0, { 0, 0, 0}}, // ( 76, 20) + { 0, { 0, 0, 0}}, // ( 77, 20) + { 0, { 0, 0, 0}}, // ( 78, 20) + { 0, { 0, 0, 0}}, // ( 79, 20) + { 0, { 0, 0, 0}}, // ( 80, 20) + { 0, { 0, 0, 0}}, // ( 81, 20) + { 0, { 0, 0, 0}}, // ( 82, 20) + { 0, { 0, 0, 0}}, // ( 83, 20) + { 0, { 0, 0, 0}}, // ( 84, 20) + { 0, { 0, 0, 0}}, // ( 85, 20) + { 0, { 0, 0, 0}}, // ( 86, 20) + { 0, { 0, 0, 0}}, // ( 87, 20) + { 0, { 0, 0, 0}}, // ( 88, 20) + { 0, { 0, 0, 0}}, // ( 89, 20) + { 0, { 0, 0, 0}}, // ( 90, 20) + { 0, { 0, 0, 0}}, // ( 91, 20) + { 0, { 0, 0, 0}}, // ( 92, 20) + { 0, { 0, 0, 0}}, // ( 93, 20) + { 0, { 0, 0, 0}}, // ( 94, 20) + { 0, { 0, 0, 0}}, // ( 95, 20) + { 0, { 0, 0, 0}}, // ( 96, 20) + { 0, { 0, 0, 0}}, // ( 97, 20) + { 0, { 0, 0, 0}}, // ( 98, 20) + { 0, { 0, 0, 0}}, // ( 99, 20) + { 0, { 0, 0, 0}}, // (100, 20) + { 0, { 0, 0, 0}}, // (101, 20) + { 0, { 0, 0, 0}}, // (102, 20) + { 0, { 0, 0, 0}}, // (103, 20) + { 0, { 0, 0, 0}}, // (104, 20) + { 0, { 0, 0, 0}}, // (105, 20) + { 0, { 0, 0, 0}}, // (106, 20) + { 0, { 0, 0, 0}}, // (107, 20) + { 0, { 0, 0, 0}}, // (108, 20) + { 0, { 0, 0, 0}}, // (109, 20) + { 0, { 0, 0, 0}}, // (110, 20) + { 0, { 0, 0, 0}}, // (111, 20) + { 0, { 0, 0, 0}}, // (112, 20) + { 0, { 0, 0, 0}}, // (113, 20) + { 0, { 0, 0, 0}}, // (114, 20) + { 0, { 0, 0, 0}}, // (115, 20) + { 0, { 0, 0, 0}}, // (116, 20) + { 0, { 0, 0, 0}}, // (117, 20) + { 0, { 0, 0, 0}}, // (118, 20) + { 0, { 0, 0, 0}}, // (119, 20) + { 0, { 0, 0, 0}}, // (120, 20) + { 0, { 0, 0, 0}}, // (121, 20) + { 0, { 0, 0, 0}}, // (122, 20) + { 0, { 0, 0, 0}}, // (123, 20) + { 0, { 0, 0, 0}}, // (124, 20) + { 0, { 0, 0, 0}}, // (125, 20) + { 0, { 0, 0, 0}}, // (126, 20) + { 0, { 0, 0, 0}}, // (127, 20) + { 0, { 0, 0, 0}}, // (128, 20) + { 0, { 0, 0, 0}}, // (129, 20) + { 0, { 0, 0, 0}}, // (130, 20) + { 0, { 0, 0, 0}}, // (131, 20) + { 0, { 0, 0, 0}}, // (132, 20) + { 0, { 0, 0, 0}}, // (133, 20) + { 0, { 0, 0, 0}}, // (134, 20) + { 0, { 0, 0, 0}}, // (135, 20) + { 0, { 0, 0, 0}}, // (136, 20) + { 0, { 0, 0, 0}}, // (137, 20) + { 0, { 0, 0, 0}}, // (138, 20) + { 0, { 0, 0, 0}}, // (139, 20) + { 0, { 0, 0, 0}}, // (140, 20) + { 0, { 0, 0, 0}}, // (141, 20) + { 0, { 0, 0, 0}}, // (142, 20) + { 24, { 0, 0, 0}}, // (143, 20) + {111, { 0, 0, 0}}, // (144, 20) + {128, { 0, 0, 0}}, // (145, 20) + {128, { 0, 0, 0}}, // (146, 20) + {128, { 0, 0, 0}}, // (147, 20) + {128, { 0, 0, 0}}, // (148, 20) + {128, { 0, 0, 0}}, // (149, 20) + {128, { 0, 0, 0}}, // (150, 20) + {128, { 0, 0, 0}}, // (151, 20) + {128, { 0, 0, 0}}, // (152, 20) + {128, { 0, 0, 0}}, // (153, 20) + {128, { 0, 0, 0}}, // (154, 20) + {128, { 0, 0, 0}}, // (155, 20) + {128, { 0, 0, 0}}, // (156, 20) + {128, { 0, 0, 0}}, // (157, 20) + {128, { 0, 0, 0}}, // (158, 20) + {128, { 0, 0, 0}}, // (159, 20) + {128, { 0, 0, 0}}, // (160, 20) + {128, { 0, 0, 0}}, // (161, 20) + {128, { 0, 0, 0}}, // (162, 20) + {128, { 0, 0, 0}}, // (163, 20) + {128, { 0, 0, 0}}, // (164, 20) + {128, { 0, 0, 0}}, // (165, 20) + {128, { 0, 0, 0}}, // (166, 20) + {128, { 0, 0, 0}}, // (167, 20) + {128, { 0, 0, 0}}, // (168, 20) + {128, { 0, 0, 0}}, // (169, 20) + {128, { 0, 0, 0}}, // (170, 20) + {128, { 0, 0, 0}}, // (171, 20) + {128, { 0, 0, 0}}, // (172, 20) + {128, { 0, 0, 0}}, // (173, 20) + {128, { 0, 0, 0}}, // (174, 20) + {128, { 0, 0, 0}}, // (175, 20) + {128, { 0, 0, 0}}, // (176, 20) + {128, { 0, 0, 0}}, // (177, 20) + {128, { 0, 0, 0}}, // (178, 20) + {128, { 0, 0, 0}}, // (179, 20) + {128, { 0, 0, 0}}, // ( 0, 21) + {128, { 0, 0, 0}}, // ( 1, 21) + {128, { 0, 0, 0}}, // ( 2, 21) + {128, { 0, 0, 0}}, // ( 3, 21) + {128, { 0, 0, 0}}, // ( 4, 21) + {128, { 0, 0, 0}}, // ( 5, 21) + {128, { 0, 0, 0}}, // ( 6, 21) + {128, { 0, 0, 0}}, // ( 7, 21) + {128, { 0, 0, 0}}, // ( 8, 21) + {128, { 0, 0, 0}}, // ( 9, 21) + {128, { 0, 0, 0}}, // ( 10, 21) + {128, { 0, 0, 0}}, // ( 11, 21) + {128, { 0, 0, 0}}, // ( 12, 21) + {128, { 0, 0, 0}}, // ( 13, 21) + {128, { 0, 0, 0}}, // ( 14, 21) + {128, { 0, 0, 0}}, // ( 15, 21) + {128, { 0, 0, 0}}, // ( 16, 21) + {128, { 0, 0, 0}}, // ( 17, 21) + {128, { 0, 0, 0}}, // ( 18, 21) + {128, { 0, 0, 0}}, // ( 19, 21) + {128, { 0, 0, 0}}, // ( 20, 21) + {128, { 0, 0, 0}}, // ( 21, 21) + {128, { 0, 0, 0}}, // ( 22, 21) + {128, { 0, 0, 0}}, // ( 23, 21) + {128, { 0, 0, 0}}, // ( 24, 21) + {128, { 0, 0, 0}}, // ( 25, 21) + {128, { 0, 0, 0}}, // ( 26, 21) + {128, { 0, 0, 0}}, // ( 27, 21) + {128, { 0, 0, 0}}, // ( 28, 21) + {128, { 0, 0, 0}}, // ( 29, 21) + {128, { 0, 0, 0}}, // ( 30, 21) + {128, { 0, 0, 0}}, // ( 31, 21) + {128, { 0, 0, 0}}, // ( 32, 21) + {128, { 0, 0, 0}}, // ( 33, 21) + { 91, { 0, 0, 0}}, // ( 34, 21) + { 9, { 0, 0, 0}}, // ( 35, 21) + { 0, { 0, 0, 0}}, // ( 36, 21) + { 0, { 0, 0, 0}}, // ( 37, 21) + { 0, { 0, 0, 0}}, // ( 38, 21) + { 0, { 0, 0, 0}}, // ( 39, 21) + { 0, { 0, 0, 0}}, // ( 40, 21) + { 0, { 0, 0, 0}}, // ( 41, 21) + { 0, { 0, 0, 0}}, // ( 42, 21) + { 0, { 0, 0, 0}}, // ( 43, 21) + { 0, { 0, 0, 0}}, // ( 44, 21) + { 0, { 0, 0, 0}}, // ( 45, 21) + { 0, { 0, 0, 0}}, // ( 46, 21) + { 0, { 0, 0, 0}}, // ( 47, 21) + { 0, { 0, 0, 0}}, // ( 48, 21) + { 0, { 0, 0, 0}}, // ( 49, 21) + { 0, { 0, 0, 0}}, // ( 50, 21) + { 0, { 0, 0, 0}}, // ( 51, 21) + { 0, { 0, 0, 0}}, // ( 52, 21) + { 0, { 0, 0, 0}}, // ( 53, 21) + { 0, { 0, 0, 0}}, // ( 54, 21) + { 0, { 0, 0, 0}}, // ( 55, 21) + { 0, { 0, 0, 0}}, // ( 56, 21) + { 0, { 0, 0, 0}}, // ( 57, 21) + { 0, { 0, 0, 0}}, // ( 58, 21) + { 0, { 0, 0, 0}}, // ( 59, 21) + { 0, { 0, 0, 0}}, // ( 60, 21) + { 0, { 0, 0, 0}}, // ( 61, 21) + { 0, { 0, 0, 0}}, // ( 62, 21) + { 0, { 0, 0, 0}}, // ( 63, 21) + { 0, { 0, 0, 0}}, // ( 64, 21) + { 0, { 0, 0, 0}}, // ( 65, 21) + { 0, { 0, 0, 0}}, // ( 66, 21) + { 0, { 0, 0, 0}}, // ( 67, 21) + { 0, { 0, 0, 0}}, // ( 68, 21) + { 0, { 0, 0, 0}}, // ( 69, 21) + { 0, { 0, 0, 0}}, // ( 70, 21) + { 0, { 0, 0, 0}}, // ( 71, 21) + { 0, { 0, 0, 0}}, // ( 72, 21) + { 0, { 0, 0, 0}}, // ( 73, 21) + { 0, { 0, 0, 0}}, // ( 74, 21) + { 0, { 0, 0, 0}}, // ( 75, 21) + { 0, { 0, 0, 0}}, // ( 76, 21) + { 0, { 0, 0, 0}}, // ( 77, 21) + { 0, { 0, 0, 0}}, // ( 78, 21) + { 0, { 0, 0, 0}}, // ( 79, 21) + { 0, { 0, 0, 0}}, // ( 80, 21) + { 0, { 0, 0, 0}}, // ( 81, 21) + { 0, { 0, 0, 0}}, // ( 82, 21) + { 0, { 0, 0, 0}}, // ( 83, 21) + { 0, { 0, 0, 0}}, // ( 84, 21) + { 0, { 0, 0, 0}}, // ( 85, 21) + { 0, { 0, 0, 0}}, // ( 86, 21) + { 0, { 0, 0, 0}}, // ( 87, 21) + { 0, { 0, 0, 0}}, // ( 88, 21) + { 0, { 0, 0, 0}}, // ( 89, 21) + { 0, { 0, 0, 0}}, // ( 90, 21) + { 0, { 0, 0, 0}}, // ( 91, 21) + { 0, { 0, 0, 0}}, // ( 92, 21) + { 0, { 0, 0, 0}}, // ( 93, 21) + { 0, { 0, 0, 0}}, // ( 94, 21) + { 0, { 0, 0, 0}}, // ( 95, 21) + { 0, { 0, 0, 0}}, // ( 96, 21) + { 0, { 0, 0, 0}}, // ( 97, 21) + { 0, { 0, 0, 0}}, // ( 98, 21) + { 0, { 0, 0, 0}}, // ( 99, 21) + { 0, { 0, 0, 0}}, // (100, 21) + { 0, { 0, 0, 0}}, // (101, 21) + { 0, { 0, 0, 0}}, // (102, 21) + { 0, { 0, 0, 0}}, // (103, 21) + { 0, { 0, 0, 0}}, // (104, 21) + { 0, { 0, 0, 0}}, // (105, 21) + { 0, { 0, 0, 0}}, // (106, 21) + { 0, { 0, 0, 0}}, // (107, 21) + { 0, { 0, 0, 0}}, // (108, 21) + { 0, { 0, 0, 0}}, // (109, 21) + { 0, { 0, 0, 0}}, // (110, 21) + { 0, { 0, 0, 0}}, // (111, 21) + { 0, { 0, 0, 0}}, // (112, 21) + { 0, { 0, 0, 0}}, // (113, 21) + { 0, { 0, 0, 0}}, // (114, 21) + { 0, { 0, 0, 0}}, // (115, 21) + { 0, { 0, 0, 0}}, // (116, 21) + { 0, { 0, 0, 0}}, // (117, 21) + { 0, { 0, 0, 0}}, // (118, 21) + { 0, { 0, 0, 0}}, // (119, 21) + { 0, { 0, 0, 0}}, // (120, 21) + { 0, { 0, 0, 0}}, // (121, 21) + { 0, { 0, 0, 0}}, // (122, 21) + { 0, { 0, 0, 0}}, // (123, 21) + { 0, { 0, 0, 0}}, // (124, 21) + { 0, { 0, 0, 0}}, // (125, 21) + { 0, { 0, 0, 0}}, // (126, 21) + { 0, { 0, 0, 0}}, // (127, 21) + { 0, { 0, 0, 0}}, // (128, 21) + { 0, { 0, 0, 0}}, // (129, 21) + { 0, { 0, 0, 0}}, // (130, 21) + { 0, { 0, 0, 0}}, // (131, 21) + { 0, { 0, 0, 0}}, // (132, 21) + { 0, { 0, 0, 0}}, // (133, 21) + { 0, { 0, 0, 0}}, // (134, 21) + { 0, { 0, 0, 0}}, // (135, 21) + { 0, { 0, 0, 0}}, // (136, 21) + { 0, { 0, 0, 0}}, // (137, 21) + { 0, { 0, 0, 0}}, // (138, 21) + { 0, { 0, 0, 0}}, // (139, 21) + { 0, { 0, 0, 0}}, // (140, 21) + { 0, { 0, 0, 0}}, // (141, 21) + { 0, { 0, 0, 0}}, // (142, 21) + { 0, { 0, 0, 0}}, // (143, 21) + { 9, { 0, 0, 0}}, // (144, 21) + { 91, { 0, 0, 0}}, // (145, 21) + {128, { 0, 0, 0}}, // (146, 21) + {128, { 0, 0, 0}}, // (147, 21) + {128, { 0, 0, 0}}, // (148, 21) + {128, { 0, 0, 0}}, // (149, 21) + {128, { 0, 0, 0}}, // (150, 21) + {128, { 0, 0, 0}}, // (151, 21) + {128, { 0, 0, 0}}, // (152, 21) + {128, { 0, 0, 0}}, // (153, 21) + {128, { 0, 0, 0}}, // (154, 21) + {128, { 0, 0, 0}}, // (155, 21) + {128, { 0, 0, 0}}, // (156, 21) + {128, { 0, 0, 0}}, // (157, 21) + {128, { 0, 0, 0}}, // (158, 21) + {128, { 0, 0, 0}}, // (159, 21) + {128, { 0, 0, 0}}, // (160, 21) + {128, { 0, 0, 0}}, // (161, 21) + {128, { 0, 0, 0}}, // (162, 21) + {128, { 0, 0, 0}}, // (163, 21) + {128, { 0, 0, 0}}, // (164, 21) + {128, { 0, 0, 0}}, // (165, 21) + {128, { 0, 0, 0}}, // (166, 21) + {128, { 0, 0, 0}}, // (167, 21) + {128, { 0, 0, 0}}, // (168, 21) + {128, { 0, 0, 0}}, // (169, 21) + {128, { 0, 0, 0}}, // (170, 21) + {128, { 0, 0, 0}}, // (171, 21) + {128, { 0, 0, 0}}, // (172, 21) + {128, { 0, 0, 0}}, // (173, 21) + {128, { 0, 0, 0}}, // (174, 21) + {128, { 0, 0, 0}}, // (175, 21) + {128, { 0, 0, 0}}, // (176, 21) + {128, { 0, 0, 0}}, // (177, 21) + {128, { 0, 0, 0}}, // (178, 21) + {128, { 0, 0, 0}}, // (179, 21) + {128, { 0, 0, 0}}, // ( 0, 22) + {128, { 0, 0, 0}}, // ( 1, 22) + {128, { 0, 0, 0}}, // ( 2, 22) + {128, { 0, 0, 0}}, // ( 3, 22) + {128, { 0, 0, 0}}, // ( 4, 22) + {128, { 0, 0, 0}}, // ( 5, 22) + {128, { 0, 0, 0}}, // ( 6, 22) + {128, { 0, 0, 0}}, // ( 7, 22) + {128, { 0, 0, 0}}, // ( 8, 22) + {128, { 0, 0, 0}}, // ( 9, 22) + {128, { 0, 0, 0}}, // ( 10, 22) + {128, { 0, 0, 0}}, // ( 11, 22) + {128, { 0, 0, 0}}, // ( 12, 22) + {128, { 0, 0, 0}}, // ( 13, 22) + {128, { 0, 0, 0}}, // ( 14, 22) + {128, { 0, 0, 0}}, // ( 15, 22) + {128, { 0, 0, 0}}, // ( 16, 22) + {128, { 0, 0, 0}}, // ( 17, 22) + {128, { 0, 0, 0}}, // ( 18, 22) + {128, { 0, 0, 0}}, // ( 19, 22) + {128, { 0, 0, 0}}, // ( 20, 22) + {128, { 0, 0, 0}}, // ( 21, 22) + {128, { 0, 0, 0}}, // ( 22, 22) + {128, { 0, 0, 0}}, // ( 23, 22) + {128, { 0, 0, 0}}, // ( 24, 22) + {128, { 0, 0, 0}}, // ( 25, 22) + {128, { 0, 0, 0}}, // ( 26, 22) + {128, { 0, 0, 0}}, // ( 27, 22) + {128, { 0, 0, 0}}, // ( 28, 22) + {128, { 0, 0, 0}}, // ( 29, 22) + {128, { 0, 0, 0}}, // ( 30, 22) + {128, { 0, 0, 0}}, // ( 31, 22) + {128, { 0, 0, 0}}, // ( 32, 22) + { 69, { 0, 0, 0}}, // ( 33, 22) + { 1, { 0, 0, 0}}, // ( 34, 22) + { 0, { 0, 0, 0}}, // ( 35, 22) + { 0, { 0, 0, 0}}, // ( 36, 22) + { 0, { 0, 0, 0}}, // ( 37, 22) + { 0, { 0, 0, 0}}, // ( 38, 22) + { 0, { 0, 0, 0}}, // ( 39, 22) + { 0, { 0, 0, 0}}, // ( 40, 22) + { 0, { 0, 0, 0}}, // ( 41, 22) + { 0, { 0, 0, 0}}, // ( 42, 22) + { 0, { 0, 0, 0}}, // ( 43, 22) + { 0, { 0, 0, 0}}, // ( 44, 22) + { 0, { 0, 0, 0}}, // ( 45, 22) + { 0, { 0, 0, 0}}, // ( 46, 22) + { 0, { 0, 0, 0}}, // ( 47, 22) + { 0, { 0, 0, 0}}, // ( 48, 22) + { 0, { 0, 0, 0}}, // ( 49, 22) + { 0, { 0, 0, 0}}, // ( 50, 22) + { 0, { 0, 0, 0}}, // ( 51, 22) + { 0, { 0, 0, 0}}, // ( 52, 22) + { 0, { 0, 0, 0}}, // ( 53, 22) + { 0, { 0, 0, 0}}, // ( 54, 22) + { 0, { 0, 0, 0}}, // ( 55, 22) + { 0, { 0, 0, 0}}, // ( 56, 22) + { 0, { 0, 0, 0}}, // ( 57, 22) + { 0, { 0, 0, 0}}, // ( 58, 22) + { 0, { 0, 0, 0}}, // ( 59, 22) + { 0, { 0, 0, 0}}, // ( 60, 22) + { 0, { 0, 0, 0}}, // ( 61, 22) + { 0, { 0, 0, 0}}, // ( 62, 22) + { 0, { 0, 0, 0}}, // ( 63, 22) + { 0, { 0, 0, 0}}, // ( 64, 22) + { 0, { 0, 0, 0}}, // ( 65, 22) + { 0, { 0, 0, 0}}, // ( 66, 22) + { 0, { 0, 0, 0}}, // ( 67, 22) + { 0, { 0, 0, 0}}, // ( 68, 22) + { 0, { 0, 0, 0}}, // ( 69, 22) + { 0, { 0, 0, 0}}, // ( 70, 22) + { 0, { 0, 0, 0}}, // ( 71, 22) + { 0, { 0, 0, 0}}, // ( 72, 22) + { 0, { 0, 0, 0}}, // ( 73, 22) + { 0, { 0, 0, 0}}, // ( 74, 22) + { 0, { 0, 0, 0}}, // ( 75, 22) + { 0, { 0, 0, 0}}, // ( 76, 22) + { 0, { 0, 0, 0}}, // ( 77, 22) + { 0, { 0, 0, 0}}, // ( 78, 22) + { 0, { 0, 0, 0}}, // ( 79, 22) + { 0, { 0, 0, 0}}, // ( 80, 22) + { 0, { 0, 0, 0}}, // ( 81, 22) + { 0, { 0, 0, 0}}, // ( 82, 22) + { 0, { 0, 0, 0}}, // ( 83, 22) + { 0, { 0, 0, 0}}, // ( 84, 22) + { 0, { 0, 0, 0}}, // ( 85, 22) + { 0, { 0, 0, 0}}, // ( 86, 22) + { 0, { 0, 0, 0}}, // ( 87, 22) + { 0, { 0, 0, 0}}, // ( 88, 22) + { 0, { 0, 0, 0}}, // ( 89, 22) + { 0, { 0, 0, 0}}, // ( 90, 22) + { 0, { 0, 0, 0}}, // ( 91, 22) + { 0, { 0, 0, 0}}, // ( 92, 22) + { 0, { 0, 0, 0}}, // ( 93, 22) + { 0, { 0, 0, 0}}, // ( 94, 22) + { 0, { 0, 0, 0}}, // ( 95, 22) + { 0, { 0, 0, 0}}, // ( 96, 22) + { 0, { 0, 0, 0}}, // ( 97, 22) + { 0, { 0, 0, 0}}, // ( 98, 22) + { 0, { 0, 0, 0}}, // ( 99, 22) + { 0, { 0, 0, 0}}, // (100, 22) + { 0, { 0, 0, 0}}, // (101, 22) + { 0, { 0, 0, 0}}, // (102, 22) + { 0, { 0, 0, 0}}, // (103, 22) + { 0, { 0, 0, 0}}, // (104, 22) + { 0, { 0, 0, 0}}, // (105, 22) + { 0, { 0, 0, 0}}, // (106, 22) + { 0, { 0, 0, 0}}, // (107, 22) + { 0, { 0, 0, 0}}, // (108, 22) + { 0, { 0, 0, 0}}, // (109, 22) + { 0, { 0, 0, 0}}, // (110, 22) + { 0, { 0, 0, 0}}, // (111, 22) + { 0, { 0, 0, 0}}, // (112, 22) + { 0, { 0, 0, 0}}, // (113, 22) + { 0, { 0, 0, 0}}, // (114, 22) + { 0, { 0, 0, 0}}, // (115, 22) + { 0, { 0, 0, 0}}, // (116, 22) + { 0, { 0, 0, 0}}, // (117, 22) + { 0, { 0, 0, 0}}, // (118, 22) + { 0, { 0, 0, 0}}, // (119, 22) + { 0, { 0, 0, 0}}, // (120, 22) + { 0, { 0, 0, 0}}, // (121, 22) + { 0, { 0, 0, 0}}, // (122, 22) + { 0, { 0, 0, 0}}, // (123, 22) + { 0, { 0, 0, 0}}, // (124, 22) + { 0, { 0, 0, 0}}, // (125, 22) + { 0, { 0, 0, 0}}, // (126, 22) + { 0, { 0, 0, 0}}, // (127, 22) + { 0, { 0, 0, 0}}, // (128, 22) + { 0, { 0, 0, 0}}, // (129, 22) + { 0, { 0, 0, 0}}, // (130, 22) + { 0, { 0, 0, 0}}, // (131, 22) + { 0, { 0, 0, 0}}, // (132, 22) + { 0, { 0, 0, 0}}, // (133, 22) + { 0, { 0, 0, 0}}, // (134, 22) + { 0, { 0, 0, 0}}, // (135, 22) + { 0, { 0, 0, 0}}, // (136, 22) + { 0, { 0, 0, 0}}, // (137, 22) + { 0, { 0, 0, 0}}, // (138, 22) + { 0, { 0, 0, 0}}, // (139, 22) + { 0, { 0, 0, 0}}, // (140, 22) + { 0, { 0, 0, 0}}, // (141, 22) + { 0, { 0, 0, 0}}, // (142, 22) + { 0, { 0, 0, 0}}, // (143, 22) + { 0, { 0, 0, 0}}, // (144, 22) + { 1, { 0, 0, 0}}, // (145, 22) + { 69, { 0, 0, 0}}, // (146, 22) + {128, { 0, 0, 0}}, // (147, 22) + {128, { 0, 0, 0}}, // (148, 22) + {128, { 0, 0, 0}}, // (149, 22) + {128, { 0, 0, 0}}, // (150, 22) + {128, { 0, 0, 0}}, // (151, 22) + {128, { 0, 0, 0}}, // (152, 22) + {128, { 0, 0, 0}}, // (153, 22) + {128, { 0, 0, 0}}, // (154, 22) + {128, { 0, 0, 0}}, // (155, 22) + {128, { 0, 0, 0}}, // (156, 22) + {128, { 0, 0, 0}}, // (157, 22) + {128, { 0, 0, 0}}, // (158, 22) + {128, { 0, 0, 0}}, // (159, 22) + {128, { 0, 0, 0}}, // (160, 22) + {128, { 0, 0, 0}}, // (161, 22) + {128, { 0, 0, 0}}, // (162, 22) + {128, { 0, 0, 0}}, // (163, 22) + {128, { 0, 0, 0}}, // (164, 22) + {128, { 0, 0, 0}}, // (165, 22) + {128, { 0, 0, 0}}, // (166, 22) + {128, { 0, 0, 0}}, // (167, 22) + {128, { 0, 0, 0}}, // (168, 22) + {128, { 0, 0, 0}}, // (169, 22) + {128, { 0, 0, 0}}, // (170, 22) + {128, { 0, 0, 0}}, // (171, 22) + {128, { 0, 0, 0}}, // (172, 22) + {128, { 0, 0, 0}}, // (173, 22) + {128, { 0, 0, 0}}, // (174, 22) + {128, { 0, 0, 0}}, // (175, 22) + {128, { 0, 0, 0}}, // (176, 22) + {128, { 0, 0, 0}}, // (177, 22) + {128, { 0, 0, 0}}, // (178, 22) + {128, { 0, 0, 0}}, // (179, 22) + {128, { 0, 0, 0}}, // ( 0, 23) + {128, { 0, 0, 0}}, // ( 1, 23) + {128, { 0, 0, 0}}, // ( 2, 23) + {128, { 0, 0, 0}}, // ( 3, 23) + {128, { 0, 0, 0}}, // ( 4, 23) + {128, { 0, 0, 0}}, // ( 5, 23) + {128, { 0, 0, 0}}, // ( 6, 23) + {128, { 0, 0, 0}}, // ( 7, 23) + {128, { 0, 0, 0}}, // ( 8, 23) + {128, { 0, 0, 0}}, // ( 9, 23) + {128, { 0, 0, 0}}, // ( 10, 23) + {128, { 0, 0, 0}}, // ( 11, 23) + {128, { 0, 0, 0}}, // ( 12, 23) + {128, { 0, 0, 0}}, // ( 13, 23) + {128, { 0, 0, 0}}, // ( 14, 23) + {128, { 0, 0, 0}}, // ( 15, 23) + {128, { 0, 0, 0}}, // ( 16, 23) + {128, { 0, 0, 0}}, // ( 17, 23) + {128, { 0, 0, 0}}, // ( 18, 23) + {128, { 0, 0, 0}}, // ( 19, 23) + {128, { 0, 0, 0}}, // ( 20, 23) + {128, { 0, 0, 0}}, // ( 21, 23) + {128, { 0, 0, 0}}, // ( 22, 23) + {128, { 0, 0, 0}}, // ( 23, 23) + {128, { 0, 0, 0}}, // ( 24, 23) + {128, { 0, 0, 0}}, // ( 25, 23) + {128, { 0, 0, 0}}, // ( 26, 23) + {128, { 0, 0, 0}}, // ( 27, 23) + {128, { 0, 0, 0}}, // ( 28, 23) + {128, { 0, 0, 0}}, // ( 29, 23) + {128, { 0, 0, 0}}, // ( 30, 23) + {126, { 0, 0, 0}}, // ( 31, 23) + { 50, { 0, 0, 0}}, // ( 32, 23) + { 0, { 0, 0, 0}}, // ( 33, 23) + { 0, { 0, 0, 0}}, // ( 34, 23) + { 0, { 0, 0, 0}}, // ( 35, 23) + { 0, { 0, 0, 0}}, // ( 36, 23) + { 0, { 0, 0, 0}}, // ( 37, 23) + { 0, { 0, 0, 0}}, // ( 38, 23) + { 0, { 0, 0, 0}}, // ( 39, 23) + { 0, { 0, 0, 0}}, // ( 40, 23) + { 0, { 0, 0, 0}}, // ( 41, 23) + { 0, { 0, 0, 0}}, // ( 42, 23) + { 0, { 0, 0, 0}}, // ( 43, 23) + { 0, { 0, 0, 0}}, // ( 44, 23) + { 0, { 0, 0, 0}}, // ( 45, 23) + { 0, { 0, 0, 0}}, // ( 46, 23) + { 0, { 0, 0, 0}}, // ( 47, 23) + { 0, { 0, 0, 0}}, // ( 48, 23) + { 0, { 0, 0, 0}}, // ( 49, 23) + { 0, { 0, 0, 0}}, // ( 50, 23) + { 0, { 0, 0, 0}}, // ( 51, 23) + { 0, { 0, 0, 0}}, // ( 52, 23) + { 0, { 0, 0, 0}}, // ( 53, 23) + { 0, { 0, 0, 0}}, // ( 54, 23) + { 0, { 0, 0, 0}}, // ( 55, 23) + { 0, { 0, 0, 0}}, // ( 56, 23) + { 0, { 0, 0, 0}}, // ( 57, 23) + { 0, { 0, 0, 0}}, // ( 58, 23) + { 0, { 0, 0, 0}}, // ( 59, 23) + { 0, { 0, 0, 0}}, // ( 60, 23) + { 0, { 0, 0, 0}}, // ( 61, 23) + { 0, { 0, 0, 0}}, // ( 62, 23) + { 0, { 0, 0, 0}}, // ( 63, 23) + { 0, { 0, 0, 0}}, // ( 64, 23) + { 0, { 0, 0, 0}}, // ( 65, 23) + { 0, { 0, 0, 0}}, // ( 66, 23) + { 0, { 0, 0, 0}}, // ( 67, 23) + { 0, { 0, 0, 0}}, // ( 68, 23) + { 0, { 0, 0, 0}}, // ( 69, 23) + { 0, { 0, 0, 0}}, // ( 70, 23) + { 0, { 0, 0, 0}}, // ( 71, 23) + { 0, { 0, 0, 0}}, // ( 72, 23) + { 0, { 0, 0, 0}}, // ( 73, 23) + { 0, { 0, 0, 0}}, // ( 74, 23) + { 0, { 0, 0, 0}}, // ( 75, 23) + { 0, { 0, 0, 0}}, // ( 76, 23) + { 0, { 0, 0, 0}}, // ( 77, 23) + { 0, { 0, 0, 0}}, // ( 78, 23) + { 0, { 0, 0, 0}}, // ( 79, 23) + { 0, { 0, 0, 0}}, // ( 80, 23) + { 0, { 0, 0, 0}}, // ( 81, 23) + { 0, { 0, 0, 0}}, // ( 82, 23) + { 0, { 0, 0, 0}}, // ( 83, 23) + { 0, { 0, 0, 0}}, // ( 84, 23) + { 0, { 0, 0, 0}}, // ( 85, 23) + { 0, { 0, 0, 0}}, // ( 86, 23) + { 0, { 0, 0, 0}}, // ( 87, 23) + { 0, { 0, 0, 0}}, // ( 88, 23) + { 0, { 0, 0, 0}}, // ( 89, 23) + { 0, { 0, 0, 0}}, // ( 90, 23) + { 0, { 0, 0, 0}}, // ( 91, 23) + { 0, { 0, 0, 0}}, // ( 92, 23) + { 0, { 0, 0, 0}}, // ( 93, 23) + { 0, { 0, 0, 0}}, // ( 94, 23) + { 0, { 0, 0, 0}}, // ( 95, 23) + { 0, { 0, 0, 0}}, // ( 96, 23) + { 0, { 0, 0, 0}}, // ( 97, 23) + { 0, { 0, 0, 0}}, // ( 98, 23) + { 0, { 0, 0, 0}}, // ( 99, 23) + { 0, { 0, 0, 0}}, // (100, 23) + { 0, { 0, 0, 0}}, // (101, 23) + { 0, { 0, 0, 0}}, // (102, 23) + { 0, { 0, 0, 0}}, // (103, 23) + { 0, { 0, 0, 0}}, // (104, 23) + { 0, { 0, 0, 0}}, // (105, 23) + { 0, { 0, 0, 0}}, // (106, 23) + { 0, { 0, 0, 0}}, // (107, 23) + { 0, { 0, 0, 0}}, // (108, 23) + { 0, { 0, 0, 0}}, // (109, 23) + { 0, { 0, 0, 0}}, // (110, 23) + { 0, { 0, 0, 0}}, // (111, 23) + { 0, { 0, 0, 0}}, // (112, 23) + { 0, { 0, 0, 0}}, // (113, 23) + { 0, { 0, 0, 0}}, // (114, 23) + { 0, { 0, 0, 0}}, // (115, 23) + { 0, { 0, 0, 0}}, // (116, 23) + { 0, { 0, 0, 0}}, // (117, 23) + { 0, { 0, 0, 0}}, // (118, 23) + { 0, { 0, 0, 0}}, // (119, 23) + { 0, { 0, 0, 0}}, // (120, 23) + { 0, { 0, 0, 0}}, // (121, 23) + { 0, { 0, 0, 0}}, // (122, 23) + { 0, { 0, 0, 0}}, // (123, 23) + { 0, { 0, 0, 0}}, // (124, 23) + { 0, { 0, 0, 0}}, // (125, 23) + { 0, { 0, 0, 0}}, // (126, 23) + { 0, { 0, 0, 0}}, // (127, 23) + { 0, { 0, 0, 0}}, // (128, 23) + { 0, { 0, 0, 0}}, // (129, 23) + { 0, { 0, 0, 0}}, // (130, 23) + { 0, { 0, 0, 0}}, // (131, 23) + { 0, { 0, 0, 0}}, // (132, 23) + { 0, { 0, 0, 0}}, // (133, 23) + { 0, { 0, 0, 0}}, // (134, 23) + { 0, { 0, 0, 0}}, // (135, 23) + { 0, { 0, 0, 0}}, // (136, 23) + { 0, { 0, 0, 0}}, // (137, 23) + { 0, { 0, 0, 0}}, // (138, 23) + { 0, { 0, 0, 0}}, // (139, 23) + { 0, { 0, 0, 0}}, // (140, 23) + { 0, { 0, 0, 0}}, // (141, 23) + { 0, { 0, 0, 0}}, // (142, 23) + { 0, { 0, 0, 0}}, // (143, 23) + { 0, { 0, 0, 0}}, // (144, 23) + { 0, { 0, 0, 0}}, // (145, 23) + { 0, { 0, 0, 0}}, // (146, 23) + { 49, { 0, 0, 0}}, // (147, 23) + {126, { 0, 0, 0}}, // (148, 23) + {128, { 0, 0, 0}}, // (149, 23) + {128, { 0, 0, 0}}, // (150, 23) + {128, { 0, 0, 0}}, // (151, 23) + {128, { 0, 0, 0}}, // (152, 23) + {128, { 0, 0, 0}}, // (153, 23) + {128, { 0, 0, 0}}, // (154, 23) + {128, { 0, 0, 0}}, // (155, 23) + {128, { 0, 0, 0}}, // (156, 23) + {128, { 0, 0, 0}}, // (157, 23) + {128, { 0, 0, 0}}, // (158, 23) + {128, { 0, 0, 0}}, // (159, 23) + {128, { 0, 0, 0}}, // (160, 23) + {128, { 0, 0, 0}}, // (161, 23) + {128, { 0, 0, 0}}, // (162, 23) + {128, { 0, 0, 0}}, // (163, 23) + {128, { 0, 0, 0}}, // (164, 23) + {128, { 0, 0, 0}}, // (165, 23) + {128, { 0, 0, 0}}, // (166, 23) + {128, { 0, 0, 0}}, // (167, 23) + {128, { 0, 0, 0}}, // (168, 23) + {128, { 0, 0, 0}}, // (169, 23) + {128, { 0, 0, 0}}, // (170, 23) + {128, { 0, 0, 0}}, // (171, 23) + {128, { 0, 0, 0}}, // (172, 23) + {128, { 0, 0, 0}}, // (173, 23) + {128, { 0, 0, 0}}, // (174, 23) + {128, { 0, 0, 0}}, // (175, 23) + {128, { 0, 0, 0}}, // (176, 23) + {128, { 0, 0, 0}}, // (177, 23) + {128, { 0, 0, 0}}, // (178, 23) + {128, { 0, 0, 0}}, // (179, 23) + {128, { 0, 0, 0}}, // ( 0, 24) + {128, { 0, 0, 0}}, // ( 1, 24) + {128, { 0, 0, 0}}, // ( 2, 24) + {128, { 0, 0, 0}}, // ( 3, 24) + {128, { 0, 0, 0}}, // ( 4, 24) + {128, { 0, 0, 0}}, // ( 5, 24) + {128, { 0, 0, 0}}, // ( 6, 24) + {128, { 0, 0, 0}}, // ( 7, 24) + {128, { 0, 0, 0}}, // ( 8, 24) + {128, { 0, 0, 0}}, // ( 9, 24) + {128, { 0, 0, 0}}, // ( 10, 24) + {128, { 0, 0, 0}}, // ( 11, 24) + {128, { 0, 0, 0}}, // ( 12, 24) + {128, { 0, 0, 0}}, // ( 13, 24) + {128, { 0, 0, 0}}, // ( 14, 24) + {128, { 0, 0, 0}}, // ( 15, 24) + {128, { 0, 0, 0}}, // ( 16, 24) + {128, { 0, 0, 0}}, // ( 17, 24) + {128, { 0, 0, 0}}, // ( 18, 24) + {128, { 0, 0, 0}}, // ( 19, 24) + {128, { 0, 0, 0}}, // ( 20, 24) + {128, { 0, 0, 0}}, // ( 21, 24) + {128, { 0, 0, 0}}, // ( 22, 24) + {128, { 0, 0, 0}}, // ( 23, 24) + {128, { 0, 0, 0}}, // ( 24, 24) + {128, { 0, 0, 0}}, // ( 25, 24) + {128, { 0, 0, 0}}, // ( 26, 24) + {128, { 0, 0, 0}}, // ( 27, 24) + {128, { 0, 0, 0}}, // ( 28, 24) + {128, { 0, 0, 0}}, // ( 29, 24) + {122, { 0, 0, 0}}, // ( 30, 24) + { 37, { 0, 0, 0}}, // ( 31, 24) + { 0, { 0, 0, 0}}, // ( 32, 24) + { 0, { 0, 0, 0}}, // ( 33, 24) + { 0, { 0, 0, 0}}, // ( 34, 24) + { 0, { 0, 0, 0}}, // ( 35, 24) + { 0, { 0, 0, 0}}, // ( 36, 24) + { 0, { 0, 0, 0}}, // ( 37, 24) + { 0, { 0, 0, 0}}, // ( 38, 24) + { 0, { 0, 0, 0}}, // ( 39, 24) + { 0, { 0, 0, 0}}, // ( 40, 24) + { 0, { 0, 0, 0}}, // ( 41, 24) + { 0, { 0, 0, 0}}, // ( 42, 24) + { 0, { 0, 0, 0}}, // ( 43, 24) + { 0, { 0, 0, 0}}, // ( 44, 24) + { 0, { 0, 0, 0}}, // ( 45, 24) + { 0, { 0, 0, 0}}, // ( 46, 24) + { 0, { 0, 0, 0}}, // ( 47, 24) + { 0, { 0, 0, 0}}, // ( 48, 24) + { 0, { 0, 0, 0}}, // ( 49, 24) + { 0, { 0, 0, 0}}, // ( 50, 24) + { 0, { 0, 0, 0}}, // ( 51, 24) + { 0, { 0, 0, 0}}, // ( 52, 24) + { 0, { 0, 0, 0}}, // ( 53, 24) + { 0, { 0, 0, 0}}, // ( 54, 24) + { 0, { 0, 0, 0}}, // ( 55, 24) + { 0, { 0, 0, 0}}, // ( 56, 24) + { 0, { 0, 0, 0}}, // ( 57, 24) + { 0, { 0, 0, 0}}, // ( 58, 24) + { 0, { 0, 0, 0}}, // ( 59, 24) + { 0, { 0, 0, 0}}, // ( 60, 24) + { 0, { 0, 0, 0}}, // ( 61, 24) + { 0, { 0, 0, 0}}, // ( 62, 24) + { 0, { 0, 0, 0}}, // ( 63, 24) + { 0, { 0, 0, 0}}, // ( 64, 24) + { 0, { 0, 0, 0}}, // ( 65, 24) + { 0, { 0, 0, 0}}, // ( 66, 24) + { 0, { 0, 0, 0}}, // ( 67, 24) + { 0, { 0, 0, 0}}, // ( 68, 24) + { 0, { 0, 0, 0}}, // ( 69, 24) + { 0, { 0, 0, 0}}, // ( 70, 24) + { 0, { 0, 0, 0}}, // ( 71, 24) + { 0, { 0, 0, 0}}, // ( 72, 24) + { 0, { 0, 0, 0}}, // ( 73, 24) + { 0, { 0, 0, 0}}, // ( 74, 24) + { 0, { 0, 0, 0}}, // ( 75, 24) + { 0, { 0, 0, 0}}, // ( 76, 24) + { 0, { 0, 0, 0}}, // ( 77, 24) + { 0, { 0, 0, 0}}, // ( 78, 24) + { 0, { 0, 0, 0}}, // ( 79, 24) + { 0, { 0, 0, 0}}, // ( 80, 24) + { 0, { 0, 0, 0}}, // ( 81, 24) + { 0, { 0, 0, 0}}, // ( 82, 24) + { 0, { 0, 0, 0}}, // ( 83, 24) + { 0, { 0, 0, 0}}, // ( 84, 24) + { 0, { 0, 0, 0}}, // ( 85, 24) + { 0, { 0, 0, 0}}, // ( 86, 24) + { 0, { 0, 0, 0}}, // ( 87, 24) + { 0, { 0, 0, 0}}, // ( 88, 24) + { 0, { 0, 0, 0}}, // ( 89, 24) + { 0, { 0, 0, 0}}, // ( 90, 24) + { 0, { 0, 0, 0}}, // ( 91, 24) + { 0, { 0, 0, 0}}, // ( 92, 24) + { 0, { 0, 0, 0}}, // ( 93, 24) + { 0, { 0, 0, 0}}, // ( 94, 24) + { 0, { 0, 0, 0}}, // ( 95, 24) + { 0, { 0, 0, 0}}, // ( 96, 24) + { 0, { 0, 0, 0}}, // ( 97, 24) + { 0, { 0, 0, 0}}, // ( 98, 24) + { 0, { 0, 0, 0}}, // ( 99, 24) + { 0, { 0, 0, 0}}, // (100, 24) + { 0, { 0, 0, 0}}, // (101, 24) + { 0, { 0, 0, 0}}, // (102, 24) + { 0, { 0, 0, 0}}, // (103, 24) + { 0, { 0, 0, 0}}, // (104, 24) + { 0, { 0, 0, 0}}, // (105, 24) + { 0, { 0, 0, 0}}, // (106, 24) + { 0, { 0, 0, 0}}, // (107, 24) + { 0, { 0, 0, 0}}, // (108, 24) + { 0, { 0, 0, 0}}, // (109, 24) + { 0, { 0, 0, 0}}, // (110, 24) + { 0, { 0, 0, 0}}, // (111, 24) + { 0, { 0, 0, 0}}, // (112, 24) + { 0, { 0, 0, 0}}, // (113, 24) + { 0, { 0, 0, 0}}, // (114, 24) + { 0, { 0, 0, 0}}, // (115, 24) + { 0, { 0, 0, 0}}, // (116, 24) + { 0, { 0, 0, 0}}, // (117, 24) + { 0, { 0, 0, 0}}, // (118, 24) + { 0, { 0, 0, 0}}, // (119, 24) + { 0, { 0, 0, 0}}, // (120, 24) + { 0, { 0, 0, 0}}, // (121, 24) + { 0, { 0, 0, 0}}, // (122, 24) + { 0, { 0, 0, 0}}, // (123, 24) + { 0, { 0, 0, 0}}, // (124, 24) + { 0, { 0, 0, 0}}, // (125, 24) + { 0, { 0, 0, 0}}, // (126, 24) + { 0, { 0, 0, 0}}, // (127, 24) + { 0, { 0, 0, 0}}, // (128, 24) + { 0, { 0, 0, 0}}, // (129, 24) + { 0, { 0, 0, 0}}, // (130, 24) + { 0, { 0, 0, 0}}, // (131, 24) + { 0, { 0, 0, 0}}, // (132, 24) + { 0, { 0, 0, 0}}, // (133, 24) + { 0, { 0, 0, 0}}, // (134, 24) + { 0, { 0, 0, 0}}, // (135, 24) + { 0, { 0, 0, 0}}, // (136, 24) + { 0, { 0, 0, 0}}, // (137, 24) + { 0, { 0, 0, 0}}, // (138, 24) + { 0, { 0, 0, 0}}, // (139, 24) + { 0, { 0, 0, 0}}, // (140, 24) + { 0, { 0, 0, 0}}, // (141, 24) + { 0, { 0, 0, 0}}, // (142, 24) + { 0, { 0, 0, 0}}, // (143, 24) + { 0, { 0, 0, 0}}, // (144, 24) + { 0, { 0, 0, 0}}, // (145, 24) + { 0, { 0, 0, 0}}, // (146, 24) + { 0, { 0, 0, 0}}, // (147, 24) + { 37, { 0, 0, 0}}, // (148, 24) + {122, { 0, 0, 0}}, // (149, 24) + {128, { 0, 0, 0}}, // (150, 24) + {128, { 0, 0, 0}}, // (151, 24) + {128, { 0, 0, 0}}, // (152, 24) + {128, { 0, 0, 0}}, // (153, 24) + {128, { 0, 0, 0}}, // (154, 24) + {128, { 0, 0, 0}}, // (155, 24) + {128, { 0, 0, 0}}, // (156, 24) + {128, { 0, 0, 0}}, // (157, 24) + {128, { 0, 0, 0}}, // (158, 24) + {128, { 0, 0, 0}}, // (159, 24) + {128, { 0, 0, 0}}, // (160, 24) + {128, { 0, 0, 0}}, // (161, 24) + {128, { 0, 0, 0}}, // (162, 24) + {128, { 0, 0, 0}}, // (163, 24) + {128, { 0, 0, 0}}, // (164, 24) + {128, { 0, 0, 0}}, // (165, 24) + {128, { 0, 0, 0}}, // (166, 24) + {128, { 0, 0, 0}}, // (167, 24) + {128, { 0, 0, 0}}, // (168, 24) + {128, { 0, 0, 0}}, // (169, 24) + {128, { 0, 0, 0}}, // (170, 24) + {128, { 0, 0, 0}}, // (171, 24) + {128, { 0, 0, 0}}, // (172, 24) + {128, { 0, 0, 0}}, // (173, 24) + {128, { 0, 0, 0}}, // (174, 24) + {128, { 0, 0, 0}}, // (175, 24) + {128, { 0, 0, 0}}, // (176, 24) + {128, { 0, 0, 0}}, // (177, 24) + {128, { 0, 0, 0}}, // (178, 24) + {128, { 0, 0, 0}}, // (179, 24) + {128, { 0, 0, 0}}, // ( 0, 25) + {128, { 0, 0, 0}}, // ( 1, 25) + {128, { 0, 0, 0}}, // ( 2, 25) + {128, { 0, 0, 0}}, // ( 3, 25) + {128, { 0, 0, 0}}, // ( 4, 25) + {128, { 0, 0, 0}}, // ( 5, 25) + {128, { 0, 0, 0}}, // ( 6, 25) + {128, { 0, 0, 0}}, // ( 7, 25) + {128, { 0, 0, 0}}, // ( 8, 25) + {128, { 0, 0, 0}}, // ( 9, 25) + {128, { 0, 0, 0}}, // ( 10, 25) + {128, { 0, 0, 0}}, // ( 11, 25) + {128, { 0, 0, 0}}, // ( 12, 25) + {128, { 0, 0, 0}}, // ( 13, 25) + {128, { 0, 0, 0}}, // ( 14, 25) + {128, { 0, 0, 0}}, // ( 15, 25) + {128, { 0, 0, 0}}, // ( 16, 25) + {128, { 0, 0, 0}}, // ( 17, 25) + {128, { 0, 0, 0}}, // ( 18, 25) + {128, { 0, 0, 0}}, // ( 19, 25) + {128, { 0, 0, 0}}, // ( 20, 25) + {128, { 0, 0, 0}}, // ( 21, 25) + {128, { 0, 0, 0}}, // ( 22, 25) + {128, { 0, 0, 0}}, // ( 23, 25) + {128, { 0, 0, 0}}, // ( 24, 25) + {128, { 0, 0, 0}}, // ( 25, 25) + {128, { 0, 0, 0}}, // ( 26, 25) + {128, { 0, 0, 0}}, // ( 27, 25) + {128, { 0, 0, 0}}, // ( 28, 25) + {120, { 0, 0, 0}}, // ( 29, 25) + { 29, { 0, 0, 0}}, // ( 30, 25) + { 0, { 0, 0, 0}}, // ( 31, 25) + { 0, { 0, 0, 0}}, // ( 32, 25) + { 0, { 0, 0, 0}}, // ( 33, 25) + { 0, { 0, 0, 0}}, // ( 34, 25) + { 0, { 0, 0, 0}}, // ( 35, 25) + { 0, { 0, 0, 0}}, // ( 36, 25) + { 0, { 0, 0, 0}}, // ( 37, 25) + { 0, { 0, 0, 0}}, // ( 38, 25) + { 0, { 0, 0, 0}}, // ( 39, 25) + { 0, { 0, 0, 0}}, // ( 40, 25) + { 0, { 0, 0, 0}}, // ( 41, 25) + { 0, { 0, 0, 0}}, // ( 42, 25) + { 0, { 0, 0, 0}}, // ( 43, 25) + { 0, { 0, 0, 0}}, // ( 44, 25) + { 0, { 0, 0, 0}}, // ( 45, 25) + { 0, { 0, 0, 0}}, // ( 46, 25) + { 0, { 0, 0, 0}}, // ( 47, 25) + { 0, { 0, 0, 0}}, // ( 48, 25) + { 0, { 0, 0, 0}}, // ( 49, 25) + { 0, { 0, 0, 0}}, // ( 50, 25) + { 0, { 0, 0, 0}}, // ( 51, 25) + { 0, { 0, 0, 0}}, // ( 52, 25) + { 0, { 0, 0, 0}}, // ( 53, 25) + { 0, { 0, 0, 0}}, // ( 54, 25) + { 0, { 0, 0, 0}}, // ( 55, 25) + { 0, { 0, 0, 0}}, // ( 56, 25) + { 0, { 0, 0, 0}}, // ( 57, 25) + { 0, { 0, 0, 0}}, // ( 58, 25) + { 0, { 0, 0, 0}}, // ( 59, 25) + { 0, { 0, 0, 0}}, // ( 60, 25) + { 0, { 0, 0, 0}}, // ( 61, 25) + { 0, { 0, 0, 0}}, // ( 62, 25) + { 0, { 0, 0, 0}}, // ( 63, 25) + { 0, { 0, 0, 0}}, // ( 64, 25) + { 0, { 0, 0, 0}}, // ( 65, 25) + { 0, { 0, 0, 0}}, // ( 66, 25) + { 0, { 0, 0, 0}}, // ( 67, 25) + { 0, { 0, 0, 0}}, // ( 68, 25) + { 0, { 0, 0, 0}}, // ( 69, 25) + { 0, { 0, 0, 0}}, // ( 70, 25) + { 0, { 0, 0, 0}}, // ( 71, 25) + { 0, { 0, 0, 0}}, // ( 72, 25) + { 0, { 0, 0, 0}}, // ( 73, 25) + { 0, { 0, 0, 0}}, // ( 74, 25) + { 0, { 0, 0, 0}}, // ( 75, 25) + { 0, { 0, 0, 0}}, // ( 76, 25) + { 0, { 0, 0, 0}}, // ( 77, 25) + { 0, { 0, 0, 0}}, // ( 78, 25) + { 0, { 0, 0, 0}}, // ( 79, 25) + { 0, { 0, 0, 0}}, // ( 80, 25) + { 0, { 0, 0, 0}}, // ( 81, 25) + { 0, { 0, 0, 0}}, // ( 82, 25) + { 0, { 0, 0, 0}}, // ( 83, 25) + { 0, { 0, 0, 0}}, // ( 84, 25) + { 0, { 0, 0, 0}}, // ( 85, 25) + { 0, { 0, 0, 0}}, // ( 86, 25) + { 0, { 0, 0, 0}}, // ( 87, 25) + { 0, { 0, 0, 0}}, // ( 88, 25) + { 0, { 0, 0, 0}}, // ( 89, 25) + { 0, { 0, 0, 0}}, // ( 90, 25) + { 0, { 0, 0, 0}}, // ( 91, 25) + { 0, { 0, 0, 0}}, // ( 92, 25) + { 0, { 0, 0, 0}}, // ( 93, 25) + { 0, { 0, 0, 0}}, // ( 94, 25) + { 0, { 0, 0, 0}}, // ( 95, 25) + { 0, { 0, 0, 0}}, // ( 96, 25) + { 0, { 0, 0, 0}}, // ( 97, 25) + { 0, { 0, 0, 0}}, // ( 98, 25) + { 0, { 0, 0, 0}}, // ( 99, 25) + { 0, { 0, 0, 0}}, // (100, 25) + { 0, { 0, 0, 0}}, // (101, 25) + { 0, { 0, 0, 0}}, // (102, 25) + { 0, { 0, 0, 0}}, // (103, 25) + { 0, { 0, 0, 0}}, // (104, 25) + { 0, { 0, 0, 0}}, // (105, 25) + { 0, { 0, 0, 0}}, // (106, 25) + { 0, { 0, 0, 0}}, // (107, 25) + { 0, { 0, 0, 0}}, // (108, 25) + { 0, { 0, 0, 0}}, // (109, 25) + { 0, { 0, 0, 0}}, // (110, 25) + { 0, { 0, 0, 0}}, // (111, 25) + { 0, { 0, 0, 0}}, // (112, 25) + { 0, { 0, 0, 0}}, // (113, 25) + { 0, { 0, 0, 0}}, // (114, 25) + { 0, { 0, 0, 0}}, // (115, 25) + { 0, { 0, 0, 0}}, // (116, 25) + { 0, { 0, 0, 0}}, // (117, 25) + { 0, { 0, 0, 0}}, // (118, 25) + { 0, { 0, 0, 0}}, // (119, 25) + { 0, { 0, 0, 0}}, // (120, 25) + { 0, { 0, 0, 0}}, // (121, 25) + { 0, { 0, 0, 0}}, // (122, 25) + { 0, { 0, 0, 0}}, // (123, 25) + { 0, { 0, 0, 0}}, // (124, 25) + { 0, { 0, 0, 0}}, // (125, 25) + { 0, { 0, 0, 0}}, // (126, 25) + { 0, { 0, 0, 0}}, // (127, 25) + { 0, { 0, 0, 0}}, // (128, 25) + { 0, { 0, 0, 0}}, // (129, 25) + { 0, { 0, 0, 0}}, // (130, 25) + { 0, { 0, 0, 0}}, // (131, 25) + { 0, { 0, 0, 0}}, // (132, 25) + { 0, { 0, 0, 0}}, // (133, 25) + { 0, { 0, 0, 0}}, // (134, 25) + { 0, { 0, 0, 0}}, // (135, 25) + { 0, { 0, 0, 0}}, // (136, 25) + { 0, { 0, 0, 0}}, // (137, 25) + { 0, { 0, 0, 0}}, // (138, 25) + { 0, { 0, 0, 0}}, // (139, 25) + { 0, { 0, 0, 0}}, // (140, 25) + { 0, { 0, 0, 0}}, // (141, 25) + { 0, { 0, 0, 0}}, // (142, 25) + { 0, { 0, 0, 0}}, // (143, 25) + { 0, { 0, 0, 0}}, // (144, 25) + { 0, { 0, 0, 0}}, // (145, 25) + { 0, { 0, 0, 0}}, // (146, 25) + { 0, { 0, 0, 0}}, // (147, 25) + { 0, { 0, 0, 0}}, // (148, 25) + { 29, { 0, 0, 0}}, // (149, 25) + {120, { 0, 0, 0}}, // (150, 25) + {128, { 0, 0, 0}}, // (151, 25) + {128, { 0, 0, 0}}, // (152, 25) + {128, { 0, 0, 0}}, // (153, 25) + {128, { 0, 0, 0}}, // (154, 25) + {128, { 0, 0, 0}}, // (155, 25) + {128, { 0, 0, 0}}, // (156, 25) + {128, { 0, 0, 0}}, // (157, 25) + {128, { 0, 0, 0}}, // (158, 25) + {128, { 0, 0, 0}}, // (159, 25) + {128, { 0, 0, 0}}, // (160, 25) + {128, { 0, 0, 0}}, // (161, 25) + {128, { 0, 0, 0}}, // (162, 25) + {128, { 0, 0, 0}}, // (163, 25) + {128, { 0, 0, 0}}, // (164, 25) + {128, { 0, 0, 0}}, // (165, 25) + {128, { 0, 0, 0}}, // (166, 25) + {128, { 0, 0, 0}}, // (167, 25) + {128, { 0, 0, 0}}, // (168, 25) + {128, { 0, 0, 0}}, // (169, 25) + {128, { 0, 0, 0}}, // (170, 25) + {128, { 0, 0, 0}}, // (171, 25) + {128, { 0, 0, 0}}, // (172, 25) + {128, { 0, 0, 0}}, // (173, 25) + {128, { 0, 0, 0}}, // (174, 25) + {128, { 0, 0, 0}}, // (175, 25) + {128, { 0, 0, 0}}, // (176, 25) + {128, { 0, 0, 0}}, // (177, 25) + {128, { 0, 0, 0}}, // (178, 25) + {128, { 0, 0, 0}}, // (179, 25) + {128, { 0, 0, 0}}, // ( 0, 26) + {128, { 0, 0, 0}}, // ( 1, 26) + {128, { 0, 0, 0}}, // ( 2, 26) + {128, { 0, 0, 0}}, // ( 3, 26) + {128, { 0, 0, 0}}, // ( 4, 26) + {128, { 0, 0, 0}}, // ( 5, 26) + {128, { 0, 0, 0}}, // ( 6, 26) + {128, { 0, 0, 0}}, // ( 7, 26) + {128, { 0, 0, 0}}, // ( 8, 26) + {128, { 0, 0, 0}}, // ( 9, 26) + {128, { 0, 0, 0}}, // ( 10, 26) + {128, { 0, 0, 0}}, // ( 11, 26) + {128, { 0, 0, 0}}, // ( 12, 26) + {128, { 0, 0, 0}}, // ( 13, 26) + {128, { 0, 0, 0}}, // ( 14, 26) + {128, { 0, 0, 0}}, // ( 15, 26) + {128, { 0, 0, 0}}, // ( 16, 26) + {128, { 0, 0, 0}}, // ( 17, 26) + {128, { 0, 0, 0}}, // ( 18, 26) + {128, { 0, 0, 0}}, // ( 19, 26) + {128, { 0, 0, 0}}, // ( 20, 26) + {128, { 0, 0, 0}}, // ( 21, 26) + {128, { 0, 0, 0}}, // ( 22, 26) + {128, { 0, 0, 0}}, // ( 23, 26) + {128, { 0, 0, 0}}, // ( 24, 26) + {128, { 0, 0, 0}}, // ( 25, 26) + {128, { 0, 0, 0}}, // ( 26, 26) + {128, { 0, 0, 0}}, // ( 27, 26) + {118, { 0, 0, 0}}, // ( 28, 26) + { 25, { 0, 0, 0}}, // ( 29, 26) + { 0, { 0, 0, 0}}, // ( 30, 26) + { 0, { 0, 0, 0}}, // ( 31, 26) + { 0, { 0, 0, 0}}, // ( 32, 26) + { 0, { 0, 0, 0}}, // ( 33, 26) + { 0, { 0, 0, 0}}, // ( 34, 26) + { 0, { 0, 0, 0}}, // ( 35, 26) + { 0, { 0, 0, 0}}, // ( 36, 26) + { 0, { 0, 0, 0}}, // ( 37, 26) + { 0, { 0, 0, 0}}, // ( 38, 26) + { 0, { 0, 0, 0}}, // ( 39, 26) + { 0, { 0, 0, 0}}, // ( 40, 26) + { 0, { 0, 0, 0}}, // ( 41, 26) + { 0, { 0, 0, 0}}, // ( 42, 26) + { 0, { 0, 0, 0}}, // ( 43, 26) + { 0, { 0, 0, 0}}, // ( 44, 26) + { 0, { 0, 0, 0}}, // ( 45, 26) + { 0, { 0, 0, 0}}, // ( 46, 26) + { 0, { 0, 0, 0}}, // ( 47, 26) + { 0, { 0, 0, 0}}, // ( 48, 26) + { 0, { 0, 0, 0}}, // ( 49, 26) + { 0, { 0, 0, 0}}, // ( 50, 26) + { 0, { 0, 0, 0}}, // ( 51, 26) + { 0, { 0, 0, 0}}, // ( 52, 26) + { 0, { 0, 0, 0}}, // ( 53, 26) + { 0, { 0, 0, 0}}, // ( 54, 26) + { 0, { 0, 0, 0}}, // ( 55, 26) + { 0, { 0, 0, 0}}, // ( 56, 26) + { 0, { 0, 0, 0}}, // ( 57, 26) + { 0, { 0, 0, 0}}, // ( 58, 26) + { 0, { 0, 0, 0}}, // ( 59, 26) + { 0, { 0, 0, 0}}, // ( 60, 26) + { 0, { 0, 0, 0}}, // ( 61, 26) + { 0, { 0, 0, 0}}, // ( 62, 26) + { 0, { 0, 0, 0}}, // ( 63, 26) + { 0, { 0, 0, 0}}, // ( 64, 26) + { 0, { 0, 0, 0}}, // ( 65, 26) + { 0, { 0, 0, 0}}, // ( 66, 26) + { 0, { 0, 0, 0}}, // ( 67, 26) + { 0, { 0, 0, 0}}, // ( 68, 26) + { 0, { 0, 0, 0}}, // ( 69, 26) + { 0, { 0, 0, 0}}, // ( 70, 26) + { 0, { 0, 0, 0}}, // ( 71, 26) + { 0, { 0, 0, 0}}, // ( 72, 26) + { 0, { 0, 0, 0}}, // ( 73, 26) + { 0, { 0, 0, 0}}, // ( 74, 26) + { 0, { 0, 0, 0}}, // ( 75, 26) + { 0, { 0, 0, 0}}, // ( 76, 26) + { 0, { 0, 0, 0}}, // ( 77, 26) + { 0, { 0, 0, 0}}, // ( 78, 26) + { 0, { 0, 0, 0}}, // ( 79, 26) + { 0, { 0, 0, 0}}, // ( 80, 26) + { 0, { 0, 0, 0}}, // ( 81, 26) + { 0, { 0, 0, 0}}, // ( 82, 26) + { 0, { 0, 0, 0}}, // ( 83, 26) + { 0, { 0, 0, 0}}, // ( 84, 26) + { 0, { 0, 0, 0}}, // ( 85, 26) + { 0, { 0, 0, 0}}, // ( 86, 26) + { 0, { 0, 0, 0}}, // ( 87, 26) + { 0, { 0, 0, 0}}, // ( 88, 26) + { 0, { 0, 0, 0}}, // ( 89, 26) + { 0, { 0, 0, 0}}, // ( 90, 26) + { 0, { 0, 0, 0}}, // ( 91, 26) + { 0, { 0, 0, 0}}, // ( 92, 26) + { 0, { 0, 0, 0}}, // ( 93, 26) + { 0, { 0, 0, 0}}, // ( 94, 26) + { 0, { 0, 0, 0}}, // ( 95, 26) + { 0, { 0, 0, 0}}, // ( 96, 26) + { 0, { 0, 0, 0}}, // ( 97, 26) + { 0, { 0, 0, 0}}, // ( 98, 26) + { 0, { 0, 0, 0}}, // ( 99, 26) + { 0, { 0, 0, 0}}, // (100, 26) + { 0, { 0, 0, 0}}, // (101, 26) + { 0, { 0, 0, 0}}, // (102, 26) + { 0, { 0, 0, 0}}, // (103, 26) + { 0, { 0, 0, 0}}, // (104, 26) + { 0, { 0, 0, 0}}, // (105, 26) + { 0, { 0, 0, 0}}, // (106, 26) + { 0, { 0, 0, 0}}, // (107, 26) + { 0, { 0, 0, 0}}, // (108, 26) + { 0, { 0, 0, 0}}, // (109, 26) + { 0, { 0, 0, 0}}, // (110, 26) + { 0, { 0, 0, 0}}, // (111, 26) + { 0, { 0, 0, 0}}, // (112, 26) + { 0, { 0, 0, 0}}, // (113, 26) + { 0, { 0, 0, 0}}, // (114, 26) + { 0, { 0, 0, 0}}, // (115, 26) + { 0, { 0, 0, 0}}, // (116, 26) + { 0, { 0, 0, 0}}, // (117, 26) + { 0, { 0, 0, 0}}, // (118, 26) + { 0, { 0, 0, 0}}, // (119, 26) + { 0, { 0, 0, 0}}, // (120, 26) + { 0, { 0, 0, 0}}, // (121, 26) + { 0, { 0, 0, 0}}, // (122, 26) + { 0, { 0, 0, 0}}, // (123, 26) + { 0, { 0, 0, 0}}, // (124, 26) + { 0, { 0, 0, 0}}, // (125, 26) + { 0, { 0, 0, 0}}, // (126, 26) + { 0, { 0, 0, 0}}, // (127, 26) + { 0, { 0, 0, 0}}, // (128, 26) + { 0, { 0, 0, 0}}, // (129, 26) + { 0, { 0, 0, 0}}, // (130, 26) + { 0, { 0, 0, 0}}, // (131, 26) + { 0, { 0, 0, 0}}, // (132, 26) + { 0, { 0, 0, 0}}, // (133, 26) + { 0, { 0, 0, 0}}, // (134, 26) + { 0, { 0, 0, 0}}, // (135, 26) + { 0, { 0, 0, 0}}, // (136, 26) + { 0, { 0, 0, 0}}, // (137, 26) + { 0, { 0, 0, 0}}, // (138, 26) + { 0, { 0, 0, 0}}, // (139, 26) + { 0, { 0, 0, 0}}, // (140, 26) + { 0, { 0, 0, 0}}, // (141, 26) + { 0, { 0, 0, 0}}, // (142, 26) + { 0, { 0, 0, 0}}, // (143, 26) + { 0, { 0, 0, 0}}, // (144, 26) + { 0, { 0, 0, 0}}, // (145, 26) + { 0, { 0, 0, 0}}, // (146, 26) + { 0, { 0, 0, 0}}, // (147, 26) + { 0, { 0, 0, 0}}, // (148, 26) + { 0, { 0, 0, 0}}, // (149, 26) + { 25, { 0, 0, 0}}, // (150, 26) + {118, { 0, 0, 0}}, // (151, 26) + {128, { 0, 0, 0}}, // (152, 26) + {128, { 0, 0, 0}}, // (153, 26) + {128, { 0, 0, 0}}, // (154, 26) + {128, { 0, 0, 0}}, // (155, 26) + {128, { 0, 0, 0}}, // (156, 26) + {128, { 0, 0, 0}}, // (157, 26) + {128, { 0, 0, 0}}, // (158, 26) + {128, { 0, 0, 0}}, // (159, 26) + {128, { 0, 0, 0}}, // (160, 26) + {128, { 0, 0, 0}}, // (161, 26) + {128, { 0, 0, 0}}, // (162, 26) + {128, { 0, 0, 0}}, // (163, 26) + {128, { 0, 0, 0}}, // (164, 26) + {128, { 0, 0, 0}}, // (165, 26) + {128, { 0, 0, 0}}, // (166, 26) + {128, { 0, 0, 0}}, // (167, 26) + {128, { 0, 0, 0}}, // (168, 26) + {128, { 0, 0, 0}}, // (169, 26) + {128, { 0, 0, 0}}, // (170, 26) + {128, { 0, 0, 0}}, // (171, 26) + {128, { 0, 0, 0}}, // (172, 26) + {128, { 0, 0, 0}}, // (173, 26) + {128, { 0, 0, 0}}, // (174, 26) + {128, { 0, 0, 0}}, // (175, 26) + {128, { 0, 0, 0}}, // (176, 26) + {128, { 0, 0, 0}}, // (177, 26) + {128, { 0, 0, 0}}, // (178, 26) + {128, { 0, 0, 0}}, // (179, 26) + {128, { 0, 0, 0}}, // ( 0, 27) + {128, { 0, 0, 0}}, // ( 1, 27) + {128, { 0, 0, 0}}, // ( 2, 27) + {128, { 0, 0, 0}}, // ( 3, 27) + {128, { 0, 0, 0}}, // ( 4, 27) + {128, { 0, 0, 0}}, // ( 5, 27) + {128, { 0, 0, 0}}, // ( 6, 27) + {128, { 0, 0, 0}}, // ( 7, 27) + {128, { 0, 0, 0}}, // ( 8, 27) + {128, { 0, 0, 0}}, // ( 9, 27) + {128, { 0, 0, 0}}, // ( 10, 27) + {128, { 0, 0, 0}}, // ( 11, 27) + {128, { 0, 0, 0}}, // ( 12, 27) + {128, { 0, 0, 0}}, // ( 13, 27) + {128, { 0, 0, 0}}, // ( 14, 27) + {128, { 0, 0, 0}}, // ( 15, 27) + {128, { 0, 0, 0}}, // ( 16, 27) + {128, { 0, 0, 0}}, // ( 17, 27) + {128, { 0, 0, 0}}, // ( 18, 27) + {128, { 0, 0, 0}}, // ( 19, 27) + {128, { 0, 0, 0}}, // ( 20, 27) + {128, { 0, 0, 0}}, // ( 21, 27) + {128, { 0, 0, 0}}, // ( 22, 27) + {128, { 0, 0, 0}}, // ( 23, 27) + {128, { 0, 0, 0}}, // ( 24, 27) + {128, { 0, 0, 0}}, // ( 25, 27) + {128, { 0, 0, 0}}, // ( 26, 27) + {115, { 0, 0, 0}}, // ( 27, 27) + { 21, { 0, 0, 0}}, // ( 28, 27) + { 0, { 0, 0, 0}}, // ( 29, 27) + { 0, { 0, 0, 0}}, // ( 30, 27) + { 0, { 0, 0, 0}}, // ( 31, 27) + { 0, { 0, 0, 0}}, // ( 32, 27) + { 0, { 0, 0, 0}}, // ( 33, 27) + { 0, { 0, 0, 0}}, // ( 34, 27) + { 0, { 0, 0, 0}}, // ( 35, 27) + { 0, { 0, 0, 0}}, // ( 36, 27) + { 0, { 0, 0, 0}}, // ( 37, 27) + { 0, { 0, 0, 0}}, // ( 38, 27) + { 0, { 0, 0, 0}}, // ( 39, 27) + { 0, { 0, 0, 0}}, // ( 40, 27) + { 0, { 0, 0, 0}}, // ( 41, 27) + { 0, { 0, 0, 0}}, // ( 42, 27) + { 0, { 0, 0, 0}}, // ( 43, 27) + { 0, { 0, 0, 0}}, // ( 44, 27) + { 0, { 0, 0, 0}}, // ( 45, 27) + { 0, { 0, 0, 0}}, // ( 46, 27) + { 0, { 0, 0, 0}}, // ( 47, 27) + { 0, { 0, 0, 0}}, // ( 48, 27) + { 0, { 0, 0, 0}}, // ( 49, 27) + { 0, { 0, 0, 0}}, // ( 50, 27) + { 0, { 0, 0, 0}}, // ( 51, 27) + { 0, { 0, 0, 0}}, // ( 52, 27) + { 0, { 0, 0, 0}}, // ( 53, 27) + { 0, { 0, 0, 0}}, // ( 54, 27) + { 0, { 0, 0, 0}}, // ( 55, 27) + { 0, { 0, 0, 0}}, // ( 56, 27) + { 0, { 0, 0, 0}}, // ( 57, 27) + { 0, { 0, 0, 0}}, // ( 58, 27) + { 0, { 0, 0, 0}}, // ( 59, 27) + { 0, { 0, 0, 0}}, // ( 60, 27) + { 0, { 0, 0, 0}}, // ( 61, 27) + { 0, { 0, 0, 0}}, // ( 62, 27) + { 0, { 0, 0, 0}}, // ( 63, 27) + { 0, { 0, 0, 0}}, // ( 64, 27) + { 0, { 0, 0, 0}}, // ( 65, 27) + { 0, { 0, 0, 0}}, // ( 66, 27) + { 0, { 0, 0, 0}}, // ( 67, 27) + { 0, { 0, 0, 0}}, // ( 68, 27) + { 0, { 0, 0, 0}}, // ( 69, 27) + { 0, { 0, 0, 0}}, // ( 70, 27) + { 0, { 0, 0, 0}}, // ( 71, 27) + { 0, { 0, 0, 0}}, // ( 72, 27) + { 0, { 0, 0, 0}}, // ( 73, 27) + { 0, { 0, 0, 0}}, // ( 74, 27) + { 0, { 0, 0, 0}}, // ( 75, 27) + { 0, { 0, 0, 0}}, // ( 76, 27) + { 0, { 0, 0, 0}}, // ( 77, 27) + { 0, { 0, 0, 0}}, // ( 78, 27) + { 0, { 0, 0, 0}}, // ( 79, 27) + { 0, { 0, 0, 0}}, // ( 80, 27) + { 0, { 0, 0, 0}}, // ( 81, 27) + { 0, { 0, 0, 0}}, // ( 82, 27) + { 0, { 0, 0, 0}}, // ( 83, 27) + { 0, { 0, 0, 0}}, // ( 84, 27) + { 0, { 0, 0, 0}}, // ( 85, 27) + { 0, { 0, 0, 0}}, // ( 86, 27) + { 0, { 0, 0, 0}}, // ( 87, 27) + { 0, { 0, 0, 0}}, // ( 88, 27) + { 0, { 0, 0, 0}}, // ( 89, 27) + { 0, { 0, 0, 0}}, // ( 90, 27) + { 0, { 0, 0, 0}}, // ( 91, 27) + { 0, { 0, 0, 0}}, // ( 92, 27) + { 0, { 0, 0, 0}}, // ( 93, 27) + { 0, { 0, 0, 0}}, // ( 94, 27) + { 0, { 0, 0, 0}}, // ( 95, 27) + { 0, { 0, 0, 0}}, // ( 96, 27) + { 0, { 0, 0, 0}}, // ( 97, 27) + { 0, { 0, 0, 0}}, // ( 98, 27) + { 0, { 0, 0, 0}}, // ( 99, 27) + { 0, { 0, 0, 0}}, // (100, 27) + { 0, { 0, 0, 0}}, // (101, 27) + { 0, { 0, 0, 0}}, // (102, 27) + { 0, { 0, 0, 0}}, // (103, 27) + { 0, { 0, 0, 0}}, // (104, 27) + { 0, { 0, 0, 0}}, // (105, 27) + { 0, { 0, 0, 0}}, // (106, 27) + { 0, { 0, 0, 0}}, // (107, 27) + { 0, { 0, 0, 0}}, // (108, 27) + { 0, { 0, 0, 0}}, // (109, 27) + { 0, { 0, 0, 0}}, // (110, 27) + { 0, { 0, 0, 0}}, // (111, 27) + { 0, { 0, 0, 0}}, // (112, 27) + { 0, { 0, 0, 0}}, // (113, 27) + { 0, { 0, 0, 0}}, // (114, 27) + { 0, { 0, 0, 0}}, // (115, 27) + { 0, { 0, 0, 0}}, // (116, 27) + { 0, { 0, 0, 0}}, // (117, 27) + { 0, { 0, 0, 0}}, // (118, 27) + { 0, { 0, 0, 0}}, // (119, 27) + { 0, { 0, 0, 0}}, // (120, 27) + { 0, { 0, 0, 0}}, // (121, 27) + { 0, { 0, 0, 0}}, // (122, 27) + { 0, { 0, 0, 0}}, // (123, 27) + { 0, { 0, 0, 0}}, // (124, 27) + { 0, { 0, 0, 0}}, // (125, 27) + { 0, { 0, 0, 0}}, // (126, 27) + { 0, { 0, 0, 0}}, // (127, 27) + { 0, { 0, 0, 0}}, // (128, 27) + { 0, { 0, 0, 0}}, // (129, 27) + { 0, { 0, 0, 0}}, // (130, 27) + { 0, { 0, 0, 0}}, // (131, 27) + { 0, { 0, 0, 0}}, // (132, 27) + { 0, { 0, 0, 0}}, // (133, 27) + { 0, { 0, 0, 0}}, // (134, 27) + { 0, { 0, 0, 0}}, // (135, 27) + { 0, { 0, 0, 0}}, // (136, 27) + { 0, { 0, 0, 0}}, // (137, 27) + { 0, { 0, 0, 0}}, // (138, 27) + { 0, { 0, 0, 0}}, // (139, 27) + { 0, { 0, 0, 0}}, // (140, 27) + { 0, { 0, 0, 0}}, // (141, 27) + { 0, { 0, 0, 0}}, // (142, 27) + { 0, { 0, 0, 0}}, // (143, 27) + { 0, { 0, 0, 0}}, // (144, 27) + { 0, { 0, 0, 0}}, // (145, 27) + { 0, { 0, 0, 0}}, // (146, 27) + { 0, { 0, 0, 0}}, // (147, 27) + { 0, { 0, 0, 0}}, // (148, 27) + { 0, { 0, 0, 0}}, // (149, 27) + { 0, { 0, 0, 0}}, // (150, 27) + { 21, { 0, 0, 0}}, // (151, 27) + {115, { 0, 0, 0}}, // (152, 27) + {128, { 0, 0, 0}}, // (153, 27) + {128, { 0, 0, 0}}, // (154, 27) + {128, { 0, 0, 0}}, // (155, 27) + {128, { 0, 0, 0}}, // (156, 27) + {128, { 0, 0, 0}}, // (157, 27) + {128, { 0, 0, 0}}, // (158, 27) + {128, { 0, 0, 0}}, // (159, 27) + {128, { 0, 0, 0}}, // (160, 27) + {128, { 0, 0, 0}}, // (161, 27) + {128, { 0, 0, 0}}, // (162, 27) + {128, { 0, 0, 0}}, // (163, 27) + {128, { 0, 0, 0}}, // (164, 27) + {128, { 0, 0, 0}}, // (165, 27) + {128, { 0, 0, 0}}, // (166, 27) + {128, { 0, 0, 0}}, // (167, 27) + {128, { 0, 0, 0}}, // (168, 27) + {128, { 0, 0, 0}}, // (169, 27) + {128, { 0, 0, 0}}, // (170, 27) + {128, { 0, 0, 0}}, // (171, 27) + {128, { 0, 0, 0}}, // (172, 27) + {128, { 0, 0, 0}}, // (173, 27) + {128, { 0, 0, 0}}, // (174, 27) + {128, { 0, 0, 0}}, // (175, 27) + {128, { 0, 0, 0}}, // (176, 27) + {128, { 0, 0, 0}}, // (177, 27) + {128, { 0, 0, 0}}, // (178, 27) + {128, { 0, 0, 0}}, // (179, 27) + {128, { 0, 0, 0}}, // ( 0, 28) + {128, { 0, 0, 0}}, // ( 1, 28) + {128, { 0, 0, 0}}, // ( 2, 28) + {128, { 0, 0, 0}}, // ( 3, 28) + {128, { 0, 0, 0}}, // ( 4, 28) + {128, { 0, 0, 0}}, // ( 5, 28) + {128, { 0, 0, 0}}, // ( 6, 28) + {128, { 0, 0, 0}}, // ( 7, 28) + {128, { 0, 0, 0}}, // ( 8, 28) + {128, { 0, 0, 0}}, // ( 9, 28) + {128, { 0, 0, 0}}, // ( 10, 28) + {128, { 0, 0, 0}}, // ( 11, 28) + {128, { 0, 0, 0}}, // ( 12, 28) + {128, { 0, 0, 0}}, // ( 13, 28) + {128, { 0, 0, 0}}, // ( 14, 28) + {128, { 0, 0, 0}}, // ( 15, 28) + {128, { 0, 0, 0}}, // ( 16, 28) + {128, { 0, 0, 0}}, // ( 17, 28) + {128, { 0, 0, 0}}, // ( 18, 28) + {128, { 0, 0, 0}}, // ( 19, 28) + {128, { 0, 0, 0}}, // ( 20, 28) + {128, { 0, 0, 0}}, // ( 21, 28) + {128, { 0, 0, 0}}, // ( 22, 28) + {128, { 0, 0, 0}}, // ( 23, 28) + {128, { 0, 0, 0}}, // ( 24, 28) + {128, { 0, 0, 0}}, // ( 25, 28) + {117, { 0, 0, 0}}, // ( 26, 28) + { 22, { 0, 0, 0}}, // ( 27, 28) + { 0, { 0, 0, 0}}, // ( 28, 28) + { 0, { 0, 0, 0}}, // ( 29, 28) + { 0, { 0, 0, 0}}, // ( 30, 28) + { 0, { 0, 0, 0}}, // ( 31, 28) + { 0, { 0, 0, 0}}, // ( 32, 28) + { 0, { 0, 0, 0}}, // ( 33, 28) + { 0, { 0, 0, 0}}, // ( 34, 28) + { 0, { 0, 0, 0}}, // ( 35, 28) + { 0, { 0, 0, 0}}, // ( 36, 28) + { 0, { 0, 0, 0}}, // ( 37, 28) + { 0, { 0, 0, 0}}, // ( 38, 28) + { 0, { 0, 0, 0}}, // ( 39, 28) + { 0, { 0, 0, 0}}, // ( 40, 28) + { 0, { 0, 0, 0}}, // ( 41, 28) + { 0, { 0, 0, 0}}, // ( 42, 28) + { 0, { 0, 0, 0}}, // ( 43, 28) + { 0, { 0, 0, 0}}, // ( 44, 28) + { 0, { 0, 0, 0}}, // ( 45, 28) + { 0, { 0, 0, 0}}, // ( 46, 28) + { 0, { 0, 0, 0}}, // ( 47, 28) + { 0, { 0, 0, 0}}, // ( 48, 28) + { 0, { 0, 0, 0}}, // ( 49, 28) + { 0, { 0, 0, 0}}, // ( 50, 28) + { 0, { 0, 0, 0}}, // ( 51, 28) + { 0, { 0, 0, 0}}, // ( 52, 28) + { 0, { 0, 0, 0}}, // ( 53, 28) + { 0, { 0, 0, 0}}, // ( 54, 28) + { 0, { 0, 0, 0}}, // ( 55, 28) + { 0, { 0, 0, 0}}, // ( 56, 28) + { 0, { 0, 0, 0}}, // ( 57, 28) + { 0, { 0, 0, 0}}, // ( 58, 28) + { 0, { 0, 0, 0}}, // ( 59, 28) + { 0, { 0, 0, 0}}, // ( 60, 28) + { 0, { 0, 0, 0}}, // ( 61, 28) + { 0, { 0, 0, 0}}, // ( 62, 28) + { 0, { 0, 0, 0}}, // ( 63, 28) + { 0, { 0, 0, 0}}, // ( 64, 28) + { 0, { 0, 0, 0}}, // ( 65, 28) + { 0, { 0, 0, 0}}, // ( 66, 28) + { 0, { 0, 0, 0}}, // ( 67, 28) + { 0, { 0, 0, 0}}, // ( 68, 28) + { 0, { 0, 0, 0}}, // ( 69, 28) + { 0, { 0, 0, 0}}, // ( 70, 28) + { 0, { 0, 0, 0}}, // ( 71, 28) + { 0, { 0, 0, 0}}, // ( 72, 28) + { 0, { 0, 0, 0}}, // ( 73, 28) + { 0, { 0, 0, 0}}, // ( 74, 28) + { 0, { 0, 0, 0}}, // ( 75, 28) + { 0, { 0, 0, 0}}, // ( 76, 28) + { 0, { 0, 0, 0}}, // ( 77, 28) + { 0, { 0, 0, 0}}, // ( 78, 28) + { 0, { 0, 0, 0}}, // ( 79, 28) + { 0, { 0, 0, 0}}, // ( 80, 28) + { 0, { 0, 0, 0}}, // ( 81, 28) + { 0, { 0, 0, 0}}, // ( 82, 28) + { 0, { 0, 0, 0}}, // ( 83, 28) + { 0, { 0, 0, 0}}, // ( 84, 28) + { 0, { 0, 0, 0}}, // ( 85, 28) + { 0, { 0, 0, 0}}, // ( 86, 28) + { 0, { 0, 0, 0}}, // ( 87, 28) + { 0, { 0, 0, 0}}, // ( 88, 28) + { 0, { 0, 0, 0}}, // ( 89, 28) + { 0, { 0, 0, 0}}, // ( 90, 28) + { 0, { 0, 0, 0}}, // ( 91, 28) + { 0, { 0, 0, 0}}, // ( 92, 28) + { 0, { 0, 0, 0}}, // ( 93, 28) + { 0, { 0, 0, 0}}, // ( 94, 28) + { 0, { 0, 0, 0}}, // ( 95, 28) + { 0, { 0, 0, 0}}, // ( 96, 28) + { 0, { 0, 0, 0}}, // ( 97, 28) + { 0, { 0, 0, 0}}, // ( 98, 28) + { 0, { 0, 0, 0}}, // ( 99, 28) + { 0, { 0, 0, 0}}, // (100, 28) + { 0, { 0, 0, 0}}, // (101, 28) + { 0, { 0, 0, 0}}, // (102, 28) + { 0, { 0, 0, 0}}, // (103, 28) + { 0, { 0, 0, 0}}, // (104, 28) + { 0, { 0, 0, 0}}, // (105, 28) + { 0, { 0, 0, 0}}, // (106, 28) + { 0, { 0, 0, 0}}, // (107, 28) + { 0, { 0, 0, 0}}, // (108, 28) + { 0, { 0, 0, 0}}, // (109, 28) + { 0, { 0, 0, 0}}, // (110, 28) + { 0, { 0, 0, 0}}, // (111, 28) + { 0, { 0, 0, 0}}, // (112, 28) + { 0, { 0, 0, 0}}, // (113, 28) + { 0, { 0, 0, 0}}, // (114, 28) + { 0, { 0, 0, 0}}, // (115, 28) + { 0, { 0, 0, 0}}, // (116, 28) + { 0, { 0, 0, 0}}, // (117, 28) + { 0, { 0, 0, 0}}, // (118, 28) + { 0, { 0, 0, 0}}, // (119, 28) + { 0, { 0, 0, 0}}, // (120, 28) + { 0, { 0, 0, 0}}, // (121, 28) + { 0, { 0, 0, 0}}, // (122, 28) + { 0, { 0, 0, 0}}, // (123, 28) + { 0, { 0, 0, 0}}, // (124, 28) + { 0, { 0, 0, 0}}, // (125, 28) + { 0, { 0, 0, 0}}, // (126, 28) + { 0, { 0, 0, 0}}, // (127, 28) + { 0, { 0, 0, 0}}, // (128, 28) + { 0, { 0, 0, 0}}, // (129, 28) + { 0, { 0, 0, 0}}, // (130, 28) + { 0, { 0, 0, 0}}, // (131, 28) + { 0, { 0, 0, 0}}, // (132, 28) + { 0, { 0, 0, 0}}, // (133, 28) + { 0, { 0, 0, 0}}, // (134, 28) + { 0, { 0, 0, 0}}, // (135, 28) + { 0, { 0, 0, 0}}, // (136, 28) + { 0, { 0, 0, 0}}, // (137, 28) + { 0, { 0, 0, 0}}, // (138, 28) + { 0, { 0, 0, 0}}, // (139, 28) + { 0, { 0, 0, 0}}, // (140, 28) + { 0, { 0, 0, 0}}, // (141, 28) + { 0, { 0, 0, 0}}, // (142, 28) + { 0, { 0, 0, 0}}, // (143, 28) + { 0, { 0, 0, 0}}, // (144, 28) + { 0, { 0, 0, 0}}, // (145, 28) + { 0, { 0, 0, 0}}, // (146, 28) + { 0, { 0, 0, 0}}, // (147, 28) + { 0, { 0, 0, 0}}, // (148, 28) + { 0, { 0, 0, 0}}, // (149, 28) + { 0, { 0, 0, 0}}, // (150, 28) + { 0, { 0, 0, 0}}, // (151, 28) + { 22, { 0, 0, 0}}, // (152, 28) + {117, { 0, 0, 0}}, // (153, 28) + {128, { 0, 0, 0}}, // (154, 28) + {128, { 0, 0, 0}}, // (155, 28) + {128, { 0, 0, 0}}, // (156, 28) + {128, { 0, 0, 0}}, // (157, 28) + {128, { 0, 0, 0}}, // (158, 28) + {128, { 0, 0, 0}}, // (159, 28) + {128, { 0, 0, 0}}, // (160, 28) + {128, { 0, 0, 0}}, // (161, 28) + {128, { 0, 0, 0}}, // (162, 28) + {128, { 0, 0, 0}}, // (163, 28) + {128, { 0, 0, 0}}, // (164, 28) + {128, { 0, 0, 0}}, // (165, 28) + {128, { 0, 0, 0}}, // (166, 28) + {128, { 0, 0, 0}}, // (167, 28) + {128, { 0, 0, 0}}, // (168, 28) + {128, { 0, 0, 0}}, // (169, 28) + {128, { 0, 0, 0}}, // (170, 28) + {128, { 0, 0, 0}}, // (171, 28) + {128, { 0, 0, 0}}, // (172, 28) + {128, { 0, 0, 0}}, // (173, 28) + {128, { 0, 0, 0}}, // (174, 28) + {128, { 0, 0, 0}}, // (175, 28) + {128, { 0, 0, 0}}, // (176, 28) + {128, { 0, 0, 0}}, // (177, 28) + {128, { 0, 0, 0}}, // (178, 28) + {128, { 0, 0, 0}}, // (179, 28) + {128, { 0, 0, 0}}, // ( 0, 29) + {128, { 0, 0, 0}}, // ( 1, 29) + {128, { 0, 0, 0}}, // ( 2, 29) + {128, { 0, 0, 0}}, // ( 3, 29) + {128, { 0, 0, 0}}, // ( 4, 29) + {128, { 0, 0, 0}}, // ( 5, 29) + {128, { 0, 0, 0}}, // ( 6, 29) + {128, { 0, 0, 0}}, // ( 7, 29) + {128, { 0, 0, 0}}, // ( 8, 29) + {128, { 0, 0, 0}}, // ( 9, 29) + {128, { 0, 0, 0}}, // ( 10, 29) + {128, { 0, 0, 0}}, // ( 11, 29) + {128, { 0, 0, 0}}, // ( 12, 29) + {128, { 0, 0, 0}}, // ( 13, 29) + {128, { 0, 0, 0}}, // ( 14, 29) + {128, { 0, 0, 0}}, // ( 15, 29) + {128, { 0, 0, 0}}, // ( 16, 29) + {128, { 0, 0, 0}}, // ( 17, 29) + {128, { 0, 0, 0}}, // ( 18, 29) + {128, { 0, 0, 0}}, // ( 19, 29) + {128, { 0, 0, 0}}, // ( 20, 29) + {128, { 0, 0, 0}}, // ( 21, 29) + {128, { 0, 0, 0}}, // ( 22, 29) + {128, { 0, 0, 0}}, // ( 23, 29) + {128, { 0, 0, 0}}, // ( 24, 29) + {120, { 0, 0, 0}}, // ( 25, 29) + { 25, { 0, 0, 0}}, // ( 26, 29) + { 0, { 0, 0, 0}}, // ( 27, 29) + { 0, { 0, 0, 0}}, // ( 28, 29) + { 0, { 0, 0, 0}}, // ( 29, 29) + { 0, { 0, 0, 0}}, // ( 30, 29) + { 0, { 0, 0, 0}}, // ( 31, 29) + { 0, { 0, 0, 0}}, // ( 32, 29) + { 0, { 0, 0, 0}}, // ( 33, 29) + { 0, { 0, 0, 0}}, // ( 34, 29) + { 0, { 0, 0, 0}}, // ( 35, 29) + { 0, { 0, 0, 0}}, // ( 36, 29) + { 0, { 0, 0, 0}}, // ( 37, 29) + { 0, { 0, 0, 0}}, // ( 38, 29) + { 0, { 0, 0, 0}}, // ( 39, 29) + { 0, { 0, 0, 0}}, // ( 40, 29) + { 0, { 0, 0, 0}}, // ( 41, 29) + { 0, { 0, 0, 0}}, // ( 42, 29) + { 0, { 0, 0, 0}}, // ( 43, 29) + { 0, { 0, 0, 0}}, // ( 44, 29) + { 0, { 0, 0, 0}}, // ( 45, 29) + { 0, { 0, 0, 0}}, // ( 46, 29) + { 0, { 0, 0, 0}}, // ( 47, 29) + { 0, { 0, 0, 0}}, // ( 48, 29) + { 0, { 0, 0, 0}}, // ( 49, 29) + { 0, { 0, 0, 0}}, // ( 50, 29) + { 0, { 0, 0, 0}}, // ( 51, 29) + { 0, { 0, 0, 0}}, // ( 52, 29) + { 0, { 0, 0, 0}}, // ( 53, 29) + { 0, { 0, 0, 0}}, // ( 54, 29) + { 0, { 0, 0, 0}}, // ( 55, 29) + { 0, { 0, 0, 0}}, // ( 56, 29) + { 0, { 0, 0, 0}}, // ( 57, 29) + { 0, { 0, 0, 0}}, // ( 58, 29) + { 0, { 0, 0, 0}}, // ( 59, 29) + { 0, { 0, 0, 0}}, // ( 60, 29) + { 0, { 0, 0, 0}}, // ( 61, 29) + { 0, { 0, 0, 0}}, // ( 62, 29) + { 0, { 0, 0, 0}}, // ( 63, 29) + { 0, { 0, 0, 0}}, // ( 64, 29) + { 0, { 0, 0, 0}}, // ( 65, 29) + { 0, { 0, 0, 0}}, // ( 66, 29) + { 0, { 0, 0, 0}}, // ( 67, 29) + { 0, { 0, 0, 0}}, // ( 68, 29) + { 0, { 0, 0, 0}}, // ( 69, 29) + { 0, { 0, 0, 0}}, // ( 70, 29) + { 0, { 0, 0, 0}}, // ( 71, 29) + { 0, { 0, 0, 0}}, // ( 72, 29) + { 0, { 0, 0, 0}}, // ( 73, 29) + { 0, { 0, 0, 0}}, // ( 74, 29) + { 0, { 0, 0, 0}}, // ( 75, 29) + { 0, { 0, 0, 0}}, // ( 76, 29) + { 0, { 0, 0, 0}}, // ( 77, 29) + { 0, { 0, 0, 0}}, // ( 78, 29) + { 0, { 0, 0, 0}}, // ( 79, 29) + { 0, { 0, 0, 0}}, // ( 80, 29) + { 0, { 0, 0, 0}}, // ( 81, 29) + { 0, { 0, 0, 0}}, // ( 82, 29) + { 0, { 0, 0, 0}}, // ( 83, 29) + { 0, { 0, 0, 0}}, // ( 84, 29) + { 0, { 0, 0, 0}}, // ( 85, 29) + { 0, { 0, 0, 0}}, // ( 86, 29) + { 0, { 0, 0, 0}}, // ( 87, 29) + { 0, { 0, 0, 0}}, // ( 88, 29) + { 0, { 0, 0, 0}}, // ( 89, 29) + { 0, { 0, 0, 0}}, // ( 90, 29) + { 0, { 0, 0, 0}}, // ( 91, 29) + { 0, { 0, 0, 0}}, // ( 92, 29) + { 0, { 0, 0, 0}}, // ( 93, 29) + { 0, { 0, 0, 0}}, // ( 94, 29) + { 0, { 0, 0, 0}}, // ( 95, 29) + { 0, { 0, 0, 0}}, // ( 96, 29) + { 0, { 0, 0, 0}}, // ( 97, 29) + { 0, { 0, 0, 0}}, // ( 98, 29) + { 0, { 0, 0, 0}}, // ( 99, 29) + { 0, { 0, 0, 0}}, // (100, 29) + { 0, { 0, 0, 0}}, // (101, 29) + { 0, { 0, 0, 0}}, // (102, 29) + { 0, { 0, 0, 0}}, // (103, 29) + { 0, { 0, 0, 0}}, // (104, 29) + { 0, { 0, 0, 0}}, // (105, 29) + { 0, { 0, 0, 0}}, // (106, 29) + { 0, { 0, 0, 0}}, // (107, 29) + { 0, { 0, 0, 0}}, // (108, 29) + { 0, { 0, 0, 0}}, // (109, 29) + { 0, { 0, 0, 0}}, // (110, 29) + { 0, { 0, 0, 0}}, // (111, 29) + { 0, { 0, 0, 0}}, // (112, 29) + { 0, { 0, 0, 0}}, // (113, 29) + { 0, { 0, 0, 0}}, // (114, 29) + { 0, { 0, 0, 0}}, // (115, 29) + { 0, { 0, 0, 0}}, // (116, 29) + { 0, { 0, 0, 0}}, // (117, 29) + { 0, { 0, 0, 0}}, // (118, 29) + { 0, { 0, 0, 0}}, // (119, 29) + { 0, { 0, 0, 0}}, // (120, 29) + { 0, { 0, 0, 0}}, // (121, 29) + { 0, { 0, 0, 0}}, // (122, 29) + { 0, { 0, 0, 0}}, // (123, 29) + { 0, { 0, 0, 0}}, // (124, 29) + { 0, { 0, 0, 0}}, // (125, 29) + { 0, { 0, 0, 0}}, // (126, 29) + { 0, { 0, 0, 0}}, // (127, 29) + { 0, { 0, 0, 0}}, // (128, 29) + { 0, { 0, 0, 0}}, // (129, 29) + { 0, { 0, 0, 0}}, // (130, 29) + { 0, { 0, 0, 0}}, // (131, 29) + { 0, { 0, 0, 0}}, // (132, 29) + { 0, { 0, 0, 0}}, // (133, 29) + { 0, { 0, 0, 0}}, // (134, 29) + { 0, { 0, 0, 0}}, // (135, 29) + { 0, { 0, 0, 0}}, // (136, 29) + { 0, { 0, 0, 0}}, // (137, 29) + { 0, { 0, 0, 0}}, // (138, 29) + { 0, { 0, 0, 0}}, // (139, 29) + { 0, { 0, 0, 0}}, // (140, 29) + { 0, { 0, 0, 0}}, // (141, 29) + { 0, { 0, 0, 0}}, // (142, 29) + { 0, { 0, 0, 0}}, // (143, 29) + { 0, { 0, 0, 0}}, // (144, 29) + { 0, { 0, 0, 0}}, // (145, 29) + { 0, { 0, 0, 0}}, // (146, 29) + { 0, { 0, 0, 0}}, // (147, 29) + { 0, { 0, 0, 0}}, // (148, 29) + { 0, { 0, 0, 0}}, // (149, 29) + { 0, { 0, 0, 0}}, // (150, 29) + { 0, { 0, 0, 0}}, // (151, 29) + { 0, { 0, 0, 0}}, // (152, 29) + { 25, { 0, 0, 0}}, // (153, 29) + {120, { 0, 0, 0}}, // (154, 29) + {128, { 0, 0, 0}}, // (155, 29) + {128, { 0, 0, 0}}, // (156, 29) + {128, { 0, 0, 0}}, // (157, 29) + {128, { 0, 0, 0}}, // (158, 29) + {128, { 0, 0, 0}}, // (159, 29) + {128, { 0, 0, 0}}, // (160, 29) + {128, { 0, 0, 0}}, // (161, 29) + {128, { 0, 0, 0}}, // (162, 29) + {128, { 0, 0, 0}}, // (163, 29) + {128, { 0, 0, 0}}, // (164, 29) + {128, { 0, 0, 0}}, // (165, 29) + {128, { 0, 0, 0}}, // (166, 29) + {128, { 0, 0, 0}}, // (167, 29) + {128, { 0, 0, 0}}, // (168, 29) + {128, { 0, 0, 0}}, // (169, 29) + {128, { 0, 0, 0}}, // (170, 29) + {128, { 0, 0, 0}}, // (171, 29) + {128, { 0, 0, 0}}, // (172, 29) + {128, { 0, 0, 0}}, // (173, 29) + {128, { 0, 0, 0}}, // (174, 29) + {128, { 0, 0, 0}}, // (175, 29) + {128, { 0, 0, 0}}, // (176, 29) + {128, { 0, 0, 0}}, // (177, 29) + {128, { 0, 0, 0}}, // (178, 29) + {128, { 0, 0, 0}}, // (179, 29) + {128, { 0, 0, 0}}, // ( 0, 30) + {128, { 0, 0, 0}}, // ( 1, 30) + {128, { 0, 0, 0}}, // ( 2, 30) + {128, { 0, 0, 0}}, // ( 3, 30) + {128, { 0, 0, 0}}, // ( 4, 30) + {128, { 0, 0, 0}}, // ( 5, 30) + {128, { 0, 0, 0}}, // ( 6, 30) + {128, { 0, 0, 0}}, // ( 7, 30) + {128, { 0, 0, 0}}, // ( 8, 30) + {128, { 0, 0, 0}}, // ( 9, 30) + {128, { 0, 0, 0}}, // ( 10, 30) + {128, { 0, 0, 0}}, // ( 11, 30) + {128, { 0, 0, 0}}, // ( 12, 30) + {128, { 0, 0, 0}}, // ( 13, 30) + {128, { 0, 0, 0}}, // ( 14, 30) + {128, { 0, 0, 0}}, // ( 15, 30) + {128, { 0, 0, 0}}, // ( 16, 30) + {128, { 0, 0, 0}}, // ( 17, 30) + {128, { 0, 0, 0}}, // ( 18, 30) + {128, { 0, 0, 0}}, // ( 19, 30) + {128, { 0, 0, 0}}, // ( 20, 30) + {128, { 0, 0, 0}}, // ( 21, 30) + {128, { 0, 0, 0}}, // ( 22, 30) + {128, { 0, 0, 0}}, // ( 23, 30) + {123, { 0, 0, 0}}, // ( 24, 30) + { 28, { 0, 0, 0}}, // ( 25, 30) + { 0, { 0, 0, 0}}, // ( 26, 30) + { 0, { 0, 0, 0}}, // ( 27, 30) + { 0, { 0, 0, 0}}, // ( 28, 30) + { 0, { 0, 0, 0}}, // ( 29, 30) + { 0, { 0, 0, 0}}, // ( 30, 30) + { 0, { 0, 0, 0}}, // ( 31, 30) + { 0, { 0, 0, 0}}, // ( 32, 30) + { 0, { 0, 0, 0}}, // ( 33, 30) + { 0, { 0, 0, 0}}, // ( 34, 30) + { 0, { 0, 0, 0}}, // ( 35, 30) + { 0, { 0, 0, 0}}, // ( 36, 30) + { 0, { 0, 0, 0}}, // ( 37, 30) + { 0, { 0, 0, 0}}, // ( 38, 30) + { 0, { 0, 0, 0}}, // ( 39, 30) + { 0, { 0, 0, 0}}, // ( 40, 30) + { 0, { 0, 0, 0}}, // ( 41, 30) + { 0, { 0, 0, 0}}, // ( 42, 30) + { 0, { 0, 0, 0}}, // ( 43, 30) + { 0, { 0, 0, 0}}, // ( 44, 30) + { 0, { 0, 0, 0}}, // ( 45, 30) + { 0, { 0, 0, 0}}, // ( 46, 30) + { 0, { 0, 0, 0}}, // ( 47, 30) + { 0, { 0, 0, 0}}, // ( 48, 30) + { 0, { 0, 0, 0}}, // ( 49, 30) + { 0, { 0, 0, 0}}, // ( 50, 30) + { 0, { 0, 0, 0}}, // ( 51, 30) + { 0, { 0, 0, 0}}, // ( 52, 30) + { 0, { 0, 0, 0}}, // ( 53, 30) + { 0, { 0, 0, 0}}, // ( 54, 30) + { 0, { 0, 0, 0}}, // ( 55, 30) + { 0, { 0, 0, 0}}, // ( 56, 30) + { 0, { 0, 0, 0}}, // ( 57, 30) + { 0, { 0, 0, 0}}, // ( 58, 30) + { 0, { 0, 0, 0}}, // ( 59, 30) + { 0, { 0, 0, 0}}, // ( 60, 30) + { 0, { 0, 0, 0}}, // ( 61, 30) + { 0, { 0, 0, 0}}, // ( 62, 30) + { 0, { 0, 0, 0}}, // ( 63, 30) + { 0, { 0, 0, 0}}, // ( 64, 30) + { 0, { 0, 0, 0}}, // ( 65, 30) + { 0, { 0, 0, 0}}, // ( 66, 30) + { 0, { 0, 0, 0}}, // ( 67, 30) + { 0, { 0, 0, 0}}, // ( 68, 30) + { 0, { 0, 0, 0}}, // ( 69, 30) + { 0, { 0, 0, 0}}, // ( 70, 30) + { 0, { 0, 0, 0}}, // ( 71, 30) + { 0, { 0, 0, 0}}, // ( 72, 30) + { 0, { 0, 0, 0}}, // ( 73, 30) + { 0, { 0, 0, 0}}, // ( 74, 30) + { 0, { 0, 0, 0}}, // ( 75, 30) + { 0, { 0, 0, 0}}, // ( 76, 30) + { 0, { 0, 0, 0}}, // ( 77, 30) + { 0, { 0, 0, 0}}, // ( 78, 30) + { 0, { 0, 0, 0}}, // ( 79, 30) + { 0, { 0, 0, 0}}, // ( 80, 30) + { 0, { 0, 0, 0}}, // ( 81, 30) + { 0, { 0, 0, 0}}, // ( 82, 30) + { 0, { 0, 0, 0}}, // ( 83, 30) + { 0, { 0, 0, 0}}, // ( 84, 30) + { 0, { 0, 0, 0}}, // ( 85, 30) + { 0, { 0, 0, 0}}, // ( 86, 30) + { 0, { 0, 0, 0}}, // ( 87, 30) + { 0, { 0, 0, 0}}, // ( 88, 30) + { 0, { 0, 0, 0}}, // ( 89, 30) + { 0, { 0, 0, 0}}, // ( 90, 30) + { 0, { 0, 0, 0}}, // ( 91, 30) + { 0, { 0, 0, 0}}, // ( 92, 30) + { 0, { 0, 0, 0}}, // ( 93, 30) + { 0, { 0, 0, 0}}, // ( 94, 30) + { 0, { 0, 0, 0}}, // ( 95, 30) + { 0, { 0, 0, 0}}, // ( 96, 30) + { 0, { 0, 0, 0}}, // ( 97, 30) + { 0, { 0, 0, 0}}, // ( 98, 30) + { 0, { 0, 0, 0}}, // ( 99, 30) + { 0, { 0, 0, 0}}, // (100, 30) + { 0, { 0, 0, 0}}, // (101, 30) + { 0, { 0, 0, 0}}, // (102, 30) + { 0, { 0, 0, 0}}, // (103, 30) + { 0, { 0, 0, 0}}, // (104, 30) + { 0, { 0, 0, 0}}, // (105, 30) + { 0, { 0, 0, 0}}, // (106, 30) + { 0, { 0, 0, 0}}, // (107, 30) + { 0, { 0, 0, 0}}, // (108, 30) + { 0, { 0, 0, 0}}, // (109, 30) + { 0, { 0, 0, 0}}, // (110, 30) + { 0, { 0, 0, 0}}, // (111, 30) + { 0, { 0, 0, 0}}, // (112, 30) + { 0, { 0, 0, 0}}, // (113, 30) + { 0, { 0, 0, 0}}, // (114, 30) + { 0, { 0, 0, 0}}, // (115, 30) + { 0, { 0, 0, 0}}, // (116, 30) + { 0, { 0, 0, 0}}, // (117, 30) + { 0, { 0, 0, 0}}, // (118, 30) + { 0, { 0, 0, 0}}, // (119, 30) + { 0, { 0, 0, 0}}, // (120, 30) + { 0, { 0, 0, 0}}, // (121, 30) + { 0, { 0, 0, 0}}, // (122, 30) + { 0, { 0, 0, 0}}, // (123, 30) + { 0, { 0, 0, 0}}, // (124, 30) + { 0, { 0, 0, 0}}, // (125, 30) + { 0, { 0, 0, 0}}, // (126, 30) + { 0, { 0, 0, 0}}, // (127, 30) + { 0, { 0, 0, 0}}, // (128, 30) + { 0, { 0, 0, 0}}, // (129, 30) + { 0, { 0, 0, 0}}, // (130, 30) + { 0, { 0, 0, 0}}, // (131, 30) + { 0, { 0, 0, 0}}, // (132, 30) + { 0, { 0, 0, 0}}, // (133, 30) + { 0, { 0, 0, 0}}, // (134, 30) + { 0, { 0, 0, 0}}, // (135, 30) + { 0, { 0, 0, 0}}, // (136, 30) + { 0, { 0, 0, 0}}, // (137, 30) + { 0, { 0, 0, 0}}, // (138, 30) + { 0, { 0, 0, 0}}, // (139, 30) + { 0, { 0, 0, 0}}, // (140, 30) + { 0, { 0, 0, 0}}, // (141, 30) + { 0, { 0, 0, 0}}, // (142, 30) + { 0, { 0, 0, 0}}, // (143, 30) + { 0, { 0, 0, 0}}, // (144, 30) + { 0, { 0, 0, 0}}, // (145, 30) + { 0, { 0, 0, 0}}, // (146, 30) + { 0, { 0, 0, 0}}, // (147, 30) + { 0, { 0, 0, 0}}, // (148, 30) + { 0, { 0, 0, 0}}, // (149, 30) + { 0, { 0, 0, 0}}, // (150, 30) + { 0, { 0, 0, 0}}, // (151, 30) + { 0, { 0, 0, 0}}, // (152, 30) + { 0, { 0, 0, 0}}, // (153, 30) + { 28, { 0, 0, 0}}, // (154, 30) + {123, { 0, 0, 0}}, // (155, 30) + {128, { 0, 0, 0}}, // (156, 30) + {128, { 0, 0, 0}}, // (157, 30) + {128, { 0, 0, 0}}, // (158, 30) + {128, { 0, 0, 0}}, // (159, 30) + {128, { 0, 0, 0}}, // (160, 30) + {128, { 0, 0, 0}}, // (161, 30) + {128, { 0, 0, 0}}, // (162, 30) + {128, { 0, 0, 0}}, // (163, 30) + {128, { 0, 0, 0}}, // (164, 30) + {128, { 0, 0, 0}}, // (165, 30) + {128, { 0, 0, 0}}, // (166, 30) + {128, { 0, 0, 0}}, // (167, 30) + {128, { 0, 0, 0}}, // (168, 30) + {128, { 0, 0, 0}}, // (169, 30) + {128, { 0, 0, 0}}, // (170, 30) + {128, { 0, 0, 0}}, // (171, 30) + {128, { 0, 0, 0}}, // (172, 30) + {128, { 0, 0, 0}}, // (173, 30) + {128, { 0, 0, 0}}, // (174, 30) + {128, { 0, 0, 0}}, // (175, 30) + {128, { 0, 0, 0}}, // (176, 30) + {128, { 0, 0, 0}}, // (177, 30) + {128, { 0, 0, 0}}, // (178, 30) + {128, { 0, 0, 0}}, // (179, 30) + {128, { 0, 0, 0}}, // ( 0, 31) + {128, { 0, 0, 0}}, // ( 1, 31) + {128, { 0, 0, 0}}, // ( 2, 31) + {128, { 0, 0, 0}}, // ( 3, 31) + {128, { 0, 0, 0}}, // ( 4, 31) + {128, { 0, 0, 0}}, // ( 5, 31) + {128, { 0, 0, 0}}, // ( 6, 31) + {128, { 0, 0, 0}}, // ( 7, 31) + {128, { 0, 0, 0}}, // ( 8, 31) + {128, { 0, 0, 0}}, // ( 9, 31) + {128, { 0, 0, 0}}, // ( 10, 31) + {128, { 0, 0, 0}}, // ( 11, 31) + {128, { 0, 0, 0}}, // ( 12, 31) + {128, { 0, 0, 0}}, // ( 13, 31) + {128, { 0, 0, 0}}, // ( 14, 31) + {128, { 0, 0, 0}}, // ( 15, 31) + {128, { 0, 0, 0}}, // ( 16, 31) + {128, { 0, 0, 0}}, // ( 17, 31) + {128, { 0, 0, 0}}, // ( 18, 31) + {128, { 0, 0, 0}}, // ( 19, 31) + {128, { 0, 0, 0}}, // ( 20, 31) + {128, { 0, 0, 0}}, // ( 21, 31) + {128, { 0, 0, 0}}, // ( 22, 31) + {126, { 0, 0, 0}}, // ( 23, 31) + { 39, { 0, 0, 0}}, // ( 24, 31) + { 0, { 0, 0, 0}}, // ( 25, 31) + { 0, { 0, 0, 0}}, // ( 26, 31) + { 0, { 0, 0, 0}}, // ( 27, 31) + { 0, { 0, 0, 0}}, // ( 28, 31) + { 0, { 0, 0, 0}}, // ( 29, 31) + { 0, { 0, 0, 0}}, // ( 30, 31) + { 0, { 0, 0, 0}}, // ( 31, 31) + { 0, { 0, 0, 0}}, // ( 32, 31) + { 0, { 0, 0, 0}}, // ( 33, 31) + { 0, { 0, 0, 0}}, // ( 34, 31) + { 0, { 0, 0, 0}}, // ( 35, 31) + { 0, { 0, 0, 0}}, // ( 36, 31) + { 0, { 0, 0, 0}}, // ( 37, 31) + { 0, { 0, 0, 0}}, // ( 38, 31) + { 0, { 0, 0, 0}}, // ( 39, 31) + { 0, { 0, 0, 0}}, // ( 40, 31) + { 0, { 0, 0, 0}}, // ( 41, 31) + { 0, { 0, 0, 0}}, // ( 42, 31) + { 0, { 0, 0, 0}}, // ( 43, 31) + { 0, { 0, 0, 0}}, // ( 44, 31) + { 0, { 0, 0, 0}}, // ( 45, 31) + { 0, { 0, 0, 0}}, // ( 46, 31) + { 0, { 0, 0, 0}}, // ( 47, 31) + { 0, { 0, 0, 0}}, // ( 48, 31) + { 0, { 0, 0, 0}}, // ( 49, 31) + { 0, { 0, 0, 0}}, // ( 50, 31) + { 0, { 0, 0, 0}}, // ( 51, 31) + { 0, { 0, 0, 0}}, // ( 52, 31) + { 0, { 0, 0, 0}}, // ( 53, 31) + { 0, { 0, 0, 0}}, // ( 54, 31) + { 0, { 0, 0, 0}}, // ( 55, 31) + { 0, { 0, 0, 0}}, // ( 56, 31) + { 0, { 0, 0, 0}}, // ( 57, 31) + { 0, { 0, 0, 0}}, // ( 58, 31) + { 0, { 0, 0, 0}}, // ( 59, 31) + { 0, { 0, 0, 0}}, // ( 60, 31) + { 0, { 0, 0, 0}}, // ( 61, 31) + { 0, { 0, 0, 0}}, // ( 62, 31) + { 0, { 0, 0, 0}}, // ( 63, 31) + { 0, { 0, 0, 0}}, // ( 64, 31) + { 0, { 0, 0, 0}}, // ( 65, 31) + { 0, { 0, 0, 0}}, // ( 66, 31) + { 0, { 0, 0, 0}}, // ( 67, 31) + { 0, { 0, 0, 0}}, // ( 68, 31) + { 0, { 0, 0, 0}}, // ( 69, 31) + { 0, { 0, 0, 0}}, // ( 70, 31) + { 0, { 0, 0, 0}}, // ( 71, 31) + { 0, { 0, 0, 0}}, // ( 72, 31) + { 0, { 0, 0, 0}}, // ( 73, 31) + { 0, { 0, 0, 0}}, // ( 74, 31) + { 0, { 0, 0, 0}}, // ( 75, 31) + { 0, { 0, 0, 0}}, // ( 76, 31) + { 0, { 0, 0, 0}}, // ( 77, 31) + { 0, { 0, 0, 0}}, // ( 78, 31) + { 0, { 0, 0, 0}}, // ( 79, 31) + { 0, { 0, 0, 0}}, // ( 80, 31) + { 0, { 0, 0, 0}}, // ( 81, 31) + { 0, { 0, 0, 0}}, // ( 82, 31) + { 0, { 0, 0, 0}}, // ( 83, 31) + { 0, { 0, 0, 0}}, // ( 84, 31) + { 0, { 0, 0, 0}}, // ( 85, 31) + { 0, { 0, 0, 0}}, // ( 86, 31) + { 0, { 0, 0, 0}}, // ( 87, 31) + { 0, { 0, 0, 0}}, // ( 88, 31) + { 0, { 0, 0, 0}}, // ( 89, 31) + { 0, { 0, 0, 0}}, // ( 90, 31) + { 0, { 0, 0, 0}}, // ( 91, 31) + { 0, { 0, 0, 0}}, // ( 92, 31) + { 0, { 0, 0, 0}}, // ( 93, 31) + { 0, { 0, 0, 0}}, // ( 94, 31) + { 0, { 0, 0, 0}}, // ( 95, 31) + { 0, { 0, 0, 0}}, // ( 96, 31) + { 0, { 0, 0, 0}}, // ( 97, 31) + { 0, { 0, 0, 0}}, // ( 98, 31) + { 0, { 0, 0, 0}}, // ( 99, 31) + { 0, { 0, 0, 0}}, // (100, 31) + { 0, { 0, 0, 0}}, // (101, 31) + { 0, { 0, 0, 0}}, // (102, 31) + { 0, { 0, 0, 0}}, // (103, 31) + { 0, { 0, 0, 0}}, // (104, 31) + { 0, { 0, 0, 0}}, // (105, 31) + { 0, { 0, 0, 0}}, // (106, 31) + { 0, { 0, 0, 0}}, // (107, 31) + { 0, { 0, 0, 0}}, // (108, 31) + { 0, { 0, 0, 0}}, // (109, 31) + { 0, { 0, 0, 0}}, // (110, 31) + { 0, { 0, 0, 0}}, // (111, 31) + { 0, { 0, 0, 0}}, // (112, 31) + { 0, { 0, 0, 0}}, // (113, 31) + { 0, { 0, 0, 0}}, // (114, 31) + { 0, { 0, 0, 0}}, // (115, 31) + { 0, { 0, 0, 0}}, // (116, 31) + { 0, { 0, 0, 0}}, // (117, 31) + { 0, { 0, 0, 0}}, // (118, 31) + { 0, { 0, 0, 0}}, // (119, 31) + { 0, { 0, 0, 0}}, // (120, 31) + { 0, { 0, 0, 0}}, // (121, 31) + { 0, { 0, 0, 0}}, // (122, 31) + { 0, { 0, 0, 0}}, // (123, 31) + { 0, { 0, 0, 0}}, // (124, 31) + { 0, { 0, 0, 0}}, // (125, 31) + { 0, { 0, 0, 0}}, // (126, 31) + { 0, { 0, 0, 0}}, // (127, 31) + { 0, { 0, 0, 0}}, // (128, 31) + { 0, { 0, 0, 0}}, // (129, 31) + { 0, { 0, 0, 0}}, // (130, 31) + { 0, { 0, 0, 0}}, // (131, 31) + { 0, { 0, 0, 0}}, // (132, 31) + { 0, { 0, 0, 0}}, // (133, 31) + { 0, { 0, 0, 0}}, // (134, 31) + { 0, { 0, 0, 0}}, // (135, 31) + { 0, { 0, 0, 0}}, // (136, 31) + { 0, { 0, 0, 0}}, // (137, 31) + { 0, { 0, 0, 0}}, // (138, 31) + { 0, { 0, 0, 0}}, // (139, 31) + { 0, { 0, 0, 0}}, // (140, 31) + { 0, { 0, 0, 0}}, // (141, 31) + { 0, { 0, 0, 0}}, // (142, 31) + { 0, { 0, 0, 0}}, // (143, 31) + { 0, { 0, 0, 0}}, // (144, 31) + { 0, { 0, 0, 0}}, // (145, 31) + { 0, { 0, 0, 0}}, // (146, 31) + { 0, { 0, 0, 0}}, // (147, 31) + { 0, { 0, 0, 0}}, // (148, 31) + { 0, { 0, 0, 0}}, // (149, 31) + { 0, { 0, 0, 0}}, // (150, 31) + { 0, { 0, 0, 0}}, // (151, 31) + { 0, { 0, 0, 0}}, // (152, 31) + { 0, { 0, 0, 0}}, // (153, 31) + { 0, { 0, 0, 0}}, // (154, 31) + { 39, { 0, 0, 0}}, // (155, 31) + {126, { 0, 0, 0}}, // (156, 31) + {128, { 0, 0, 0}}, // (157, 31) + {128, { 0, 0, 0}}, // (158, 31) + {128, { 0, 0, 0}}, // (159, 31) + {128, { 0, 0, 0}}, // (160, 31) + {128, { 0, 0, 0}}, // (161, 31) + {128, { 0, 0, 0}}, // (162, 31) + {128, { 0, 0, 0}}, // (163, 31) + {128, { 0, 0, 0}}, // (164, 31) + {128, { 0, 0, 0}}, // (165, 31) + {128, { 0, 0, 0}}, // (166, 31) + {128, { 0, 0, 0}}, // (167, 31) + {128, { 0, 0, 0}}, // (168, 31) + {128, { 0, 0, 0}}, // (169, 31) + {128, { 0, 0, 0}}, // (170, 31) + {128, { 0, 0, 0}}, // (171, 31) + {128, { 0, 0, 0}}, // (172, 31) + {128, { 0, 0, 0}}, // (173, 31) + {128, { 0, 0, 0}}, // (174, 31) + {128, { 0, 0, 0}}, // (175, 31) + {128, { 0, 0, 0}}, // (176, 31) + {128, { 0, 0, 0}}, // (177, 31) + {128, { 0, 0, 0}}, // (178, 31) + {128, { 0, 0, 0}}, // (179, 31) + {128, { 0, 0, 0}}, // ( 0, 32) + {128, { 0, 0, 0}}, // ( 1, 32) + {128, { 0, 0, 0}}, // ( 2, 32) + {128, { 0, 0, 0}}, // ( 3, 32) + {128, { 0, 0, 0}}, // ( 4, 32) + {128, { 0, 0, 0}}, // ( 5, 32) + {128, { 0, 0, 0}}, // ( 6, 32) + {128, { 0, 0, 0}}, // ( 7, 32) + {128, { 0, 0, 0}}, // ( 8, 32) + {128, { 0, 0, 0}}, // ( 9, 32) + {128, { 0, 0, 0}}, // ( 10, 32) + {128, { 0, 0, 0}}, // ( 11, 32) + {128, { 0, 0, 0}}, // ( 12, 32) + {128, { 0, 0, 0}}, // ( 13, 32) + {128, { 0, 0, 0}}, // ( 14, 32) + {128, { 0, 0, 0}}, // ( 15, 32) + {128, { 0, 0, 0}}, // ( 16, 32) + {128, { 0, 0, 0}}, // ( 17, 32) + {128, { 0, 0, 0}}, // ( 18, 32) + {128, { 0, 0, 0}}, // ( 19, 32) + {128, { 0, 0, 0}}, // ( 20, 32) + {128, { 0, 0, 0}}, // ( 21, 32) + {128, { 0, 0, 0}}, // ( 22, 32) + { 53, { 0, 0, 0}}, // ( 23, 32) + { 0, { 0, 0, 0}}, // ( 24, 32) + { 0, { 0, 0, 0}}, // ( 25, 32) + { 0, { 0, 0, 0}}, // ( 26, 32) + { 0, { 0, 0, 0}}, // ( 27, 32) + { 0, { 0, 0, 0}}, // ( 28, 32) + { 0, { 0, 0, 0}}, // ( 29, 32) + { 0, { 0, 0, 0}}, // ( 30, 32) + { 0, { 0, 0, 0}}, // ( 31, 32) + { 0, { 0, 0, 0}}, // ( 32, 32) + { 0, { 0, 0, 0}}, // ( 33, 32) + { 0, { 0, 0, 0}}, // ( 34, 32) + { 0, { 0, 0, 0}}, // ( 35, 32) + { 0, { 0, 0, 0}}, // ( 36, 32) + { 0, { 0, 0, 0}}, // ( 37, 32) + { 0, { 0, 0, 0}}, // ( 38, 32) + { 0, { 0, 0, 0}}, // ( 39, 32) + { 0, { 0, 0, 0}}, // ( 40, 32) + { 0, { 0, 0, 0}}, // ( 41, 32) + { 0, { 0, 0, 0}}, // ( 42, 32) + { 0, { 0, 0, 0}}, // ( 43, 32) + { 0, { 0, 0, 0}}, // ( 44, 32) + { 0, { 0, 0, 0}}, // ( 45, 32) + { 0, { 0, 0, 0}}, // ( 46, 32) + { 0, { 0, 0, 0}}, // ( 47, 32) + { 0, { 0, 0, 0}}, // ( 48, 32) + { 0, { 0, 0, 0}}, // ( 49, 32) + { 0, { 0, 0, 0}}, // ( 50, 32) + { 0, { 0, 0, 0}}, // ( 51, 32) + { 0, { 0, 0, 0}}, // ( 52, 32) + { 0, { 0, 0, 0}}, // ( 53, 32) + { 0, { 0, 0, 0}}, // ( 54, 32) + { 0, { 0, 0, 0}}, // ( 55, 32) + { 0, { 0, 0, 0}}, // ( 56, 32) + { 0, { 0, 0, 0}}, // ( 57, 32) + { 0, { 0, 0, 0}}, // ( 58, 32) + { 0, { 0, 0, 0}}, // ( 59, 32) + { 0, { 0, 0, 0}}, // ( 60, 32) + { 0, { 0, 0, 0}}, // ( 61, 32) + { 0, { 0, 0, 0}}, // ( 62, 32) + { 0, { 0, 0, 0}}, // ( 63, 32) + { 0, { 0, 0, 0}}, // ( 64, 32) + { 0, { 0, 0, 0}}, // ( 65, 32) + { 0, { 0, 0, 0}}, // ( 66, 32) + { 0, { 0, 0, 0}}, // ( 67, 32) + { 0, { 0, 0, 0}}, // ( 68, 32) + { 0, { 0, 0, 0}}, // ( 69, 32) + { 0, { 0, 0, 0}}, // ( 70, 32) + { 0, { 0, 0, 0}}, // ( 71, 32) + { 0, { 0, 0, 0}}, // ( 72, 32) + { 0, { 0, 0, 0}}, // ( 73, 32) + { 0, { 0, 0, 0}}, // ( 74, 32) + { 0, { 0, 0, 0}}, // ( 75, 32) + { 0, { 0, 0, 0}}, // ( 76, 32) + { 0, { 0, 0, 0}}, // ( 77, 32) + { 0, { 0, 0, 0}}, // ( 78, 32) + { 0, { 0, 0, 0}}, // ( 79, 32) + { 0, { 0, 0, 0}}, // ( 80, 32) + { 0, { 0, 0, 0}}, // ( 81, 32) + { 0, { 0, 0, 0}}, // ( 82, 32) + { 0, { 0, 0, 0}}, // ( 83, 32) + { 0, { 0, 0, 0}}, // ( 84, 32) + { 0, { 0, 0, 0}}, // ( 85, 32) + { 0, { 0, 0, 0}}, // ( 86, 32) + { 0, { 0, 0, 0}}, // ( 87, 32) + { 0, { 0, 0, 0}}, // ( 88, 32) + { 0, { 0, 0, 0}}, // ( 89, 32) + { 0, { 0, 0, 0}}, // ( 90, 32) + { 0, { 0, 0, 0}}, // ( 91, 32) + { 0, { 0, 0, 0}}, // ( 92, 32) + { 0, { 0, 0, 0}}, // ( 93, 32) + { 0, { 0, 0, 0}}, // ( 94, 32) + { 0, { 0, 0, 0}}, // ( 95, 32) + { 0, { 0, 0, 0}}, // ( 96, 32) + { 0, { 0, 0, 0}}, // ( 97, 32) + { 0, { 0, 0, 0}}, // ( 98, 32) + { 0, { 0, 0, 0}}, // ( 99, 32) + { 0, { 0, 0, 0}}, // (100, 32) + { 0, { 0, 0, 0}}, // (101, 32) + { 0, { 0, 0, 0}}, // (102, 32) + { 0, { 0, 0, 0}}, // (103, 32) + { 0, { 0, 0, 0}}, // (104, 32) + { 0, { 0, 0, 0}}, // (105, 32) + { 0, { 0, 0, 0}}, // (106, 32) + { 0, { 0, 0, 0}}, // (107, 32) + { 0, { 0, 0, 0}}, // (108, 32) + { 0, { 0, 0, 0}}, // (109, 32) + { 0, { 0, 0, 0}}, // (110, 32) + { 0, { 0, 0, 0}}, // (111, 32) + { 0, { 0, 0, 0}}, // (112, 32) + { 0, { 0, 0, 0}}, // (113, 32) + { 0, { 0, 0, 0}}, // (114, 32) + { 0, { 0, 0, 0}}, // (115, 32) + { 0, { 0, 0, 0}}, // (116, 32) + { 0, { 0, 0, 0}}, // (117, 32) + { 0, { 0, 0, 0}}, // (118, 32) + { 0, { 0, 0, 0}}, // (119, 32) + { 0, { 0, 0, 0}}, // (120, 32) + { 0, { 0, 0, 0}}, // (121, 32) + { 0, { 0, 0, 0}}, // (122, 32) + { 0, { 0, 0, 0}}, // (123, 32) + { 0, { 0, 0, 0}}, // (124, 32) + { 0, { 0, 0, 0}}, // (125, 32) + { 0, { 0, 0, 0}}, // (126, 32) + { 0, { 0, 0, 0}}, // (127, 32) + { 0, { 0, 0, 0}}, // (128, 32) + { 0, { 0, 0, 0}}, // (129, 32) + { 0, { 0, 0, 0}}, // (130, 32) + { 0, { 0, 0, 0}}, // (131, 32) + { 0, { 0, 0, 0}}, // (132, 32) + { 0, { 0, 0, 0}}, // (133, 32) + { 0, { 0, 0, 0}}, // (134, 32) + { 0, { 0, 0, 0}}, // (135, 32) + { 0, { 0, 0, 0}}, // (136, 32) + { 0, { 0, 0, 0}}, // (137, 32) + { 0, { 0, 0, 0}}, // (138, 32) + { 0, { 0, 0, 0}}, // (139, 32) + { 0, { 0, 0, 0}}, // (140, 32) + { 0, { 0, 0, 0}}, // (141, 32) + { 0, { 0, 0, 0}}, // (142, 32) + { 0, { 0, 0, 0}}, // (143, 32) + { 0, { 0, 0, 0}}, // (144, 32) + { 0, { 0, 0, 0}}, // (145, 32) + { 0, { 0, 0, 0}}, // (146, 32) + { 0, { 0, 0, 0}}, // (147, 32) + { 0, { 0, 0, 0}}, // (148, 32) + { 0, { 0, 0, 0}}, // (149, 32) + { 0, { 0, 0, 0}}, // (150, 32) + { 0, { 0, 0, 0}}, // (151, 32) + { 0, { 0, 0, 0}}, // (152, 32) + { 0, { 0, 0, 0}}, // (153, 32) + { 0, { 0, 0, 0}}, // (154, 32) + { 0, { 0, 0, 0}}, // (155, 32) + { 53, { 0, 0, 0}}, // (156, 32) + {128, { 0, 0, 0}}, // (157, 32) + {128, { 0, 0, 0}}, // (158, 32) + {128, { 0, 0, 0}}, // (159, 32) + {128, { 0, 0, 0}}, // (160, 32) + {128, { 0, 0, 0}}, // (161, 32) + {128, { 0, 0, 0}}, // (162, 32) + {128, { 0, 0, 0}}, // (163, 32) + {128, { 0, 0, 0}}, // (164, 32) + {128, { 0, 0, 0}}, // (165, 32) + {128, { 0, 0, 0}}, // (166, 32) + {128, { 0, 0, 0}}, // (167, 32) + {128, { 0, 0, 0}}, // (168, 32) + {128, { 0, 0, 0}}, // (169, 32) + {128, { 0, 0, 0}}, // (170, 32) + {128, { 0, 0, 0}}, // (171, 32) + {128, { 0, 0, 0}}, // (172, 32) + {128, { 0, 0, 0}}, // (173, 32) + {128, { 0, 0, 0}}, // (174, 32) + {128, { 0, 0, 0}}, // (175, 32) + {128, { 0, 0, 0}}, // (176, 32) + {128, { 0, 0, 0}}, // (177, 32) + {128, { 0, 0, 0}}, // (178, 32) + {128, { 0, 0, 0}}, // (179, 32) + {128, { 0, 0, 0}}, // ( 0, 33) + {128, { 0, 0, 0}}, // ( 1, 33) + {128, { 0, 0, 0}}, // ( 2, 33) + {128, { 0, 0, 0}}, // ( 3, 33) + {128, { 0, 0, 0}}, // ( 4, 33) + {128, { 0, 0, 0}}, // ( 5, 33) + {128, { 0, 0, 0}}, // ( 6, 33) + {128, { 0, 0, 0}}, // ( 7, 33) + {128, { 0, 0, 0}}, // ( 8, 33) + {128, { 0, 0, 0}}, // ( 9, 33) + {128, { 0, 0, 0}}, // ( 10, 33) + {128, { 0, 0, 0}}, // ( 11, 33) + {128, { 0, 0, 0}}, // ( 12, 33) + {128, { 0, 0, 0}}, // ( 13, 33) + {128, { 0, 0, 0}}, // ( 14, 33) + {128, { 0, 0, 0}}, // ( 15, 33) + {128, { 0, 0, 0}}, // ( 16, 33) + {128, { 0, 0, 0}}, // ( 17, 33) + {128, { 0, 0, 0}}, // ( 18, 33) + {128, { 0, 0, 0}}, // ( 19, 33) + {128, { 0, 0, 0}}, // ( 20, 33) + {128, { 0, 0, 0}}, // ( 21, 33) + { 68, { 0, 0, 0}}, // ( 22, 33) + { 0, { 0, 0, 0}}, // ( 23, 33) + { 0, { 0, 0, 0}}, // ( 24, 33) + { 0, { 0, 0, 0}}, // ( 25, 33) + { 0, { 0, 0, 0}}, // ( 26, 33) + { 0, { 0, 0, 0}}, // ( 27, 33) + { 0, { 0, 0, 0}}, // ( 28, 33) + { 0, { 0, 0, 0}}, // ( 29, 33) + { 0, { 0, 0, 0}}, // ( 30, 33) + { 0, { 0, 0, 0}}, // ( 31, 33) + { 0, { 0, 0, 0}}, // ( 32, 33) + { 0, { 0, 0, 0}}, // ( 33, 33) + { 0, { 0, 0, 0}}, // ( 34, 33) + { 0, { 0, 0, 0}}, // ( 35, 33) + { 0, { 0, 0, 0}}, // ( 36, 33) + { 0, { 0, 0, 0}}, // ( 37, 33) + { 0, { 0, 0, 0}}, // ( 38, 33) + { 0, { 0, 0, 0}}, // ( 39, 33) + { 0, { 0, 0, 0}}, // ( 40, 33) + { 0, { 0, 0, 0}}, // ( 41, 33) + { 0, { 0, 0, 0}}, // ( 42, 33) + { 0, { 0, 0, 0}}, // ( 43, 33) + { 0, { 0, 0, 0}}, // ( 44, 33) + { 0, { 0, 0, 0}}, // ( 45, 33) + { 0, { 0, 0, 0}}, // ( 46, 33) + { 0, { 0, 0, 0}}, // ( 47, 33) + { 0, { 0, 0, 0}}, // ( 48, 33) + { 0, { 0, 0, 0}}, // ( 49, 33) + { 0, { 0, 0, 0}}, // ( 50, 33) + { 0, { 0, 0, 0}}, // ( 51, 33) + { 0, { 0, 0, 0}}, // ( 52, 33) + { 0, { 0, 0, 0}}, // ( 53, 33) + { 0, { 0, 0, 0}}, // ( 54, 33) + { 0, { 0, 0, 0}}, // ( 55, 33) + { 0, { 0, 0, 0}}, // ( 56, 33) + { 0, { 0, 0, 0}}, // ( 57, 33) + { 0, { 0, 0, 0}}, // ( 58, 33) + { 0, { 0, 0, 0}}, // ( 59, 33) + { 0, { 0, 0, 0}}, // ( 60, 33) + { 0, { 0, 0, 0}}, // ( 61, 33) + { 0, { 0, 0, 0}}, // ( 62, 33) + { 0, { 0, 0, 0}}, // ( 63, 33) + { 0, { 0, 0, 0}}, // ( 64, 33) + { 0, { 0, 0, 0}}, // ( 65, 33) + { 0, { 0, 0, 0}}, // ( 66, 33) + { 0, { 0, 0, 0}}, // ( 67, 33) + { 0, { 0, 0, 0}}, // ( 68, 33) + { 0, { 0, 0, 0}}, // ( 69, 33) + { 0, { 0, 0, 0}}, // ( 70, 33) + { 0, { 0, 0, 0}}, // ( 71, 33) + { 0, { 0, 0, 0}}, // ( 72, 33) + { 0, { 0, 0, 0}}, // ( 73, 33) + { 0, { 0, 0, 0}}, // ( 74, 33) + { 0, { 0, 0, 0}}, // ( 75, 33) + { 0, { 0, 0, 0}}, // ( 76, 33) + { 0, { 0, 0, 0}}, // ( 77, 33) + { 0, { 0, 0, 0}}, // ( 78, 33) + { 0, { 0, 0, 0}}, // ( 79, 33) + { 0, { 0, 0, 0}}, // ( 80, 33) + { 0, { 0, 0, 0}}, // ( 81, 33) + { 0, { 0, 0, 0}}, // ( 82, 33) + { 0, { 0, 0, 0}}, // ( 83, 33) + { 0, { 0, 0, 0}}, // ( 84, 33) + { 0, { 0, 0, 0}}, // ( 85, 33) + { 0, { 0, 0, 0}}, // ( 86, 33) + { 0, { 0, 0, 0}}, // ( 87, 33) + { 0, { 0, 0, 0}}, // ( 88, 33) + { 0, { 0, 0, 0}}, // ( 89, 33) + { 0, { 0, 0, 0}}, // ( 90, 33) + { 0, { 0, 0, 0}}, // ( 91, 33) + { 0, { 0, 0, 0}}, // ( 92, 33) + { 0, { 0, 0, 0}}, // ( 93, 33) + { 0, { 0, 0, 0}}, // ( 94, 33) + { 0, { 0, 0, 0}}, // ( 95, 33) + { 0, { 0, 0, 0}}, // ( 96, 33) + { 0, { 0, 0, 0}}, // ( 97, 33) + { 0, { 0, 0, 0}}, // ( 98, 33) + { 0, { 0, 0, 0}}, // ( 99, 33) + { 0, { 0, 0, 0}}, // (100, 33) + { 0, { 0, 0, 0}}, // (101, 33) + { 0, { 0, 0, 0}}, // (102, 33) + { 0, { 0, 0, 0}}, // (103, 33) + { 0, { 0, 0, 0}}, // (104, 33) + { 0, { 0, 0, 0}}, // (105, 33) + { 0, { 0, 0, 0}}, // (106, 33) + { 0, { 0, 0, 0}}, // (107, 33) + { 0, { 0, 0, 0}}, // (108, 33) + { 0, { 0, 0, 0}}, // (109, 33) + { 0, { 0, 0, 0}}, // (110, 33) + { 0, { 0, 0, 0}}, // (111, 33) + { 0, { 0, 0, 0}}, // (112, 33) + { 0, { 0, 0, 0}}, // (113, 33) + { 0, { 0, 0, 0}}, // (114, 33) + { 0, { 0, 0, 0}}, // (115, 33) + { 0, { 0, 0, 0}}, // (116, 33) + { 0, { 0, 0, 0}}, // (117, 33) + { 0, { 0, 0, 0}}, // (118, 33) + { 0, { 0, 0, 0}}, // (119, 33) + { 0, { 0, 0, 0}}, // (120, 33) + { 0, { 0, 0, 0}}, // (121, 33) + { 0, { 0, 0, 0}}, // (122, 33) + { 0, { 0, 0, 0}}, // (123, 33) + { 0, { 0, 0, 0}}, // (124, 33) + { 0, { 0, 0, 0}}, // (125, 33) + { 0, { 0, 0, 0}}, // (126, 33) + { 0, { 0, 0, 0}}, // (127, 33) + { 0, { 0, 0, 0}}, // (128, 33) + { 0, { 0, 0, 0}}, // (129, 33) + { 0, { 0, 0, 0}}, // (130, 33) + { 0, { 0, 0, 0}}, // (131, 33) + { 0, { 0, 0, 0}}, // (132, 33) + { 0, { 0, 0, 0}}, // (133, 33) + { 0, { 0, 0, 0}}, // (134, 33) + { 0, { 0, 0, 0}}, // (135, 33) + { 0, { 0, 0, 0}}, // (136, 33) + { 0, { 0, 0, 0}}, // (137, 33) + { 0, { 0, 0, 0}}, // (138, 33) + { 0, { 0, 0, 0}}, // (139, 33) + { 0, { 0, 0, 0}}, // (140, 33) + { 0, { 0, 0, 0}}, // (141, 33) + { 0, { 0, 0, 0}}, // (142, 33) + { 0, { 0, 0, 0}}, // (143, 33) + { 0, { 0, 0, 0}}, // (144, 33) + { 0, { 0, 0, 0}}, // (145, 33) + { 0, { 0, 0, 0}}, // (146, 33) + { 0, { 0, 0, 0}}, // (147, 33) + { 0, { 0, 0, 0}}, // (148, 33) + { 0, { 0, 0, 0}}, // (149, 33) + { 0, { 0, 0, 0}}, // (150, 33) + { 0, { 0, 0, 0}}, // (151, 33) + { 0, { 0, 0, 0}}, // (152, 33) + { 0, { 0, 0, 0}}, // (153, 33) + { 0, { 0, 0, 0}}, // (154, 33) + { 0, { 0, 0, 0}}, // (155, 33) + { 0, { 0, 0, 0}}, // (156, 33) + { 68, { 0, 0, 0}}, // (157, 33) + {128, { 0, 0, 0}}, // (158, 33) + {128, { 0, 0, 0}}, // (159, 33) + {128, { 0, 0, 0}}, // (160, 33) + {128, { 0, 0, 0}}, // (161, 33) + {128, { 0, 0, 0}}, // (162, 33) + {128, { 0, 0, 0}}, // (163, 33) + {128, { 0, 0, 0}}, // (164, 33) + {128, { 0, 0, 0}}, // (165, 33) + {128, { 0, 0, 0}}, // (166, 33) + {128, { 0, 0, 0}}, // (167, 33) + {128, { 0, 0, 0}}, // (168, 33) + {128, { 0, 0, 0}}, // (169, 33) + {128, { 0, 0, 0}}, // (170, 33) + {128, { 0, 0, 0}}, // (171, 33) + {128, { 0, 0, 0}}, // (172, 33) + {128, { 0, 0, 0}}, // (173, 33) + {128, { 0, 0, 0}}, // (174, 33) + {128, { 0, 0, 0}}, // (175, 33) + {128, { 0, 0, 0}}, // (176, 33) + {128, { 0, 0, 0}}, // (177, 33) + {128, { 0, 0, 0}}, // (178, 33) + {128, { 0, 0, 0}}, // (179, 33) + {128, { 0, 0, 0}}, // ( 0, 34) + {128, { 0, 0, 0}}, // ( 1, 34) + {128, { 0, 0, 0}}, // ( 2, 34) + {128, { 0, 0, 0}}, // ( 3, 34) + {128, { 0, 0, 0}}, // ( 4, 34) + {128, { 0, 0, 0}}, // ( 5, 34) + {128, { 0, 0, 0}}, // ( 6, 34) + {128, { 0, 0, 0}}, // ( 7, 34) + {128, { 0, 0, 0}}, // ( 8, 34) + {128, { 0, 0, 0}}, // ( 9, 34) + {128, { 0, 0, 0}}, // ( 10, 34) + {128, { 0, 0, 0}}, // ( 11, 34) + {128, { 0, 0, 0}}, // ( 12, 34) + {128, { 0, 0, 0}}, // ( 13, 34) + {128, { 0, 0, 0}}, // ( 14, 34) + {128, { 0, 0, 0}}, // ( 15, 34) + {128, { 0, 0, 0}}, // ( 16, 34) + {128, { 0, 0, 0}}, // ( 17, 34) + {128, { 0, 0, 0}}, // ( 18, 34) + {128, { 0, 0, 0}}, // ( 19, 34) + {128, { 0, 0, 0}}, // ( 20, 34) + { 92, { 0, 0, 0}}, // ( 21, 34) + { 2, { 0, 0, 0}}, // ( 22, 34) + { 0, { 0, 0, 0}}, // ( 23, 34) + { 0, { 0, 0, 0}}, // ( 24, 34) + { 0, { 0, 0, 0}}, // ( 25, 34) + { 0, { 0, 0, 0}}, // ( 26, 34) + { 0, { 0, 0, 0}}, // ( 27, 34) + { 0, { 0, 0, 0}}, // ( 28, 34) + { 0, { 0, 0, 0}}, // ( 29, 34) + { 0, { 0, 0, 0}}, // ( 30, 34) + { 0, { 0, 0, 0}}, // ( 31, 34) + { 0, { 0, 0, 0}}, // ( 32, 34) + { 0, { 0, 0, 0}}, // ( 33, 34) + { 0, { 0, 0, 0}}, // ( 34, 34) + { 0, { 0, 0, 0}}, // ( 35, 34) + { 0, { 0, 0, 0}}, // ( 36, 34) + { 0, { 0, 0, 0}}, // ( 37, 34) + { 0, { 0, 0, 0}}, // ( 38, 34) + { 0, { 0, 0, 0}}, // ( 39, 34) + { 0, { 0, 0, 0}}, // ( 40, 34) + { 0, { 0, 0, 0}}, // ( 41, 34) + { 0, { 0, 0, 0}}, // ( 42, 34) + { 0, { 0, 0, 0}}, // ( 43, 34) + { 0, { 0, 0, 0}}, // ( 44, 34) + { 0, { 0, 0, 0}}, // ( 45, 34) + { 0, { 0, 0, 0}}, // ( 46, 34) + { 0, { 0, 0, 0}}, // ( 47, 34) + { 0, { 0, 0, 0}}, // ( 48, 34) + { 0, { 0, 0, 0}}, // ( 49, 34) + { 0, { 0, 0, 0}}, // ( 50, 34) + { 0, { 0, 0, 0}}, // ( 51, 34) + { 0, { 0, 0, 0}}, // ( 52, 34) + { 0, { 0, 0, 0}}, // ( 53, 34) + { 0, { 0, 0, 0}}, // ( 54, 34) + { 0, { 0, 0, 0}}, // ( 55, 34) + { 0, { 0, 0, 0}}, // ( 56, 34) + { 0, { 0, 0, 0}}, // ( 57, 34) + { 0, { 0, 0, 0}}, // ( 58, 34) + { 0, { 0, 0, 0}}, // ( 59, 34) + { 0, { 0, 0, 0}}, // ( 60, 34) + { 0, { 0, 0, 0}}, // ( 61, 34) + { 0, { 0, 0, 0}}, // ( 62, 34) + { 0, { 0, 0, 0}}, // ( 63, 34) + { 0, { 0, 0, 0}}, // ( 64, 34) + { 0, { 0, 0, 0}}, // ( 65, 34) + { 0, { 0, 0, 0}}, // ( 66, 34) + { 0, { 0, 0, 0}}, // ( 67, 34) + { 0, { 0, 0, 0}}, // ( 68, 34) + { 0, { 0, 0, 0}}, // ( 69, 34) + { 0, { 0, 0, 0}}, // ( 70, 34) + { 0, { 0, 0, 0}}, // ( 71, 34) + { 0, { 0, 0, 0}}, // ( 72, 34) + { 0, { 0, 0, 0}}, // ( 73, 34) + { 0, { 0, 0, 0}}, // ( 74, 34) + { 0, { 0, 0, 0}}, // ( 75, 34) + { 0, { 0, 0, 0}}, // ( 76, 34) + { 0, { 0, 0, 0}}, // ( 77, 34) + { 0, { 0, 0, 0}}, // ( 78, 34) + { 0, { 0, 0, 0}}, // ( 79, 34) + { 0, { 0, 0, 0}}, // ( 80, 34) + { 0, { 0, 0, 0}}, // ( 81, 34) + { 0, { 0, 0, 0}}, // ( 82, 34) + { 0, { 0, 0, 0}}, // ( 83, 34) + { 0, { 0, 0, 0}}, // ( 84, 34) + { 0, { 0, 0, 0}}, // ( 85, 34) + { 0, { 0, 0, 0}}, // ( 86, 34) + { 0, { 0, 0, 0}}, // ( 87, 34) + { 0, { 0, 0, 0}}, // ( 88, 34) + { 0, { 0, 0, 0}}, // ( 89, 34) + { 0, { 0, 0, 0}}, // ( 90, 34) + { 0, { 0, 0, 0}}, // ( 91, 34) + { 0, { 0, 0, 0}}, // ( 92, 34) + { 0, { 0, 0, 0}}, // ( 93, 34) + { 0, { 0, 0, 0}}, // ( 94, 34) + { 0, { 0, 0, 0}}, // ( 95, 34) + { 0, { 0, 0, 0}}, // ( 96, 34) + { 0, { 0, 0, 0}}, // ( 97, 34) + { 0, { 0, 0, 0}}, // ( 98, 34) + { 0, { 0, 0, 0}}, // ( 99, 34) + { 0, { 0, 0, 0}}, // (100, 34) + { 0, { 0, 0, 0}}, // (101, 34) + { 0, { 0, 0, 0}}, // (102, 34) + { 0, { 0, 0, 0}}, // (103, 34) + { 0, { 0, 0, 0}}, // (104, 34) + { 0, { 0, 0, 0}}, // (105, 34) + { 0, { 0, 0, 0}}, // (106, 34) + { 0, { 0, 0, 0}}, // (107, 34) + { 0, { 0, 0, 0}}, // (108, 34) + { 0, { 0, 0, 0}}, // (109, 34) + { 0, { 0, 0, 0}}, // (110, 34) + { 0, { 0, 0, 0}}, // (111, 34) + { 0, { 0, 0, 0}}, // (112, 34) + { 0, { 0, 0, 0}}, // (113, 34) + { 0, { 0, 0, 0}}, // (114, 34) + { 0, { 0, 0, 0}}, // (115, 34) + { 0, { 0, 0, 0}}, // (116, 34) + { 0, { 0, 0, 0}}, // (117, 34) + { 0, { 0, 0, 0}}, // (118, 34) + { 0, { 0, 0, 0}}, // (119, 34) + { 0, { 0, 0, 0}}, // (120, 34) + { 0, { 0, 0, 0}}, // (121, 34) + { 0, { 0, 0, 0}}, // (122, 34) + { 0, { 0, 0, 0}}, // (123, 34) + { 0, { 0, 0, 0}}, // (124, 34) + { 0, { 0, 0, 0}}, // (125, 34) + { 0, { 0, 0, 0}}, // (126, 34) + { 0, { 0, 0, 0}}, // (127, 34) + { 0, { 0, 0, 0}}, // (128, 34) + { 0, { 0, 0, 0}}, // (129, 34) + { 0, { 0, 0, 0}}, // (130, 34) + { 0, { 0, 0, 0}}, // (131, 34) + { 0, { 0, 0, 0}}, // (132, 34) + { 0, { 0, 0, 0}}, // (133, 34) + { 0, { 0, 0, 0}}, // (134, 34) + { 0, { 0, 0, 0}}, // (135, 34) + { 0, { 0, 0, 0}}, // (136, 34) + { 0, { 0, 0, 0}}, // (137, 34) + { 0, { 0, 0, 0}}, // (138, 34) + { 0, { 0, 0, 0}}, // (139, 34) + { 0, { 0, 0, 0}}, // (140, 34) + { 0, { 0, 0, 0}}, // (141, 34) + { 0, { 0, 0, 0}}, // (142, 34) + { 0, { 0, 0, 0}}, // (143, 34) + { 0, { 0, 0, 0}}, // (144, 34) + { 0, { 0, 0, 0}}, // (145, 34) + { 0, { 0, 0, 0}}, // (146, 34) + { 0, { 0, 0, 0}}, // (147, 34) + { 0, { 0, 0, 0}}, // (148, 34) + { 0, { 0, 0, 0}}, // (149, 34) + { 0, { 0, 0, 0}}, // (150, 34) + { 0, { 0, 0, 0}}, // (151, 34) + { 0, { 0, 0, 0}}, // (152, 34) + { 0, { 0, 0, 0}}, // (153, 34) + { 0, { 0, 0, 0}}, // (154, 34) + { 0, { 0, 0, 0}}, // (155, 34) + { 0, { 0, 0, 0}}, // (156, 34) + { 2, { 0, 0, 0}}, // (157, 34) + { 92, { 0, 0, 0}}, // (158, 34) + {128, { 0, 0, 0}}, // (159, 34) + {128, { 0, 0, 0}}, // (160, 34) + {128, { 0, 0, 0}}, // (161, 34) + {128, { 0, 0, 0}}, // (162, 34) + {128, { 0, 0, 0}}, // (163, 34) + {128, { 0, 0, 0}}, // (164, 34) + {128, { 0, 0, 0}}, // (165, 34) + {128, { 0, 0, 0}}, // (166, 34) + {128, { 0, 0, 0}}, // (167, 34) + {128, { 0, 0, 0}}, // (168, 34) + {128, { 0, 0, 0}}, // (169, 34) + {128, { 0, 0, 0}}, // (170, 34) + {128, { 0, 0, 0}}, // (171, 34) + {128, { 0, 0, 0}}, // (172, 34) + {128, { 0, 0, 0}}, // (173, 34) + {128, { 0, 0, 0}}, // (174, 34) + {128, { 0, 0, 0}}, // (175, 34) + {128, { 0, 0, 0}}, // (176, 34) + {128, { 0, 0, 0}}, // (177, 34) + {128, { 0, 0, 0}}, // (178, 34) + {128, { 0, 0, 0}}, // (179, 34) + {128, { 0, 0, 0}}, // ( 0, 35) + {128, { 0, 0, 0}}, // ( 1, 35) + {128, { 0, 0, 0}}, // ( 2, 35) + {128, { 0, 0, 0}}, // ( 3, 35) + {128, { 0, 0, 0}}, // ( 4, 35) + {128, { 0, 0, 0}}, // ( 5, 35) + {128, { 0, 0, 0}}, // ( 6, 35) + {128, { 0, 0, 0}}, // ( 7, 35) + {128, { 0, 0, 0}}, // ( 8, 35) + {128, { 0, 0, 0}}, // ( 9, 35) + {128, { 0, 0, 0}}, // ( 10, 35) + {128, { 0, 0, 0}}, // ( 11, 35) + {128, { 0, 0, 0}}, // ( 12, 35) + {128, { 0, 0, 0}}, // ( 13, 35) + {128, { 0, 0, 0}}, // ( 14, 35) + {128, { 0, 0, 0}}, // ( 15, 35) + {128, { 0, 0, 0}}, // ( 16, 35) + {128, { 0, 0, 0}}, // ( 17, 35) + {128, { 0, 0, 0}}, // ( 18, 35) + {128, { 0, 0, 0}}, // ( 19, 35) + {111, { 0, 0, 0}}, // ( 20, 35) + { 9, { 0, 0, 0}}, // ( 21, 35) + { 0, { 0, 0, 0}}, // ( 22, 35) + { 0, { 0, 0, 0}}, // ( 23, 35) + { 0, { 0, 0, 0}}, // ( 24, 35) + { 0, { 0, 0, 0}}, // ( 25, 35) + { 0, { 0, 0, 0}}, // ( 26, 35) + { 0, { 0, 0, 0}}, // ( 27, 35) + { 0, { 0, 0, 0}}, // ( 28, 35) + { 0, { 0, 0, 0}}, // ( 29, 35) + { 0, { 0, 0, 0}}, // ( 30, 35) + { 0, { 0, 0, 0}}, // ( 31, 35) + { 0, { 0, 0, 0}}, // ( 32, 35) + { 0, { 0, 0, 0}}, // ( 33, 35) + { 0, { 0, 0, 0}}, // ( 34, 35) + { 0, { 0, 0, 0}}, // ( 35, 35) + { 0, { 0, 0, 0}}, // ( 36, 35) + { 0, { 0, 0, 0}}, // ( 37, 35) + { 0, { 0, 0, 0}}, // ( 38, 35) + { 0, { 0, 0, 0}}, // ( 39, 35) + { 0, { 0, 0, 0}}, // ( 40, 35) + { 0, { 0, 0, 0}}, // ( 41, 35) + { 0, { 0, 0, 0}}, // ( 42, 35) + { 0, { 0, 0, 0}}, // ( 43, 35) + { 0, { 0, 0, 0}}, // ( 44, 35) + { 0, { 0, 0, 0}}, // ( 45, 35) + { 0, { 0, 0, 0}}, // ( 46, 35) + { 0, { 0, 0, 0}}, // ( 47, 35) + { 0, { 0, 0, 0}}, // ( 48, 35) + { 0, { 0, 0, 0}}, // ( 49, 35) + { 0, { 0, 0, 0}}, // ( 50, 35) + { 0, { 0, 0, 0}}, // ( 51, 35) + { 0, { 0, 0, 0}}, // ( 52, 35) + { 0, { 0, 0, 0}}, // ( 53, 35) + { 0, { 0, 0, 0}}, // ( 54, 35) + { 0, { 0, 0, 0}}, // ( 55, 35) + { 0, { 0, 0, 0}}, // ( 56, 35) + { 0, { 0, 0, 0}}, // ( 57, 35) + { 0, { 0, 0, 0}}, // ( 58, 35) + { 0, { 0, 0, 0}}, // ( 59, 35) + { 0, { 0, 0, 0}}, // ( 60, 35) + { 0, { 0, 0, 0}}, // ( 61, 35) + { 0, { 0, 0, 0}}, // ( 62, 35) + { 0, { 0, 0, 0}}, // ( 63, 35) + { 0, { 0, 0, 0}}, // ( 64, 35) + { 0, { 0, 0, 0}}, // ( 65, 35) + { 0, { 0, 0, 0}}, // ( 66, 35) + { 0, { 0, 0, 0}}, // ( 67, 35) + { 0, { 0, 0, 0}}, // ( 68, 35) + { 0, { 0, 0, 0}}, // ( 69, 35) + { 0, { 0, 0, 0}}, // ( 70, 35) + { 0, { 0, 0, 0}}, // ( 71, 35) + { 0, { 0, 0, 0}}, // ( 72, 35) + { 0, { 0, 0, 0}}, // ( 73, 35) + { 0, { 0, 0, 0}}, // ( 74, 35) + { 0, { 0, 0, 0}}, // ( 75, 35) + { 0, { 0, 0, 0}}, // ( 76, 35) + { 0, { 0, 0, 0}}, // ( 77, 35) + { 0, { 0, 0, 0}}, // ( 78, 35) + { 0, { 0, 0, 0}}, // ( 79, 35) + { 0, { 0, 0, 0}}, // ( 80, 35) + { 0, { 0, 0, 0}}, // ( 81, 35) + { 0, { 0, 0, 0}}, // ( 82, 35) + { 0, { 0, 0, 0}}, // ( 83, 35) + { 0, { 0, 0, 0}}, // ( 84, 35) + { 0, { 0, 0, 0}}, // ( 85, 35) + { 0, { 0, 0, 0}}, // ( 86, 35) + { 0, { 0, 0, 0}}, // ( 87, 35) + { 0, { 0, 0, 0}}, // ( 88, 35) + { 0, { 0, 0, 0}}, // ( 89, 35) + { 0, { 0, 0, 0}}, // ( 90, 35) + { 0, { 0, 0, 0}}, // ( 91, 35) + { 0, { 0, 0, 0}}, // ( 92, 35) + { 0, { 0, 0, 0}}, // ( 93, 35) + { 0, { 0, 0, 0}}, // ( 94, 35) + { 0, { 0, 0, 0}}, // ( 95, 35) + { 0, { 0, 0, 0}}, // ( 96, 35) + { 0, { 0, 0, 0}}, // ( 97, 35) + { 0, { 0, 0, 0}}, // ( 98, 35) + { 0, { 0, 0, 0}}, // ( 99, 35) + { 0, { 0, 0, 0}}, // (100, 35) + { 0, { 0, 0, 0}}, // (101, 35) + { 0, { 0, 0, 0}}, // (102, 35) + { 0, { 0, 0, 0}}, // (103, 35) + { 0, { 0, 0, 0}}, // (104, 35) + { 0, { 0, 0, 0}}, // (105, 35) + { 0, { 0, 0, 0}}, // (106, 35) + { 0, { 0, 0, 0}}, // (107, 35) + { 0, { 0, 0, 0}}, // (108, 35) + { 0, { 0, 0, 0}}, // (109, 35) + { 0, { 0, 0, 0}}, // (110, 35) + { 0, { 0, 0, 0}}, // (111, 35) + { 0, { 0, 0, 0}}, // (112, 35) + { 0, { 0, 0, 0}}, // (113, 35) + { 0, { 0, 0, 0}}, // (114, 35) + { 0, { 0, 0, 0}}, // (115, 35) + { 0, { 0, 0, 0}}, // (116, 35) + { 0, { 0, 0, 0}}, // (117, 35) + { 0, { 0, 0, 0}}, // (118, 35) + { 0, { 0, 0, 0}}, // (119, 35) + { 0, { 0, 0, 0}}, // (120, 35) + { 0, { 0, 0, 0}}, // (121, 35) + { 0, { 0, 0, 0}}, // (122, 35) + { 0, { 0, 0, 0}}, // (123, 35) + { 0, { 0, 0, 0}}, // (124, 35) + { 0, { 0, 0, 0}}, // (125, 35) + { 0, { 0, 0, 0}}, // (126, 35) + { 0, { 0, 0, 0}}, // (127, 35) + { 0, { 0, 0, 0}}, // (128, 35) + { 0, { 0, 0, 0}}, // (129, 35) + { 0, { 0, 0, 0}}, // (130, 35) + { 0, { 0, 0, 0}}, // (131, 35) + { 0, { 0, 0, 0}}, // (132, 35) + { 0, { 0, 0, 0}}, // (133, 35) + { 0, { 0, 0, 0}}, // (134, 35) + { 0, { 0, 0, 0}}, // (135, 35) + { 0, { 0, 0, 0}}, // (136, 35) + { 0, { 0, 0, 0}}, // (137, 35) + { 0, { 0, 0, 0}}, // (138, 35) + { 0, { 0, 0, 0}}, // (139, 35) + { 0, { 0, 0, 0}}, // (140, 35) + { 0, { 0, 0, 0}}, // (141, 35) + { 0, { 0, 0, 0}}, // (142, 35) + { 0, { 0, 0, 0}}, // (143, 35) + { 0, { 0, 0, 0}}, // (144, 35) + { 0, { 0, 0, 0}}, // (145, 35) + { 0, { 0, 0, 0}}, // (146, 35) + { 0, { 0, 0, 0}}, // (147, 35) + { 0, { 0, 0, 0}}, // (148, 35) + { 0, { 0, 0, 0}}, // (149, 35) + { 0, { 0, 0, 0}}, // (150, 35) + { 0, { 0, 0, 0}}, // (151, 35) + { 0, { 0, 0, 0}}, // (152, 35) + { 0, { 0, 0, 0}}, // (153, 35) + { 0, { 0, 0, 0}}, // (154, 35) + { 0, { 0, 0, 0}}, // (155, 35) + { 0, { 0, 0, 0}}, // (156, 35) + { 0, { 0, 0, 0}}, // (157, 35) + { 9, { 0, 0, 0}}, // (158, 35) + {111, { 0, 0, 0}}, // (159, 35) + {128, { 0, 0, 0}}, // (160, 35) + {128, { 0, 0, 0}}, // (161, 35) + {128, { 0, 0, 0}}, // (162, 35) + {128, { 0, 0, 0}}, // (163, 35) + {128, { 0, 0, 0}}, // (164, 35) + {128, { 0, 0, 0}}, // (165, 35) + {128, { 0, 0, 0}}, // (166, 35) + {128, { 0, 0, 0}}, // (167, 35) + {128, { 0, 0, 0}}, // (168, 35) + {128, { 0, 0, 0}}, // (169, 35) + {128, { 0, 0, 0}}, // (170, 35) + {128, { 0, 0, 0}}, // (171, 35) + {128, { 0, 0, 0}}, // (172, 35) + {128, { 0, 0, 0}}, // (173, 35) + {128, { 0, 0, 0}}, // (174, 35) + {128, { 0, 0, 0}}, // (175, 35) + {128, { 0, 0, 0}}, // (176, 35) + {128, { 0, 0, 0}}, // (177, 35) + {128, { 0, 0, 0}}, // (178, 35) + {128, { 0, 0, 0}}, // (179, 35) + {128, { 0, 0, 0}}, // ( 0, 36) + {128, { 0, 0, 0}}, // ( 1, 36) + {128, { 0, 0, 0}}, // ( 2, 36) + {128, { 0, 0, 0}}, // ( 3, 36) + {128, { 0, 0, 0}}, // ( 4, 36) + {128, { 0, 0, 0}}, // ( 5, 36) + {128, { 0, 0, 0}}, // ( 6, 36) + {128, { 0, 0, 0}}, // ( 7, 36) + {128, { 0, 0, 0}}, // ( 8, 36) + {128, { 0, 0, 0}}, // ( 9, 36) + {128, { 0, 0, 0}}, // ( 10, 36) + {128, { 0, 0, 0}}, // ( 11, 36) + {128, { 0, 0, 0}}, // ( 12, 36) + {128, { 0, 0, 0}}, // ( 13, 36) + {128, { 0, 0, 0}}, // ( 14, 36) + {128, { 0, 0, 0}}, // ( 15, 36) + {128, { 0, 0, 0}}, // ( 16, 36) + {128, { 0, 0, 0}}, // ( 17, 36) + {128, { 0, 0, 0}}, // ( 18, 36) + {123, { 0, 0, 0}}, // ( 19, 36) + { 24, { 0, 0, 0}}, // ( 20, 36) + { 0, { 0, 0, 0}}, // ( 21, 36) + { 0, { 0, 0, 0}}, // ( 22, 36) + { 0, { 0, 0, 0}}, // ( 23, 36) + { 0, { 0, 0, 0}}, // ( 24, 36) + { 0, { 0, 0, 0}}, // ( 25, 36) + { 0, { 0, 0, 0}}, // ( 26, 36) + { 0, { 0, 0, 0}}, // ( 27, 36) + { 0, { 0, 0, 0}}, // ( 28, 36) + { 0, { 0, 0, 0}}, // ( 29, 36) + { 0, { 0, 0, 0}}, // ( 30, 36) + { 0, { 0, 0, 0}}, // ( 31, 36) + { 0, { 0, 0, 0}}, // ( 32, 36) + { 0, { 0, 0, 0}}, // ( 33, 36) + { 0, { 0, 0, 0}}, // ( 34, 36) + { 0, { 0, 0, 0}}, // ( 35, 36) + { 0, { 0, 0, 0}}, // ( 36, 36) + { 0, { 0, 0, 0}}, // ( 37, 36) + { 0, { 0, 0, 0}}, // ( 38, 36) + { 0, { 0, 0, 0}}, // ( 39, 36) + { 0, { 0, 0, 0}}, // ( 40, 36) + { 0, { 0, 0, 0}}, // ( 41, 36) + { 0, { 0, 0, 0}}, // ( 42, 36) + { 0, { 0, 0, 0}}, // ( 43, 36) + { 0, { 0, 0, 0}}, // ( 44, 36) + { 0, { 0, 0, 0}}, // ( 45, 36) + { 0, { 0, 0, 0}}, // ( 46, 36) + { 0, { 0, 0, 0}}, // ( 47, 36) + { 0, { 0, 0, 0}}, // ( 48, 36) + { 0, { 0, 0, 0}}, // ( 49, 36) + { 0, { 0, 0, 0}}, // ( 50, 36) + { 0, { 0, 0, 0}}, // ( 51, 36) + { 0, { 0, 0, 0}}, // ( 52, 36) + { 0, { 0, 0, 0}}, // ( 53, 36) + { 0, { 0, 0, 0}}, // ( 54, 36) + { 0, { 0, 0, 0}}, // ( 55, 36) + { 0, { 0, 0, 0}}, // ( 56, 36) + { 0, { 0, 0, 0}}, // ( 57, 36) + { 0, { 0, 0, 0}}, // ( 58, 36) + { 0, { 0, 0, 0}}, // ( 59, 36) + { 0, { 0, 0, 0}}, // ( 60, 36) + { 0, { 0, 0, 0}}, // ( 61, 36) + { 0, { 0, 0, 0}}, // ( 62, 36) + { 0, { 0, 0, 0}}, // ( 63, 36) + { 0, { 0, 0, 0}}, // ( 64, 36) + { 0, { 0, 0, 0}}, // ( 65, 36) + { 0, { 0, 0, 0}}, // ( 66, 36) + { 0, { 0, 0, 0}}, // ( 67, 36) + { 0, { 0, 0, 0}}, // ( 68, 36) + { 0, { 0, 0, 0}}, // ( 69, 36) + { 0, { 0, 0, 0}}, // ( 70, 36) + { 0, { 0, 0, 0}}, // ( 71, 36) + { 0, { 0, 0, 0}}, // ( 72, 36) + { 0, { 0, 0, 0}}, // ( 73, 36) + { 0, { 0, 0, 0}}, // ( 74, 36) + { 0, { 0, 0, 0}}, // ( 75, 36) + { 0, { 0, 0, 0}}, // ( 76, 36) + { 0, { 0, 0, 0}}, // ( 77, 36) + { 0, { 0, 0, 0}}, // ( 78, 36) + { 0, { 0, 0, 0}}, // ( 79, 36) + { 0, { 0, 0, 0}}, // ( 80, 36) + { 0, { 0, 0, 0}}, // ( 81, 36) + { 0, { 0, 0, 0}}, // ( 82, 36) + { 0, { 0, 0, 0}}, // ( 83, 36) + { 0, { 0, 0, 0}}, // ( 84, 36) + { 0, { 0, 0, 0}}, // ( 85, 36) + { 0, { 0, 0, 0}}, // ( 86, 36) + { 0, { 0, 0, 0}}, // ( 87, 36) + { 0, { 0, 0, 0}}, // ( 88, 36) + { 0, { 0, 0, 0}}, // ( 89, 36) + { 0, { 0, 0, 0}}, // ( 90, 36) + { 0, { 0, 0, 0}}, // ( 91, 36) + { 0, { 0, 0, 0}}, // ( 92, 36) + { 0, { 0, 0, 0}}, // ( 93, 36) + { 0, { 0, 0, 0}}, // ( 94, 36) + { 0, { 0, 0, 0}}, // ( 95, 36) + { 0, { 0, 0, 0}}, // ( 96, 36) + { 0, { 0, 0, 0}}, // ( 97, 36) + { 0, { 0, 0, 0}}, // ( 98, 36) + { 0, { 0, 0, 0}}, // ( 99, 36) + { 0, { 0, 0, 0}}, // (100, 36) + { 0, { 0, 0, 0}}, // (101, 36) + { 0, { 0, 0, 0}}, // (102, 36) + { 0, { 0, 0, 0}}, // (103, 36) + { 0, { 0, 0, 0}}, // (104, 36) + { 0, { 0, 0, 0}}, // (105, 36) + { 0, { 0, 0, 0}}, // (106, 36) + { 0, { 0, 0, 0}}, // (107, 36) + { 0, { 0, 0, 0}}, // (108, 36) + { 0, { 0, 0, 0}}, // (109, 36) + { 0, { 0, 0, 0}}, // (110, 36) + { 0, { 0, 0, 0}}, // (111, 36) + { 0, { 0, 0, 0}}, // (112, 36) + { 0, { 0, 0, 0}}, // (113, 36) + { 0, { 0, 0, 0}}, // (114, 36) + { 0, { 0, 0, 0}}, // (115, 36) + { 0, { 0, 0, 0}}, // (116, 36) + { 0, { 0, 0, 0}}, // (117, 36) + { 0, { 0, 0, 0}}, // (118, 36) + { 0, { 0, 0, 0}}, // (119, 36) + { 0, { 0, 0, 0}}, // (120, 36) + { 0, { 0, 0, 0}}, // (121, 36) + { 0, { 0, 0, 0}}, // (122, 36) + { 0, { 0, 0, 0}}, // (123, 36) + { 0, { 0, 0, 0}}, // (124, 36) + { 0, { 0, 0, 0}}, // (125, 36) + { 0, { 0, 0, 0}}, // (126, 36) + { 0, { 0, 0, 0}}, // (127, 36) + { 0, { 0, 0, 0}}, // (128, 36) + { 0, { 0, 0, 0}}, // (129, 36) + { 0, { 0, 0, 0}}, // (130, 36) + { 0, { 0, 0, 0}}, // (131, 36) + { 0, { 0, 0, 0}}, // (132, 36) + { 0, { 0, 0, 0}}, // (133, 36) + { 0, { 0, 0, 0}}, // (134, 36) + { 0, { 0, 0, 0}}, // (135, 36) + { 0, { 0, 0, 0}}, // (136, 36) + { 0, { 0, 0, 0}}, // (137, 36) + { 0, { 0, 0, 0}}, // (138, 36) + { 0, { 0, 0, 0}}, // (139, 36) + { 0, { 0, 0, 0}}, // (140, 36) + { 0, { 0, 0, 0}}, // (141, 36) + { 0, { 0, 0, 0}}, // (142, 36) + { 0, { 0, 0, 0}}, // (143, 36) + { 0, { 0, 0, 0}}, // (144, 36) + { 0, { 0, 0, 0}}, // (145, 36) + { 0, { 0, 0, 0}}, // (146, 36) + { 0, { 0, 0, 0}}, // (147, 36) + { 0, { 0, 0, 0}}, // (148, 36) + { 0, { 0, 0, 0}}, // (149, 36) + { 0, { 0, 0, 0}}, // (150, 36) + { 0, { 0, 0, 0}}, // (151, 36) + { 0, { 0, 0, 0}}, // (152, 36) + { 0, { 0, 0, 0}}, // (153, 36) + { 0, { 0, 0, 0}}, // (154, 36) + { 0, { 0, 0, 0}}, // (155, 36) + { 0, { 0, 0, 0}}, // (156, 36) + { 0, { 0, 0, 0}}, // (157, 36) + { 0, { 0, 0, 0}}, // (158, 36) + { 24, { 0, 0, 0}}, // (159, 36) + {123, { 0, 0, 0}}, // (160, 36) + {128, { 0, 0, 0}}, // (161, 36) + {128, { 0, 0, 0}}, // (162, 36) + {128, { 0, 0, 0}}, // (163, 36) + {128, { 0, 0, 0}}, // (164, 36) + {128, { 0, 0, 0}}, // (165, 36) + {128, { 0, 0, 0}}, // (166, 36) + {128, { 0, 0, 0}}, // (167, 36) + {128, { 0, 0, 0}}, // (168, 36) + {128, { 0, 0, 0}}, // (169, 36) + {128, { 0, 0, 0}}, // (170, 36) + {128, { 0, 0, 0}}, // (171, 36) + {128, { 0, 0, 0}}, // (172, 36) + {128, { 0, 0, 0}}, // (173, 36) + {128, { 0, 0, 0}}, // (174, 36) + {128, { 0, 0, 0}}, // (175, 36) + {128, { 0, 0, 0}}, // (176, 36) + {128, { 0, 0, 0}}, // (177, 36) + {128, { 0, 0, 0}}, // (178, 36) + {128, { 0, 0, 0}}, // (179, 36) + {128, { 0, 0, 0}}, // ( 0, 37) + {128, { 0, 0, 0}}, // ( 1, 37) + {128, { 0, 0, 0}}, // ( 2, 37) + {128, { 0, 0, 0}}, // ( 3, 37) + {128, { 0, 0, 0}}, // ( 4, 37) + {128, { 0, 0, 0}}, // ( 5, 37) + {128, { 0, 0, 0}}, // ( 6, 37) + {128, { 0, 0, 0}}, // ( 7, 37) + {128, { 0, 0, 0}}, // ( 8, 37) + {128, { 0, 0, 0}}, // ( 9, 37) + {128, { 0, 0, 0}}, // ( 10, 37) + {128, { 0, 0, 0}}, // ( 11, 37) + {128, { 0, 0, 0}}, // ( 12, 37) + {128, { 0, 0, 0}}, // ( 13, 37) + {128, { 0, 0, 0}}, // ( 14, 37) + {128, { 0, 0, 0}}, // ( 15, 37) + {128, { 0, 0, 0}}, // ( 16, 37) + {128, { 0, 0, 0}}, // ( 17, 37) + {128, { 0, 0, 0}}, // ( 18, 37) + { 49, { 0, 0, 0}}, // ( 19, 37) + { 0, { 0, 0, 0}}, // ( 20, 37) + { 0, { 0, 0, 0}}, // ( 21, 37) + { 0, { 0, 0, 0}}, // ( 22, 37) + { 0, { 0, 0, 0}}, // ( 23, 37) + { 0, { 0, 0, 0}}, // ( 24, 37) + { 0, { 0, 0, 0}}, // ( 25, 37) + { 0, { 0, 0, 0}}, // ( 26, 37) + { 0, { 0, 0, 0}}, // ( 27, 37) + { 0, { 0, 0, 0}}, // ( 28, 37) + { 0, { 0, 0, 0}}, // ( 29, 37) + { 0, { 0, 0, 0}}, // ( 30, 37) + { 0, { 0, 0, 0}}, // ( 31, 37) + { 0, { 0, 0, 0}}, // ( 32, 37) + { 0, { 0, 0, 0}}, // ( 33, 37) + { 0, { 0, 0, 0}}, // ( 34, 37) + { 0, { 0, 0, 0}}, // ( 35, 37) + { 0, { 0, 0, 0}}, // ( 36, 37) + { 0, { 0, 0, 0}}, // ( 37, 37) + { 0, { 0, 0, 0}}, // ( 38, 37) + { 0, { 0, 0, 0}}, // ( 39, 37) + { 0, { 0, 0, 0}}, // ( 40, 37) + { 0, { 0, 0, 0}}, // ( 41, 37) + { 0, { 0, 0, 0}}, // ( 42, 37) + { 0, { 0, 0, 0}}, // ( 43, 37) + { 0, { 0, 0, 0}}, // ( 44, 37) + { 0, { 0, 0, 0}}, // ( 45, 37) + { 0, { 0, 0, 0}}, // ( 46, 37) + { 0, { 0, 0, 0}}, // ( 47, 37) + { 0, { 0, 0, 0}}, // ( 48, 37) + { 0, { 0, 0, 0}}, // ( 49, 37) + { 0, { 0, 0, 0}}, // ( 50, 37) + { 0, { 0, 0, 0}}, // ( 51, 37) + { 0, { 0, 0, 0}}, // ( 52, 37) + { 0, { 0, 0, 0}}, // ( 53, 37) + { 0, { 0, 0, 0}}, // ( 54, 37) + { 0, { 0, 0, 0}}, // ( 55, 37) + { 0, { 0, 0, 0}}, // ( 56, 37) + { 0, { 0, 0, 0}}, // ( 57, 37) + { 0, { 0, 0, 0}}, // ( 58, 37) + { 0, { 0, 0, 0}}, // ( 59, 37) + { 0, { 0, 0, 0}}, // ( 60, 37) + { 0, { 0, 0, 0}}, // ( 61, 37) + { 0, { 0, 0, 0}}, // ( 62, 37) + { 0, { 0, 0, 0}}, // ( 63, 37) + { 0, { 0, 0, 0}}, // ( 64, 37) + { 0, { 0, 0, 0}}, // ( 65, 37) + { 0, { 0, 0, 0}}, // ( 66, 37) + { 0, { 0, 0, 0}}, // ( 67, 37) + { 0, { 0, 0, 0}}, // ( 68, 37) + { 0, { 0, 0, 0}}, // ( 69, 37) + { 0, { 0, 0, 0}}, // ( 70, 37) + { 0, { 0, 0, 0}}, // ( 71, 37) + { 0, { 0, 0, 0}}, // ( 72, 37) + { 0, { 0, 0, 0}}, // ( 73, 37) + { 0, { 0, 0, 0}}, // ( 74, 37) + { 0, { 0, 0, 0}}, // ( 75, 37) + { 0, { 0, 0, 0}}, // ( 76, 37) + { 0, { 0, 0, 0}}, // ( 77, 37) + { 0, { 0, 0, 0}}, // ( 78, 37) + { 0, { 0, 0, 0}}, // ( 79, 37) + { 0, { 0, 0, 0}}, // ( 80, 37) + { 0, { 0, 0, 0}}, // ( 81, 37) + { 0, { 0, 0, 0}}, // ( 82, 37) + { 0, { 0, 0, 0}}, // ( 83, 37) + { 0, { 0, 0, 0}}, // ( 84, 37) + { 0, { 0, 0, 0}}, // ( 85, 37) + { 0, { 0, 0, 0}}, // ( 86, 37) + { 0, { 0, 0, 0}}, // ( 87, 37) + { 0, { 0, 0, 0}}, // ( 88, 37) + { 0, { 0, 0, 0}}, // ( 89, 37) + { 0, { 0, 0, 0}}, // ( 90, 37) + { 0, { 0, 0, 0}}, // ( 91, 37) + { 0, { 0, 0, 0}}, // ( 92, 37) + { 0, { 0, 0, 0}}, // ( 93, 37) + { 0, { 0, 0, 0}}, // ( 94, 37) + { 0, { 0, 0, 0}}, // ( 95, 37) + { 0, { 0, 0, 0}}, // ( 96, 37) + { 0, { 0, 0, 0}}, // ( 97, 37) + { 0, { 0, 0, 0}}, // ( 98, 37) + { 0, { 0, 0, 0}}, // ( 99, 37) + { 0, { 0, 0, 0}}, // (100, 37) + { 0, { 0, 0, 0}}, // (101, 37) + { 0, { 0, 0, 0}}, // (102, 37) + { 0, { 0, 0, 0}}, // (103, 37) + { 0, { 0, 0, 0}}, // (104, 37) + { 0, { 0, 0, 0}}, // (105, 37) + { 0, { 0, 0, 0}}, // (106, 37) + { 0, { 0, 0, 0}}, // (107, 37) + { 0, { 0, 0, 0}}, // (108, 37) + { 0, { 0, 0, 0}}, // (109, 37) + { 0, { 0, 0, 0}}, // (110, 37) + { 0, { 0, 0, 0}}, // (111, 37) + { 0, { 0, 0, 0}}, // (112, 37) + { 0, { 0, 0, 0}}, // (113, 37) + { 0, { 0, 0, 0}}, // (114, 37) + { 0, { 0, 0, 0}}, // (115, 37) + { 0, { 0, 0, 0}}, // (116, 37) + { 0, { 0, 0, 0}}, // (117, 37) + { 0, { 0, 0, 0}}, // (118, 37) + { 0, { 0, 0, 0}}, // (119, 37) + { 0, { 0, 0, 0}}, // (120, 37) + { 0, { 0, 0, 0}}, // (121, 37) + { 0, { 0, 0, 0}}, // (122, 37) + { 0, { 0, 0, 0}}, // (123, 37) + { 0, { 0, 0, 0}}, // (124, 37) + { 0, { 0, 0, 0}}, // (125, 37) + { 0, { 0, 0, 0}}, // (126, 37) + { 0, { 0, 0, 0}}, // (127, 37) + { 0, { 0, 0, 0}}, // (128, 37) + { 0, { 0, 0, 0}}, // (129, 37) + { 0, { 0, 0, 0}}, // (130, 37) + { 0, { 0, 0, 0}}, // (131, 37) + { 0, { 0, 0, 0}}, // (132, 37) + { 0, { 0, 0, 0}}, // (133, 37) + { 0, { 0, 0, 0}}, // (134, 37) + { 0, { 0, 0, 0}}, // (135, 37) + { 0, { 0, 0, 0}}, // (136, 37) + { 0, { 0, 0, 0}}, // (137, 37) + { 0, { 0, 0, 0}}, // (138, 37) + { 0, { 0, 0, 0}}, // (139, 37) + { 0, { 0, 0, 0}}, // (140, 37) + { 0, { 0, 0, 0}}, // (141, 37) + { 0, { 0, 0, 0}}, // (142, 37) + { 0, { 0, 0, 0}}, // (143, 37) + { 0, { 0, 0, 0}}, // (144, 37) + { 0, { 0, 0, 0}}, // (145, 37) + { 0, { 0, 0, 0}}, // (146, 37) + { 0, { 0, 0, 0}}, // (147, 37) + { 0, { 0, 0, 0}}, // (148, 37) + { 0, { 0, 0, 0}}, // (149, 37) + { 0, { 0, 0, 0}}, // (150, 37) + { 0, { 0, 0, 0}}, // (151, 37) + { 0, { 0, 0, 0}}, // (152, 37) + { 0, { 0, 0, 0}}, // (153, 37) + { 0, { 0, 0, 0}}, // (154, 37) + { 0, { 0, 0, 0}}, // (155, 37) + { 0, { 0, 0, 0}}, // (156, 37) + { 0, { 0, 0, 0}}, // (157, 37) + { 0, { 0, 0, 0}}, // (158, 37) + { 0, { 0, 0, 0}}, // (159, 37) + { 49, { 0, 0, 0}}, // (160, 37) + {128, { 0, 0, 0}}, // (161, 37) + {128, { 0, 0, 0}}, // (162, 37) + {128, { 0, 0, 0}}, // (163, 37) + {128, { 0, 0, 0}}, // (164, 37) + {128, { 0, 0, 0}}, // (165, 37) + {128, { 0, 0, 0}}, // (166, 37) + {128, { 0, 0, 0}}, // (167, 37) + {128, { 0, 0, 0}}, // (168, 37) + {128, { 0, 0, 0}}, // (169, 37) + {128, { 0, 0, 0}}, // (170, 37) + {128, { 0, 0, 0}}, // (171, 37) + {128, { 0, 0, 0}}, // (172, 37) + {128, { 0, 0, 0}}, // (173, 37) + {128, { 0, 0, 0}}, // (174, 37) + {128, { 0, 0, 0}}, // (175, 37) + {128, { 0, 0, 0}}, // (176, 37) + {128, { 0, 0, 0}}, // (177, 37) + {128, { 0, 0, 0}}, // (178, 37) + {128, { 0, 0, 0}}, // (179, 37) + {128, { 0, 0, 0}}, // ( 0, 38) + {128, { 0, 0, 0}}, // ( 1, 38) + {128, { 0, 0, 0}}, // ( 2, 38) + {128, { 0, 0, 0}}, // ( 3, 38) + {128, { 0, 0, 0}}, // ( 4, 38) + {128, { 0, 0, 0}}, // ( 5, 38) + {128, { 0, 0, 0}}, // ( 6, 38) + {128, { 0, 0, 0}}, // ( 7, 38) + {128, { 0, 0, 0}}, // ( 8, 38) + {128, { 0, 0, 0}}, // ( 9, 38) + {128, { 0, 0, 0}}, // ( 10, 38) + {128, { 0, 0, 0}}, // ( 11, 38) + {128, { 0, 0, 0}}, // ( 12, 38) + {128, { 0, 0, 0}}, // ( 13, 38) + {128, { 0, 0, 0}}, // ( 14, 38) + {128, { 0, 0, 0}}, // ( 15, 38) + {128, { 0, 0, 0}}, // ( 16, 38) + {128, { 0, 0, 0}}, // ( 17, 38) + { 82, { 0, 0, 0}}, // ( 18, 38) + { 0, { 0, 0, 0}}, // ( 19, 38) + { 0, { 0, 0, 0}}, // ( 20, 38) + { 0, { 0, 0, 0}}, // ( 21, 38) + { 0, { 0, 0, 0}}, // ( 22, 38) + { 0, { 0, 0, 0}}, // ( 23, 38) + { 0, { 0, 0, 0}}, // ( 24, 38) + { 0, { 0, 0, 0}}, // ( 25, 38) + { 0, { 0, 0, 0}}, // ( 26, 38) + { 0, { 0, 0, 0}}, // ( 27, 38) + { 0, { 0, 0, 0}}, // ( 28, 38) + { 0, { 0, 0, 0}}, // ( 29, 38) + { 0, { 0, 0, 0}}, // ( 30, 38) + { 0, { 0, 0, 0}}, // ( 31, 38) + { 0, { 0, 0, 0}}, // ( 32, 38) + { 0, { 0, 0, 0}}, // ( 33, 38) + { 0, { 0, 0, 0}}, // ( 34, 38) + { 0, { 0, 0, 0}}, // ( 35, 38) + { 0, { 0, 0, 0}}, // ( 36, 38) + { 0, { 0, 0, 0}}, // ( 37, 38) + { 0, { 0, 0, 0}}, // ( 38, 38) + { 0, { 0, 0, 0}}, // ( 39, 38) + { 0, { 0, 0, 0}}, // ( 40, 38) + { 0, { 0, 0, 0}}, // ( 41, 38) + { 0, { 0, 0, 0}}, // ( 42, 38) + { 0, { 0, 0, 0}}, // ( 43, 38) + { 0, { 0, 0, 0}}, // ( 44, 38) + { 0, { 0, 0, 0}}, // ( 45, 38) + { 0, { 0, 0, 0}}, // ( 46, 38) + { 0, { 0, 0, 0}}, // ( 47, 38) + { 0, { 0, 0, 0}}, // ( 48, 38) + { 0, { 0, 0, 0}}, // ( 49, 38) + { 0, { 0, 0, 0}}, // ( 50, 38) + { 0, { 0, 0, 0}}, // ( 51, 38) + { 0, { 0, 0, 0}}, // ( 52, 38) + { 0, { 0, 0, 0}}, // ( 53, 38) + { 0, { 0, 0, 0}}, // ( 54, 38) + { 0, { 0, 0, 0}}, // ( 55, 38) + { 0, { 0, 0, 0}}, // ( 56, 38) + { 0, { 0, 0, 0}}, // ( 57, 38) + { 0, { 0, 0, 0}}, // ( 58, 38) + { 0, { 0, 0, 0}}, // ( 59, 38) + { 0, { 0, 0, 0}}, // ( 60, 38) + { 0, { 0, 0, 0}}, // ( 61, 38) + { 0, { 0, 0, 0}}, // ( 62, 38) + { 0, { 0, 0, 0}}, // ( 63, 38) + { 0, { 0, 0, 0}}, // ( 64, 38) + { 0, { 0, 0, 0}}, // ( 65, 38) + { 0, { 0, 0, 0}}, // ( 66, 38) + { 0, { 0, 0, 0}}, // ( 67, 38) + { 0, { 0, 0, 0}}, // ( 68, 38) + { 0, { 0, 0, 0}}, // ( 69, 38) + { 0, { 0, 0, 0}}, // ( 70, 38) + { 0, { 0, 0, 0}}, // ( 71, 38) + { 0, { 0, 0, 0}}, // ( 72, 38) + { 0, { 0, 0, 0}}, // ( 73, 38) + { 0, { 0, 0, 0}}, // ( 74, 38) + { 0, { 0, 0, 0}}, // ( 75, 38) + { 0, { 0, 0, 0}}, // ( 76, 38) + { 0, { 0, 0, 0}}, // ( 77, 38) + { 0, { 0, 0, 0}}, // ( 78, 38) + { 0, { 0, 0, 0}}, // ( 79, 38) + { 0, { 0, 0, 0}}, // ( 80, 38) + { 0, { 0, 0, 0}}, // ( 81, 38) + { 0, { 0, 0, 0}}, // ( 82, 38) + { 0, { 0, 0, 0}}, // ( 83, 38) + { 0, { 0, 0, 0}}, // ( 84, 38) + { 0, { 0, 0, 0}}, // ( 85, 38) + { 0, { 0, 0, 0}}, // ( 86, 38) + { 0, { 0, 0, 0}}, // ( 87, 38) + { 0, { 0, 0, 0}}, // ( 88, 38) + { 0, { 0, 0, 0}}, // ( 89, 38) + { 0, { 0, 0, 0}}, // ( 90, 38) + { 0, { 0, 0, 0}}, // ( 91, 38) + { 0, { 0, 0, 0}}, // ( 92, 38) + { 0, { 0, 0, 0}}, // ( 93, 38) + { 0, { 0, 0, 0}}, // ( 94, 38) + { 0, { 0, 0, 0}}, // ( 95, 38) + { 0, { 0, 0, 0}}, // ( 96, 38) + { 0, { 0, 0, 0}}, // ( 97, 38) + { 0, { 0, 0, 0}}, // ( 98, 38) + { 0, { 0, 0, 0}}, // ( 99, 38) + { 0, { 0, 0, 0}}, // (100, 38) + { 0, { 0, 0, 0}}, // (101, 38) + { 0, { 0, 0, 0}}, // (102, 38) + { 0, { 0, 0, 0}}, // (103, 38) + { 0, { 0, 0, 0}}, // (104, 38) + { 0, { 0, 0, 0}}, // (105, 38) + { 0, { 0, 0, 0}}, // (106, 38) + { 0, { 0, 0, 0}}, // (107, 38) + { 0, { 0, 0, 0}}, // (108, 38) + { 0, { 0, 0, 0}}, // (109, 38) + { 0, { 0, 0, 0}}, // (110, 38) + { 0, { 0, 0, 0}}, // (111, 38) + { 0, { 0, 0, 0}}, // (112, 38) + { 0, { 0, 0, 0}}, // (113, 38) + { 0, { 0, 0, 0}}, // (114, 38) + { 0, { 0, 0, 0}}, // (115, 38) + { 0, { 0, 0, 0}}, // (116, 38) + { 0, { 0, 0, 0}}, // (117, 38) + { 0, { 0, 0, 0}}, // (118, 38) + { 0, { 0, 0, 0}}, // (119, 38) + { 0, { 0, 0, 0}}, // (120, 38) + { 0, { 0, 0, 0}}, // (121, 38) + { 0, { 0, 0, 0}}, // (122, 38) + { 0, { 0, 0, 0}}, // (123, 38) + { 0, { 0, 0, 0}}, // (124, 38) + { 0, { 0, 0, 0}}, // (125, 38) + { 0, { 0, 0, 0}}, // (126, 38) + { 0, { 0, 0, 0}}, // (127, 38) + { 0, { 0, 0, 0}}, // (128, 38) + { 0, { 0, 0, 0}}, // (129, 38) + { 0, { 0, 0, 0}}, // (130, 38) + { 0, { 0, 0, 0}}, // (131, 38) + { 0, { 0, 0, 0}}, // (132, 38) + { 0, { 0, 0, 0}}, // (133, 38) + { 0, { 0, 0, 0}}, // (134, 38) + { 0, { 0, 0, 0}}, // (135, 38) + { 0, { 0, 0, 0}}, // (136, 38) + { 0, { 0, 0, 0}}, // (137, 38) + { 0, { 0, 0, 0}}, // (138, 38) + { 0, { 0, 0, 0}}, // (139, 38) + { 0, { 0, 0, 0}}, // (140, 38) + { 0, { 0, 0, 0}}, // (141, 38) + { 0, { 0, 0, 0}}, // (142, 38) + { 0, { 0, 0, 0}}, // (143, 38) + { 0, { 0, 0, 0}}, // (144, 38) + { 0, { 0, 0, 0}}, // (145, 38) + { 0, { 0, 0, 0}}, // (146, 38) + { 0, { 0, 0, 0}}, // (147, 38) + { 0, { 0, 0, 0}}, // (148, 38) + { 0, { 0, 0, 0}}, // (149, 38) + { 0, { 0, 0, 0}}, // (150, 38) + { 0, { 0, 0, 0}}, // (151, 38) + { 0, { 0, 0, 0}}, // (152, 38) + { 0, { 0, 0, 0}}, // (153, 38) + { 0, { 0, 0, 0}}, // (154, 38) + { 0, { 0, 0, 0}}, // (155, 38) + { 0, { 0, 0, 0}}, // (156, 38) + { 0, { 0, 0, 0}}, // (157, 38) + { 0, { 0, 0, 0}}, // (158, 38) + { 0, { 0, 0, 0}}, // (159, 38) + { 0, { 0, 0, 0}}, // (160, 38) + { 82, { 0, 0, 0}}, // (161, 38) + {128, { 0, 0, 0}}, // (162, 38) + {128, { 0, 0, 0}}, // (163, 38) + {128, { 0, 0, 0}}, // (164, 38) + {128, { 0, 0, 0}}, // (165, 38) + {128, { 0, 0, 0}}, // (166, 38) + {128, { 0, 0, 0}}, // (167, 38) + {128, { 0, 0, 0}}, // (168, 38) + {128, { 0, 0, 0}}, // (169, 38) + {128, { 0, 0, 0}}, // (170, 38) + {128, { 0, 0, 0}}, // (171, 38) + {128, { 0, 0, 0}}, // (172, 38) + {128, { 0, 0, 0}}, // (173, 38) + {128, { 0, 0, 0}}, // (174, 38) + {128, { 0, 0, 0}}, // (175, 38) + {128, { 0, 0, 0}}, // (176, 38) + {128, { 0, 0, 0}}, // (177, 38) + {128, { 0, 0, 0}}, // (178, 38) + {128, { 0, 0, 0}}, // (179, 38) + {128, { 0, 0, 0}}, // ( 0, 39) + {128, { 0, 0, 0}}, // ( 1, 39) + {128, { 0, 0, 0}}, // ( 2, 39) + {128, { 0, 0, 0}}, // ( 3, 39) + {128, { 0, 0, 0}}, // ( 4, 39) + {128, { 0, 0, 0}}, // ( 5, 39) + {128, { 0, 0, 0}}, // ( 6, 39) + {128, { 0, 0, 0}}, // ( 7, 39) + {128, { 0, 0, 0}}, // ( 8, 39) + {128, { 0, 0, 0}}, // ( 9, 39) + {128, { 0, 0, 0}}, // ( 10, 39) + {128, { 0, 0, 0}}, // ( 11, 39) + {128, { 0, 0, 0}}, // ( 12, 39) + {128, { 0, 0, 0}}, // ( 13, 39) + {128, { 0, 0, 0}}, // ( 14, 39) + {128, { 0, 0, 0}}, // ( 15, 39) + {128, { 0, 0, 0}}, // ( 16, 39) + {112, { 0, 0, 0}}, // ( 17, 39) + { 7, { 0, 0, 0}}, // ( 18, 39) + { 0, { 0, 0, 0}}, // ( 19, 39) + { 0, { 0, 0, 0}}, // ( 20, 39) + { 0, { 0, 0, 0}}, // ( 21, 39) + { 0, { 0, 0, 0}}, // ( 22, 39) + { 0, { 0, 0, 0}}, // ( 23, 39) + { 0, { 0, 0, 0}}, // ( 24, 39) + { 0, { 0, 0, 0}}, // ( 25, 39) + { 0, { 0, 0, 0}}, // ( 26, 39) + { 0, { 0, 0, 0}}, // ( 27, 39) + { 0, { 0, 0, 0}}, // ( 28, 39) + { 0, { 0, 0, 0}}, // ( 29, 39) + { 0, { 0, 0, 0}}, // ( 30, 39) + { 0, { 0, 0, 0}}, // ( 31, 39) + { 0, { 0, 0, 0}}, // ( 32, 39) + { 0, { 0, 0, 0}}, // ( 33, 39) + { 0, { 0, 0, 0}}, // ( 34, 39) + { 0, { 0, 0, 0}}, // ( 35, 39) + { 0, { 0, 0, 0}}, // ( 36, 39) + { 0, { 0, 0, 0}}, // ( 37, 39) + { 0, { 0, 0, 0}}, // ( 38, 39) + { 0, { 0, 0, 0}}, // ( 39, 39) + { 0, { 0, 0, 0}}, // ( 40, 39) + { 0, { 0, 0, 0}}, // ( 41, 39) + { 0, { 0, 0, 0}}, // ( 42, 39) + { 0, { 0, 0, 0}}, // ( 43, 39) + { 0, { 0, 0, 0}}, // ( 44, 39) + { 0, { 0, 0, 0}}, // ( 45, 39) + { 0, { 0, 0, 0}}, // ( 46, 39) + { 0, { 0, 0, 0}}, // ( 47, 39) + { 0, { 0, 0, 0}}, // ( 48, 39) + { 0, { 0, 0, 0}}, // ( 49, 39) + { 0, { 0, 0, 0}}, // ( 50, 39) + { 0, { 0, 0, 0}}, // ( 51, 39) + { 0, { 0, 0, 0}}, // ( 52, 39) + { 0, { 0, 0, 0}}, // ( 53, 39) + { 0, { 0, 0, 0}}, // ( 54, 39) + { 0, { 0, 0, 0}}, // ( 55, 39) + { 0, { 0, 0, 0}}, // ( 56, 39) + { 0, { 0, 0, 0}}, // ( 57, 39) + { 0, { 0, 0, 0}}, // ( 58, 39) + { 0, { 0, 0, 0}}, // ( 59, 39) + { 0, { 0, 0, 0}}, // ( 60, 39) + { 0, { 0, 0, 0}}, // ( 61, 39) + { 0, { 0, 0, 0}}, // ( 62, 39) + { 0, { 0, 0, 0}}, // ( 63, 39) + { 0, { 0, 0, 0}}, // ( 64, 39) + { 0, { 0, 0, 0}}, // ( 65, 39) + { 0, { 0, 0, 0}}, // ( 66, 39) + { 0, { 0, 0, 0}}, // ( 67, 39) + { 0, { 0, 0, 0}}, // ( 68, 39) + { 0, { 0, 0, 0}}, // ( 69, 39) + { 0, { 0, 0, 0}}, // ( 70, 39) + { 0, { 0, 0, 0}}, // ( 71, 39) + { 0, { 0, 0, 0}}, // ( 72, 39) + { 0, { 0, 0, 0}}, // ( 73, 39) + { 0, { 0, 0, 0}}, // ( 74, 39) + { 0, { 0, 0, 0}}, // ( 75, 39) + { 0, { 0, 0, 0}}, // ( 76, 39) + { 0, { 0, 0, 0}}, // ( 77, 39) + { 0, { 0, 0, 0}}, // ( 78, 39) + { 0, { 0, 0, 0}}, // ( 79, 39) + { 0, { 0, 0, 0}}, // ( 80, 39) + { 0, { 0, 0, 0}}, // ( 81, 39) + { 0, { 0, 0, 0}}, // ( 82, 39) + { 0, { 0, 0, 0}}, // ( 83, 39) + { 0, { 0, 0, 0}}, // ( 84, 39) + { 0, { 0, 0, 0}}, // ( 85, 39) + { 0, { 0, 0, 0}}, // ( 86, 39) + { 0, { 0, 0, 0}}, // ( 87, 39) + { 0, { 0, 0, 0}}, // ( 88, 39) + { 0, { 0, 0, 0}}, // ( 89, 39) + { 0, { 0, 0, 0}}, // ( 90, 39) + { 0, { 0, 0, 0}}, // ( 91, 39) + { 0, { 0, 0, 0}}, // ( 92, 39) + { 0, { 0, 0, 0}}, // ( 93, 39) + { 0, { 0, 0, 0}}, // ( 94, 39) + { 0, { 0, 0, 0}}, // ( 95, 39) + { 0, { 0, 0, 0}}, // ( 96, 39) + { 0, { 0, 0, 0}}, // ( 97, 39) + { 0, { 0, 0, 0}}, // ( 98, 39) + { 0, { 0, 0, 0}}, // ( 99, 39) + { 0, { 0, 0, 0}}, // (100, 39) + { 0, { 0, 0, 0}}, // (101, 39) + { 0, { 0, 0, 0}}, // (102, 39) + { 0, { 0, 0, 0}}, // (103, 39) + { 0, { 0, 0, 0}}, // (104, 39) + { 0, { 0, 0, 0}}, // (105, 39) + { 0, { 0, 0, 0}}, // (106, 39) + { 0, { 0, 0, 0}}, // (107, 39) + { 0, { 0, 0, 0}}, // (108, 39) + { 0, { 0, 0, 0}}, // (109, 39) + { 0, { 0, 0, 0}}, // (110, 39) + { 0, { 0, 0, 0}}, // (111, 39) + { 0, { 0, 0, 0}}, // (112, 39) + { 0, { 0, 0, 0}}, // (113, 39) + { 0, { 0, 0, 0}}, // (114, 39) + { 0, { 0, 0, 0}}, // (115, 39) + { 0, { 0, 0, 0}}, // (116, 39) + { 0, { 0, 0, 0}}, // (117, 39) + { 0, { 0, 0, 0}}, // (118, 39) + { 0, { 0, 0, 0}}, // (119, 39) + { 0, { 0, 0, 0}}, // (120, 39) + { 0, { 0, 0, 0}}, // (121, 39) + { 0, { 0, 0, 0}}, // (122, 39) + { 0, { 0, 0, 0}}, // (123, 39) + { 0, { 0, 0, 0}}, // (124, 39) + { 0, { 0, 0, 0}}, // (125, 39) + { 0, { 0, 0, 0}}, // (126, 39) + { 0, { 0, 0, 0}}, // (127, 39) + { 0, { 0, 0, 0}}, // (128, 39) + { 0, { 0, 0, 0}}, // (129, 39) + { 0, { 0, 0, 0}}, // (130, 39) + { 0, { 0, 0, 0}}, // (131, 39) + { 0, { 0, 0, 0}}, // (132, 39) + { 0, { 0, 0, 0}}, // (133, 39) + { 0, { 0, 0, 0}}, // (134, 39) + { 0, { 0, 0, 0}}, // (135, 39) + { 0, { 0, 0, 0}}, // (136, 39) + { 0, { 0, 0, 0}}, // (137, 39) + { 0, { 0, 0, 0}}, // (138, 39) + { 0, { 0, 0, 0}}, // (139, 39) + { 0, { 0, 0, 0}}, // (140, 39) + { 0, { 0, 0, 0}}, // (141, 39) + { 0, { 0, 0, 0}}, // (142, 39) + { 0, { 0, 0, 0}}, // (143, 39) + { 0, { 0, 0, 0}}, // (144, 39) + { 0, { 0, 0, 0}}, // (145, 39) + { 0, { 0, 0, 0}}, // (146, 39) + { 0, { 0, 0, 0}}, // (147, 39) + { 0, { 0, 0, 0}}, // (148, 39) + { 0, { 0, 0, 0}}, // (149, 39) + { 0, { 0, 0, 0}}, // (150, 39) + { 0, { 0, 0, 0}}, // (151, 39) + { 0, { 0, 0, 0}}, // (152, 39) + { 0, { 0, 0, 0}}, // (153, 39) + { 0, { 0, 0, 0}}, // (154, 39) + { 0, { 0, 0, 0}}, // (155, 39) + { 0, { 0, 0, 0}}, // (156, 39) + { 0, { 0, 0, 0}}, // (157, 39) + { 0, { 0, 0, 0}}, // (158, 39) + { 0, { 0, 0, 0}}, // (159, 39) + { 0, { 0, 0, 0}}, // (160, 39) + { 7, { 0, 0, 0}}, // (161, 39) + {112, { 0, 0, 0}}, // (162, 39) + {128, { 0, 0, 0}}, // (163, 39) + {128, { 0, 0, 0}}, // (164, 39) + {128, { 0, 0, 0}}, // (165, 39) + {128, { 0, 0, 0}}, // (166, 39) + {128, { 0, 0, 0}}, // (167, 39) + {128, { 0, 0, 0}}, // (168, 39) + {128, { 0, 0, 0}}, // (169, 39) + {128, { 0, 0, 0}}, // (170, 39) + {128, { 0, 0, 0}}, // (171, 39) + {128, { 0, 0, 0}}, // (172, 39) + {128, { 0, 0, 0}}, // (173, 39) + {128, { 0, 0, 0}}, // (174, 39) + {128, { 0, 0, 0}}, // (175, 39) + {128, { 0, 0, 0}}, // (176, 39) + {128, { 0, 0, 0}}, // (177, 39) + {128, { 0, 0, 0}}, // (178, 39) + {128, { 0, 0, 0}}, // (179, 39) + {128, { 0, 0, 0}}, // ( 0, 40) + {128, { 0, 0, 0}}, // ( 1, 40) + {128, { 0, 0, 0}}, // ( 2, 40) + {128, { 0, 0, 0}}, // ( 3, 40) + {128, { 0, 0, 0}}, // ( 4, 40) + {128, { 0, 0, 0}}, // ( 5, 40) + {128, { 0, 0, 0}}, // ( 6, 40) + {128, { 0, 0, 0}}, // ( 7, 40) + {128, { 0, 0, 0}}, // ( 8, 40) + {128, { 0, 0, 0}}, // ( 9, 40) + {128, { 0, 0, 0}}, // ( 10, 40) + {128, { 0, 0, 0}}, // ( 11, 40) + {128, { 0, 0, 0}}, // ( 12, 40) + {128, { 0, 0, 0}}, // ( 13, 40) + {128, { 0, 0, 0}}, // ( 14, 40) + {128, { 0, 0, 0}}, // ( 15, 40) + {127, { 0, 0, 0}}, // ( 16, 40) + { 32, { 0, 0, 0}}, // ( 17, 40) + { 0, { 0, 0, 0}}, // ( 18, 40) + { 0, { 0, 0, 0}}, // ( 19, 40) + { 0, { 0, 0, 0}}, // ( 20, 40) + { 0, { 0, 0, 0}}, // ( 21, 40) + { 0, { 0, 0, 0}}, // ( 22, 40) + { 0, { 0, 0, 0}}, // ( 23, 40) + { 0, { 0, 0, 0}}, // ( 24, 40) + { 0, { 0, 0, 0}}, // ( 25, 40) + { 0, { 0, 0, 0}}, // ( 26, 40) + { 0, { 0, 0, 0}}, // ( 27, 40) + { 0, { 0, 0, 0}}, // ( 28, 40) + { 0, { 0, 0, 0}}, // ( 29, 40) + { 0, { 0, 0, 0}}, // ( 30, 40) + { 0, { 0, 0, 0}}, // ( 31, 40) + { 0, { 0, 0, 0}}, // ( 32, 40) + { 0, { 0, 0, 0}}, // ( 33, 40) + { 0, { 0, 0, 0}}, // ( 34, 40) + { 0, { 0, 0, 0}}, // ( 35, 40) + { 0, { 0, 0, 0}}, // ( 36, 40) + { 0, { 0, 0, 0}}, // ( 37, 40) + { 0, { 0, 0, 0}}, // ( 38, 40) + { 0, { 0, 0, 0}}, // ( 39, 40) + { 0, { 0, 0, 0}}, // ( 40, 40) + { 0, { 0, 0, 0}}, // ( 41, 40) + { 0, { 0, 0, 0}}, // ( 42, 40) + { 0, { 0, 0, 0}}, // ( 43, 40) + { 0, { 0, 0, 0}}, // ( 44, 40) + { 0, { 0, 0, 0}}, // ( 45, 40) + { 0, { 0, 0, 0}}, // ( 46, 40) + { 0, { 0, 0, 0}}, // ( 47, 40) + { 0, { 0, 0, 0}}, // ( 48, 40) + { 0, { 0, 0, 0}}, // ( 49, 40) + { 0, { 0, 0, 0}}, // ( 50, 40) + { 0, { 0, 0, 0}}, // ( 51, 40) + { 0, { 0, 0, 0}}, // ( 52, 40) + { 0, { 0, 0, 0}}, // ( 53, 40) + { 0, { 0, 0, 0}}, // ( 54, 40) + { 0, { 0, 0, 0}}, // ( 55, 40) + { 0, { 0, 0, 0}}, // ( 56, 40) + { 0, { 0, 0, 0}}, // ( 57, 40) + { 0, { 0, 0, 0}}, // ( 58, 40) + { 0, { 0, 0, 0}}, // ( 59, 40) + { 0, { 0, 0, 0}}, // ( 60, 40) + { 0, { 0, 0, 0}}, // ( 61, 40) + { 0, { 0, 0, 0}}, // ( 62, 40) + { 0, { 0, 0, 0}}, // ( 63, 40) + { 0, { 0, 0, 0}}, // ( 64, 40) + { 0, { 0, 0, 0}}, // ( 65, 40) + { 0, { 0, 0, 0}}, // ( 66, 40) + { 0, { 0, 0, 0}}, // ( 67, 40) + { 0, { 0, 0, 0}}, // ( 68, 40) + { 0, { 0, 0, 0}}, // ( 69, 40) + { 0, { 0, 0, 0}}, // ( 70, 40) + { 0, { 0, 0, 0}}, // ( 71, 40) + { 0, { 0, 0, 0}}, // ( 72, 40) + { 0, { 0, 0, 0}}, // ( 73, 40) + { 0, { 0, 0, 0}}, // ( 74, 40) + { 0, { 0, 0, 0}}, // ( 75, 40) + { 0, { 0, 0, 0}}, // ( 76, 40) + { 0, { 0, 0, 0}}, // ( 77, 40) + { 0, { 0, 0, 0}}, // ( 78, 40) + { 0, { 0, 0, 0}}, // ( 79, 40) + { 0, { 0, 0, 0}}, // ( 80, 40) + { 0, { 0, 0, 0}}, // ( 81, 40) + { 0, { 0, 0, 0}}, // ( 82, 40) + { 0, { 0, 0, 0}}, // ( 83, 40) + { 0, { 0, 0, 0}}, // ( 84, 40) + { 0, { 0, 0, 0}}, // ( 85, 40) + { 0, { 0, 0, 0}}, // ( 86, 40) + { 0, { 0, 0, 0}}, // ( 87, 40) + { 0, { 0, 0, 0}}, // ( 88, 40) + { 0, { 0, 0, 0}}, // ( 89, 40) + { 0, { 0, 0, 0}}, // ( 90, 40) + { 0, { 0, 0, 0}}, // ( 91, 40) + { 0, { 0, 0, 0}}, // ( 92, 40) + { 0, { 0, 0, 0}}, // ( 93, 40) + { 0, { 0, 0, 0}}, // ( 94, 40) + { 0, { 0, 0, 0}}, // ( 95, 40) + { 0, { 0, 0, 0}}, // ( 96, 40) + { 0, { 0, 0, 0}}, // ( 97, 40) + { 0, { 0, 0, 0}}, // ( 98, 40) + { 0, { 0, 0, 0}}, // ( 99, 40) + { 0, { 0, 0, 0}}, // (100, 40) + { 0, { 0, 0, 0}}, // (101, 40) + { 0, { 0, 0, 0}}, // (102, 40) + { 0, { 0, 0, 0}}, // (103, 40) + { 0, { 0, 0, 0}}, // (104, 40) + { 0, { 0, 0, 0}}, // (105, 40) + { 0, { 0, 0, 0}}, // (106, 40) + { 0, { 0, 0, 0}}, // (107, 40) + { 0, { 0, 0, 0}}, // (108, 40) + { 0, { 0, 0, 0}}, // (109, 40) + { 0, { 0, 0, 0}}, // (110, 40) + { 0, { 0, 0, 0}}, // (111, 40) + { 0, { 0, 0, 0}}, // (112, 40) + { 0, { 0, 0, 0}}, // (113, 40) + { 0, { 0, 0, 0}}, // (114, 40) + { 0, { 0, 0, 0}}, // (115, 40) + { 0, { 0, 0, 0}}, // (116, 40) + { 0, { 0, 0, 0}}, // (117, 40) + { 0, { 0, 0, 0}}, // (118, 40) + { 0, { 0, 0, 0}}, // (119, 40) + { 0, { 0, 0, 0}}, // (120, 40) + { 0, { 0, 0, 0}}, // (121, 40) + { 0, { 0, 0, 0}}, // (122, 40) + { 0, { 0, 0, 0}}, // (123, 40) + { 0, { 0, 0, 0}}, // (124, 40) + { 0, { 0, 0, 0}}, // (125, 40) + { 0, { 0, 0, 0}}, // (126, 40) + { 0, { 0, 0, 0}}, // (127, 40) + { 0, { 0, 0, 0}}, // (128, 40) + { 0, { 0, 0, 0}}, // (129, 40) + { 0, { 0, 0, 0}}, // (130, 40) + { 0, { 0, 0, 0}}, // (131, 40) + { 0, { 0, 0, 0}}, // (132, 40) + { 0, { 0, 0, 0}}, // (133, 40) + { 0, { 0, 0, 0}}, // (134, 40) + { 0, { 0, 0, 0}}, // (135, 40) + { 0, { 0, 0, 0}}, // (136, 40) + { 0, { 0, 0, 0}}, // (137, 40) + { 0, { 0, 0, 0}}, // (138, 40) + { 0, { 0, 0, 0}}, // (139, 40) + { 0, { 0, 0, 0}}, // (140, 40) + { 0, { 0, 0, 0}}, // (141, 40) + { 0, { 0, 0, 0}}, // (142, 40) + { 0, { 0, 0, 0}}, // (143, 40) + { 0, { 0, 0, 0}}, // (144, 40) + { 0, { 0, 0, 0}}, // (145, 40) + { 0, { 0, 0, 0}}, // (146, 40) + { 0, { 0, 0, 0}}, // (147, 40) + { 0, { 0, 0, 0}}, // (148, 40) + { 0, { 0, 0, 0}}, // (149, 40) + { 0, { 0, 0, 0}}, // (150, 40) + { 0, { 0, 0, 0}}, // (151, 40) + { 0, { 0, 0, 0}}, // (152, 40) + { 0, { 0, 0, 0}}, // (153, 40) + { 0, { 0, 0, 0}}, // (154, 40) + { 0, { 0, 0, 0}}, // (155, 40) + { 0, { 0, 0, 0}}, // (156, 40) + { 0, { 0, 0, 0}}, // (157, 40) + { 0, { 0, 0, 0}}, // (158, 40) + { 0, { 0, 0, 0}}, // (159, 40) + { 0, { 0, 0, 0}}, // (160, 40) + { 0, { 0, 0, 0}}, // (161, 40) + { 32, { 0, 0, 0}}, // (162, 40) + {127, { 0, 0, 0}}, // (163, 40) + {128, { 0, 0, 0}}, // (164, 40) + {128, { 0, 0, 0}}, // (165, 40) + {128, { 0, 0, 0}}, // (166, 40) + {128, { 0, 0, 0}}, // (167, 40) + {128, { 0, 0, 0}}, // (168, 40) + {128, { 0, 0, 0}}, // (169, 40) + {128, { 0, 0, 0}}, // (170, 40) + {128, { 0, 0, 0}}, // (171, 40) + {128, { 0, 0, 0}}, // (172, 40) + {128, { 0, 0, 0}}, // (173, 40) + {128, { 0, 0, 0}}, // (174, 40) + {128, { 0, 0, 0}}, // (175, 40) + {128, { 0, 0, 0}}, // (176, 40) + {128, { 0, 0, 0}}, // (177, 40) + {128, { 0, 0, 0}}, // (178, 40) + {128, { 0, 0, 0}}, // (179, 40) + {128, { 0, 0, 0}}, // ( 0, 41) + {128, { 0, 0, 0}}, // ( 1, 41) + {128, { 0, 0, 0}}, // ( 2, 41) + {128, { 0, 0, 0}}, // ( 3, 41) + {128, { 0, 0, 0}}, // ( 4, 41) + {128, { 0, 0, 0}}, // ( 5, 41) + {128, { 0, 0, 0}}, // ( 6, 41) + {128, { 0, 0, 0}}, // ( 7, 41) + {128, { 0, 0, 0}}, // ( 8, 41) + {128, { 0, 0, 0}}, // ( 9, 41) + {128, { 0, 0, 0}}, // ( 10, 41) + {128, { 0, 0, 0}}, // ( 11, 41) + {128, { 0, 0, 0}}, // ( 12, 41) + {128, { 0, 0, 0}}, // ( 13, 41) + {128, { 0, 0, 0}}, // ( 14, 41) + {128, { 0, 0, 0}}, // ( 15, 41) + { 75, { 0, 0, 0}}, // ( 16, 41) + { 0, { 0, 0, 0}}, // ( 17, 41) + { 0, { 0, 0, 0}}, // ( 18, 41) + { 0, { 0, 0, 0}}, // ( 19, 41) + { 0, { 0, 0, 0}}, // ( 20, 41) + { 0, { 0, 0, 0}}, // ( 21, 41) + { 0, { 0, 0, 0}}, // ( 22, 41) + { 0, { 0, 0, 0}}, // ( 23, 41) + { 0, { 0, 0, 0}}, // ( 24, 41) + { 0, { 0, 0, 0}}, // ( 25, 41) + { 0, { 0, 0, 0}}, // ( 26, 41) + { 0, { 0, 0, 0}}, // ( 27, 41) + { 0, { 0, 0, 0}}, // ( 28, 41) + { 0, { 0, 0, 0}}, // ( 29, 41) + { 0, { 0, 0, 0}}, // ( 30, 41) + { 0, { 0, 0, 0}}, // ( 31, 41) + { 0, { 0, 0, 0}}, // ( 32, 41) + { 0, { 0, 0, 0}}, // ( 33, 41) + { 0, { 0, 0, 0}}, // ( 34, 41) + { 0, { 0, 0, 0}}, // ( 35, 41) + { 0, { 0, 0, 0}}, // ( 36, 41) + { 0, { 0, 0, 0}}, // ( 37, 41) + { 0, { 0, 0, 0}}, // ( 38, 41) + { 0, { 0, 0, 0}}, // ( 39, 41) + { 0, { 0, 0, 0}}, // ( 40, 41) + { 0, { 0, 0, 0}}, // ( 41, 41) + { 0, { 0, 0, 0}}, // ( 42, 41) + { 0, { 0, 0, 0}}, // ( 43, 41) + { 0, { 0, 0, 0}}, // ( 44, 41) + { 0, { 0, 0, 0}}, // ( 45, 41) + { 0, { 0, 0, 0}}, // ( 46, 41) + { 0, { 0, 0, 0}}, // ( 47, 41) + { 0, { 0, 0, 0}}, // ( 48, 41) + { 0, { 0, 0, 0}}, // ( 49, 41) + { 0, { 0, 0, 0}}, // ( 50, 41) + { 0, { 0, 0, 0}}, // ( 51, 41) + { 0, { 0, 0, 0}}, // ( 52, 41) + { 0, { 0, 0, 0}}, // ( 53, 41) + { 0, { 0, 0, 0}}, // ( 54, 41) + { 0, { 0, 0, 0}}, // ( 55, 41) + { 0, { 0, 0, 0}}, // ( 56, 41) + { 0, { 0, 0, 0}}, // ( 57, 41) + { 0, { 0, 0, 0}}, // ( 58, 41) + { 0, { 0, 0, 0}}, // ( 59, 41) + { 0, { 0, 0, 0}}, // ( 60, 41) + { 0, { 0, 0, 0}}, // ( 61, 41) + { 0, { 0, 0, 0}}, // ( 62, 41) + { 0, { 0, 0, 0}}, // ( 63, 41) + { 0, { 0, 0, 0}}, // ( 64, 41) + { 0, { 0, 0, 0}}, // ( 65, 41) + { 0, { 0, 0, 0}}, // ( 66, 41) + { 0, { 0, 0, 0}}, // ( 67, 41) + { 0, { 0, 0, 0}}, // ( 68, 41) + { 0, { 0, 0, 0}}, // ( 69, 41) + { 0, { 0, 0, 0}}, // ( 70, 41) + { 0, { 0, 0, 0}}, // ( 71, 41) + { 0, { 0, 0, 0}}, // ( 72, 41) + { 0, { 0, 0, 0}}, // ( 73, 41) + { 0, { 0, 0, 0}}, // ( 74, 41) + { 0, { 0, 0, 0}}, // ( 75, 41) + { 0, { 0, 0, 0}}, // ( 76, 41) + { 0, { 0, 0, 0}}, // ( 77, 41) + { 0, { 0, 0, 0}}, // ( 78, 41) + { 0, { 0, 0, 0}}, // ( 79, 41) + { 0, { 0, 0, 0}}, // ( 80, 41) + { 0, { 0, 0, 0}}, // ( 81, 41) + { 0, { 0, 0, 0}}, // ( 82, 41) + { 0, { 0, 0, 0}}, // ( 83, 41) + { 0, { 0, 0, 0}}, // ( 84, 41) + { 0, { 0, 0, 0}}, // ( 85, 41) + { 0, { 0, 0, 0}}, // ( 86, 41) + { 0, { 0, 0, 0}}, // ( 87, 41) + { 0, { 0, 0, 0}}, // ( 88, 41) + { 0, { 0, 0, 0}}, // ( 89, 41) + { 0, { 0, 0, 0}}, // ( 90, 41) + { 0, { 0, 0, 0}}, // ( 91, 41) + { 0, { 0, 0, 0}}, // ( 92, 41) + { 0, { 0, 0, 0}}, // ( 93, 41) + { 0, { 0, 0, 0}}, // ( 94, 41) + { 0, { 0, 0, 0}}, // ( 95, 41) + { 0, { 0, 0, 0}}, // ( 96, 41) + { 0, { 0, 0, 0}}, // ( 97, 41) + { 0, { 0, 0, 0}}, // ( 98, 41) + { 0, { 0, 0, 0}}, // ( 99, 41) + { 0, { 0, 0, 0}}, // (100, 41) + { 0, { 0, 0, 0}}, // (101, 41) + { 0, { 0, 0, 0}}, // (102, 41) + { 0, { 0, 0, 0}}, // (103, 41) + { 0, { 0, 0, 0}}, // (104, 41) + { 0, { 0, 0, 0}}, // (105, 41) + { 0, { 0, 0, 0}}, // (106, 41) + { 0, { 0, 0, 0}}, // (107, 41) + { 0, { 0, 0, 0}}, // (108, 41) + { 0, { 0, 0, 0}}, // (109, 41) + { 0, { 0, 0, 0}}, // (110, 41) + { 0, { 0, 0, 0}}, // (111, 41) + { 0, { 0, 0, 0}}, // (112, 41) + { 0, { 0, 0, 0}}, // (113, 41) + { 0, { 0, 0, 0}}, // (114, 41) + { 0, { 0, 0, 0}}, // (115, 41) + { 0, { 0, 0, 0}}, // (116, 41) + { 0, { 0, 0, 0}}, // (117, 41) + { 0, { 0, 0, 0}}, // (118, 41) + { 0, { 0, 0, 0}}, // (119, 41) + { 0, { 0, 0, 0}}, // (120, 41) + { 0, { 0, 0, 0}}, // (121, 41) + { 0, { 0, 0, 0}}, // (122, 41) + { 0, { 0, 0, 0}}, // (123, 41) + { 0, { 0, 0, 0}}, // (124, 41) + { 0, { 0, 0, 0}}, // (125, 41) + { 0, { 0, 0, 0}}, // (126, 41) + { 0, { 0, 0, 0}}, // (127, 41) + { 0, { 0, 0, 0}}, // (128, 41) + { 0, { 0, 0, 0}}, // (129, 41) + { 0, { 0, 0, 0}}, // (130, 41) + { 0, { 0, 0, 0}}, // (131, 41) + { 0, { 0, 0, 0}}, // (132, 41) + { 0, { 0, 0, 0}}, // (133, 41) + { 0, { 0, 0, 0}}, // (134, 41) + { 0, { 0, 0, 0}}, // (135, 41) + { 0, { 0, 0, 0}}, // (136, 41) + { 0, { 0, 0, 0}}, // (137, 41) + { 0, { 0, 0, 0}}, // (138, 41) + { 0, { 0, 0, 0}}, // (139, 41) + { 0, { 0, 0, 0}}, // (140, 41) + { 0, { 0, 0, 0}}, // (141, 41) + { 0, { 0, 0, 0}}, // (142, 41) + { 0, { 0, 0, 0}}, // (143, 41) + { 0, { 0, 0, 0}}, // (144, 41) + { 0, { 0, 0, 0}}, // (145, 41) + { 0, { 0, 0, 0}}, // (146, 41) + { 0, { 0, 0, 0}}, // (147, 41) + { 0, { 0, 0, 0}}, // (148, 41) + { 0, { 0, 0, 0}}, // (149, 41) + { 0, { 0, 0, 0}}, // (150, 41) + { 0, { 0, 0, 0}}, // (151, 41) + { 0, { 0, 0, 0}}, // (152, 41) + { 0, { 0, 0, 0}}, // (153, 41) + { 0, { 0, 0, 0}}, // (154, 41) + { 0, { 0, 0, 0}}, // (155, 41) + { 0, { 0, 0, 0}}, // (156, 41) + { 0, { 0, 0, 0}}, // (157, 41) + { 0, { 0, 0, 0}}, // (158, 41) + { 0, { 0, 0, 0}}, // (159, 41) + { 0, { 0, 0, 0}}, // (160, 41) + { 0, { 0, 0, 0}}, // (161, 41) + { 0, { 0, 0, 0}}, // (162, 41) + { 75, { 0, 0, 0}}, // (163, 41) + {128, { 0, 0, 0}}, // (164, 41) + {128, { 0, 0, 0}}, // (165, 41) + {128, { 0, 0, 0}}, // (166, 41) + {128, { 0, 0, 0}}, // (167, 41) + {128, { 0, 0, 0}}, // (168, 41) + {128, { 0, 0, 0}}, // (169, 41) + {128, { 0, 0, 0}}, // (170, 41) + {128, { 0, 0, 0}}, // (171, 41) + {128, { 0, 0, 0}}, // (172, 41) + {128, { 0, 0, 0}}, // (173, 41) + {128, { 0, 0, 0}}, // (174, 41) + {128, { 0, 0, 0}}, // (175, 41) + {128, { 0, 0, 0}}, // (176, 41) + {128, { 0, 0, 0}}, // (177, 41) + {128, { 0, 0, 0}}, // (178, 41) + {128, { 0, 0, 0}}, // (179, 41) + {128, { 0, 0, 0}}, // ( 0, 42) + {128, { 0, 0, 0}}, // ( 1, 42) + {128, { 0, 0, 0}}, // ( 2, 42) + {128, { 0, 0, 0}}, // ( 3, 42) + {128, { 0, 0, 0}}, // ( 4, 42) + {128, { 0, 0, 0}}, // ( 5, 42) + {128, { 0, 0, 0}}, // ( 6, 42) + {128, { 0, 0, 0}}, // ( 7, 42) + {128, { 0, 0, 0}}, // ( 8, 42) + {128, { 0, 0, 0}}, // ( 9, 42) + {128, { 0, 0, 0}}, // ( 10, 42) + {128, { 0, 0, 0}}, // ( 11, 42) + {128, { 0, 0, 0}}, // ( 12, 42) + {128, { 0, 0, 0}}, // ( 13, 42) + {128, { 0, 0, 0}}, // ( 14, 42) + {114, { 0, 0, 0}}, // ( 15, 42) + { 7, { 0, 0, 0}}, // ( 16, 42) + { 0, { 0, 0, 0}}, // ( 17, 42) + { 0, { 0, 0, 0}}, // ( 18, 42) + { 0, { 0, 0, 0}}, // ( 19, 42) + { 0, { 0, 0, 0}}, // ( 20, 42) + { 0, { 0, 0, 0}}, // ( 21, 42) + { 0, { 0, 0, 0}}, // ( 22, 42) + { 0, { 0, 0, 0}}, // ( 23, 42) + { 0, { 0, 0, 0}}, // ( 24, 42) + { 0, { 0, 0, 0}}, // ( 25, 42) + { 0, { 0, 0, 0}}, // ( 26, 42) + { 0, { 0, 0, 0}}, // ( 27, 42) + { 0, { 0, 0, 0}}, // ( 28, 42) + { 0, { 0, 0, 0}}, // ( 29, 42) + { 0, { 0, 0, 0}}, // ( 30, 42) + { 0, { 0, 0, 0}}, // ( 31, 42) + { 0, { 0, 0, 0}}, // ( 32, 42) + { 0, { 0, 0, 0}}, // ( 33, 42) + { 0, { 0, 0, 0}}, // ( 34, 42) + { 0, { 0, 0, 0}}, // ( 35, 42) + { 0, { 0, 0, 0}}, // ( 36, 42) + { 0, { 0, 0, 0}}, // ( 37, 42) + { 0, { 0, 0, 0}}, // ( 38, 42) + { 0, { 0, 0, 0}}, // ( 39, 42) + { 0, { 0, 0, 0}}, // ( 40, 42) + { 0, { 0, 0, 0}}, // ( 41, 42) + { 0, { 0, 0, 0}}, // ( 42, 42) + { 0, { 0, 0, 0}}, // ( 43, 42) + { 0, { 0, 0, 0}}, // ( 44, 42) + { 0, { 0, 0, 0}}, // ( 45, 42) + { 0, { 0, 0, 0}}, // ( 46, 42) + { 0, { 0, 0, 0}}, // ( 47, 42) + { 0, { 0, 0, 0}}, // ( 48, 42) + { 0, { 0, 0, 0}}, // ( 49, 42) + { 0, { 0, 0, 0}}, // ( 50, 42) + { 0, { 0, 0, 0}}, // ( 51, 42) + { 0, { 0, 0, 0}}, // ( 52, 42) + { 0, { 0, 0, 0}}, // ( 53, 42) + { 0, { 0, 0, 0}}, // ( 54, 42) + { 0, { 0, 0, 0}}, // ( 55, 42) + { 0, { 0, 0, 0}}, // ( 56, 42) + { 0, { 0, 0, 0}}, // ( 57, 42) + { 0, { 0, 0, 0}}, // ( 58, 42) + { 0, { 0, 0, 0}}, // ( 59, 42) + { 0, { 0, 0, 0}}, // ( 60, 42) + { 0, { 0, 0, 0}}, // ( 61, 42) + { 0, { 0, 0, 0}}, // ( 62, 42) + { 0, { 0, 0, 0}}, // ( 63, 42) + { 0, { 0, 0, 0}}, // ( 64, 42) + { 0, { 0, 0, 0}}, // ( 65, 42) + { 0, { 0, 0, 0}}, // ( 66, 42) + { 0, { 0, 0, 0}}, // ( 67, 42) + { 0, { 0, 0, 0}}, // ( 68, 42) + { 0, { 0, 0, 0}}, // ( 69, 42) + { 0, { 0, 0, 0}}, // ( 70, 42) + { 0, { 0, 0, 0}}, // ( 71, 42) + { 0, { 0, 0, 0}}, // ( 72, 42) + { 0, { 0, 0, 0}}, // ( 73, 42) + { 0, { 0, 0, 0}}, // ( 74, 42) + { 0, { 0, 0, 0}}, // ( 75, 42) + { 0, { 0, 0, 0}}, // ( 76, 42) + { 0, { 0, 0, 0}}, // ( 77, 42) + { 0, { 0, 0, 0}}, // ( 78, 42) + { 0, { 0, 0, 0}}, // ( 79, 42) + { 0, { 0, 0, 0}}, // ( 80, 42) + { 0, { 0, 0, 0}}, // ( 81, 42) + { 0, { 0, 0, 0}}, // ( 82, 42) + { 0, { 0, 0, 0}}, // ( 83, 42) + { 0, { 0, 0, 0}}, // ( 84, 42) + { 0, { 0, 0, 0}}, // ( 85, 42) + { 0, { 0, 0, 0}}, // ( 86, 42) + { 0, { 0, 0, 0}}, // ( 87, 42) + { 0, { 0, 0, 0}}, // ( 88, 42) + { 0, { 0, 0, 0}}, // ( 89, 42) + { 0, { 0, 0, 0}}, // ( 90, 42) + { 0, { 0, 0, 0}}, // ( 91, 42) + { 0, { 0, 0, 0}}, // ( 92, 42) + { 0, { 0, 0, 0}}, // ( 93, 42) + { 0, { 0, 0, 0}}, // ( 94, 42) + { 0, { 0, 0, 0}}, // ( 95, 42) + { 0, { 0, 0, 0}}, // ( 96, 42) + { 0, { 0, 0, 0}}, // ( 97, 42) + { 0, { 0, 0, 0}}, // ( 98, 42) + { 0, { 0, 0, 0}}, // ( 99, 42) + { 0, { 0, 0, 0}}, // (100, 42) + { 0, { 0, 0, 0}}, // (101, 42) + { 0, { 0, 0, 0}}, // (102, 42) + { 0, { 0, 0, 0}}, // (103, 42) + { 0, { 0, 0, 0}}, // (104, 42) + { 0, { 0, 0, 0}}, // (105, 42) + { 0, { 0, 0, 0}}, // (106, 42) + { 0, { 0, 0, 0}}, // (107, 42) + { 0, { 0, 0, 0}}, // (108, 42) + { 0, { 0, 0, 0}}, // (109, 42) + { 0, { 0, 0, 0}}, // (110, 42) + { 0, { 0, 0, 0}}, // (111, 42) + { 0, { 0, 0, 0}}, // (112, 42) + { 0, { 0, 0, 0}}, // (113, 42) + { 0, { 0, 0, 0}}, // (114, 42) + { 0, { 0, 0, 0}}, // (115, 42) + { 0, { 0, 0, 0}}, // (116, 42) + { 0, { 0, 0, 0}}, // (117, 42) + { 0, { 0, 0, 0}}, // (118, 42) + { 0, { 0, 0, 0}}, // (119, 42) + { 0, { 0, 0, 0}}, // (120, 42) + { 0, { 0, 0, 0}}, // (121, 42) + { 0, { 0, 0, 0}}, // (122, 42) + { 0, { 0, 0, 0}}, // (123, 42) + { 0, { 0, 0, 0}}, // (124, 42) + { 0, { 0, 0, 0}}, // (125, 42) + { 0, { 0, 0, 0}}, // (126, 42) + { 0, { 0, 0, 0}}, // (127, 42) + { 0, { 0, 0, 0}}, // (128, 42) + { 0, { 0, 0, 0}}, // (129, 42) + { 0, { 0, 0, 0}}, // (130, 42) + { 0, { 0, 0, 0}}, // (131, 42) + { 0, { 0, 0, 0}}, // (132, 42) + { 0, { 0, 0, 0}}, // (133, 42) + { 0, { 0, 0, 0}}, // (134, 42) + { 0, { 0, 0, 0}}, // (135, 42) + { 0, { 0, 0, 0}}, // (136, 42) + { 0, { 0, 0, 0}}, // (137, 42) + { 0, { 0, 0, 0}}, // (138, 42) + { 0, { 0, 0, 0}}, // (139, 42) + { 0, { 0, 0, 0}}, // (140, 42) + { 0, { 0, 0, 0}}, // (141, 42) + { 0, { 0, 0, 0}}, // (142, 42) + { 0, { 0, 0, 0}}, // (143, 42) + { 0, { 0, 0, 0}}, // (144, 42) + { 0, { 0, 0, 0}}, // (145, 42) + { 0, { 0, 0, 0}}, // (146, 42) + { 0, { 0, 0, 0}}, // (147, 42) + { 0, { 0, 0, 0}}, // (148, 42) + { 0, { 0, 0, 0}}, // (149, 42) + { 0, { 0, 0, 0}}, // (150, 42) + { 0, { 0, 0, 0}}, // (151, 42) + { 0, { 0, 0, 0}}, // (152, 42) + { 0, { 0, 0, 0}}, // (153, 42) + { 0, { 0, 0, 0}}, // (154, 42) + { 0, { 0, 0, 0}}, // (155, 42) + { 0, { 0, 0, 0}}, // (156, 42) + { 0, { 0, 0, 0}}, // (157, 42) + { 0, { 0, 0, 0}}, // (158, 42) + { 0, { 0, 0, 0}}, // (159, 42) + { 0, { 0, 0, 0}}, // (160, 42) + { 0, { 0, 0, 0}}, // (161, 42) + { 0, { 0, 0, 0}}, // (162, 42) + { 7, { 0, 0, 0}}, // (163, 42) + {114, { 0, 0, 0}}, // (164, 42) + {128, { 0, 0, 0}}, // (165, 42) + {128, { 0, 0, 0}}, // (166, 42) + {128, { 0, 0, 0}}, // (167, 42) + {128, { 0, 0, 0}}, // (168, 42) + {128, { 0, 0, 0}}, // (169, 42) + {128, { 0, 0, 0}}, // (170, 42) + {128, { 0, 0, 0}}, // (171, 42) + {128, { 0, 0, 0}}, // (172, 42) + {128, { 0, 0, 0}}, // (173, 42) + {128, { 0, 0, 0}}, // (174, 42) + {128, { 0, 0, 0}}, // (175, 42) + {128, { 0, 0, 0}}, // (176, 42) + {128, { 0, 0, 0}}, // (177, 42) + {128, { 0, 0, 0}}, // (178, 42) + {128, { 0, 0, 0}}, // (179, 42) + {128, { 0, 0, 0}}, // ( 0, 43) + {128, { 0, 0, 0}}, // ( 1, 43) + {128, { 0, 0, 0}}, // ( 2, 43) + {128, { 0, 0, 0}}, // ( 3, 43) + {128, { 0, 0, 0}}, // ( 4, 43) + {128, { 0, 0, 0}}, // ( 5, 43) + {128, { 0, 0, 0}}, // ( 6, 43) + {128, { 0, 0, 0}}, // ( 7, 43) + {128, { 0, 0, 0}}, // ( 8, 43) + {128, { 0, 0, 0}}, // ( 9, 43) + {128, { 0, 0, 0}}, // ( 10, 43) + {128, { 0, 0, 0}}, // ( 11, 43) + {128, { 0, 0, 0}}, // ( 12, 43) + {128, { 0, 0, 0}}, // ( 13, 43) + {128, { 0, 0, 0}}, // ( 14, 43) + { 38, { 0, 0, 0}}, // ( 15, 43) + { 0, { 0, 0, 0}}, // ( 16, 43) + { 0, { 0, 0, 0}}, // ( 17, 43) + { 0, { 0, 0, 0}}, // ( 18, 43) + { 0, { 0, 0, 0}}, // ( 19, 43) + { 0, { 0, 0, 0}}, // ( 20, 43) + { 0, { 0, 0, 0}}, // ( 21, 43) + { 0, { 0, 0, 0}}, // ( 22, 43) + { 0, { 0, 0, 0}}, // ( 23, 43) + { 0, { 0, 0, 0}}, // ( 24, 43) + { 0, { 0, 0, 0}}, // ( 25, 43) + { 0, { 0, 0, 0}}, // ( 26, 43) + { 0, { 0, 0, 0}}, // ( 27, 43) + { 0, { 0, 0, 0}}, // ( 28, 43) + { 0, { 0, 0, 0}}, // ( 29, 43) + { 0, { 0, 0, 0}}, // ( 30, 43) + { 0, { 0, 0, 0}}, // ( 31, 43) + { 0, { 0, 0, 0}}, // ( 32, 43) + { 0, { 0, 0, 0}}, // ( 33, 43) + { 0, { 0, 0, 0}}, // ( 34, 43) + { 0, { 0, 0, 0}}, // ( 35, 43) + { 0, { 0, 0, 0}}, // ( 36, 43) + { 0, { 0, 0, 0}}, // ( 37, 43) + { 0, { 0, 0, 0}}, // ( 38, 43) + { 0, { 0, 0, 0}}, // ( 39, 43) + { 0, { 0, 0, 0}}, // ( 40, 43) + { 0, { 0, 0, 0}}, // ( 41, 43) + { 0, { 0, 0, 0}}, // ( 42, 43) + { 0, { 0, 0, 0}}, // ( 43, 43) + { 0, { 0, 0, 0}}, // ( 44, 43) + { 0, { 0, 0, 0}}, // ( 45, 43) + { 0, { 0, 0, 0}}, // ( 46, 43) + { 0, { 0, 0, 0}}, // ( 47, 43) + { 0, { 0, 0, 0}}, // ( 48, 43) + { 0, { 0, 0, 0}}, // ( 49, 43) + { 0, { 0, 0, 0}}, // ( 50, 43) + { 0, { 0, 0, 0}}, // ( 51, 43) + { 0, { 0, 0, 0}}, // ( 52, 43) + { 0, { 0, 0, 0}}, // ( 53, 43) + { 0, { 0, 0, 0}}, // ( 54, 43) + { 0, { 0, 0, 0}}, // ( 55, 43) + { 0, { 0, 0, 0}}, // ( 56, 43) + { 0, { 0, 0, 0}}, // ( 57, 43) + { 0, { 0, 0, 0}}, // ( 58, 43) + { 0, { 0, 0, 0}}, // ( 59, 43) + { 0, { 0, 0, 0}}, // ( 60, 43) + { 0, { 0, 0, 0}}, // ( 61, 43) + { 0, { 0, 0, 0}}, // ( 62, 43) + { 0, { 0, 0, 0}}, // ( 63, 43) + { 0, { 0, 0, 0}}, // ( 64, 43) + { 0, { 0, 0, 0}}, // ( 65, 43) + { 0, { 0, 0, 0}}, // ( 66, 43) + { 0, { 0, 0, 0}}, // ( 67, 43) + { 0, { 0, 0, 0}}, // ( 68, 43) + { 0, { 0, 0, 0}}, // ( 69, 43) + { 0, { 0, 0, 0}}, // ( 70, 43) + { 0, { 0, 0, 0}}, // ( 71, 43) + { 0, { 0, 0, 0}}, // ( 72, 43) + { 0, { 0, 0, 0}}, // ( 73, 43) + { 0, { 0, 0, 0}}, // ( 74, 43) + { 0, { 0, 0, 0}}, // ( 75, 43) + { 0, { 0, 0, 0}}, // ( 76, 43) + { 0, { 0, 0, 0}}, // ( 77, 43) + { 0, { 0, 0, 0}}, // ( 78, 43) + { 0, { 0, 0, 0}}, // ( 79, 43) + { 0, { 0, 0, 0}}, // ( 80, 43) + { 0, { 0, 0, 0}}, // ( 81, 43) + { 0, { 0, 0, 0}}, // ( 82, 43) + { 0, { 0, 0, 0}}, // ( 83, 43) + { 0, { 0, 0, 0}}, // ( 84, 43) + { 0, { 0, 0, 0}}, // ( 85, 43) + { 0, { 0, 0, 0}}, // ( 86, 43) + { 0, { 0, 0, 0}}, // ( 87, 43) + { 0, { 0, 0, 0}}, // ( 88, 43) + { 0, { 0, 0, 0}}, // ( 89, 43) + { 0, { 0, 0, 0}}, // ( 90, 43) + { 0, { 0, 0, 0}}, // ( 91, 43) + { 0, { 0, 0, 0}}, // ( 92, 43) + { 0, { 0, 0, 0}}, // ( 93, 43) + { 0, { 0, 0, 0}}, // ( 94, 43) + { 0, { 0, 0, 0}}, // ( 95, 43) + { 0, { 0, 0, 0}}, // ( 96, 43) + { 0, { 0, 0, 0}}, // ( 97, 43) + { 0, { 0, 0, 0}}, // ( 98, 43) + { 0, { 0, 0, 0}}, // ( 99, 43) + { 0, { 0, 0, 0}}, // (100, 43) + { 0, { 0, 0, 0}}, // (101, 43) + { 0, { 0, 0, 0}}, // (102, 43) + { 0, { 0, 0, 0}}, // (103, 43) + { 0, { 0, 0, 0}}, // (104, 43) + { 0, { 0, 0, 0}}, // (105, 43) + { 0, { 0, 0, 0}}, // (106, 43) + { 0, { 0, 0, 0}}, // (107, 43) + { 0, { 0, 0, 0}}, // (108, 43) + { 0, { 0, 0, 0}}, // (109, 43) + { 0, { 0, 0, 0}}, // (110, 43) + { 0, { 0, 0, 0}}, // (111, 43) + { 0, { 0, 0, 0}}, // (112, 43) + { 0, { 0, 0, 0}}, // (113, 43) + { 0, { 0, 0, 0}}, // (114, 43) + { 0, { 0, 0, 0}}, // (115, 43) + { 0, { 0, 0, 0}}, // (116, 43) + { 0, { 0, 0, 0}}, // (117, 43) + { 0, { 0, 0, 0}}, // (118, 43) + { 0, { 0, 0, 0}}, // (119, 43) + { 0, { 0, 0, 0}}, // (120, 43) + { 0, { 0, 0, 0}}, // (121, 43) + { 0, { 0, 0, 0}}, // (122, 43) + { 0, { 0, 0, 0}}, // (123, 43) + { 0, { 0, 0, 0}}, // (124, 43) + { 0, { 0, 0, 0}}, // (125, 43) + { 0, { 0, 0, 0}}, // (126, 43) + { 0, { 0, 0, 0}}, // (127, 43) + { 0, { 0, 0, 0}}, // (128, 43) + { 0, { 0, 0, 0}}, // (129, 43) + { 0, { 0, 0, 0}}, // (130, 43) + { 0, { 0, 0, 0}}, // (131, 43) + { 0, { 0, 0, 0}}, // (132, 43) + { 0, { 0, 0, 0}}, // (133, 43) + { 0, { 0, 0, 0}}, // (134, 43) + { 0, { 0, 0, 0}}, // (135, 43) + { 0, { 0, 0, 0}}, // (136, 43) + { 0, { 0, 0, 0}}, // (137, 43) + { 0, { 0, 0, 0}}, // (138, 43) + { 0, { 0, 0, 0}}, // (139, 43) + { 0, { 0, 0, 0}}, // (140, 43) + { 0, { 0, 0, 0}}, // (141, 43) + { 0, { 0, 0, 0}}, // (142, 43) + { 0, { 0, 0, 0}}, // (143, 43) + { 0, { 0, 0, 0}}, // (144, 43) + { 0, { 0, 0, 0}}, // (145, 43) + { 0, { 0, 0, 0}}, // (146, 43) + { 0, { 0, 0, 0}}, // (147, 43) + { 0, { 0, 0, 0}}, // (148, 43) + { 0, { 0, 0, 0}}, // (149, 43) + { 0, { 0, 0, 0}}, // (150, 43) + { 0, { 0, 0, 0}}, // (151, 43) + { 0, { 0, 0, 0}}, // (152, 43) + { 0, { 0, 0, 0}}, // (153, 43) + { 0, { 0, 0, 0}}, // (154, 43) + { 0, { 0, 0, 0}}, // (155, 43) + { 0, { 0, 0, 0}}, // (156, 43) + { 0, { 0, 0, 0}}, // (157, 43) + { 0, { 0, 0, 0}}, // (158, 43) + { 0, { 0, 0, 0}}, // (159, 43) + { 0, { 0, 0, 0}}, // (160, 43) + { 0, { 0, 0, 0}}, // (161, 43) + { 0, { 0, 0, 0}}, // (162, 43) + { 0, { 0, 0, 0}}, // (163, 43) + { 38, { 0, 0, 0}}, // (164, 43) + {128, { 0, 0, 0}}, // (165, 43) + {128, { 0, 0, 0}}, // (166, 43) + {128, { 0, 0, 0}}, // (167, 43) + {128, { 0, 0, 0}}, // (168, 43) + {128, { 0, 0, 0}}, // (169, 43) + {128, { 0, 0, 0}}, // (170, 43) + {128, { 0, 0, 0}}, // (171, 43) + {128, { 0, 0, 0}}, // (172, 43) + {128, { 0, 0, 0}}, // (173, 43) + {128, { 0, 0, 0}}, // (174, 43) + {128, { 0, 0, 0}}, // (175, 43) + {128, { 0, 0, 0}}, // (176, 43) + {128, { 0, 0, 0}}, // (177, 43) + {128, { 0, 0, 0}}, // (178, 43) + {128, { 0, 0, 0}}, // (179, 43) + {128, { 0, 0, 0}}, // ( 0, 44) + {128, { 0, 0, 0}}, // ( 1, 44) + {128, { 0, 0, 0}}, // ( 2, 44) + {128, { 0, 0, 0}}, // ( 3, 44) + {128, { 0, 0, 0}}, // ( 4, 44) + {128, { 0, 0, 0}}, // ( 5, 44) + {128, { 0, 0, 0}}, // ( 6, 44) + {128, { 0, 0, 0}}, // ( 7, 44) + {128, { 0, 0, 0}}, // ( 8, 44) + {128, { 0, 0, 0}}, // ( 9, 44) + {128, { 0, 0, 0}}, // ( 10, 44) + {128, { 0, 0, 0}}, // ( 11, 44) + {128, { 0, 0, 0}}, // ( 12, 44) + {128, { 0, 0, 0}}, // ( 13, 44) + { 86, { 0, 0, 0}}, // ( 14, 44) + { 0, { 0, 0, 0}}, // ( 15, 44) + { 0, { 0, 0, 0}}, // ( 16, 44) + { 0, { 0, 0, 0}}, // ( 17, 44) + { 0, { 0, 0, 0}}, // ( 18, 44) + { 0, { 0, 0, 0}}, // ( 19, 44) + { 0, { 0, 0, 0}}, // ( 20, 44) + { 0, { 0, 0, 0}}, // ( 21, 44) + { 0, { 0, 0, 0}}, // ( 22, 44) + { 0, { 0, 0, 0}}, // ( 23, 44) + { 0, { 0, 0, 0}}, // ( 24, 44) + { 0, { 0, 0, 0}}, // ( 25, 44) + { 0, { 0, 0, 0}}, // ( 26, 44) + { 0, { 0, 0, 0}}, // ( 27, 44) + { 0, { 0, 0, 0}}, // ( 28, 44) + { 0, { 0, 0, 0}}, // ( 29, 44) + { 0, { 0, 0, 0}}, // ( 30, 44) + { 0, { 0, 0, 0}}, // ( 31, 44) + { 0, { 0, 0, 0}}, // ( 32, 44) + { 0, { 0, 0, 0}}, // ( 33, 44) + { 0, { 0, 0, 0}}, // ( 34, 44) + { 0, { 0, 0, 0}}, // ( 35, 44) + { 0, { 0, 0, 0}}, // ( 36, 44) + { 0, { 0, 0, 0}}, // ( 37, 44) + { 0, { 0, 0, 0}}, // ( 38, 44) + { 0, { 0, 0, 0}}, // ( 39, 44) + { 0, { 0, 0, 0}}, // ( 40, 44) + { 0, { 0, 0, 0}}, // ( 41, 44) + { 0, { 0, 0, 0}}, // ( 42, 44) + { 0, { 0, 0, 0}}, // ( 43, 44) + { 0, { 0, 0, 0}}, // ( 44, 44) + { 0, { 0, 0, 0}}, // ( 45, 44) + { 0, { 0, 0, 0}}, // ( 46, 44) + { 0, { 0, 0, 0}}, // ( 47, 44) + { 0, { 0, 0, 0}}, // ( 48, 44) + { 0, { 0, 0, 0}}, // ( 49, 44) + { 0, { 0, 0, 0}}, // ( 50, 44) + { 0, { 0, 0, 0}}, // ( 51, 44) + { 0, { 0, 0, 0}}, // ( 52, 44) + { 0, { 0, 0, 0}}, // ( 53, 44) + { 0, { 0, 0, 0}}, // ( 54, 44) + { 0, { 0, 0, 0}}, // ( 55, 44) + { 0, { 0, 0, 0}}, // ( 56, 44) + { 0, { 0, 0, 0}}, // ( 57, 44) + { 0, { 0, 0, 0}}, // ( 58, 44) + { 0, { 0, 0, 0}}, // ( 59, 44) + { 0, { 0, 0, 0}}, // ( 60, 44) + { 0, { 0, 0, 0}}, // ( 61, 44) + { 0, { 0, 0, 0}}, // ( 62, 44) + { 0, { 0, 0, 0}}, // ( 63, 44) + { 0, { 0, 0, 0}}, // ( 64, 44) + { 0, { 0, 0, 0}}, // ( 65, 44) + { 0, { 0, 0, 0}}, // ( 66, 44) + { 0, { 0, 0, 0}}, // ( 67, 44) + { 0, { 0, 0, 0}}, // ( 68, 44) + { 0, { 0, 0, 0}}, // ( 69, 44) + { 0, { 0, 0, 0}}, // ( 70, 44) + { 0, { 0, 0, 0}}, // ( 71, 44) + { 0, { 0, 0, 0}}, // ( 72, 44) + { 0, { 0, 0, 0}}, // ( 73, 44) + { 0, { 0, 0, 0}}, // ( 74, 44) + { 0, { 0, 0, 0}}, // ( 75, 44) + { 0, { 0, 0, 0}}, // ( 76, 44) + { 0, { 0, 0, 0}}, // ( 77, 44) + { 0, { 0, 0, 0}}, // ( 78, 44) + { 0, { 0, 0, 0}}, // ( 79, 44) + { 0, { 0, 0, 0}}, // ( 80, 44) + { 0, { 0, 0, 0}}, // ( 81, 44) + { 0, { 0, 0, 0}}, // ( 82, 44) + { 0, { 0, 0, 0}}, // ( 83, 44) + { 0, { 0, 0, 0}}, // ( 84, 44) + { 0, { 0, 0, 0}}, // ( 85, 44) + { 0, { 0, 0, 0}}, // ( 86, 44) + { 0, { 0, 0, 0}}, // ( 87, 44) + { 0, { 0, 0, 0}}, // ( 88, 44) + { 0, { 0, 0, 0}}, // ( 89, 44) + { 0, { 0, 0, 0}}, // ( 90, 44) + { 0, { 0, 0, 0}}, // ( 91, 44) + { 0, { 0, 0, 0}}, // ( 92, 44) + { 0, { 0, 0, 0}}, // ( 93, 44) + { 0, { 0, 0, 0}}, // ( 94, 44) + { 0, { 0, 0, 0}}, // ( 95, 44) + { 0, { 0, 0, 0}}, // ( 96, 44) + { 0, { 0, 0, 0}}, // ( 97, 44) + { 0, { 0, 0, 0}}, // ( 98, 44) + { 0, { 0, 0, 0}}, // ( 99, 44) + { 0, { 0, 0, 0}}, // (100, 44) + { 0, { 0, 0, 0}}, // (101, 44) + { 0, { 0, 0, 0}}, // (102, 44) + { 0, { 0, 0, 0}}, // (103, 44) + { 0, { 0, 0, 0}}, // (104, 44) + { 0, { 0, 0, 0}}, // (105, 44) + { 0, { 0, 0, 0}}, // (106, 44) + { 0, { 0, 0, 0}}, // (107, 44) + { 0, { 0, 0, 0}}, // (108, 44) + { 0, { 0, 0, 0}}, // (109, 44) + { 0, { 0, 0, 0}}, // (110, 44) + { 0, { 0, 0, 0}}, // (111, 44) + { 0, { 0, 0, 0}}, // (112, 44) + { 0, { 0, 0, 0}}, // (113, 44) + { 0, { 0, 0, 0}}, // (114, 44) + { 0, { 0, 0, 0}}, // (115, 44) + { 0, { 0, 0, 0}}, // (116, 44) + { 0, { 0, 0, 0}}, // (117, 44) + { 0, { 0, 0, 0}}, // (118, 44) + { 0, { 0, 0, 0}}, // (119, 44) + { 0, { 0, 0, 0}}, // (120, 44) + { 0, { 0, 0, 0}}, // (121, 44) + { 0, { 0, 0, 0}}, // (122, 44) + { 0, { 0, 0, 0}}, // (123, 44) + { 0, { 0, 0, 0}}, // (124, 44) + { 0, { 0, 0, 0}}, // (125, 44) + { 0, { 0, 0, 0}}, // (126, 44) + { 0, { 0, 0, 0}}, // (127, 44) + { 0, { 0, 0, 0}}, // (128, 44) + { 0, { 0, 0, 0}}, // (129, 44) + { 0, { 0, 0, 0}}, // (130, 44) + { 0, { 0, 0, 0}}, // (131, 44) + { 0, { 0, 0, 0}}, // (132, 44) + { 0, { 0, 0, 0}}, // (133, 44) + { 0, { 0, 0, 0}}, // (134, 44) + { 0, { 0, 0, 0}}, // (135, 44) + { 0, { 0, 0, 0}}, // (136, 44) + { 0, { 0, 0, 0}}, // (137, 44) + { 0, { 0, 0, 0}}, // (138, 44) + { 0, { 0, 0, 0}}, // (139, 44) + { 0, { 0, 0, 0}}, // (140, 44) + { 0, { 0, 0, 0}}, // (141, 44) + { 0, { 0, 0, 0}}, // (142, 44) + { 0, { 0, 0, 0}}, // (143, 44) + { 0, { 0, 0, 0}}, // (144, 44) + { 0, { 0, 0, 0}}, // (145, 44) + { 0, { 0, 0, 0}}, // (146, 44) + { 0, { 0, 0, 0}}, // (147, 44) + { 0, { 0, 0, 0}}, // (148, 44) + { 0, { 0, 0, 0}}, // (149, 44) + { 0, { 0, 0, 0}}, // (150, 44) + { 0, { 0, 0, 0}}, // (151, 44) + { 0, { 0, 0, 0}}, // (152, 44) + { 0, { 0, 0, 0}}, // (153, 44) + { 0, { 0, 0, 0}}, // (154, 44) + { 0, { 0, 0, 0}}, // (155, 44) + { 0, { 0, 0, 0}}, // (156, 44) + { 0, { 0, 0, 0}}, // (157, 44) + { 0, { 0, 0, 0}}, // (158, 44) + { 0, { 0, 0, 0}}, // (159, 44) + { 0, { 0, 0, 0}}, // (160, 44) + { 0, { 0, 0, 0}}, // (161, 44) + { 0, { 0, 0, 0}}, // (162, 44) + { 0, { 0, 0, 0}}, // (163, 44) + { 0, { 0, 0, 0}}, // (164, 44) + { 86, { 0, 0, 0}}, // (165, 44) + {128, { 0, 0, 0}}, // (166, 44) + {128, { 0, 0, 0}}, // (167, 44) + {128, { 0, 0, 0}}, // (168, 44) + {128, { 0, 0, 0}}, // (169, 44) + {128, { 0, 0, 0}}, // (170, 44) + {128, { 0, 0, 0}}, // (171, 44) + {128, { 0, 0, 0}}, // (172, 44) + {128, { 0, 0, 0}}, // (173, 44) + {128, { 0, 0, 0}}, // (174, 44) + {128, { 0, 0, 0}}, // (175, 44) + {128, { 0, 0, 0}}, // (176, 44) + {128, { 0, 0, 0}}, // (177, 44) + {128, { 0, 0, 0}}, // (178, 44) + {128, { 0, 0, 0}}, // (179, 44) + {128, { 0, 0, 0}}, // ( 0, 45) + {128, { 0, 0, 0}}, // ( 1, 45) + {128, { 0, 0, 0}}, // ( 2, 45) + {128, { 0, 0, 0}}, // ( 3, 45) + {128, { 0, 0, 0}}, // ( 4, 45) + {128, { 0, 0, 0}}, // ( 5, 45) + {128, { 0, 0, 0}}, // ( 6, 45) + {128, { 0, 0, 0}}, // ( 7, 45) + {128, { 0, 0, 0}}, // ( 8, 45) + {128, { 0, 0, 0}}, // ( 9, 45) + {128, { 0, 0, 0}}, // ( 10, 45) + {128, { 0, 0, 0}}, // ( 11, 45) + {128, { 0, 0, 0}}, // ( 12, 45) + {124, { 0, 0, 0}}, // ( 13, 45) + { 16, { 0, 0, 0}}, // ( 14, 45) + { 0, { 0, 0, 0}}, // ( 15, 45) + { 0, { 0, 0, 0}}, // ( 16, 45) + { 0, { 0, 0, 0}}, // ( 17, 45) + { 0, { 0, 0, 0}}, // ( 18, 45) + { 0, { 0, 0, 0}}, // ( 19, 45) + { 0, { 0, 0, 0}}, // ( 20, 45) + { 0, { 0, 0, 0}}, // ( 21, 45) + { 0, { 0, 0, 0}}, // ( 22, 45) + { 0, { 0, 0, 0}}, // ( 23, 45) + { 0, { 0, 0, 0}}, // ( 24, 45) + { 0, { 0, 0, 0}}, // ( 25, 45) + { 0, { 0, 0, 0}}, // ( 26, 45) + { 0, { 0, 0, 0}}, // ( 27, 45) + { 0, { 0, 0, 0}}, // ( 28, 45) + { 0, { 0, 0, 0}}, // ( 29, 45) + { 0, { 0, 0, 0}}, // ( 30, 45) + { 0, { 0, 0, 0}}, // ( 31, 45) + { 0, { 0, 0, 0}}, // ( 32, 45) + { 0, { 0, 0, 0}}, // ( 33, 45) + { 0, { 0, 0, 0}}, // ( 34, 45) + { 0, { 0, 0, 0}}, // ( 35, 45) + { 0, { 0, 0, 0}}, // ( 36, 45) + { 0, { 0, 0, 0}}, // ( 37, 45) + { 0, { 0, 0, 0}}, // ( 38, 45) + { 0, { 0, 0, 0}}, // ( 39, 45) + { 0, { 0, 0, 0}}, // ( 40, 45) + { 0, { 0, 0, 0}}, // ( 41, 45) + { 0, { 0, 0, 0}}, // ( 42, 45) + { 0, { 0, 0, 0}}, // ( 43, 45) + { 0, { 0, 0, 0}}, // ( 44, 45) + { 0, { 0, 0, 0}}, // ( 45, 45) + { 0, { 0, 0, 0}}, // ( 46, 45) + { 0, { 0, 0, 0}}, // ( 47, 45) + { 0, { 0, 0, 0}}, // ( 48, 45) + { 0, { 0, 0, 0}}, // ( 49, 45) + { 0, { 0, 0, 0}}, // ( 50, 45) + { 0, { 0, 0, 0}}, // ( 51, 45) + { 0, { 0, 0, 0}}, // ( 52, 45) + { 0, { 0, 0, 0}}, // ( 53, 45) + { 0, { 0, 0, 0}}, // ( 54, 45) + { 0, { 0, 0, 0}}, // ( 55, 45) + { 0, { 0, 0, 0}}, // ( 56, 45) + { 0, { 0, 0, 0}}, // ( 57, 45) + { 0, { 0, 0, 0}}, // ( 58, 45) + { 0, { 0, 0, 0}}, // ( 59, 45) + { 0, { 0, 0, 0}}, // ( 60, 45) + { 0, { 0, 0, 0}}, // ( 61, 45) + { 0, { 0, 0, 0}}, // ( 62, 45) + { 0, { 0, 0, 0}}, // ( 63, 45) + { 0, { 0, 0, 0}}, // ( 64, 45) + { 0, { 0, 0, 0}}, // ( 65, 45) + { 0, { 0, 0, 0}}, // ( 66, 45) + { 0, { 0, 0, 0}}, // ( 67, 45) + { 0, { 0, 0, 0}}, // ( 68, 45) + { 0, { 0, 0, 0}}, // ( 69, 45) + { 0, { 0, 0, 0}}, // ( 70, 45) + { 0, { 0, 0, 0}}, // ( 71, 45) + { 0, { 0, 0, 0}}, // ( 72, 45) + { 0, { 0, 0, 0}}, // ( 73, 45) + { 0, { 0, 0, 0}}, // ( 74, 45) + { 0, { 0, 0, 0}}, // ( 75, 45) + { 0, { 0, 0, 0}}, // ( 76, 45) + { 0, { 0, 0, 0}}, // ( 77, 45) + { 0, { 0, 0, 0}}, // ( 78, 45) + { 0, { 0, 0, 0}}, // ( 79, 45) + { 0, { 0, 0, 0}}, // ( 80, 45) + { 0, { 0, 0, 0}}, // ( 81, 45) + { 0, { 0, 0, 0}}, // ( 82, 45) + { 0, { 0, 0, 0}}, // ( 83, 45) + { 0, { 0, 0, 0}}, // ( 84, 45) + { 0, { 0, 0, 0}}, // ( 85, 45) + { 0, { 0, 0, 0}}, // ( 86, 45) + { 0, { 0, 0, 0}}, // ( 87, 45) + { 0, { 0, 0, 0}}, // ( 88, 45) + { 0, { 0, 0, 0}}, // ( 89, 45) + { 0, { 0, 0, 0}}, // ( 90, 45) + { 0, { 0, 0, 0}}, // ( 91, 45) + { 0, { 0, 0, 0}}, // ( 92, 45) + { 0, { 0, 0, 0}}, // ( 93, 45) + { 0, { 0, 0, 0}}, // ( 94, 45) + { 0, { 0, 0, 0}}, // ( 95, 45) + { 0, { 0, 0, 0}}, // ( 96, 45) + { 0, { 0, 0, 0}}, // ( 97, 45) + { 0, { 0, 0, 0}}, // ( 98, 45) + { 0, { 0, 0, 0}}, // ( 99, 45) + { 0, { 0, 0, 0}}, // (100, 45) + { 0, { 0, 0, 0}}, // (101, 45) + { 0, { 0, 0, 0}}, // (102, 45) + { 0, { 0, 0, 0}}, // (103, 45) + { 0, { 0, 0, 0}}, // (104, 45) + { 0, { 0, 0, 0}}, // (105, 45) + { 0, { 0, 0, 0}}, // (106, 45) + { 0, { 0, 0, 0}}, // (107, 45) + { 0, { 0, 0, 0}}, // (108, 45) + { 0, { 0, 0, 0}}, // (109, 45) + { 0, { 0, 0, 0}}, // (110, 45) + { 0, { 0, 0, 0}}, // (111, 45) + { 0, { 0, 0, 0}}, // (112, 45) + { 0, { 0, 0, 0}}, // (113, 45) + { 0, { 0, 0, 0}}, // (114, 45) + { 0, { 0, 0, 0}}, // (115, 45) + { 0, { 0, 0, 0}}, // (116, 45) + { 0, { 0, 0, 0}}, // (117, 45) + { 0, { 0, 0, 0}}, // (118, 45) + { 0, { 0, 0, 0}}, // (119, 45) + { 0, { 0, 0, 0}}, // (120, 45) + { 0, { 0, 0, 0}}, // (121, 45) + { 0, { 0, 0, 0}}, // (122, 45) + { 0, { 0, 0, 0}}, // (123, 45) + { 0, { 0, 0, 0}}, // (124, 45) + { 0, { 0, 0, 0}}, // (125, 45) + { 0, { 0, 0, 0}}, // (126, 45) + { 0, { 0, 0, 0}}, // (127, 45) + { 0, { 0, 0, 0}}, // (128, 45) + { 0, { 0, 0, 0}}, // (129, 45) + { 0, { 0, 0, 0}}, // (130, 45) + { 0, { 0, 0, 0}}, // (131, 45) + { 0, { 0, 0, 0}}, // (132, 45) + { 0, { 0, 0, 0}}, // (133, 45) + { 0, { 0, 0, 0}}, // (134, 45) + { 0, { 0, 0, 0}}, // (135, 45) + { 0, { 0, 0, 0}}, // (136, 45) + { 0, { 0, 0, 0}}, // (137, 45) + { 0, { 0, 0, 0}}, // (138, 45) + { 0, { 0, 0, 0}}, // (139, 45) + { 0, { 0, 0, 0}}, // (140, 45) + { 0, { 0, 0, 0}}, // (141, 45) + { 0, { 0, 0, 0}}, // (142, 45) + { 0, { 0, 0, 0}}, // (143, 45) + { 0, { 0, 0, 0}}, // (144, 45) + { 0, { 0, 0, 0}}, // (145, 45) + { 0, { 0, 0, 0}}, // (146, 45) + { 0, { 0, 0, 0}}, // (147, 45) + { 0, { 0, 0, 0}}, // (148, 45) + { 0, { 0, 0, 0}}, // (149, 45) + { 0, { 0, 0, 0}}, // (150, 45) + { 0, { 0, 0, 0}}, // (151, 45) + { 0, { 0, 0, 0}}, // (152, 45) + { 0, { 0, 0, 0}}, // (153, 45) + { 0, { 0, 0, 0}}, // (154, 45) + { 0, { 0, 0, 0}}, // (155, 45) + { 0, { 0, 0, 0}}, // (156, 45) + { 0, { 0, 0, 0}}, // (157, 45) + { 0, { 0, 0, 0}}, // (158, 45) + { 0, { 0, 0, 0}}, // (159, 45) + { 0, { 0, 0, 0}}, // (160, 45) + { 0, { 0, 0, 0}}, // (161, 45) + { 0, { 0, 0, 0}}, // (162, 45) + { 0, { 0, 0, 0}}, // (163, 45) + { 0, { 0, 0, 0}}, // (164, 45) + { 16, { 0, 0, 0}}, // (165, 45) + {124, { 0, 0, 0}}, // (166, 45) + {128, { 0, 0, 0}}, // (167, 45) + {128, { 0, 0, 0}}, // (168, 45) + {128, { 0, 0, 0}}, // (169, 45) + {128, { 0, 0, 0}}, // (170, 45) + {128, { 0, 0, 0}}, // (171, 45) + {128, { 0, 0, 0}}, // (172, 45) + {128, { 0, 0, 0}}, // (173, 45) + {128, { 0, 0, 0}}, // (174, 45) + {128, { 0, 0, 0}}, // (175, 45) + {128, { 0, 0, 0}}, // (176, 45) + {128, { 0, 0, 0}}, // (177, 45) + {128, { 0, 0, 0}}, // (178, 45) + {128, { 0, 0, 0}}, // (179, 45) + {128, { 0, 0, 0}}, // ( 0, 46) + {128, { 0, 0, 0}}, // ( 1, 46) + {128, { 0, 0, 0}}, // ( 2, 46) + {128, { 0, 0, 0}}, // ( 3, 46) + {128, { 0, 0, 0}}, // ( 4, 46) + {128, { 0, 0, 0}}, // ( 5, 46) + {128, { 0, 0, 0}}, // ( 6, 46) + {128, { 0, 0, 0}}, // ( 7, 46) + {128, { 0, 0, 0}}, // ( 8, 46) + {128, { 0, 0, 0}}, // ( 9, 46) + {128, { 0, 0, 0}}, // ( 10, 46) + {128, { 0, 0, 0}}, // ( 11, 46) + {128, { 0, 0, 0}}, // ( 12, 46) + { 66, { 0, 0, 0}}, // ( 13, 46) + { 0, { 0, 0, 0}}, // ( 14, 46) + { 0, { 0, 0, 0}}, // ( 15, 46) + { 0, { 0, 0, 0}}, // ( 16, 46) + { 0, { 0, 0, 0}}, // ( 17, 46) + { 0, { 0, 0, 0}}, // ( 18, 46) + { 0, { 0, 0, 0}}, // ( 19, 46) + { 0, { 0, 0, 0}}, // ( 20, 46) + { 0, { 0, 0, 0}}, // ( 21, 46) + { 0, { 0, 0, 0}}, // ( 22, 46) + { 0, { 0, 0, 0}}, // ( 23, 46) + { 0, { 0, 0, 0}}, // ( 24, 46) + { 0, { 0, 0, 0}}, // ( 25, 46) + { 0, { 0, 0, 0}}, // ( 26, 46) + { 0, { 0, 0, 0}}, // ( 27, 46) + { 0, { 0, 0, 0}}, // ( 28, 46) + { 0, { 0, 0, 0}}, // ( 29, 46) + { 0, { 0, 0, 0}}, // ( 30, 46) + { 0, { 0, 0, 0}}, // ( 31, 46) + { 0, { 0, 0, 0}}, // ( 32, 46) + { 0, { 0, 0, 0}}, // ( 33, 46) + { 0, { 0, 0, 0}}, // ( 34, 46) + { 0, { 0, 0, 0}}, // ( 35, 46) + { 0, { 0, 0, 0}}, // ( 36, 46) + { 0, { 0, 0, 0}}, // ( 37, 46) + { 0, { 0, 0, 0}}, // ( 38, 46) + { 0, { 0, 0, 0}}, // ( 39, 46) + { 0, { 0, 0, 0}}, // ( 40, 46) + { 0, { 0, 0, 0}}, // ( 41, 46) + { 0, { 0, 0, 0}}, // ( 42, 46) + { 0, { 0, 0, 0}}, // ( 43, 46) + { 0, { 0, 0, 0}}, // ( 44, 46) + { 0, { 0, 0, 0}}, // ( 45, 46) + { 0, { 0, 0, 0}}, // ( 46, 46) + { 0, { 0, 0, 0}}, // ( 47, 46) + { 0, { 0, 0, 0}}, // ( 48, 46) + { 0, { 0, 0, 0}}, // ( 49, 46) + { 0, { 0, 0, 0}}, // ( 50, 46) + { 0, { 0, 0, 0}}, // ( 51, 46) + { 0, { 0, 0, 0}}, // ( 52, 46) + { 0, { 0, 0, 0}}, // ( 53, 46) + { 0, { 0, 0, 0}}, // ( 54, 46) + { 0, { 0, 0, 0}}, // ( 55, 46) + { 0, { 0, 0, 0}}, // ( 56, 46) + { 0, { 0, 0, 0}}, // ( 57, 46) + { 0, { 0, 0, 0}}, // ( 58, 46) + { 0, { 0, 0, 0}}, // ( 59, 46) + { 0, { 0, 0, 0}}, // ( 60, 46) + { 0, { 0, 0, 0}}, // ( 61, 46) + { 0, { 0, 0, 0}}, // ( 62, 46) + { 0, { 0, 0, 0}}, // ( 63, 46) + { 0, { 0, 0, 0}}, // ( 64, 46) + { 0, { 0, 0, 0}}, // ( 65, 46) + { 0, { 0, 0, 0}}, // ( 66, 46) + { 0, { 0, 0, 0}}, // ( 67, 46) + { 0, { 0, 0, 0}}, // ( 68, 46) + { 0, { 0, 0, 0}}, // ( 69, 46) + { 0, { 0, 0, 0}}, // ( 70, 46) + { 0, { 0, 0, 0}}, // ( 71, 46) + { 0, { 0, 0, 0}}, // ( 72, 46) + { 0, { 0, 0, 0}}, // ( 73, 46) + { 0, { 0, 0, 0}}, // ( 74, 46) + { 0, { 0, 0, 0}}, // ( 75, 46) + { 0, { 0, 0, 0}}, // ( 76, 46) + { 0, { 0, 0, 0}}, // ( 77, 46) + { 0, { 0, 0, 0}}, // ( 78, 46) + { 0, { 0, 0, 0}}, // ( 79, 46) + { 0, { 0, 0, 0}}, // ( 80, 46) + { 0, { 0, 0, 0}}, // ( 81, 46) + { 0, { 0, 0, 0}}, // ( 82, 46) + { 0, { 0, 0, 0}}, // ( 83, 46) + { 0, { 0, 0, 0}}, // ( 84, 46) + { 0, { 0, 0, 0}}, // ( 85, 46) + { 0, { 0, 0, 0}}, // ( 86, 46) + { 0, { 0, 0, 0}}, // ( 87, 46) + { 0, { 0, 0, 0}}, // ( 88, 46) + { 0, { 0, 0, 0}}, // ( 89, 46) + { 0, { 0, 0, 0}}, // ( 90, 46) + { 0, { 0, 0, 0}}, // ( 91, 46) + { 0, { 0, 0, 0}}, // ( 92, 46) + { 0, { 0, 0, 0}}, // ( 93, 46) + { 0, { 0, 0, 0}}, // ( 94, 46) + { 0, { 0, 0, 0}}, // ( 95, 46) + { 0, { 0, 0, 0}}, // ( 96, 46) + { 0, { 0, 0, 0}}, // ( 97, 46) + { 0, { 0, 0, 0}}, // ( 98, 46) + { 0, { 0, 0, 0}}, // ( 99, 46) + { 0, { 0, 0, 0}}, // (100, 46) + { 0, { 0, 0, 0}}, // (101, 46) + { 0, { 0, 0, 0}}, // (102, 46) + { 0, { 0, 0, 0}}, // (103, 46) + { 0, { 0, 0, 0}}, // (104, 46) + { 0, { 0, 0, 0}}, // (105, 46) + { 0, { 0, 0, 0}}, // (106, 46) + { 0, { 0, 0, 0}}, // (107, 46) + { 0, { 0, 0, 0}}, // (108, 46) + { 0, { 0, 0, 0}}, // (109, 46) + { 0, { 0, 0, 0}}, // (110, 46) + { 0, { 0, 0, 0}}, // (111, 46) + { 0, { 0, 0, 0}}, // (112, 46) + { 0, { 0, 0, 0}}, // (113, 46) + { 0, { 0, 0, 0}}, // (114, 46) + { 0, { 0, 0, 0}}, // (115, 46) + { 0, { 0, 0, 0}}, // (116, 46) + { 0, { 0, 0, 0}}, // (117, 46) + { 0, { 0, 0, 0}}, // (118, 46) + { 0, { 0, 0, 0}}, // (119, 46) + { 0, { 0, 0, 0}}, // (120, 46) + { 0, { 0, 0, 0}}, // (121, 46) + { 0, { 0, 0, 0}}, // (122, 46) + { 0, { 0, 0, 0}}, // (123, 46) + { 0, { 0, 0, 0}}, // (124, 46) + { 0, { 0, 0, 0}}, // (125, 46) + { 0, { 0, 0, 0}}, // (126, 46) + { 0, { 0, 0, 0}}, // (127, 46) + { 0, { 0, 0, 0}}, // (128, 46) + { 0, { 0, 0, 0}}, // (129, 46) + { 0, { 0, 0, 0}}, // (130, 46) + { 0, { 0, 0, 0}}, // (131, 46) + { 0, { 0, 0, 0}}, // (132, 46) + { 0, { 0, 0, 0}}, // (133, 46) + { 0, { 0, 0, 0}}, // (134, 46) + { 0, { 0, 0, 0}}, // (135, 46) + { 0, { 0, 0, 0}}, // (136, 46) + { 0, { 0, 0, 0}}, // (137, 46) + { 0, { 0, 0, 0}}, // (138, 46) + { 0, { 0, 0, 0}}, // (139, 46) + { 0, { 0, 0, 0}}, // (140, 46) + { 0, { 0, 0, 0}}, // (141, 46) + { 0, { 0, 0, 0}}, // (142, 46) + { 0, { 0, 0, 0}}, // (143, 46) + { 0, { 0, 0, 0}}, // (144, 46) + { 0, { 0, 0, 0}}, // (145, 46) + { 0, { 0, 0, 0}}, // (146, 46) + { 0, { 0, 0, 0}}, // (147, 46) + { 0, { 0, 0, 0}}, // (148, 46) + { 0, { 0, 0, 0}}, // (149, 46) + { 0, { 0, 0, 0}}, // (150, 46) + { 0, { 0, 0, 0}}, // (151, 46) + { 0, { 0, 0, 0}}, // (152, 46) + { 0, { 0, 0, 0}}, // (153, 46) + { 0, { 0, 0, 0}}, // (154, 46) + { 0, { 0, 0, 0}}, // (155, 46) + { 0, { 0, 0, 0}}, // (156, 46) + { 0, { 0, 0, 0}}, // (157, 46) + { 0, { 0, 0, 0}}, // (158, 46) + { 0, { 0, 0, 0}}, // (159, 46) + { 0, { 0, 0, 0}}, // (160, 46) + { 0, { 0, 0, 0}}, // (161, 46) + { 0, { 0, 0, 0}}, // (162, 46) + { 0, { 0, 0, 0}}, // (163, 46) + { 0, { 0, 0, 0}}, // (164, 46) + { 0, { 0, 0, 0}}, // (165, 46) + { 65, { 0, 0, 0}}, // (166, 46) + {128, { 0, 0, 0}}, // (167, 46) + {128, { 0, 0, 0}}, // (168, 46) + {128, { 0, 0, 0}}, // (169, 46) + {128, { 0, 0, 0}}, // (170, 46) + {128, { 0, 0, 0}}, // (171, 46) + {128, { 0, 0, 0}}, // (172, 46) + {128, { 0, 0, 0}}, // (173, 46) + {128, { 0, 0, 0}}, // (174, 46) + {128, { 0, 0, 0}}, // (175, 46) + {128, { 0, 0, 0}}, // (176, 46) + {128, { 0, 0, 0}}, // (177, 46) + {128, { 0, 0, 0}}, // (178, 46) + {128, { 0, 0, 0}}, // (179, 46) + {128, { 0, 0, 0}}, // ( 0, 47) + {128, { 0, 0, 0}}, // ( 1, 47) + {128, { 0, 0, 0}}, // ( 2, 47) + {128, { 0, 0, 0}}, // ( 3, 47) + {128, { 0, 0, 0}}, // ( 4, 47) + {128, { 0, 0, 0}}, // ( 5, 47) + {128, { 0, 0, 0}}, // ( 6, 47) + {128, { 0, 0, 0}}, // ( 7, 47) + {128, { 0, 0, 0}}, // ( 8, 47) + {128, { 0, 0, 0}}, // ( 9, 47) + {128, { 0, 0, 0}}, // ( 10, 47) + {128, { 0, 0, 0}}, // ( 11, 47) + {114, { 0, 0, 0}}, // ( 12, 47) + { 6, { 0, 0, 0}}, // ( 13, 47) + { 0, { 0, 0, 0}}, // ( 14, 47) + { 0, { 0, 0, 0}}, // ( 15, 47) + { 0, { 0, 0, 0}}, // ( 16, 47) + { 0, { 0, 0, 0}}, // ( 17, 47) + { 0, { 0, 0, 0}}, // ( 18, 47) + { 0, { 0, 0, 0}}, // ( 19, 47) + { 0, { 0, 0, 0}}, // ( 20, 47) + { 0, { 0, 0, 0}}, // ( 21, 47) + { 0, { 0, 0, 0}}, // ( 22, 47) + { 0, { 0, 0, 0}}, // ( 23, 47) + { 0, { 0, 0, 0}}, // ( 24, 47) + { 0, { 0, 0, 0}}, // ( 25, 47) + { 0, { 0, 0, 0}}, // ( 26, 47) + { 0, { 0, 0, 0}}, // ( 27, 47) + { 0, { 0, 0, 0}}, // ( 28, 47) + { 0, { 0, 0, 0}}, // ( 29, 47) + { 0, { 0, 0, 0}}, // ( 30, 47) + { 0, { 0, 0, 0}}, // ( 31, 47) + { 0, { 0, 0, 0}}, // ( 32, 47) + { 0, { 0, 0, 0}}, // ( 33, 47) + { 0, { 0, 0, 0}}, // ( 34, 47) + { 0, { 0, 0, 0}}, // ( 35, 47) + { 0, { 0, 0, 0}}, // ( 36, 47) + { 0, { 0, 0, 0}}, // ( 37, 47) + { 0, { 0, 0, 0}}, // ( 38, 47) + { 0, { 0, 0, 0}}, // ( 39, 47) + { 0, { 0, 0, 0}}, // ( 40, 47) + { 0, { 0, 0, 0}}, // ( 41, 47) + { 0, { 0, 0, 0}}, // ( 42, 47) + { 0, { 0, 0, 0}}, // ( 43, 47) + { 0, { 0, 0, 0}}, // ( 44, 47) + { 0, { 0, 0, 0}}, // ( 45, 47) + { 0, { 0, 0, 0}}, // ( 46, 47) + { 0, { 0, 0, 0}}, // ( 47, 47) + { 0, { 0, 0, 0}}, // ( 48, 47) + { 0, { 0, 0, 0}}, // ( 49, 47) + { 0, { 0, 0, 0}}, // ( 50, 47) + { 0, { 0, 0, 0}}, // ( 51, 47) + { 0, { 0, 0, 0}}, // ( 52, 47) + { 0, { 0, 0, 0}}, // ( 53, 47) + { 0, { 0, 0, 0}}, // ( 54, 47) + { 0, { 0, 0, 0}}, // ( 55, 47) + { 0, { 0, 0, 0}}, // ( 56, 47) + { 0, { 0, 0, 0}}, // ( 57, 47) + { 0, { 0, 0, 0}}, // ( 58, 47) + { 0, { 0, 0, 0}}, // ( 59, 47) + { 0, { 0, 0, 0}}, // ( 60, 47) + { 0, { 0, 0, 0}}, // ( 61, 47) + { 0, { 0, 0, 0}}, // ( 62, 47) + { 0, { 0, 0, 0}}, // ( 63, 47) + { 0, { 0, 0, 0}}, // ( 64, 47) + { 0, { 0, 0, 0}}, // ( 65, 47) + { 0, { 0, 0, 0}}, // ( 66, 47) + { 0, { 0, 0, 0}}, // ( 67, 47) + { 0, { 0, 0, 0}}, // ( 68, 47) + { 0, { 0, 0, 0}}, // ( 69, 47) + { 0, { 0, 0, 0}}, // ( 70, 47) + { 0, { 0, 0, 0}}, // ( 71, 47) + { 0, { 0, 0, 0}}, // ( 72, 47) + { 0, { 0, 0, 0}}, // ( 73, 47) + { 0, { 0, 0, 0}}, // ( 74, 47) + { 0, { 0, 0, 0}}, // ( 75, 47) + { 0, { 0, 0, 0}}, // ( 76, 47) + { 0, { 0, 0, 0}}, // ( 77, 47) + { 0, { 0, 0, 0}}, // ( 78, 47) + { 0, { 0, 0, 0}}, // ( 79, 47) + { 0, { 0, 0, 0}}, // ( 80, 47) + { 0, { 0, 0, 0}}, // ( 81, 47) + { 0, { 0, 0, 0}}, // ( 82, 47) + { 0, { 0, 0, 0}}, // ( 83, 47) + { 0, { 0, 0, 0}}, // ( 84, 47) + { 0, { 0, 0, 0}}, // ( 85, 47) + { 0, { 0, 0, 0}}, // ( 86, 47) + { 0, { 0, 0, 0}}, // ( 87, 47) + { 0, { 0, 0, 0}}, // ( 88, 47) + { 0, { 0, 0, 0}}, // ( 89, 47) + { 0, { 0, 0, 0}}, // ( 90, 47) + { 0, { 0, 0, 0}}, // ( 91, 47) + { 0, { 0, 0, 0}}, // ( 92, 47) + { 0, { 0, 0, 0}}, // ( 93, 47) + { 0, { 0, 0, 0}}, // ( 94, 47) + { 0, { 0, 0, 0}}, // ( 95, 47) + { 0, { 0, 0, 0}}, // ( 96, 47) + { 0, { 0, 0, 0}}, // ( 97, 47) + { 0, { 0, 0, 0}}, // ( 98, 47) + { 0, { 0, 0, 0}}, // ( 99, 47) + { 0, { 0, 0, 0}}, // (100, 47) + { 0, { 0, 0, 0}}, // (101, 47) + { 0, { 0, 0, 0}}, // (102, 47) + { 0, { 0, 0, 0}}, // (103, 47) + { 0, { 0, 0, 0}}, // (104, 47) + { 0, { 0, 0, 0}}, // (105, 47) + { 0, { 0, 0, 0}}, // (106, 47) + { 0, { 0, 0, 0}}, // (107, 47) + { 0, { 0, 0, 0}}, // (108, 47) + { 0, { 0, 0, 0}}, // (109, 47) + { 0, { 0, 0, 0}}, // (110, 47) + { 0, { 0, 0, 0}}, // (111, 47) + { 0, { 0, 0, 0}}, // (112, 47) + { 0, { 0, 0, 0}}, // (113, 47) + { 0, { 0, 0, 0}}, // (114, 47) + { 0, { 0, 0, 0}}, // (115, 47) + { 0, { 0, 0, 0}}, // (116, 47) + { 0, { 0, 0, 0}}, // (117, 47) + { 0, { 0, 0, 0}}, // (118, 47) + { 0, { 0, 0, 0}}, // (119, 47) + { 0, { 0, 0, 0}}, // (120, 47) + { 0, { 0, 0, 0}}, // (121, 47) + { 0, { 0, 0, 0}}, // (122, 47) + { 0, { 0, 0, 0}}, // (123, 47) + { 0, { 0, 0, 0}}, // (124, 47) + { 0, { 0, 0, 0}}, // (125, 47) + { 0, { 0, 0, 0}}, // (126, 47) + { 0, { 0, 0, 0}}, // (127, 47) + { 0, { 0, 0, 0}}, // (128, 47) + { 0, { 0, 0, 0}}, // (129, 47) + { 0, { 0, 0, 0}}, // (130, 47) + { 0, { 0, 0, 0}}, // (131, 47) + { 0, { 0, 0, 0}}, // (132, 47) + { 0, { 0, 0, 0}}, // (133, 47) + { 0, { 0, 0, 0}}, // (134, 47) + { 0, { 0, 0, 0}}, // (135, 47) + { 0, { 0, 0, 0}}, // (136, 47) + { 0, { 0, 0, 0}}, // (137, 47) + { 0, { 0, 0, 0}}, // (138, 47) + { 0, { 0, 0, 0}}, // (139, 47) + { 0, { 0, 0, 0}}, // (140, 47) + { 0, { 0, 0, 0}}, // (141, 47) + { 0, { 0, 0, 0}}, // (142, 47) + { 0, { 0, 0, 0}}, // (143, 47) + { 0, { 0, 0, 0}}, // (144, 47) + { 0, { 0, 0, 0}}, // (145, 47) + { 0, { 0, 0, 0}}, // (146, 47) + { 0, { 0, 0, 0}}, // (147, 47) + { 0, { 0, 0, 0}}, // (148, 47) + { 0, { 0, 0, 0}}, // (149, 47) + { 0, { 0, 0, 0}}, // (150, 47) + { 0, { 0, 0, 0}}, // (151, 47) + { 0, { 0, 0, 0}}, // (152, 47) + { 0, { 0, 0, 0}}, // (153, 47) + { 0, { 0, 0, 0}}, // (154, 47) + { 0, { 0, 0, 0}}, // (155, 47) + { 0, { 0, 0, 0}}, // (156, 47) + { 0, { 0, 0, 0}}, // (157, 47) + { 0, { 0, 0, 0}}, // (158, 47) + { 0, { 0, 0, 0}}, // (159, 47) + { 0, { 0, 0, 0}}, // (160, 47) + { 0, { 0, 0, 0}}, // (161, 47) + { 0, { 0, 0, 0}}, // (162, 47) + { 0, { 0, 0, 0}}, // (163, 47) + { 0, { 0, 0, 0}}, // (164, 47) + { 0, { 0, 0, 0}}, // (165, 47) + { 6, { 0, 0, 0}}, // (166, 47) + {114, { 0, 0, 0}}, // (167, 47) + {128, { 0, 0, 0}}, // (168, 47) + {128, { 0, 0, 0}}, // (169, 47) + {128, { 0, 0, 0}}, // (170, 47) + {128, { 0, 0, 0}}, // (171, 47) + {128, { 0, 0, 0}}, // (172, 47) + {128, { 0, 0, 0}}, // (173, 47) + {128, { 0, 0, 0}}, // (174, 47) + {128, { 0, 0, 0}}, // (175, 47) + {128, { 0, 0, 0}}, // (176, 47) + {128, { 0, 0, 0}}, // (177, 47) + {128, { 0, 0, 0}}, // (178, 47) + {128, { 0, 0, 0}}, // (179, 47) + {128, { 0, 0, 0}}, // ( 0, 48) + {128, { 0, 0, 0}}, // ( 1, 48) + {128, { 0, 0, 0}}, // ( 2, 48) + {128, { 0, 0, 0}}, // ( 3, 48) + {128, { 0, 0, 0}}, // ( 4, 48) + {128, { 0, 0, 0}}, // ( 5, 48) + {128, { 0, 0, 0}}, // ( 6, 48) + {128, { 0, 0, 0}}, // ( 7, 48) + {128, { 0, 0, 0}}, // ( 8, 48) + {128, { 0, 0, 0}}, // ( 9, 48) + {128, { 0, 0, 0}}, // ( 10, 48) + {128, { 0, 0, 0}}, // ( 11, 48) + { 51, { 0, 0, 0}}, // ( 12, 48) + { 0, { 0, 0, 0}}, // ( 13, 48) + { 0, { 0, 0, 0}}, // ( 14, 48) + { 0, { 0, 0, 0}}, // ( 15, 48) + { 0, { 0, 0, 0}}, // ( 16, 48) + { 0, { 0, 0, 0}}, // ( 17, 48) + { 0, { 0, 0, 0}}, // ( 18, 48) + { 0, { 0, 0, 0}}, // ( 19, 48) + { 0, { 0, 0, 0}}, // ( 20, 48) + { 0, { 0, 0, 0}}, // ( 21, 48) + { 0, { 0, 0, 0}}, // ( 22, 48) + { 0, { 0, 0, 0}}, // ( 23, 48) + { 0, { 0, 0, 0}}, // ( 24, 48) + { 0, { 0, 0, 0}}, // ( 25, 48) + { 0, { 0, 0, 0}}, // ( 26, 48) + { 0, { 0, 0, 0}}, // ( 27, 48) + { 0, { 0, 0, 0}}, // ( 28, 48) + { 0, { 0, 0, 0}}, // ( 29, 48) + { 0, { 0, 0, 0}}, // ( 30, 48) + { 0, { 0, 0, 0}}, // ( 31, 48) + { 0, { 0, 0, 0}}, // ( 32, 48) + { 0, { 0, 0, 0}}, // ( 33, 48) + { 0, { 0, 0, 0}}, // ( 34, 48) + { 0, { 0, 0, 0}}, // ( 35, 48) + { 0, { 0, 0, 0}}, // ( 36, 48) + { 0, { 0, 0, 0}}, // ( 37, 48) + { 0, { 0, 0, 0}}, // ( 38, 48) + { 0, { 0, 0, 0}}, // ( 39, 48) + { 0, { 0, 0, 0}}, // ( 40, 48) + { 0, { 0, 0, 0}}, // ( 41, 48) + { 0, { 0, 0, 0}}, // ( 42, 48) + { 0, { 0, 0, 0}}, // ( 43, 48) + { 0, { 0, 0, 0}}, // ( 44, 48) + { 0, { 0, 0, 0}}, // ( 45, 48) + { 0, { 0, 0, 0}}, // ( 46, 48) + { 0, { 0, 0, 0}}, // ( 47, 48) + { 0, { 0, 0, 0}}, // ( 48, 48) + { 0, { 0, 0, 0}}, // ( 49, 48) + { 0, { 0, 0, 0}}, // ( 50, 48) + { 0, { 0, 0, 0}}, // ( 51, 48) + { 0, { 0, 0, 0}}, // ( 52, 48) + { 0, { 0, 0, 0}}, // ( 53, 48) + { 0, { 0, 0, 0}}, // ( 54, 48) + { 0, { 0, 0, 0}}, // ( 55, 48) + { 0, { 0, 0, 0}}, // ( 56, 48) + { 0, { 0, 0, 0}}, // ( 57, 48) + { 0, { 0, 0, 0}}, // ( 58, 48) + { 0, { 0, 0, 0}}, // ( 59, 48) + { 0, { 0, 0, 0}}, // ( 60, 48) + { 0, { 0, 0, 0}}, // ( 61, 48) + { 0, { 0, 0, 0}}, // ( 62, 48) + { 0, { 0, 0, 0}}, // ( 63, 48) + { 0, { 0, 0, 0}}, // ( 64, 48) + { 0, { 0, 0, 0}}, // ( 65, 48) + { 0, { 0, 0, 0}}, // ( 66, 48) + { 0, { 0, 0, 0}}, // ( 67, 48) + { 0, { 0, 0, 0}}, // ( 68, 48) + { 0, { 0, 0, 0}}, // ( 69, 48) + { 0, { 0, 0, 0}}, // ( 70, 48) + { 0, { 0, 0, 0}}, // ( 71, 48) + { 0, { 0, 0, 0}}, // ( 72, 48) + { 0, { 0, 0, 0}}, // ( 73, 48) + { 0, { 0, 0, 0}}, // ( 74, 48) + { 0, { 0, 0, 0}}, // ( 75, 48) + { 0, { 0, 0, 0}}, // ( 76, 48) + { 0, { 0, 0, 0}}, // ( 77, 48) + { 0, { 0, 0, 0}}, // ( 78, 48) + { 0, { 0, 0, 0}}, // ( 79, 48) + { 0, { 0, 0, 0}}, // ( 80, 48) + { 0, { 0, 0, 0}}, // ( 81, 48) + { 0, { 0, 0, 0}}, // ( 82, 48) + { 0, { 0, 0, 0}}, // ( 83, 48) + { 0, { 0, 0, 0}}, // ( 84, 48) + { 0, { 0, 0, 0}}, // ( 85, 48) + { 0, { 0, 0, 0}}, // ( 86, 48) + { 0, { 0, 0, 0}}, // ( 87, 48) + { 0, { 0, 0, 0}}, // ( 88, 48) + { 0, { 0, 0, 0}}, // ( 89, 48) + { 0, { 0, 0, 0}}, // ( 90, 48) + { 0, { 0, 0, 0}}, // ( 91, 48) + { 0, { 0, 0, 0}}, // ( 92, 48) + { 0, { 0, 0, 0}}, // ( 93, 48) + { 0, { 0, 0, 0}}, // ( 94, 48) + { 0, { 0, 0, 0}}, // ( 95, 48) + { 0, { 0, 0, 0}}, // ( 96, 48) + { 0, { 0, 0, 0}}, // ( 97, 48) + { 0, { 0, 0, 0}}, // ( 98, 48) + { 0, { 0, 0, 0}}, // ( 99, 48) + { 0, { 0, 0, 0}}, // (100, 48) + { 0, { 0, 0, 0}}, // (101, 48) + { 0, { 0, 0, 0}}, // (102, 48) + { 0, { 0, 0, 0}}, // (103, 48) + { 0, { 0, 0, 0}}, // (104, 48) + { 0, { 0, 0, 0}}, // (105, 48) + { 0, { 0, 0, 0}}, // (106, 48) + { 0, { 0, 0, 0}}, // (107, 48) + { 0, { 0, 0, 0}}, // (108, 48) + { 0, { 0, 0, 0}}, // (109, 48) + { 0, { 0, 0, 0}}, // (110, 48) + { 0, { 0, 0, 0}}, // (111, 48) + { 0, { 0, 0, 0}}, // (112, 48) + { 0, { 0, 0, 0}}, // (113, 48) + { 0, { 0, 0, 0}}, // (114, 48) + { 0, { 0, 0, 0}}, // (115, 48) + { 0, { 0, 0, 0}}, // (116, 48) + { 0, { 0, 0, 0}}, // (117, 48) + { 0, { 0, 0, 0}}, // (118, 48) + { 0, { 0, 0, 0}}, // (119, 48) + { 0, { 0, 0, 0}}, // (120, 48) + { 0, { 0, 0, 0}}, // (121, 48) + { 0, { 0, 0, 0}}, // (122, 48) + { 0, { 0, 0, 0}}, // (123, 48) + { 0, { 0, 0, 0}}, // (124, 48) + { 0, { 0, 0, 0}}, // (125, 48) + { 0, { 0, 0, 0}}, // (126, 48) + { 0, { 0, 0, 0}}, // (127, 48) + { 0, { 0, 0, 0}}, // (128, 48) + { 0, { 0, 0, 0}}, // (129, 48) + { 0, { 0, 0, 0}}, // (130, 48) + { 0, { 0, 0, 0}}, // (131, 48) + { 0, { 0, 0, 0}}, // (132, 48) + { 0, { 0, 0, 0}}, // (133, 48) + { 0, { 0, 0, 0}}, // (134, 48) + { 0, { 0, 0, 0}}, // (135, 48) + { 0, { 0, 0, 0}}, // (136, 48) + { 0, { 0, 0, 0}}, // (137, 48) + { 0, { 0, 0, 0}}, // (138, 48) + { 0, { 0, 0, 0}}, // (139, 48) + { 0, { 0, 0, 0}}, // (140, 48) + { 0, { 0, 0, 0}}, // (141, 48) + { 0, { 0, 0, 0}}, // (142, 48) + { 0, { 0, 0, 0}}, // (143, 48) + { 0, { 0, 0, 0}}, // (144, 48) + { 0, { 0, 0, 0}}, // (145, 48) + { 0, { 0, 0, 0}}, // (146, 48) + { 0, { 0, 0, 0}}, // (147, 48) + { 0, { 0, 0, 0}}, // (148, 48) + { 0, { 0, 0, 0}}, // (149, 48) + { 0, { 0, 0, 0}}, // (150, 48) + { 0, { 0, 0, 0}}, // (151, 48) + { 0, { 0, 0, 0}}, // (152, 48) + { 0, { 0, 0, 0}}, // (153, 48) + { 0, { 0, 0, 0}}, // (154, 48) + { 0, { 0, 0, 0}}, // (155, 48) + { 0, { 0, 0, 0}}, // (156, 48) + { 0, { 0, 0, 0}}, // (157, 48) + { 0, { 0, 0, 0}}, // (158, 48) + { 0, { 0, 0, 0}}, // (159, 48) + { 0, { 0, 0, 0}}, // (160, 48) + { 0, { 0, 0, 0}}, // (161, 48) + { 0, { 0, 0, 0}}, // (162, 48) + { 0, { 0, 0, 0}}, // (163, 48) + { 0, { 0, 0, 0}}, // (164, 48) + { 0, { 0, 0, 0}}, // (165, 48) + { 0, { 0, 0, 0}}, // (166, 48) + { 51, { 0, 0, 0}}, // (167, 48) + {128, { 0, 0, 0}}, // (168, 48) + {128, { 0, 0, 0}}, // (169, 48) + {128, { 0, 0, 0}}, // (170, 48) + {128, { 0, 0, 0}}, // (171, 48) + {128, { 0, 0, 0}}, // (172, 48) + {128, { 0, 0, 0}}, // (173, 48) + {128, { 0, 0, 0}}, // (174, 48) + {128, { 0, 0, 0}}, // (175, 48) + {128, { 0, 0, 0}}, // (176, 48) + {128, { 0, 0, 0}}, // (177, 48) + {128, { 0, 0, 0}}, // (178, 48) + {128, { 0, 0, 0}}, // (179, 48) + {128, { 0, 0, 0}}, // ( 0, 49) + {128, { 0, 0, 0}}, // ( 1, 49) + {128, { 0, 0, 0}}, // ( 2, 49) + {128, { 0, 0, 0}}, // ( 3, 49) + {128, { 0, 0, 0}}, // ( 4, 49) + {128, { 0, 0, 0}}, // ( 5, 49) + {128, { 0, 0, 0}}, // ( 6, 49) + {128, { 0, 0, 0}}, // ( 7, 49) + {128, { 0, 0, 0}}, // ( 8, 49) + {128, { 0, 0, 0}}, // ( 9, 49) + {128, { 0, 0, 0}}, // ( 10, 49) + {111, { 0, 0, 0}}, // ( 11, 49) + { 2, { 0, 0, 0}}, // ( 12, 49) + { 0, { 0, 0, 0}}, // ( 13, 49) + { 0, { 0, 0, 0}}, // ( 14, 49) + { 0, { 0, 0, 0}}, // ( 15, 49) + { 0, { 0, 0, 0}}, // ( 16, 49) + { 0, { 0, 0, 0}}, // ( 17, 49) + { 0, { 0, 0, 0}}, // ( 18, 49) + { 0, { 0, 0, 0}}, // ( 19, 49) + { 0, { 0, 0, 0}}, // ( 20, 49) + { 0, { 0, 0, 0}}, // ( 21, 49) + { 0, { 0, 0, 0}}, // ( 22, 49) + { 0, { 0, 0, 0}}, // ( 23, 49) + { 0, { 0, 0, 0}}, // ( 24, 49) + { 0, { 0, 0, 0}}, // ( 25, 49) + { 0, { 0, 0, 0}}, // ( 26, 49) + { 0, { 0, 0, 0}}, // ( 27, 49) + { 0, { 0, 0, 0}}, // ( 28, 49) + { 0, { 0, 0, 0}}, // ( 29, 49) + { 0, { 0, 0, 0}}, // ( 30, 49) + { 0, { 0, 0, 0}}, // ( 31, 49) + { 0, { 0, 0, 0}}, // ( 32, 49) + { 0, { 0, 0, 0}}, // ( 33, 49) + { 0, { 0, 0, 0}}, // ( 34, 49) + { 0, { 0, 0, 0}}, // ( 35, 49) + { 0, { 0, 0, 0}}, // ( 36, 49) + { 0, { 0, 0, 0}}, // ( 37, 49) + { 0, { 0, 0, 0}}, // ( 38, 49) + { 0, { 0, 0, 0}}, // ( 39, 49) + { 0, { 0, 0, 0}}, // ( 40, 49) + { 0, { 0, 0, 0}}, // ( 41, 49) + { 0, { 0, 0, 0}}, // ( 42, 49) + { 0, { 0, 0, 0}}, // ( 43, 49) + { 0, { 0, 0, 0}}, // ( 44, 49) + { 0, { 0, 0, 0}}, // ( 45, 49) + { 0, { 0, 0, 0}}, // ( 46, 49) + { 0, { 0, 0, 0}}, // ( 47, 49) + { 0, { 0, 0, 0}}, // ( 48, 49) + { 0, { 0, 0, 0}}, // ( 49, 49) + { 0, { 0, 0, 0}}, // ( 50, 49) + { 0, { 0, 0, 0}}, // ( 51, 49) + { 0, { 0, 0, 0}}, // ( 52, 49) + { 0, { 0, 0, 0}}, // ( 53, 49) + { 0, { 0, 0, 0}}, // ( 54, 49) + { 0, { 0, 0, 0}}, // ( 55, 49) + { 0, { 0, 0, 0}}, // ( 56, 49) + { 0, { 0, 0, 0}}, // ( 57, 49) + { 0, { 0, 0, 0}}, // ( 58, 49) + { 0, { 0, 0, 0}}, // ( 59, 49) + { 0, { 0, 0, 0}}, // ( 60, 49) + { 0, { 0, 0, 0}}, // ( 61, 49) + { 0, { 0, 0, 0}}, // ( 62, 49) + { 0, { 0, 0, 0}}, // ( 63, 49) + { 0, { 0, 0, 0}}, // ( 64, 49) + { 0, { 0, 0, 0}}, // ( 65, 49) + { 0, { 0, 0, 0}}, // ( 66, 49) + { 0, { 0, 0, 0}}, // ( 67, 49) + { 0, { 0, 0, 0}}, // ( 68, 49) + { 0, { 0, 0, 0}}, // ( 69, 49) + { 0, { 0, 0, 0}}, // ( 70, 49) + { 0, { 0, 0, 0}}, // ( 71, 49) + { 0, { 0, 0, 0}}, // ( 72, 49) + { 0, { 0, 0, 0}}, // ( 73, 49) + { 0, { 0, 0, 0}}, // ( 74, 49) + { 0, { 0, 0, 0}}, // ( 75, 49) + { 0, { 0, 0, 0}}, // ( 76, 49) + { 0, { 0, 0, 0}}, // ( 77, 49) + { 0, { 0, 0, 0}}, // ( 78, 49) + { 0, { 0, 0, 0}}, // ( 79, 49) + { 0, { 0, 0, 0}}, // ( 80, 49) + { 0, { 0, 0, 0}}, // ( 81, 49) + { 0, { 0, 0, 0}}, // ( 82, 49) + { 0, { 0, 0, 0}}, // ( 83, 49) + { 0, { 0, 0, 0}}, // ( 84, 49) + { 0, { 0, 0, 0}}, // ( 85, 49) + { 0, { 0, 0, 0}}, // ( 86, 49) + { 0, { 0, 0, 0}}, // ( 87, 49) + { 0, { 0, 0, 0}}, // ( 88, 49) + { 0, { 0, 0, 0}}, // ( 89, 49) + { 0, { 0, 0, 0}}, // ( 90, 49) + { 0, { 0, 0, 0}}, // ( 91, 49) + { 0, { 0, 0, 0}}, // ( 92, 49) + { 0, { 0, 0, 0}}, // ( 93, 49) + { 0, { 0, 0, 0}}, // ( 94, 49) + { 0, { 0, 0, 0}}, // ( 95, 49) + { 0, { 0, 0, 0}}, // ( 96, 49) + { 0, { 0, 0, 0}}, // ( 97, 49) + { 0, { 0, 0, 0}}, // ( 98, 49) + { 0, { 0, 0, 0}}, // ( 99, 49) + { 0, { 0, 0, 0}}, // (100, 49) + { 0, { 0, 0, 0}}, // (101, 49) + { 0, { 0, 0, 0}}, // (102, 49) + { 0, { 0, 0, 0}}, // (103, 49) + { 0, { 0, 0, 0}}, // (104, 49) + { 0, { 0, 0, 0}}, // (105, 49) + { 0, { 0, 0, 0}}, // (106, 49) + { 0, { 0, 0, 0}}, // (107, 49) + { 0, { 0, 0, 0}}, // (108, 49) + { 0, { 0, 0, 0}}, // (109, 49) + { 0, { 0, 0, 0}}, // (110, 49) + { 0, { 0, 0, 0}}, // (111, 49) + { 0, { 0, 0, 0}}, // (112, 49) + { 0, { 0, 0, 0}}, // (113, 49) + { 0, { 0, 0, 0}}, // (114, 49) + { 0, { 0, 0, 0}}, // (115, 49) + { 0, { 0, 0, 0}}, // (116, 49) + { 0, { 0, 0, 0}}, // (117, 49) + { 0, { 0, 0, 0}}, // (118, 49) + { 0, { 0, 0, 0}}, // (119, 49) + { 0, { 0, 0, 0}}, // (120, 49) + { 0, { 0, 0, 0}}, // (121, 49) + { 0, { 0, 0, 0}}, // (122, 49) + { 0, { 0, 0, 0}}, // (123, 49) + { 0, { 0, 0, 0}}, // (124, 49) + { 0, { 0, 0, 0}}, // (125, 49) + { 0, { 0, 0, 0}}, // (126, 49) + { 0, { 0, 0, 0}}, // (127, 49) + { 0, { 0, 0, 0}}, // (128, 49) + { 0, { 0, 0, 0}}, // (129, 49) + { 0, { 0, 0, 0}}, // (130, 49) + { 0, { 0, 0, 0}}, // (131, 49) + { 0, { 0, 0, 0}}, // (132, 49) + { 0, { 0, 0, 0}}, // (133, 49) + { 0, { 0, 0, 0}}, // (134, 49) + { 0, { 0, 0, 0}}, // (135, 49) + { 0, { 0, 0, 0}}, // (136, 49) + { 0, { 0, 0, 0}}, // (137, 49) + { 0, { 0, 0, 0}}, // (138, 49) + { 0, { 0, 0, 0}}, // (139, 49) + { 0, { 0, 0, 0}}, // (140, 49) + { 0, { 0, 0, 0}}, // (141, 49) + { 0, { 0, 0, 0}}, // (142, 49) + { 0, { 0, 0, 0}}, // (143, 49) + { 0, { 0, 0, 0}}, // (144, 49) + { 0, { 0, 0, 0}}, // (145, 49) + { 0, { 0, 0, 0}}, // (146, 49) + { 0, { 0, 0, 0}}, // (147, 49) + { 0, { 0, 0, 0}}, // (148, 49) + { 0, { 0, 0, 0}}, // (149, 49) + { 0, { 0, 0, 0}}, // (150, 49) + { 0, { 0, 0, 0}}, // (151, 49) + { 0, { 0, 0, 0}}, // (152, 49) + { 0, { 0, 0, 0}}, // (153, 49) + { 0, { 0, 0, 0}}, // (154, 49) + { 0, { 0, 0, 0}}, // (155, 49) + { 0, { 0, 0, 0}}, // (156, 49) + { 0, { 0, 0, 0}}, // (157, 49) + { 0, { 0, 0, 0}}, // (158, 49) + { 0, { 0, 0, 0}}, // (159, 49) + { 0, { 0, 0, 0}}, // (160, 49) + { 0, { 0, 0, 0}}, // (161, 49) + { 0, { 0, 0, 0}}, // (162, 49) + { 0, { 0, 0, 0}}, // (163, 49) + { 0, { 0, 0, 0}}, // (164, 49) + { 0, { 0, 0, 0}}, // (165, 49) + { 0, { 0, 0, 0}}, // (166, 49) + { 2, { 0, 0, 0}}, // (167, 49) + {110, { 0, 0, 0}}, // (168, 49) + {128, { 0, 0, 0}}, // (169, 49) + {128, { 0, 0, 0}}, // (170, 49) + {128, { 0, 0, 0}}, // (171, 49) + {128, { 0, 0, 0}}, // (172, 49) + {128, { 0, 0, 0}}, // (173, 49) + {128, { 0, 0, 0}}, // (174, 49) + {128, { 0, 0, 0}}, // (175, 49) + {128, { 0, 0, 0}}, // (176, 49) + {128, { 0, 0, 0}}, // (177, 49) + {128, { 0, 0, 0}}, // (178, 49) + {128, { 0, 0, 0}}, // (179, 49) + {128, { 0, 0, 0}}, // ( 0, 50) + {128, { 0, 0, 0}}, // ( 1, 50) + {128, { 0, 0, 0}}, // ( 2, 50) + {128, { 0, 0, 0}}, // ( 3, 50) + {128, { 0, 0, 0}}, // ( 4, 50) + {128, { 0, 0, 0}}, // ( 5, 50) + {128, { 0, 0, 0}}, // ( 6, 50) + {128, { 0, 0, 0}}, // ( 7, 50) + {128, { 0, 0, 0}}, // ( 8, 50) + {128, { 0, 0, 0}}, // ( 9, 50) + {128, { 0, 0, 0}}, // ( 10, 50) + { 47, { 0, 0, 0}}, // ( 11, 50) + { 0, { 0, 0, 0}}, // ( 12, 50) + { 0, { 0, 0, 0}}, // ( 13, 50) + { 0, { 0, 0, 0}}, // ( 14, 50) + { 0, { 0, 0, 0}}, // ( 15, 50) + { 0, { 0, 0, 0}}, // ( 16, 50) + { 0, { 0, 0, 0}}, // ( 17, 50) + { 0, { 0, 0, 0}}, // ( 18, 50) + { 0, { 0, 0, 0}}, // ( 19, 50) + { 0, { 0, 0, 0}}, // ( 20, 50) + { 0, { 0, 0, 0}}, // ( 21, 50) + { 0, { 0, 0, 0}}, // ( 22, 50) + { 0, { 0, 0, 0}}, // ( 23, 50) + { 0, { 0, 0, 0}}, // ( 24, 50) + { 0, { 0, 0, 0}}, // ( 25, 50) + { 0, { 0, 0, 0}}, // ( 26, 50) + { 0, { 0, 0, 0}}, // ( 27, 50) + { 0, { 0, 0, 0}}, // ( 28, 50) + { 0, { 0, 0, 0}}, // ( 29, 50) + { 0, { 0, 0, 0}}, // ( 30, 50) + { 0, { 0, 0, 0}}, // ( 31, 50) + { 0, { 0, 0, 0}}, // ( 32, 50) + { 0, { 0, 0, 0}}, // ( 33, 50) + { 0, { 0, 0, 0}}, // ( 34, 50) + { 0, { 0, 0, 0}}, // ( 35, 50) + { 0, { 0, 0, 0}}, // ( 36, 50) + { 0, { 0, 0, 0}}, // ( 37, 50) + { 0, { 0, 0, 0}}, // ( 38, 50) + { 0, { 0, 0, 0}}, // ( 39, 50) + { 0, { 0, 0, 0}}, // ( 40, 50) + { 0, { 0, 0, 0}}, // ( 41, 50) + { 0, { 0, 0, 0}}, // ( 42, 50) + { 0, { 0, 0, 0}}, // ( 43, 50) + { 0, { 0, 0, 0}}, // ( 44, 50) + { 0, { 0, 0, 0}}, // ( 45, 50) + { 0, { 0, 0, 0}}, // ( 46, 50) + { 0, { 0, 0, 0}}, // ( 47, 50) + { 0, { 0, 0, 0}}, // ( 48, 50) + { 0, { 0, 0, 0}}, // ( 49, 50) + { 0, { 0, 0, 0}}, // ( 50, 50) + { 0, { 0, 0, 0}}, // ( 51, 50) + { 0, { 0, 0, 0}}, // ( 52, 50) + { 0, { 0, 0, 0}}, // ( 53, 50) + { 0, { 0, 0, 0}}, // ( 54, 50) + { 0, { 0, 0, 0}}, // ( 55, 50) + { 0, { 0, 0, 0}}, // ( 56, 50) + { 0, { 0, 0, 0}}, // ( 57, 50) + { 0, { 0, 0, 0}}, // ( 58, 50) + { 0, { 0, 0, 0}}, // ( 59, 50) + { 0, { 0, 0, 0}}, // ( 60, 50) + { 0, { 0, 0, 0}}, // ( 61, 50) + { 0, { 0, 0, 0}}, // ( 62, 50) + { 0, { 0, 0, 0}}, // ( 63, 50) + { 0, { 0, 0, 0}}, // ( 64, 50) + { 0, { 0, 0, 0}}, // ( 65, 50) + { 0, { 0, 0, 0}}, // ( 66, 50) + { 0, { 0, 0, 0}}, // ( 67, 50) + { 0, { 0, 0, 0}}, // ( 68, 50) + { 0, { 0, 0, 0}}, // ( 69, 50) + { 0, { 0, 0, 0}}, // ( 70, 50) + { 0, { 0, 0, 0}}, // ( 71, 50) + { 0, { 0, 0, 0}}, // ( 72, 50) + { 0, { 0, 0, 0}}, // ( 73, 50) + { 0, { 0, 0, 0}}, // ( 74, 50) + { 0, { 0, 0, 0}}, // ( 75, 50) + { 0, { 0, 0, 0}}, // ( 76, 50) + { 0, { 0, 0, 0}}, // ( 77, 50) + { 0, { 0, 0, 0}}, // ( 78, 50) + { 0, { 0, 0, 0}}, // ( 79, 50) + { 0, { 0, 0, 0}}, // ( 80, 50) + { 0, { 0, 0, 0}}, // ( 81, 50) + { 0, { 0, 0, 0}}, // ( 82, 50) + { 0, { 0, 0, 0}}, // ( 83, 50) + { 0, { 0, 0, 0}}, // ( 84, 50) + { 0, { 0, 0, 0}}, // ( 85, 50) + { 0, { 0, 0, 0}}, // ( 86, 50) + { 0, { 0, 0, 0}}, // ( 87, 50) + { 0, { 0, 0, 0}}, // ( 88, 50) + { 0, { 0, 0, 0}}, // ( 89, 50) + { 0, { 0, 0, 0}}, // ( 90, 50) + { 0, { 0, 0, 0}}, // ( 91, 50) + { 0, { 0, 0, 0}}, // ( 92, 50) + { 0, { 0, 0, 0}}, // ( 93, 50) + { 0, { 0, 0, 0}}, // ( 94, 50) + { 0, { 0, 0, 0}}, // ( 95, 50) + { 0, { 0, 0, 0}}, // ( 96, 50) + { 0, { 0, 0, 0}}, // ( 97, 50) + { 0, { 0, 0, 0}}, // ( 98, 50) + { 0, { 0, 0, 0}}, // ( 99, 50) + { 0, { 0, 0, 0}}, // (100, 50) + { 0, { 0, 0, 0}}, // (101, 50) + { 0, { 0, 0, 0}}, // (102, 50) + { 0, { 0, 0, 0}}, // (103, 50) + { 0, { 0, 0, 0}}, // (104, 50) + { 0, { 0, 0, 0}}, // (105, 50) + { 0, { 0, 0, 0}}, // (106, 50) + { 0, { 0, 0, 0}}, // (107, 50) + { 0, { 0, 0, 0}}, // (108, 50) + { 0, { 0, 0, 0}}, // (109, 50) + { 0, { 0, 0, 0}}, // (110, 50) + { 0, { 0, 0, 0}}, // (111, 50) + { 0, { 0, 0, 0}}, // (112, 50) + { 0, { 0, 0, 0}}, // (113, 50) + { 0, { 0, 0, 0}}, // (114, 50) + { 0, { 0, 0, 0}}, // (115, 50) + { 0, { 0, 0, 0}}, // (116, 50) + { 0, { 0, 0, 0}}, // (117, 50) + { 0, { 0, 0, 0}}, // (118, 50) + { 0, { 0, 0, 0}}, // (119, 50) + { 0, { 0, 0, 0}}, // (120, 50) + { 0, { 0, 0, 0}}, // (121, 50) + { 0, { 0, 0, 0}}, // (122, 50) + { 0, { 0, 0, 0}}, // (123, 50) + { 0, { 0, 0, 0}}, // (124, 50) + { 0, { 0, 0, 0}}, // (125, 50) + { 0, { 0, 0, 0}}, // (126, 50) + { 0, { 0, 0, 0}}, // (127, 50) + { 0, { 0, 0, 0}}, // (128, 50) + { 0, { 0, 0, 0}}, // (129, 50) + { 0, { 0, 0, 0}}, // (130, 50) + { 0, { 0, 0, 0}}, // (131, 50) + { 0, { 0, 0, 0}}, // (132, 50) + { 0, { 0, 0, 0}}, // (133, 50) + { 0, { 0, 0, 0}}, // (134, 50) + { 0, { 0, 0, 0}}, // (135, 50) + { 0, { 0, 0, 0}}, // (136, 50) + { 0, { 0, 0, 0}}, // (137, 50) + { 0, { 0, 0, 0}}, // (138, 50) + { 0, { 0, 0, 0}}, // (139, 50) + { 0, { 0, 0, 0}}, // (140, 50) + { 0, { 0, 0, 0}}, // (141, 50) + { 0, { 0, 0, 0}}, // (142, 50) + { 0, { 0, 0, 0}}, // (143, 50) + { 0, { 0, 0, 0}}, // (144, 50) + { 0, { 0, 0, 0}}, // (145, 50) + { 0, { 0, 0, 0}}, // (146, 50) + { 0, { 0, 0, 0}}, // (147, 50) + { 0, { 0, 0, 0}}, // (148, 50) + { 0, { 0, 0, 0}}, // (149, 50) + { 0, { 0, 0, 0}}, // (150, 50) + { 0, { 0, 0, 0}}, // (151, 50) + { 0, { 0, 0, 0}}, // (152, 50) + { 0, { 0, 0, 0}}, // (153, 50) + { 0, { 0, 0, 0}}, // (154, 50) + { 0, { 0, 0, 0}}, // (155, 50) + { 0, { 0, 0, 0}}, // (156, 50) + { 0, { 0, 0, 0}}, // (157, 50) + { 0, { 0, 0, 0}}, // (158, 50) + { 0, { 0, 0, 0}}, // (159, 50) + { 0, { 0, 0, 0}}, // (160, 50) + { 0, { 0, 0, 0}}, // (161, 50) + { 0, { 0, 0, 0}}, // (162, 50) + { 0, { 0, 0, 0}}, // (163, 50) + { 0, { 0, 0, 0}}, // (164, 50) + { 0, { 0, 0, 0}}, // (165, 50) + { 0, { 0, 0, 0}}, // (166, 50) + { 0, { 0, 0, 0}}, // (167, 50) + { 47, { 0, 0, 0}}, // (168, 50) + {128, { 0, 0, 0}}, // (169, 50) + {128, { 0, 0, 0}}, // (170, 50) + {128, { 0, 0, 0}}, // (171, 50) + {128, { 0, 0, 0}}, // (172, 50) + {128, { 0, 0, 0}}, // (173, 50) + {128, { 0, 0, 0}}, // (174, 50) + {128, { 0, 0, 0}}, // (175, 50) + {128, { 0, 0, 0}}, // (176, 50) + {128, { 0, 0, 0}}, // (177, 50) + {128, { 0, 0, 0}}, // (178, 50) + {128, { 0, 0, 0}}, // (179, 50) + {128, { 0, 0, 0}}, // ( 0, 51) + {128, { 0, 0, 0}}, // ( 1, 51) + {128, { 0, 0, 0}}, // ( 2, 51) + {128, { 0, 0, 0}}, // ( 3, 51) + {128, { 0, 0, 0}}, // ( 4, 51) + {128, { 0, 0, 0}}, // ( 5, 51) + {128, { 0, 0, 0}}, // ( 6, 51) + {128, { 0, 0, 0}}, // ( 7, 51) + {128, { 0, 0, 0}}, // ( 8, 51) + {128, { 0, 0, 0}}, // ( 9, 51) + {108, { 0, 0, 0}}, // ( 10, 51) + { 2, { 0, 0, 0}}, // ( 11, 51) + { 0, { 0, 0, 0}}, // ( 12, 51) + { 0, { 0, 0, 0}}, // ( 13, 51) + { 0, { 0, 0, 0}}, // ( 14, 51) + { 0, { 0, 0, 0}}, // ( 15, 51) + { 0, { 0, 0, 0}}, // ( 16, 51) + { 0, { 0, 0, 0}}, // ( 17, 51) + { 0, { 0, 0, 0}}, // ( 18, 51) + { 0, { 0, 0, 0}}, // ( 19, 51) + { 0, { 0, 0, 0}}, // ( 20, 51) + { 0, { 0, 0, 0}}, // ( 21, 51) + { 0, { 0, 0, 0}}, // ( 22, 51) + { 0, { 0, 0, 0}}, // ( 23, 51) + { 0, { 0, 0, 0}}, // ( 24, 51) + { 0, { 0, 0, 0}}, // ( 25, 51) + { 0, { 0, 0, 0}}, // ( 26, 51) + { 0, { 0, 0, 0}}, // ( 27, 51) + { 0, { 0, 0, 0}}, // ( 28, 51) + { 0, { 0, 0, 0}}, // ( 29, 51) + { 0, { 0, 0, 0}}, // ( 30, 51) + { 0, { 0, 0, 0}}, // ( 31, 51) + { 0, { 0, 0, 0}}, // ( 32, 51) + { 0, { 0, 0, 0}}, // ( 33, 51) + { 0, { 0, 0, 0}}, // ( 34, 51) + { 0, { 0, 0, 0}}, // ( 35, 51) + { 0, { 0, 0, 0}}, // ( 36, 51) + { 0, { 0, 0, 0}}, // ( 37, 51) + { 0, { 0, 0, 0}}, // ( 38, 51) + { 0, { 0, 0, 0}}, // ( 39, 51) + { 0, { 0, 0, 0}}, // ( 40, 51) + { 0, { 0, 0, 0}}, // ( 41, 51) + { 0, { 0, 0, 0}}, // ( 42, 51) + { 0, { 0, 0, 0}}, // ( 43, 51) + { 0, { 0, 0, 0}}, // ( 44, 51) + { 0, { 0, 0, 0}}, // ( 45, 51) + { 0, { 0, 0, 0}}, // ( 46, 51) + { 0, { 0, 0, 0}}, // ( 47, 51) + { 0, { 0, 0, 0}}, // ( 48, 51) + { 0, { 0, 0, 0}}, // ( 49, 51) + { 0, { 0, 0, 0}}, // ( 50, 51) + { 0, { 0, 0, 0}}, // ( 51, 51) + { 0, { 0, 0, 0}}, // ( 52, 51) + { 0, { 0, 0, 0}}, // ( 53, 51) + { 0, { 0, 0, 0}}, // ( 54, 51) + { 0, { 0, 0, 0}}, // ( 55, 51) + { 0, { 0, 0, 0}}, // ( 56, 51) + { 0, { 0, 0, 0}}, // ( 57, 51) + { 0, { 0, 0, 0}}, // ( 58, 51) + { 0, { 0, 0, 0}}, // ( 59, 51) + { 0, { 0, 0, 0}}, // ( 60, 51) + { 0, { 0, 0, 0}}, // ( 61, 51) + { 0, { 0, 0, 0}}, // ( 62, 51) + { 0, { 0, 0, 0}}, // ( 63, 51) + { 0, { 0, 0, 0}}, // ( 64, 51) + { 0, { 0, 0, 0}}, // ( 65, 51) + { 0, { 0, 0, 0}}, // ( 66, 51) + { 0, { 0, 0, 0}}, // ( 67, 51) + { 0, { 0, 0, 0}}, // ( 68, 51) + { 0, { 0, 0, 0}}, // ( 69, 51) + { 0, { 0, 0, 0}}, // ( 70, 51) + { 0, { 0, 0, 0}}, // ( 71, 51) + { 0, { 0, 0, 0}}, // ( 72, 51) + { 0, { 0, 0, 0}}, // ( 73, 51) + { 0, { 0, 0, 0}}, // ( 74, 51) + { 0, { 0, 0, 0}}, // ( 75, 51) + { 0, { 0, 0, 0}}, // ( 76, 51) + { 0, { 0, 0, 0}}, // ( 77, 51) + { 0, { 0, 0, 0}}, // ( 78, 51) + { 0, { 0, 0, 0}}, // ( 79, 51) + { 0, { 0, 0, 0}}, // ( 80, 51) + { 0, { 0, 0, 0}}, // ( 81, 51) + { 0, { 0, 0, 0}}, // ( 82, 51) + { 0, { 0, 0, 0}}, // ( 83, 51) + { 0, { 0, 0, 0}}, // ( 84, 51) + { 0, { 0, 0, 0}}, // ( 85, 51) + { 0, { 0, 0, 0}}, // ( 86, 51) + { 0, { 0, 0, 0}}, // ( 87, 51) + { 0, { 0, 0, 0}}, // ( 88, 51) + { 0, { 0, 0, 0}}, // ( 89, 51) + { 0, { 0, 0, 0}}, // ( 90, 51) + { 0, { 0, 0, 0}}, // ( 91, 51) + { 0, { 0, 0, 0}}, // ( 92, 51) + { 0, { 0, 0, 0}}, // ( 93, 51) + { 0, { 0, 0, 0}}, // ( 94, 51) + { 0, { 0, 0, 0}}, // ( 95, 51) + { 0, { 0, 0, 0}}, // ( 96, 51) + { 0, { 0, 0, 0}}, // ( 97, 51) + { 0, { 0, 0, 0}}, // ( 98, 51) + { 0, { 0, 0, 0}}, // ( 99, 51) + { 0, { 0, 0, 0}}, // (100, 51) + { 0, { 0, 0, 0}}, // (101, 51) + { 0, { 0, 0, 0}}, // (102, 51) + { 0, { 0, 0, 0}}, // (103, 51) + { 0, { 0, 0, 0}}, // (104, 51) + { 0, { 0, 0, 0}}, // (105, 51) + { 0, { 0, 0, 0}}, // (106, 51) + { 0, { 0, 0, 0}}, // (107, 51) + { 0, { 0, 0, 0}}, // (108, 51) + { 0, { 0, 0, 0}}, // (109, 51) + { 0, { 0, 0, 0}}, // (110, 51) + { 0, { 0, 0, 0}}, // (111, 51) + { 0, { 0, 0, 0}}, // (112, 51) + { 0, { 0, 0, 0}}, // (113, 51) + { 0, { 0, 0, 0}}, // (114, 51) + { 0, { 0, 0, 0}}, // (115, 51) + { 0, { 0, 0, 0}}, // (116, 51) + { 0, { 0, 0, 0}}, // (117, 51) + { 0, { 0, 0, 0}}, // (118, 51) + { 0, { 0, 0, 0}}, // (119, 51) + { 0, { 0, 0, 0}}, // (120, 51) + { 0, { 0, 0, 0}}, // (121, 51) + { 0, { 0, 0, 0}}, // (122, 51) + { 0, { 0, 0, 0}}, // (123, 51) + { 0, { 0, 0, 0}}, // (124, 51) + { 0, { 0, 0, 0}}, // (125, 51) + { 0, { 0, 0, 0}}, // (126, 51) + { 0, { 0, 0, 0}}, // (127, 51) + { 0, { 0, 0, 0}}, // (128, 51) + { 0, { 0, 0, 0}}, // (129, 51) + { 0, { 0, 0, 0}}, // (130, 51) + { 0, { 0, 0, 0}}, // (131, 51) + { 0, { 0, 0, 0}}, // (132, 51) + { 0, { 0, 0, 0}}, // (133, 51) + { 0, { 0, 0, 0}}, // (134, 51) + { 0, { 0, 0, 0}}, // (135, 51) + { 0, { 0, 0, 0}}, // (136, 51) + { 0, { 0, 0, 0}}, // (137, 51) + { 0, { 0, 0, 0}}, // (138, 51) + { 0, { 0, 0, 0}}, // (139, 51) + { 0, { 0, 0, 0}}, // (140, 51) + { 0, { 0, 0, 0}}, // (141, 51) + { 0, { 0, 0, 0}}, // (142, 51) + { 0, { 0, 0, 0}}, // (143, 51) + { 0, { 0, 0, 0}}, // (144, 51) + { 0, { 0, 0, 0}}, // (145, 51) + { 0, { 0, 0, 0}}, // (146, 51) + { 0, { 0, 0, 0}}, // (147, 51) + { 0, { 0, 0, 0}}, // (148, 51) + { 0, { 0, 0, 0}}, // (149, 51) + { 0, { 0, 0, 0}}, // (150, 51) + { 0, { 0, 0, 0}}, // (151, 51) + { 0, { 0, 0, 0}}, // (152, 51) + { 0, { 0, 0, 0}}, // (153, 51) + { 0, { 0, 0, 0}}, // (154, 51) + { 0, { 0, 0, 0}}, // (155, 51) + { 0, { 0, 0, 0}}, // (156, 51) + { 0, { 0, 0, 0}}, // (157, 51) + { 0, { 0, 0, 0}}, // (158, 51) + { 0, { 0, 0, 0}}, // (159, 51) + { 0, { 0, 0, 0}}, // (160, 51) + { 0, { 0, 0, 0}}, // (161, 51) + { 0, { 0, 0, 0}}, // (162, 51) + { 0, { 0, 0, 0}}, // (163, 51) + { 0, { 0, 0, 0}}, // (164, 51) + { 0, { 0, 0, 0}}, // (165, 51) + { 0, { 0, 0, 0}}, // (166, 51) + { 0, { 0, 0, 0}}, // (167, 51) + { 2, { 0, 0, 0}}, // (168, 51) + {108, { 0, 0, 0}}, // (169, 51) + {128, { 0, 0, 0}}, // (170, 51) + {128, { 0, 0, 0}}, // (171, 51) + {128, { 0, 0, 0}}, // (172, 51) + {128, { 0, 0, 0}}, // (173, 51) + {128, { 0, 0, 0}}, // (174, 51) + {128, { 0, 0, 0}}, // (175, 51) + {128, { 0, 0, 0}}, // (176, 51) + {128, { 0, 0, 0}}, // (177, 51) + {128, { 0, 0, 0}}, // (178, 51) + {128, { 0, 0, 0}}, // (179, 51) + {128, { 0, 0, 0}}, // ( 0, 52) + {128, { 0, 0, 0}}, // ( 1, 52) + {128, { 0, 0, 0}}, // ( 2, 52) + {128, { 0, 0, 0}}, // ( 3, 52) + {128, { 0, 0, 0}}, // ( 4, 52) + {128, { 0, 0, 0}}, // ( 5, 52) + {128, { 0, 0, 0}}, // ( 6, 52) + {128, { 0, 0, 0}}, // ( 7, 52) + {128, { 0, 0, 0}}, // ( 8, 52) + {128, { 0, 0, 0}}, // ( 9, 52) + { 50, { 0, 0, 0}}, // ( 10, 52) + { 0, { 0, 0, 0}}, // ( 11, 52) + { 0, { 0, 0, 0}}, // ( 12, 52) + { 0, { 0, 0, 0}}, // ( 13, 52) + { 0, { 0, 0, 0}}, // ( 14, 52) + { 0, { 0, 0, 0}}, // ( 15, 52) + { 0, { 0, 0, 0}}, // ( 16, 52) + { 0, { 0, 0, 0}}, // ( 17, 52) + { 0, { 0, 0, 0}}, // ( 18, 52) + { 0, { 0, 0, 0}}, // ( 19, 52) + { 0, { 0, 0, 0}}, // ( 20, 52) + { 0, { 0, 0, 0}}, // ( 21, 52) + { 0, { 0, 0, 0}}, // ( 22, 52) + { 0, { 0, 0, 0}}, // ( 23, 52) + { 0, { 0, 0, 0}}, // ( 24, 52) + { 0, { 0, 0, 0}}, // ( 25, 52) + { 0, { 0, 0, 0}}, // ( 26, 52) + { 0, { 0, 0, 0}}, // ( 27, 52) + { 0, { 0, 0, 0}}, // ( 28, 52) + { 0, { 0, 0, 0}}, // ( 29, 52) + { 0, { 0, 0, 0}}, // ( 30, 52) + { 0, { 0, 0, 0}}, // ( 31, 52) + { 0, { 0, 0, 0}}, // ( 32, 52) + { 0, { 0, 0, 0}}, // ( 33, 52) + { 0, { 0, 0, 0}}, // ( 34, 52) + { 0, { 0, 0, 0}}, // ( 35, 52) + { 0, { 0, 0, 0}}, // ( 36, 52) + { 0, { 0, 0, 0}}, // ( 37, 52) + { 0, { 0, 0, 0}}, // ( 38, 52) + { 0, { 0, 0, 0}}, // ( 39, 52) + { 0, { 0, 0, 0}}, // ( 40, 52) + { 0, { 0, 0, 0}}, // ( 41, 52) + { 0, { 0, 0, 0}}, // ( 42, 52) + { 0, { 0, 0, 0}}, // ( 43, 52) + { 0, { 0, 0, 0}}, // ( 44, 52) + { 0, { 0, 0, 0}}, // ( 45, 52) + { 0, { 0, 0, 0}}, // ( 46, 52) + { 0, { 0, 0, 0}}, // ( 47, 52) + { 0, { 0, 0, 0}}, // ( 48, 52) + { 0, { 0, 0, 0}}, // ( 49, 52) + { 0, { 0, 0, 0}}, // ( 50, 52) + { 0, { 0, 0, 0}}, // ( 51, 52) + { 0, { 0, 0, 0}}, // ( 52, 52) + { 0, { 0, 0, 0}}, // ( 53, 52) + { 0, { 0, 0, 0}}, // ( 54, 52) + { 0, { 0, 0, 0}}, // ( 55, 52) + { 0, { 0, 0, 0}}, // ( 56, 52) + { 0, { 0, 0, 0}}, // ( 57, 52) + { 0, { 0, 0, 0}}, // ( 58, 52) + { 0, { 0, 0, 0}}, // ( 59, 52) + { 0, { 0, 0, 0}}, // ( 60, 52) + { 0, { 0, 0, 0}}, // ( 61, 52) + { 0, { 0, 0, 0}}, // ( 62, 52) + { 0, { 0, 0, 0}}, // ( 63, 52) + { 0, { 0, 0, 0}}, // ( 64, 52) + { 0, { 0, 0, 0}}, // ( 65, 52) + { 0, { 0, 0, 0}}, // ( 66, 52) + { 0, { 0, 0, 0}}, // ( 67, 52) + { 0, { 0, 0, 0}}, // ( 68, 52) + { 0, { 0, 0, 0}}, // ( 69, 52) + { 0, { 0, 0, 0}}, // ( 70, 52) + { 0, { 0, 0, 0}}, // ( 71, 52) + { 0, { 0, 0, 0}}, // ( 72, 52) + { 0, { 0, 0, 0}}, // ( 73, 52) + { 0, { 0, 0, 0}}, // ( 74, 52) + { 0, { 0, 0, 0}}, // ( 75, 52) + { 0, { 0, 0, 0}}, // ( 76, 52) + { 0, { 0, 0, 0}}, // ( 77, 52) + { 0, { 0, 0, 0}}, // ( 78, 52) + { 0, { 0, 0, 0}}, // ( 79, 52) + { 0, { 0, 0, 0}}, // ( 80, 52) + { 0, { 0, 0, 0}}, // ( 81, 52) + { 0, { 0, 0, 0}}, // ( 82, 52) + { 0, { 0, 0, 0}}, // ( 83, 52) + { 0, { 0, 0, 0}}, // ( 84, 52) + { 0, { 0, 0, 0}}, // ( 85, 52) + { 0, { 0, 0, 0}}, // ( 86, 52) + { 0, { 0, 0, 0}}, // ( 87, 52) + { 0, { 0, 0, 0}}, // ( 88, 52) + { 0, { 0, 0, 0}}, // ( 89, 52) + { 0, { 0, 0, 0}}, // ( 90, 52) + { 0, { 0, 0, 0}}, // ( 91, 52) + { 0, { 0, 0, 0}}, // ( 92, 52) + { 0, { 0, 0, 0}}, // ( 93, 52) + { 0, { 0, 0, 0}}, // ( 94, 52) + { 0, { 0, 0, 0}}, // ( 95, 52) + { 0, { 0, 0, 0}}, // ( 96, 52) + { 0, { 0, 0, 0}}, // ( 97, 52) + { 0, { 0, 0, 0}}, // ( 98, 52) + { 0, { 0, 0, 0}}, // ( 99, 52) + { 0, { 0, 0, 0}}, // (100, 52) + { 0, { 0, 0, 0}}, // (101, 52) + { 0, { 0, 0, 0}}, // (102, 52) + { 0, { 0, 0, 0}}, // (103, 52) + { 0, { 0, 0, 0}}, // (104, 52) + { 0, { 0, 0, 0}}, // (105, 52) + { 0, { 0, 0, 0}}, // (106, 52) + { 0, { 0, 0, 0}}, // (107, 52) + { 0, { 0, 0, 0}}, // (108, 52) + { 0, { 0, 0, 0}}, // (109, 52) + { 0, { 0, 0, 0}}, // (110, 52) + { 0, { 0, 0, 0}}, // (111, 52) + { 0, { 0, 0, 0}}, // (112, 52) + { 0, { 0, 0, 0}}, // (113, 52) + { 0, { 0, 0, 0}}, // (114, 52) + { 0, { 0, 0, 0}}, // (115, 52) + { 0, { 0, 0, 0}}, // (116, 52) + { 0, { 0, 0, 0}}, // (117, 52) + { 0, { 0, 0, 0}}, // (118, 52) + { 0, { 0, 0, 0}}, // (119, 52) + { 0, { 0, 0, 0}}, // (120, 52) + { 0, { 0, 0, 0}}, // (121, 52) + { 0, { 0, 0, 0}}, // (122, 52) + { 0, { 0, 0, 0}}, // (123, 52) + { 0, { 0, 0, 0}}, // (124, 52) + { 0, { 0, 0, 0}}, // (125, 52) + { 0, { 0, 0, 0}}, // (126, 52) + { 0, { 0, 0, 0}}, // (127, 52) + { 0, { 0, 0, 0}}, // (128, 52) + { 0, { 0, 0, 0}}, // (129, 52) + { 0, { 0, 0, 0}}, // (130, 52) + { 0, { 0, 0, 0}}, // (131, 52) + { 0, { 0, 0, 0}}, // (132, 52) + { 0, { 0, 0, 0}}, // (133, 52) + { 0, { 0, 0, 0}}, // (134, 52) + { 0, { 0, 0, 0}}, // (135, 52) + { 0, { 0, 0, 0}}, // (136, 52) + { 0, { 0, 0, 0}}, // (137, 52) + { 0, { 0, 0, 0}}, // (138, 52) + { 0, { 0, 0, 0}}, // (139, 52) + { 0, { 0, 0, 0}}, // (140, 52) + { 0, { 0, 0, 0}}, // (141, 52) + { 0, { 0, 0, 0}}, // (142, 52) + { 0, { 0, 0, 0}}, // (143, 52) + { 0, { 0, 0, 0}}, // (144, 52) + { 0, { 0, 0, 0}}, // (145, 52) + { 0, { 0, 0, 0}}, // (146, 52) + { 0, { 0, 0, 0}}, // (147, 52) + { 0, { 0, 0, 0}}, // (148, 52) + { 0, { 0, 0, 0}}, // (149, 52) + { 0, { 0, 0, 0}}, // (150, 52) + { 0, { 0, 0, 0}}, // (151, 52) + { 0, { 0, 0, 0}}, // (152, 52) + { 0, { 0, 0, 0}}, // (153, 52) + { 0, { 0, 0, 0}}, // (154, 52) + { 0, { 0, 0, 0}}, // (155, 52) + { 0, { 0, 0, 0}}, // (156, 52) + { 0, { 0, 0, 0}}, // (157, 52) + { 0, { 0, 0, 0}}, // (158, 52) + { 0, { 0, 0, 0}}, // (159, 52) + { 0, { 0, 0, 0}}, // (160, 52) + { 0, { 0, 0, 0}}, // (161, 52) + { 0, { 0, 0, 0}}, // (162, 52) + { 0, { 0, 0, 0}}, // (163, 52) + { 0, { 0, 0, 0}}, // (164, 52) + { 0, { 0, 0, 0}}, // (165, 52) + { 0, { 0, 0, 0}}, // (166, 52) + { 0, { 0, 0, 0}}, // (167, 52) + { 0, { 0, 0, 0}}, // (168, 52) + { 49, { 0, 0, 0}}, // (169, 52) + {128, { 0, 0, 0}}, // (170, 52) + {128, { 0, 0, 0}}, // (171, 52) + {128, { 0, 0, 0}}, // (172, 52) + {128, { 0, 0, 0}}, // (173, 52) + {128, { 0, 0, 0}}, // (174, 52) + {128, { 0, 0, 0}}, // (175, 52) + {128, { 0, 0, 0}}, // (176, 52) + {128, { 0, 0, 0}}, // (177, 52) + {128, { 0, 0, 0}}, // (178, 52) + {128, { 0, 0, 0}}, // (179, 52) + {128, { 0, 0, 0}}, // ( 0, 53) + {128, { 0, 0, 0}}, // ( 1, 53) + {128, { 0, 0, 0}}, // ( 2, 53) + {128, { 0, 0, 0}}, // ( 3, 53) + {128, { 0, 0, 0}}, // ( 4, 53) + {128, { 0, 0, 0}}, // ( 5, 53) + {128, { 0, 0, 0}}, // ( 6, 53) + {128, { 0, 0, 0}}, // ( 7, 53) + {128, { 0, 0, 0}}, // ( 8, 53) + {115, { 0, 0, 0}}, // ( 9, 53) + { 3, { 0, 0, 0}}, // ( 10, 53) + { 0, { 0, 0, 0}}, // ( 11, 53) + { 0, { 0, 0, 0}}, // ( 12, 53) + { 0, { 0, 0, 0}}, // ( 13, 53) + { 0, { 0, 0, 0}}, // ( 14, 53) + { 0, { 0, 0, 0}}, // ( 15, 53) + { 0, { 0, 0, 0}}, // ( 16, 53) + { 0, { 0, 0, 0}}, // ( 17, 53) + { 0, { 0, 0, 0}}, // ( 18, 53) + { 0, { 0, 0, 0}}, // ( 19, 53) + { 0, { 0, 0, 0}}, // ( 20, 53) + { 0, { 0, 0, 0}}, // ( 21, 53) + { 0, { 0, 0, 0}}, // ( 22, 53) + { 0, { 0, 0, 0}}, // ( 23, 53) + { 0, { 0, 0, 0}}, // ( 24, 53) + { 0, { 0, 0, 0}}, // ( 25, 53) + { 0, { 0, 0, 0}}, // ( 26, 53) + { 0, { 0, 0, 0}}, // ( 27, 53) + { 0, { 0, 0, 0}}, // ( 28, 53) + { 0, { 0, 0, 0}}, // ( 29, 53) + { 0, { 0, 0, 0}}, // ( 30, 53) + { 0, { 0, 0, 0}}, // ( 31, 53) + { 0, { 0, 0, 0}}, // ( 32, 53) + { 0, { 0, 0, 0}}, // ( 33, 53) + { 0, { 0, 0, 0}}, // ( 34, 53) + { 0, { 0, 0, 0}}, // ( 35, 53) + { 0, { 0, 0, 0}}, // ( 36, 53) + { 0, { 0, 0, 0}}, // ( 37, 53) + { 0, { 0, 0, 0}}, // ( 38, 53) + { 0, { 0, 0, 0}}, // ( 39, 53) + { 0, { 0, 0, 0}}, // ( 40, 53) + { 0, { 0, 0, 0}}, // ( 41, 53) + { 0, { 0, 0, 0}}, // ( 42, 53) + { 0, { 0, 0, 0}}, // ( 43, 53) + { 0, { 0, 0, 0}}, // ( 44, 53) + { 0, { 0, 0, 0}}, // ( 45, 53) + { 0, { 0, 0, 0}}, // ( 46, 53) + { 0, { 0, 0, 0}}, // ( 47, 53) + { 0, { 0, 0, 0}}, // ( 48, 53) + { 0, { 0, 0, 0}}, // ( 49, 53) + { 0, { 0, 0, 0}}, // ( 50, 53) + { 0, { 0, 0, 0}}, // ( 51, 53) + { 0, { 0, 0, 0}}, // ( 52, 53) + { 0, { 0, 0, 0}}, // ( 53, 53) + { 0, { 0, 0, 0}}, // ( 54, 53) + { 0, { 0, 0, 0}}, // ( 55, 53) + { 0, { 0, 0, 0}}, // ( 56, 53) + { 0, { 0, 0, 0}}, // ( 57, 53) + { 0, { 0, 0, 0}}, // ( 58, 53) + { 0, { 0, 0, 0}}, // ( 59, 53) + { 0, { 0, 0, 0}}, // ( 60, 53) + { 0, { 0, 0, 0}}, // ( 61, 53) + { 0, { 0, 0, 0}}, // ( 62, 53) + { 0, { 0, 0, 0}}, // ( 63, 53) + { 0, { 0, 0, 0}}, // ( 64, 53) + { 0, { 0, 0, 0}}, // ( 65, 53) + { 0, { 0, 0, 0}}, // ( 66, 53) + { 0, { 0, 0, 0}}, // ( 67, 53) + { 0, { 0, 0, 0}}, // ( 68, 53) + { 0, { 0, 0, 0}}, // ( 69, 53) + { 0, { 0, 0, 0}}, // ( 70, 53) + { 0, { 0, 0, 0}}, // ( 71, 53) + { 0, { 0, 0, 0}}, // ( 72, 53) + { 0, { 0, 0, 0}}, // ( 73, 53) + { 0, { 0, 0, 0}}, // ( 74, 53) + { 0, { 0, 0, 0}}, // ( 75, 53) + { 0, { 0, 0, 0}}, // ( 76, 53) + { 0, { 0, 0, 0}}, // ( 77, 53) + { 0, { 0, 0, 0}}, // ( 78, 53) + { 0, { 0, 0, 0}}, // ( 79, 53) + { 0, { 0, 0, 0}}, // ( 80, 53) + { 0, { 0, 0, 0}}, // ( 81, 53) + { 0, { 0, 0, 0}}, // ( 82, 53) + { 0, { 0, 0, 0}}, // ( 83, 53) + { 0, { 0, 0, 0}}, // ( 84, 53) + { 0, { 0, 0, 0}}, // ( 85, 53) + { 0, { 0, 0, 0}}, // ( 86, 53) + { 0, { 0, 0, 0}}, // ( 87, 53) + { 0, { 0, 0, 0}}, // ( 88, 53) + { 0, { 0, 0, 0}}, // ( 89, 53) + { 0, { 0, 0, 0}}, // ( 90, 53) + { 0, { 0, 0, 0}}, // ( 91, 53) + { 0, { 0, 0, 0}}, // ( 92, 53) + { 0, { 0, 0, 0}}, // ( 93, 53) + { 0, { 0, 0, 0}}, // ( 94, 53) + { 0, { 0, 0, 0}}, // ( 95, 53) + { 0, { 0, 0, 0}}, // ( 96, 53) + { 0, { 0, 0, 0}}, // ( 97, 53) + { 0, { 0, 0, 0}}, // ( 98, 53) + { 0, { 0, 0, 0}}, // ( 99, 53) + { 0, { 0, 0, 0}}, // (100, 53) + { 0, { 0, 0, 0}}, // (101, 53) + { 0, { 0, 0, 0}}, // (102, 53) + { 0, { 0, 0, 0}}, // (103, 53) + { 0, { 0, 0, 0}}, // (104, 53) + { 0, { 0, 0, 0}}, // (105, 53) + { 0, { 0, 0, 0}}, // (106, 53) + { 0, { 0, 0, 0}}, // (107, 53) + { 0, { 0, 0, 0}}, // (108, 53) + { 0, { 0, 0, 0}}, // (109, 53) + { 0, { 0, 0, 0}}, // (110, 53) + { 0, { 0, 0, 0}}, // (111, 53) + { 0, { 0, 0, 0}}, // (112, 53) + { 0, { 0, 0, 0}}, // (113, 53) + { 0, { 0, 0, 0}}, // (114, 53) + { 0, { 0, 0, 0}}, // (115, 53) + { 0, { 0, 0, 0}}, // (116, 53) + { 0, { 0, 0, 0}}, // (117, 53) + { 0, { 0, 0, 0}}, // (118, 53) + { 0, { 0, 0, 0}}, // (119, 53) + { 0, { 0, 0, 0}}, // (120, 53) + { 0, { 0, 0, 0}}, // (121, 53) + { 0, { 0, 0, 0}}, // (122, 53) + { 0, { 0, 0, 0}}, // (123, 53) + { 0, { 0, 0, 0}}, // (124, 53) + { 0, { 0, 0, 0}}, // (125, 53) + { 0, { 0, 0, 0}}, // (126, 53) + { 0, { 0, 0, 0}}, // (127, 53) + { 0, { 0, 0, 0}}, // (128, 53) + { 0, { 0, 0, 0}}, // (129, 53) + { 0, { 0, 0, 0}}, // (130, 53) + { 0, { 0, 0, 0}}, // (131, 53) + { 0, { 0, 0, 0}}, // (132, 53) + { 0, { 0, 0, 0}}, // (133, 53) + { 0, { 0, 0, 0}}, // (134, 53) + { 0, { 0, 0, 0}}, // (135, 53) + { 0, { 0, 0, 0}}, // (136, 53) + { 0, { 0, 0, 0}}, // (137, 53) + { 0, { 0, 0, 0}}, // (138, 53) + { 0, { 0, 0, 0}}, // (139, 53) + { 0, { 0, 0, 0}}, // (140, 53) + { 0, { 0, 0, 0}}, // (141, 53) + { 0, { 0, 0, 0}}, // (142, 53) + { 0, { 0, 0, 0}}, // (143, 53) + { 0, { 0, 0, 0}}, // (144, 53) + { 0, { 0, 0, 0}}, // (145, 53) + { 0, { 0, 0, 0}}, // (146, 53) + { 0, { 0, 0, 0}}, // (147, 53) + { 0, { 0, 0, 0}}, // (148, 53) + { 0, { 0, 0, 0}}, // (149, 53) + { 0, { 0, 0, 0}}, // (150, 53) + { 0, { 0, 0, 0}}, // (151, 53) + { 0, { 0, 0, 0}}, // (152, 53) + { 0, { 0, 0, 0}}, // (153, 53) + { 0, { 0, 0, 0}}, // (154, 53) + { 0, { 0, 0, 0}}, // (155, 53) + { 0, { 0, 0, 0}}, // (156, 53) + { 0, { 0, 0, 0}}, // (157, 53) + { 0, { 0, 0, 0}}, // (158, 53) + { 0, { 0, 0, 0}}, // (159, 53) + { 0, { 0, 0, 0}}, // (160, 53) + { 0, { 0, 0, 0}}, // (161, 53) + { 0, { 0, 0, 0}}, // (162, 53) + { 0, { 0, 0, 0}}, // (163, 53) + { 0, { 0, 0, 0}}, // (164, 53) + { 0, { 0, 0, 0}}, // (165, 53) + { 0, { 0, 0, 0}}, // (166, 53) + { 0, { 0, 0, 0}}, // (167, 53) + { 0, { 0, 0, 0}}, // (168, 53) + { 3, { 0, 0, 0}}, // (169, 53) + {115, { 0, 0, 0}}, // (170, 53) + {128, { 0, 0, 0}}, // (171, 53) + {128, { 0, 0, 0}}, // (172, 53) + {128, { 0, 0, 0}}, // (173, 53) + {128, { 0, 0, 0}}, // (174, 53) + {128, { 0, 0, 0}}, // (175, 53) + {128, { 0, 0, 0}}, // (176, 53) + {128, { 0, 0, 0}}, // (177, 53) + {128, { 0, 0, 0}}, // (178, 53) + {128, { 0, 0, 0}}, // (179, 53) + {128, { 0, 0, 0}}, // ( 0, 54) + {128, { 0, 0, 0}}, // ( 1, 54) + {128, { 0, 0, 0}}, // ( 2, 54) + {128, { 0, 0, 0}}, // ( 3, 54) + {128, { 0, 0, 0}}, // ( 4, 54) + {128, { 0, 0, 0}}, // ( 5, 54) + {128, { 0, 0, 0}}, // ( 6, 54) + {128, { 0, 0, 0}}, // ( 7, 54) + {128, { 0, 0, 0}}, // ( 8, 54) + { 62, { 0, 0, 0}}, // ( 9, 54) + { 0, { 0, 0, 0}}, // ( 10, 54) + { 0, { 0, 0, 0}}, // ( 11, 54) + { 0, { 0, 0, 0}}, // ( 12, 54) + { 0, { 0, 0, 0}}, // ( 13, 54) + { 0, { 0, 0, 0}}, // ( 14, 54) + { 0, { 0, 0, 0}}, // ( 15, 54) + { 0, { 0, 0, 0}}, // ( 16, 54) + { 0, { 0, 0, 0}}, // ( 17, 54) + { 0, { 0, 0, 0}}, // ( 18, 54) + { 0, { 0, 0, 0}}, // ( 19, 54) + { 0, { 0, 0, 0}}, // ( 20, 54) + { 0, { 0, 0, 0}}, // ( 21, 54) + { 0, { 0, 0, 0}}, // ( 22, 54) + { 0, { 0, 0, 0}}, // ( 23, 54) + { 0, { 0, 0, 0}}, // ( 24, 54) + { 0, { 0, 0, 0}}, // ( 25, 54) + { 0, { 0, 0, 0}}, // ( 26, 54) + { 0, { 0, 0, 0}}, // ( 27, 54) + { 0, { 0, 0, 0}}, // ( 28, 54) + { 0, { 0, 0, 0}}, // ( 29, 54) + { 0, { 0, 0, 0}}, // ( 30, 54) + { 0, { 0, 0, 0}}, // ( 31, 54) + { 0, { 0, 0, 0}}, // ( 32, 54) + { 0, { 0, 0, 0}}, // ( 33, 54) + { 0, { 0, 0, 0}}, // ( 34, 54) + { 0, { 0, 0, 0}}, // ( 35, 54) + { 0, { 0, 0, 0}}, // ( 36, 54) + { 0, { 0, 0, 0}}, // ( 37, 54) + { 0, { 0, 0, 0}}, // ( 38, 54) + { 0, { 0, 0, 0}}, // ( 39, 54) + { 0, { 0, 0, 0}}, // ( 40, 54) + { 0, { 0, 0, 0}}, // ( 41, 54) + { 0, { 0, 0, 0}}, // ( 42, 54) + { 0, { 0, 0, 0}}, // ( 43, 54) + { 0, { 0, 0, 0}}, // ( 44, 54) + { 0, { 0, 0, 0}}, // ( 45, 54) + { 0, { 0, 0, 0}}, // ( 46, 54) + { 0, { 0, 0, 0}}, // ( 47, 54) + { 0, { 0, 0, 0}}, // ( 48, 54) + { 0, { 0, 0, 0}}, // ( 49, 54) + { 0, { 0, 0, 0}}, // ( 50, 54) + { 0, { 0, 0, 0}}, // ( 51, 54) + { 0, { 0, 0, 0}}, // ( 52, 54) + { 0, { 0, 0, 0}}, // ( 53, 54) + { 0, { 0, 0, 0}}, // ( 54, 54) + { 0, { 0, 0, 0}}, // ( 55, 54) + { 0, { 0, 0, 0}}, // ( 56, 54) + { 0, { 0, 0, 0}}, // ( 57, 54) + { 0, { 0, 0, 0}}, // ( 58, 54) + { 0, { 0, 0, 0}}, // ( 59, 54) + { 0, { 0, 0, 0}}, // ( 60, 54) + { 0, { 0, 0, 0}}, // ( 61, 54) + { 0, { 0, 0, 0}}, // ( 62, 54) + { 0, { 0, 0, 0}}, // ( 63, 54) + { 0, { 0, 0, 0}}, // ( 64, 54) + { 0, { 0, 0, 0}}, // ( 65, 54) + { 0, { 0, 0, 0}}, // ( 66, 54) + { 0, { 0, 0, 0}}, // ( 67, 54) + { 0, { 0, 0, 0}}, // ( 68, 54) + { 0, { 0, 0, 0}}, // ( 69, 54) + { 0, { 0, 0, 0}}, // ( 70, 54) + { 0, { 0, 0, 0}}, // ( 71, 54) + { 0, { 0, 0, 0}}, // ( 72, 54) + { 0, { 0, 0, 0}}, // ( 73, 54) + { 0, { 0, 0, 0}}, // ( 74, 54) + { 0, { 0, 0, 0}}, // ( 75, 54) + { 0, { 0, 0, 0}}, // ( 76, 54) + { 0, { 0, 0, 0}}, // ( 77, 54) + { 0, { 0, 0, 0}}, // ( 78, 54) + { 0, { 0, 0, 0}}, // ( 79, 54) + { 0, { 0, 0, 0}}, // ( 80, 54) + { 0, { 0, 0, 0}}, // ( 81, 54) + { 0, { 0, 0, 0}}, // ( 82, 54) + { 0, { 0, 0, 0}}, // ( 83, 54) + { 0, { 0, 0, 0}}, // ( 84, 54) + { 0, { 0, 0, 0}}, // ( 85, 54) + { 0, { 0, 0, 0}}, // ( 86, 54) + { 0, { 0, 0, 0}}, // ( 87, 54) + { 0, { 0, 0, 0}}, // ( 88, 54) + { 0, { 0, 0, 0}}, // ( 89, 54) + { 0, { 0, 0, 0}}, // ( 90, 54) + { 0, { 0, 0, 0}}, // ( 91, 54) + { 0, { 0, 0, 0}}, // ( 92, 54) + { 0, { 0, 0, 0}}, // ( 93, 54) + { 0, { 0, 0, 0}}, // ( 94, 54) + { 0, { 0, 0, 0}}, // ( 95, 54) + { 0, { 0, 0, 0}}, // ( 96, 54) + { 0, { 0, 0, 0}}, // ( 97, 54) + { 0, { 0, 0, 0}}, // ( 98, 54) + { 0, { 0, 0, 0}}, // ( 99, 54) + { 0, { 0, 0, 0}}, // (100, 54) + { 0, { 0, 0, 0}}, // (101, 54) + { 0, { 0, 0, 0}}, // (102, 54) + { 0, { 0, 0, 0}}, // (103, 54) + { 0, { 0, 0, 0}}, // (104, 54) + { 0, { 0, 0, 0}}, // (105, 54) + { 0, { 0, 0, 0}}, // (106, 54) + { 0, { 0, 0, 0}}, // (107, 54) + { 0, { 0, 0, 0}}, // (108, 54) + { 0, { 0, 0, 0}}, // (109, 54) + { 0, { 0, 0, 0}}, // (110, 54) + { 0, { 0, 0, 0}}, // (111, 54) + { 0, { 0, 0, 0}}, // (112, 54) + { 0, { 0, 0, 0}}, // (113, 54) + { 0, { 0, 0, 0}}, // (114, 54) + { 0, { 0, 0, 0}}, // (115, 54) + { 0, { 0, 0, 0}}, // (116, 54) + { 0, { 0, 0, 0}}, // (117, 54) + { 0, { 0, 0, 0}}, // (118, 54) + { 0, { 0, 0, 0}}, // (119, 54) + { 0, { 0, 0, 0}}, // (120, 54) + { 0, { 0, 0, 0}}, // (121, 54) + { 0, { 0, 0, 0}}, // (122, 54) + { 0, { 0, 0, 0}}, // (123, 54) + { 0, { 0, 0, 0}}, // (124, 54) + { 0, { 0, 0, 0}}, // (125, 54) + { 0, { 0, 0, 0}}, // (126, 54) + { 0, { 0, 0, 0}}, // (127, 54) + { 0, { 0, 0, 0}}, // (128, 54) + { 0, { 0, 0, 0}}, // (129, 54) + { 0, { 0, 0, 0}}, // (130, 54) + { 0, { 0, 0, 0}}, // (131, 54) + { 0, { 0, 0, 0}}, // (132, 54) + { 0, { 0, 0, 0}}, // (133, 54) + { 0, { 0, 0, 0}}, // (134, 54) + { 0, { 0, 0, 0}}, // (135, 54) + { 0, { 0, 0, 0}}, // (136, 54) + { 0, { 0, 0, 0}}, // (137, 54) + { 0, { 0, 0, 0}}, // (138, 54) + { 0, { 0, 0, 0}}, // (139, 54) + { 0, { 0, 0, 0}}, // (140, 54) + { 0, { 0, 0, 0}}, // (141, 54) + { 0, { 0, 0, 0}}, // (142, 54) + { 0, { 0, 0, 0}}, // (143, 54) + { 0, { 0, 0, 0}}, // (144, 54) + { 0, { 0, 0, 0}}, // (145, 54) + { 0, { 0, 0, 0}}, // (146, 54) + { 0, { 0, 0, 0}}, // (147, 54) + { 0, { 0, 0, 0}}, // (148, 54) + { 0, { 0, 0, 0}}, // (149, 54) + { 0, { 0, 0, 0}}, // (150, 54) + { 0, { 0, 0, 0}}, // (151, 54) + { 0, { 0, 0, 0}}, // (152, 54) + { 0, { 0, 0, 0}}, // (153, 54) + { 0, { 0, 0, 0}}, // (154, 54) + { 0, { 0, 0, 0}}, // (155, 54) + { 0, { 0, 0, 0}}, // (156, 54) + { 0, { 0, 0, 0}}, // (157, 54) + { 0, { 0, 0, 0}}, // (158, 54) + { 0, { 0, 0, 0}}, // (159, 54) + { 0, { 0, 0, 0}}, // (160, 54) + { 0, { 0, 0, 0}}, // (161, 54) + { 0, { 0, 0, 0}}, // (162, 54) + { 0, { 0, 0, 0}}, // (163, 54) + { 0, { 0, 0, 0}}, // (164, 54) + { 0, { 0, 0, 0}}, // (165, 54) + { 0, { 0, 0, 0}}, // (166, 54) + { 0, { 0, 0, 0}}, // (167, 54) + { 0, { 0, 0, 0}}, // (168, 54) + { 0, { 0, 0, 0}}, // (169, 54) + { 62, { 0, 0, 0}}, // (170, 54) + {128, { 0, 0, 0}}, // (171, 54) + {128, { 0, 0, 0}}, // (172, 54) + {128, { 0, 0, 0}}, // (173, 54) + {128, { 0, 0, 0}}, // (174, 54) + {128, { 0, 0, 0}}, // (175, 54) + {128, { 0, 0, 0}}, // (176, 54) + {128, { 0, 0, 0}}, // (177, 54) + {128, { 0, 0, 0}}, // (178, 54) + {128, { 0, 0, 0}}, // (179, 54) + {128, { 0, 0, 0}}, // ( 0, 55) + {128, { 0, 0, 0}}, // ( 1, 55) + {128, { 0, 0, 0}}, // ( 2, 55) + {128, { 0, 0, 0}}, // ( 3, 55) + {128, { 0, 0, 0}}, // ( 4, 55) + {128, { 0, 0, 0}}, // ( 5, 55) + {128, { 0, 0, 0}}, // ( 6, 55) + {128, { 0, 0, 0}}, // ( 7, 55) + {122, { 0, 0, 0}}, // ( 8, 55) + { 9, { 0, 0, 0}}, // ( 9, 55) + { 0, { 0, 0, 0}}, // ( 10, 55) + { 0, { 0, 0, 0}}, // ( 11, 55) + { 0, { 0, 0, 0}}, // ( 12, 55) + { 0, { 0, 0, 0}}, // ( 13, 55) + { 0, { 0, 0, 0}}, // ( 14, 55) + { 0, { 0, 0, 0}}, // ( 15, 55) + { 0, { 0, 0, 0}}, // ( 16, 55) + { 0, { 0, 0, 0}}, // ( 17, 55) + { 0, { 0, 0, 0}}, // ( 18, 55) + { 0, { 0, 0, 0}}, // ( 19, 55) + { 0, { 0, 0, 0}}, // ( 20, 55) + { 0, { 0, 0, 0}}, // ( 21, 55) + { 0, { 0, 0, 0}}, // ( 22, 55) + { 0, { 0, 0, 0}}, // ( 23, 55) + { 0, { 0, 0, 0}}, // ( 24, 55) + { 0, { 0, 0, 0}}, // ( 25, 55) + { 0, { 0, 0, 0}}, // ( 26, 55) + { 0, { 0, 0, 0}}, // ( 27, 55) + { 0, { 0, 0, 0}}, // ( 28, 55) + { 0, { 0, 0, 0}}, // ( 29, 55) + { 0, { 0, 0, 0}}, // ( 30, 55) + { 0, { 0, 0, 0}}, // ( 31, 55) + { 0, { 0, 0, 0}}, // ( 32, 55) + { 0, { 0, 0, 0}}, // ( 33, 55) + { 0, { 0, 0, 0}}, // ( 34, 55) + { 0, { 0, 0, 0}}, // ( 35, 55) + { 0, { 0, 0, 0}}, // ( 36, 55) + { 0, { 0, 0, 0}}, // ( 37, 55) + { 0, { 0, 0, 0}}, // ( 38, 55) + { 0, { 0, 0, 0}}, // ( 39, 55) + { 0, { 0, 0, 0}}, // ( 40, 55) + { 0, { 0, 0, 0}}, // ( 41, 55) + { 0, { 0, 0, 0}}, // ( 42, 55) + { 0, { 0, 0, 0}}, // ( 43, 55) + { 0, { 0, 0, 0}}, // ( 44, 55) + { 0, { 0, 0, 0}}, // ( 45, 55) + { 0, { 0, 0, 0}}, // ( 46, 55) + { 0, { 0, 0, 0}}, // ( 47, 55) + { 0, { 0, 0, 0}}, // ( 48, 55) + { 0, { 0, 0, 0}}, // ( 49, 55) + { 0, { 0, 0, 0}}, // ( 50, 55) + { 0, { 0, 0, 0}}, // ( 51, 55) + { 0, { 0, 0, 0}}, // ( 52, 55) + { 0, { 0, 0, 0}}, // ( 53, 55) + { 0, { 0, 0, 0}}, // ( 54, 55) + { 0, { 0, 0, 0}}, // ( 55, 55) + { 0, { 0, 0, 0}}, // ( 56, 55) + { 0, { 0, 0, 0}}, // ( 57, 55) + { 0, { 0, 0, 0}}, // ( 58, 55) + { 0, { 0, 0, 0}}, // ( 59, 55) + { 0, { 0, 0, 0}}, // ( 60, 55) + { 0, { 0, 0, 0}}, // ( 61, 55) + { 0, { 0, 0, 0}}, // ( 62, 55) + { 0, { 0, 0, 0}}, // ( 63, 55) + { 0, { 0, 0, 0}}, // ( 64, 55) + { 0, { 0, 0, 0}}, // ( 65, 55) + { 0, { 0, 0, 0}}, // ( 66, 55) + { 0, { 0, 0, 0}}, // ( 67, 55) + { 0, { 0, 0, 0}}, // ( 68, 55) + { 0, { 0, 0, 0}}, // ( 69, 55) + { 0, { 0, 0, 0}}, // ( 70, 55) + { 0, { 0, 0, 0}}, // ( 71, 55) + { 0, { 0, 0, 0}}, // ( 72, 55) + { 0, { 0, 0, 0}}, // ( 73, 55) + { 0, { 0, 0, 0}}, // ( 74, 55) + { 0, { 0, 0, 0}}, // ( 75, 55) + { 0, { 0, 0, 0}}, // ( 76, 55) + { 0, { 0, 0, 0}}, // ( 77, 55) + { 0, { 0, 0, 0}}, // ( 78, 55) + { 0, { 0, 0, 0}}, // ( 79, 55) + { 0, { 0, 0, 0}}, // ( 80, 55) + { 0, { 0, 0, 0}}, // ( 81, 55) + { 0, { 0, 0, 0}}, // ( 82, 55) + { 0, { 0, 0, 0}}, // ( 83, 55) + { 0, { 0, 0, 0}}, // ( 84, 55) + { 0, { 0, 0, 0}}, // ( 85, 55) + { 0, { 0, 0, 0}}, // ( 86, 55) + { 0, { 0, 0, 0}}, // ( 87, 55) + { 0, { 0, 0, 0}}, // ( 88, 55) + { 0, { 0, 0, 0}}, // ( 89, 55) + { 0, { 0, 0, 0}}, // ( 90, 55) + { 0, { 0, 0, 0}}, // ( 91, 55) + { 0, { 0, 0, 0}}, // ( 92, 55) + { 0, { 0, 0, 0}}, // ( 93, 55) + { 0, { 0, 0, 0}}, // ( 94, 55) + { 0, { 0, 0, 0}}, // ( 95, 55) + { 0, { 0, 0, 0}}, // ( 96, 55) + { 0, { 0, 0, 0}}, // ( 97, 55) + { 0, { 0, 0, 0}}, // ( 98, 55) + { 0, { 0, 0, 0}}, // ( 99, 55) + { 0, { 0, 0, 0}}, // (100, 55) + { 0, { 0, 0, 0}}, // (101, 55) + { 0, { 0, 0, 0}}, // (102, 55) + { 0, { 0, 0, 0}}, // (103, 55) + { 0, { 0, 0, 0}}, // (104, 55) + { 0, { 0, 0, 0}}, // (105, 55) + { 0, { 0, 0, 0}}, // (106, 55) + { 0, { 0, 0, 0}}, // (107, 55) + { 0, { 0, 0, 0}}, // (108, 55) + { 0, { 0, 0, 0}}, // (109, 55) + { 0, { 0, 0, 0}}, // (110, 55) + { 0, { 0, 0, 0}}, // (111, 55) + { 0, { 0, 0, 0}}, // (112, 55) + { 0, { 0, 0, 0}}, // (113, 55) + { 0, { 0, 0, 0}}, // (114, 55) + { 0, { 0, 0, 0}}, // (115, 55) + { 0, { 0, 0, 0}}, // (116, 55) + { 0, { 0, 0, 0}}, // (117, 55) + { 0, { 0, 0, 0}}, // (118, 55) + { 0, { 0, 0, 0}}, // (119, 55) + { 0, { 0, 0, 0}}, // (120, 55) + { 0, { 0, 0, 0}}, // (121, 55) + { 0, { 0, 0, 0}}, // (122, 55) + { 0, { 0, 0, 0}}, // (123, 55) + { 0, { 0, 0, 0}}, // (124, 55) + { 0, { 0, 0, 0}}, // (125, 55) + { 0, { 0, 0, 0}}, // (126, 55) + { 0, { 0, 0, 0}}, // (127, 55) + { 0, { 0, 0, 0}}, // (128, 55) + { 0, { 0, 0, 0}}, // (129, 55) + { 0, { 0, 0, 0}}, // (130, 55) + { 0, { 0, 0, 0}}, // (131, 55) + { 0, { 0, 0, 0}}, // (132, 55) + { 0, { 0, 0, 0}}, // (133, 55) + { 0, { 0, 0, 0}}, // (134, 55) + { 0, { 0, 0, 0}}, // (135, 55) + { 0, { 0, 0, 0}}, // (136, 55) + { 0, { 0, 0, 0}}, // (137, 55) + { 0, { 0, 0, 0}}, // (138, 55) + { 0, { 0, 0, 0}}, // (139, 55) + { 0, { 0, 0, 0}}, // (140, 55) + { 0, { 0, 0, 0}}, // (141, 55) + { 0, { 0, 0, 0}}, // (142, 55) + { 0, { 0, 0, 0}}, // (143, 55) + { 0, { 0, 0, 0}}, // (144, 55) + { 0, { 0, 0, 0}}, // (145, 55) + { 0, { 0, 0, 0}}, // (146, 55) + { 0, { 0, 0, 0}}, // (147, 55) + { 0, { 0, 0, 0}}, // (148, 55) + { 0, { 0, 0, 0}}, // (149, 55) + { 0, { 0, 0, 0}}, // (150, 55) + { 0, { 0, 0, 0}}, // (151, 55) + { 0, { 0, 0, 0}}, // (152, 55) + { 0, { 0, 0, 0}}, // (153, 55) + { 0, { 0, 0, 0}}, // (154, 55) + { 0, { 0, 0, 0}}, // (155, 55) + { 0, { 0, 0, 0}}, // (156, 55) + { 0, { 0, 0, 0}}, // (157, 55) + { 0, { 0, 0, 0}}, // (158, 55) + { 0, { 0, 0, 0}}, // (159, 55) + { 0, { 0, 0, 0}}, // (160, 55) + { 0, { 0, 0, 0}}, // (161, 55) + { 0, { 0, 0, 0}}, // (162, 55) + { 0, { 0, 0, 0}}, // (163, 55) + { 0, { 0, 0, 0}}, // (164, 55) + { 0, { 0, 0, 0}}, // (165, 55) + { 0, { 0, 0, 0}}, // (166, 55) + { 0, { 0, 0, 0}}, // (167, 55) + { 0, { 0, 0, 0}}, // (168, 55) + { 0, { 0, 0, 0}}, // (169, 55) + { 9, { 0, 0, 0}}, // (170, 55) + {122, { 0, 0, 0}}, // (171, 55) + {128, { 0, 0, 0}}, // (172, 55) + {128, { 0, 0, 0}}, // (173, 55) + {128, { 0, 0, 0}}, // (174, 55) + {128, { 0, 0, 0}}, // (175, 55) + {128, { 0, 0, 0}}, // (176, 55) + {128, { 0, 0, 0}}, // (177, 55) + {128, { 0, 0, 0}}, // (178, 55) + {128, { 0, 0, 0}}, // (179, 55) + {128, { 0, 0, 0}}, // ( 0, 56) + {128, { 0, 0, 0}}, // ( 1, 56) + {128, { 0, 0, 0}}, // ( 2, 56) + {128, { 0, 0, 0}}, // ( 3, 56) + {128, { 0, 0, 0}}, // ( 4, 56) + {128, { 0, 0, 0}}, // ( 5, 56) + {128, { 0, 0, 0}}, // ( 6, 56) + {128, { 0, 0, 0}}, // ( 7, 56) + { 79, { 0, 0, 0}}, // ( 8, 56) + { 0, { 0, 0, 0}}, // ( 9, 56) + { 0, { 0, 0, 0}}, // ( 10, 56) + { 0, { 0, 0, 0}}, // ( 11, 56) + { 0, { 0, 0, 0}}, // ( 12, 56) + { 0, { 0, 0, 0}}, // ( 13, 56) + { 0, { 0, 0, 0}}, // ( 14, 56) + { 0, { 0, 0, 0}}, // ( 15, 56) + { 0, { 0, 0, 0}}, // ( 16, 56) + { 0, { 0, 0, 0}}, // ( 17, 56) + { 0, { 0, 0, 0}}, // ( 18, 56) + { 0, { 0, 0, 0}}, // ( 19, 56) + { 0, { 0, 0, 0}}, // ( 20, 56) + { 0, { 0, 0, 0}}, // ( 21, 56) + { 0, { 0, 0, 0}}, // ( 22, 56) + { 0, { 0, 0, 0}}, // ( 23, 56) + { 0, { 0, 0, 0}}, // ( 24, 56) + { 0, { 0, 0, 0}}, // ( 25, 56) + { 0, { 0, 0, 0}}, // ( 26, 56) + { 0, { 0, 0, 0}}, // ( 27, 56) + { 0, { 0, 0, 0}}, // ( 28, 56) + { 0, { 0, 0, 0}}, // ( 29, 56) + { 0, { 0, 0, 0}}, // ( 30, 56) + { 0, { 0, 0, 0}}, // ( 31, 56) + { 0, { 0, 0, 0}}, // ( 32, 56) + { 0, { 0, 0, 0}}, // ( 33, 56) + { 0, { 0, 0, 0}}, // ( 34, 56) + { 0, { 0, 0, 0}}, // ( 35, 56) + { 0, { 0, 0, 0}}, // ( 36, 56) + { 0, { 0, 0, 0}}, // ( 37, 56) + { 0, { 0, 0, 0}}, // ( 38, 56) + { 0, { 0, 0, 0}}, // ( 39, 56) + { 0, { 0, 0, 0}}, // ( 40, 56) + { 0, { 0, 0, 0}}, // ( 41, 56) + { 0, { 0, 0, 0}}, // ( 42, 56) + { 0, { 0, 0, 0}}, // ( 43, 56) + { 0, { 0, 0, 0}}, // ( 44, 56) + { 0, { 0, 0, 0}}, // ( 45, 56) + { 0, { 0, 0, 0}}, // ( 46, 56) + { 0, { 0, 0, 0}}, // ( 47, 56) + { 0, { 0, 0, 0}}, // ( 48, 56) + { 0, { 0, 0, 0}}, // ( 49, 56) + { 0, { 0, 0, 0}}, // ( 50, 56) + { 0, { 0, 0, 0}}, // ( 51, 56) + { 0, { 0, 0, 0}}, // ( 52, 56) + { 0, { 0, 0, 0}}, // ( 53, 56) + { 0, { 0, 0, 0}}, // ( 54, 56) + { 0, { 0, 0, 0}}, // ( 55, 56) + { 0, { 0, 0, 0}}, // ( 56, 56) + { 0, { 0, 0, 0}}, // ( 57, 56) + { 0, { 0, 0, 0}}, // ( 58, 56) + { 0, { 0, 0, 0}}, // ( 59, 56) + { 0, { 0, 0, 0}}, // ( 60, 56) + { 0, { 0, 0, 0}}, // ( 61, 56) + { 0, { 0, 0, 0}}, // ( 62, 56) + { 0, { 0, 0, 0}}, // ( 63, 56) + { 0, { 0, 0, 0}}, // ( 64, 56) + { 0, { 0, 0, 0}}, // ( 65, 56) + { 0, { 0, 0, 0}}, // ( 66, 56) + { 0, { 0, 0, 0}}, // ( 67, 56) + { 0, { 0, 0, 0}}, // ( 68, 56) + { 0, { 0, 0, 0}}, // ( 69, 56) + { 0, { 0, 0, 0}}, // ( 70, 56) + { 0, { 0, 0, 0}}, // ( 71, 56) + { 0, { 0, 0, 0}}, // ( 72, 56) + { 0, { 0, 0, 0}}, // ( 73, 56) + { 0, { 0, 0, 0}}, // ( 74, 56) + { 0, { 0, 0, 0}}, // ( 75, 56) + { 0, { 0, 0, 0}}, // ( 76, 56) + { 0, { 0, 0, 0}}, // ( 77, 56) + { 0, { 0, 0, 0}}, // ( 78, 56) + { 0, { 0, 0, 0}}, // ( 79, 56) + { 0, { 0, 0, 0}}, // ( 80, 56) + { 0, { 0, 0, 0}}, // ( 81, 56) + { 0, { 0, 0, 0}}, // ( 82, 56) + { 0, { 0, 0, 0}}, // ( 83, 56) + { 0, { 0, 0, 0}}, // ( 84, 56) + { 0, { 0, 0, 0}}, // ( 85, 56) + { 0, { 0, 0, 0}}, // ( 86, 56) + { 0, { 0, 0, 0}}, // ( 87, 56) + { 0, { 0, 0, 0}}, // ( 88, 56) + { 0, { 0, 0, 0}}, // ( 89, 56) + { 0, { 0, 0, 0}}, // ( 90, 56) + { 0, { 0, 0, 0}}, // ( 91, 56) + { 0, { 0, 0, 0}}, // ( 92, 56) + { 0, { 0, 0, 0}}, // ( 93, 56) + { 0, { 0, 0, 0}}, // ( 94, 56) + { 0, { 0, 0, 0}}, // ( 95, 56) + { 0, { 0, 0, 0}}, // ( 96, 56) + { 0, { 0, 0, 0}}, // ( 97, 56) + { 0, { 0, 0, 0}}, // ( 98, 56) + { 0, { 0, 0, 0}}, // ( 99, 56) + { 0, { 0, 0, 0}}, // (100, 56) + { 0, { 0, 0, 0}}, // (101, 56) + { 0, { 0, 0, 0}}, // (102, 56) + { 0, { 0, 0, 0}}, // (103, 56) + { 0, { 0, 0, 0}}, // (104, 56) + { 0, { 0, 0, 0}}, // (105, 56) + { 0, { 0, 0, 0}}, // (106, 56) + { 0, { 0, 0, 0}}, // (107, 56) + { 0, { 0, 0, 0}}, // (108, 56) + { 0, { 0, 0, 0}}, // (109, 56) + { 0, { 0, 0, 0}}, // (110, 56) + { 0, { 0, 0, 0}}, // (111, 56) + { 0, { 0, 0, 0}}, // (112, 56) + { 0, { 0, 0, 0}}, // (113, 56) + { 0, { 0, 0, 0}}, // (114, 56) + { 0, { 0, 0, 0}}, // (115, 56) + { 0, { 0, 0, 0}}, // (116, 56) + { 0, { 0, 0, 0}}, // (117, 56) + { 0, { 0, 0, 0}}, // (118, 56) + { 0, { 0, 0, 0}}, // (119, 56) + { 0, { 0, 0, 0}}, // (120, 56) + { 0, { 0, 0, 0}}, // (121, 56) + { 0, { 0, 0, 0}}, // (122, 56) + { 0, { 0, 0, 0}}, // (123, 56) + { 0, { 0, 0, 0}}, // (124, 56) + { 0, { 0, 0, 0}}, // (125, 56) + { 0, { 0, 0, 0}}, // (126, 56) + { 0, { 0, 0, 0}}, // (127, 56) + { 0, { 0, 0, 0}}, // (128, 56) + { 0, { 0, 0, 0}}, // (129, 56) + { 0, { 0, 0, 0}}, // (130, 56) + { 0, { 0, 0, 0}}, // (131, 56) + { 0, { 0, 0, 0}}, // (132, 56) + { 0, { 0, 0, 0}}, // (133, 56) + { 0, { 0, 0, 0}}, // (134, 56) + { 0, { 0, 0, 0}}, // (135, 56) + { 0, { 0, 0, 0}}, // (136, 56) + { 0, { 0, 0, 0}}, // (137, 56) + { 0, { 0, 0, 0}}, // (138, 56) + { 0, { 0, 0, 0}}, // (139, 56) + { 0, { 0, 0, 0}}, // (140, 56) + { 0, { 0, 0, 0}}, // (141, 56) + { 0, { 0, 0, 0}}, // (142, 56) + { 0, { 0, 0, 0}}, // (143, 56) + { 0, { 0, 0, 0}}, // (144, 56) + { 0, { 0, 0, 0}}, // (145, 56) + { 0, { 0, 0, 0}}, // (146, 56) + { 0, { 0, 0, 0}}, // (147, 56) + { 0, { 0, 0, 0}}, // (148, 56) + { 0, { 0, 0, 0}}, // (149, 56) + { 0, { 0, 0, 0}}, // (150, 56) + { 0, { 0, 0, 0}}, // (151, 56) + { 0, { 0, 0, 0}}, // (152, 56) + { 0, { 0, 0, 0}}, // (153, 56) + { 0, { 0, 0, 0}}, // (154, 56) + { 0, { 0, 0, 0}}, // (155, 56) + { 0, { 0, 0, 0}}, // (156, 56) + { 0, { 0, 0, 0}}, // (157, 56) + { 0, { 0, 0, 0}}, // (158, 56) + { 0, { 0, 0, 0}}, // (159, 56) + { 0, { 0, 0, 0}}, // (160, 56) + { 0, { 0, 0, 0}}, // (161, 56) + { 0, { 0, 0, 0}}, // (162, 56) + { 0, { 0, 0, 0}}, // (163, 56) + { 0, { 0, 0, 0}}, // (164, 56) + { 0, { 0, 0, 0}}, // (165, 56) + { 0, { 0, 0, 0}}, // (166, 56) + { 0, { 0, 0, 0}}, // (167, 56) + { 0, { 0, 0, 0}}, // (168, 56) + { 0, { 0, 0, 0}}, // (169, 56) + { 0, { 0, 0, 0}}, // (170, 56) + { 79, { 0, 0, 0}}, // (171, 56) + {128, { 0, 0, 0}}, // (172, 56) + {128, { 0, 0, 0}}, // (173, 56) + {128, { 0, 0, 0}}, // (174, 56) + {128, { 0, 0, 0}}, // (175, 56) + {128, { 0, 0, 0}}, // (176, 56) + {128, { 0, 0, 0}}, // (177, 56) + {128, { 0, 0, 0}}, // (178, 56) + {128, { 0, 0, 0}}, // (179, 56) + {128, { 0, 0, 0}}, // ( 0, 57) + {128, { 0, 0, 0}}, // ( 1, 57) + {128, { 0, 0, 0}}, // ( 2, 57) + {128, { 0, 0, 0}}, // ( 3, 57) + {128, { 0, 0, 0}}, // ( 4, 57) + {128, { 0, 0, 0}}, // ( 5, 57) + {128, { 0, 0, 0}}, // ( 6, 57) + {128, { 0, 0, 0}}, // ( 7, 57) + { 29, { 0, 0, 0}}, // ( 8, 57) + { 0, { 0, 0, 0}}, // ( 9, 57) + { 0, { 0, 0, 0}}, // ( 10, 57) + { 0, { 0, 0, 0}}, // ( 11, 57) + { 0, { 0, 0, 0}}, // ( 12, 57) + { 0, { 0, 0, 0}}, // ( 13, 57) + { 0, { 0, 0, 0}}, // ( 14, 57) + { 0, { 0, 0, 0}}, // ( 15, 57) + { 0, { 0, 0, 0}}, // ( 16, 57) + { 0, { 0, 0, 0}}, // ( 17, 57) + { 0, { 0, 0, 0}}, // ( 18, 57) + { 0, { 0, 0, 0}}, // ( 19, 57) + { 0, { 0, 0, 0}}, // ( 20, 57) + { 0, { 0, 0, 0}}, // ( 21, 57) + { 0, { 0, 0, 0}}, // ( 22, 57) + { 0, { 0, 0, 0}}, // ( 23, 57) + { 0, { 0, 0, 0}}, // ( 24, 57) + { 0, { 0, 0, 0}}, // ( 25, 57) + { 0, { 0, 0, 0}}, // ( 26, 57) + { 0, { 0, 0, 0}}, // ( 27, 57) + { 0, { 0, 0, 0}}, // ( 28, 57) + { 0, { 0, 0, 0}}, // ( 29, 57) + { 0, { 0, 0, 0}}, // ( 30, 57) + { 0, { 0, 0, 0}}, // ( 31, 57) + { 0, { 0, 0, 0}}, // ( 32, 57) + { 0, { 0, 0, 0}}, // ( 33, 57) + { 0, { 0, 0, 0}}, // ( 34, 57) + { 0, { 0, 0, 0}}, // ( 35, 57) + { 0, { 0, 0, 0}}, // ( 36, 57) + { 0, { 0, 0, 0}}, // ( 37, 57) + { 0, { 0, 0, 0}}, // ( 38, 57) + { 0, { 0, 0, 0}}, // ( 39, 57) + { 0, { 0, 0, 0}}, // ( 40, 57) + { 0, { 0, 0, 0}}, // ( 41, 57) + { 0, { 0, 0, 0}}, // ( 42, 57) + { 0, { 0, 0, 0}}, // ( 43, 57) + { 0, { 0, 0, 0}}, // ( 44, 57) + { 0, { 0, 0, 0}}, // ( 45, 57) + { 0, { 0, 0, 0}}, // ( 46, 57) + { 0, { 0, 0, 0}}, // ( 47, 57) + { 0, { 0, 0, 0}}, // ( 48, 57) + { 0, { 0, 0, 0}}, // ( 49, 57) + { 0, { 0, 0, 0}}, // ( 50, 57) + { 0, { 0, 0, 0}}, // ( 51, 57) + { 0, { 0, 0, 0}}, // ( 52, 57) + { 0, { 0, 0, 0}}, // ( 53, 57) + { 0, { 0, 0, 0}}, // ( 54, 57) + { 0, { 0, 0, 0}}, // ( 55, 57) + { 0, { 0, 0, 0}}, // ( 56, 57) + { 0, { 0, 0, 0}}, // ( 57, 57) + { 0, { 0, 0, 0}}, // ( 58, 57) + { 0, { 0, 0, 0}}, // ( 59, 57) + { 0, { 0, 0, 0}}, // ( 60, 57) + { 0, { 0, 0, 0}}, // ( 61, 57) + { 0, { 0, 0, 0}}, // ( 62, 57) + { 0, { 0, 0, 0}}, // ( 63, 57) + { 0, { 0, 0, 0}}, // ( 64, 57) + { 0, { 0, 0, 0}}, // ( 65, 57) + { 0, { 0, 0, 0}}, // ( 66, 57) + { 0, { 0, 0, 0}}, // ( 67, 57) + { 0, { 0, 0, 0}}, // ( 68, 57) + { 0, { 0, 0, 0}}, // ( 69, 57) + { 0, { 0, 0, 0}}, // ( 70, 57) + { 0, { 0, 0, 0}}, // ( 71, 57) + { 0, { 0, 0, 0}}, // ( 72, 57) + { 0, { 0, 0, 0}}, // ( 73, 57) + { 0, { 0, 0, 0}}, // ( 74, 57) + { 0, { 0, 0, 0}}, // ( 75, 57) + { 0, { 0, 0, 0}}, // ( 76, 57) + { 0, { 0, 0, 0}}, // ( 77, 57) + { 0, { 0, 0, 0}}, // ( 78, 57) + { 0, { 0, 0, 0}}, // ( 79, 57) + { 0, { 0, 0, 0}}, // ( 80, 57) + { 0, { 0, 0, 0}}, // ( 81, 57) + { 0, { 0, 0, 0}}, // ( 82, 57) + { 0, { 0, 0, 0}}, // ( 83, 57) + { 0, { 0, 0, 0}}, // ( 84, 57) + { 0, { 0, 0, 0}}, // ( 85, 57) + { 0, { 0, 0, 0}}, // ( 86, 57) + { 0, { 0, 0, 0}}, // ( 87, 57) + { 0, { 0, 0, 0}}, // ( 88, 57) + { 0, { 0, 0, 0}}, // ( 89, 57) + { 0, { 0, 0, 0}}, // ( 90, 57) + { 0, { 0, 0, 0}}, // ( 91, 57) + { 0, { 0, 0, 0}}, // ( 92, 57) + { 0, { 0, 0, 0}}, // ( 93, 57) + { 0, { 0, 0, 0}}, // ( 94, 57) + { 0, { 0, 0, 0}}, // ( 95, 57) + { 0, { 0, 0, 0}}, // ( 96, 57) + { 0, { 0, 0, 0}}, // ( 97, 57) + { 0, { 0, 0, 0}}, // ( 98, 57) + { 0, { 0, 0, 0}}, // ( 99, 57) + { 0, { 0, 0, 0}}, // (100, 57) + { 0, { 0, 0, 0}}, // (101, 57) + { 0, { 0, 0, 0}}, // (102, 57) + { 0, { 0, 0, 0}}, // (103, 57) + { 0, { 0, 0, 0}}, // (104, 57) + { 0, { 0, 0, 0}}, // (105, 57) + { 0, { 0, 0, 0}}, // (106, 57) + { 0, { 0, 0, 0}}, // (107, 57) + { 0, { 0, 0, 0}}, // (108, 57) + { 0, { 0, 0, 0}}, // (109, 57) + { 0, { 0, 0, 0}}, // (110, 57) + { 0, { 0, 0, 0}}, // (111, 57) + { 0, { 0, 0, 0}}, // (112, 57) + { 0, { 0, 0, 0}}, // (113, 57) + { 0, { 0, 0, 0}}, // (114, 57) + { 0, { 0, 0, 0}}, // (115, 57) + { 0, { 0, 0, 0}}, // (116, 57) + { 0, { 0, 0, 0}}, // (117, 57) + { 0, { 0, 0, 0}}, // (118, 57) + { 0, { 0, 0, 0}}, // (119, 57) + { 0, { 0, 0, 0}}, // (120, 57) + { 0, { 0, 0, 0}}, // (121, 57) + { 0, { 0, 0, 0}}, // (122, 57) + { 0, { 0, 0, 0}}, // (123, 57) + { 0, { 0, 0, 0}}, // (124, 57) + { 0, { 0, 0, 0}}, // (125, 57) + { 0, { 0, 0, 0}}, // (126, 57) + { 0, { 0, 0, 0}}, // (127, 57) + { 0, { 0, 0, 0}}, // (128, 57) + { 0, { 0, 0, 0}}, // (129, 57) + { 0, { 0, 0, 0}}, // (130, 57) + { 0, { 0, 0, 0}}, // (131, 57) + { 0, { 0, 0, 0}}, // (132, 57) + { 0, { 0, 0, 0}}, // (133, 57) + { 0, { 0, 0, 0}}, // (134, 57) + { 0, { 0, 0, 0}}, // (135, 57) + { 0, { 0, 0, 0}}, // (136, 57) + { 0, { 0, 0, 0}}, // (137, 57) + { 0, { 0, 0, 0}}, // (138, 57) + { 0, { 0, 0, 0}}, // (139, 57) + { 0, { 0, 0, 0}}, // (140, 57) + { 0, { 0, 0, 0}}, // (141, 57) + { 0, { 0, 0, 0}}, // (142, 57) + { 0, { 0, 0, 0}}, // (143, 57) + { 0, { 0, 0, 0}}, // (144, 57) + { 0, { 0, 0, 0}}, // (145, 57) + { 0, { 0, 0, 0}}, // (146, 57) + { 0, { 0, 0, 0}}, // (147, 57) + { 0, { 0, 0, 0}}, // (148, 57) + { 0, { 0, 0, 0}}, // (149, 57) + { 0, { 0, 0, 0}}, // (150, 57) + { 0, { 0, 0, 0}}, // (151, 57) + { 0, { 0, 0, 0}}, // (152, 57) + { 0, { 0, 0, 0}}, // (153, 57) + { 0, { 0, 0, 0}}, // (154, 57) + { 0, { 0, 0, 0}}, // (155, 57) + { 0, { 0, 0, 0}}, // (156, 57) + { 0, { 0, 0, 0}}, // (157, 57) + { 0, { 0, 0, 0}}, // (158, 57) + { 0, { 0, 0, 0}}, // (159, 57) + { 0, { 0, 0, 0}}, // (160, 57) + { 0, { 0, 0, 0}}, // (161, 57) + { 0, { 0, 0, 0}}, // (162, 57) + { 0, { 0, 0, 0}}, // (163, 57) + { 0, { 0, 0, 0}}, // (164, 57) + { 0, { 0, 0, 0}}, // (165, 57) + { 0, { 0, 0, 0}}, // (166, 57) + { 0, { 0, 0, 0}}, // (167, 57) + { 0, { 0, 0, 0}}, // (168, 57) + { 0, { 0, 0, 0}}, // (169, 57) + { 0, { 0, 0, 0}}, // (170, 57) + { 29, { 0, 0, 0}}, // (171, 57) + {128, { 0, 0, 0}}, // (172, 57) + {128, { 0, 0, 0}}, // (173, 57) + {128, { 0, 0, 0}}, // (174, 57) + {128, { 0, 0, 0}}, // (175, 57) + {128, { 0, 0, 0}}, // (176, 57) + {128, { 0, 0, 0}}, // (177, 57) + {128, { 0, 0, 0}}, // (178, 57) + {128, { 0, 0, 0}}, // (179, 57) + {128, { 0, 0, 0}}, // ( 0, 58) + {128, { 0, 0, 0}}, // ( 1, 58) + {128, { 0, 0, 0}}, // ( 2, 58) + {128, { 0, 0, 0}}, // ( 3, 58) + {128, { 0, 0, 0}}, // ( 4, 58) + {128, { 0, 0, 0}}, // ( 5, 58) + {128, { 0, 0, 0}}, // ( 6, 58) + {106, { 0, 0, 0}}, // ( 7, 58) + { 0, { 0, 0, 0}}, // ( 8, 58) + { 0, { 0, 0, 0}}, // ( 9, 58) + { 0, { 0, 0, 0}}, // ( 10, 58) + { 0, { 0, 0, 0}}, // ( 11, 58) + { 0, { 0, 0, 0}}, // ( 12, 58) + { 0, { 0, 0, 0}}, // ( 13, 58) + { 0, { 0, 0, 0}}, // ( 14, 58) + { 0, { 0, 0, 0}}, // ( 15, 58) + { 0, { 0, 0, 0}}, // ( 16, 58) + { 0, { 0, 0, 0}}, // ( 17, 58) + { 0, { 0, 0, 0}}, // ( 18, 58) + { 0, { 0, 0, 0}}, // ( 19, 58) + { 0, { 0, 0, 0}}, // ( 20, 58) + { 0, { 0, 0, 0}}, // ( 21, 58) + { 0, { 0, 0, 0}}, // ( 22, 58) + { 0, { 0, 0, 0}}, // ( 23, 58) + { 0, { 0, 0, 0}}, // ( 24, 58) + { 0, { 0, 0, 0}}, // ( 25, 58) + { 0, { 0, 0, 0}}, // ( 26, 58) + { 0, { 0, 0, 0}}, // ( 27, 58) + { 0, { 0, 0, 0}}, // ( 28, 58) + { 0, { 0, 0, 0}}, // ( 29, 58) + { 0, { 0, 0, 0}}, // ( 30, 58) + { 0, { 0, 0, 0}}, // ( 31, 58) + { 0, { 0, 0, 0}}, // ( 32, 58) + { 0, { 0, 0, 0}}, // ( 33, 58) + { 0, { 0, 0, 0}}, // ( 34, 58) + { 0, { 0, 0, 0}}, // ( 35, 58) + { 0, { 0, 0, 0}}, // ( 36, 58) + { 0, { 0, 0, 0}}, // ( 37, 58) + { 0, { 0, 0, 0}}, // ( 38, 58) + { 0, { 0, 0, 0}}, // ( 39, 58) + { 0, { 0, 0, 0}}, // ( 40, 58) + { 0, { 0, 0, 0}}, // ( 41, 58) + { 0, { 0, 0, 0}}, // ( 42, 58) + { 0, { 0, 0, 0}}, // ( 43, 58) + { 0, { 0, 0, 0}}, // ( 44, 58) + { 0, { 0, 0, 0}}, // ( 45, 58) + { 0, { 0, 0, 0}}, // ( 46, 58) + { 0, { 0, 0, 0}}, // ( 47, 58) + { 0, { 0, 0, 0}}, // ( 48, 58) + { 0, { 0, 0, 0}}, // ( 49, 58) + { 0, { 0, 0, 0}}, // ( 50, 58) + { 0, { 0, 0, 0}}, // ( 51, 58) + { 0, { 0, 0, 0}}, // ( 52, 58) + { 0, { 0, 0, 0}}, // ( 53, 58) + { 0, { 0, 0, 0}}, // ( 54, 58) + { 0, { 0, 0, 0}}, // ( 55, 58) + { 0, { 0, 0, 0}}, // ( 56, 58) + { 0, { 0, 0, 0}}, // ( 57, 58) + { 0, { 0, 0, 0}}, // ( 58, 58) + { 0, { 0, 0, 0}}, // ( 59, 58) + { 0, { 0, 0, 0}}, // ( 60, 58) + { 0, { 0, 0, 0}}, // ( 61, 58) + { 0, { 0, 0, 0}}, // ( 62, 58) + { 0, { 0, 0, 0}}, // ( 63, 58) + { 0, { 0, 0, 0}}, // ( 64, 58) + { 0, { 0, 0, 0}}, // ( 65, 58) + { 0, { 0, 0, 0}}, // ( 66, 58) + { 0, { 0, 0, 0}}, // ( 67, 58) + { 0, { 0, 0, 0}}, // ( 68, 58) + { 0, { 0, 0, 0}}, // ( 69, 58) + { 0, { 0, 0, 0}}, // ( 70, 58) + { 0, { 0, 0, 0}}, // ( 71, 58) + { 0, { 0, 0, 0}}, // ( 72, 58) + { 0, { 0, 0, 0}}, // ( 73, 58) + { 0, { 0, 0, 0}}, // ( 74, 58) + { 0, { 0, 0, 0}}, // ( 75, 58) + { 0, { 0, 0, 0}}, // ( 76, 58) + { 0, { 0, 0, 0}}, // ( 77, 58) + { 0, { 0, 0, 0}}, // ( 78, 58) + { 0, { 0, 0, 0}}, // ( 79, 58) + { 0, { 0, 0, 0}}, // ( 80, 58) + { 0, { 0, 0, 0}}, // ( 81, 58) + { 0, { 0, 0, 0}}, // ( 82, 58) + { 0, { 0, 0, 0}}, // ( 83, 58) + { 0, { 0, 0, 0}}, // ( 84, 58) + { 0, { 0, 0, 0}}, // ( 85, 58) + { 0, { 0, 0, 0}}, // ( 86, 58) + { 0, { 0, 0, 0}}, // ( 87, 58) + { 0, { 0, 0, 0}}, // ( 88, 58) + { 0, { 0, 0, 0}}, // ( 89, 58) + { 0, { 0, 0, 0}}, // ( 90, 58) + { 0, { 0, 0, 0}}, // ( 91, 58) + { 0, { 0, 0, 0}}, // ( 92, 58) + { 0, { 0, 0, 0}}, // ( 93, 58) + { 0, { 0, 0, 0}}, // ( 94, 58) + { 0, { 0, 0, 0}}, // ( 95, 58) + { 0, { 0, 0, 0}}, // ( 96, 58) + { 0, { 0, 0, 0}}, // ( 97, 58) + { 0, { 0, 0, 0}}, // ( 98, 58) + { 0, { 0, 0, 0}}, // ( 99, 58) + { 0, { 0, 0, 0}}, // (100, 58) + { 0, { 0, 0, 0}}, // (101, 58) + { 0, { 0, 0, 0}}, // (102, 58) + { 0, { 0, 0, 0}}, // (103, 58) + { 0, { 0, 0, 0}}, // (104, 58) + { 0, { 0, 0, 0}}, // (105, 58) + { 0, { 0, 0, 0}}, // (106, 58) + { 0, { 0, 0, 0}}, // (107, 58) + { 0, { 0, 0, 0}}, // (108, 58) + { 0, { 0, 0, 0}}, // (109, 58) + { 0, { 0, 0, 0}}, // (110, 58) + { 0, { 0, 0, 0}}, // (111, 58) + { 0, { 0, 0, 0}}, // (112, 58) + { 0, { 0, 0, 0}}, // (113, 58) + { 0, { 0, 0, 0}}, // (114, 58) + { 0, { 0, 0, 0}}, // (115, 58) + { 0, { 0, 0, 0}}, // (116, 58) + { 0, { 0, 0, 0}}, // (117, 58) + { 0, { 0, 0, 0}}, // (118, 58) + { 0, { 0, 0, 0}}, // (119, 58) + { 0, { 0, 0, 0}}, // (120, 58) + { 0, { 0, 0, 0}}, // (121, 58) + { 0, { 0, 0, 0}}, // (122, 58) + { 0, { 0, 0, 0}}, // (123, 58) + { 0, { 0, 0, 0}}, // (124, 58) + { 0, { 0, 0, 0}}, // (125, 58) + { 0, { 0, 0, 0}}, // (126, 58) + { 0, { 0, 0, 0}}, // (127, 58) + { 0, { 0, 0, 0}}, // (128, 58) + { 0, { 0, 0, 0}}, // (129, 58) + { 0, { 0, 0, 0}}, // (130, 58) + { 0, { 0, 0, 0}}, // (131, 58) + { 0, { 0, 0, 0}}, // (132, 58) + { 0, { 0, 0, 0}}, // (133, 58) + { 0, { 0, 0, 0}}, // (134, 58) + { 0, { 0, 0, 0}}, // (135, 58) + { 0, { 0, 0, 0}}, // (136, 58) + { 0, { 0, 0, 0}}, // (137, 58) + { 0, { 0, 0, 0}}, // (138, 58) + { 0, { 0, 0, 0}}, // (139, 58) + { 0, { 0, 0, 0}}, // (140, 58) + { 0, { 0, 0, 0}}, // (141, 58) + { 0, { 0, 0, 0}}, // (142, 58) + { 0, { 0, 0, 0}}, // (143, 58) + { 0, { 0, 0, 0}}, // (144, 58) + { 0, { 0, 0, 0}}, // (145, 58) + { 0, { 0, 0, 0}}, // (146, 58) + { 0, { 0, 0, 0}}, // (147, 58) + { 0, { 0, 0, 0}}, // (148, 58) + { 0, { 0, 0, 0}}, // (149, 58) + { 0, { 0, 0, 0}}, // (150, 58) + { 0, { 0, 0, 0}}, // (151, 58) + { 0, { 0, 0, 0}}, // (152, 58) + { 0, { 0, 0, 0}}, // (153, 58) + { 0, { 0, 0, 0}}, // (154, 58) + { 0, { 0, 0, 0}}, // (155, 58) + { 0, { 0, 0, 0}}, // (156, 58) + { 0, { 0, 0, 0}}, // (157, 58) + { 0, { 0, 0, 0}}, // (158, 58) + { 0, { 0, 0, 0}}, // (159, 58) + { 0, { 0, 0, 0}}, // (160, 58) + { 0, { 0, 0, 0}}, // (161, 58) + { 0, { 0, 0, 0}}, // (162, 58) + { 0, { 0, 0, 0}}, // (163, 58) + { 0, { 0, 0, 0}}, // (164, 58) + { 0, { 0, 0, 0}}, // (165, 58) + { 0, { 0, 0, 0}}, // (166, 58) + { 0, { 0, 0, 0}}, // (167, 58) + { 0, { 0, 0, 0}}, // (168, 58) + { 0, { 0, 0, 0}}, // (169, 58) + { 0, { 0, 0, 0}}, // (170, 58) + { 0, { 0, 0, 0}}, // (171, 58) + {106, { 0, 0, 0}}, // (172, 58) + {128, { 0, 0, 0}}, // (173, 58) + {128, { 0, 0, 0}}, // (174, 58) + {128, { 0, 0, 0}}, // (175, 58) + {128, { 0, 0, 0}}, // (176, 58) + {128, { 0, 0, 0}}, // (177, 58) + {128, { 0, 0, 0}}, // (178, 58) + {128, { 0, 0, 0}}, // (179, 58) + {128, { 0, 0, 0}}, // ( 0, 59) + {128, { 0, 0, 0}}, // ( 1, 59) + {128, { 0, 0, 0}}, // ( 2, 59) + {128, { 0, 0, 0}}, // ( 3, 59) + {128, { 0, 0, 0}}, // ( 4, 59) + {128, { 0, 0, 0}}, // ( 5, 59) + {128, { 0, 0, 0}}, // ( 6, 59) + { 56, { 0, 0, 0}}, // ( 7, 59) + { 0, { 0, 0, 0}}, // ( 8, 59) + { 0, { 0, 0, 0}}, // ( 9, 59) + { 0, { 0, 0, 0}}, // ( 10, 59) + { 0, { 0, 0, 0}}, // ( 11, 59) + { 0, { 0, 0, 0}}, // ( 12, 59) + { 0, { 0, 0, 0}}, // ( 13, 59) + { 0, { 0, 0, 0}}, // ( 14, 59) + { 0, { 0, 0, 0}}, // ( 15, 59) + { 0, { 0, 0, 0}}, // ( 16, 59) + { 0, { 0, 0, 0}}, // ( 17, 59) + { 0, { 0, 0, 0}}, // ( 18, 59) + { 0, { 0, 0, 0}}, // ( 19, 59) + { 0, { 0, 0, 0}}, // ( 20, 59) + { 0, { 0, 0, 0}}, // ( 21, 59) + { 0, { 0, 0, 0}}, // ( 22, 59) + { 0, { 0, 0, 0}}, // ( 23, 59) + { 0, { 0, 0, 0}}, // ( 24, 59) + { 0, { 0, 0, 0}}, // ( 25, 59) + { 0, { 0, 0, 0}}, // ( 26, 59) + { 0, { 0, 0, 0}}, // ( 27, 59) + { 0, { 0, 0, 0}}, // ( 28, 59) + { 0, { 0, 0, 0}}, // ( 29, 59) + { 0, { 0, 0, 0}}, // ( 30, 59) + { 0, { 0, 0, 0}}, // ( 31, 59) + { 0, { 0, 0, 0}}, // ( 32, 59) + { 0, { 0, 0, 0}}, // ( 33, 59) + { 0, { 0, 0, 0}}, // ( 34, 59) + { 0, { 0, 0, 0}}, // ( 35, 59) + { 0, { 0, 0, 0}}, // ( 36, 59) + { 0, { 0, 0, 0}}, // ( 37, 59) + { 0, { 0, 0, 0}}, // ( 38, 59) + { 0, { 0, 0, 0}}, // ( 39, 59) + { 0, { 0, 0, 0}}, // ( 40, 59) + { 0, { 0, 0, 0}}, // ( 41, 59) + { 0, { 0, 0, 0}}, // ( 42, 59) + { 0, { 0, 0, 0}}, // ( 43, 59) + { 0, { 0, 0, 0}}, // ( 44, 59) + { 0, { 0, 0, 0}}, // ( 45, 59) + { 0, { 0, 0, 0}}, // ( 46, 59) + { 0, { 0, 0, 0}}, // ( 47, 59) + { 0, { 0, 0, 0}}, // ( 48, 59) + { 0, { 0, 0, 0}}, // ( 49, 59) + { 0, { 0, 0, 0}}, // ( 50, 59) + { 0, { 0, 0, 0}}, // ( 51, 59) + { 0, { 0, 0, 0}}, // ( 52, 59) + { 0, { 0, 0, 0}}, // ( 53, 59) + { 0, { 0, 0, 0}}, // ( 54, 59) + { 0, { 0, 0, 0}}, // ( 55, 59) + { 0, { 0, 0, 0}}, // ( 56, 59) + { 0, { 0, 0, 0}}, // ( 57, 59) + { 0, { 0, 0, 0}}, // ( 58, 59) + { 0, { 0, 0, 0}}, // ( 59, 59) + { 0, { 0, 0, 0}}, // ( 60, 59) + { 0, { 0, 0, 0}}, // ( 61, 59) + { 0, { 0, 0, 0}}, // ( 62, 59) + { 0, { 0, 0, 0}}, // ( 63, 59) + { 0, { 0, 0, 0}}, // ( 64, 59) + { 0, { 0, 0, 0}}, // ( 65, 59) + { 0, { 0, 0, 0}}, // ( 66, 59) + { 0, { 0, 0, 0}}, // ( 67, 59) + { 0, { 0, 0, 0}}, // ( 68, 59) + { 0, { 0, 0, 0}}, // ( 69, 59) + { 0, { 0, 0, 0}}, // ( 70, 59) + { 0, { 0, 0, 0}}, // ( 71, 59) + { 0, { 0, 0, 0}}, // ( 72, 59) + { 0, { 0, 0, 0}}, // ( 73, 59) + { 0, { 0, 0, 0}}, // ( 74, 59) + { 0, { 0, 0, 0}}, // ( 75, 59) + { 0, { 0, 0, 0}}, // ( 76, 59) + { 0, { 0, 0, 0}}, // ( 77, 59) + { 0, { 0, 0, 0}}, // ( 78, 59) + { 0, { 0, 0, 0}}, // ( 79, 59) + { 0, { 0, 0, 0}}, // ( 80, 59) + { 0, { 0, 0, 0}}, // ( 81, 59) + { 0, { 0, 0, 0}}, // ( 82, 59) + { 0, { 0, 0, 0}}, // ( 83, 59) + { 0, { 0, 0, 0}}, // ( 84, 59) + { 0, { 0, 0, 0}}, // ( 85, 59) + { 0, { 0, 0, 0}}, // ( 86, 59) + { 0, { 0, 0, 0}}, // ( 87, 59) + { 0, { 0, 0, 0}}, // ( 88, 59) + { 0, { 0, 0, 0}}, // ( 89, 59) + { 0, { 0, 0, 0}}, // ( 90, 59) + { 0, { 0, 0, 0}}, // ( 91, 59) + { 0, { 0, 0, 0}}, // ( 92, 59) + { 0, { 0, 0, 0}}, // ( 93, 59) + { 0, { 0, 0, 0}}, // ( 94, 59) + { 0, { 0, 0, 0}}, // ( 95, 59) + { 0, { 0, 0, 0}}, // ( 96, 59) + { 0, { 0, 0, 0}}, // ( 97, 59) + { 0, { 0, 0, 0}}, // ( 98, 59) + { 0, { 0, 0, 0}}, // ( 99, 59) + { 0, { 0, 0, 0}}, // (100, 59) + { 0, { 0, 0, 0}}, // (101, 59) + { 0, { 0, 0, 0}}, // (102, 59) + { 0, { 0, 0, 0}}, // (103, 59) + { 0, { 0, 0, 0}}, // (104, 59) + { 0, { 0, 0, 0}}, // (105, 59) + { 0, { 0, 0, 0}}, // (106, 59) + { 0, { 0, 0, 0}}, // (107, 59) + { 0, { 0, 0, 0}}, // (108, 59) + { 0, { 0, 0, 0}}, // (109, 59) + { 0, { 0, 0, 0}}, // (110, 59) + { 0, { 0, 0, 0}}, // (111, 59) + { 0, { 0, 0, 0}}, // (112, 59) + { 0, { 0, 0, 0}}, // (113, 59) + { 0, { 0, 0, 0}}, // (114, 59) + { 0, { 0, 0, 0}}, // (115, 59) + { 0, { 0, 0, 0}}, // (116, 59) + { 0, { 0, 0, 0}}, // (117, 59) + { 0, { 0, 0, 0}}, // (118, 59) + { 0, { 0, 0, 0}}, // (119, 59) + { 0, { 0, 0, 0}}, // (120, 59) + { 0, { 0, 0, 0}}, // (121, 59) + { 0, { 0, 0, 0}}, // (122, 59) + { 0, { 0, 0, 0}}, // (123, 59) + { 0, { 0, 0, 0}}, // (124, 59) + { 0, { 0, 0, 0}}, // (125, 59) + { 0, { 0, 0, 0}}, // (126, 59) + { 0, { 0, 0, 0}}, // (127, 59) + { 0, { 0, 0, 0}}, // (128, 59) + { 0, { 0, 0, 0}}, // (129, 59) + { 0, { 0, 0, 0}}, // (130, 59) + { 0, { 0, 0, 0}}, // (131, 59) + { 0, { 0, 0, 0}}, // (132, 59) + { 0, { 0, 0, 0}}, // (133, 59) + { 0, { 0, 0, 0}}, // (134, 59) + { 0, { 0, 0, 0}}, // (135, 59) + { 0, { 0, 0, 0}}, // (136, 59) + { 0, { 0, 0, 0}}, // (137, 59) + { 0, { 0, 0, 0}}, // (138, 59) + { 0, { 0, 0, 0}}, // (139, 59) + { 0, { 0, 0, 0}}, // (140, 59) + { 0, { 0, 0, 0}}, // (141, 59) + { 0, { 0, 0, 0}}, // (142, 59) + { 0, { 0, 0, 0}}, // (143, 59) + { 0, { 0, 0, 0}}, // (144, 59) + { 0, { 0, 0, 0}}, // (145, 59) + { 0, { 0, 0, 0}}, // (146, 59) + { 0, { 0, 0, 0}}, // (147, 59) + { 0, { 0, 0, 0}}, // (148, 59) + { 0, { 0, 0, 0}}, // (149, 59) + { 0, { 0, 0, 0}}, // (150, 59) + { 0, { 0, 0, 0}}, // (151, 59) + { 0, { 0, 0, 0}}, // (152, 59) + { 0, { 0, 0, 0}}, // (153, 59) + { 0, { 0, 0, 0}}, // (154, 59) + { 0, { 0, 0, 0}}, // (155, 59) + { 0, { 0, 0, 0}}, // (156, 59) + { 0, { 0, 0, 0}}, // (157, 59) + { 0, { 0, 0, 0}}, // (158, 59) + { 0, { 0, 0, 0}}, // (159, 59) + { 0, { 0, 0, 0}}, // (160, 59) + { 0, { 0, 0, 0}}, // (161, 59) + { 0, { 0, 0, 0}}, // (162, 59) + { 0, { 0, 0, 0}}, // (163, 59) + { 0, { 0, 0, 0}}, // (164, 59) + { 0, { 0, 0, 0}}, // (165, 59) + { 0, { 0, 0, 0}}, // (166, 59) + { 0, { 0, 0, 0}}, // (167, 59) + { 0, { 0, 0, 0}}, // (168, 59) + { 0, { 0, 0, 0}}, // (169, 59) + { 0, { 0, 0, 0}}, // (170, 59) + { 0, { 0, 0, 0}}, // (171, 59) + { 55, { 0, 0, 0}}, // (172, 59) + {128, { 0, 0, 0}}, // (173, 59) + {128, { 0, 0, 0}}, // (174, 59) + {128, { 0, 0, 0}}, // (175, 59) + {128, { 0, 0, 0}}, // (176, 59) + {128, { 0, 0, 0}}, // (177, 59) + {128, { 0, 0, 0}}, // (178, 59) + {128, { 0, 0, 0}}, // (179, 59) + {128, { 0, 0, 0}}, // ( 0, 60) + {128, { 0, 0, 0}}, // ( 1, 60) + {128, { 0, 0, 0}}, // ( 2, 60) + {128, { 0, 0, 0}}, // ( 3, 60) + {128, { 0, 0, 0}}, // ( 4, 60) + {128, { 0, 0, 0}}, // ( 5, 60) + {127, { 0, 0, 0}}, // ( 6, 60) + { 12, { 0, 0, 0}}, // ( 7, 60) + { 0, { 0, 0, 0}}, // ( 8, 60) + { 0, { 0, 0, 0}}, // ( 9, 60) + { 0, { 0, 0, 0}}, // ( 10, 60) + { 0, { 0, 0, 0}}, // ( 11, 60) + { 0, { 0, 0, 0}}, // ( 12, 60) + { 0, { 0, 0, 0}}, // ( 13, 60) + { 0, { 0, 0, 0}}, // ( 14, 60) + { 0, { 0, 0, 0}}, // ( 15, 60) + { 0, { 0, 0, 0}}, // ( 16, 60) + { 0, { 0, 0, 0}}, // ( 17, 60) + { 0, { 0, 0, 0}}, // ( 18, 60) + { 0, { 0, 0, 0}}, // ( 19, 60) + { 0, { 0, 0, 0}}, // ( 20, 60) + { 0, { 0, 0, 0}}, // ( 21, 60) + { 0, { 0, 0, 0}}, // ( 22, 60) + { 0, { 0, 0, 0}}, // ( 23, 60) + { 0, { 0, 0, 0}}, // ( 24, 60) + { 0, { 0, 0, 0}}, // ( 25, 60) + { 0, { 0, 0, 0}}, // ( 26, 60) + { 0, { 0, 0, 0}}, // ( 27, 60) + { 0, { 0, 0, 0}}, // ( 28, 60) + { 0, { 0, 0, 0}}, // ( 29, 60) + { 0, { 0, 0, 0}}, // ( 30, 60) + { 0, { 0, 0, 0}}, // ( 31, 60) + { 0, { 0, 0, 0}}, // ( 32, 60) + { 0, { 0, 0, 0}}, // ( 33, 60) + { 0, { 0, 0, 0}}, // ( 34, 60) + { 0, { 0, 0, 0}}, // ( 35, 60) + { 0, { 0, 0, 0}}, // ( 36, 60) + { 0, { 0, 0, 0}}, // ( 37, 60) + { 0, { 0, 0, 0}}, // ( 38, 60) + { 0, { 0, 0, 0}}, // ( 39, 60) + { 0, { 0, 0, 0}}, // ( 40, 60) + { 0, { 0, 0, 0}}, // ( 41, 60) + { 0, { 0, 0, 0}}, // ( 42, 60) + { 0, { 0, 0, 0}}, // ( 43, 60) + { 0, { 0, 0, 0}}, // ( 44, 60) + { 0, { 0, 0, 0}}, // ( 45, 60) + { 0, { 0, 0, 0}}, // ( 46, 60) + { 0, { 0, 0, 0}}, // ( 47, 60) + { 0, { 0, 0, 0}}, // ( 48, 60) + { 0, { 0, 0, 0}}, // ( 49, 60) + { 0, { 0, 0, 0}}, // ( 50, 60) + { 0, { 0, 0, 0}}, // ( 51, 60) + { 0, { 0, 0, 0}}, // ( 52, 60) + { 0, { 0, 0, 0}}, // ( 53, 60) + { 0, { 0, 0, 0}}, // ( 54, 60) + { 0, { 0, 0, 0}}, // ( 55, 60) + { 0, { 0, 0, 0}}, // ( 56, 60) + { 0, { 0, 0, 0}}, // ( 57, 60) + { 0, { 0, 0, 0}}, // ( 58, 60) + { 0, { 0, 0, 0}}, // ( 59, 60) + { 0, { 0, 0, 0}}, // ( 60, 60) + { 0, { 0, 0, 0}}, // ( 61, 60) + { 0, { 0, 0, 0}}, // ( 62, 60) + { 0, { 0, 0, 0}}, // ( 63, 60) + { 0, { 0, 0, 0}}, // ( 64, 60) + { 0, { 0, 0, 0}}, // ( 65, 60) + { 0, { 0, 0, 0}}, // ( 66, 60) + { 0, { 0, 0, 0}}, // ( 67, 60) + { 0, { 0, 0, 0}}, // ( 68, 60) + { 0, { 0, 0, 0}}, // ( 69, 60) + { 0, { 0, 0, 0}}, // ( 70, 60) + { 0, { 0, 0, 0}}, // ( 71, 60) + { 0, { 0, 0, 0}}, // ( 72, 60) + { 0, { 0, 0, 0}}, // ( 73, 60) + { 0, { 0, 0, 0}}, // ( 74, 60) + { 0, { 0, 0, 0}}, // ( 75, 60) + { 0, { 0, 0, 0}}, // ( 76, 60) + { 0, { 0, 0, 0}}, // ( 77, 60) + { 0, { 0, 0, 0}}, // ( 78, 60) + { 0, { 0, 0, 0}}, // ( 79, 60) + { 0, { 0, 0, 0}}, // ( 80, 60) + { 0, { 0, 0, 0}}, // ( 81, 60) + { 0, { 0, 0, 0}}, // ( 82, 60) + { 0, { 0, 0, 0}}, // ( 83, 60) + { 0, { 0, 0, 0}}, // ( 84, 60) + { 0, { 0, 0, 0}}, // ( 85, 60) + { 0, { 0, 0, 0}}, // ( 86, 60) + { 0, { 0, 0, 0}}, // ( 87, 60) + { 0, { 0, 0, 0}}, // ( 88, 60) + { 0, { 0, 0, 0}}, // ( 89, 60) + { 0, { 0, 0, 0}}, // ( 90, 60) + { 0, { 0, 0, 0}}, // ( 91, 60) + { 0, { 0, 0, 0}}, // ( 92, 60) + { 0, { 0, 0, 0}}, // ( 93, 60) + { 0, { 0, 0, 0}}, // ( 94, 60) + { 0, { 0, 0, 0}}, // ( 95, 60) + { 0, { 0, 0, 0}}, // ( 96, 60) + { 0, { 0, 0, 0}}, // ( 97, 60) + { 0, { 0, 0, 0}}, // ( 98, 60) + { 0, { 0, 0, 0}}, // ( 99, 60) + { 0, { 0, 0, 0}}, // (100, 60) + { 0, { 0, 0, 0}}, // (101, 60) + { 0, { 0, 0, 0}}, // (102, 60) + { 0, { 0, 0, 0}}, // (103, 60) + { 0, { 0, 0, 0}}, // (104, 60) + { 0, { 0, 0, 0}}, // (105, 60) + { 0, { 0, 0, 0}}, // (106, 60) + { 0, { 0, 0, 0}}, // (107, 60) + { 0, { 0, 0, 0}}, // (108, 60) + { 0, { 0, 0, 0}}, // (109, 60) + { 0, { 0, 0, 0}}, // (110, 60) + { 0, { 0, 0, 0}}, // (111, 60) + { 0, { 0, 0, 0}}, // (112, 60) + { 0, { 0, 0, 0}}, // (113, 60) + { 0, { 0, 0, 0}}, // (114, 60) + { 0, { 0, 0, 0}}, // (115, 60) + { 0, { 0, 0, 0}}, // (116, 60) + { 0, { 0, 0, 0}}, // (117, 60) + { 0, { 0, 0, 0}}, // (118, 60) + { 0, { 0, 0, 0}}, // (119, 60) + { 0, { 0, 0, 0}}, // (120, 60) + { 0, { 0, 0, 0}}, // (121, 60) + { 0, { 0, 0, 0}}, // (122, 60) + { 0, { 0, 0, 0}}, // (123, 60) + { 0, { 0, 0, 0}}, // (124, 60) + { 0, { 0, 0, 0}}, // (125, 60) + { 0, { 0, 0, 0}}, // (126, 60) + { 0, { 0, 0, 0}}, // (127, 60) + { 0, { 0, 0, 0}}, // (128, 60) + { 0, { 0, 0, 0}}, // (129, 60) + { 0, { 0, 0, 0}}, // (130, 60) + { 0, { 0, 0, 0}}, // (131, 60) + { 0, { 0, 0, 0}}, // (132, 60) + { 0, { 0, 0, 0}}, // (133, 60) + { 0, { 0, 0, 0}}, // (134, 60) + { 0, { 0, 0, 0}}, // (135, 60) + { 0, { 0, 0, 0}}, // (136, 60) + { 0, { 0, 0, 0}}, // (137, 60) + { 0, { 0, 0, 0}}, // (138, 60) + { 0, { 0, 0, 0}}, // (139, 60) + { 0, { 0, 0, 0}}, // (140, 60) + { 0, { 0, 0, 0}}, // (141, 60) + { 0, { 0, 0, 0}}, // (142, 60) + { 0, { 0, 0, 0}}, // (143, 60) + { 0, { 0, 0, 0}}, // (144, 60) + { 0, { 0, 0, 0}}, // (145, 60) + { 0, { 0, 0, 0}}, // (146, 60) + { 0, { 0, 0, 0}}, // (147, 60) + { 0, { 0, 0, 0}}, // (148, 60) + { 0, { 0, 0, 0}}, // (149, 60) + { 0, { 0, 0, 0}}, // (150, 60) + { 0, { 0, 0, 0}}, // (151, 60) + { 0, { 0, 0, 0}}, // (152, 60) + { 0, { 0, 0, 0}}, // (153, 60) + { 0, { 0, 0, 0}}, // (154, 60) + { 0, { 0, 0, 0}}, // (155, 60) + { 0, { 0, 0, 0}}, // (156, 60) + { 0, { 0, 0, 0}}, // (157, 60) + { 0, { 0, 0, 0}}, // (158, 60) + { 0, { 0, 0, 0}}, // (159, 60) + { 0, { 0, 0, 0}}, // (160, 60) + { 0, { 0, 0, 0}}, // (161, 60) + { 0, { 0, 0, 0}}, // (162, 60) + { 0, { 0, 0, 0}}, // (163, 60) + { 0, { 0, 0, 0}}, // (164, 60) + { 0, { 0, 0, 0}}, // (165, 60) + { 0, { 0, 0, 0}}, // (166, 60) + { 0, { 0, 0, 0}}, // (167, 60) + { 0, { 0, 0, 0}}, // (168, 60) + { 0, { 0, 0, 0}}, // (169, 60) + { 0, { 0, 0, 0}}, // (170, 60) + { 0, { 0, 0, 0}}, // (171, 60) + { 12, { 0, 0, 0}}, // (172, 60) + {126, { 0, 0, 0}}, // (173, 60) + {128, { 0, 0, 0}}, // (174, 60) + {128, { 0, 0, 0}}, // (175, 60) + {128, { 0, 0, 0}}, // (176, 60) + {128, { 0, 0, 0}}, // (177, 60) + {128, { 0, 0, 0}}, // (178, 60) + {128, { 0, 0, 0}}, // (179, 60) + {128, { 0, 0, 0}}, // ( 0, 61) + {128, { 0, 0, 0}}, // ( 1, 61) + {128, { 0, 0, 0}}, // ( 2, 61) + {128, { 0, 0, 0}}, // ( 3, 61) + {128, { 0, 0, 0}}, // ( 4, 61) + {128, { 0, 0, 0}}, // ( 5, 61) + { 95, { 0, 0, 0}}, // ( 6, 61) + { 0, { 0, 0, 0}}, // ( 7, 61) + { 0, { 0, 0, 0}}, // ( 8, 61) + { 0, { 0, 0, 0}}, // ( 9, 61) + { 0, { 0, 0, 0}}, // ( 10, 61) + { 0, { 0, 0, 0}}, // ( 11, 61) + { 0, { 0, 0, 0}}, // ( 12, 61) + { 0, { 0, 0, 0}}, // ( 13, 61) + { 0, { 0, 0, 0}}, // ( 14, 61) + { 0, { 0, 0, 0}}, // ( 15, 61) + { 0, { 0, 0, 0}}, // ( 16, 61) + { 0, { 0, 0, 0}}, // ( 17, 61) + { 0, { 0, 0, 0}}, // ( 18, 61) + { 0, { 0, 0, 0}}, // ( 19, 61) + { 0, { 0, 0, 0}}, // ( 20, 61) + { 0, { 0, 0, 0}}, // ( 21, 61) + { 0, { 0, 0, 0}}, // ( 22, 61) + { 0, { 0, 0, 0}}, // ( 23, 61) + { 0, { 0, 0, 0}}, // ( 24, 61) + { 0, { 0, 0, 0}}, // ( 25, 61) + { 0, { 0, 0, 0}}, // ( 26, 61) + { 0, { 0, 0, 0}}, // ( 27, 61) + { 0, { 0, 0, 0}}, // ( 28, 61) + { 0, { 0, 0, 0}}, // ( 29, 61) + { 0, { 0, 0, 0}}, // ( 30, 61) + { 0, { 0, 0, 0}}, // ( 31, 61) + { 0, { 0, 0, 0}}, // ( 32, 61) + { 0, { 0, 0, 0}}, // ( 33, 61) + { 0, { 0, 0, 0}}, // ( 34, 61) + { 0, { 0, 0, 0}}, // ( 35, 61) + { 0, { 0, 0, 0}}, // ( 36, 61) + { 0, { 0, 0, 0}}, // ( 37, 61) + { 0, { 0, 0, 0}}, // ( 38, 61) + { 0, { 0, 0, 0}}, // ( 39, 61) + { 0, { 0, 0, 0}}, // ( 40, 61) + { 0, { 0, 0, 0}}, // ( 41, 61) + { 0, { 0, 0, 0}}, // ( 42, 61) + { 0, { 0, 0, 0}}, // ( 43, 61) + { 0, { 0, 0, 0}}, // ( 44, 61) + { 0, { 0, 0, 0}}, // ( 45, 61) + { 0, { 0, 0, 0}}, // ( 46, 61) + { 0, { 0, 0, 0}}, // ( 47, 61) + { 0, { 0, 0, 0}}, // ( 48, 61) + { 0, { 0, 0, 0}}, // ( 49, 61) + { 0, { 0, 0, 0}}, // ( 50, 61) + { 0, { 0, 0, 0}}, // ( 51, 61) + { 0, { 0, 0, 0}}, // ( 52, 61) + { 0, { 0, 0, 0}}, // ( 53, 61) + { 0, { 0, 0, 0}}, // ( 54, 61) + { 0, { 0, 0, 0}}, // ( 55, 61) + { 0, { 0, 0, 0}}, // ( 56, 61) + { 0, { 0, 0, 0}}, // ( 57, 61) + { 0, { 0, 0, 0}}, // ( 58, 61) + { 0, { 0, 0, 0}}, // ( 59, 61) + { 0, { 0, 0, 0}}, // ( 60, 61) + { 0, { 0, 0, 0}}, // ( 61, 61) + { 0, { 0, 0, 0}}, // ( 62, 61) + { 0, { 0, 0, 0}}, // ( 63, 61) + { 0, { 0, 0, 0}}, // ( 64, 61) + { 0, { 0, 0, 0}}, // ( 65, 61) + { 0, { 0, 0, 0}}, // ( 66, 61) + { 0, { 0, 0, 0}}, // ( 67, 61) + { 0, { 0, 0, 0}}, // ( 68, 61) + { 0, { 0, 0, 0}}, // ( 69, 61) + { 0, { 0, 0, 0}}, // ( 70, 61) + { 0, { 0, 0, 0}}, // ( 71, 61) + { 0, { 0, 0, 0}}, // ( 72, 61) + { 0, { 0, 0, 0}}, // ( 73, 61) + { 0, { 0, 0, 0}}, // ( 74, 61) + { 0, { 0, 0, 0}}, // ( 75, 61) + { 0, { 0, 0, 0}}, // ( 76, 61) + { 0, { 0, 0, 0}}, // ( 77, 61) + { 0, { 0, 0, 0}}, // ( 78, 61) + { 0, { 0, 0, 0}}, // ( 79, 61) + { 0, { 0, 0, 0}}, // ( 80, 61) + { 0, { 0, 0, 0}}, // ( 81, 61) + { 0, { 0, 0, 0}}, // ( 82, 61) + { 0, { 0, 0, 0}}, // ( 83, 61) + { 0, { 0, 0, 0}}, // ( 84, 61) + { 0, { 0, 0, 0}}, // ( 85, 61) + { 0, { 0, 0, 0}}, // ( 86, 61) + { 0, { 0, 0, 0}}, // ( 87, 61) + { 0, { 0, 0, 0}}, // ( 88, 61) + { 0, { 0, 0, 0}}, // ( 89, 61) + { 0, { 0, 0, 0}}, // ( 90, 61) + { 0, { 0, 0, 0}}, // ( 91, 61) + { 0, { 0, 0, 0}}, // ( 92, 61) + { 0, { 0, 0, 0}}, // ( 93, 61) + { 0, { 0, 0, 0}}, // ( 94, 61) + { 0, { 0, 0, 0}}, // ( 95, 61) + { 0, { 0, 0, 0}}, // ( 96, 61) + { 0, { 0, 0, 0}}, // ( 97, 61) + { 0, { 0, 0, 0}}, // ( 98, 61) + { 0, { 0, 0, 0}}, // ( 99, 61) + { 0, { 0, 0, 0}}, // (100, 61) + { 0, { 0, 0, 0}}, // (101, 61) + { 0, { 0, 0, 0}}, // (102, 61) + { 0, { 0, 0, 0}}, // (103, 61) + { 0, { 0, 0, 0}}, // (104, 61) + { 0, { 0, 0, 0}}, // (105, 61) + { 0, { 0, 0, 0}}, // (106, 61) + { 0, { 0, 0, 0}}, // (107, 61) + { 0, { 0, 0, 0}}, // (108, 61) + { 0, { 0, 0, 0}}, // (109, 61) + { 0, { 0, 0, 0}}, // (110, 61) + { 0, { 0, 0, 0}}, // (111, 61) + { 0, { 0, 0, 0}}, // (112, 61) + { 0, { 0, 0, 0}}, // (113, 61) + { 0, { 0, 0, 0}}, // (114, 61) + { 0, { 0, 0, 0}}, // (115, 61) + { 0, { 0, 0, 0}}, // (116, 61) + { 0, { 0, 0, 0}}, // (117, 61) + { 0, { 0, 0, 0}}, // (118, 61) + { 0, { 0, 0, 0}}, // (119, 61) + { 0, { 0, 0, 0}}, // (120, 61) + { 0, { 0, 0, 0}}, // (121, 61) + { 0, { 0, 0, 0}}, // (122, 61) + { 0, { 0, 0, 0}}, // (123, 61) + { 0, { 0, 0, 0}}, // (124, 61) + { 0, { 0, 0, 0}}, // (125, 61) + { 0, { 0, 0, 0}}, // (126, 61) + { 0, { 0, 0, 0}}, // (127, 61) + { 0, { 0, 0, 0}}, // (128, 61) + { 0, { 0, 0, 0}}, // (129, 61) + { 0, { 0, 0, 0}}, // (130, 61) + { 0, { 0, 0, 0}}, // (131, 61) + { 0, { 0, 0, 0}}, // (132, 61) + { 0, { 0, 0, 0}}, // (133, 61) + { 0, { 0, 0, 0}}, // (134, 61) + { 0, { 0, 0, 0}}, // (135, 61) + { 0, { 0, 0, 0}}, // (136, 61) + { 0, { 0, 0, 0}}, // (137, 61) + { 0, { 0, 0, 0}}, // (138, 61) + { 0, { 0, 0, 0}}, // (139, 61) + { 0, { 0, 0, 0}}, // (140, 61) + { 0, { 0, 0, 0}}, // (141, 61) + { 0, { 0, 0, 0}}, // (142, 61) + { 0, { 0, 0, 0}}, // (143, 61) + { 0, { 0, 0, 0}}, // (144, 61) + { 0, { 0, 0, 0}}, // (145, 61) + { 0, { 0, 0, 0}}, // (146, 61) + { 0, { 0, 0, 0}}, // (147, 61) + { 0, { 0, 0, 0}}, // (148, 61) + { 0, { 0, 0, 0}}, // (149, 61) + { 0, { 0, 0, 0}}, // (150, 61) + { 0, { 0, 0, 0}}, // (151, 61) + { 0, { 0, 0, 0}}, // (152, 61) + { 0, { 0, 0, 0}}, // (153, 61) + { 0, { 0, 0, 0}}, // (154, 61) + { 0, { 0, 0, 0}}, // (155, 61) + { 0, { 0, 0, 0}}, // (156, 61) + { 0, { 0, 0, 0}}, // (157, 61) + { 0, { 0, 0, 0}}, // (158, 61) + { 0, { 0, 0, 0}}, // (159, 61) + { 0, { 0, 0, 0}}, // (160, 61) + { 0, { 0, 0, 0}}, // (161, 61) + { 0, { 0, 0, 0}}, // (162, 61) + { 0, { 0, 0, 0}}, // (163, 61) + { 0, { 0, 0, 0}}, // (164, 61) + { 0, { 0, 0, 0}}, // (165, 61) + { 0, { 0, 0, 0}}, // (166, 61) + { 0, { 0, 0, 0}}, // (167, 61) + { 0, { 0, 0, 0}}, // (168, 61) + { 0, { 0, 0, 0}}, // (169, 61) + { 0, { 0, 0, 0}}, // (170, 61) + { 0, { 0, 0, 0}}, // (171, 61) + { 0, { 0, 0, 0}}, // (172, 61) + { 95, { 0, 0, 0}}, // (173, 61) + {128, { 0, 0, 0}}, // (174, 61) + {128, { 0, 0, 0}}, // (175, 61) + {128, { 0, 0, 0}}, // (176, 61) + {128, { 0, 0, 0}}, // (177, 61) + {128, { 0, 0, 0}}, // (178, 61) + {128, { 0, 0, 0}}, // (179, 61) + {128, { 0, 0, 0}}, // ( 0, 62) + {128, { 0, 0, 0}}, // ( 1, 62) + {128, { 0, 0, 0}}, // ( 2, 62) + {128, { 0, 0, 0}}, // ( 3, 62) + {128, { 0, 0, 0}}, // ( 4, 62) + {128, { 0, 0, 0}}, // ( 5, 62) + { 52, { 0, 0, 0}}, // ( 6, 62) + { 0, { 0, 0, 0}}, // ( 7, 62) + { 0, { 0, 0, 0}}, // ( 8, 62) + { 0, { 0, 0, 0}}, // ( 9, 62) + { 0, { 0, 0, 0}}, // ( 10, 62) + { 0, { 0, 0, 0}}, // ( 11, 62) + { 0, { 0, 0, 0}}, // ( 12, 62) + { 0, { 0, 0, 0}}, // ( 13, 62) + { 0, { 0, 0, 0}}, // ( 14, 62) + { 0, { 0, 0, 0}}, // ( 15, 62) + { 0, { 0, 0, 0}}, // ( 16, 62) + { 0, { 0, 0, 0}}, // ( 17, 62) + { 0, { 0, 0, 0}}, // ( 18, 62) + { 0, { 0, 0, 0}}, // ( 19, 62) + { 0, { 0, 0, 0}}, // ( 20, 62) + { 0, { 0, 0, 0}}, // ( 21, 62) + { 0, { 0, 0, 0}}, // ( 22, 62) + { 0, { 0, 0, 0}}, // ( 23, 62) + { 0, { 0, 0, 0}}, // ( 24, 62) + { 0, { 0, 0, 0}}, // ( 25, 62) + { 0, { 0, 0, 0}}, // ( 26, 62) + { 0, { 0, 0, 0}}, // ( 27, 62) + { 0, { 0, 0, 0}}, // ( 28, 62) + { 0, { 0, 0, 0}}, // ( 29, 62) + { 0, { 0, 0, 0}}, // ( 30, 62) + { 0, { 0, 0, 0}}, // ( 31, 62) + { 0, { 0, 0, 0}}, // ( 32, 62) + { 0, { 0, 0, 0}}, // ( 33, 62) + { 0, { 0, 0, 0}}, // ( 34, 62) + { 0, { 0, 0, 0}}, // ( 35, 62) + { 0, { 0, 0, 0}}, // ( 36, 62) + { 0, { 0, 0, 0}}, // ( 37, 62) + { 0, { 0, 0, 0}}, // ( 38, 62) + { 0, { 0, 0, 0}}, // ( 39, 62) + { 0, { 0, 0, 0}}, // ( 40, 62) + { 0, { 0, 0, 0}}, // ( 41, 62) + { 0, { 0, 0, 0}}, // ( 42, 62) + { 0, { 0, 0, 0}}, // ( 43, 62) + { 0, { 0, 0, 0}}, // ( 44, 62) + { 0, { 0, 0, 0}}, // ( 45, 62) + { 0, { 0, 0, 0}}, // ( 46, 62) + { 0, { 0, 0, 0}}, // ( 47, 62) + { 0, { 0, 0, 0}}, // ( 48, 62) + { 0, { 0, 0, 0}}, // ( 49, 62) + { 0, { 0, 0, 0}}, // ( 50, 62) + { 0, { 0, 0, 0}}, // ( 51, 62) + { 0, { 0, 0, 0}}, // ( 52, 62) + { 0, { 0, 0, 0}}, // ( 53, 62) + { 0, { 0, 0, 0}}, // ( 54, 62) + { 0, { 0, 0, 0}}, // ( 55, 62) + { 0, { 0, 0, 0}}, // ( 56, 62) + { 0, { 0, 0, 0}}, // ( 57, 62) + { 0, { 0, 0, 0}}, // ( 58, 62) + { 0, { 0, 0, 0}}, // ( 59, 62) + { 0, { 0, 0, 0}}, // ( 60, 62) + { 0, { 0, 0, 0}}, // ( 61, 62) + { 0, { 0, 0, 0}}, // ( 62, 62) + { 0, { 0, 0, 0}}, // ( 63, 62) + { 0, { 0, 0, 0}}, // ( 64, 62) + { 0, { 0, 0, 0}}, // ( 65, 62) + { 0, { 0, 0, 0}}, // ( 66, 62) + { 0, { 0, 0, 0}}, // ( 67, 62) + { 0, { 0, 0, 0}}, // ( 68, 62) + { 0, { 0, 0, 0}}, // ( 69, 62) + { 0, { 0, 0, 0}}, // ( 70, 62) + { 0, { 0, 0, 0}}, // ( 71, 62) + { 0, { 0, 0, 0}}, // ( 72, 62) + { 0, { 0, 0, 0}}, // ( 73, 62) + { 0, { 0, 0, 0}}, // ( 74, 62) + { 0, { 0, 0, 0}}, // ( 75, 62) + { 0, { 0, 0, 0}}, // ( 76, 62) + { 0, { 0, 0, 0}}, // ( 77, 62) + { 0, { 0, 0, 0}}, // ( 78, 62) + { 0, { 0, 0, 0}}, // ( 79, 62) + { 0, { 0, 0, 0}}, // ( 80, 62) + { 0, { 0, 0, 0}}, // ( 81, 62) + { 0, { 0, 0, 0}}, // ( 82, 62) + { 0, { 0, 0, 0}}, // ( 83, 62) + { 0, { 0, 0, 0}}, // ( 84, 62) + { 0, { 0, 0, 0}}, // ( 85, 62) + { 0, { 0, 0, 0}}, // ( 86, 62) + { 0, { 0, 0, 0}}, // ( 87, 62) + { 0, { 0, 0, 0}}, // ( 88, 62) + { 0, { 0, 0, 0}}, // ( 89, 62) + { 0, { 0, 0, 0}}, // ( 90, 62) + { 0, { 0, 0, 0}}, // ( 91, 62) + { 0, { 0, 0, 0}}, // ( 92, 62) + { 0, { 0, 0, 0}}, // ( 93, 62) + { 0, { 0, 0, 0}}, // ( 94, 62) + { 0, { 0, 0, 0}}, // ( 95, 62) + { 0, { 0, 0, 0}}, // ( 96, 62) + { 0, { 0, 0, 0}}, // ( 97, 62) + { 0, { 0, 0, 0}}, // ( 98, 62) + { 0, { 0, 0, 0}}, // ( 99, 62) + { 0, { 0, 0, 0}}, // (100, 62) + { 0, { 0, 0, 0}}, // (101, 62) + { 0, { 0, 0, 0}}, // (102, 62) + { 0, { 0, 0, 0}}, // (103, 62) + { 0, { 0, 0, 0}}, // (104, 62) + { 0, { 0, 0, 0}}, // (105, 62) + { 0, { 0, 0, 0}}, // (106, 62) + { 0, { 0, 0, 0}}, // (107, 62) + { 0, { 0, 0, 0}}, // (108, 62) + { 0, { 0, 0, 0}}, // (109, 62) + { 0, { 0, 0, 0}}, // (110, 62) + { 0, { 0, 0, 0}}, // (111, 62) + { 0, { 0, 0, 0}}, // (112, 62) + { 0, { 0, 0, 0}}, // (113, 62) + { 0, { 0, 0, 0}}, // (114, 62) + { 0, { 0, 0, 0}}, // (115, 62) + { 0, { 0, 0, 0}}, // (116, 62) + { 0, { 0, 0, 0}}, // (117, 62) + { 0, { 0, 0, 0}}, // (118, 62) + { 0, { 0, 0, 0}}, // (119, 62) + { 0, { 0, 0, 0}}, // (120, 62) + { 0, { 0, 0, 0}}, // (121, 62) + { 0, { 0, 0, 0}}, // (122, 62) + { 0, { 0, 0, 0}}, // (123, 62) + { 0, { 0, 0, 0}}, // (124, 62) + { 0, { 0, 0, 0}}, // (125, 62) + { 0, { 0, 0, 0}}, // (126, 62) + { 0, { 0, 0, 0}}, // (127, 62) + { 0, { 0, 0, 0}}, // (128, 62) + { 0, { 0, 0, 0}}, // (129, 62) + { 0, { 0, 0, 0}}, // (130, 62) + { 0, { 0, 0, 0}}, // (131, 62) + { 0, { 0, 0, 0}}, // (132, 62) + { 0, { 0, 0, 0}}, // (133, 62) + { 0, { 0, 0, 0}}, // (134, 62) + { 0, { 0, 0, 0}}, // (135, 62) + { 0, { 0, 0, 0}}, // (136, 62) + { 0, { 0, 0, 0}}, // (137, 62) + { 0, { 0, 0, 0}}, // (138, 62) + { 0, { 0, 0, 0}}, // (139, 62) + { 0, { 0, 0, 0}}, // (140, 62) + { 0, { 0, 0, 0}}, // (141, 62) + { 0, { 0, 0, 0}}, // (142, 62) + { 0, { 0, 0, 0}}, // (143, 62) + { 0, { 0, 0, 0}}, // (144, 62) + { 0, { 0, 0, 0}}, // (145, 62) + { 0, { 0, 0, 0}}, // (146, 62) + { 0, { 0, 0, 0}}, // (147, 62) + { 0, { 0, 0, 0}}, // (148, 62) + { 0, { 0, 0, 0}}, // (149, 62) + { 0, { 0, 0, 0}}, // (150, 62) + { 0, { 0, 0, 0}}, // (151, 62) + { 0, { 0, 0, 0}}, // (152, 62) + { 0, { 0, 0, 0}}, // (153, 62) + { 0, { 0, 0, 0}}, // (154, 62) + { 0, { 0, 0, 0}}, // (155, 62) + { 0, { 0, 0, 0}}, // (156, 62) + { 0, { 0, 0, 0}}, // (157, 62) + { 0, { 0, 0, 0}}, // (158, 62) + { 0, { 0, 0, 0}}, // (159, 62) + { 0, { 0, 0, 0}}, // (160, 62) + { 0, { 0, 0, 0}}, // (161, 62) + { 0, { 0, 0, 0}}, // (162, 62) + { 0, { 0, 0, 0}}, // (163, 62) + { 0, { 0, 0, 0}}, // (164, 62) + { 0, { 0, 0, 0}}, // (165, 62) + { 0, { 0, 0, 0}}, // (166, 62) + { 0, { 0, 0, 0}}, // (167, 62) + { 0, { 0, 0, 0}}, // (168, 62) + { 0, { 0, 0, 0}}, // (169, 62) + { 0, { 0, 0, 0}}, // (170, 62) + { 0, { 0, 0, 0}}, // (171, 62) + { 0, { 0, 0, 0}}, // (172, 62) + { 52, { 0, 0, 0}}, // (173, 62) + {128, { 0, 0, 0}}, // (174, 62) + {128, { 0, 0, 0}}, // (175, 62) + {128, { 0, 0, 0}}, // (176, 62) + {128, { 0, 0, 0}}, // (177, 62) + {128, { 0, 0, 0}}, // (178, 62) + {128, { 0, 0, 0}}, // (179, 62) + {128, { 0, 0, 0}}, // ( 0, 63) + {128, { 0, 0, 0}}, // ( 1, 63) + {128, { 0, 0, 0}}, // ( 2, 63) + {128, { 0, 0, 0}}, // ( 3, 63) + {128, { 0, 0, 0}}, // ( 4, 63) + {126, { 0, 0, 0}}, // ( 5, 63) + { 11, { 0, 0, 0}}, // ( 6, 63) + { 0, { 0, 0, 0}}, // ( 7, 63) + { 0, { 0, 0, 0}}, // ( 8, 63) + { 0, { 0, 0, 0}}, // ( 9, 63) + { 0, { 0, 0, 0}}, // ( 10, 63) + { 0, { 0, 0, 0}}, // ( 11, 63) + { 0, { 0, 0, 0}}, // ( 12, 63) + { 0, { 0, 0, 0}}, // ( 13, 63) + { 0, { 0, 0, 0}}, // ( 14, 63) + { 0, { 0, 0, 0}}, // ( 15, 63) + { 0, { 0, 0, 0}}, // ( 16, 63) + { 0, { 0, 0, 0}}, // ( 17, 63) + { 0, { 0, 0, 0}}, // ( 18, 63) + { 0, { 0, 0, 0}}, // ( 19, 63) + { 0, { 0, 0, 0}}, // ( 20, 63) + { 0, { 0, 0, 0}}, // ( 21, 63) + { 0, { 0, 0, 0}}, // ( 22, 63) + { 0, { 0, 0, 0}}, // ( 23, 63) + { 0, { 0, 0, 0}}, // ( 24, 63) + { 0, { 0, 0, 0}}, // ( 25, 63) + { 0, { 0, 0, 0}}, // ( 26, 63) + { 0, { 0, 0, 0}}, // ( 27, 63) + { 0, { 0, 0, 0}}, // ( 28, 63) + { 0, { 0, 0, 0}}, // ( 29, 63) + { 0, { 0, 0, 0}}, // ( 30, 63) + { 0, { 0, 0, 0}}, // ( 31, 63) + { 0, { 0, 0, 0}}, // ( 32, 63) + { 0, { 0, 0, 0}}, // ( 33, 63) + { 0, { 0, 0, 0}}, // ( 34, 63) + { 0, { 0, 0, 0}}, // ( 35, 63) + { 0, { 0, 0, 0}}, // ( 36, 63) + { 0, { 0, 0, 0}}, // ( 37, 63) + { 0, { 0, 0, 0}}, // ( 38, 63) + { 0, { 0, 0, 0}}, // ( 39, 63) + { 0, { 0, 0, 0}}, // ( 40, 63) + { 0, { 0, 0, 0}}, // ( 41, 63) + { 0, { 0, 0, 0}}, // ( 42, 63) + { 0, { 0, 0, 0}}, // ( 43, 63) + { 0, { 0, 0, 0}}, // ( 44, 63) + { 0, { 0, 0, 0}}, // ( 45, 63) + { 0, { 0, 0, 0}}, // ( 46, 63) + { 0, { 0, 0, 0}}, // ( 47, 63) + { 0, { 0, 0, 0}}, // ( 48, 63) + { 0, { 0, 0, 0}}, // ( 49, 63) + { 0, { 0, 0, 0}}, // ( 50, 63) + { 0, { 0, 0, 0}}, // ( 51, 63) + { 0, { 0, 0, 0}}, // ( 52, 63) + { 0, { 0, 0, 0}}, // ( 53, 63) + { 0, { 0, 0, 0}}, // ( 54, 63) + { 0, { 0, 0, 0}}, // ( 55, 63) + { 0, { 0, 0, 0}}, // ( 56, 63) + { 0, { 0, 0, 0}}, // ( 57, 63) + { 0, { 0, 0, 0}}, // ( 58, 63) + { 0, { 0, 0, 0}}, // ( 59, 63) + { 0, { 0, 0, 0}}, // ( 60, 63) + { 0, { 0, 0, 0}}, // ( 61, 63) + { 0, { 0, 0, 0}}, // ( 62, 63) + { 0, { 0, 0, 0}}, // ( 63, 63) + { 0, { 0, 0, 0}}, // ( 64, 63) + { 0, { 0, 0, 0}}, // ( 65, 63) + { 0, { 0, 0, 0}}, // ( 66, 63) + { 0, { 0, 0, 0}}, // ( 67, 63) + { 0, { 0, 0, 0}}, // ( 68, 63) + { 0, { 0, 0, 0}}, // ( 69, 63) + { 0, { 0, 0, 0}}, // ( 70, 63) + { 0, { 0, 0, 0}}, // ( 71, 63) + { 0, { 0, 0, 0}}, // ( 72, 63) + { 0, { 0, 0, 0}}, // ( 73, 63) + { 0, { 0, 0, 0}}, // ( 74, 63) + { 0, { 0, 0, 0}}, // ( 75, 63) + { 0, { 0, 0, 0}}, // ( 76, 63) + { 0, { 0, 0, 0}}, // ( 77, 63) + { 0, { 0, 0, 0}}, // ( 78, 63) + { 0, { 0, 0, 0}}, // ( 79, 63) + { 0, { 0, 0, 0}}, // ( 80, 63) + { 0, { 0, 0, 0}}, // ( 81, 63) + { 0, { 0, 0, 0}}, // ( 82, 63) + { 0, { 0, 0, 0}}, // ( 83, 63) + { 0, { 0, 0, 0}}, // ( 84, 63) + { 0, { 0, 0, 0}}, // ( 85, 63) + { 0, { 0, 0, 0}}, // ( 86, 63) + { 0, { 0, 0, 0}}, // ( 87, 63) + { 0, { 0, 0, 0}}, // ( 88, 63) + { 0, { 0, 0, 0}}, // ( 89, 63) + { 0, { 0, 0, 0}}, // ( 90, 63) + { 0, { 0, 0, 0}}, // ( 91, 63) + { 0, { 0, 0, 0}}, // ( 92, 63) + { 0, { 0, 0, 0}}, // ( 93, 63) + { 0, { 0, 0, 0}}, // ( 94, 63) + { 0, { 0, 0, 0}}, // ( 95, 63) + { 0, { 0, 0, 0}}, // ( 96, 63) + { 0, { 0, 0, 0}}, // ( 97, 63) + { 0, { 0, 0, 0}}, // ( 98, 63) + { 0, { 0, 0, 0}}, // ( 99, 63) + { 0, { 0, 0, 0}}, // (100, 63) + { 0, { 0, 0, 0}}, // (101, 63) + { 0, { 0, 0, 0}}, // (102, 63) + { 0, { 0, 0, 0}}, // (103, 63) + { 0, { 0, 0, 0}}, // (104, 63) + { 0, { 0, 0, 0}}, // (105, 63) + { 0, { 0, 0, 0}}, // (106, 63) + { 0, { 0, 0, 0}}, // (107, 63) + { 0, { 0, 0, 0}}, // (108, 63) + { 0, { 0, 0, 0}}, // (109, 63) + { 0, { 0, 0, 0}}, // (110, 63) + { 0, { 0, 0, 0}}, // (111, 63) + { 0, { 0, 0, 0}}, // (112, 63) + { 0, { 0, 0, 0}}, // (113, 63) + { 0, { 0, 0, 0}}, // (114, 63) + { 0, { 0, 0, 0}}, // (115, 63) + { 0, { 0, 0, 0}}, // (116, 63) + { 0, { 0, 0, 0}}, // (117, 63) + { 0, { 0, 0, 0}}, // (118, 63) + { 0, { 0, 0, 0}}, // (119, 63) + { 0, { 0, 0, 0}}, // (120, 63) + { 0, { 0, 0, 0}}, // (121, 63) + { 0, { 0, 0, 0}}, // (122, 63) + { 0, { 0, 0, 0}}, // (123, 63) + { 0, { 0, 0, 0}}, // (124, 63) + { 0, { 0, 0, 0}}, // (125, 63) + { 0, { 0, 0, 0}}, // (126, 63) + { 0, { 0, 0, 0}}, // (127, 63) + { 0, { 0, 0, 0}}, // (128, 63) + { 0, { 0, 0, 0}}, // (129, 63) + { 0, { 0, 0, 0}}, // (130, 63) + { 0, { 0, 0, 0}}, // (131, 63) + { 0, { 0, 0, 0}}, // (132, 63) + { 0, { 0, 0, 0}}, // (133, 63) + { 0, { 0, 0, 0}}, // (134, 63) + { 0, { 0, 0, 0}}, // (135, 63) + { 0, { 0, 0, 0}}, // (136, 63) + { 0, { 0, 0, 0}}, // (137, 63) + { 0, { 0, 0, 0}}, // (138, 63) + { 0, { 0, 0, 0}}, // (139, 63) + { 0, { 0, 0, 0}}, // (140, 63) + { 0, { 0, 0, 0}}, // (141, 63) + { 0, { 0, 0, 0}}, // (142, 63) + { 0, { 0, 0, 0}}, // (143, 63) + { 0, { 0, 0, 0}}, // (144, 63) + { 0, { 0, 0, 0}}, // (145, 63) + { 0, { 0, 0, 0}}, // (146, 63) + { 0, { 0, 0, 0}}, // (147, 63) + { 0, { 0, 0, 0}}, // (148, 63) + { 0, { 0, 0, 0}}, // (149, 63) + { 0, { 0, 0, 0}}, // (150, 63) + { 0, { 0, 0, 0}}, // (151, 63) + { 0, { 0, 0, 0}}, // (152, 63) + { 0, { 0, 0, 0}}, // (153, 63) + { 0, { 0, 0, 0}}, // (154, 63) + { 0, { 0, 0, 0}}, // (155, 63) + { 0, { 0, 0, 0}}, // (156, 63) + { 0, { 0, 0, 0}}, // (157, 63) + { 0, { 0, 0, 0}}, // (158, 63) + { 0, { 0, 0, 0}}, // (159, 63) + { 0, { 0, 0, 0}}, // (160, 63) + { 0, { 0, 0, 0}}, // (161, 63) + { 0, { 0, 0, 0}}, // (162, 63) + { 0, { 0, 0, 0}}, // (163, 63) + { 0, { 0, 0, 0}}, // (164, 63) + { 0, { 0, 0, 0}}, // (165, 63) + { 0, { 0, 0, 0}}, // (166, 63) + { 0, { 0, 0, 0}}, // (167, 63) + { 0, { 0, 0, 0}}, // (168, 63) + { 0, { 0, 0, 0}}, // (169, 63) + { 0, { 0, 0, 0}}, // (170, 63) + { 0, { 0, 0, 0}}, // (171, 63) + { 0, { 0, 0, 0}}, // (172, 63) + { 11, { 0, 0, 0}}, // (173, 63) + {126, { 0, 0, 0}}, // (174, 63) + {128, { 0, 0, 0}}, // (175, 63) + {128, { 0, 0, 0}}, // (176, 63) + {128, { 0, 0, 0}}, // (177, 63) + {128, { 0, 0, 0}}, // (178, 63) + {128, { 0, 0, 0}}, // (179, 63) + {128, { 0, 0, 0}}, // ( 0, 64) + {128, { 0, 0, 0}}, // ( 1, 64) + {128, { 0, 0, 0}}, // ( 2, 64) + {128, { 0, 0, 0}}, // ( 3, 64) + {128, { 0, 0, 0}}, // ( 4, 64) + { 98, { 0, 0, 0}}, // ( 5, 64) + { 0, { 0, 0, 0}}, // ( 6, 64) + { 0, { 0, 0, 0}}, // ( 7, 64) + { 0, { 0, 0, 0}}, // ( 8, 64) + { 0, { 0, 0, 0}}, // ( 9, 64) + { 0, { 0, 0, 0}}, // ( 10, 64) + { 0, { 0, 0, 0}}, // ( 11, 64) + { 0, { 0, 0, 0}}, // ( 12, 64) + { 0, { 0, 0, 0}}, // ( 13, 64) + { 0, { 0, 0, 0}}, // ( 14, 64) + { 0, { 0, 0, 0}}, // ( 15, 64) + { 0, { 0, 0, 0}}, // ( 16, 64) + { 0, { 0, 0, 0}}, // ( 17, 64) + { 0, { 0, 0, 0}}, // ( 18, 64) + { 0, { 0, 0, 0}}, // ( 19, 64) + { 0, { 0, 0, 0}}, // ( 20, 64) + { 0, { 0, 0, 0}}, // ( 21, 64) + { 0, { 0, 0, 0}}, // ( 22, 64) + { 0, { 0, 0, 0}}, // ( 23, 64) + { 0, { 0, 0, 0}}, // ( 24, 64) + { 0, { 0, 0, 0}}, // ( 25, 64) + { 0, { 0, 0, 0}}, // ( 26, 64) + { 0, { 0, 0, 0}}, // ( 27, 64) + { 0, { 0, 0, 0}}, // ( 28, 64) + { 0, { 0, 0, 0}}, // ( 29, 64) + { 0, { 0, 0, 0}}, // ( 30, 64) + { 0, { 0, 0, 0}}, // ( 31, 64) + { 0, { 0, 0, 0}}, // ( 32, 64) + { 0, { 0, 0, 0}}, // ( 33, 64) + { 0, { 0, 0, 0}}, // ( 34, 64) + { 0, { 0, 0, 0}}, // ( 35, 64) + { 0, { 0, 0, 0}}, // ( 36, 64) + { 0, { 0, 0, 0}}, // ( 37, 64) + { 0, { 0, 0, 0}}, // ( 38, 64) + { 0, { 0, 0, 0}}, // ( 39, 64) + { 0, { 0, 0, 0}}, // ( 40, 64) + { 0, { 0, 0, 0}}, // ( 41, 64) + { 0, { 0, 0, 0}}, // ( 42, 64) + { 0, { 0, 0, 0}}, // ( 43, 64) + { 0, { 0, 0, 0}}, // ( 44, 64) + { 0, { 0, 0, 0}}, // ( 45, 64) + { 0, { 0, 0, 0}}, // ( 46, 64) + { 0, { 0, 0, 0}}, // ( 47, 64) + { 0, { 0, 0, 0}}, // ( 48, 64) + { 0, { 0, 0, 0}}, // ( 49, 64) + { 0, { 0, 0, 0}}, // ( 50, 64) + { 0, { 0, 0, 0}}, // ( 51, 64) + { 0, { 0, 0, 0}}, // ( 52, 64) + { 0, { 0, 0, 0}}, // ( 53, 64) + { 0, { 0, 0, 0}}, // ( 54, 64) + { 0, { 0, 0, 0}}, // ( 55, 64) + { 0, { 0, 0, 0}}, // ( 56, 64) + { 0, { 0, 0, 0}}, // ( 57, 64) + { 0, { 0, 0, 0}}, // ( 58, 64) + { 0, { 0, 0, 0}}, // ( 59, 64) + { 0, { 0, 0, 0}}, // ( 60, 64) + { 0, { 0, 0, 0}}, // ( 61, 64) + { 0, { 0, 0, 0}}, // ( 62, 64) + { 0, { 0, 0, 0}}, // ( 63, 64) + { 0, { 0, 0, 0}}, // ( 64, 64) + { 0, { 0, 0, 0}}, // ( 65, 64) + { 0, { 0, 0, 0}}, // ( 66, 64) + { 0, { 0, 0, 0}}, // ( 67, 64) + { 0, { 0, 0, 0}}, // ( 68, 64) + { 0, { 0, 0, 0}}, // ( 69, 64) + { 0, { 0, 0, 0}}, // ( 70, 64) + { 0, { 0, 0, 0}}, // ( 71, 64) + { 0, { 0, 0, 0}}, // ( 72, 64) + { 0, { 0, 0, 0}}, // ( 73, 64) + { 0, { 0, 0, 0}}, // ( 74, 64) + { 0, { 0, 0, 0}}, // ( 75, 64) + { 0, { 0, 0, 0}}, // ( 76, 64) + { 0, { 0, 0, 0}}, // ( 77, 64) + { 0, { 0, 0, 0}}, // ( 78, 64) + { 0, { 0, 0, 0}}, // ( 79, 64) + { 0, { 0, 0, 0}}, // ( 80, 64) + { 0, { 0, 0, 0}}, // ( 81, 64) + { 0, { 0, 0, 0}}, // ( 82, 64) + { 0, { 0, 0, 0}}, // ( 83, 64) + { 0, { 0, 0, 0}}, // ( 84, 64) + { 0, { 0, 0, 0}}, // ( 85, 64) + { 0, { 0, 0, 0}}, // ( 86, 64) + { 0, { 0, 0, 0}}, // ( 87, 64) + { 0, { 0, 0, 0}}, // ( 88, 64) + { 0, { 0, 0, 0}}, // ( 89, 64) + { 0, { 0, 0, 0}}, // ( 90, 64) + { 0, { 0, 0, 0}}, // ( 91, 64) + { 0, { 0, 0, 0}}, // ( 92, 64) + { 0, { 0, 0, 0}}, // ( 93, 64) + { 0, { 0, 0, 0}}, // ( 94, 64) + { 0, { 0, 0, 0}}, // ( 95, 64) + { 0, { 0, 0, 0}}, // ( 96, 64) + { 0, { 0, 0, 0}}, // ( 97, 64) + { 0, { 0, 0, 0}}, // ( 98, 64) + { 0, { 0, 0, 0}}, // ( 99, 64) + { 0, { 0, 0, 0}}, // (100, 64) + { 0, { 0, 0, 0}}, // (101, 64) + { 0, { 0, 0, 0}}, // (102, 64) + { 0, { 0, 0, 0}}, // (103, 64) + { 0, { 0, 0, 0}}, // (104, 64) + { 0, { 0, 0, 0}}, // (105, 64) + { 0, { 0, 0, 0}}, // (106, 64) + { 0, { 0, 0, 0}}, // (107, 64) + { 0, { 0, 0, 0}}, // (108, 64) + { 0, { 0, 0, 0}}, // (109, 64) + { 0, { 0, 0, 0}}, // (110, 64) + { 0, { 0, 0, 0}}, // (111, 64) + { 0, { 0, 0, 0}}, // (112, 64) + { 0, { 0, 0, 0}}, // (113, 64) + { 0, { 0, 0, 0}}, // (114, 64) + { 0, { 0, 0, 0}}, // (115, 64) + { 0, { 0, 0, 0}}, // (116, 64) + { 0, { 0, 0, 0}}, // (117, 64) + { 0, { 0, 0, 0}}, // (118, 64) + { 0, { 0, 0, 0}}, // (119, 64) + { 0, { 0, 0, 0}}, // (120, 64) + { 0, { 0, 0, 0}}, // (121, 64) + { 0, { 0, 0, 0}}, // (122, 64) + { 0, { 0, 0, 0}}, // (123, 64) + { 0, { 0, 0, 0}}, // (124, 64) + { 0, { 0, 0, 0}}, // (125, 64) + { 0, { 0, 0, 0}}, // (126, 64) + { 0, { 0, 0, 0}}, // (127, 64) + { 0, { 0, 0, 0}}, // (128, 64) + { 0, { 0, 0, 0}}, // (129, 64) + { 0, { 0, 0, 0}}, // (130, 64) + { 0, { 0, 0, 0}}, // (131, 64) + { 0, { 0, 0, 0}}, // (132, 64) + { 0, { 0, 0, 0}}, // (133, 64) + { 0, { 0, 0, 0}}, // (134, 64) + { 0, { 0, 0, 0}}, // (135, 64) + { 0, { 0, 0, 0}}, // (136, 64) + { 0, { 0, 0, 0}}, // (137, 64) + { 0, { 0, 0, 0}}, // (138, 64) + { 0, { 0, 0, 0}}, // (139, 64) + { 0, { 0, 0, 0}}, // (140, 64) + { 0, { 0, 0, 0}}, // (141, 64) + { 0, { 0, 0, 0}}, // (142, 64) + { 0, { 0, 0, 0}}, // (143, 64) + { 0, { 0, 0, 0}}, // (144, 64) + { 0, { 0, 0, 0}}, // (145, 64) + { 0, { 0, 0, 0}}, // (146, 64) + { 0, { 0, 0, 0}}, // (147, 64) + { 0, { 0, 0, 0}}, // (148, 64) + { 0, { 0, 0, 0}}, // (149, 64) + { 0, { 0, 0, 0}}, // (150, 64) + { 0, { 0, 0, 0}}, // (151, 64) + { 0, { 0, 0, 0}}, // (152, 64) + { 0, { 0, 0, 0}}, // (153, 64) + { 0, { 0, 0, 0}}, // (154, 64) + { 0, { 0, 0, 0}}, // (155, 64) + { 0, { 0, 0, 0}}, // (156, 64) + { 0, { 0, 0, 0}}, // (157, 64) + { 0, { 0, 0, 0}}, // (158, 64) + { 0, { 0, 0, 0}}, // (159, 64) + { 0, { 0, 0, 0}}, // (160, 64) + { 0, { 0, 0, 0}}, // (161, 64) + { 0, { 0, 0, 0}}, // (162, 64) + { 0, { 0, 0, 0}}, // (163, 64) + { 0, { 0, 0, 0}}, // (164, 64) + { 0, { 0, 0, 0}}, // (165, 64) + { 0, { 0, 0, 0}}, // (166, 64) + { 0, { 0, 0, 0}}, // (167, 64) + { 0, { 0, 0, 0}}, // (168, 64) + { 0, { 0, 0, 0}}, // (169, 64) + { 0, { 0, 0, 0}}, // (170, 64) + { 0, { 0, 0, 0}}, // (171, 64) + { 0, { 0, 0, 0}}, // (172, 64) + { 0, { 0, 0, 0}}, // (173, 64) + { 98, { 0, 0, 0}}, // (174, 64) + {128, { 0, 0, 0}}, // (175, 64) + {128, { 0, 0, 0}}, // (176, 64) + {128, { 0, 0, 0}}, // (177, 64) + {128, { 0, 0, 0}}, // (178, 64) + {128, { 0, 0, 0}}, // (179, 64) + {128, { 0, 0, 0}}, // ( 0, 65) + {128, { 0, 0, 0}}, // ( 1, 65) + {128, { 0, 0, 0}}, // ( 2, 65) + {128, { 0, 0, 0}}, // ( 3, 65) + {128, { 0, 0, 0}}, // ( 4, 65) + { 62, { 0, 0, 0}}, // ( 5, 65) + { 0, { 0, 0, 0}}, // ( 6, 65) + { 0, { 0, 0, 0}}, // ( 7, 65) + { 0, { 0, 0, 0}}, // ( 8, 65) + { 0, { 0, 0, 0}}, // ( 9, 65) + { 0, { 0, 0, 0}}, // ( 10, 65) + { 0, { 0, 0, 0}}, // ( 11, 65) + { 0, { 0, 0, 0}}, // ( 12, 65) + { 0, { 0, 0, 0}}, // ( 13, 65) + { 0, { 0, 0, 0}}, // ( 14, 65) + { 0, { 0, 0, 0}}, // ( 15, 65) + { 0, { 0, 0, 0}}, // ( 16, 65) + { 0, { 0, 0, 0}}, // ( 17, 65) + { 0, { 0, 0, 0}}, // ( 18, 65) + { 0, { 0, 0, 0}}, // ( 19, 65) + { 0, { 0, 0, 0}}, // ( 20, 65) + { 0, { 0, 0, 0}}, // ( 21, 65) + { 0, { 0, 0, 0}}, // ( 22, 65) + { 0, { 0, 0, 0}}, // ( 23, 65) + { 0, { 0, 0, 0}}, // ( 24, 65) + { 0, { 0, 0, 0}}, // ( 25, 65) + { 0, { 0, 0, 0}}, // ( 26, 65) + { 0, { 0, 0, 0}}, // ( 27, 65) + { 0, { 0, 0, 0}}, // ( 28, 65) + { 0, { 0, 0, 0}}, // ( 29, 65) + { 0, { 0, 0, 0}}, // ( 30, 65) + { 0, { 0, 0, 0}}, // ( 31, 65) + { 0, { 0, 0, 0}}, // ( 32, 65) + { 0, { 0, 0, 0}}, // ( 33, 65) + { 0, { 0, 0, 0}}, // ( 34, 65) + { 0, { 0, 0, 0}}, // ( 35, 65) + { 0, { 0, 0, 0}}, // ( 36, 65) + { 0, { 0, 0, 0}}, // ( 37, 65) + { 0, { 0, 0, 0}}, // ( 38, 65) + { 0, { 0, 0, 0}}, // ( 39, 65) + { 0, { 0, 0, 0}}, // ( 40, 65) + { 0, { 0, 0, 0}}, // ( 41, 65) + { 0, { 0, 0, 0}}, // ( 42, 65) + { 0, { 0, 0, 0}}, // ( 43, 65) + { 0, { 0, 0, 0}}, // ( 44, 65) + { 0, { 0, 0, 0}}, // ( 45, 65) + { 0, { 0, 0, 0}}, // ( 46, 65) + { 0, { 0, 0, 0}}, // ( 47, 65) + { 0, { 0, 0, 0}}, // ( 48, 65) + { 0, { 0, 0, 0}}, // ( 49, 65) + { 0, { 0, 0, 0}}, // ( 50, 65) + { 0, { 0, 0, 0}}, // ( 51, 65) + { 0, { 0, 0, 0}}, // ( 52, 65) + { 0, { 0, 0, 0}}, // ( 53, 65) + { 0, { 0, 0, 0}}, // ( 54, 65) + { 0, { 0, 0, 0}}, // ( 55, 65) + { 0, { 0, 0, 0}}, // ( 56, 65) + { 0, { 0, 0, 0}}, // ( 57, 65) + { 0, { 0, 0, 0}}, // ( 58, 65) + { 0, { 0, 0, 0}}, // ( 59, 65) + { 0, { 0, 0, 0}}, // ( 60, 65) + { 0, { 0, 0, 0}}, // ( 61, 65) + { 0, { 0, 0, 0}}, // ( 62, 65) + { 0, { 0, 0, 0}}, // ( 63, 65) + { 0, { 0, 0, 0}}, // ( 64, 65) + { 0, { 0, 0, 0}}, // ( 65, 65) + { 0, { 0, 0, 0}}, // ( 66, 65) + { 0, { 0, 0, 0}}, // ( 67, 65) + { 0, { 0, 0, 0}}, // ( 68, 65) + { 0, { 0, 0, 0}}, // ( 69, 65) + { 0, { 0, 0, 0}}, // ( 70, 65) + { 0, { 0, 0, 0}}, // ( 71, 65) + { 0, { 0, 0, 0}}, // ( 72, 65) + { 0, { 0, 0, 0}}, // ( 73, 65) + { 0, { 0, 0, 0}}, // ( 74, 65) + { 0, { 0, 0, 0}}, // ( 75, 65) + { 0, { 0, 0, 0}}, // ( 76, 65) + { 0, { 0, 0, 0}}, // ( 77, 65) + { 0, { 0, 0, 0}}, // ( 78, 65) + { 0, { 0, 0, 0}}, // ( 79, 65) + { 0, { 0, 0, 0}}, // ( 80, 65) + { 0, { 0, 0, 0}}, // ( 81, 65) + { 0, { 0, 0, 0}}, // ( 82, 65) + { 0, { 0, 0, 0}}, // ( 83, 65) + { 0, { 0, 0, 0}}, // ( 84, 65) + { 0, { 0, 0, 0}}, // ( 85, 65) + { 0, { 0, 0, 0}}, // ( 86, 65) + { 0, { 0, 0, 0}}, // ( 87, 65) + { 0, { 0, 0, 0}}, // ( 88, 65) + { 0, { 0, 0, 0}}, // ( 89, 65) + { 0, { 0, 0, 0}}, // ( 90, 65) + { 0, { 0, 0, 0}}, // ( 91, 65) + { 0, { 0, 0, 0}}, // ( 92, 65) + { 0, { 0, 0, 0}}, // ( 93, 65) + { 0, { 0, 0, 0}}, // ( 94, 65) + { 0, { 0, 0, 0}}, // ( 95, 65) + { 0, { 0, 0, 0}}, // ( 96, 65) + { 0, { 0, 0, 0}}, // ( 97, 65) + { 0, { 0, 0, 0}}, // ( 98, 65) + { 0, { 0, 0, 0}}, // ( 99, 65) + { 0, { 0, 0, 0}}, // (100, 65) + { 0, { 0, 0, 0}}, // (101, 65) + { 0, { 0, 0, 0}}, // (102, 65) + { 0, { 0, 0, 0}}, // (103, 65) + { 0, { 0, 0, 0}}, // (104, 65) + { 0, { 0, 0, 0}}, // (105, 65) + { 0, { 0, 0, 0}}, // (106, 65) + { 0, { 0, 0, 0}}, // (107, 65) + { 0, { 0, 0, 0}}, // (108, 65) + { 0, { 0, 0, 0}}, // (109, 65) + { 0, { 0, 0, 0}}, // (110, 65) + { 0, { 0, 0, 0}}, // (111, 65) + { 0, { 0, 0, 0}}, // (112, 65) + { 0, { 0, 0, 0}}, // (113, 65) + { 0, { 0, 0, 0}}, // (114, 65) + { 0, { 0, 0, 0}}, // (115, 65) + { 0, { 0, 0, 0}}, // (116, 65) + { 0, { 0, 0, 0}}, // (117, 65) + { 0, { 0, 0, 0}}, // (118, 65) + { 0, { 0, 0, 0}}, // (119, 65) + { 0, { 0, 0, 0}}, // (120, 65) + { 0, { 0, 0, 0}}, // (121, 65) + { 0, { 0, 0, 0}}, // (122, 65) + { 0, { 0, 0, 0}}, // (123, 65) + { 0, { 0, 0, 0}}, // (124, 65) + { 0, { 0, 0, 0}}, // (125, 65) + { 0, { 0, 0, 0}}, // (126, 65) + { 0, { 0, 0, 0}}, // (127, 65) + { 0, { 0, 0, 0}}, // (128, 65) + { 0, { 0, 0, 0}}, // (129, 65) + { 0, { 0, 0, 0}}, // (130, 65) + { 0, { 0, 0, 0}}, // (131, 65) + { 0, { 0, 0, 0}}, // (132, 65) + { 0, { 0, 0, 0}}, // (133, 65) + { 0, { 0, 0, 0}}, // (134, 65) + { 0, { 0, 0, 0}}, // (135, 65) + { 0, { 0, 0, 0}}, // (136, 65) + { 0, { 0, 0, 0}}, // (137, 65) + { 0, { 0, 0, 0}}, // (138, 65) + { 0, { 0, 0, 0}}, // (139, 65) + { 0, { 0, 0, 0}}, // (140, 65) + { 0, { 0, 0, 0}}, // (141, 65) + { 0, { 0, 0, 0}}, // (142, 65) + { 0, { 0, 0, 0}}, // (143, 65) + { 0, { 0, 0, 0}}, // (144, 65) + { 0, { 0, 0, 0}}, // (145, 65) + { 0, { 0, 0, 0}}, // (146, 65) + { 0, { 0, 0, 0}}, // (147, 65) + { 0, { 0, 0, 0}}, // (148, 65) + { 0, { 0, 0, 0}}, // (149, 65) + { 0, { 0, 0, 0}}, // (150, 65) + { 0, { 0, 0, 0}}, // (151, 65) + { 0, { 0, 0, 0}}, // (152, 65) + { 0, { 0, 0, 0}}, // (153, 65) + { 0, { 0, 0, 0}}, // (154, 65) + { 0, { 0, 0, 0}}, // (155, 65) + { 0, { 0, 0, 0}}, // (156, 65) + { 0, { 0, 0, 0}}, // (157, 65) + { 0, { 0, 0, 0}}, // (158, 65) + { 0, { 0, 0, 0}}, // (159, 65) + { 0, { 0, 0, 0}}, // (160, 65) + { 0, { 0, 0, 0}}, // (161, 65) + { 0, { 0, 0, 0}}, // (162, 65) + { 0, { 0, 0, 0}}, // (163, 65) + { 0, { 0, 0, 0}}, // (164, 65) + { 0, { 0, 0, 0}}, // (165, 65) + { 0, { 0, 0, 0}}, // (166, 65) + { 0, { 0, 0, 0}}, // (167, 65) + { 0, { 0, 0, 0}}, // (168, 65) + { 0, { 0, 0, 0}}, // (169, 65) + { 0, { 0, 0, 0}}, // (170, 65) + { 0, { 0, 0, 0}}, // (171, 65) + { 0, { 0, 0, 0}}, // (172, 65) + { 0, { 0, 0, 0}}, // (173, 65) + { 58, { 0, 0, 0}}, // (174, 65) + {128, { 0, 0, 0}}, // (175, 65) + {128, { 0, 0, 0}}, // (176, 65) + {128, { 0, 0, 0}}, // (177, 65) + {128, { 0, 0, 0}}, // (178, 65) + {128, { 0, 0, 0}}, // (179, 65) + {128, { 0, 0, 0}}, // ( 0, 66) + {128, { 0, 0, 0}}, // ( 1, 66) + {128, { 0, 0, 0}}, // ( 2, 66) + {128, { 0, 0, 0}}, // ( 3, 66) + {128, { 0, 0, 0}}, // ( 4, 66) + { 25, { 0, 0, 0}}, // ( 5, 66) + { 0, { 0, 0, 0}}, // ( 6, 66) + { 0, { 0, 0, 0}}, // ( 7, 66) + { 0, { 0, 0, 0}}, // ( 8, 66) + { 0, { 0, 0, 0}}, // ( 9, 66) + { 0, { 0, 0, 0}}, // ( 10, 66) + { 0, { 0, 0, 0}}, // ( 11, 66) + { 0, { 0, 0, 0}}, // ( 12, 66) + { 0, { 0, 0, 0}}, // ( 13, 66) + { 0, { 0, 0, 0}}, // ( 14, 66) + { 0, { 0, 0, 0}}, // ( 15, 66) + { 0, { 0, 0, 0}}, // ( 16, 66) + { 0, { 0, 0, 0}}, // ( 17, 66) + { 0, { 0, 0, 0}}, // ( 18, 66) + { 0, { 0, 0, 0}}, // ( 19, 66) + { 0, { 0, 0, 0}}, // ( 20, 66) + { 0, { 0, 0, 0}}, // ( 21, 66) + { 0, { 0, 0, 0}}, // ( 22, 66) + { 0, { 0, 0, 0}}, // ( 23, 66) + { 0, { 0, 0, 0}}, // ( 24, 66) + { 0, { 0, 0, 0}}, // ( 25, 66) + { 0, { 0, 0, 0}}, // ( 26, 66) + { 0, { 0, 0, 0}}, // ( 27, 66) + { 0, { 0, 0, 0}}, // ( 28, 66) + { 0, { 0, 0, 0}}, // ( 29, 66) + { 0, { 0, 0, 0}}, // ( 30, 66) + { 0, { 0, 0, 0}}, // ( 31, 66) + { 0, { 0, 0, 0}}, // ( 32, 66) + { 0, { 0, 0, 0}}, // ( 33, 66) + { 0, { 0, 0, 0}}, // ( 34, 66) + { 0, { 0, 0, 0}}, // ( 35, 66) + { 0, { 0, 0, 0}}, // ( 36, 66) + { 0, { 0, 0, 0}}, // ( 37, 66) + { 0, { 0, 0, 0}}, // ( 38, 66) + { 0, { 0, 0, 0}}, // ( 39, 66) + { 0, { 0, 0, 0}}, // ( 40, 66) + { 0, { 0, 0, 0}}, // ( 41, 66) + { 0, { 0, 0, 0}}, // ( 42, 66) + { 0, { 0, 0, 0}}, // ( 43, 66) + { 0, { 0, 0, 0}}, // ( 44, 66) + { 0, { 0, 0, 0}}, // ( 45, 66) + { 0, { 0, 0, 0}}, // ( 46, 66) + { 0, { 0, 0, 0}}, // ( 47, 66) + { 0, { 0, 0, 0}}, // ( 48, 66) + { 0, { 0, 0, 0}}, // ( 49, 66) + { 0, { 0, 0, 0}}, // ( 50, 66) + { 0, { 0, 0, 0}}, // ( 51, 66) + { 0, { 0, 0, 0}}, // ( 52, 66) + { 0, { 0, 0, 0}}, // ( 53, 66) + { 0, { 0, 0, 0}}, // ( 54, 66) + { 0, { 0, 0, 0}}, // ( 55, 66) + { 0, { 0, 0, 0}}, // ( 56, 66) + { 0, { 0, 0, 0}}, // ( 57, 66) + { 0, { 0, 0, 0}}, // ( 58, 66) + { 0, { 0, 0, 0}}, // ( 59, 66) + { 0, { 0, 0, 0}}, // ( 60, 66) + { 0, { 0, 0, 0}}, // ( 61, 66) + { 0, { 0, 0, 0}}, // ( 62, 66) + { 0, { 0, 0, 0}}, // ( 63, 66) + { 0, { 0, 0, 0}}, // ( 64, 66) + { 0, { 0, 0, 0}}, // ( 65, 66) + { 0, { 0, 0, 0}}, // ( 66, 66) + { 0, { 0, 0, 0}}, // ( 67, 66) + { 0, { 0, 0, 0}}, // ( 68, 66) + { 0, { 0, 0, 0}}, // ( 69, 66) + { 0, { 0, 0, 0}}, // ( 70, 66) + { 0, { 0, 0, 0}}, // ( 71, 66) + { 0, { 0, 0, 0}}, // ( 72, 66) + { 0, { 0, 0, 0}}, // ( 73, 66) + { 0, { 0, 0, 0}}, // ( 74, 66) + { 0, { 0, 0, 0}}, // ( 75, 66) + { 0, { 0, 0, 0}}, // ( 76, 66) + { 0, { 0, 0, 0}}, // ( 77, 66) + { 0, { 0, 0, 0}}, // ( 78, 66) + { 0, { 0, 0, 0}}, // ( 79, 66) + { 0, { 0, 0, 0}}, // ( 80, 66) + { 0, { 0, 0, 0}}, // ( 81, 66) + { 0, { 0, 0, 0}}, // ( 82, 66) + { 0, { 0, 0, 0}}, // ( 83, 66) + { 0, { 0, 0, 0}}, // ( 84, 66) + { 0, { 0, 0, 0}}, // ( 85, 66) + { 0, { 0, 0, 0}}, // ( 86, 66) + { 0, { 0, 0, 0}}, // ( 87, 66) + { 0, { 0, 0, 0}}, // ( 88, 66) + { 0, { 0, 0, 0}}, // ( 89, 66) + { 0, { 0, 0, 0}}, // ( 90, 66) + { 0, { 0, 0, 0}}, // ( 91, 66) + { 0, { 0, 0, 0}}, // ( 92, 66) + { 0, { 0, 0, 0}}, // ( 93, 66) + { 0, { 0, 0, 0}}, // ( 94, 66) + { 0, { 0, 0, 0}}, // ( 95, 66) + { 0, { 0, 0, 0}}, // ( 96, 66) + { 0, { 0, 0, 0}}, // ( 97, 66) + { 0, { 0, 0, 0}}, // ( 98, 66) + { 0, { 0, 0, 0}}, // ( 99, 66) + { 0, { 0, 0, 0}}, // (100, 66) + { 0, { 0, 0, 0}}, // (101, 66) + { 0, { 0, 0, 0}}, // (102, 66) + { 0, { 0, 0, 0}}, // (103, 66) + { 0, { 0, 0, 0}}, // (104, 66) + { 0, { 0, 0, 0}}, // (105, 66) + { 0, { 0, 0, 0}}, // (106, 66) + { 0, { 0, 0, 0}}, // (107, 66) + { 0, { 0, 0, 0}}, // (108, 66) + { 0, { 0, 0, 0}}, // (109, 66) + { 0, { 0, 0, 0}}, // (110, 66) + { 0, { 0, 0, 0}}, // (111, 66) + { 0, { 0, 0, 0}}, // (112, 66) + { 0, { 0, 0, 0}}, // (113, 66) + { 0, { 0, 0, 0}}, // (114, 66) + { 0, { 0, 0, 0}}, // (115, 66) + { 0, { 0, 0, 0}}, // (116, 66) + { 0, { 0, 0, 0}}, // (117, 66) + { 0, { 0, 0, 0}}, // (118, 66) + { 0, { 0, 0, 0}}, // (119, 66) + { 0, { 0, 0, 0}}, // (120, 66) + { 0, { 0, 0, 0}}, // (121, 66) + { 0, { 0, 0, 0}}, // (122, 66) + { 0, { 0, 0, 0}}, // (123, 66) + { 0, { 0, 0, 0}}, // (124, 66) + { 0, { 0, 0, 0}}, // (125, 66) + { 0, { 0, 0, 0}}, // (126, 66) + { 0, { 0, 0, 0}}, // (127, 66) + { 0, { 0, 0, 0}}, // (128, 66) + { 0, { 0, 0, 0}}, // (129, 66) + { 0, { 0, 0, 0}}, // (130, 66) + { 0, { 0, 0, 0}}, // (131, 66) + { 0, { 0, 0, 0}}, // (132, 66) + { 0, { 0, 0, 0}}, // (133, 66) + { 0, { 0, 0, 0}}, // (134, 66) + { 0, { 0, 0, 0}}, // (135, 66) + { 0, { 0, 0, 0}}, // (136, 66) + { 0, { 0, 0, 0}}, // (137, 66) + { 0, { 0, 0, 0}}, // (138, 66) + { 0, { 0, 0, 0}}, // (139, 66) + { 0, { 0, 0, 0}}, // (140, 66) + { 0, { 0, 0, 0}}, // (141, 66) + { 0, { 0, 0, 0}}, // (142, 66) + { 0, { 0, 0, 0}}, // (143, 66) + { 0, { 0, 0, 0}}, // (144, 66) + { 0, { 0, 0, 0}}, // (145, 66) + { 0, { 0, 0, 0}}, // (146, 66) + { 0, { 0, 0, 0}}, // (147, 66) + { 0, { 0, 0, 0}}, // (148, 66) + { 0, { 0, 0, 0}}, // (149, 66) + { 0, { 0, 0, 0}}, // (150, 66) + { 0, { 0, 0, 0}}, // (151, 66) + { 0, { 0, 0, 0}}, // (152, 66) + { 0, { 0, 0, 0}}, // (153, 66) + { 0, { 0, 0, 0}}, // (154, 66) + { 0, { 0, 0, 0}}, // (155, 66) + { 0, { 0, 0, 0}}, // (156, 66) + { 0, { 0, 0, 0}}, // (157, 66) + { 0, { 0, 0, 0}}, // (158, 66) + { 0, { 0, 0, 0}}, // (159, 66) + { 0, { 0, 0, 0}}, // (160, 66) + { 0, { 0, 0, 0}}, // (161, 66) + { 0, { 0, 0, 0}}, // (162, 66) + { 0, { 0, 0, 0}}, // (163, 66) + { 0, { 0, 0, 0}}, // (164, 66) + { 0, { 0, 0, 0}}, // (165, 66) + { 0, { 0, 0, 0}}, // (166, 66) + { 0, { 0, 0, 0}}, // (167, 66) + { 0, { 0, 0, 0}}, // (168, 66) + { 0, { 0, 0, 0}}, // (169, 66) + { 0, { 0, 0, 0}}, // (170, 66) + { 0, { 0, 0, 0}}, // (171, 66) + { 0, { 0, 0, 0}}, // (172, 66) + { 0, { 0, 0, 0}}, // (173, 66) + { 23, { 0, 0, 0}}, // (174, 66) + {128, { 0, 0, 0}}, // (175, 66) + {128, { 0, 0, 0}}, // (176, 66) + {128, { 0, 0, 0}}, // (177, 66) + {128, { 0, 0, 0}}, // (178, 66) + {128, { 0, 0, 0}}, // (179, 66) + {128, { 0, 0, 0}}, // ( 0, 67) + {128, { 0, 0, 0}}, // ( 1, 67) + {128, { 0, 0, 0}}, // ( 2, 67) + {128, { 0, 0, 0}}, // ( 3, 67) + {117, { 0, 0, 0}}, // ( 4, 67) + { 1, { 0, 0, 0}}, // ( 5, 67) + { 0, { 0, 0, 0}}, // ( 6, 67) + { 0, { 0, 0, 0}}, // ( 7, 67) + { 0, { 0, 0, 0}}, // ( 8, 67) + { 0, { 0, 0, 0}}, // ( 9, 67) + { 0, { 0, 0, 0}}, // ( 10, 67) + { 0, { 0, 0, 0}}, // ( 11, 67) + { 0, { 0, 0, 0}}, // ( 12, 67) + { 0, { 0, 0, 0}}, // ( 13, 67) + { 0, { 0, 0, 0}}, // ( 14, 67) + { 0, { 0, 0, 0}}, // ( 15, 67) + { 0, { 0, 0, 0}}, // ( 16, 67) + { 0, { 0, 0, 0}}, // ( 17, 67) + { 0, { 0, 0, 0}}, // ( 18, 67) + { 0, { 0, 0, 0}}, // ( 19, 67) + { 0, { 0, 0, 0}}, // ( 20, 67) + { 0, { 0, 0, 0}}, // ( 21, 67) + { 0, { 0, 0, 0}}, // ( 22, 67) + { 0, { 0, 0, 0}}, // ( 23, 67) + { 0, { 0, 0, 0}}, // ( 24, 67) + { 0, { 0, 0, 0}}, // ( 25, 67) + { 0, { 0, 0, 0}}, // ( 26, 67) + { 0, { 0, 0, 0}}, // ( 27, 67) + { 0, { 0, 0, 0}}, // ( 28, 67) + { 0, { 0, 0, 0}}, // ( 29, 67) + { 0, { 0, 0, 0}}, // ( 30, 67) + { 0, { 0, 0, 0}}, // ( 31, 67) + { 0, { 0, 0, 0}}, // ( 32, 67) + { 0, { 0, 0, 0}}, // ( 33, 67) + { 0, { 0, 0, 0}}, // ( 34, 67) + { 0, { 0, 0, 0}}, // ( 35, 67) + { 0, { 0, 0, 0}}, // ( 36, 67) + { 0, { 0, 0, 0}}, // ( 37, 67) + { 0, { 0, 0, 0}}, // ( 38, 67) + { 0, { 0, 0, 0}}, // ( 39, 67) + { 0, { 0, 0, 0}}, // ( 40, 67) + { 0, { 0, 0, 0}}, // ( 41, 67) + { 0, { 0, 0, 0}}, // ( 42, 67) + { 0, { 0, 0, 0}}, // ( 43, 67) + { 0, { 0, 0, 0}}, // ( 44, 67) + { 0, { 0, 0, 0}}, // ( 45, 67) + { 0, { 0, 0, 0}}, // ( 46, 67) + { 0, { 0, 0, 0}}, // ( 47, 67) + { 0, { 0, 0, 0}}, // ( 48, 67) + { 0, { 0, 0, 0}}, // ( 49, 67) + { 0, { 0, 0, 0}}, // ( 50, 67) + { 0, { 0, 0, 0}}, // ( 51, 67) + { 0, { 0, 0, 0}}, // ( 52, 67) + { 0, { 0, 0, 0}}, // ( 53, 67) + { 0, { 0, 0, 0}}, // ( 54, 67) + { 0, { 0, 0, 0}}, // ( 55, 67) + { 0, { 0, 0, 0}}, // ( 56, 67) + { 0, { 0, 0, 0}}, // ( 57, 67) + { 0, { 0, 0, 0}}, // ( 58, 67) + { 0, { 0, 0, 0}}, // ( 59, 67) + { 0, { 0, 0, 0}}, // ( 60, 67) + { 0, { 0, 0, 0}}, // ( 61, 67) + { 0, { 0, 0, 0}}, // ( 62, 67) + { 0, { 0, 0, 0}}, // ( 63, 67) + { 0, { 0, 0, 0}}, // ( 64, 67) + { 0, { 0, 0, 0}}, // ( 65, 67) + { 0, { 0, 0, 0}}, // ( 66, 67) + { 0, { 0, 0, 0}}, // ( 67, 67) + { 0, { 0, 0, 0}}, // ( 68, 67) + { 0, { 0, 0, 0}}, // ( 69, 67) + { 0, { 0, 0, 0}}, // ( 70, 67) + { 0, { 0, 0, 0}}, // ( 71, 67) + { 0, { 0, 0, 0}}, // ( 72, 67) + { 0, { 0, 0, 0}}, // ( 73, 67) + { 0, { 0, 0, 0}}, // ( 74, 67) + { 0, { 0, 0, 0}}, // ( 75, 67) + { 0, { 0, 0, 0}}, // ( 76, 67) + { 0, { 0, 0, 0}}, // ( 77, 67) + { 0, { 0, 0, 0}}, // ( 78, 67) + { 0, { 0, 0, 0}}, // ( 79, 67) + { 0, { 0, 0, 0}}, // ( 80, 67) + { 0, { 0, 0, 0}}, // ( 81, 67) + { 0, { 0, 0, 0}}, // ( 82, 67) + { 0, { 0, 0, 0}}, // ( 83, 67) + { 0, { 0, 0, 0}}, // ( 84, 67) + { 0, { 0, 0, 0}}, // ( 85, 67) + { 0, { 0, 0, 0}}, // ( 86, 67) + { 0, { 0, 0, 0}}, // ( 87, 67) + { 0, { 0, 0, 0}}, // ( 88, 67) + { 0, { 0, 0, 0}}, // ( 89, 67) + { 0, { 0, 0, 0}}, // ( 90, 67) + { 0, { 0, 0, 0}}, // ( 91, 67) + { 0, { 0, 0, 0}}, // ( 92, 67) + { 0, { 0, 0, 0}}, // ( 93, 67) + { 0, { 0, 0, 0}}, // ( 94, 67) + { 0, { 0, 0, 0}}, // ( 95, 67) + { 0, { 0, 0, 0}}, // ( 96, 67) + { 0, { 0, 0, 0}}, // ( 97, 67) + { 0, { 0, 0, 0}}, // ( 98, 67) + { 0, { 0, 0, 0}}, // ( 99, 67) + { 0, { 0, 0, 0}}, // (100, 67) + { 0, { 0, 0, 0}}, // (101, 67) + { 0, { 0, 0, 0}}, // (102, 67) + { 0, { 0, 0, 0}}, // (103, 67) + { 0, { 0, 0, 0}}, // (104, 67) + { 0, { 0, 0, 0}}, // (105, 67) + { 0, { 0, 0, 0}}, // (106, 67) + { 0, { 0, 0, 0}}, // (107, 67) + { 0, { 0, 0, 0}}, // (108, 67) + { 0, { 0, 0, 0}}, // (109, 67) + { 0, { 0, 0, 0}}, // (110, 67) + { 0, { 0, 0, 0}}, // (111, 67) + { 0, { 0, 0, 0}}, // (112, 67) + { 0, { 0, 0, 0}}, // (113, 67) + { 0, { 0, 0, 0}}, // (114, 67) + { 0, { 0, 0, 0}}, // (115, 67) + { 0, { 0, 0, 0}}, // (116, 67) + { 0, { 0, 0, 0}}, // (117, 67) + { 0, { 0, 0, 0}}, // (118, 67) + { 0, { 0, 0, 0}}, // (119, 67) + { 0, { 0, 0, 0}}, // (120, 67) + { 0, { 0, 0, 0}}, // (121, 67) + { 0, { 0, 0, 0}}, // (122, 67) + { 0, { 0, 0, 0}}, // (123, 67) + { 0, { 0, 0, 0}}, // (124, 67) + { 0, { 0, 0, 0}}, // (125, 67) + { 0, { 0, 0, 0}}, // (126, 67) + { 0, { 0, 0, 0}}, // (127, 67) + { 0, { 0, 0, 0}}, // (128, 67) + { 0, { 0, 0, 0}}, // (129, 67) + { 0, { 0, 0, 0}}, // (130, 67) + { 0, { 0, 0, 0}}, // (131, 67) + { 0, { 0, 0, 0}}, // (132, 67) + { 0, { 0, 0, 0}}, // (133, 67) + { 0, { 0, 0, 0}}, // (134, 67) + { 0, { 0, 0, 0}}, // (135, 67) + { 0, { 0, 0, 0}}, // (136, 67) + { 0, { 0, 0, 0}}, // (137, 67) + { 0, { 0, 0, 0}}, // (138, 67) + { 0, { 0, 0, 0}}, // (139, 67) + { 0, { 0, 0, 0}}, // (140, 67) + { 0, { 0, 0, 0}}, // (141, 67) + { 0, { 0, 0, 0}}, // (142, 67) + { 0, { 0, 0, 0}}, // (143, 67) + { 0, { 0, 0, 0}}, // (144, 67) + { 0, { 0, 0, 0}}, // (145, 67) + { 0, { 0, 0, 0}}, // (146, 67) + { 0, { 0, 0, 0}}, // (147, 67) + { 0, { 0, 0, 0}}, // (148, 67) + { 0, { 0, 0, 0}}, // (149, 67) + { 0, { 0, 0, 0}}, // (150, 67) + { 0, { 0, 0, 0}}, // (151, 67) + { 0, { 0, 0, 0}}, // (152, 67) + { 0, { 0, 0, 0}}, // (153, 67) + { 0, { 0, 0, 0}}, // (154, 67) + { 0, { 0, 0, 0}}, // (155, 67) + { 0, { 0, 0, 0}}, // (156, 67) + { 0, { 0, 0, 0}}, // (157, 67) + { 0, { 0, 0, 0}}, // (158, 67) + { 0, { 0, 0, 0}}, // (159, 67) + { 0, { 0, 0, 0}}, // (160, 67) + { 0, { 0, 0, 0}}, // (161, 67) + { 0, { 0, 0, 0}}, // (162, 67) + { 0, { 0, 0, 0}}, // (163, 67) + { 0, { 0, 0, 0}}, // (164, 67) + { 0, { 0, 0, 0}}, // (165, 67) + { 0, { 0, 0, 0}}, // (166, 67) + { 0, { 0, 0, 0}}, // (167, 67) + { 0, { 0, 0, 0}}, // (168, 67) + { 0, { 0, 0, 0}}, // (169, 67) + { 0, { 0, 0, 0}}, // (170, 67) + { 0, { 0, 0, 0}}, // (171, 67) + { 0, { 0, 0, 0}}, // (172, 67) + { 0, { 0, 0, 0}}, // (173, 67) + { 1, { 0, 0, 0}}, // (174, 67) + {115, { 0, 0, 0}}, // (175, 67) + {128, { 0, 0, 0}}, // (176, 67) + {128, { 0, 0, 0}}, // (177, 67) + {128, { 0, 0, 0}}, // (178, 67) + {128, { 0, 0, 0}}, // (179, 67) + {128, { 0, 0, 0}}, // ( 0, 68) + {128, { 0, 0, 0}}, // ( 1, 68) + {128, { 0, 0, 0}}, // ( 2, 68) + {128, { 0, 0, 0}}, // ( 3, 68) + { 84, { 0, 0, 0}}, // ( 4, 68) + { 0, { 0, 0, 0}}, // ( 5, 68) + { 0, { 0, 0, 0}}, // ( 6, 68) + { 0, { 0, 0, 0}}, // ( 7, 68) + { 0, { 0, 0, 0}}, // ( 8, 68) + { 0, { 0, 0, 0}}, // ( 9, 68) + { 0, { 0, 0, 0}}, // ( 10, 68) + { 0, { 0, 0, 0}}, // ( 11, 68) + { 0, { 0, 0, 0}}, // ( 12, 68) + { 0, { 0, 0, 0}}, // ( 13, 68) + { 0, { 0, 0, 0}}, // ( 14, 68) + { 0, { 0, 0, 0}}, // ( 15, 68) + { 0, { 0, 0, 0}}, // ( 16, 68) + { 0, { 0, 0, 0}}, // ( 17, 68) + { 0, { 0, 0, 0}}, // ( 18, 68) + { 0, { 0, 0, 0}}, // ( 19, 68) + { 0, { 0, 0, 0}}, // ( 20, 68) + { 0, { 0, 0, 0}}, // ( 21, 68) + { 0, { 0, 0, 0}}, // ( 22, 68) + { 0, { 0, 0, 0}}, // ( 23, 68) + { 0, { 0, 0, 0}}, // ( 24, 68) + { 0, { 0, 0, 0}}, // ( 25, 68) + { 0, { 0, 0, 0}}, // ( 26, 68) + { 0, { 0, 0, 0}}, // ( 27, 68) + { 0, { 0, 0, 0}}, // ( 28, 68) + { 0, { 0, 0, 0}}, // ( 29, 68) + { 0, { 0, 0, 0}}, // ( 30, 68) + { 0, { 0, 0, 0}}, // ( 31, 68) + { 0, { 0, 0, 0}}, // ( 32, 68) + { 0, { 0, 0, 0}}, // ( 33, 68) + { 0, { 0, 0, 0}}, // ( 34, 68) + { 0, { 0, 0, 0}}, // ( 35, 68) + { 0, { 0, 0, 0}}, // ( 36, 68) + { 0, { 0, 0, 0}}, // ( 37, 68) + { 0, { 0, 0, 0}}, // ( 38, 68) + { 0, { 0, 0, 0}}, // ( 39, 68) + { 0, { 0, 0, 0}}, // ( 40, 68) + { 0, { 0, 0, 0}}, // ( 41, 68) + { 0, { 0, 0, 0}}, // ( 42, 68) + { 0, { 0, 0, 0}}, // ( 43, 68) + { 0, { 0, 0, 0}}, // ( 44, 68) + { 0, { 0, 0, 0}}, // ( 45, 68) + { 0, { 0, 0, 0}}, // ( 46, 68) + { 0, { 0, 0, 0}}, // ( 47, 68) + { 0, { 0, 0, 0}}, // ( 48, 68) + { 0, { 0, 0, 0}}, // ( 49, 68) + { 0, { 0, 0, 0}}, // ( 50, 68) + { 0, { 0, 0, 0}}, // ( 51, 68) + { 0, { 0, 0, 0}}, // ( 52, 68) + { 0, { 0, 0, 0}}, // ( 53, 68) + { 0, { 0, 0, 0}}, // ( 54, 68) + { 0, { 0, 0, 0}}, // ( 55, 68) + { 0, { 0, 0, 0}}, // ( 56, 68) + { 0, { 0, 0, 0}}, // ( 57, 68) + { 0, { 0, 0, 0}}, // ( 58, 68) + { 0, { 0, 0, 0}}, // ( 59, 68) + { 0, { 0, 0, 0}}, // ( 60, 68) + { 0, { 0, 0, 0}}, // ( 61, 68) + { 0, { 0, 0, 0}}, // ( 62, 68) + { 0, { 0, 0, 0}}, // ( 63, 68) + { 0, { 0, 0, 0}}, // ( 64, 68) + { 0, { 0, 0, 0}}, // ( 65, 68) + { 0, { 0, 0, 0}}, // ( 66, 68) + { 0, { 0, 0, 0}}, // ( 67, 68) + { 0, { 0, 0, 0}}, // ( 68, 68) + { 0, { 0, 0, 0}}, // ( 69, 68) + { 0, { 0, 0, 0}}, // ( 70, 68) + { 0, { 0, 0, 0}}, // ( 71, 68) + { 0, { 0, 0, 0}}, // ( 72, 68) + { 0, { 0, 0, 0}}, // ( 73, 68) + { 0, { 0, 0, 0}}, // ( 74, 68) + { 0, { 0, 0, 0}}, // ( 75, 68) + { 0, { 0, 0, 0}}, // ( 76, 68) + { 0, { 0, 0, 0}}, // ( 77, 68) + { 0, { 0, 0, 0}}, // ( 78, 68) + { 0, { 0, 0, 0}}, // ( 79, 68) + { 0, { 0, 0, 0}}, // ( 80, 68) + { 0, { 0, 0, 0}}, // ( 81, 68) + { 0, { 0, 0, 0}}, // ( 82, 68) + { 0, { 0, 0, 0}}, // ( 83, 68) + { 0, { 0, 0, 0}}, // ( 84, 68) + { 0, { 0, 0, 0}}, // ( 85, 68) + { 0, { 0, 0, 0}}, // ( 86, 68) + { 0, { 0, 0, 0}}, // ( 87, 68) + { 0, { 0, 0, 0}}, // ( 88, 68) + { 0, { 0, 0, 0}}, // ( 89, 68) + { 0, { 0, 0, 0}}, // ( 90, 68) + { 0, { 0, 0, 0}}, // ( 91, 68) + { 0, { 0, 0, 0}}, // ( 92, 68) + { 0, { 0, 0, 0}}, // ( 93, 68) + { 0, { 0, 0, 0}}, // ( 94, 68) + { 0, { 0, 0, 0}}, // ( 95, 68) + { 0, { 0, 0, 0}}, // ( 96, 68) + { 0, { 0, 0, 0}}, // ( 97, 68) + { 0, { 0, 0, 0}}, // ( 98, 68) + { 0, { 0, 0, 0}}, // ( 99, 68) + { 0, { 0, 0, 0}}, // (100, 68) + { 0, { 0, 0, 0}}, // (101, 68) + { 0, { 0, 0, 0}}, // (102, 68) + { 0, { 0, 0, 0}}, // (103, 68) + { 0, { 0, 0, 0}}, // (104, 68) + { 0, { 0, 0, 0}}, // (105, 68) + { 0, { 0, 0, 0}}, // (106, 68) + { 0, { 0, 0, 0}}, // (107, 68) + { 0, { 0, 0, 0}}, // (108, 68) + { 0, { 0, 0, 0}}, // (109, 68) + { 0, { 0, 0, 0}}, // (110, 68) + { 0, { 0, 0, 0}}, // (111, 68) + { 0, { 0, 0, 0}}, // (112, 68) + { 0, { 0, 0, 0}}, // (113, 68) + { 0, { 0, 0, 0}}, // (114, 68) + { 0, { 0, 0, 0}}, // (115, 68) + { 0, { 0, 0, 0}}, // (116, 68) + { 0, { 0, 0, 0}}, // (117, 68) + { 0, { 0, 0, 0}}, // (118, 68) + { 0, { 0, 0, 0}}, // (119, 68) + { 0, { 0, 0, 0}}, // (120, 68) + { 0, { 0, 0, 0}}, // (121, 68) + { 0, { 0, 0, 0}}, // (122, 68) + { 0, { 0, 0, 0}}, // (123, 68) + { 0, { 0, 0, 0}}, // (124, 68) + { 0, { 0, 0, 0}}, // (125, 68) + { 0, { 0, 0, 0}}, // (126, 68) + { 0, { 0, 0, 0}}, // (127, 68) + { 0, { 0, 0, 0}}, // (128, 68) + { 0, { 0, 0, 0}}, // (129, 68) + { 0, { 0, 0, 0}}, // (130, 68) + { 0, { 0, 0, 0}}, // (131, 68) + { 0, { 0, 0, 0}}, // (132, 68) + { 0, { 0, 0, 0}}, // (133, 68) + { 0, { 0, 0, 0}}, // (134, 68) + { 0, { 0, 0, 0}}, // (135, 68) + { 0, { 0, 0, 0}}, // (136, 68) + { 0, { 0, 0, 0}}, // (137, 68) + { 0, { 0, 0, 0}}, // (138, 68) + { 0, { 0, 0, 0}}, // (139, 68) + { 0, { 0, 0, 0}}, // (140, 68) + { 0, { 0, 0, 0}}, // (141, 68) + { 0, { 0, 0, 0}}, // (142, 68) + { 0, { 0, 0, 0}}, // (143, 68) + { 0, { 0, 0, 0}}, // (144, 68) + { 0, { 0, 0, 0}}, // (145, 68) + { 0, { 0, 0, 0}}, // (146, 68) + { 0, { 0, 0, 0}}, // (147, 68) + { 0, { 0, 0, 0}}, // (148, 68) + { 0, { 0, 0, 0}}, // (149, 68) + { 0, { 0, 0, 0}}, // (150, 68) + { 0, { 0, 0, 0}}, // (151, 68) + { 0, { 0, 0, 0}}, // (152, 68) + { 0, { 0, 0, 0}}, // (153, 68) + { 0, { 0, 0, 0}}, // (154, 68) + { 0, { 0, 0, 0}}, // (155, 68) + { 0, { 0, 0, 0}}, // (156, 68) + { 0, { 0, 0, 0}}, // (157, 68) + { 0, { 0, 0, 0}}, // (158, 68) + { 0, { 0, 0, 0}}, // (159, 68) + { 0, { 0, 0, 0}}, // (160, 68) + { 0, { 0, 0, 0}}, // (161, 68) + { 0, { 0, 0, 0}}, // (162, 68) + { 0, { 0, 0, 0}}, // (163, 68) + { 0, { 0, 0, 0}}, // (164, 68) + { 0, { 0, 0, 0}}, // (165, 68) + { 0, { 0, 0, 0}}, // (166, 68) + { 0, { 0, 0, 0}}, // (167, 68) + { 0, { 0, 0, 0}}, // (168, 68) + { 0, { 0, 0, 0}}, // (169, 68) + { 0, { 0, 0, 0}}, // (170, 68) + { 0, { 0, 0, 0}}, // (171, 68) + { 0, { 0, 0, 0}}, // (172, 68) + { 0, { 0, 0, 0}}, // (173, 68) + { 0, { 0, 0, 0}}, // (174, 68) + { 83, { 0, 0, 0}}, // (175, 68) + {128, { 0, 0, 0}}, // (176, 68) + {128, { 0, 0, 0}}, // (177, 68) + {128, { 0, 0, 0}}, // (178, 68) + {128, { 0, 0, 0}}, // (179, 68) + {128, { 0, 0, 0}}, // ( 0, 69) + {128, { 0, 0, 0}}, // ( 1, 69) + {128, { 0, 0, 0}}, // ( 2, 69) + {128, { 0, 0, 0}}, // ( 3, 69) + { 52, { 0, 0, 0}}, // ( 4, 69) + { 0, { 0, 0, 0}}, // ( 5, 69) + { 0, { 0, 0, 0}}, // ( 6, 69) + { 0, { 0, 0, 0}}, // ( 7, 69) + { 0, { 0, 0, 0}}, // ( 8, 69) + { 0, { 0, 0, 0}}, // ( 9, 69) + { 0, { 0, 0, 0}}, // ( 10, 69) + { 0, { 0, 0, 0}}, // ( 11, 69) + { 0, { 0, 0, 0}}, // ( 12, 69) + { 0, { 0, 0, 0}}, // ( 13, 69) + { 0, { 0, 0, 0}}, // ( 14, 69) + { 0, { 0, 0, 0}}, // ( 15, 69) + { 0, { 0, 0, 0}}, // ( 16, 69) + { 0, { 0, 0, 0}}, // ( 17, 69) + { 0, { 0, 0, 0}}, // ( 18, 69) + { 0, { 0, 0, 0}}, // ( 19, 69) + { 0, { 0, 0, 0}}, // ( 20, 69) + { 0, { 0, 0, 0}}, // ( 21, 69) + { 0, { 0, 0, 0}}, // ( 22, 69) + { 0, { 0, 0, 0}}, // ( 23, 69) + { 0, { 0, 0, 0}}, // ( 24, 69) + { 0, { 0, 0, 0}}, // ( 25, 69) + { 0, { 0, 0, 0}}, // ( 26, 69) + { 0, { 0, 0, 0}}, // ( 27, 69) + { 0, { 0, 0, 0}}, // ( 28, 69) + { 0, { 0, 0, 0}}, // ( 29, 69) + { 0, { 0, 0, 0}}, // ( 30, 69) + { 0, { 0, 0, 0}}, // ( 31, 69) + { 0, { 0, 0, 0}}, // ( 32, 69) + { 0, { 0, 0, 0}}, // ( 33, 69) + { 0, { 0, 0, 0}}, // ( 34, 69) + { 0, { 0, 0, 0}}, // ( 35, 69) + { 0, { 0, 0, 0}}, // ( 36, 69) + { 0, { 0, 0, 0}}, // ( 37, 69) + { 0, { 0, 0, 0}}, // ( 38, 69) + { 0, { 0, 0, 0}}, // ( 39, 69) + { 0, { 0, 0, 0}}, // ( 40, 69) + { 0, { 0, 0, 0}}, // ( 41, 69) + { 0, { 0, 0, 0}}, // ( 42, 69) + { 0, { 0, 0, 0}}, // ( 43, 69) + { 0, { 0, 0, 0}}, // ( 44, 69) + { 0, { 0, 0, 0}}, // ( 45, 69) + { 0, { 0, 0, 0}}, // ( 46, 69) + { 0, { 0, 0, 0}}, // ( 47, 69) + { 0, { 0, 0, 0}}, // ( 48, 69) + { 0, { 0, 0, 0}}, // ( 49, 69) + { 0, { 0, 0, 0}}, // ( 50, 69) + { 0, { 0, 0, 0}}, // ( 51, 69) + { 0, { 0, 0, 0}}, // ( 52, 69) + { 0, { 0, 0, 0}}, // ( 53, 69) + { 0, { 0, 0, 0}}, // ( 54, 69) + { 0, { 0, 0, 0}}, // ( 55, 69) + { 0, { 0, 0, 0}}, // ( 56, 69) + { 0, { 0, 0, 0}}, // ( 57, 69) + { 0, { 0, 0, 0}}, // ( 58, 69) + { 0, { 0, 0, 0}}, // ( 59, 69) + { 0, { 0, 0, 0}}, // ( 60, 69) + { 0, { 0, 0, 0}}, // ( 61, 69) + { 0, { 0, 0, 0}}, // ( 62, 69) + { 0, { 0, 0, 0}}, // ( 63, 69) + { 0, { 0, 0, 0}}, // ( 64, 69) + { 0, { 0, 0, 0}}, // ( 65, 69) + { 0, { 0, 0, 0}}, // ( 66, 69) + { 0, { 0, 0, 0}}, // ( 67, 69) + { 0, { 0, 0, 0}}, // ( 68, 69) + { 0, { 0, 0, 0}}, // ( 69, 69) + { 0, { 0, 0, 0}}, // ( 70, 69) + { 0, { 0, 0, 0}}, // ( 71, 69) + { 0, { 0, 0, 0}}, // ( 72, 69) + { 0, { 0, 0, 0}}, // ( 73, 69) + { 0, { 0, 0, 0}}, // ( 74, 69) + { 0, { 0, 0, 0}}, // ( 75, 69) + { 0, { 0, 0, 0}}, // ( 76, 69) + { 0, { 0, 0, 0}}, // ( 77, 69) + { 0, { 0, 0, 0}}, // ( 78, 69) + { 0, { 0, 0, 0}}, // ( 79, 69) + { 0, { 0, 0, 0}}, // ( 80, 69) + { 0, { 0, 0, 0}}, // ( 81, 69) + { 0, { 0, 0, 0}}, // ( 82, 69) + { 0, { 0, 0, 0}}, // ( 83, 69) + { 0, { 0, 0, 0}}, // ( 84, 69) + { 0, { 0, 0, 0}}, // ( 85, 69) + { 0, { 0, 0, 0}}, // ( 86, 69) + { 0, { 0, 0, 0}}, // ( 87, 69) + { 0, { 0, 0, 0}}, // ( 88, 69) + { 0, { 0, 0, 0}}, // ( 89, 69) + { 0, { 0, 0, 0}}, // ( 90, 69) + { 0, { 0, 0, 0}}, // ( 91, 69) + { 0, { 0, 0, 0}}, // ( 92, 69) + { 0, { 0, 0, 0}}, // ( 93, 69) + { 0, { 0, 0, 0}}, // ( 94, 69) + { 0, { 0, 0, 0}}, // ( 95, 69) + { 0, { 0, 0, 0}}, // ( 96, 69) + { 0, { 0, 0, 0}}, // ( 97, 69) + { 0, { 0, 0, 0}}, // ( 98, 69) + { 0, { 0, 0, 0}}, // ( 99, 69) + { 0, { 0, 0, 0}}, // (100, 69) + { 0, { 0, 0, 0}}, // (101, 69) + { 0, { 0, 0, 0}}, // (102, 69) + { 0, { 0, 0, 0}}, // (103, 69) + { 0, { 0, 0, 0}}, // (104, 69) + { 0, { 0, 0, 0}}, // (105, 69) + { 0, { 0, 0, 0}}, // (106, 69) + { 0, { 0, 0, 0}}, // (107, 69) + { 0, { 0, 0, 0}}, // (108, 69) + { 0, { 0, 0, 0}}, // (109, 69) + { 0, { 0, 0, 0}}, // (110, 69) + { 0, { 0, 0, 0}}, // (111, 69) + { 0, { 0, 0, 0}}, // (112, 69) + { 0, { 0, 0, 0}}, // (113, 69) + { 0, { 0, 0, 0}}, // (114, 69) + { 0, { 0, 0, 0}}, // (115, 69) + { 0, { 0, 0, 0}}, // (116, 69) + { 0, { 0, 0, 0}}, // (117, 69) + { 0, { 0, 0, 0}}, // (118, 69) + { 0, { 0, 0, 0}}, // (119, 69) + { 0, { 0, 0, 0}}, // (120, 69) + { 0, { 0, 0, 0}}, // (121, 69) + { 0, { 0, 0, 0}}, // (122, 69) + { 0, { 0, 0, 0}}, // (123, 69) + { 0, { 0, 0, 0}}, // (124, 69) + { 0, { 0, 0, 0}}, // (125, 69) + { 0, { 0, 0, 0}}, // (126, 69) + { 0, { 0, 0, 0}}, // (127, 69) + { 0, { 0, 0, 0}}, // (128, 69) + { 0, { 0, 0, 0}}, // (129, 69) + { 0, { 0, 0, 0}}, // (130, 69) + { 0, { 0, 0, 0}}, // (131, 69) + { 0, { 0, 0, 0}}, // (132, 69) + { 0, { 0, 0, 0}}, // (133, 69) + { 0, { 0, 0, 0}}, // (134, 69) + { 0, { 0, 0, 0}}, // (135, 69) + { 0, { 0, 0, 0}}, // (136, 69) + { 0, { 0, 0, 0}}, // (137, 69) + { 0, { 0, 0, 0}}, // (138, 69) + { 0, { 0, 0, 0}}, // (139, 69) + { 0, { 0, 0, 0}}, // (140, 69) + { 0, { 0, 0, 0}}, // (141, 69) + { 0, { 0, 0, 0}}, // (142, 69) + { 0, { 0, 0, 0}}, // (143, 69) + { 0, { 0, 0, 0}}, // (144, 69) + { 0, { 0, 0, 0}}, // (145, 69) + { 0, { 0, 0, 0}}, // (146, 69) + { 0, { 0, 0, 0}}, // (147, 69) + { 0, { 0, 0, 0}}, // (148, 69) + { 0, { 0, 0, 0}}, // (149, 69) + { 0, { 0, 0, 0}}, // (150, 69) + { 0, { 0, 0, 0}}, // (151, 69) + { 0, { 0, 0, 0}}, // (152, 69) + { 0, { 0, 0, 0}}, // (153, 69) + { 0, { 0, 0, 0}}, // (154, 69) + { 0, { 0, 0, 0}}, // (155, 69) + { 0, { 0, 0, 0}}, // (156, 69) + { 0, { 0, 0, 0}}, // (157, 69) + { 0, { 0, 0, 0}}, // (158, 69) + { 0, { 0, 0, 0}}, // (159, 69) + { 0, { 0, 0, 0}}, // (160, 69) + { 0, { 0, 0, 0}}, // (161, 69) + { 0, { 0, 0, 0}}, // (162, 69) + { 0, { 0, 0, 0}}, // (163, 69) + { 0, { 0, 0, 0}}, // (164, 69) + { 0, { 0, 0, 0}}, // (165, 69) + { 0, { 0, 0, 0}}, // (166, 69) + { 0, { 0, 0, 0}}, // (167, 69) + { 0, { 0, 0, 0}}, // (168, 69) + { 0, { 0, 0, 0}}, // (169, 69) + { 0, { 0, 0, 0}}, // (170, 69) + { 0, { 0, 0, 0}}, // (171, 69) + { 0, { 0, 0, 0}}, // (172, 69) + { 0, { 0, 0, 0}}, // (173, 69) + { 0, { 0, 0, 0}}, // (174, 69) + { 52, { 0, 0, 0}}, // (175, 69) + {128, { 0, 0, 0}}, // (176, 69) + {128, { 0, 0, 0}}, // (177, 69) + {128, { 0, 0, 0}}, // (178, 69) + {128, { 0, 0, 0}}, // (179, 69) + {128, { 0, 0, 0}}, // ( 0, 70) + {128, { 0, 0, 0}}, // ( 1, 70) + {128, { 0, 0, 0}}, // ( 2, 70) + {128, { 0, 0, 0}}, // ( 3, 70) + { 22, { 0, 0, 0}}, // ( 4, 70) + { 0, { 0, 0, 0}}, // ( 5, 70) + { 0, { 0, 0, 0}}, // ( 6, 70) + { 0, { 0, 0, 0}}, // ( 7, 70) + { 0, { 0, 0, 0}}, // ( 8, 70) + { 0, { 0, 0, 0}}, // ( 9, 70) + { 0, { 0, 0, 0}}, // ( 10, 70) + { 0, { 0, 0, 0}}, // ( 11, 70) + { 0, { 0, 0, 0}}, // ( 12, 70) + { 0, { 0, 0, 0}}, // ( 13, 70) + { 0, { 0, 0, 0}}, // ( 14, 70) + { 0, { 0, 0, 0}}, // ( 15, 70) + { 0, { 0, 0, 0}}, // ( 16, 70) + { 0, { 0, 0, 0}}, // ( 17, 70) + { 0, { 0, 0, 0}}, // ( 18, 70) + { 0, { 0, 0, 0}}, // ( 19, 70) + { 0, { 0, 0, 0}}, // ( 20, 70) + { 0, { 0, 0, 0}}, // ( 21, 70) + { 0, { 0, 0, 0}}, // ( 22, 70) + { 0, { 0, 0, 0}}, // ( 23, 70) + { 0, { 0, 0, 0}}, // ( 24, 70) + { 0, { 0, 0, 0}}, // ( 25, 70) + { 0, { 0, 0, 0}}, // ( 26, 70) + { 0, { 0, 0, 0}}, // ( 27, 70) + { 0, { 0, 0, 0}}, // ( 28, 70) + { 0, { 0, 0, 0}}, // ( 29, 70) + { 0, { 0, 0, 0}}, // ( 30, 70) + { 0, { 0, 0, 0}}, // ( 31, 70) + { 0, { 0, 0, 0}}, // ( 32, 70) + { 0, { 0, 0, 0}}, // ( 33, 70) + { 0, { 0, 0, 0}}, // ( 34, 70) + { 0, { 0, 0, 0}}, // ( 35, 70) + { 0, { 0, 0, 0}}, // ( 36, 70) + { 0, { 0, 0, 0}}, // ( 37, 70) + { 0, { 0, 0, 0}}, // ( 38, 70) + { 0, { 0, 0, 0}}, // ( 39, 70) + { 0, { 0, 0, 0}}, // ( 40, 70) + { 0, { 0, 0, 0}}, // ( 41, 70) + { 0, { 0, 0, 0}}, // ( 42, 70) + { 0, { 0, 0, 0}}, // ( 43, 70) + { 0, { 0, 0, 0}}, // ( 44, 70) + { 0, { 0, 0, 0}}, // ( 45, 70) + { 0, { 0, 0, 0}}, // ( 46, 70) + { 0, { 0, 0, 0}}, // ( 47, 70) + { 0, { 0, 0, 0}}, // ( 48, 70) + { 0, { 0, 0, 0}}, // ( 49, 70) + { 0, { 0, 0, 0}}, // ( 50, 70) + { 0, { 0, 0, 0}}, // ( 51, 70) + { 0, { 0, 0, 0}}, // ( 52, 70) + { 0, { 0, 0, 0}}, // ( 53, 70) + { 0, { 0, 0, 0}}, // ( 54, 70) + { 0, { 0, 0, 0}}, // ( 55, 70) + { 0, { 0, 0, 0}}, // ( 56, 70) + { 0, { 0, 0, 0}}, // ( 57, 70) + { 0, { 0, 0, 0}}, // ( 58, 70) + { 0, { 0, 0, 0}}, // ( 59, 70) + { 0, { 0, 0, 0}}, // ( 60, 70) + { 0, { 0, 0, 0}}, // ( 61, 70) + { 0, { 0, 0, 0}}, // ( 62, 70) + { 0, { 0, 0, 0}}, // ( 63, 70) + { 0, { 0, 0, 0}}, // ( 64, 70) + { 0, { 0, 0, 0}}, // ( 65, 70) + { 0, { 0, 0, 0}}, // ( 66, 70) + { 0, { 0, 0, 0}}, // ( 67, 70) + { 0, { 0, 0, 0}}, // ( 68, 70) + { 0, { 0, 0, 0}}, // ( 69, 70) + { 0, { 0, 0, 0}}, // ( 70, 70) + { 0, { 0, 0, 0}}, // ( 71, 70) + { 0, { 0, 0, 0}}, // ( 72, 70) + { 0, { 0, 0, 0}}, // ( 73, 70) + { 0, { 0, 0, 0}}, // ( 74, 70) + { 0, { 0, 0, 0}}, // ( 75, 70) + { 0, { 0, 0, 0}}, // ( 76, 70) + { 0, { 0, 0, 0}}, // ( 77, 70) + { 0, { 0, 0, 0}}, // ( 78, 70) + { 0, { 0, 0, 0}}, // ( 79, 70) + { 0, { 0, 0, 0}}, // ( 80, 70) + { 0, { 0, 0, 0}}, // ( 81, 70) + { 0, { 0, 0, 0}}, // ( 82, 70) + { 0, { 0, 0, 0}}, // ( 83, 70) + { 0, { 0, 0, 0}}, // ( 84, 70) + { 0, { 0, 0, 0}}, // ( 85, 70) + { 0, { 0, 0, 0}}, // ( 86, 70) + { 0, { 0, 0, 0}}, // ( 87, 70) + { 0, { 0, 0, 0}}, // ( 88, 70) + { 0, { 0, 0, 0}}, // ( 89, 70) + { 0, { 0, 0, 0}}, // ( 90, 70) + { 0, { 0, 0, 0}}, // ( 91, 70) + { 0, { 0, 0, 0}}, // ( 92, 70) + { 0, { 0, 0, 0}}, // ( 93, 70) + { 0, { 0, 0, 0}}, // ( 94, 70) + { 0, { 0, 0, 0}}, // ( 95, 70) + { 0, { 0, 0, 0}}, // ( 96, 70) + { 0, { 0, 0, 0}}, // ( 97, 70) + { 0, { 0, 0, 0}}, // ( 98, 70) + { 0, { 0, 0, 0}}, // ( 99, 70) + { 0, { 0, 0, 0}}, // (100, 70) + { 0, { 0, 0, 0}}, // (101, 70) + { 0, { 0, 0, 0}}, // (102, 70) + { 0, { 0, 0, 0}}, // (103, 70) + { 0, { 0, 0, 0}}, // (104, 70) + { 0, { 0, 0, 0}}, // (105, 70) + { 0, { 0, 0, 0}}, // (106, 70) + { 0, { 0, 0, 0}}, // (107, 70) + { 0, { 0, 0, 0}}, // (108, 70) + { 0, { 0, 0, 0}}, // (109, 70) + { 0, { 0, 0, 0}}, // (110, 70) + { 0, { 0, 0, 0}}, // (111, 70) + { 0, { 0, 0, 0}}, // (112, 70) + { 0, { 0, 0, 0}}, // (113, 70) + { 0, { 0, 0, 0}}, // (114, 70) + { 0, { 0, 0, 0}}, // (115, 70) + { 0, { 0, 0, 0}}, // (116, 70) + { 0, { 0, 0, 0}}, // (117, 70) + { 0, { 0, 0, 0}}, // (118, 70) + { 0, { 0, 0, 0}}, // (119, 70) + { 0, { 0, 0, 0}}, // (120, 70) + { 0, { 0, 0, 0}}, // (121, 70) + { 0, { 0, 0, 0}}, // (122, 70) + { 0, { 0, 0, 0}}, // (123, 70) + { 0, { 0, 0, 0}}, // (124, 70) + { 0, { 0, 0, 0}}, // (125, 70) + { 0, { 0, 0, 0}}, // (126, 70) + { 0, { 0, 0, 0}}, // (127, 70) + { 0, { 0, 0, 0}}, // (128, 70) + { 0, { 0, 0, 0}}, // (129, 70) + { 0, { 0, 0, 0}}, // (130, 70) + { 0, { 0, 0, 0}}, // (131, 70) + { 0, { 0, 0, 0}}, // (132, 70) + { 0, { 0, 0, 0}}, // (133, 70) + { 0, { 0, 0, 0}}, // (134, 70) + { 0, { 0, 0, 0}}, // (135, 70) + { 0, { 0, 0, 0}}, // (136, 70) + { 0, { 0, 0, 0}}, // (137, 70) + { 0, { 0, 0, 0}}, // (138, 70) + { 0, { 0, 0, 0}}, // (139, 70) + { 0, { 0, 0, 0}}, // (140, 70) + { 0, { 0, 0, 0}}, // (141, 70) + { 0, { 0, 0, 0}}, // (142, 70) + { 0, { 0, 0, 0}}, // (143, 70) + { 0, { 0, 0, 0}}, // (144, 70) + { 0, { 0, 0, 0}}, // (145, 70) + { 0, { 0, 0, 0}}, // (146, 70) + { 0, { 0, 0, 0}}, // (147, 70) + { 0, { 0, 0, 0}}, // (148, 70) + { 0, { 0, 0, 0}}, // (149, 70) + { 0, { 0, 0, 0}}, // (150, 70) + { 0, { 0, 0, 0}}, // (151, 70) + { 0, { 0, 0, 0}}, // (152, 70) + { 0, { 0, 0, 0}}, // (153, 70) + { 0, { 0, 0, 0}}, // (154, 70) + { 0, { 0, 0, 0}}, // (155, 70) + { 0, { 0, 0, 0}}, // (156, 70) + { 0, { 0, 0, 0}}, // (157, 70) + { 0, { 0, 0, 0}}, // (158, 70) + { 0, { 0, 0, 0}}, // (159, 70) + { 0, { 0, 0, 0}}, // (160, 70) + { 0, { 0, 0, 0}}, // (161, 70) + { 0, { 0, 0, 0}}, // (162, 70) + { 0, { 0, 0, 0}}, // (163, 70) + { 0, { 0, 0, 0}}, // (164, 70) + { 0, { 0, 0, 0}}, // (165, 70) + { 0, { 0, 0, 0}}, // (166, 70) + { 0, { 0, 0, 0}}, // (167, 70) + { 0, { 0, 0, 0}}, // (168, 70) + { 0, { 0, 0, 0}}, // (169, 70) + { 0, { 0, 0, 0}}, // (170, 70) + { 0, { 0, 0, 0}}, // (171, 70) + { 0, { 0, 0, 0}}, // (172, 70) + { 0, { 0, 0, 0}}, // (173, 70) + { 0, { 0, 0, 0}}, // (174, 70) + { 22, { 0, 0, 0}}, // (175, 70) + {128, { 0, 0, 0}}, // (176, 70) + {128, { 0, 0, 0}}, // (177, 70) + {128, { 0, 0, 0}}, // (178, 70) + {128, { 0, 0, 0}}, // (179, 70) + {128, { 0, 0, 0}}, // ( 0, 71) + {128, { 0, 0, 0}}, // ( 1, 71) + {128, { 0, 0, 0}}, // ( 2, 71) + {120, { 0, 0, 0}}, // ( 3, 71) + { 1, { 0, 0, 0}}, // ( 4, 71) + { 0, { 0, 0, 0}}, // ( 5, 71) + { 0, { 0, 0, 0}}, // ( 6, 71) + { 0, { 0, 0, 0}}, // ( 7, 71) + { 0, { 0, 0, 0}}, // ( 8, 71) + { 0, { 0, 0, 0}}, // ( 9, 71) + { 0, { 0, 0, 0}}, // ( 10, 71) + { 0, { 0, 0, 0}}, // ( 11, 71) + { 0, { 0, 0, 0}}, // ( 12, 71) + { 0, { 0, 0, 0}}, // ( 13, 71) + { 0, { 0, 0, 0}}, // ( 14, 71) + { 0, { 0, 0, 0}}, // ( 15, 71) + { 0, { 0, 0, 0}}, // ( 16, 71) + { 0, { 0, 0, 0}}, // ( 17, 71) + { 0, { 0, 0, 0}}, // ( 18, 71) + { 0, { 0, 0, 0}}, // ( 19, 71) + { 0, { 0, 0, 0}}, // ( 20, 71) + { 0, { 0, 0, 0}}, // ( 21, 71) + { 0, { 0, 0, 0}}, // ( 22, 71) + { 0, { 0, 0, 0}}, // ( 23, 71) + { 0, { 0, 0, 0}}, // ( 24, 71) + { 0, { 0, 0, 0}}, // ( 25, 71) + { 0, { 0, 0, 0}}, // ( 26, 71) + { 0, { 0, 0, 0}}, // ( 27, 71) + { 0, { 0, 0, 0}}, // ( 28, 71) + { 0, { 0, 0, 0}}, // ( 29, 71) + { 0, { 0, 0, 0}}, // ( 30, 71) + { 0, { 0, 0, 0}}, // ( 31, 71) + { 0, { 0, 0, 0}}, // ( 32, 71) + { 0, { 0, 0, 0}}, // ( 33, 71) + { 0, { 0, 0, 0}}, // ( 34, 71) + { 0, { 0, 0, 0}}, // ( 35, 71) + { 0, { 0, 0, 0}}, // ( 36, 71) + { 0, { 0, 0, 0}}, // ( 37, 71) + { 0, { 0, 0, 0}}, // ( 38, 71) + { 0, { 0, 0, 0}}, // ( 39, 71) + { 0, { 0, 0, 0}}, // ( 40, 71) + { 0, { 0, 0, 0}}, // ( 41, 71) + { 0, { 0, 0, 0}}, // ( 42, 71) + { 0, { 0, 0, 0}}, // ( 43, 71) + { 0, { 0, 0, 0}}, // ( 44, 71) + { 0, { 0, 0, 0}}, // ( 45, 71) + { 0, { 0, 0, 0}}, // ( 46, 71) + { 0, { 0, 0, 0}}, // ( 47, 71) + { 0, { 0, 0, 0}}, // ( 48, 71) + { 0, { 0, 0, 0}}, // ( 49, 71) + { 0, { 0, 0, 0}}, // ( 50, 71) + { 0, { 0, 0, 0}}, // ( 51, 71) + { 0, { 0, 0, 0}}, // ( 52, 71) + { 0, { 0, 0, 0}}, // ( 53, 71) + { 0, { 0, 0, 0}}, // ( 54, 71) + { 0, { 0, 0, 0}}, // ( 55, 71) + { 0, { 0, 0, 0}}, // ( 56, 71) + { 0, { 0, 0, 0}}, // ( 57, 71) + { 0, { 0, 0, 0}}, // ( 58, 71) + { 0, { 0, 0, 0}}, // ( 59, 71) + { 0, { 0, 0, 0}}, // ( 60, 71) + { 0, { 0, 0, 0}}, // ( 61, 71) + { 0, { 0, 0, 0}}, // ( 62, 71) + { 0, { 0, 0, 0}}, // ( 63, 71) + { 0, { 0, 0, 0}}, // ( 64, 71) + { 0, { 0, 0, 0}}, // ( 65, 71) + { 0, { 0, 0, 0}}, // ( 66, 71) + { 0, { 0, 0, 0}}, // ( 67, 71) + { 0, { 0, 0, 0}}, // ( 68, 71) + { 0, { 0, 0, 0}}, // ( 69, 71) + { 0, { 0, 0, 0}}, // ( 70, 71) + { 0, { 0, 0, 0}}, // ( 71, 71) + { 0, { 0, 0, 0}}, // ( 72, 71) + { 0, { 0, 0, 0}}, // ( 73, 71) + { 0, { 0, 0, 0}}, // ( 74, 71) + { 0, { 0, 0, 0}}, // ( 75, 71) + { 0, { 0, 0, 0}}, // ( 76, 71) + { 0, { 0, 0, 0}}, // ( 77, 71) + { 0, { 0, 0, 0}}, // ( 78, 71) + { 0, { 0, 0, 0}}, // ( 79, 71) + { 0, { 0, 0, 0}}, // ( 80, 71) + { 0, { 0, 0, 0}}, // ( 81, 71) + { 0, { 0, 0, 0}}, // ( 82, 71) + { 0, { 0, 0, 0}}, // ( 83, 71) + { 0, { 0, 0, 0}}, // ( 84, 71) + { 0, { 0, 0, 0}}, // ( 85, 71) + { 0, { 0, 0, 0}}, // ( 86, 71) + { 0, { 0, 0, 0}}, // ( 87, 71) + { 0, { 0, 0, 0}}, // ( 88, 71) + { 0, { 0, 0, 0}}, // ( 89, 71) + { 0, { 0, 0, 0}}, // ( 90, 71) + { 0, { 0, 0, 0}}, // ( 91, 71) + { 0, { 0, 0, 0}}, // ( 92, 71) + { 0, { 0, 0, 0}}, // ( 93, 71) + { 0, { 0, 0, 0}}, // ( 94, 71) + { 0, { 0, 0, 0}}, // ( 95, 71) + { 0, { 0, 0, 0}}, // ( 96, 71) + { 0, { 0, 0, 0}}, // ( 97, 71) + { 0, { 0, 0, 0}}, // ( 98, 71) + { 0, { 0, 0, 0}}, // ( 99, 71) + { 0, { 0, 0, 0}}, // (100, 71) + { 0, { 0, 0, 0}}, // (101, 71) + { 0, { 0, 0, 0}}, // (102, 71) + { 0, { 0, 0, 0}}, // (103, 71) + { 0, { 0, 0, 0}}, // (104, 71) + { 0, { 0, 0, 0}}, // (105, 71) + { 0, { 0, 0, 0}}, // (106, 71) + { 0, { 0, 0, 0}}, // (107, 71) + { 0, { 0, 0, 0}}, // (108, 71) + { 0, { 0, 0, 0}}, // (109, 71) + { 0, { 0, 0, 0}}, // (110, 71) + { 0, { 0, 0, 0}}, // (111, 71) + { 0, { 0, 0, 0}}, // (112, 71) + { 0, { 0, 0, 0}}, // (113, 71) + { 0, { 0, 0, 0}}, // (114, 71) + { 0, { 0, 0, 0}}, // (115, 71) + { 0, { 0, 0, 0}}, // (116, 71) + { 0, { 0, 0, 0}}, // (117, 71) + { 0, { 0, 0, 0}}, // (118, 71) + { 0, { 0, 0, 0}}, // (119, 71) + { 0, { 0, 0, 0}}, // (120, 71) + { 0, { 0, 0, 0}}, // (121, 71) + { 0, { 0, 0, 0}}, // (122, 71) + { 0, { 0, 0, 0}}, // (123, 71) + { 0, { 0, 0, 0}}, // (124, 71) + { 0, { 0, 0, 0}}, // (125, 71) + { 0, { 0, 0, 0}}, // (126, 71) + { 0, { 0, 0, 0}}, // (127, 71) + { 0, { 0, 0, 0}}, // (128, 71) + { 0, { 0, 0, 0}}, // (129, 71) + { 0, { 0, 0, 0}}, // (130, 71) + { 0, { 0, 0, 0}}, // (131, 71) + { 0, { 0, 0, 0}}, // (132, 71) + { 0, { 0, 0, 0}}, // (133, 71) + { 0, { 0, 0, 0}}, // (134, 71) + { 0, { 0, 0, 0}}, // (135, 71) + { 0, { 0, 0, 0}}, // (136, 71) + { 0, { 0, 0, 0}}, // (137, 71) + { 0, { 0, 0, 0}}, // (138, 71) + { 0, { 0, 0, 0}}, // (139, 71) + { 0, { 0, 0, 0}}, // (140, 71) + { 0, { 0, 0, 0}}, // (141, 71) + { 0, { 0, 0, 0}}, // (142, 71) + { 0, { 0, 0, 0}}, // (143, 71) + { 0, { 0, 0, 0}}, // (144, 71) + { 0, { 0, 0, 0}}, // (145, 71) + { 0, { 0, 0, 0}}, // (146, 71) + { 0, { 0, 0, 0}}, // (147, 71) + { 0, { 0, 0, 0}}, // (148, 71) + { 0, { 0, 0, 0}}, // (149, 71) + { 0, { 0, 0, 0}}, // (150, 71) + { 0, { 0, 0, 0}}, // (151, 71) + { 0, { 0, 0, 0}}, // (152, 71) + { 0, { 0, 0, 0}}, // (153, 71) + { 0, { 0, 0, 0}}, // (154, 71) + { 0, { 0, 0, 0}}, // (155, 71) + { 0, { 0, 0, 0}}, // (156, 71) + { 0, { 0, 0, 0}}, // (157, 71) + { 0, { 0, 0, 0}}, // (158, 71) + { 0, { 0, 0, 0}}, // (159, 71) + { 0, { 0, 0, 0}}, // (160, 71) + { 0, { 0, 0, 0}}, // (161, 71) + { 0, { 0, 0, 0}}, // (162, 71) + { 0, { 0, 0, 0}}, // (163, 71) + { 0, { 0, 0, 0}}, // (164, 71) + { 0, { 0, 0, 0}}, // (165, 71) + { 0, { 0, 0, 0}}, // (166, 71) + { 0, { 0, 0, 0}}, // (167, 71) + { 0, { 0, 0, 0}}, // (168, 71) + { 0, { 0, 0, 0}}, // (169, 71) + { 0, { 0, 0, 0}}, // (170, 71) + { 0, { 0, 0, 0}}, // (171, 71) + { 0, { 0, 0, 0}}, // (172, 71) + { 0, { 0, 0, 0}}, // (173, 71) + { 0, { 0, 0, 0}}, // (174, 71) + { 1, { 0, 0, 0}}, // (175, 71) + {120, { 0, 0, 0}}, // (176, 71) + {128, { 0, 0, 0}}, // (177, 71) + {128, { 0, 0, 0}}, // (178, 71) + {128, { 0, 0, 0}}, // (179, 71) + {128, { 0, 0, 0}}, // ( 0, 72) + {128, { 0, 0, 0}}, // ( 1, 72) + {128, { 0, 0, 0}}, // ( 2, 72) + { 95, { 0, 0, 0}}, // ( 3, 72) + { 0, { 0, 0, 0}}, // ( 4, 72) + { 0, { 0, 0, 0}}, // ( 5, 72) + { 0, { 0, 0, 0}}, // ( 6, 72) + { 0, { 0, 0, 0}}, // ( 7, 72) + { 0, { 0, 0, 0}}, // ( 8, 72) + { 0, { 0, 0, 0}}, // ( 9, 72) + { 0, { 0, 0, 0}}, // ( 10, 72) + { 0, { 0, 0, 0}}, // ( 11, 72) + { 0, { 0, 0, 0}}, // ( 12, 72) + { 0, { 0, 0, 0}}, // ( 13, 72) + { 0, { 0, 0, 0}}, // ( 14, 72) + { 0, { 0, 0, 0}}, // ( 15, 72) + { 0, { 0, 0, 0}}, // ( 16, 72) + { 0, { 0, 0, 0}}, // ( 17, 72) + { 0, { 0, 0, 0}}, // ( 18, 72) + { 0, { 0, 0, 0}}, // ( 19, 72) + { 0, { 0, 0, 0}}, // ( 20, 72) + { 0, { 0, 0, 0}}, // ( 21, 72) + { 0, { 0, 0, 0}}, // ( 22, 72) + { 0, { 0, 0, 0}}, // ( 23, 72) + { 0, { 0, 0, 0}}, // ( 24, 72) + { 0, { 0, 0, 0}}, // ( 25, 72) + { 0, { 0, 0, 0}}, // ( 26, 72) + { 0, { 0, 0, 0}}, // ( 27, 72) + { 0, { 0, 0, 0}}, // ( 28, 72) + { 0, { 0, 0, 0}}, // ( 29, 72) + { 0, { 0, 0, 0}}, // ( 30, 72) + { 0, { 0, 0, 0}}, // ( 31, 72) + { 0, { 0, 0, 0}}, // ( 32, 72) + { 0, { 0, 0, 0}}, // ( 33, 72) + { 0, { 0, 0, 0}}, // ( 34, 72) + { 0, { 0, 0, 0}}, // ( 35, 72) + { 0, { 0, 0, 0}}, // ( 36, 72) + { 0, { 0, 0, 0}}, // ( 37, 72) + { 0, { 0, 0, 0}}, // ( 38, 72) + { 0, { 0, 0, 0}}, // ( 39, 72) + { 0, { 0, 0, 0}}, // ( 40, 72) + { 0, { 0, 0, 0}}, // ( 41, 72) + { 0, { 0, 0, 0}}, // ( 42, 72) + { 0, { 0, 0, 0}}, // ( 43, 72) + { 0, { 0, 0, 0}}, // ( 44, 72) + { 0, { 0, 0, 0}}, // ( 45, 72) + { 0, { 0, 0, 0}}, // ( 46, 72) + { 0, { 0, 0, 0}}, // ( 47, 72) + { 0, { 0, 0, 0}}, // ( 48, 72) + { 0, { 0, 0, 0}}, // ( 49, 72) + { 0, { 0, 0, 0}}, // ( 50, 72) + { 0, { 0, 0, 0}}, // ( 51, 72) + { 0, { 0, 0, 0}}, // ( 52, 72) + { 0, { 0, 0, 0}}, // ( 53, 72) + { 0, { 0, 0, 0}}, // ( 54, 72) + { 0, { 0, 0, 0}}, // ( 55, 72) + { 0, { 0, 0, 0}}, // ( 56, 72) + { 0, { 0, 0, 0}}, // ( 57, 72) + { 0, { 0, 0, 0}}, // ( 58, 72) + { 0, { 0, 0, 0}}, // ( 59, 72) + { 0, { 0, 0, 0}}, // ( 60, 72) + { 0, { 0, 0, 0}}, // ( 61, 72) + { 0, { 0, 0, 0}}, // ( 62, 72) + { 0, { 0, 0, 0}}, // ( 63, 72) + { 0, { 0, 0, 0}}, // ( 64, 72) + { 0, { 0, 0, 0}}, // ( 65, 72) + { 0, { 0, 0, 0}}, // ( 66, 72) + { 0, { 0, 0, 0}}, // ( 67, 72) + { 0, { 0, 0, 0}}, // ( 68, 72) + { 0, { 0, 0, 0}}, // ( 69, 72) + { 0, { 0, 0, 0}}, // ( 70, 72) + { 0, { 0, 0, 0}}, // ( 71, 72) + { 0, { 0, 0, 0}}, // ( 72, 72) + { 0, { 0, 0, 0}}, // ( 73, 72) + { 0, { 0, 0, 0}}, // ( 74, 72) + { 0, { 0, 0, 0}}, // ( 75, 72) + { 0, { 0, 0, 0}}, // ( 76, 72) + { 0, { 0, 0, 0}}, // ( 77, 72) + { 0, { 0, 0, 0}}, // ( 78, 72) + { 0, { 0, 0, 0}}, // ( 79, 72) + { 0, { 0, 0, 0}}, // ( 80, 72) + { 0, { 0, 0, 0}}, // ( 81, 72) + { 0, { 0, 0, 0}}, // ( 82, 72) + { 0, { 0, 0, 0}}, // ( 83, 72) + { 0, { 0, 0, 0}}, // ( 84, 72) + { 0, { 0, 0, 0}}, // ( 85, 72) + { 0, { 0, 0, 0}}, // ( 86, 72) + { 0, { 0, 0, 0}}, // ( 87, 72) + { 0, { 0, 0, 0}}, // ( 88, 72) + { 0, { 0, 0, 0}}, // ( 89, 72) + { 0, { 0, 0, 0}}, // ( 90, 72) + { 0, { 0, 0, 0}}, // ( 91, 72) + { 0, { 0, 0, 0}}, // ( 92, 72) + { 0, { 0, 0, 0}}, // ( 93, 72) + { 0, { 0, 0, 0}}, // ( 94, 72) + { 0, { 0, 0, 0}}, // ( 95, 72) + { 0, { 0, 0, 0}}, // ( 96, 72) + { 0, { 0, 0, 0}}, // ( 97, 72) + { 0, { 0, 0, 0}}, // ( 98, 72) + { 0, { 0, 0, 0}}, // ( 99, 72) + { 0, { 0, 0, 0}}, // (100, 72) + { 0, { 0, 0, 0}}, // (101, 72) + { 0, { 0, 0, 0}}, // (102, 72) + { 0, { 0, 0, 0}}, // (103, 72) + { 0, { 0, 0, 0}}, // (104, 72) + { 0, { 0, 0, 0}}, // (105, 72) + { 0, { 0, 0, 0}}, // (106, 72) + { 0, { 0, 0, 0}}, // (107, 72) + { 0, { 0, 0, 0}}, // (108, 72) + { 0, { 0, 0, 0}}, // (109, 72) + { 0, { 0, 0, 0}}, // (110, 72) + { 0, { 0, 0, 0}}, // (111, 72) + { 0, { 0, 0, 0}}, // (112, 72) + { 0, { 0, 0, 0}}, // (113, 72) + { 0, { 0, 0, 0}}, // (114, 72) + { 0, { 0, 0, 0}}, // (115, 72) + { 0, { 0, 0, 0}}, // (116, 72) + { 0, { 0, 0, 0}}, // (117, 72) + { 0, { 0, 0, 0}}, // (118, 72) + { 0, { 0, 0, 0}}, // (119, 72) + { 0, { 0, 0, 0}}, // (120, 72) + { 0, { 0, 0, 0}}, // (121, 72) + { 0, { 0, 0, 0}}, // (122, 72) + { 0, { 0, 0, 0}}, // (123, 72) + { 0, { 0, 0, 0}}, // (124, 72) + { 0, { 0, 0, 0}}, // (125, 72) + { 0, { 0, 0, 0}}, // (126, 72) + { 0, { 0, 0, 0}}, // (127, 72) + { 0, { 0, 0, 0}}, // (128, 72) + { 0, { 0, 0, 0}}, // (129, 72) + { 0, { 0, 0, 0}}, // (130, 72) + { 0, { 0, 0, 0}}, // (131, 72) + { 0, { 0, 0, 0}}, // (132, 72) + { 0, { 0, 0, 0}}, // (133, 72) + { 0, { 0, 0, 0}}, // (134, 72) + { 0, { 0, 0, 0}}, // (135, 72) + { 0, { 0, 0, 0}}, // (136, 72) + { 0, { 0, 0, 0}}, // (137, 72) + { 0, { 0, 0, 0}}, // (138, 72) + { 0, { 0, 0, 0}}, // (139, 72) + { 0, { 0, 0, 0}}, // (140, 72) + { 0, { 0, 0, 0}}, // (141, 72) + { 0, { 0, 0, 0}}, // (142, 72) + { 0, { 0, 0, 0}}, // (143, 72) + { 0, { 0, 0, 0}}, // (144, 72) + { 0, { 0, 0, 0}}, // (145, 72) + { 0, { 0, 0, 0}}, // (146, 72) + { 0, { 0, 0, 0}}, // (147, 72) + { 0, { 0, 0, 0}}, // (148, 72) + { 0, { 0, 0, 0}}, // (149, 72) + { 0, { 0, 0, 0}}, // (150, 72) + { 0, { 0, 0, 0}}, // (151, 72) + { 0, { 0, 0, 0}}, // (152, 72) + { 0, { 0, 0, 0}}, // (153, 72) + { 0, { 0, 0, 0}}, // (154, 72) + { 0, { 0, 0, 0}}, // (155, 72) + { 0, { 0, 0, 0}}, // (156, 72) + { 0, { 0, 0, 0}}, // (157, 72) + { 0, { 0, 0, 0}}, // (158, 72) + { 0, { 0, 0, 0}}, // (159, 72) + { 0, { 0, 0, 0}}, // (160, 72) + { 0, { 0, 0, 0}}, // (161, 72) + { 0, { 0, 0, 0}}, // (162, 72) + { 0, { 0, 0, 0}}, // (163, 72) + { 0, { 0, 0, 0}}, // (164, 72) + { 0, { 0, 0, 0}}, // (165, 72) + { 0, { 0, 0, 0}}, // (166, 72) + { 0, { 0, 0, 0}}, // (167, 72) + { 0, { 0, 0, 0}}, // (168, 72) + { 0, { 0, 0, 0}}, // (169, 72) + { 0, { 0, 0, 0}}, // (170, 72) + { 0, { 0, 0, 0}}, // (171, 72) + { 0, { 0, 0, 0}}, // (172, 72) + { 0, { 0, 0, 0}}, // (173, 72) + { 0, { 0, 0, 0}}, // (174, 72) + { 0, { 0, 0, 0}}, // (175, 72) + { 95, { 0, 0, 0}}, // (176, 72) + {128, { 0, 0, 0}}, // (177, 72) + {128, { 0, 0, 0}}, // (178, 72) + {128, { 0, 0, 0}}, // (179, 72) + {128, { 0, 0, 0}}, // ( 0, 73) + {128, { 0, 0, 0}}, // ( 1, 73) + {128, { 0, 0, 0}}, // ( 2, 73) + { 72, { 0, 0, 0}}, // ( 3, 73) + { 0, { 0, 0, 0}}, // ( 4, 73) + { 0, { 0, 0, 0}}, // ( 5, 73) + { 0, { 0, 0, 0}}, // ( 6, 73) + { 0, { 0, 0, 0}}, // ( 7, 73) + { 0, { 0, 0, 0}}, // ( 8, 73) + { 0, { 0, 0, 0}}, // ( 9, 73) + { 0, { 0, 0, 0}}, // ( 10, 73) + { 0, { 0, 0, 0}}, // ( 11, 73) + { 0, { 0, 0, 0}}, // ( 12, 73) + { 0, { 0, 0, 0}}, // ( 13, 73) + { 0, { 0, 0, 0}}, // ( 14, 73) + { 0, { 0, 0, 0}}, // ( 15, 73) + { 0, { 0, 0, 0}}, // ( 16, 73) + { 0, { 0, 0, 0}}, // ( 17, 73) + { 0, { 0, 0, 0}}, // ( 18, 73) + { 0, { 0, 0, 0}}, // ( 19, 73) + { 0, { 0, 0, 0}}, // ( 20, 73) + { 0, { 0, 0, 0}}, // ( 21, 73) + { 0, { 0, 0, 0}}, // ( 22, 73) + { 0, { 0, 0, 0}}, // ( 23, 73) + { 0, { 0, 0, 0}}, // ( 24, 73) + { 0, { 0, 0, 0}}, // ( 25, 73) + { 0, { 0, 0, 0}}, // ( 26, 73) + { 0, { 0, 0, 0}}, // ( 27, 73) + { 0, { 0, 0, 0}}, // ( 28, 73) + { 0, { 0, 0, 0}}, // ( 29, 73) + { 0, { 0, 0, 0}}, // ( 30, 73) + { 0, { 0, 0, 0}}, // ( 31, 73) + { 0, { 0, 0, 0}}, // ( 32, 73) + { 0, { 0, 0, 0}}, // ( 33, 73) + { 0, { 0, 0, 0}}, // ( 34, 73) + { 0, { 0, 0, 0}}, // ( 35, 73) + { 0, { 0, 0, 0}}, // ( 36, 73) + { 0, { 0, 0, 0}}, // ( 37, 73) + { 0, { 0, 0, 0}}, // ( 38, 73) + { 0, { 0, 0, 0}}, // ( 39, 73) + { 0, { 0, 0, 0}}, // ( 40, 73) + { 0, { 0, 0, 0}}, // ( 41, 73) + { 0, { 0, 0, 0}}, // ( 42, 73) + { 0, { 0, 0, 0}}, // ( 43, 73) + { 0, { 0, 0, 0}}, // ( 44, 73) + { 0, { 0, 0, 0}}, // ( 45, 73) + { 0, { 0, 0, 0}}, // ( 46, 73) + { 0, { 0, 0, 0}}, // ( 47, 73) + { 0, { 0, 0, 0}}, // ( 48, 73) + { 0, { 0, 0, 0}}, // ( 49, 73) + { 0, { 0, 0, 0}}, // ( 50, 73) + { 0, { 0, 0, 0}}, // ( 51, 73) + { 0, { 0, 0, 0}}, // ( 52, 73) + { 0, { 0, 0, 0}}, // ( 53, 73) + { 0, { 0, 0, 0}}, // ( 54, 73) + { 0, { 0, 0, 0}}, // ( 55, 73) + { 0, { 0, 0, 0}}, // ( 56, 73) + { 0, { 0, 0, 0}}, // ( 57, 73) + { 0, { 0, 0, 0}}, // ( 58, 73) + { 0, { 0, 0, 0}}, // ( 59, 73) + { 0, { 0, 0, 0}}, // ( 60, 73) + { 0, { 0, 0, 0}}, // ( 61, 73) + { 0, { 0, 0, 0}}, // ( 62, 73) + { 0, { 0, 0, 0}}, // ( 63, 73) + { 0, { 0, 0, 0}}, // ( 64, 73) + { 0, { 0, 0, 0}}, // ( 65, 73) + { 0, { 0, 0, 0}}, // ( 66, 73) + { 0, { 0, 0, 0}}, // ( 67, 73) + { 0, { 0, 0, 0}}, // ( 68, 73) + { 0, { 0, 0, 0}}, // ( 69, 73) + { 0, { 0, 0, 0}}, // ( 70, 73) + { 0, { 0, 0, 0}}, // ( 71, 73) + { 0, { 0, 0, 0}}, // ( 72, 73) + { 0, { 0, 0, 0}}, // ( 73, 73) + { 0, { 0, 0, 0}}, // ( 74, 73) + { 0, { 0, 0, 0}}, // ( 75, 73) + { 0, { 0, 0, 0}}, // ( 76, 73) + { 0, { 0, 0, 0}}, // ( 77, 73) + { 0, { 0, 0, 0}}, // ( 78, 73) + { 0, { 0, 0, 0}}, // ( 79, 73) + { 0, { 0, 0, 0}}, // ( 80, 73) + { 0, { 0, 0, 0}}, // ( 81, 73) + { 0, { 0, 0, 0}}, // ( 82, 73) + { 0, { 0, 0, 0}}, // ( 83, 73) + { 0, { 0, 0, 0}}, // ( 84, 73) + { 0, { 0, 0, 0}}, // ( 85, 73) + { 0, { 0, 0, 0}}, // ( 86, 73) + { 0, { 0, 0, 0}}, // ( 87, 73) + { 0, { 0, 0, 0}}, // ( 88, 73) + { 0, { 0, 0, 0}}, // ( 89, 73) + { 0, { 0, 0, 0}}, // ( 90, 73) + { 0, { 0, 0, 0}}, // ( 91, 73) + { 0, { 0, 0, 0}}, // ( 92, 73) + { 0, { 0, 0, 0}}, // ( 93, 73) + { 0, { 0, 0, 0}}, // ( 94, 73) + { 0, { 0, 0, 0}}, // ( 95, 73) + { 0, { 0, 0, 0}}, // ( 96, 73) + { 0, { 0, 0, 0}}, // ( 97, 73) + { 0, { 0, 0, 0}}, // ( 98, 73) + { 0, { 0, 0, 0}}, // ( 99, 73) + { 0, { 0, 0, 0}}, // (100, 73) + { 0, { 0, 0, 0}}, // (101, 73) + { 0, { 0, 0, 0}}, // (102, 73) + { 0, { 0, 0, 0}}, // (103, 73) + { 0, { 0, 0, 0}}, // (104, 73) + { 0, { 0, 0, 0}}, // (105, 73) + { 0, { 0, 0, 0}}, // (106, 73) + { 0, { 0, 0, 0}}, // (107, 73) + { 0, { 0, 0, 0}}, // (108, 73) + { 0, { 0, 0, 0}}, // (109, 73) + { 0, { 0, 0, 0}}, // (110, 73) + { 0, { 0, 0, 0}}, // (111, 73) + { 0, { 0, 0, 0}}, // (112, 73) + { 0, { 0, 0, 0}}, // (113, 73) + { 0, { 0, 0, 0}}, // (114, 73) + { 0, { 0, 0, 0}}, // (115, 73) + { 0, { 0, 0, 0}}, // (116, 73) + { 0, { 0, 0, 0}}, // (117, 73) + { 0, { 0, 0, 0}}, // (118, 73) + { 0, { 0, 0, 0}}, // (119, 73) + { 0, { 0, 0, 0}}, // (120, 73) + { 0, { 0, 0, 0}}, // (121, 73) + { 0, { 0, 0, 0}}, // (122, 73) + { 0, { 0, 0, 0}}, // (123, 73) + { 0, { 0, 0, 0}}, // (124, 73) + { 0, { 0, 0, 0}}, // (125, 73) + { 0, { 0, 0, 0}}, // (126, 73) + { 0, { 0, 0, 0}}, // (127, 73) + { 0, { 0, 0, 0}}, // (128, 73) + { 0, { 0, 0, 0}}, // (129, 73) + { 0, { 0, 0, 0}}, // (130, 73) + { 0, { 0, 0, 0}}, // (131, 73) + { 0, { 0, 0, 0}}, // (132, 73) + { 0, { 0, 0, 0}}, // (133, 73) + { 0, { 0, 0, 0}}, // (134, 73) + { 0, { 0, 0, 0}}, // (135, 73) + { 0, { 0, 0, 0}}, // (136, 73) + { 0, { 0, 0, 0}}, // (137, 73) + { 0, { 0, 0, 0}}, // (138, 73) + { 0, { 0, 0, 0}}, // (139, 73) + { 0, { 0, 0, 0}}, // (140, 73) + { 0, { 0, 0, 0}}, // (141, 73) + { 0, { 0, 0, 0}}, // (142, 73) + { 0, { 0, 0, 0}}, // (143, 73) + { 0, { 0, 0, 0}}, // (144, 73) + { 0, { 0, 0, 0}}, // (145, 73) + { 0, { 0, 0, 0}}, // (146, 73) + { 0, { 0, 0, 0}}, // (147, 73) + { 0, { 0, 0, 0}}, // (148, 73) + { 0, { 0, 0, 0}}, // (149, 73) + { 0, { 0, 0, 0}}, // (150, 73) + { 0, { 0, 0, 0}}, // (151, 73) + { 0, { 0, 0, 0}}, // (152, 73) + { 0, { 0, 0, 0}}, // (153, 73) + { 0, { 0, 0, 0}}, // (154, 73) + { 0, { 0, 0, 0}}, // (155, 73) + { 0, { 0, 0, 0}}, // (156, 73) + { 0, { 0, 0, 0}}, // (157, 73) + { 0, { 0, 0, 0}}, // (158, 73) + { 0, { 0, 0, 0}}, // (159, 73) + { 0, { 0, 0, 0}}, // (160, 73) + { 0, { 0, 0, 0}}, // (161, 73) + { 0, { 0, 0, 0}}, // (162, 73) + { 0, { 0, 0, 0}}, // (163, 73) + { 0, { 0, 0, 0}}, // (164, 73) + { 0, { 0, 0, 0}}, // (165, 73) + { 0, { 0, 0, 0}}, // (166, 73) + { 0, { 0, 0, 0}}, // (167, 73) + { 0, { 0, 0, 0}}, // (168, 73) + { 0, { 0, 0, 0}}, // (169, 73) + { 0, { 0, 0, 0}}, // (170, 73) + { 0, { 0, 0, 0}}, // (171, 73) + { 0, { 0, 0, 0}}, // (172, 73) + { 0, { 0, 0, 0}}, // (173, 73) + { 0, { 0, 0, 0}}, // (174, 73) + { 0, { 0, 0, 0}}, // (175, 73) + { 70, { 0, 0, 0}}, // (176, 73) + {128, { 0, 0, 0}}, // (177, 73) + {128, { 0, 0, 0}}, // (178, 73) + {128, { 0, 0, 0}}, // (179, 73) + {128, { 0, 0, 0}}, // ( 0, 74) + {128, { 0, 0, 0}}, // ( 1, 74) + {128, { 0, 0, 0}}, // ( 2, 74) + { 50, { 0, 0, 0}}, // ( 3, 74) + { 0, { 0, 0, 0}}, // ( 4, 74) + { 0, { 0, 0, 0}}, // ( 5, 74) + { 0, { 0, 0, 0}}, // ( 6, 74) + { 0, { 0, 0, 0}}, // ( 7, 74) + { 0, { 0, 0, 0}}, // ( 8, 74) + { 0, { 0, 0, 0}}, // ( 9, 74) + { 0, { 0, 0, 0}}, // ( 10, 74) + { 0, { 0, 0, 0}}, // ( 11, 74) + { 0, { 0, 0, 0}}, // ( 12, 74) + { 0, { 0, 0, 0}}, // ( 13, 74) + { 0, { 0, 0, 0}}, // ( 14, 74) + { 0, { 0, 0, 0}}, // ( 15, 74) + { 0, { 0, 0, 0}}, // ( 16, 74) + { 0, { 0, 0, 0}}, // ( 17, 74) + { 0, { 0, 0, 0}}, // ( 18, 74) + { 0, { 0, 0, 0}}, // ( 19, 74) + { 0, { 0, 0, 0}}, // ( 20, 74) + { 0, { 0, 0, 0}}, // ( 21, 74) + { 0, { 0, 0, 0}}, // ( 22, 74) + { 0, { 0, 0, 0}}, // ( 23, 74) + { 0, { 0, 0, 0}}, // ( 24, 74) + { 0, { 0, 0, 0}}, // ( 25, 74) + { 0, { 0, 0, 0}}, // ( 26, 74) + { 0, { 0, 0, 0}}, // ( 27, 74) + { 0, { 0, 0, 0}}, // ( 28, 74) + { 0, { 0, 0, 0}}, // ( 29, 74) + { 0, { 0, 0, 0}}, // ( 30, 74) + { 0, { 0, 0, 0}}, // ( 31, 74) + { 0, { 0, 0, 0}}, // ( 32, 74) + { 0, { 0, 0, 0}}, // ( 33, 74) + { 0, { 0, 0, 0}}, // ( 34, 74) + { 0, { 0, 0, 0}}, // ( 35, 74) + { 0, { 0, 0, 0}}, // ( 36, 74) + { 0, { 0, 0, 0}}, // ( 37, 74) + { 0, { 0, 0, 0}}, // ( 38, 74) + { 0, { 0, 0, 0}}, // ( 39, 74) + { 0, { 0, 0, 0}}, // ( 40, 74) + { 0, { 0, 0, 0}}, // ( 41, 74) + { 0, { 0, 0, 0}}, // ( 42, 74) + { 0, { 0, 0, 0}}, // ( 43, 74) + { 0, { 0, 0, 0}}, // ( 44, 74) + { 0, { 0, 0, 0}}, // ( 45, 74) + { 0, { 0, 0, 0}}, // ( 46, 74) + { 0, { 0, 0, 0}}, // ( 47, 74) + { 0, { 0, 0, 0}}, // ( 48, 74) + { 0, { 0, 0, 0}}, // ( 49, 74) + { 0, { 0, 0, 0}}, // ( 50, 74) + { 0, { 0, 0, 0}}, // ( 51, 74) + { 0, { 0, 0, 0}}, // ( 52, 74) + { 0, { 0, 0, 0}}, // ( 53, 74) + { 0, { 0, 0, 0}}, // ( 54, 74) + { 0, { 0, 0, 0}}, // ( 55, 74) + { 0, { 0, 0, 0}}, // ( 56, 74) + { 0, { 0, 0, 0}}, // ( 57, 74) + { 0, { 0, 0, 0}}, // ( 58, 74) + { 0, { 0, 0, 0}}, // ( 59, 74) + { 0, { 0, 0, 0}}, // ( 60, 74) + { 0, { 0, 0, 0}}, // ( 61, 74) + { 0, { 0, 0, 0}}, // ( 62, 74) + { 0, { 0, 0, 0}}, // ( 63, 74) + { 0, { 0, 0, 0}}, // ( 64, 74) + { 0, { 0, 0, 0}}, // ( 65, 74) + { 0, { 0, 0, 0}}, // ( 66, 74) + { 0, { 0, 0, 0}}, // ( 67, 74) + { 0, { 0, 0, 0}}, // ( 68, 74) + { 0, { 0, 0, 0}}, // ( 69, 74) + { 0, { 0, 0, 0}}, // ( 70, 74) + { 0, { 0, 0, 0}}, // ( 71, 74) + { 0, { 0, 0, 0}}, // ( 72, 74) + { 0, { 0, 0, 0}}, // ( 73, 74) + { 0, { 0, 0, 0}}, // ( 74, 74) + { 0, { 0, 0, 0}}, // ( 75, 74) + { 0, { 0, 0, 0}}, // ( 76, 74) + { 0, { 0, 0, 0}}, // ( 77, 74) + { 0, { 0, 0, 0}}, // ( 78, 74) + { 0, { 0, 0, 0}}, // ( 79, 74) + { 0, { 0, 0, 0}}, // ( 80, 74) + { 0, { 0, 0, 0}}, // ( 81, 74) + { 0, { 0, 0, 0}}, // ( 82, 74) + { 0, { 0, 0, 0}}, // ( 83, 74) + { 0, { 0, 0, 0}}, // ( 84, 74) + { 0, { 0, 0, 0}}, // ( 85, 74) + { 0, { 0, 0, 0}}, // ( 86, 74) + { 0, { 0, 0, 0}}, // ( 87, 74) + { 0, { 0, 0, 0}}, // ( 88, 74) + { 0, { 0, 0, 0}}, // ( 89, 74) + { 0, { 0, 0, 0}}, // ( 90, 74) + { 0, { 0, 0, 0}}, // ( 91, 74) + { 0, { 0, 0, 0}}, // ( 92, 74) + { 0, { 0, 0, 0}}, // ( 93, 74) + { 0, { 0, 0, 0}}, // ( 94, 74) + { 0, { 0, 0, 0}}, // ( 95, 74) + { 0, { 0, 0, 0}}, // ( 96, 74) + { 0, { 0, 0, 0}}, // ( 97, 74) + { 0, { 0, 0, 0}}, // ( 98, 74) + { 0, { 0, 0, 0}}, // ( 99, 74) + { 0, { 0, 0, 0}}, // (100, 74) + { 0, { 0, 0, 0}}, // (101, 74) + { 0, { 0, 0, 0}}, // (102, 74) + { 0, { 0, 0, 0}}, // (103, 74) + { 0, { 0, 0, 0}}, // (104, 74) + { 0, { 0, 0, 0}}, // (105, 74) + { 0, { 0, 0, 0}}, // (106, 74) + { 0, { 0, 0, 0}}, // (107, 74) + { 0, { 0, 0, 0}}, // (108, 74) + { 0, { 0, 0, 0}}, // (109, 74) + { 0, { 0, 0, 0}}, // (110, 74) + { 0, { 0, 0, 0}}, // (111, 74) + { 0, { 0, 0, 0}}, // (112, 74) + { 0, { 0, 0, 0}}, // (113, 74) + { 0, { 0, 0, 0}}, // (114, 74) + { 0, { 0, 0, 0}}, // (115, 74) + { 0, { 0, 0, 0}}, // (116, 74) + { 0, { 0, 0, 0}}, // (117, 74) + { 0, { 0, 0, 0}}, // (118, 74) + { 0, { 0, 0, 0}}, // (119, 74) + { 0, { 0, 0, 0}}, // (120, 74) + { 0, { 0, 0, 0}}, // (121, 74) + { 0, { 0, 0, 0}}, // (122, 74) + { 0, { 0, 0, 0}}, // (123, 74) + { 0, { 0, 0, 0}}, // (124, 74) + { 0, { 0, 0, 0}}, // (125, 74) + { 0, { 0, 0, 0}}, // (126, 74) + { 0, { 0, 0, 0}}, // (127, 74) + { 0, { 0, 0, 0}}, // (128, 74) + { 0, { 0, 0, 0}}, // (129, 74) + { 0, { 0, 0, 0}}, // (130, 74) + { 0, { 0, 0, 0}}, // (131, 74) + { 0, { 0, 0, 0}}, // (132, 74) + { 0, { 0, 0, 0}}, // (133, 74) + { 0, { 0, 0, 0}}, // (134, 74) + { 0, { 0, 0, 0}}, // (135, 74) + { 0, { 0, 0, 0}}, // (136, 74) + { 0, { 0, 0, 0}}, // (137, 74) + { 0, { 0, 0, 0}}, // (138, 74) + { 0, { 0, 0, 0}}, // (139, 74) + { 0, { 0, 0, 0}}, // (140, 74) + { 0, { 0, 0, 0}}, // (141, 74) + { 0, { 0, 0, 0}}, // (142, 74) + { 0, { 0, 0, 0}}, // (143, 74) + { 0, { 0, 0, 0}}, // (144, 74) + { 0, { 0, 0, 0}}, // (145, 74) + { 0, { 0, 0, 0}}, // (146, 74) + { 0, { 0, 0, 0}}, // (147, 74) + { 0, { 0, 0, 0}}, // (148, 74) + { 0, { 0, 0, 0}}, // (149, 74) + { 0, { 0, 0, 0}}, // (150, 74) + { 0, { 0, 0, 0}}, // (151, 74) + { 0, { 0, 0, 0}}, // (152, 74) + { 0, { 0, 0, 0}}, // (153, 74) + { 0, { 0, 0, 0}}, // (154, 74) + { 0, { 0, 0, 0}}, // (155, 74) + { 0, { 0, 0, 0}}, // (156, 74) + { 0, { 0, 0, 0}}, // (157, 74) + { 0, { 0, 0, 0}}, // (158, 74) + { 0, { 0, 0, 0}}, // (159, 74) + { 0, { 0, 0, 0}}, // (160, 74) + { 0, { 0, 0, 0}}, // (161, 74) + { 0, { 0, 0, 0}}, // (162, 74) + { 0, { 0, 0, 0}}, // (163, 74) + { 0, { 0, 0, 0}}, // (164, 74) + { 0, { 0, 0, 0}}, // (165, 74) + { 0, { 0, 0, 0}}, // (166, 74) + { 0, { 0, 0, 0}}, // (167, 74) + { 0, { 0, 0, 0}}, // (168, 74) + { 0, { 0, 0, 0}}, // (169, 74) + { 0, { 0, 0, 0}}, // (170, 74) + { 0, { 0, 0, 0}}, // (171, 74) + { 0, { 0, 0, 0}}, // (172, 74) + { 0, { 0, 0, 0}}, // (173, 74) + { 0, { 0, 0, 0}}, // (174, 74) + { 0, { 0, 0, 0}}, // (175, 74) + { 47, { 0, 0, 0}}, // (176, 74) + {128, { 0, 0, 0}}, // (177, 74) + {128, { 0, 0, 0}}, // (178, 74) + {128, { 0, 0, 0}}, // (179, 74) + {128, { 0, 0, 0}}, // ( 0, 75) + {128, { 0, 0, 0}}, // ( 1, 75) + {128, { 0, 0, 0}}, // ( 2, 75) + { 27, { 0, 0, 0}}, // ( 3, 75) + { 0, { 0, 0, 0}}, // ( 4, 75) + { 0, { 0, 0, 0}}, // ( 5, 75) + { 0, { 0, 0, 0}}, // ( 6, 75) + { 0, { 0, 0, 0}}, // ( 7, 75) + { 0, { 0, 0, 0}}, // ( 8, 75) + { 0, { 0, 0, 0}}, // ( 9, 75) + { 0, { 0, 0, 0}}, // ( 10, 75) + { 0, { 0, 0, 0}}, // ( 11, 75) + { 0, { 0, 0, 0}}, // ( 12, 75) + { 0, { 0, 0, 0}}, // ( 13, 75) + { 0, { 0, 0, 0}}, // ( 14, 75) + { 0, { 0, 0, 0}}, // ( 15, 75) + { 0, { 0, 0, 0}}, // ( 16, 75) + { 0, { 0, 0, 0}}, // ( 17, 75) + { 0, { 0, 0, 0}}, // ( 18, 75) + { 0, { 0, 0, 0}}, // ( 19, 75) + { 0, { 0, 0, 0}}, // ( 20, 75) + { 0, { 0, 0, 0}}, // ( 21, 75) + { 0, { 0, 0, 0}}, // ( 22, 75) + { 0, { 0, 0, 0}}, // ( 23, 75) + { 0, { 0, 0, 0}}, // ( 24, 75) + { 0, { 0, 0, 0}}, // ( 25, 75) + { 0, { 0, 0, 0}}, // ( 26, 75) + { 0, { 0, 0, 0}}, // ( 27, 75) + { 0, { 0, 0, 0}}, // ( 28, 75) + { 0, { 0, 0, 0}}, // ( 29, 75) + { 0, { 0, 0, 0}}, // ( 30, 75) + { 0, { 0, 0, 0}}, // ( 31, 75) + { 0, { 0, 0, 0}}, // ( 32, 75) + { 0, { 0, 0, 0}}, // ( 33, 75) + { 0, { 0, 0, 0}}, // ( 34, 75) + { 0, { 0, 0, 0}}, // ( 35, 75) + { 0, { 0, 0, 0}}, // ( 36, 75) + { 0, { 0, 0, 0}}, // ( 37, 75) + { 0, { 0, 0, 0}}, // ( 38, 75) + { 0, { 0, 0, 0}}, // ( 39, 75) + { 0, { 0, 0, 0}}, // ( 40, 75) + { 0, { 0, 0, 0}}, // ( 41, 75) + { 0, { 0, 0, 0}}, // ( 42, 75) + { 0, { 0, 0, 0}}, // ( 43, 75) + { 0, { 0, 0, 0}}, // ( 44, 75) + { 0, { 0, 0, 0}}, // ( 45, 75) + { 0, { 0, 0, 0}}, // ( 46, 75) + { 0, { 0, 0, 0}}, // ( 47, 75) + { 0, { 0, 0, 0}}, // ( 48, 75) + { 0, { 0, 0, 0}}, // ( 49, 75) + { 0, { 0, 0, 0}}, // ( 50, 75) + { 0, { 0, 0, 0}}, // ( 51, 75) + { 0, { 0, 0, 0}}, // ( 52, 75) + { 0, { 0, 0, 0}}, // ( 53, 75) + { 0, { 0, 0, 0}}, // ( 54, 75) + { 0, { 0, 0, 0}}, // ( 55, 75) + { 0, { 0, 0, 0}}, // ( 56, 75) + { 0, { 0, 0, 0}}, // ( 57, 75) + { 0, { 0, 0, 0}}, // ( 58, 75) + { 0, { 0, 0, 0}}, // ( 59, 75) + { 0, { 0, 0, 0}}, // ( 60, 75) + { 0, { 0, 0, 0}}, // ( 61, 75) + { 0, { 0, 0, 0}}, // ( 62, 75) + { 0, { 0, 0, 0}}, // ( 63, 75) + { 0, { 0, 0, 0}}, // ( 64, 75) + { 0, { 0, 0, 0}}, // ( 65, 75) + { 0, { 0, 0, 0}}, // ( 66, 75) + { 0, { 0, 0, 0}}, // ( 67, 75) + { 0, { 0, 0, 0}}, // ( 68, 75) + { 0, { 0, 0, 0}}, // ( 69, 75) + { 0, { 0, 0, 0}}, // ( 70, 75) + { 0, { 0, 0, 0}}, // ( 71, 75) + { 0, { 0, 0, 0}}, // ( 72, 75) + { 0, { 0, 0, 0}}, // ( 73, 75) + { 0, { 0, 0, 0}}, // ( 74, 75) + { 0, { 0, 0, 0}}, // ( 75, 75) + { 0, { 0, 0, 0}}, // ( 76, 75) + { 0, { 0, 0, 0}}, // ( 77, 75) + { 0, { 0, 0, 0}}, // ( 78, 75) + { 0, { 0, 0, 0}}, // ( 79, 75) + { 0, { 0, 0, 0}}, // ( 80, 75) + { 0, { 0, 0, 0}}, // ( 81, 75) + { 0, { 0, 0, 0}}, // ( 82, 75) + { 0, { 0, 0, 0}}, // ( 83, 75) + { 0, { 0, 0, 0}}, // ( 84, 75) + { 0, { 0, 0, 0}}, // ( 85, 75) + { 0, { 0, 0, 0}}, // ( 86, 75) + { 0, { 0, 0, 0}}, // ( 87, 75) + { 0, { 0, 0, 0}}, // ( 88, 75) + { 0, { 0, 0, 0}}, // ( 89, 75) + { 0, { 0, 0, 0}}, // ( 90, 75) + { 0, { 0, 0, 0}}, // ( 91, 75) + { 0, { 0, 0, 0}}, // ( 92, 75) + { 0, { 0, 0, 0}}, // ( 93, 75) + { 0, { 0, 0, 0}}, // ( 94, 75) + { 0, { 0, 0, 0}}, // ( 95, 75) + { 0, { 0, 0, 0}}, // ( 96, 75) + { 0, { 0, 0, 0}}, // ( 97, 75) + { 0, { 0, 0, 0}}, // ( 98, 75) + { 0, { 0, 0, 0}}, // ( 99, 75) + { 0, { 0, 0, 0}}, // (100, 75) + { 0, { 0, 0, 0}}, // (101, 75) + { 0, { 0, 0, 0}}, // (102, 75) + { 0, { 0, 0, 0}}, // (103, 75) + { 0, { 0, 0, 0}}, // (104, 75) + { 0, { 0, 0, 0}}, // (105, 75) + { 0, { 0, 0, 0}}, // (106, 75) + { 0, { 0, 0, 0}}, // (107, 75) + { 0, { 0, 0, 0}}, // (108, 75) + { 0, { 0, 0, 0}}, // (109, 75) + { 0, { 0, 0, 0}}, // (110, 75) + { 0, { 0, 0, 0}}, // (111, 75) + { 0, { 0, 0, 0}}, // (112, 75) + { 0, { 0, 0, 0}}, // (113, 75) + { 0, { 0, 0, 0}}, // (114, 75) + { 0, { 0, 0, 0}}, // (115, 75) + { 0, { 0, 0, 0}}, // (116, 75) + { 0, { 0, 0, 0}}, // (117, 75) + { 0, { 0, 0, 0}}, // (118, 75) + { 0, { 0, 0, 0}}, // (119, 75) + { 0, { 0, 0, 0}}, // (120, 75) + { 0, { 0, 0, 0}}, // (121, 75) + { 0, { 0, 0, 0}}, // (122, 75) + { 0, { 0, 0, 0}}, // (123, 75) + { 0, { 0, 0, 0}}, // (124, 75) + { 0, { 0, 0, 0}}, // (125, 75) + { 0, { 0, 0, 0}}, // (126, 75) + { 0, { 0, 0, 0}}, // (127, 75) + { 0, { 0, 0, 0}}, // (128, 75) + { 0, { 0, 0, 0}}, // (129, 75) + { 0, { 0, 0, 0}}, // (130, 75) + { 0, { 0, 0, 0}}, // (131, 75) + { 0, { 0, 0, 0}}, // (132, 75) + { 0, { 0, 0, 0}}, // (133, 75) + { 0, { 0, 0, 0}}, // (134, 75) + { 0, { 0, 0, 0}}, // (135, 75) + { 0, { 0, 0, 0}}, // (136, 75) + { 0, { 0, 0, 0}}, // (137, 75) + { 0, { 0, 0, 0}}, // (138, 75) + { 0, { 0, 0, 0}}, // (139, 75) + { 0, { 0, 0, 0}}, // (140, 75) + { 0, { 0, 0, 0}}, // (141, 75) + { 0, { 0, 0, 0}}, // (142, 75) + { 0, { 0, 0, 0}}, // (143, 75) + { 0, { 0, 0, 0}}, // (144, 75) + { 0, { 0, 0, 0}}, // (145, 75) + { 0, { 0, 0, 0}}, // (146, 75) + { 0, { 0, 0, 0}}, // (147, 75) + { 0, { 0, 0, 0}}, // (148, 75) + { 0, { 0, 0, 0}}, // (149, 75) + { 0, { 0, 0, 0}}, // (150, 75) + { 0, { 0, 0, 0}}, // (151, 75) + { 0, { 0, 0, 0}}, // (152, 75) + { 0, { 0, 0, 0}}, // (153, 75) + { 0, { 0, 0, 0}}, // (154, 75) + { 0, { 0, 0, 0}}, // (155, 75) + { 0, { 0, 0, 0}}, // (156, 75) + { 0, { 0, 0, 0}}, // (157, 75) + { 0, { 0, 0, 0}}, // (158, 75) + { 0, { 0, 0, 0}}, // (159, 75) + { 0, { 0, 0, 0}}, // (160, 75) + { 0, { 0, 0, 0}}, // (161, 75) + { 0, { 0, 0, 0}}, // (162, 75) + { 0, { 0, 0, 0}}, // (163, 75) + { 0, { 0, 0, 0}}, // (164, 75) + { 0, { 0, 0, 0}}, // (165, 75) + { 0, { 0, 0, 0}}, // (166, 75) + { 0, { 0, 0, 0}}, // (167, 75) + { 0, { 0, 0, 0}}, // (168, 75) + { 0, { 0, 0, 0}}, // (169, 75) + { 0, { 0, 0, 0}}, // (170, 75) + { 0, { 0, 0, 0}}, // (171, 75) + { 0, { 0, 0, 0}}, // (172, 75) + { 0, { 0, 0, 0}}, // (173, 75) + { 0, { 0, 0, 0}}, // (174, 75) + { 0, { 0, 0, 0}}, // (175, 75) + { 25, { 0, 0, 0}}, // (176, 75) + {128, { 0, 0, 0}}, // (177, 75) + {128, { 0, 0, 0}}, // (178, 75) + {128, { 0, 0, 0}}, // (179, 75) + {128, { 0, 0, 0}}, // ( 0, 76) + {128, { 0, 0, 0}}, // ( 1, 76) + {127, { 0, 0, 0}}, // ( 2, 76) + { 6, { 0, 0, 0}}, // ( 3, 76) + { 0, { 0, 0, 0}}, // ( 4, 76) + { 0, { 0, 0, 0}}, // ( 5, 76) + { 0, { 0, 0, 0}}, // ( 6, 76) + { 0, { 0, 0, 0}}, // ( 7, 76) + { 0, { 0, 0, 0}}, // ( 8, 76) + { 0, { 0, 0, 0}}, // ( 9, 76) + { 0, { 0, 0, 0}}, // ( 10, 76) + { 0, { 0, 0, 0}}, // ( 11, 76) + { 0, { 0, 0, 0}}, // ( 12, 76) + { 0, { 0, 0, 0}}, // ( 13, 76) + { 0, { 0, 0, 0}}, // ( 14, 76) + { 0, { 0, 0, 0}}, // ( 15, 76) + { 0, { 0, 0, 0}}, // ( 16, 76) + { 0, { 0, 0, 0}}, // ( 17, 76) + { 0, { 0, 0, 0}}, // ( 18, 76) + { 0, { 0, 0, 0}}, // ( 19, 76) + { 0, { 0, 0, 0}}, // ( 20, 76) + { 0, { 0, 0, 0}}, // ( 21, 76) + { 0, { 0, 0, 0}}, // ( 22, 76) + { 0, { 0, 0, 0}}, // ( 23, 76) + { 0, { 0, 0, 0}}, // ( 24, 76) + { 0, { 0, 0, 0}}, // ( 25, 76) + { 0, { 0, 0, 0}}, // ( 26, 76) + { 0, { 0, 0, 0}}, // ( 27, 76) + { 0, { 0, 0, 0}}, // ( 28, 76) + { 0, { 0, 0, 0}}, // ( 29, 76) + { 0, { 0, 0, 0}}, // ( 30, 76) + { 0, { 0, 0, 0}}, // ( 31, 76) + { 0, { 0, 0, 0}}, // ( 32, 76) + { 0, { 0, 0, 0}}, // ( 33, 76) + { 0, { 0, 0, 0}}, // ( 34, 76) + { 0, { 0, 0, 0}}, // ( 35, 76) + { 0, { 0, 0, 0}}, // ( 36, 76) + { 0, { 0, 0, 0}}, // ( 37, 76) + { 0, { 0, 0, 0}}, // ( 38, 76) + { 0, { 0, 0, 0}}, // ( 39, 76) + { 0, { 0, 0, 0}}, // ( 40, 76) + { 0, { 0, 0, 0}}, // ( 41, 76) + { 0, { 0, 0, 0}}, // ( 42, 76) + { 0, { 0, 0, 0}}, // ( 43, 76) + { 0, { 0, 0, 0}}, // ( 44, 76) + { 0, { 0, 0, 0}}, // ( 45, 76) + { 0, { 0, 0, 0}}, // ( 46, 76) + { 0, { 0, 0, 0}}, // ( 47, 76) + { 0, { 0, 0, 0}}, // ( 48, 76) + { 0, { 0, 0, 0}}, // ( 49, 76) + { 0, { 0, 0, 0}}, // ( 50, 76) + { 0, { 0, 0, 0}}, // ( 51, 76) + { 0, { 0, 0, 0}}, // ( 52, 76) + { 0, { 0, 0, 0}}, // ( 53, 76) + { 0, { 0, 0, 0}}, // ( 54, 76) + { 0, { 0, 0, 0}}, // ( 55, 76) + { 0, { 0, 0, 0}}, // ( 56, 76) + { 0, { 0, 0, 0}}, // ( 57, 76) + { 0, { 0, 0, 0}}, // ( 58, 76) + { 0, { 0, 0, 0}}, // ( 59, 76) + { 0, { 0, 0, 0}}, // ( 60, 76) + { 0, { 0, 0, 0}}, // ( 61, 76) + { 0, { 0, 0, 0}}, // ( 62, 76) + { 0, { 0, 0, 0}}, // ( 63, 76) + { 0, { 0, 0, 0}}, // ( 64, 76) + { 0, { 0, 0, 0}}, // ( 65, 76) + { 0, { 0, 0, 0}}, // ( 66, 76) + { 0, { 0, 0, 0}}, // ( 67, 76) + { 0, { 0, 0, 0}}, // ( 68, 76) + { 0, { 0, 0, 0}}, // ( 69, 76) + { 0, { 0, 0, 0}}, // ( 70, 76) + { 0, { 0, 0, 0}}, // ( 71, 76) + { 0, { 0, 0, 0}}, // ( 72, 76) + { 0, { 0, 0, 0}}, // ( 73, 76) + { 0, { 0, 0, 0}}, // ( 74, 76) + { 0, { 0, 0, 0}}, // ( 75, 76) + { 0, { 0, 0, 0}}, // ( 76, 76) + { 0, { 0, 0, 0}}, // ( 77, 76) + { 0, { 0, 0, 0}}, // ( 78, 76) + { 0, { 0, 0, 0}}, // ( 79, 76) + { 0, { 0, 0, 0}}, // ( 80, 76) + { 0, { 0, 0, 0}}, // ( 81, 76) + { 0, { 0, 0, 0}}, // ( 82, 76) + { 0, { 0, 0, 0}}, // ( 83, 76) + { 0, { 0, 0, 0}}, // ( 84, 76) + { 0, { 0, 0, 0}}, // ( 85, 76) + { 0, { 0, 0, 0}}, // ( 86, 76) + { 0, { 0, 0, 0}}, // ( 87, 76) + { 0, { 0, 0, 0}}, // ( 88, 76) + { 0, { 0, 0, 0}}, // ( 89, 76) + { 0, { 0, 0, 0}}, // ( 90, 76) + { 0, { 0, 0, 0}}, // ( 91, 76) + { 0, { 0, 0, 0}}, // ( 92, 76) + { 0, { 0, 0, 0}}, // ( 93, 76) + { 0, { 0, 0, 0}}, // ( 94, 76) + { 0, { 0, 0, 0}}, // ( 95, 76) + { 0, { 0, 0, 0}}, // ( 96, 76) + { 0, { 0, 0, 0}}, // ( 97, 76) + { 0, { 0, 0, 0}}, // ( 98, 76) + { 0, { 0, 0, 0}}, // ( 99, 76) + { 0, { 0, 0, 0}}, // (100, 76) + { 0, { 0, 0, 0}}, // (101, 76) + { 0, { 0, 0, 0}}, // (102, 76) + { 0, { 0, 0, 0}}, // (103, 76) + { 0, { 0, 0, 0}}, // (104, 76) + { 0, { 0, 0, 0}}, // (105, 76) + { 0, { 0, 0, 0}}, // (106, 76) + { 0, { 0, 0, 0}}, // (107, 76) + { 0, { 0, 0, 0}}, // (108, 76) + { 0, { 0, 0, 0}}, // (109, 76) + { 0, { 0, 0, 0}}, // (110, 76) + { 0, { 0, 0, 0}}, // (111, 76) + { 0, { 0, 0, 0}}, // (112, 76) + { 0, { 0, 0, 0}}, // (113, 76) + { 0, { 0, 0, 0}}, // (114, 76) + { 0, { 0, 0, 0}}, // (115, 76) + { 0, { 0, 0, 0}}, // (116, 76) + { 0, { 0, 0, 0}}, // (117, 76) + { 0, { 0, 0, 0}}, // (118, 76) + { 0, { 0, 0, 0}}, // (119, 76) + { 0, { 0, 0, 0}}, // (120, 76) + { 0, { 0, 0, 0}}, // (121, 76) + { 0, { 0, 0, 0}}, // (122, 76) + { 0, { 0, 0, 0}}, // (123, 76) + { 0, { 0, 0, 0}}, // (124, 76) + { 0, { 0, 0, 0}}, // (125, 76) + { 0, { 0, 0, 0}}, // (126, 76) + { 0, { 0, 0, 0}}, // (127, 76) + { 0, { 0, 0, 0}}, // (128, 76) + { 0, { 0, 0, 0}}, // (129, 76) + { 0, { 0, 0, 0}}, // (130, 76) + { 0, { 0, 0, 0}}, // (131, 76) + { 0, { 0, 0, 0}}, // (132, 76) + { 0, { 0, 0, 0}}, // (133, 76) + { 0, { 0, 0, 0}}, // (134, 76) + { 0, { 0, 0, 0}}, // (135, 76) + { 0, { 0, 0, 0}}, // (136, 76) + { 0, { 0, 0, 0}}, // (137, 76) + { 0, { 0, 0, 0}}, // (138, 76) + { 0, { 0, 0, 0}}, // (139, 76) + { 0, { 0, 0, 0}}, // (140, 76) + { 0, { 0, 0, 0}}, // (141, 76) + { 0, { 0, 0, 0}}, // (142, 76) + { 0, { 0, 0, 0}}, // (143, 76) + { 0, { 0, 0, 0}}, // (144, 76) + { 0, { 0, 0, 0}}, // (145, 76) + { 0, { 0, 0, 0}}, // (146, 76) + { 0, { 0, 0, 0}}, // (147, 76) + { 0, { 0, 0, 0}}, // (148, 76) + { 0, { 0, 0, 0}}, // (149, 76) + { 0, { 0, 0, 0}}, // (150, 76) + { 0, { 0, 0, 0}}, // (151, 76) + { 0, { 0, 0, 0}}, // (152, 76) + { 0, { 0, 0, 0}}, // (153, 76) + { 0, { 0, 0, 0}}, // (154, 76) + { 0, { 0, 0, 0}}, // (155, 76) + { 0, { 0, 0, 0}}, // (156, 76) + { 0, { 0, 0, 0}}, // (157, 76) + { 0, { 0, 0, 0}}, // (158, 76) + { 0, { 0, 0, 0}}, // (159, 76) + { 0, { 0, 0, 0}}, // (160, 76) + { 0, { 0, 0, 0}}, // (161, 76) + { 0, { 0, 0, 0}}, // (162, 76) + { 0, { 0, 0, 0}}, // (163, 76) + { 0, { 0, 0, 0}}, // (164, 76) + { 0, { 0, 0, 0}}, // (165, 76) + { 0, { 0, 0, 0}}, // (166, 76) + { 0, { 0, 0, 0}}, // (167, 76) + { 0, { 0, 0, 0}}, // (168, 76) + { 0, { 0, 0, 0}}, // (169, 76) + { 0, { 0, 0, 0}}, // (170, 76) + { 0, { 0, 0, 0}}, // (171, 76) + { 0, { 0, 0, 0}}, // (172, 76) + { 0, { 0, 0, 0}}, // (173, 76) + { 0, { 0, 0, 0}}, // (174, 76) + { 0, { 0, 0, 0}}, // (175, 76) + { 5, { 0, 0, 0}}, // (176, 76) + {127, { 0, 0, 0}}, // (177, 76) + {128, { 0, 0, 0}}, // (178, 76) + {128, { 0, 0, 0}}, // (179, 76) + {128, { 0, 0, 0}}, // ( 0, 77) + {128, { 0, 0, 0}}, // ( 1, 77) + {115, { 0, 0, 0}}, // ( 2, 77) + { 0, { 0, 0, 0}}, // ( 3, 77) + { 0, { 0, 0, 0}}, // ( 4, 77) + { 0, { 0, 0, 0}}, // ( 5, 77) + { 0, { 0, 0, 0}}, // ( 6, 77) + { 0, { 0, 0, 0}}, // ( 7, 77) + { 0, { 0, 0, 0}}, // ( 8, 77) + { 0, { 0, 0, 0}}, // ( 9, 77) + { 0, { 0, 0, 0}}, // ( 10, 77) + { 0, { 0, 0, 0}}, // ( 11, 77) + { 0, { 0, 0, 0}}, // ( 12, 77) + { 0, { 0, 0, 0}}, // ( 13, 77) + { 0, { 0, 0, 0}}, // ( 14, 77) + { 0, { 0, 0, 0}}, // ( 15, 77) + { 0, { 0, 0, 0}}, // ( 16, 77) + { 0, { 0, 0, 0}}, // ( 17, 77) + { 0, { 0, 0, 0}}, // ( 18, 77) + { 0, { 0, 0, 0}}, // ( 19, 77) + { 0, { 0, 0, 0}}, // ( 20, 77) + { 0, { 0, 0, 0}}, // ( 21, 77) + { 0, { 0, 0, 0}}, // ( 22, 77) + { 0, { 0, 0, 0}}, // ( 23, 77) + { 0, { 0, 0, 0}}, // ( 24, 77) + { 0, { 0, 0, 0}}, // ( 25, 77) + { 0, { 0, 0, 0}}, // ( 26, 77) + { 0, { 0, 0, 0}}, // ( 27, 77) + { 0, { 0, 0, 0}}, // ( 28, 77) + { 0, { 0, 0, 0}}, // ( 29, 77) + { 0, { 0, 0, 0}}, // ( 30, 77) + { 0, { 0, 0, 0}}, // ( 31, 77) + { 0, { 0, 0, 0}}, // ( 32, 77) + { 0, { 0, 0, 0}}, // ( 33, 77) + { 0, { 0, 0, 0}}, // ( 34, 77) + { 0, { 0, 0, 0}}, // ( 35, 77) + { 0, { 0, 0, 0}}, // ( 36, 77) + { 0, { 0, 0, 0}}, // ( 37, 77) + { 0, { 0, 0, 0}}, // ( 38, 77) + { 0, { 0, 0, 0}}, // ( 39, 77) + { 0, { 0, 0, 0}}, // ( 40, 77) + { 0, { 0, 0, 0}}, // ( 41, 77) + { 0, { 0, 0, 0}}, // ( 42, 77) + { 0, { 0, 0, 0}}, // ( 43, 77) + { 0, { 0, 0, 0}}, // ( 44, 77) + { 0, { 0, 0, 0}}, // ( 45, 77) + { 0, { 0, 0, 0}}, // ( 46, 77) + { 0, { 0, 0, 0}}, // ( 47, 77) + { 0, { 0, 0, 0}}, // ( 48, 77) + { 0, { 0, 0, 0}}, // ( 49, 77) + { 0, { 0, 0, 0}}, // ( 50, 77) + { 0, { 0, 0, 0}}, // ( 51, 77) + { 0, { 0, 0, 0}}, // ( 52, 77) + { 0, { 0, 0, 0}}, // ( 53, 77) + { 0, { 0, 0, 0}}, // ( 54, 77) + { 0, { 0, 0, 0}}, // ( 55, 77) + { 0, { 0, 0, 0}}, // ( 56, 77) + { 0, { 0, 0, 0}}, // ( 57, 77) + { 0, { 0, 0, 0}}, // ( 58, 77) + { 0, { 0, 0, 0}}, // ( 59, 77) + { 0, { 0, 0, 0}}, // ( 60, 77) + { 0, { 0, 0, 0}}, // ( 61, 77) + { 0, { 0, 0, 0}}, // ( 62, 77) + { 0, { 0, 0, 0}}, // ( 63, 77) + { 0, { 0, 0, 0}}, // ( 64, 77) + { 0, { 0, 0, 0}}, // ( 65, 77) + { 0, { 0, 0, 0}}, // ( 66, 77) + { 0, { 0, 0, 0}}, // ( 67, 77) + { 0, { 0, 0, 0}}, // ( 68, 77) + { 0, { 0, 0, 0}}, // ( 69, 77) + { 0, { 0, 0, 0}}, // ( 70, 77) + { 0, { 0, 0, 0}}, // ( 71, 77) + { 0, { 0, 0, 0}}, // ( 72, 77) + { 0, { 0, 0, 0}}, // ( 73, 77) + { 0, { 0, 0, 0}}, // ( 74, 77) + { 0, { 0, 0, 0}}, // ( 75, 77) + { 0, { 0, 0, 0}}, // ( 76, 77) + { 0, { 0, 0, 0}}, // ( 77, 77) + { 0, { 0, 0, 0}}, // ( 78, 77) + { 0, { 0, 0, 0}}, // ( 79, 77) + { 0, { 0, 0, 0}}, // ( 80, 77) + { 0, { 0, 0, 0}}, // ( 81, 77) + { 0, { 0, 0, 0}}, // ( 82, 77) + { 0, { 0, 0, 0}}, // ( 83, 77) + { 0, { 0, 0, 0}}, // ( 84, 77) + { 0, { 0, 0, 0}}, // ( 85, 77) + { 0, { 0, 0, 0}}, // ( 86, 77) + { 0, { 0, 0, 0}}, // ( 87, 77) + { 0, { 0, 0, 0}}, // ( 88, 77) + { 0, { 0, 0, 0}}, // ( 89, 77) + { 0, { 0, 0, 0}}, // ( 90, 77) + { 0, { 0, 0, 0}}, // ( 91, 77) + { 0, { 0, 0, 0}}, // ( 92, 77) + { 0, { 0, 0, 0}}, // ( 93, 77) + { 0, { 0, 0, 0}}, // ( 94, 77) + { 0, { 0, 0, 0}}, // ( 95, 77) + { 0, { 0, 0, 0}}, // ( 96, 77) + { 0, { 0, 0, 0}}, // ( 97, 77) + { 0, { 0, 0, 0}}, // ( 98, 77) + { 0, { 0, 0, 0}}, // ( 99, 77) + { 0, { 0, 0, 0}}, // (100, 77) + { 0, { 0, 0, 0}}, // (101, 77) + { 0, { 0, 0, 0}}, // (102, 77) + { 0, { 0, 0, 0}}, // (103, 77) + { 0, { 0, 0, 0}}, // (104, 77) + { 0, { 0, 0, 0}}, // (105, 77) + { 0, { 0, 0, 0}}, // (106, 77) + { 0, { 0, 0, 0}}, // (107, 77) + { 0, { 0, 0, 0}}, // (108, 77) + { 0, { 0, 0, 0}}, // (109, 77) + { 0, { 0, 0, 0}}, // (110, 77) + { 0, { 0, 0, 0}}, // (111, 77) + { 0, { 0, 0, 0}}, // (112, 77) + { 0, { 0, 0, 0}}, // (113, 77) + { 0, { 0, 0, 0}}, // (114, 77) + { 0, { 0, 0, 0}}, // (115, 77) + { 0, { 0, 0, 0}}, // (116, 77) + { 0, { 0, 0, 0}}, // (117, 77) + { 0, { 0, 0, 0}}, // (118, 77) + { 0, { 0, 0, 0}}, // (119, 77) + { 0, { 0, 0, 0}}, // (120, 77) + { 0, { 0, 0, 0}}, // (121, 77) + { 0, { 0, 0, 0}}, // (122, 77) + { 0, { 0, 0, 0}}, // (123, 77) + { 0, { 0, 0, 0}}, // (124, 77) + { 0, { 0, 0, 0}}, // (125, 77) + { 0, { 0, 0, 0}}, // (126, 77) + { 0, { 0, 0, 0}}, // (127, 77) + { 0, { 0, 0, 0}}, // (128, 77) + { 0, { 0, 0, 0}}, // (129, 77) + { 0, { 0, 0, 0}}, // (130, 77) + { 0, { 0, 0, 0}}, // (131, 77) + { 0, { 0, 0, 0}}, // (132, 77) + { 0, { 0, 0, 0}}, // (133, 77) + { 0, { 0, 0, 0}}, // (134, 77) + { 0, { 0, 0, 0}}, // (135, 77) + { 0, { 0, 0, 0}}, // (136, 77) + { 0, { 0, 0, 0}}, // (137, 77) + { 0, { 0, 0, 0}}, // (138, 77) + { 0, { 0, 0, 0}}, // (139, 77) + { 0, { 0, 0, 0}}, // (140, 77) + { 0, { 0, 0, 0}}, // (141, 77) + { 0, { 0, 0, 0}}, // (142, 77) + { 0, { 0, 0, 0}}, // (143, 77) + { 0, { 0, 0, 0}}, // (144, 77) + { 0, { 0, 0, 0}}, // (145, 77) + { 0, { 0, 0, 0}}, // (146, 77) + { 0, { 0, 0, 0}}, // (147, 77) + { 0, { 0, 0, 0}}, // (148, 77) + { 0, { 0, 0, 0}}, // (149, 77) + { 0, { 0, 0, 0}}, // (150, 77) + { 0, { 0, 0, 0}}, // (151, 77) + { 0, { 0, 0, 0}}, // (152, 77) + { 0, { 0, 0, 0}}, // (153, 77) + { 0, { 0, 0, 0}}, // (154, 77) + { 0, { 0, 0, 0}}, // (155, 77) + { 0, { 0, 0, 0}}, // (156, 77) + { 0, { 0, 0, 0}}, // (157, 77) + { 0, { 0, 0, 0}}, // (158, 77) + { 0, { 0, 0, 0}}, // (159, 77) + { 0, { 0, 0, 0}}, // (160, 77) + { 0, { 0, 0, 0}}, // (161, 77) + { 0, { 0, 0, 0}}, // (162, 77) + { 0, { 0, 0, 0}}, // (163, 77) + { 0, { 0, 0, 0}}, // (164, 77) + { 0, { 0, 0, 0}}, // (165, 77) + { 0, { 0, 0, 0}}, // (166, 77) + { 0, { 0, 0, 0}}, // (167, 77) + { 0, { 0, 0, 0}}, // (168, 77) + { 0, { 0, 0, 0}}, // (169, 77) + { 0, { 0, 0, 0}}, // (170, 77) + { 0, { 0, 0, 0}}, // (171, 77) + { 0, { 0, 0, 0}}, // (172, 77) + { 0, { 0, 0, 0}}, // (173, 77) + { 0, { 0, 0, 0}}, // (174, 77) + { 0, { 0, 0, 0}}, // (175, 77) + { 0, { 0, 0, 0}}, // (176, 77) + {115, { 0, 0, 0}}, // (177, 77) + {128, { 0, 0, 0}}, // (178, 77) + {128, { 0, 0, 0}}, // (179, 77) + {128, { 0, 0, 0}}, // ( 0, 78) + {128, { 0, 0, 0}}, // ( 1, 78) + { 99, { 0, 0, 0}}, // ( 2, 78) + { 0, { 0, 0, 0}}, // ( 3, 78) + { 0, { 0, 0, 0}}, // ( 4, 78) + { 0, { 0, 0, 0}}, // ( 5, 78) + { 0, { 0, 0, 0}}, // ( 6, 78) + { 0, { 0, 0, 0}}, // ( 7, 78) + { 0, { 0, 0, 0}}, // ( 8, 78) + { 0, { 0, 0, 0}}, // ( 9, 78) + { 0, { 0, 0, 0}}, // ( 10, 78) + { 0, { 0, 0, 0}}, // ( 11, 78) + { 0, { 0, 0, 0}}, // ( 12, 78) + { 0, { 0, 0, 0}}, // ( 13, 78) + { 0, { 0, 0, 0}}, // ( 14, 78) + { 0, { 0, 0, 0}}, // ( 15, 78) + { 0, { 0, 0, 0}}, // ( 16, 78) + { 0, { 0, 0, 0}}, // ( 17, 78) + { 0, { 0, 0, 0}}, // ( 18, 78) + { 0, { 0, 0, 0}}, // ( 19, 78) + { 0, { 0, 0, 0}}, // ( 20, 78) + { 0, { 0, 0, 0}}, // ( 21, 78) + { 0, { 0, 0, 0}}, // ( 22, 78) + { 0, { 0, 0, 0}}, // ( 23, 78) + { 0, { 0, 0, 0}}, // ( 24, 78) + { 0, { 0, 0, 0}}, // ( 25, 78) + { 0, { 0, 0, 0}}, // ( 26, 78) + { 0, { 0, 0, 0}}, // ( 27, 78) + { 0, { 0, 0, 0}}, // ( 28, 78) + { 0, { 0, 0, 0}}, // ( 29, 78) + { 0, { 0, 0, 0}}, // ( 30, 78) + { 0, { 0, 0, 0}}, // ( 31, 78) + { 0, { 0, 0, 0}}, // ( 32, 78) + { 0, { 0, 0, 0}}, // ( 33, 78) + { 0, { 0, 0, 0}}, // ( 34, 78) + { 0, { 0, 0, 0}}, // ( 35, 78) + { 0, { 0, 0, 0}}, // ( 36, 78) + { 0, { 0, 0, 0}}, // ( 37, 78) + { 0, { 0, 0, 0}}, // ( 38, 78) + { 0, { 0, 0, 0}}, // ( 39, 78) + { 0, { 0, 0, 0}}, // ( 40, 78) + { 0, { 0, 0, 0}}, // ( 41, 78) + { 0, { 0, 0, 0}}, // ( 42, 78) + { 0, { 0, 0, 0}}, // ( 43, 78) + { 0, { 0, 0, 0}}, // ( 44, 78) + { 0, { 0, 0, 0}}, // ( 45, 78) + { 0, { 0, 0, 0}}, // ( 46, 78) + { 0, { 0, 0, 0}}, // ( 47, 78) + { 0, { 0, 0, 0}}, // ( 48, 78) + { 0, { 0, 0, 0}}, // ( 49, 78) + { 0, { 0, 0, 0}}, // ( 50, 78) + { 0, { 0, 0, 0}}, // ( 51, 78) + { 0, { 0, 0, 0}}, // ( 52, 78) + { 0, { 0, 0, 0}}, // ( 53, 78) + { 0, { 0, 0, 0}}, // ( 54, 78) + { 0, { 0, 0, 0}}, // ( 55, 78) + { 0, { 0, 0, 0}}, // ( 56, 78) + { 0, { 0, 0, 0}}, // ( 57, 78) + { 0, { 0, 0, 0}}, // ( 58, 78) + { 0, { 0, 0, 0}}, // ( 59, 78) + { 0, { 0, 0, 0}}, // ( 60, 78) + { 0, { 0, 0, 0}}, // ( 61, 78) + { 0, { 0, 0, 0}}, // ( 62, 78) + { 0, { 0, 0, 0}}, // ( 63, 78) + { 0, { 0, 0, 0}}, // ( 64, 78) + { 0, { 0, 0, 0}}, // ( 65, 78) + { 0, { 0, 0, 0}}, // ( 66, 78) + { 0, { 0, 0, 0}}, // ( 67, 78) + { 0, { 0, 0, 0}}, // ( 68, 78) + { 0, { 0, 0, 0}}, // ( 69, 78) + { 0, { 0, 0, 0}}, // ( 70, 78) + { 0, { 0, 0, 0}}, // ( 71, 78) + { 0, { 0, 0, 0}}, // ( 72, 78) + { 0, { 0, 0, 0}}, // ( 73, 78) + { 0, { 0, 0, 0}}, // ( 74, 78) + { 0, { 0, 0, 0}}, // ( 75, 78) + { 0, { 0, 0, 0}}, // ( 76, 78) + { 0, { 0, 0, 0}}, // ( 77, 78) + { 0, { 0, 0, 0}}, // ( 78, 78) + { 0, { 0, 0, 0}}, // ( 79, 78) + { 0, { 0, 0, 0}}, // ( 80, 78) + { 0, { 0, 0, 0}}, // ( 81, 78) + { 0, { 0, 0, 0}}, // ( 82, 78) + { 0, { 0, 0, 0}}, // ( 83, 78) + { 0, { 0, 0, 0}}, // ( 84, 78) + { 0, { 0, 0, 0}}, // ( 85, 78) + { 0, { 0, 0, 0}}, // ( 86, 78) + { 0, { 0, 0, 0}}, // ( 87, 78) + { 0, { 0, 0, 0}}, // ( 88, 78) + { 0, { 0, 0, 0}}, // ( 89, 78) + { 0, { 0, 0, 0}}, // ( 90, 78) + { 0, { 0, 0, 0}}, // ( 91, 78) + { 0, { 0, 0, 0}}, // ( 92, 78) + { 0, { 0, 0, 0}}, // ( 93, 78) + { 0, { 0, 0, 0}}, // ( 94, 78) + { 0, { 0, 0, 0}}, // ( 95, 78) + { 0, { 0, 0, 0}}, // ( 96, 78) + { 0, { 0, 0, 0}}, // ( 97, 78) + { 0, { 0, 0, 0}}, // ( 98, 78) + { 0, { 0, 0, 0}}, // ( 99, 78) + { 0, { 0, 0, 0}}, // (100, 78) + { 0, { 0, 0, 0}}, // (101, 78) + { 0, { 0, 0, 0}}, // (102, 78) + { 0, { 0, 0, 0}}, // (103, 78) + { 0, { 0, 0, 0}}, // (104, 78) + { 0, { 0, 0, 0}}, // (105, 78) + { 0, { 0, 0, 0}}, // (106, 78) + { 0, { 0, 0, 0}}, // (107, 78) + { 0, { 0, 0, 0}}, // (108, 78) + { 0, { 0, 0, 0}}, // (109, 78) + { 0, { 0, 0, 0}}, // (110, 78) + { 0, { 0, 0, 0}}, // (111, 78) + { 0, { 0, 0, 0}}, // (112, 78) + { 0, { 0, 0, 0}}, // (113, 78) + { 0, { 0, 0, 0}}, // (114, 78) + { 0, { 0, 0, 0}}, // (115, 78) + { 0, { 0, 0, 0}}, // (116, 78) + { 0, { 0, 0, 0}}, // (117, 78) + { 0, { 0, 0, 0}}, // (118, 78) + { 0, { 0, 0, 0}}, // (119, 78) + { 0, { 0, 0, 0}}, // (120, 78) + { 0, { 0, 0, 0}}, // (121, 78) + { 0, { 0, 0, 0}}, // (122, 78) + { 0, { 0, 0, 0}}, // (123, 78) + { 0, { 0, 0, 0}}, // (124, 78) + { 0, { 0, 0, 0}}, // (125, 78) + { 0, { 0, 0, 0}}, // (126, 78) + { 0, { 0, 0, 0}}, // (127, 78) + { 0, { 0, 0, 0}}, // (128, 78) + { 0, { 0, 0, 0}}, // (129, 78) + { 0, { 0, 0, 0}}, // (130, 78) + { 0, { 0, 0, 0}}, // (131, 78) + { 0, { 0, 0, 0}}, // (132, 78) + { 0, { 0, 0, 0}}, // (133, 78) + { 0, { 0, 0, 0}}, // (134, 78) + { 0, { 0, 0, 0}}, // (135, 78) + { 0, { 0, 0, 0}}, // (136, 78) + { 0, { 0, 0, 0}}, // (137, 78) + { 0, { 0, 0, 0}}, // (138, 78) + { 0, { 0, 0, 0}}, // (139, 78) + { 0, { 0, 0, 0}}, // (140, 78) + { 0, { 0, 0, 0}}, // (141, 78) + { 0, { 0, 0, 0}}, // (142, 78) + { 0, { 0, 0, 0}}, // (143, 78) + { 0, { 0, 0, 0}}, // (144, 78) + { 0, { 0, 0, 0}}, // (145, 78) + { 0, { 0, 0, 0}}, // (146, 78) + { 0, { 0, 0, 0}}, // (147, 78) + { 0, { 0, 0, 0}}, // (148, 78) + { 0, { 0, 0, 0}}, // (149, 78) + { 0, { 0, 0, 0}}, // (150, 78) + { 0, { 0, 0, 0}}, // (151, 78) + { 0, { 0, 0, 0}}, // (152, 78) + { 0, { 0, 0, 0}}, // (153, 78) + { 0, { 0, 0, 0}}, // (154, 78) + { 0, { 0, 0, 0}}, // (155, 78) + { 0, { 0, 0, 0}}, // (156, 78) + { 0, { 0, 0, 0}}, // (157, 78) + { 0, { 0, 0, 0}}, // (158, 78) + { 0, { 0, 0, 0}}, // (159, 78) + { 0, { 0, 0, 0}}, // (160, 78) + { 0, { 0, 0, 0}}, // (161, 78) + { 0, { 0, 0, 0}}, // (162, 78) + { 0, { 0, 0, 0}}, // (163, 78) + { 0, { 0, 0, 0}}, // (164, 78) + { 0, { 0, 0, 0}}, // (165, 78) + { 0, { 0, 0, 0}}, // (166, 78) + { 0, { 0, 0, 0}}, // (167, 78) + { 0, { 0, 0, 0}}, // (168, 78) + { 0, { 0, 0, 0}}, // (169, 78) + { 0, { 0, 0, 0}}, // (170, 78) + { 0, { 0, 0, 0}}, // (171, 78) + { 0, { 0, 0, 0}}, // (172, 78) + { 0, { 0, 0, 0}}, // (173, 78) + { 0, { 0, 0, 0}}, // (174, 78) + { 0, { 0, 0, 0}}, // (175, 78) + { 0, { 0, 0, 0}}, // (176, 78) + { 99, { 0, 0, 0}}, // (177, 78) + {128, { 0, 0, 0}}, // (178, 78) + {128, { 0, 0, 0}}, // (179, 78) + {128, { 0, 0, 0}}, // ( 0, 79) + {128, { 0, 0, 0}}, // ( 1, 79) + { 83, { 0, 0, 0}}, // ( 2, 79) + { 0, { 0, 0, 0}}, // ( 3, 79) + { 0, { 0, 0, 0}}, // ( 4, 79) + { 0, { 0, 0, 0}}, // ( 5, 79) + { 0, { 0, 0, 0}}, // ( 6, 79) + { 0, { 0, 0, 0}}, // ( 7, 79) + { 0, { 0, 0, 0}}, // ( 8, 79) + { 0, { 0, 0, 0}}, // ( 9, 79) + { 0, { 0, 0, 0}}, // ( 10, 79) + { 0, { 0, 0, 0}}, // ( 11, 79) + { 0, { 0, 0, 0}}, // ( 12, 79) + { 0, { 0, 0, 0}}, // ( 13, 79) + { 0, { 0, 0, 0}}, // ( 14, 79) + { 0, { 0, 0, 0}}, // ( 15, 79) + { 0, { 0, 0, 0}}, // ( 16, 79) + { 0, { 0, 0, 0}}, // ( 17, 79) + { 0, { 0, 0, 0}}, // ( 18, 79) + { 0, { 0, 0, 0}}, // ( 19, 79) + { 0, { 0, 0, 0}}, // ( 20, 79) + { 0, { 0, 0, 0}}, // ( 21, 79) + { 0, { 0, 0, 0}}, // ( 22, 79) + { 0, { 0, 0, 0}}, // ( 23, 79) + { 0, { 0, 0, 0}}, // ( 24, 79) + { 0, { 0, 0, 0}}, // ( 25, 79) + { 0, { 0, 0, 0}}, // ( 26, 79) + { 0, { 0, 0, 0}}, // ( 27, 79) + { 0, { 0, 0, 0}}, // ( 28, 79) + { 0, { 0, 0, 0}}, // ( 29, 79) + { 0, { 0, 0, 0}}, // ( 30, 79) + { 0, { 0, 0, 0}}, // ( 31, 79) + { 0, { 0, 0, 0}}, // ( 32, 79) + { 0, { 0, 0, 0}}, // ( 33, 79) + { 0, { 0, 0, 0}}, // ( 34, 79) + { 0, { 0, 0, 0}}, // ( 35, 79) + { 0, { 0, 0, 0}}, // ( 36, 79) + { 0, { 0, 0, 0}}, // ( 37, 79) + { 0, { 0, 0, 0}}, // ( 38, 79) + { 0, { 0, 0, 0}}, // ( 39, 79) + { 0, { 0, 0, 0}}, // ( 40, 79) + { 0, { 0, 0, 0}}, // ( 41, 79) + { 0, { 0, 0, 0}}, // ( 42, 79) + { 0, { 0, 0, 0}}, // ( 43, 79) + { 0, { 0, 0, 0}}, // ( 44, 79) + { 0, { 0, 0, 0}}, // ( 45, 79) + { 0, { 0, 0, 0}}, // ( 46, 79) + { 0, { 0, 0, 0}}, // ( 47, 79) + { 0, { 0, 0, 0}}, // ( 48, 79) + { 0, { 0, 0, 0}}, // ( 49, 79) + { 0, { 0, 0, 0}}, // ( 50, 79) + { 0, { 0, 0, 0}}, // ( 51, 79) + { 0, { 0, 0, 0}}, // ( 52, 79) + { 0, { 0, 0, 0}}, // ( 53, 79) + { 0, { 0, 0, 0}}, // ( 54, 79) + { 0, { 0, 0, 0}}, // ( 55, 79) + { 0, { 0, 0, 0}}, // ( 56, 79) + { 0, { 0, 0, 0}}, // ( 57, 79) + { 0, { 0, 0, 0}}, // ( 58, 79) + { 0, { 0, 0, 0}}, // ( 59, 79) + { 0, { 0, 0, 0}}, // ( 60, 79) + { 0, { 0, 0, 0}}, // ( 61, 79) + { 0, { 0, 0, 0}}, // ( 62, 79) + { 0, { 0, 0, 0}}, // ( 63, 79) + { 0, { 0, 0, 0}}, // ( 64, 79) + { 0, { 0, 0, 0}}, // ( 65, 79) + { 0, { 0, 0, 0}}, // ( 66, 79) + { 0, { 0, 0, 0}}, // ( 67, 79) + { 0, { 0, 0, 0}}, // ( 68, 79) + { 0, { 0, 0, 0}}, // ( 69, 79) + { 0, { 0, 0, 0}}, // ( 70, 79) + { 0, { 0, 0, 0}}, // ( 71, 79) + { 0, { 0, 0, 0}}, // ( 72, 79) + { 0, { 0, 0, 0}}, // ( 73, 79) + { 0, { 0, 0, 0}}, // ( 74, 79) + { 0, { 0, 0, 0}}, // ( 75, 79) + { 0, { 0, 0, 0}}, // ( 76, 79) + { 0, { 0, 0, 0}}, // ( 77, 79) + { 0, { 0, 0, 0}}, // ( 78, 79) + { 0, { 0, 0, 0}}, // ( 79, 79) + { 0, { 0, 0, 0}}, // ( 80, 79) + { 0, { 0, 0, 0}}, // ( 81, 79) + { 0, { 0, 0, 0}}, // ( 82, 79) + { 0, { 0, 0, 0}}, // ( 83, 79) + { 0, { 0, 0, 0}}, // ( 84, 79) + { 0, { 0, 0, 0}}, // ( 85, 79) + { 0, { 0, 0, 0}}, // ( 86, 79) + { 0, { 0, 0, 0}}, // ( 87, 79) + { 0, { 0, 0, 0}}, // ( 88, 79) + { 0, { 0, 0, 0}}, // ( 89, 79) + { 0, { 0, 0, 0}}, // ( 90, 79) + { 0, { 0, 0, 0}}, // ( 91, 79) + { 0, { 0, 0, 0}}, // ( 92, 79) + { 0, { 0, 0, 0}}, // ( 93, 79) + { 0, { 0, 0, 0}}, // ( 94, 79) + { 0, { 0, 0, 0}}, // ( 95, 79) + { 0, { 0, 0, 0}}, // ( 96, 79) + { 0, { 0, 0, 0}}, // ( 97, 79) + { 0, { 0, 0, 0}}, // ( 98, 79) + { 0, { 0, 0, 0}}, // ( 99, 79) + { 0, { 0, 0, 0}}, // (100, 79) + { 0, { 0, 0, 0}}, // (101, 79) + { 0, { 0, 0, 0}}, // (102, 79) + { 0, { 0, 0, 0}}, // (103, 79) + { 0, { 0, 0, 0}}, // (104, 79) + { 0, { 0, 0, 0}}, // (105, 79) + { 0, { 0, 0, 0}}, // (106, 79) + { 0, { 0, 0, 0}}, // (107, 79) + { 0, { 0, 0, 0}}, // (108, 79) + { 0, { 0, 0, 0}}, // (109, 79) + { 0, { 0, 0, 0}}, // (110, 79) + { 0, { 0, 0, 0}}, // (111, 79) + { 0, { 0, 0, 0}}, // (112, 79) + { 0, { 0, 0, 0}}, // (113, 79) + { 0, { 0, 0, 0}}, // (114, 79) + { 0, { 0, 0, 0}}, // (115, 79) + { 0, { 0, 0, 0}}, // (116, 79) + { 0, { 0, 0, 0}}, // (117, 79) + { 0, { 0, 0, 0}}, // (118, 79) + { 0, { 0, 0, 0}}, // (119, 79) + { 0, { 0, 0, 0}}, // (120, 79) + { 0, { 0, 0, 0}}, // (121, 79) + { 0, { 0, 0, 0}}, // (122, 79) + { 0, { 0, 0, 0}}, // (123, 79) + { 0, { 0, 0, 0}}, // (124, 79) + { 0, { 0, 0, 0}}, // (125, 79) + { 0, { 0, 0, 0}}, // (126, 79) + { 0, { 0, 0, 0}}, // (127, 79) + { 0, { 0, 0, 0}}, // (128, 79) + { 0, { 0, 0, 0}}, // (129, 79) + { 0, { 0, 0, 0}}, // (130, 79) + { 0, { 0, 0, 0}}, // (131, 79) + { 0, { 0, 0, 0}}, // (132, 79) + { 0, { 0, 0, 0}}, // (133, 79) + { 0, { 0, 0, 0}}, // (134, 79) + { 0, { 0, 0, 0}}, // (135, 79) + { 0, { 0, 0, 0}}, // (136, 79) + { 0, { 0, 0, 0}}, // (137, 79) + { 0, { 0, 0, 0}}, // (138, 79) + { 0, { 0, 0, 0}}, // (139, 79) + { 0, { 0, 0, 0}}, // (140, 79) + { 0, { 0, 0, 0}}, // (141, 79) + { 0, { 0, 0, 0}}, // (142, 79) + { 0, { 0, 0, 0}}, // (143, 79) + { 0, { 0, 0, 0}}, // (144, 79) + { 0, { 0, 0, 0}}, // (145, 79) + { 0, { 0, 0, 0}}, // (146, 79) + { 0, { 0, 0, 0}}, // (147, 79) + { 0, { 0, 0, 0}}, // (148, 79) + { 0, { 0, 0, 0}}, // (149, 79) + { 0, { 0, 0, 0}}, // (150, 79) + { 0, { 0, 0, 0}}, // (151, 79) + { 0, { 0, 0, 0}}, // (152, 79) + { 0, { 0, 0, 0}}, // (153, 79) + { 0, { 0, 0, 0}}, // (154, 79) + { 0, { 0, 0, 0}}, // (155, 79) + { 0, { 0, 0, 0}}, // (156, 79) + { 0, { 0, 0, 0}}, // (157, 79) + { 0, { 0, 0, 0}}, // (158, 79) + { 0, { 0, 0, 0}}, // (159, 79) + { 0, { 0, 0, 0}}, // (160, 79) + { 0, { 0, 0, 0}}, // (161, 79) + { 0, { 0, 0, 0}}, // (162, 79) + { 0, { 0, 0, 0}}, // (163, 79) + { 0, { 0, 0, 0}}, // (164, 79) + { 0, { 0, 0, 0}}, // (165, 79) + { 0, { 0, 0, 0}}, // (166, 79) + { 0, { 0, 0, 0}}, // (167, 79) + { 0, { 0, 0, 0}}, // (168, 79) + { 0, { 0, 0, 0}}, // (169, 79) + { 0, { 0, 0, 0}}, // (170, 79) + { 0, { 0, 0, 0}}, // (171, 79) + { 0, { 0, 0, 0}}, // (172, 79) + { 0, { 0, 0, 0}}, // (173, 79) + { 0, { 0, 0, 0}}, // (174, 79) + { 0, { 0, 0, 0}}, // (175, 79) + { 0, { 0, 0, 0}}, // (176, 79) + { 83, { 0, 0, 0}}, // (177, 79) + {128, { 0, 0, 0}}, // (178, 79) + {128, { 0, 0, 0}}, // (179, 79) + {128, { 0, 0, 0}}, // ( 0, 80) + {128, { 0, 0, 0}}, // ( 1, 80) + { 66, { 0, 0, 0}}, // ( 2, 80) + { 0, { 0, 0, 0}}, // ( 3, 80) + { 0, { 0, 0, 0}}, // ( 4, 80) + { 0, { 0, 0, 0}}, // ( 5, 80) + { 0, { 0, 0, 0}}, // ( 6, 80) + { 0, { 0, 0, 0}}, // ( 7, 80) + { 0, { 0, 0, 0}}, // ( 8, 80) + { 0, { 0, 0, 0}}, // ( 9, 80) + { 0, { 0, 0, 0}}, // ( 10, 80) + { 0, { 0, 0, 0}}, // ( 11, 80) + { 0, { 0, 0, 0}}, // ( 12, 80) + { 0, { 0, 0, 0}}, // ( 13, 80) + { 0, { 0, 0, 0}}, // ( 14, 80) + { 0, { 0, 0, 0}}, // ( 15, 80) + { 0, { 0, 0, 0}}, // ( 16, 80) + { 0, { 0, 0, 0}}, // ( 17, 80) + { 0, { 0, 0, 0}}, // ( 18, 80) + { 0, { 0, 0, 0}}, // ( 19, 80) + { 0, { 0, 0, 0}}, // ( 20, 80) + { 0, { 0, 0, 0}}, // ( 21, 80) + { 0, { 0, 0, 0}}, // ( 22, 80) + { 0, { 0, 0, 0}}, // ( 23, 80) + { 0, { 0, 0, 0}}, // ( 24, 80) + { 0, { 0, 0, 0}}, // ( 25, 80) + { 0, { 0, 0, 0}}, // ( 26, 80) + { 0, { 0, 0, 0}}, // ( 27, 80) + { 0, { 0, 0, 0}}, // ( 28, 80) + { 0, { 0, 0, 0}}, // ( 29, 80) + { 0, { 0, 0, 0}}, // ( 30, 80) + { 0, { 0, 0, 0}}, // ( 31, 80) + { 0, { 0, 0, 0}}, // ( 32, 80) + { 0, { 0, 0, 0}}, // ( 33, 80) + { 0, { 0, 0, 0}}, // ( 34, 80) + { 0, { 0, 0, 0}}, // ( 35, 80) + { 0, { 0, 0, 0}}, // ( 36, 80) + { 0, { 0, 0, 0}}, // ( 37, 80) + { 0, { 0, 0, 0}}, // ( 38, 80) + { 0, { 0, 0, 0}}, // ( 39, 80) + { 0, { 0, 0, 0}}, // ( 40, 80) + { 0, { 0, 0, 0}}, // ( 41, 80) + { 0, { 0, 0, 0}}, // ( 42, 80) + { 0, { 0, 0, 0}}, // ( 43, 80) + { 0, { 0, 0, 0}}, // ( 44, 80) + { 0, { 0, 0, 0}}, // ( 45, 80) + { 0, { 0, 0, 0}}, // ( 46, 80) + { 0, { 0, 0, 0}}, // ( 47, 80) + { 0, { 0, 0, 0}}, // ( 48, 80) + { 0, { 0, 0, 0}}, // ( 49, 80) + { 0, { 0, 0, 0}}, // ( 50, 80) + { 0, { 0, 0, 0}}, // ( 51, 80) + { 0, { 0, 0, 0}}, // ( 52, 80) + { 0, { 0, 0, 0}}, // ( 53, 80) + { 0, { 0, 0, 0}}, // ( 54, 80) + { 0, { 0, 0, 0}}, // ( 55, 80) + { 0, { 0, 0, 0}}, // ( 56, 80) + { 0, { 0, 0, 0}}, // ( 57, 80) + { 0, { 0, 0, 0}}, // ( 58, 80) + { 0, { 0, 0, 0}}, // ( 59, 80) + { 0, { 0, 0, 0}}, // ( 60, 80) + { 0, { 0, 0, 0}}, // ( 61, 80) + { 0, { 0, 0, 0}}, // ( 62, 80) + { 0, { 0, 0, 0}}, // ( 63, 80) + { 0, { 0, 0, 0}}, // ( 64, 80) + { 0, { 0, 0, 0}}, // ( 65, 80) + { 0, { 0, 0, 0}}, // ( 66, 80) + { 0, { 0, 0, 0}}, // ( 67, 80) + { 0, { 0, 0, 0}}, // ( 68, 80) + { 0, { 0, 0, 0}}, // ( 69, 80) + { 0, { 0, 0, 0}}, // ( 70, 80) + { 0, { 0, 0, 0}}, // ( 71, 80) + { 0, { 0, 0, 0}}, // ( 72, 80) + { 0, { 0, 0, 0}}, // ( 73, 80) + { 0, { 0, 0, 0}}, // ( 74, 80) + { 0, { 0, 0, 0}}, // ( 75, 80) + { 0, { 0, 0, 0}}, // ( 76, 80) + { 0, { 0, 0, 0}}, // ( 77, 80) + { 0, { 0, 0, 0}}, // ( 78, 80) + { 0, { 0, 0, 0}}, // ( 79, 80) + { 0, { 0, 0, 0}}, // ( 80, 80) + { 0, { 0, 0, 0}}, // ( 81, 80) + { 0, { 0, 0, 0}}, // ( 82, 80) + { 0, { 0, 0, 0}}, // ( 83, 80) + { 0, { 0, 0, 0}}, // ( 84, 80) + { 0, { 0, 0, 0}}, // ( 85, 80) + { 0, { 0, 0, 0}}, // ( 86, 80) + { 0, { 0, 0, 0}}, // ( 87, 80) + { 0, { 0, 0, 0}}, // ( 88, 80) + { 0, { 0, 0, 0}}, // ( 89, 80) + { 0, { 0, 0, 0}}, // ( 90, 80) + { 0, { 0, 0, 0}}, // ( 91, 80) + { 0, { 0, 0, 0}}, // ( 92, 80) + { 0, { 0, 0, 0}}, // ( 93, 80) + { 0, { 0, 0, 0}}, // ( 94, 80) + { 0, { 0, 0, 0}}, // ( 95, 80) + { 0, { 0, 0, 0}}, // ( 96, 80) + { 0, { 0, 0, 0}}, // ( 97, 80) + { 0, { 0, 0, 0}}, // ( 98, 80) + { 0, { 0, 0, 0}}, // ( 99, 80) + { 0, { 0, 0, 0}}, // (100, 80) + { 0, { 0, 0, 0}}, // (101, 80) + { 0, { 0, 0, 0}}, // (102, 80) + { 0, { 0, 0, 0}}, // (103, 80) + { 0, { 0, 0, 0}}, // (104, 80) + { 0, { 0, 0, 0}}, // (105, 80) + { 0, { 0, 0, 0}}, // (106, 80) + { 0, { 0, 0, 0}}, // (107, 80) + { 0, { 0, 0, 0}}, // (108, 80) + { 0, { 0, 0, 0}}, // (109, 80) + { 0, { 0, 0, 0}}, // (110, 80) + { 0, { 0, 0, 0}}, // (111, 80) + { 0, { 0, 0, 0}}, // (112, 80) + { 0, { 0, 0, 0}}, // (113, 80) + { 0, { 0, 0, 0}}, // (114, 80) + { 0, { 0, 0, 0}}, // (115, 80) + { 0, { 0, 0, 0}}, // (116, 80) + { 0, { 0, 0, 0}}, // (117, 80) + { 0, { 0, 0, 0}}, // (118, 80) + { 0, { 0, 0, 0}}, // (119, 80) + { 0, { 0, 0, 0}}, // (120, 80) + { 0, { 0, 0, 0}}, // (121, 80) + { 0, { 0, 0, 0}}, // (122, 80) + { 0, { 0, 0, 0}}, // (123, 80) + { 0, { 0, 0, 0}}, // (124, 80) + { 0, { 0, 0, 0}}, // (125, 80) + { 0, { 0, 0, 0}}, // (126, 80) + { 0, { 0, 0, 0}}, // (127, 80) + { 0, { 0, 0, 0}}, // (128, 80) + { 0, { 0, 0, 0}}, // (129, 80) + { 0, { 0, 0, 0}}, // (130, 80) + { 0, { 0, 0, 0}}, // (131, 80) + { 0, { 0, 0, 0}}, // (132, 80) + { 0, { 0, 0, 0}}, // (133, 80) + { 0, { 0, 0, 0}}, // (134, 80) + { 0, { 0, 0, 0}}, // (135, 80) + { 0, { 0, 0, 0}}, // (136, 80) + { 0, { 0, 0, 0}}, // (137, 80) + { 0, { 0, 0, 0}}, // (138, 80) + { 0, { 0, 0, 0}}, // (139, 80) + { 0, { 0, 0, 0}}, // (140, 80) + { 0, { 0, 0, 0}}, // (141, 80) + { 0, { 0, 0, 0}}, // (142, 80) + { 0, { 0, 0, 0}}, // (143, 80) + { 0, { 0, 0, 0}}, // (144, 80) + { 0, { 0, 0, 0}}, // (145, 80) + { 0, { 0, 0, 0}}, // (146, 80) + { 0, { 0, 0, 0}}, // (147, 80) + { 0, { 0, 0, 0}}, // (148, 80) + { 0, { 0, 0, 0}}, // (149, 80) + { 0, { 0, 0, 0}}, // (150, 80) + { 0, { 0, 0, 0}}, // (151, 80) + { 0, { 0, 0, 0}}, // (152, 80) + { 0, { 0, 0, 0}}, // (153, 80) + { 0, { 0, 0, 0}}, // (154, 80) + { 0, { 0, 0, 0}}, // (155, 80) + { 0, { 0, 0, 0}}, // (156, 80) + { 0, { 0, 0, 0}}, // (157, 80) + { 0, { 0, 0, 0}}, // (158, 80) + { 0, { 0, 0, 0}}, // (159, 80) + { 0, { 0, 0, 0}}, // (160, 80) + { 0, { 0, 0, 0}}, // (161, 80) + { 0, { 0, 0, 0}}, // (162, 80) + { 0, { 0, 0, 0}}, // (163, 80) + { 0, { 0, 0, 0}}, // (164, 80) + { 0, { 0, 0, 0}}, // (165, 80) + { 0, { 0, 0, 0}}, // (166, 80) + { 0, { 0, 0, 0}}, // (167, 80) + { 0, { 0, 0, 0}}, // (168, 80) + { 0, { 0, 0, 0}}, // (169, 80) + { 0, { 0, 0, 0}}, // (170, 80) + { 0, { 0, 0, 0}}, // (171, 80) + { 0, { 0, 0, 0}}, // (172, 80) + { 0, { 0, 0, 0}}, // (173, 80) + { 0, { 0, 0, 0}}, // (174, 80) + { 0, { 0, 0, 0}}, // (175, 80) + { 0, { 0, 0, 0}}, // (176, 80) + { 67, { 0, 0, 0}}, // (177, 80) + {128, { 0, 0, 0}}, // (178, 80) + {128, { 0, 0, 0}}, // (179, 80) + {128, { 0, 0, 0}}, // ( 0, 81) + {128, { 0, 0, 0}}, // ( 1, 81) + { 54, { 0, 0, 0}}, // ( 2, 81) + { 0, { 0, 0, 0}}, // ( 3, 81) + { 0, { 0, 0, 0}}, // ( 4, 81) + { 0, { 0, 0, 0}}, // ( 5, 81) + { 0, { 0, 0, 0}}, // ( 6, 81) + { 0, { 0, 0, 0}}, // ( 7, 81) + { 0, { 0, 0, 0}}, // ( 8, 81) + { 0, { 0, 0, 0}}, // ( 9, 81) + { 0, { 0, 0, 0}}, // ( 10, 81) + { 0, { 0, 0, 0}}, // ( 11, 81) + { 0, { 0, 0, 0}}, // ( 12, 81) + { 0, { 0, 0, 0}}, // ( 13, 81) + { 0, { 0, 0, 0}}, // ( 14, 81) + { 0, { 0, 0, 0}}, // ( 15, 81) + { 0, { 0, 0, 0}}, // ( 16, 81) + { 0, { 0, 0, 0}}, // ( 17, 81) + { 0, { 0, 0, 0}}, // ( 18, 81) + { 0, { 0, 0, 0}}, // ( 19, 81) + { 0, { 0, 0, 0}}, // ( 20, 81) + { 0, { 0, 0, 0}}, // ( 21, 81) + { 0, { 0, 0, 0}}, // ( 22, 81) + { 0, { 0, 0, 0}}, // ( 23, 81) + { 0, { 0, 0, 0}}, // ( 24, 81) + { 0, { 0, 0, 0}}, // ( 25, 81) + { 0, { 0, 0, 0}}, // ( 26, 81) + { 0, { 0, 0, 0}}, // ( 27, 81) + { 0, { 0, 0, 0}}, // ( 28, 81) + { 0, { 0, 0, 0}}, // ( 29, 81) + { 0, { 0, 0, 0}}, // ( 30, 81) + { 0, { 0, 0, 0}}, // ( 31, 81) + { 0, { 0, 0, 0}}, // ( 32, 81) + { 0, { 0, 0, 0}}, // ( 33, 81) + { 0, { 0, 0, 0}}, // ( 34, 81) + { 0, { 0, 0, 0}}, // ( 35, 81) + { 0, { 0, 0, 0}}, // ( 36, 81) + { 0, { 0, 0, 0}}, // ( 37, 81) + { 0, { 0, 0, 0}}, // ( 38, 81) + { 0, { 0, 0, 0}}, // ( 39, 81) + { 0, { 0, 0, 0}}, // ( 40, 81) + { 0, { 0, 0, 0}}, // ( 41, 81) + { 0, { 0, 0, 0}}, // ( 42, 81) + { 0, { 0, 0, 0}}, // ( 43, 81) + { 0, { 0, 0, 0}}, // ( 44, 81) + { 0, { 0, 0, 0}}, // ( 45, 81) + { 0, { 0, 0, 0}}, // ( 46, 81) + { 0, { 0, 0, 0}}, // ( 47, 81) + { 0, { 0, 0, 0}}, // ( 48, 81) + { 0, { 0, 0, 0}}, // ( 49, 81) + { 0, { 0, 0, 0}}, // ( 50, 81) + { 0, { 0, 0, 0}}, // ( 51, 81) + { 0, { 0, 0, 0}}, // ( 52, 81) + { 0, { 0, 0, 0}}, // ( 53, 81) + { 0, { 0, 0, 0}}, // ( 54, 81) + { 0, { 0, 0, 0}}, // ( 55, 81) + { 0, { 0, 0, 0}}, // ( 56, 81) + { 0, { 0, 0, 0}}, // ( 57, 81) + { 0, { 0, 0, 0}}, // ( 58, 81) + { 0, { 0, 0, 0}}, // ( 59, 81) + { 0, { 0, 0, 0}}, // ( 60, 81) + { 0, { 0, 0, 0}}, // ( 61, 81) + { 0, { 0, 0, 0}}, // ( 62, 81) + { 0, { 0, 0, 0}}, // ( 63, 81) + { 0, { 0, 0, 0}}, // ( 64, 81) + { 0, { 0, 0, 0}}, // ( 65, 81) + { 0, { 0, 0, 0}}, // ( 66, 81) + { 0, { 0, 0, 0}}, // ( 67, 81) + { 0, { 0, 0, 0}}, // ( 68, 81) + { 0, { 0, 0, 0}}, // ( 69, 81) + { 0, { 0, 0, 0}}, // ( 70, 81) + { 0, { 0, 0, 0}}, // ( 71, 81) + { 0, { 0, 0, 0}}, // ( 72, 81) + { 0, { 0, 0, 0}}, // ( 73, 81) + { 0, { 0, 0, 0}}, // ( 74, 81) + { 0, { 0, 0, 0}}, // ( 75, 81) + { 0, { 0, 0, 0}}, // ( 76, 81) + { 0, { 0, 0, 0}}, // ( 77, 81) + { 0, { 0, 0, 0}}, // ( 78, 81) + { 0, { 0, 0, 0}}, // ( 79, 81) + { 0, { 0, 0, 0}}, // ( 80, 81) + { 0, { 0, 0, 0}}, // ( 81, 81) + { 0, { 0, 0, 0}}, // ( 82, 81) + { 0, { 0, 0, 0}}, // ( 83, 81) + { 0, { 0, 0, 0}}, // ( 84, 81) + { 0, { 0, 0, 0}}, // ( 85, 81) + { 0, { 0, 0, 0}}, // ( 86, 81) + { 0, { 0, 0, 0}}, // ( 87, 81) + { 0, { 0, 0, 0}}, // ( 88, 81) + { 0, { 0, 0, 0}}, // ( 89, 81) + { 0, { 0, 0, 0}}, // ( 90, 81) + { 0, { 0, 0, 0}}, // ( 91, 81) + { 0, { 0, 0, 0}}, // ( 92, 81) + { 0, { 0, 0, 0}}, // ( 93, 81) + { 0, { 0, 0, 0}}, // ( 94, 81) + { 0, { 0, 0, 0}}, // ( 95, 81) + { 0, { 0, 0, 0}}, // ( 96, 81) + { 0, { 0, 0, 0}}, // ( 97, 81) + { 0, { 0, 0, 0}}, // ( 98, 81) + { 0, { 0, 0, 0}}, // ( 99, 81) + { 0, { 0, 0, 0}}, // (100, 81) + { 0, { 0, 0, 0}}, // (101, 81) + { 0, { 0, 0, 0}}, // (102, 81) + { 0, { 0, 0, 0}}, // (103, 81) + { 0, { 0, 0, 0}}, // (104, 81) + { 0, { 0, 0, 0}}, // (105, 81) + { 0, { 0, 0, 0}}, // (106, 81) + { 0, { 0, 0, 0}}, // (107, 81) + { 0, { 0, 0, 0}}, // (108, 81) + { 0, { 0, 0, 0}}, // (109, 81) + { 0, { 0, 0, 0}}, // (110, 81) + { 0, { 0, 0, 0}}, // (111, 81) + { 0, { 0, 0, 0}}, // (112, 81) + { 0, { 0, 0, 0}}, // (113, 81) + { 0, { 0, 0, 0}}, // (114, 81) + { 0, { 0, 0, 0}}, // (115, 81) + { 0, { 0, 0, 0}}, // (116, 81) + { 0, { 0, 0, 0}}, // (117, 81) + { 0, { 0, 0, 0}}, // (118, 81) + { 0, { 0, 0, 0}}, // (119, 81) + { 0, { 0, 0, 0}}, // (120, 81) + { 0, { 0, 0, 0}}, // (121, 81) + { 0, { 0, 0, 0}}, // (122, 81) + { 0, { 0, 0, 0}}, // (123, 81) + { 0, { 0, 0, 0}}, // (124, 81) + { 0, { 0, 0, 0}}, // (125, 81) + { 0, { 0, 0, 0}}, // (126, 81) + { 0, { 0, 0, 0}}, // (127, 81) + { 0, { 0, 0, 0}}, // (128, 81) + { 0, { 0, 0, 0}}, // (129, 81) + { 0, { 0, 0, 0}}, // (130, 81) + { 0, { 0, 0, 0}}, // (131, 81) + { 0, { 0, 0, 0}}, // (132, 81) + { 0, { 0, 0, 0}}, // (133, 81) + { 0, { 0, 0, 0}}, // (134, 81) + { 0, { 0, 0, 0}}, // (135, 81) + { 0, { 0, 0, 0}}, // (136, 81) + { 0, { 0, 0, 0}}, // (137, 81) + { 0, { 0, 0, 0}}, // (138, 81) + { 0, { 0, 0, 0}}, // (139, 81) + { 0, { 0, 0, 0}}, // (140, 81) + { 0, { 0, 0, 0}}, // (141, 81) + { 0, { 0, 0, 0}}, // (142, 81) + { 0, { 0, 0, 0}}, // (143, 81) + { 0, { 0, 0, 0}}, // (144, 81) + { 0, { 0, 0, 0}}, // (145, 81) + { 0, { 0, 0, 0}}, // (146, 81) + { 0, { 0, 0, 0}}, // (147, 81) + { 0, { 0, 0, 0}}, // (148, 81) + { 0, { 0, 0, 0}}, // (149, 81) + { 0, { 0, 0, 0}}, // (150, 81) + { 0, { 0, 0, 0}}, // (151, 81) + { 0, { 0, 0, 0}}, // (152, 81) + { 0, { 0, 0, 0}}, // (153, 81) + { 0, { 0, 0, 0}}, // (154, 81) + { 0, { 0, 0, 0}}, // (155, 81) + { 0, { 0, 0, 0}}, // (156, 81) + { 0, { 0, 0, 0}}, // (157, 81) + { 0, { 0, 0, 0}}, // (158, 81) + { 0, { 0, 0, 0}}, // (159, 81) + { 0, { 0, 0, 0}}, // (160, 81) + { 0, { 0, 0, 0}}, // (161, 81) + { 0, { 0, 0, 0}}, // (162, 81) + { 0, { 0, 0, 0}}, // (163, 81) + { 0, { 0, 0, 0}}, // (164, 81) + { 0, { 0, 0, 0}}, // (165, 81) + { 0, { 0, 0, 0}}, // (166, 81) + { 0, { 0, 0, 0}}, // (167, 81) + { 0, { 0, 0, 0}}, // (168, 81) + { 0, { 0, 0, 0}}, // (169, 81) + { 0, { 0, 0, 0}}, // (170, 81) + { 0, { 0, 0, 0}}, // (171, 81) + { 0, { 0, 0, 0}}, // (172, 81) + { 0, { 0, 0, 0}}, // (173, 81) + { 0, { 0, 0, 0}}, // (174, 81) + { 0, { 0, 0, 0}}, // (175, 81) + { 0, { 0, 0, 0}}, // (176, 81) + { 54, { 0, 0, 0}}, // (177, 81) + {128, { 0, 0, 0}}, // (178, 81) + {128, { 0, 0, 0}}, // (179, 81) + {128, { 0, 0, 0}}, // ( 0, 82) + {128, { 0, 0, 0}}, // ( 1, 82) + { 43, { 0, 0, 0}}, // ( 2, 82) + { 0, { 0, 0, 0}}, // ( 3, 82) + { 0, { 0, 0, 0}}, // ( 4, 82) + { 0, { 0, 0, 0}}, // ( 5, 82) + { 0, { 0, 0, 0}}, // ( 6, 82) + { 0, { 0, 0, 0}}, // ( 7, 82) + { 0, { 0, 0, 0}}, // ( 8, 82) + { 0, { 0, 0, 0}}, // ( 9, 82) + { 0, { 0, 0, 0}}, // ( 10, 82) + { 0, { 0, 0, 0}}, // ( 11, 82) + { 0, { 0, 0, 0}}, // ( 12, 82) + { 0, { 0, 0, 0}}, // ( 13, 82) + { 0, { 0, 0, 0}}, // ( 14, 82) + { 0, { 0, 0, 0}}, // ( 15, 82) + { 0, { 0, 0, 0}}, // ( 16, 82) + { 0, { 0, 0, 0}}, // ( 17, 82) + { 0, { 0, 0, 0}}, // ( 18, 82) + { 0, { 0, 0, 0}}, // ( 19, 82) + { 0, { 0, 0, 0}}, // ( 20, 82) + { 0, { 0, 0, 0}}, // ( 21, 82) + { 0, { 0, 0, 0}}, // ( 22, 82) + { 0, { 0, 0, 0}}, // ( 23, 82) + { 0, { 0, 0, 0}}, // ( 24, 82) + { 0, { 0, 0, 0}}, // ( 25, 82) + { 0, { 0, 0, 0}}, // ( 26, 82) + { 0, { 0, 0, 0}}, // ( 27, 82) + { 0, { 0, 0, 0}}, // ( 28, 82) + { 0, { 0, 0, 0}}, // ( 29, 82) + { 0, { 0, 0, 0}}, // ( 30, 82) + { 0, { 0, 0, 0}}, // ( 31, 82) + { 0, { 0, 0, 0}}, // ( 32, 82) + { 0, { 0, 0, 0}}, // ( 33, 82) + { 0, { 0, 0, 0}}, // ( 34, 82) + { 0, { 0, 0, 0}}, // ( 35, 82) + { 0, { 0, 0, 0}}, // ( 36, 82) + { 0, { 0, 0, 0}}, // ( 37, 82) + { 0, { 0, 0, 0}}, // ( 38, 82) + { 0, { 0, 0, 0}}, // ( 39, 82) + { 0, { 0, 0, 0}}, // ( 40, 82) + { 0, { 0, 0, 0}}, // ( 41, 82) + { 0, { 0, 0, 0}}, // ( 42, 82) + { 0, { 0, 0, 0}}, // ( 43, 82) + { 0, { 0, 0, 0}}, // ( 44, 82) + { 0, { 0, 0, 0}}, // ( 45, 82) + { 0, { 0, 0, 0}}, // ( 46, 82) + { 0, { 0, 0, 0}}, // ( 47, 82) + { 0, { 0, 0, 0}}, // ( 48, 82) + { 0, { 0, 0, 0}}, // ( 49, 82) + { 0, { 0, 0, 0}}, // ( 50, 82) + { 0, { 0, 0, 0}}, // ( 51, 82) + { 0, { 0, 0, 0}}, // ( 52, 82) + { 0, { 0, 0, 0}}, // ( 53, 82) + { 0, { 0, 0, 0}}, // ( 54, 82) + { 0, { 0, 0, 0}}, // ( 55, 82) + { 0, { 0, 0, 0}}, // ( 56, 82) + { 0, { 0, 0, 0}}, // ( 57, 82) + { 0, { 0, 0, 0}}, // ( 58, 82) + { 0, { 0, 0, 0}}, // ( 59, 82) + { 0, { 0, 0, 0}}, // ( 60, 82) + { 0, { 0, 0, 0}}, // ( 61, 82) + { 0, { 0, 0, 0}}, // ( 62, 82) + { 0, { 0, 0, 0}}, // ( 63, 82) + { 0, { 0, 0, 0}}, // ( 64, 82) + { 0, { 0, 0, 0}}, // ( 65, 82) + { 0, { 0, 0, 0}}, // ( 66, 82) + { 0, { 0, 0, 0}}, // ( 67, 82) + { 0, { 0, 0, 0}}, // ( 68, 82) + { 0, { 0, 0, 0}}, // ( 69, 82) + { 0, { 0, 0, 0}}, // ( 70, 82) + { 0, { 0, 0, 0}}, // ( 71, 82) + { 0, { 0, 0, 0}}, // ( 72, 82) + { 0, { 0, 0, 0}}, // ( 73, 82) + { 0, { 0, 0, 0}}, // ( 74, 82) + { 0, { 0, 0, 0}}, // ( 75, 82) + { 0, { 0, 0, 0}}, // ( 76, 82) + { 0, { 0, 0, 0}}, // ( 77, 82) + { 0, { 0, 0, 0}}, // ( 78, 82) + { 0, { 0, 0, 0}}, // ( 79, 82) + { 0, { 0, 0, 0}}, // ( 80, 82) + { 0, { 0, 0, 0}}, // ( 81, 82) + { 0, { 0, 0, 0}}, // ( 82, 82) + { 0, { 0, 0, 0}}, // ( 83, 82) + { 0, { 0, 0, 0}}, // ( 84, 82) + { 0, { 0, 0, 0}}, // ( 85, 82) + { 0, { 0, 0, 0}}, // ( 86, 82) + { 0, { 0, 0, 0}}, // ( 87, 82) + { 0, { 0, 0, 0}}, // ( 88, 82) + { 0, { 0, 0, 0}}, // ( 89, 82) + { 0, { 0, 0, 0}}, // ( 90, 82) + { 0, { 0, 0, 0}}, // ( 91, 82) + { 0, { 0, 0, 0}}, // ( 92, 82) + { 0, { 0, 0, 0}}, // ( 93, 82) + { 0, { 0, 0, 0}}, // ( 94, 82) + { 0, { 0, 0, 0}}, // ( 95, 82) + { 0, { 0, 0, 0}}, // ( 96, 82) + { 0, { 0, 0, 0}}, // ( 97, 82) + { 0, { 0, 0, 0}}, // ( 98, 82) + { 0, { 0, 0, 0}}, // ( 99, 82) + { 0, { 0, 0, 0}}, // (100, 82) + { 0, { 0, 0, 0}}, // (101, 82) + { 0, { 0, 0, 0}}, // (102, 82) + { 0, { 0, 0, 0}}, // (103, 82) + { 0, { 0, 0, 0}}, // (104, 82) + { 0, { 0, 0, 0}}, // (105, 82) + { 0, { 0, 0, 0}}, // (106, 82) + { 0, { 0, 0, 0}}, // (107, 82) + { 0, { 0, 0, 0}}, // (108, 82) + { 0, { 0, 0, 0}}, // (109, 82) + { 0, { 0, 0, 0}}, // (110, 82) + { 0, { 0, 0, 0}}, // (111, 82) + { 0, { 0, 0, 0}}, // (112, 82) + { 0, { 0, 0, 0}}, // (113, 82) + { 0, { 0, 0, 0}}, // (114, 82) + { 0, { 0, 0, 0}}, // (115, 82) + { 0, { 0, 0, 0}}, // (116, 82) + { 0, { 0, 0, 0}}, // (117, 82) + { 0, { 0, 0, 0}}, // (118, 82) + { 0, { 0, 0, 0}}, // (119, 82) + { 0, { 0, 0, 0}}, // (120, 82) + { 0, { 0, 0, 0}}, // (121, 82) + { 0, { 0, 0, 0}}, // (122, 82) + { 0, { 0, 0, 0}}, // (123, 82) + { 0, { 0, 0, 0}}, // (124, 82) + { 0, { 0, 0, 0}}, // (125, 82) + { 0, { 0, 0, 0}}, // (126, 82) + { 0, { 0, 0, 0}}, // (127, 82) + { 0, { 0, 0, 0}}, // (128, 82) + { 0, { 0, 0, 0}}, // (129, 82) + { 0, { 0, 0, 0}}, // (130, 82) + { 0, { 0, 0, 0}}, // (131, 82) + { 0, { 0, 0, 0}}, // (132, 82) + { 0, { 0, 0, 0}}, // (133, 82) + { 0, { 0, 0, 0}}, // (134, 82) + { 0, { 0, 0, 0}}, // (135, 82) + { 0, { 0, 0, 0}}, // (136, 82) + { 0, { 0, 0, 0}}, // (137, 82) + { 0, { 0, 0, 0}}, // (138, 82) + { 0, { 0, 0, 0}}, // (139, 82) + { 0, { 0, 0, 0}}, // (140, 82) + { 0, { 0, 0, 0}}, // (141, 82) + { 0, { 0, 0, 0}}, // (142, 82) + { 0, { 0, 0, 0}}, // (143, 82) + { 0, { 0, 0, 0}}, // (144, 82) + { 0, { 0, 0, 0}}, // (145, 82) + { 0, { 0, 0, 0}}, // (146, 82) + { 0, { 0, 0, 0}}, // (147, 82) + { 0, { 0, 0, 0}}, // (148, 82) + { 0, { 0, 0, 0}}, // (149, 82) + { 0, { 0, 0, 0}}, // (150, 82) + { 0, { 0, 0, 0}}, // (151, 82) + { 0, { 0, 0, 0}}, // (152, 82) + { 0, { 0, 0, 0}}, // (153, 82) + { 0, { 0, 0, 0}}, // (154, 82) + { 0, { 0, 0, 0}}, // (155, 82) + { 0, { 0, 0, 0}}, // (156, 82) + { 0, { 0, 0, 0}}, // (157, 82) + { 0, { 0, 0, 0}}, // (158, 82) + { 0, { 0, 0, 0}}, // (159, 82) + { 0, { 0, 0, 0}}, // (160, 82) + { 0, { 0, 0, 0}}, // (161, 82) + { 0, { 0, 0, 0}}, // (162, 82) + { 0, { 0, 0, 0}}, // (163, 82) + { 0, { 0, 0, 0}}, // (164, 82) + { 0, { 0, 0, 0}}, // (165, 82) + { 0, { 0, 0, 0}}, // (166, 82) + { 0, { 0, 0, 0}}, // (167, 82) + { 0, { 0, 0, 0}}, // (168, 82) + { 0, { 0, 0, 0}}, // (169, 82) + { 0, { 0, 0, 0}}, // (170, 82) + { 0, { 0, 0, 0}}, // (171, 82) + { 0, { 0, 0, 0}}, // (172, 82) + { 0, { 0, 0, 0}}, // (173, 82) + { 0, { 0, 0, 0}}, // (174, 82) + { 0, { 0, 0, 0}}, // (175, 82) + { 0, { 0, 0, 0}}, // (176, 82) + { 43, { 0, 0, 0}}, // (177, 82) + {128, { 0, 0, 0}}, // (178, 82) + {128, { 0, 0, 0}}, // (179, 82) + {128, { 0, 0, 0}}, // ( 0, 83) + {128, { 0, 0, 0}}, // ( 1, 83) + { 34, { 0, 0, 0}}, // ( 2, 83) + { 0, { 0, 0, 0}}, // ( 3, 83) + { 0, { 0, 0, 0}}, // ( 4, 83) + { 0, { 0, 0, 0}}, // ( 5, 83) + { 0, { 0, 0, 0}}, // ( 6, 83) + { 0, { 0, 0, 0}}, // ( 7, 83) + { 0, { 0, 0, 0}}, // ( 8, 83) + { 0, { 0, 0, 0}}, // ( 9, 83) + { 0, { 0, 0, 0}}, // ( 10, 83) + { 0, { 0, 0, 0}}, // ( 11, 83) + { 0, { 0, 0, 0}}, // ( 12, 83) + { 0, { 0, 0, 0}}, // ( 13, 83) + { 0, { 0, 0, 0}}, // ( 14, 83) + { 0, { 0, 0, 0}}, // ( 15, 83) + { 0, { 0, 0, 0}}, // ( 16, 83) + { 0, { 0, 0, 0}}, // ( 17, 83) + { 0, { 0, 0, 0}}, // ( 18, 83) + { 0, { 0, 0, 0}}, // ( 19, 83) + { 0, { 0, 0, 0}}, // ( 20, 83) + { 0, { 0, 0, 0}}, // ( 21, 83) + { 0, { 0, 0, 0}}, // ( 22, 83) + { 0, { 0, 0, 0}}, // ( 23, 83) + { 0, { 0, 0, 0}}, // ( 24, 83) + { 0, { 0, 0, 0}}, // ( 25, 83) + { 0, { 0, 0, 0}}, // ( 26, 83) + { 0, { 0, 0, 0}}, // ( 27, 83) + { 0, { 0, 0, 0}}, // ( 28, 83) + { 0, { 0, 0, 0}}, // ( 29, 83) + { 0, { 0, 0, 0}}, // ( 30, 83) + { 0, { 0, 0, 0}}, // ( 31, 83) + { 0, { 0, 0, 0}}, // ( 32, 83) + { 0, { 0, 0, 0}}, // ( 33, 83) + { 0, { 0, 0, 0}}, // ( 34, 83) + { 0, { 0, 0, 0}}, // ( 35, 83) + { 0, { 0, 0, 0}}, // ( 36, 83) + { 0, { 0, 0, 0}}, // ( 37, 83) + { 0, { 0, 0, 0}}, // ( 38, 83) + { 0, { 0, 0, 0}}, // ( 39, 83) + { 0, { 0, 0, 0}}, // ( 40, 83) + { 0, { 0, 0, 0}}, // ( 41, 83) + { 0, { 0, 0, 0}}, // ( 42, 83) + { 0, { 0, 0, 0}}, // ( 43, 83) + { 0, { 0, 0, 0}}, // ( 44, 83) + { 0, { 0, 0, 0}}, // ( 45, 83) + { 0, { 0, 0, 0}}, // ( 46, 83) + { 0, { 0, 0, 0}}, // ( 47, 83) + { 0, { 0, 0, 0}}, // ( 48, 83) + { 0, { 0, 0, 0}}, // ( 49, 83) + { 0, { 0, 0, 0}}, // ( 50, 83) + { 0, { 0, 0, 0}}, // ( 51, 83) + { 0, { 0, 0, 0}}, // ( 52, 83) + { 0, { 0, 0, 0}}, // ( 53, 83) + { 0, { 0, 0, 0}}, // ( 54, 83) + { 0, { 0, 0, 0}}, // ( 55, 83) + { 0, { 0, 0, 0}}, // ( 56, 83) + { 0, { 0, 0, 0}}, // ( 57, 83) + { 0, { 0, 0, 0}}, // ( 58, 83) + { 0, { 0, 0, 0}}, // ( 59, 83) + { 0, { 0, 0, 0}}, // ( 60, 83) + { 0, { 0, 0, 0}}, // ( 61, 83) + { 0, { 0, 0, 0}}, // ( 62, 83) + { 0, { 0, 0, 0}}, // ( 63, 83) + { 0, { 0, 0, 0}}, // ( 64, 83) + { 0, { 0, 0, 0}}, // ( 65, 83) + { 0, { 0, 0, 0}}, // ( 66, 83) + { 0, { 0, 0, 0}}, // ( 67, 83) + { 0, { 0, 0, 0}}, // ( 68, 83) + { 0, { 0, 0, 0}}, // ( 69, 83) + { 0, { 0, 0, 0}}, // ( 70, 83) + { 0, { 0, 0, 0}}, // ( 71, 83) + { 0, { 0, 0, 0}}, // ( 72, 83) + { 0, { 0, 0, 0}}, // ( 73, 83) + { 0, { 0, 0, 0}}, // ( 74, 83) + { 0, { 0, 0, 0}}, // ( 75, 83) + { 0, { 0, 0, 0}}, // ( 76, 83) + { 0, { 0, 0, 0}}, // ( 77, 83) + { 0, { 0, 0, 0}}, // ( 78, 83) + { 0, { 0, 0, 0}}, // ( 79, 83) + { 0, { 0, 0, 0}}, // ( 80, 83) + { 0, { 0, 0, 0}}, // ( 81, 83) + { 0, { 0, 0, 0}}, // ( 82, 83) + { 0, { 0, 0, 0}}, // ( 83, 83) + { 0, { 0, 0, 0}}, // ( 84, 83) + { 0, { 0, 0, 0}}, // ( 85, 83) + { 0, { 0, 0, 0}}, // ( 86, 83) + { 0, { 0, 0, 0}}, // ( 87, 83) + { 0, { 0, 0, 0}}, // ( 88, 83) + { 0, { 0, 0, 0}}, // ( 89, 83) + { 0, { 0, 0, 0}}, // ( 90, 83) + { 0, { 0, 0, 0}}, // ( 91, 83) + { 0, { 0, 0, 0}}, // ( 92, 83) + { 0, { 0, 0, 0}}, // ( 93, 83) + { 0, { 0, 0, 0}}, // ( 94, 83) + { 0, { 0, 0, 0}}, // ( 95, 83) + { 0, { 0, 0, 0}}, // ( 96, 83) + { 0, { 0, 0, 0}}, // ( 97, 83) + { 0, { 0, 0, 0}}, // ( 98, 83) + { 0, { 0, 0, 0}}, // ( 99, 83) + { 0, { 0, 0, 0}}, // (100, 83) + { 0, { 0, 0, 0}}, // (101, 83) + { 0, { 0, 0, 0}}, // (102, 83) + { 0, { 0, 0, 0}}, // (103, 83) + { 0, { 0, 0, 0}}, // (104, 83) + { 0, { 0, 0, 0}}, // (105, 83) + { 0, { 0, 0, 0}}, // (106, 83) + { 0, { 0, 0, 0}}, // (107, 83) + { 0, { 0, 0, 0}}, // (108, 83) + { 0, { 0, 0, 0}}, // (109, 83) + { 0, { 0, 0, 0}}, // (110, 83) + { 0, { 0, 0, 0}}, // (111, 83) + { 0, { 0, 0, 0}}, // (112, 83) + { 0, { 0, 0, 0}}, // (113, 83) + { 0, { 0, 0, 0}}, // (114, 83) + { 0, { 0, 0, 0}}, // (115, 83) + { 0, { 0, 0, 0}}, // (116, 83) + { 0, { 0, 0, 0}}, // (117, 83) + { 0, { 0, 0, 0}}, // (118, 83) + { 0, { 0, 0, 0}}, // (119, 83) + { 0, { 0, 0, 0}}, // (120, 83) + { 0, { 0, 0, 0}}, // (121, 83) + { 0, { 0, 0, 0}}, // (122, 83) + { 0, { 0, 0, 0}}, // (123, 83) + { 0, { 0, 0, 0}}, // (124, 83) + { 0, { 0, 0, 0}}, // (125, 83) + { 0, { 0, 0, 0}}, // (126, 83) + { 0, { 0, 0, 0}}, // (127, 83) + { 0, { 0, 0, 0}}, // (128, 83) + { 0, { 0, 0, 0}}, // (129, 83) + { 0, { 0, 0, 0}}, // (130, 83) + { 0, { 0, 0, 0}}, // (131, 83) + { 0, { 0, 0, 0}}, // (132, 83) + { 0, { 0, 0, 0}}, // (133, 83) + { 0, { 0, 0, 0}}, // (134, 83) + { 0, { 0, 0, 0}}, // (135, 83) + { 0, { 0, 0, 0}}, // (136, 83) + { 0, { 0, 0, 0}}, // (137, 83) + { 0, { 0, 0, 0}}, // (138, 83) + { 0, { 0, 0, 0}}, // (139, 83) + { 0, { 0, 0, 0}}, // (140, 83) + { 0, { 0, 0, 0}}, // (141, 83) + { 0, { 0, 0, 0}}, // (142, 83) + { 0, { 0, 0, 0}}, // (143, 83) + { 0, { 0, 0, 0}}, // (144, 83) + { 0, { 0, 0, 0}}, // (145, 83) + { 0, { 0, 0, 0}}, // (146, 83) + { 0, { 0, 0, 0}}, // (147, 83) + { 0, { 0, 0, 0}}, // (148, 83) + { 0, { 0, 0, 0}}, // (149, 83) + { 0, { 0, 0, 0}}, // (150, 83) + { 0, { 0, 0, 0}}, // (151, 83) + { 0, { 0, 0, 0}}, // (152, 83) + { 0, { 0, 0, 0}}, // (153, 83) + { 0, { 0, 0, 0}}, // (154, 83) + { 0, { 0, 0, 0}}, // (155, 83) + { 0, { 0, 0, 0}}, // (156, 83) + { 0, { 0, 0, 0}}, // (157, 83) + { 0, { 0, 0, 0}}, // (158, 83) + { 0, { 0, 0, 0}}, // (159, 83) + { 0, { 0, 0, 0}}, // (160, 83) + { 0, { 0, 0, 0}}, // (161, 83) + { 0, { 0, 0, 0}}, // (162, 83) + { 0, { 0, 0, 0}}, // (163, 83) + { 0, { 0, 0, 0}}, // (164, 83) + { 0, { 0, 0, 0}}, // (165, 83) + { 0, { 0, 0, 0}}, // (166, 83) + { 0, { 0, 0, 0}}, // (167, 83) + { 0, { 0, 0, 0}}, // (168, 83) + { 0, { 0, 0, 0}}, // (169, 83) + { 0, { 0, 0, 0}}, // (170, 83) + { 0, { 0, 0, 0}}, // (171, 83) + { 0, { 0, 0, 0}}, // (172, 83) + { 0, { 0, 0, 0}}, // (173, 83) + { 0, { 0, 0, 0}}, // (174, 83) + { 0, { 0, 0, 0}}, // (175, 83) + { 0, { 0, 0, 0}}, // (176, 83) + { 34, { 0, 0, 0}}, // (177, 83) + {128, { 0, 0, 0}}, // (178, 83) + {128, { 0, 0, 0}}, // (179, 83) + {128, { 0, 0, 0}}, // ( 0, 84) + {128, { 0, 0, 0}}, // ( 1, 84) + { 25, { 0, 0, 0}}, // ( 2, 84) + { 0, { 0, 0, 0}}, // ( 3, 84) + { 0, { 0, 0, 0}}, // ( 4, 84) + { 0, { 0, 0, 0}}, // ( 5, 84) + { 0, { 0, 0, 0}}, // ( 6, 84) + { 0, { 0, 0, 0}}, // ( 7, 84) + { 0, { 0, 0, 0}}, // ( 8, 84) + { 0, { 0, 0, 0}}, // ( 9, 84) + { 0, { 0, 0, 0}}, // ( 10, 84) + { 0, { 0, 0, 0}}, // ( 11, 84) + { 0, { 0, 0, 0}}, // ( 12, 84) + { 0, { 0, 0, 0}}, // ( 13, 84) + { 0, { 0, 0, 0}}, // ( 14, 84) + { 0, { 0, 0, 0}}, // ( 15, 84) + { 0, { 0, 0, 0}}, // ( 16, 84) + { 0, { 0, 0, 0}}, // ( 17, 84) + { 0, { 0, 0, 0}}, // ( 18, 84) + { 0, { 0, 0, 0}}, // ( 19, 84) + { 0, { 0, 0, 0}}, // ( 20, 84) + { 0, { 0, 0, 0}}, // ( 21, 84) + { 0, { 0, 0, 0}}, // ( 22, 84) + { 0, { 0, 0, 0}}, // ( 23, 84) + { 0, { 0, 0, 0}}, // ( 24, 84) + { 0, { 0, 0, 0}}, // ( 25, 84) + { 0, { 0, 0, 0}}, // ( 26, 84) + { 0, { 0, 0, 0}}, // ( 27, 84) + { 0, { 0, 0, 0}}, // ( 28, 84) + { 0, { 0, 0, 0}}, // ( 29, 84) + { 0, { 0, 0, 0}}, // ( 30, 84) + { 0, { 0, 0, 0}}, // ( 31, 84) + { 0, { 0, 0, 0}}, // ( 32, 84) + { 0, { 0, 0, 0}}, // ( 33, 84) + { 0, { 0, 0, 0}}, // ( 34, 84) + { 0, { 0, 0, 0}}, // ( 35, 84) + { 0, { 0, 0, 0}}, // ( 36, 84) + { 0, { 0, 0, 0}}, // ( 37, 84) + { 0, { 0, 0, 0}}, // ( 38, 84) + { 0, { 0, 0, 0}}, // ( 39, 84) + { 0, { 0, 0, 0}}, // ( 40, 84) + { 0, { 0, 0, 0}}, // ( 41, 84) + { 0, { 0, 0, 0}}, // ( 42, 84) + { 0, { 0, 0, 0}}, // ( 43, 84) + { 0, { 0, 0, 0}}, // ( 44, 84) + { 0, { 0, 0, 0}}, // ( 45, 84) + { 0, { 0, 0, 0}}, // ( 46, 84) + { 0, { 0, 0, 0}}, // ( 47, 84) + { 0, { 0, 0, 0}}, // ( 48, 84) + { 0, { 0, 0, 0}}, // ( 49, 84) + { 0, { 0, 0, 0}}, // ( 50, 84) + { 0, { 0, 0, 0}}, // ( 51, 84) + { 0, { 0, 0, 0}}, // ( 52, 84) + { 0, { 0, 0, 0}}, // ( 53, 84) + { 0, { 0, 0, 0}}, // ( 54, 84) + { 0, { 0, 0, 0}}, // ( 55, 84) + { 0, { 0, 0, 0}}, // ( 56, 84) + { 0, { 0, 0, 0}}, // ( 57, 84) + { 0, { 0, 0, 0}}, // ( 58, 84) + { 0, { 0, 0, 0}}, // ( 59, 84) + { 0, { 0, 0, 0}}, // ( 60, 84) + { 0, { 0, 0, 0}}, // ( 61, 84) + { 0, { 0, 0, 0}}, // ( 62, 84) + { 0, { 0, 0, 0}}, // ( 63, 84) + { 0, { 0, 0, 0}}, // ( 64, 84) + { 0, { 0, 0, 0}}, // ( 65, 84) + { 0, { 0, 0, 0}}, // ( 66, 84) + { 0, { 0, 0, 0}}, // ( 67, 84) + { 0, { 0, 0, 0}}, // ( 68, 84) + { 0, { 0, 0, 0}}, // ( 69, 84) + { 0, { 0, 0, 0}}, // ( 70, 84) + { 0, { 0, 0, 0}}, // ( 71, 84) + { 0, { 0, 0, 0}}, // ( 72, 84) + { 0, { 0, 0, 0}}, // ( 73, 84) + { 0, { 0, 0, 0}}, // ( 74, 84) + { 0, { 0, 0, 0}}, // ( 75, 84) + { 0, { 0, 0, 0}}, // ( 76, 84) + { 0, { 0, 0, 0}}, // ( 77, 84) + { 0, { 0, 0, 0}}, // ( 78, 84) + { 0, { 0, 0, 0}}, // ( 79, 84) + { 0, { 0, 0, 0}}, // ( 80, 84) + { 0, { 0, 0, 0}}, // ( 81, 84) + { 0, { 0, 0, 0}}, // ( 82, 84) + { 0, { 0, 0, 0}}, // ( 83, 84) + { 0, { 0, 0, 0}}, // ( 84, 84) + { 0, { 0, 0, 0}}, // ( 85, 84) + { 0, { 0, 0, 0}}, // ( 86, 84) + { 0, { 0, 0, 0}}, // ( 87, 84) + { 0, { 0, 0, 0}}, // ( 88, 84) + { 0, { 0, 0, 0}}, // ( 89, 84) + { 0, { 0, 0, 0}}, // ( 90, 84) + { 0, { 0, 0, 0}}, // ( 91, 84) + { 0, { 0, 0, 0}}, // ( 92, 84) + { 0, { 0, 0, 0}}, // ( 93, 84) + { 0, { 0, 0, 0}}, // ( 94, 84) + { 0, { 0, 0, 0}}, // ( 95, 84) + { 0, { 0, 0, 0}}, // ( 96, 84) + { 0, { 0, 0, 0}}, // ( 97, 84) + { 0, { 0, 0, 0}}, // ( 98, 84) + { 0, { 0, 0, 0}}, // ( 99, 84) + { 0, { 0, 0, 0}}, // (100, 84) + { 0, { 0, 0, 0}}, // (101, 84) + { 0, { 0, 0, 0}}, // (102, 84) + { 0, { 0, 0, 0}}, // (103, 84) + { 0, { 0, 0, 0}}, // (104, 84) + { 0, { 0, 0, 0}}, // (105, 84) + { 0, { 0, 0, 0}}, // (106, 84) + { 0, { 0, 0, 0}}, // (107, 84) + { 0, { 0, 0, 0}}, // (108, 84) + { 0, { 0, 0, 0}}, // (109, 84) + { 0, { 0, 0, 0}}, // (110, 84) + { 0, { 0, 0, 0}}, // (111, 84) + { 0, { 0, 0, 0}}, // (112, 84) + { 0, { 0, 0, 0}}, // (113, 84) + { 0, { 0, 0, 0}}, // (114, 84) + { 0, { 0, 0, 0}}, // (115, 84) + { 0, { 0, 0, 0}}, // (116, 84) + { 0, { 0, 0, 0}}, // (117, 84) + { 0, { 0, 0, 0}}, // (118, 84) + { 0, { 0, 0, 0}}, // (119, 84) + { 0, { 0, 0, 0}}, // (120, 84) + { 0, { 0, 0, 0}}, // (121, 84) + { 0, { 0, 0, 0}}, // (122, 84) + { 0, { 0, 0, 0}}, // (123, 84) + { 0, { 0, 0, 0}}, // (124, 84) + { 0, { 0, 0, 0}}, // (125, 84) + { 0, { 0, 0, 0}}, // (126, 84) + { 0, { 0, 0, 0}}, // (127, 84) + { 0, { 0, 0, 0}}, // (128, 84) + { 0, { 0, 0, 0}}, // (129, 84) + { 0, { 0, 0, 0}}, // (130, 84) + { 0, { 0, 0, 0}}, // (131, 84) + { 0, { 0, 0, 0}}, // (132, 84) + { 0, { 0, 0, 0}}, // (133, 84) + { 0, { 0, 0, 0}}, // (134, 84) + { 0, { 0, 0, 0}}, // (135, 84) + { 0, { 0, 0, 0}}, // (136, 84) + { 0, { 0, 0, 0}}, // (137, 84) + { 0, { 0, 0, 0}}, // (138, 84) + { 0, { 0, 0, 0}}, // (139, 84) + { 0, { 0, 0, 0}}, // (140, 84) + { 0, { 0, 0, 0}}, // (141, 84) + { 0, { 0, 0, 0}}, // (142, 84) + { 0, { 0, 0, 0}}, // (143, 84) + { 0, { 0, 0, 0}}, // (144, 84) + { 0, { 0, 0, 0}}, // (145, 84) + { 0, { 0, 0, 0}}, // (146, 84) + { 0, { 0, 0, 0}}, // (147, 84) + { 0, { 0, 0, 0}}, // (148, 84) + { 0, { 0, 0, 0}}, // (149, 84) + { 0, { 0, 0, 0}}, // (150, 84) + { 0, { 0, 0, 0}}, // (151, 84) + { 0, { 0, 0, 0}}, // (152, 84) + { 0, { 0, 0, 0}}, // (153, 84) + { 0, { 0, 0, 0}}, // (154, 84) + { 0, { 0, 0, 0}}, // (155, 84) + { 0, { 0, 0, 0}}, // (156, 84) + { 0, { 0, 0, 0}}, // (157, 84) + { 0, { 0, 0, 0}}, // (158, 84) + { 0, { 0, 0, 0}}, // (159, 84) + { 0, { 0, 0, 0}}, // (160, 84) + { 0, { 0, 0, 0}}, // (161, 84) + { 0, { 0, 0, 0}}, // (162, 84) + { 0, { 0, 0, 0}}, // (163, 84) + { 0, { 0, 0, 0}}, // (164, 84) + { 0, { 0, 0, 0}}, // (165, 84) + { 0, { 0, 0, 0}}, // (166, 84) + { 0, { 0, 0, 0}}, // (167, 84) + { 0, { 0, 0, 0}}, // (168, 84) + { 0, { 0, 0, 0}}, // (169, 84) + { 0, { 0, 0, 0}}, // (170, 84) + { 0, { 0, 0, 0}}, // (171, 84) + { 0, { 0, 0, 0}}, // (172, 84) + { 0, { 0, 0, 0}}, // (173, 84) + { 0, { 0, 0, 0}}, // (174, 84) + { 0, { 0, 0, 0}}, // (175, 84) + { 0, { 0, 0, 0}}, // (176, 84) + { 25, { 0, 0, 0}}, // (177, 84) + {128, { 0, 0, 0}}, // (178, 84) + {128, { 0, 0, 0}}, // (179, 84) + {128, { 0, 0, 0}}, // ( 0, 85) + {128, { 0, 0, 0}}, // ( 1, 85) + { 16, { 0, 0, 0}}, // ( 2, 85) + { 0, { 0, 0, 0}}, // ( 3, 85) + { 0, { 0, 0, 0}}, // ( 4, 85) + { 0, { 0, 0, 0}}, // ( 5, 85) + { 0, { 0, 0, 0}}, // ( 6, 85) + { 0, { 0, 0, 0}}, // ( 7, 85) + { 0, { 0, 0, 0}}, // ( 8, 85) + { 0, { 0, 0, 0}}, // ( 9, 85) + { 0, { 0, 0, 0}}, // ( 10, 85) + { 0, { 0, 0, 0}}, // ( 11, 85) + { 0, { 0, 0, 0}}, // ( 12, 85) + { 0, { 0, 0, 0}}, // ( 13, 85) + { 0, { 0, 0, 0}}, // ( 14, 85) + { 0, { 0, 0, 0}}, // ( 15, 85) + { 0, { 0, 0, 0}}, // ( 16, 85) + { 0, { 0, 0, 0}}, // ( 17, 85) + { 0, { 0, 0, 0}}, // ( 18, 85) + { 0, { 0, 0, 0}}, // ( 19, 85) + { 0, { 0, 0, 0}}, // ( 20, 85) + { 0, { 0, 0, 0}}, // ( 21, 85) + { 0, { 0, 0, 0}}, // ( 22, 85) + { 0, { 0, 0, 0}}, // ( 23, 85) + { 0, { 0, 0, 0}}, // ( 24, 85) + { 0, { 0, 0, 0}}, // ( 25, 85) + { 0, { 0, 0, 0}}, // ( 26, 85) + { 0, { 0, 0, 0}}, // ( 27, 85) + { 0, { 0, 0, 0}}, // ( 28, 85) + { 0, { 0, 0, 0}}, // ( 29, 85) + { 0, { 0, 0, 0}}, // ( 30, 85) + { 0, { 0, 0, 0}}, // ( 31, 85) + { 0, { 0, 0, 0}}, // ( 32, 85) + { 0, { 0, 0, 0}}, // ( 33, 85) + { 0, { 0, 0, 0}}, // ( 34, 85) + { 0, { 0, 0, 0}}, // ( 35, 85) + { 0, { 0, 0, 0}}, // ( 36, 85) + { 0, { 0, 0, 0}}, // ( 37, 85) + { 0, { 0, 0, 0}}, // ( 38, 85) + { 0, { 0, 0, 0}}, // ( 39, 85) + { 0, { 0, 0, 0}}, // ( 40, 85) + { 0, { 0, 0, 0}}, // ( 41, 85) + { 0, { 0, 0, 0}}, // ( 42, 85) + { 0, { 0, 0, 0}}, // ( 43, 85) + { 0, { 0, 0, 0}}, // ( 44, 85) + { 0, { 0, 0, 0}}, // ( 45, 85) + { 0, { 0, 0, 0}}, // ( 46, 85) + { 0, { 0, 0, 0}}, // ( 47, 85) + { 0, { 0, 0, 0}}, // ( 48, 85) + { 0, { 0, 0, 0}}, // ( 49, 85) + { 0, { 0, 0, 0}}, // ( 50, 85) + { 0, { 0, 0, 0}}, // ( 51, 85) + { 0, { 0, 0, 0}}, // ( 52, 85) + { 0, { 0, 0, 0}}, // ( 53, 85) + { 0, { 0, 0, 0}}, // ( 54, 85) + { 0, { 0, 0, 0}}, // ( 55, 85) + { 0, { 0, 0, 0}}, // ( 56, 85) + { 0, { 0, 0, 0}}, // ( 57, 85) + { 0, { 0, 0, 0}}, // ( 58, 85) + { 0, { 0, 0, 0}}, // ( 59, 85) + { 0, { 0, 0, 0}}, // ( 60, 85) + { 0, { 0, 0, 0}}, // ( 61, 85) + { 0, { 0, 0, 0}}, // ( 62, 85) + { 0, { 0, 0, 0}}, // ( 63, 85) + { 0, { 0, 0, 0}}, // ( 64, 85) + { 0, { 0, 0, 0}}, // ( 65, 85) + { 0, { 0, 0, 0}}, // ( 66, 85) + { 0, { 0, 0, 0}}, // ( 67, 85) + { 0, { 0, 0, 0}}, // ( 68, 85) + { 0, { 0, 0, 0}}, // ( 69, 85) + { 0, { 0, 0, 0}}, // ( 70, 85) + { 0, { 0, 0, 0}}, // ( 71, 85) + { 0, { 0, 0, 0}}, // ( 72, 85) + { 0, { 0, 0, 0}}, // ( 73, 85) + { 0, { 0, 0, 0}}, // ( 74, 85) + { 0, { 0, 0, 0}}, // ( 75, 85) + { 0, { 0, 0, 0}}, // ( 76, 85) + { 0, { 0, 0, 0}}, // ( 77, 85) + { 0, { 0, 0, 0}}, // ( 78, 85) + { 0, { 0, 0, 0}}, // ( 79, 85) + { 0, { 0, 0, 0}}, // ( 80, 85) + { 0, { 0, 0, 0}}, // ( 81, 85) + { 0, { 0, 0, 0}}, // ( 82, 85) + { 0, { 0, 0, 0}}, // ( 83, 85) + { 0, { 0, 0, 0}}, // ( 84, 85) + { 0, { 0, 0, 0}}, // ( 85, 85) + { 0, { 0, 0, 0}}, // ( 86, 85) + { 0, { 0, 0, 0}}, // ( 87, 85) + { 0, { 0, 0, 0}}, // ( 88, 85) + { 0, { 0, 0, 0}}, // ( 89, 85) + { 0, { 0, 0, 0}}, // ( 90, 85) + { 0, { 0, 0, 0}}, // ( 91, 85) + { 0, { 0, 0, 0}}, // ( 92, 85) + { 0, { 0, 0, 0}}, // ( 93, 85) + { 0, { 0, 0, 0}}, // ( 94, 85) + { 0, { 0, 0, 0}}, // ( 95, 85) + { 0, { 0, 0, 0}}, // ( 96, 85) + { 0, { 0, 0, 0}}, // ( 97, 85) + { 0, { 0, 0, 0}}, // ( 98, 85) + { 0, { 0, 0, 0}}, // ( 99, 85) + { 0, { 0, 0, 0}}, // (100, 85) + { 0, { 0, 0, 0}}, // (101, 85) + { 0, { 0, 0, 0}}, // (102, 85) + { 0, { 0, 0, 0}}, // (103, 85) + { 0, { 0, 0, 0}}, // (104, 85) + { 0, { 0, 0, 0}}, // (105, 85) + { 0, { 0, 0, 0}}, // (106, 85) + { 0, { 0, 0, 0}}, // (107, 85) + { 0, { 0, 0, 0}}, // (108, 85) + { 0, { 0, 0, 0}}, // (109, 85) + { 0, { 0, 0, 0}}, // (110, 85) + { 0, { 0, 0, 0}}, // (111, 85) + { 0, { 0, 0, 0}}, // (112, 85) + { 0, { 0, 0, 0}}, // (113, 85) + { 0, { 0, 0, 0}}, // (114, 85) + { 0, { 0, 0, 0}}, // (115, 85) + { 0, { 0, 0, 0}}, // (116, 85) + { 0, { 0, 0, 0}}, // (117, 85) + { 0, { 0, 0, 0}}, // (118, 85) + { 0, { 0, 0, 0}}, // (119, 85) + { 0, { 0, 0, 0}}, // (120, 85) + { 0, { 0, 0, 0}}, // (121, 85) + { 0, { 0, 0, 0}}, // (122, 85) + { 0, { 0, 0, 0}}, // (123, 85) + { 0, { 0, 0, 0}}, // (124, 85) + { 0, { 0, 0, 0}}, // (125, 85) + { 0, { 0, 0, 0}}, // (126, 85) + { 0, { 0, 0, 0}}, // (127, 85) + { 0, { 0, 0, 0}}, // (128, 85) + { 0, { 0, 0, 0}}, // (129, 85) + { 0, { 0, 0, 0}}, // (130, 85) + { 0, { 0, 0, 0}}, // (131, 85) + { 0, { 0, 0, 0}}, // (132, 85) + { 0, { 0, 0, 0}}, // (133, 85) + { 0, { 0, 0, 0}}, // (134, 85) + { 0, { 0, 0, 0}}, // (135, 85) + { 0, { 0, 0, 0}}, // (136, 85) + { 0, { 0, 0, 0}}, // (137, 85) + { 0, { 0, 0, 0}}, // (138, 85) + { 0, { 0, 0, 0}}, // (139, 85) + { 0, { 0, 0, 0}}, // (140, 85) + { 0, { 0, 0, 0}}, // (141, 85) + { 0, { 0, 0, 0}}, // (142, 85) + { 0, { 0, 0, 0}}, // (143, 85) + { 0, { 0, 0, 0}}, // (144, 85) + { 0, { 0, 0, 0}}, // (145, 85) + { 0, { 0, 0, 0}}, // (146, 85) + { 0, { 0, 0, 0}}, // (147, 85) + { 0, { 0, 0, 0}}, // (148, 85) + { 0, { 0, 0, 0}}, // (149, 85) + { 0, { 0, 0, 0}}, // (150, 85) + { 0, { 0, 0, 0}}, // (151, 85) + { 0, { 0, 0, 0}}, // (152, 85) + { 0, { 0, 0, 0}}, // (153, 85) + { 0, { 0, 0, 0}}, // (154, 85) + { 0, { 0, 0, 0}}, // (155, 85) + { 0, { 0, 0, 0}}, // (156, 85) + { 0, { 0, 0, 0}}, // (157, 85) + { 0, { 0, 0, 0}}, // (158, 85) + { 0, { 0, 0, 0}}, // (159, 85) + { 0, { 0, 0, 0}}, // (160, 85) + { 0, { 0, 0, 0}}, // (161, 85) + { 0, { 0, 0, 0}}, // (162, 85) + { 0, { 0, 0, 0}}, // (163, 85) + { 0, { 0, 0, 0}}, // (164, 85) + { 0, { 0, 0, 0}}, // (165, 85) + { 0, { 0, 0, 0}}, // (166, 85) + { 0, { 0, 0, 0}}, // (167, 85) + { 0, { 0, 0, 0}}, // (168, 85) + { 0, { 0, 0, 0}}, // (169, 85) + { 0, { 0, 0, 0}}, // (170, 85) + { 0, { 0, 0, 0}}, // (171, 85) + { 0, { 0, 0, 0}}, // (172, 85) + { 0, { 0, 0, 0}}, // (173, 85) + { 0, { 0, 0, 0}}, // (174, 85) + { 0, { 0, 0, 0}}, // (175, 85) + { 0, { 0, 0, 0}}, // (176, 85) + { 15, { 0, 0, 0}}, // (177, 85) + {128, { 0, 0, 0}}, // (178, 85) + {128, { 0, 0, 0}}, // (179, 85) + {128, { 0, 0, 0}}, // ( 0, 86) + {128, { 0, 0, 0}}, // ( 1, 86) + { 12, { 0, 0, 0}}, // ( 2, 86) + { 0, { 0, 0, 0}}, // ( 3, 86) + { 0, { 0, 0, 0}}, // ( 4, 86) + { 0, { 0, 0, 0}}, // ( 5, 86) + { 0, { 0, 0, 0}}, // ( 6, 86) + { 0, { 0, 0, 0}}, // ( 7, 86) + { 0, { 0, 0, 0}}, // ( 8, 86) + { 0, { 0, 0, 0}}, // ( 9, 86) + { 0, { 0, 0, 0}}, // ( 10, 86) + { 0, { 0, 0, 0}}, // ( 11, 86) + { 0, { 0, 0, 0}}, // ( 12, 86) + { 0, { 0, 0, 0}}, // ( 13, 86) + { 0, { 0, 0, 0}}, // ( 14, 86) + { 0, { 0, 0, 0}}, // ( 15, 86) + { 0, { 0, 0, 0}}, // ( 16, 86) + { 0, { 0, 0, 0}}, // ( 17, 86) + { 0, { 0, 0, 0}}, // ( 18, 86) + { 0, { 0, 0, 0}}, // ( 19, 86) + { 0, { 0, 0, 0}}, // ( 20, 86) + { 0, { 0, 0, 0}}, // ( 21, 86) + { 0, { 0, 0, 0}}, // ( 22, 86) + { 0, { 0, 0, 0}}, // ( 23, 86) + { 0, { 0, 0, 0}}, // ( 24, 86) + { 0, { 0, 0, 0}}, // ( 25, 86) + { 0, { 0, 0, 0}}, // ( 26, 86) + { 0, { 0, 0, 0}}, // ( 27, 86) + { 0, { 0, 0, 0}}, // ( 28, 86) + { 0, { 0, 0, 0}}, // ( 29, 86) + { 0, { 0, 0, 0}}, // ( 30, 86) + { 0, { 0, 0, 0}}, // ( 31, 86) + { 0, { 0, 0, 0}}, // ( 32, 86) + { 0, { 0, 0, 0}}, // ( 33, 86) + { 0, { 0, 0, 0}}, // ( 34, 86) + { 0, { 0, 0, 0}}, // ( 35, 86) + { 0, { 0, 0, 0}}, // ( 36, 86) + { 0, { 0, 0, 0}}, // ( 37, 86) + { 0, { 0, 0, 0}}, // ( 38, 86) + { 0, { 0, 0, 0}}, // ( 39, 86) + { 0, { 0, 0, 0}}, // ( 40, 86) + { 0, { 0, 0, 0}}, // ( 41, 86) + { 0, { 0, 0, 0}}, // ( 42, 86) + { 0, { 0, 0, 0}}, // ( 43, 86) + { 0, { 0, 0, 0}}, // ( 44, 86) + { 0, { 0, 0, 0}}, // ( 45, 86) + { 0, { 0, 0, 0}}, // ( 46, 86) + { 0, { 0, 0, 0}}, // ( 47, 86) + { 0, { 0, 0, 0}}, // ( 48, 86) + { 0, { 0, 0, 0}}, // ( 49, 86) + { 0, { 0, 0, 0}}, // ( 50, 86) + { 0, { 0, 0, 0}}, // ( 51, 86) + { 0, { 0, 0, 0}}, // ( 52, 86) + { 0, { 0, 0, 0}}, // ( 53, 86) + { 0, { 0, 0, 0}}, // ( 54, 86) + { 0, { 0, 0, 0}}, // ( 55, 86) + { 0, { 0, 0, 0}}, // ( 56, 86) + { 0, { 0, 0, 0}}, // ( 57, 86) + { 0, { 0, 0, 0}}, // ( 58, 86) + { 0, { 0, 0, 0}}, // ( 59, 86) + { 0, { 0, 0, 0}}, // ( 60, 86) + { 0, { 0, 0, 0}}, // ( 61, 86) + { 0, { 0, 0, 0}}, // ( 62, 86) + { 0, { 0, 0, 0}}, // ( 63, 86) + { 0, { 0, 0, 0}}, // ( 64, 86) + { 0, { 0, 0, 0}}, // ( 65, 86) + { 0, { 0, 0, 0}}, // ( 66, 86) + { 0, { 0, 0, 0}}, // ( 67, 86) + { 0, { 0, 0, 0}}, // ( 68, 86) + { 0, { 0, 0, 0}}, // ( 69, 86) + { 0, { 0, 0, 0}}, // ( 70, 86) + { 0, { 0, 0, 0}}, // ( 71, 86) + { 0, { 0, 0, 0}}, // ( 72, 86) + { 0, { 0, 0, 0}}, // ( 73, 86) + { 0, { 0, 0, 0}}, // ( 74, 86) + { 0, { 0, 0, 0}}, // ( 75, 86) + { 0, { 0, 0, 0}}, // ( 76, 86) + { 0, { 0, 0, 0}}, // ( 77, 86) + { 0, { 0, 0, 0}}, // ( 78, 86) + { 0, { 0, 0, 0}}, // ( 79, 86) + { 0, { 0, 0, 0}}, // ( 80, 86) + { 0, { 0, 0, 0}}, // ( 81, 86) + { 0, { 0, 0, 0}}, // ( 82, 86) + { 0, { 0, 0, 0}}, // ( 83, 86) + { 0, { 0, 0, 0}}, // ( 84, 86) + { 0, { 0, 0, 0}}, // ( 85, 86) + { 0, { 0, 0, 0}}, // ( 86, 86) + { 0, { 0, 0, 0}}, // ( 87, 86) + { 0, { 0, 0, 0}}, // ( 88, 86) + { 0, { 0, 0, 0}}, // ( 89, 86) + { 0, { 0, 0, 0}}, // ( 90, 86) + { 0, { 0, 0, 0}}, // ( 91, 86) + { 0, { 0, 0, 0}}, // ( 92, 86) + { 0, { 0, 0, 0}}, // ( 93, 86) + { 0, { 0, 0, 0}}, // ( 94, 86) + { 0, { 0, 0, 0}}, // ( 95, 86) + { 0, { 0, 0, 0}}, // ( 96, 86) + { 0, { 0, 0, 0}}, // ( 97, 86) + { 0, { 0, 0, 0}}, // ( 98, 86) + { 0, { 0, 0, 0}}, // ( 99, 86) + { 0, { 0, 0, 0}}, // (100, 86) + { 0, { 0, 0, 0}}, // (101, 86) + { 0, { 0, 0, 0}}, // (102, 86) + { 0, { 0, 0, 0}}, // (103, 86) + { 0, { 0, 0, 0}}, // (104, 86) + { 0, { 0, 0, 0}}, // (105, 86) + { 0, { 0, 0, 0}}, // (106, 86) + { 0, { 0, 0, 0}}, // (107, 86) + { 0, { 0, 0, 0}}, // (108, 86) + { 0, { 0, 0, 0}}, // (109, 86) + { 0, { 0, 0, 0}}, // (110, 86) + { 0, { 0, 0, 0}}, // (111, 86) + { 0, { 0, 0, 0}}, // (112, 86) + { 0, { 0, 0, 0}}, // (113, 86) + { 0, { 0, 0, 0}}, // (114, 86) + { 0, { 0, 0, 0}}, // (115, 86) + { 0, { 0, 0, 0}}, // (116, 86) + { 0, { 0, 0, 0}}, // (117, 86) + { 0, { 0, 0, 0}}, // (118, 86) + { 0, { 0, 0, 0}}, // (119, 86) + { 0, { 0, 0, 0}}, // (120, 86) + { 0, { 0, 0, 0}}, // (121, 86) + { 0, { 0, 0, 0}}, // (122, 86) + { 0, { 0, 0, 0}}, // (123, 86) + { 0, { 0, 0, 0}}, // (124, 86) + { 0, { 0, 0, 0}}, // (125, 86) + { 0, { 0, 0, 0}}, // (126, 86) + { 0, { 0, 0, 0}}, // (127, 86) + { 0, { 0, 0, 0}}, // (128, 86) + { 0, { 0, 0, 0}}, // (129, 86) + { 0, { 0, 0, 0}}, // (130, 86) + { 0, { 0, 0, 0}}, // (131, 86) + { 0, { 0, 0, 0}}, // (132, 86) + { 0, { 0, 0, 0}}, // (133, 86) + { 0, { 0, 0, 0}}, // (134, 86) + { 0, { 0, 0, 0}}, // (135, 86) + { 0, { 0, 0, 0}}, // (136, 86) + { 0, { 0, 0, 0}}, // (137, 86) + { 0, { 0, 0, 0}}, // (138, 86) + { 0, { 0, 0, 0}}, // (139, 86) + { 0, { 0, 0, 0}}, // (140, 86) + { 0, { 0, 0, 0}}, // (141, 86) + { 0, { 0, 0, 0}}, // (142, 86) + { 0, { 0, 0, 0}}, // (143, 86) + { 0, { 0, 0, 0}}, // (144, 86) + { 0, { 0, 0, 0}}, // (145, 86) + { 0, { 0, 0, 0}}, // (146, 86) + { 0, { 0, 0, 0}}, // (147, 86) + { 0, { 0, 0, 0}}, // (148, 86) + { 0, { 0, 0, 0}}, // (149, 86) + { 0, { 0, 0, 0}}, // (150, 86) + { 0, { 0, 0, 0}}, // (151, 86) + { 0, { 0, 0, 0}}, // (152, 86) + { 0, { 0, 0, 0}}, // (153, 86) + { 0, { 0, 0, 0}}, // (154, 86) + { 0, { 0, 0, 0}}, // (155, 86) + { 0, { 0, 0, 0}}, // (156, 86) + { 0, { 0, 0, 0}}, // (157, 86) + { 0, { 0, 0, 0}}, // (158, 86) + { 0, { 0, 0, 0}}, // (159, 86) + { 0, { 0, 0, 0}}, // (160, 86) + { 0, { 0, 0, 0}}, // (161, 86) + { 0, { 0, 0, 0}}, // (162, 86) + { 0, { 0, 0, 0}}, // (163, 86) + { 0, { 0, 0, 0}}, // (164, 86) + { 0, { 0, 0, 0}}, // (165, 86) + { 0, { 0, 0, 0}}, // (166, 86) + { 0, { 0, 0, 0}}, // (167, 86) + { 0, { 0, 0, 0}}, // (168, 86) + { 0, { 0, 0, 0}}, // (169, 86) + { 0, { 0, 0, 0}}, // (170, 86) + { 0, { 0, 0, 0}}, // (171, 86) + { 0, { 0, 0, 0}}, // (172, 86) + { 0, { 0, 0, 0}}, // (173, 86) + { 0, { 0, 0, 0}}, // (174, 86) + { 0, { 0, 0, 0}}, // (175, 86) + { 0, { 0, 0, 0}}, // (176, 86) + { 11, { 0, 0, 0}}, // (177, 86) + {128, { 0, 0, 0}}, // (178, 86) + {128, { 0, 0, 0}}, // (179, 86) + {128, { 0, 0, 0}}, // ( 0, 87) + {128, { 0, 0, 0}}, // ( 1, 87) + { 8, { 0, 0, 0}}, // ( 2, 87) + { 0, { 0, 0, 0}}, // ( 3, 87) + { 0, { 0, 0, 0}}, // ( 4, 87) + { 0, { 0, 0, 0}}, // ( 5, 87) + { 0, { 0, 0, 0}}, // ( 6, 87) + { 0, { 0, 0, 0}}, // ( 7, 87) + { 0, { 0, 0, 0}}, // ( 8, 87) + { 0, { 0, 0, 0}}, // ( 9, 87) + { 0, { 0, 0, 0}}, // ( 10, 87) + { 0, { 0, 0, 0}}, // ( 11, 87) + { 0, { 0, 0, 0}}, // ( 12, 87) + { 0, { 0, 0, 0}}, // ( 13, 87) + { 0, { 0, 0, 0}}, // ( 14, 87) + { 0, { 0, 0, 0}}, // ( 15, 87) + { 0, { 0, 0, 0}}, // ( 16, 87) + { 0, { 0, 0, 0}}, // ( 17, 87) + { 0, { 0, 0, 0}}, // ( 18, 87) + { 0, { 0, 0, 0}}, // ( 19, 87) + { 0, { 0, 0, 0}}, // ( 20, 87) + { 0, { 0, 0, 0}}, // ( 21, 87) + { 0, { 0, 0, 0}}, // ( 22, 87) + { 0, { 0, 0, 0}}, // ( 23, 87) + { 0, { 0, 0, 0}}, // ( 24, 87) + { 0, { 0, 0, 0}}, // ( 25, 87) + { 0, { 0, 0, 0}}, // ( 26, 87) + { 0, { 0, 0, 0}}, // ( 27, 87) + { 0, { 0, 0, 0}}, // ( 28, 87) + { 0, { 0, 0, 0}}, // ( 29, 87) + { 0, { 0, 0, 0}}, // ( 30, 87) + { 0, { 0, 0, 0}}, // ( 31, 87) + { 0, { 0, 0, 0}}, // ( 32, 87) + { 0, { 0, 0, 0}}, // ( 33, 87) + { 0, { 0, 0, 0}}, // ( 34, 87) + { 0, { 0, 0, 0}}, // ( 35, 87) + { 0, { 0, 0, 0}}, // ( 36, 87) + { 0, { 0, 0, 0}}, // ( 37, 87) + { 0, { 0, 0, 0}}, // ( 38, 87) + { 0, { 0, 0, 0}}, // ( 39, 87) + { 0, { 0, 0, 0}}, // ( 40, 87) + { 0, { 0, 0, 0}}, // ( 41, 87) + { 0, { 0, 0, 0}}, // ( 42, 87) + { 0, { 0, 0, 0}}, // ( 43, 87) + { 0, { 0, 0, 0}}, // ( 44, 87) + { 0, { 0, 0, 0}}, // ( 45, 87) + { 0, { 0, 0, 0}}, // ( 46, 87) + { 0, { 0, 0, 0}}, // ( 47, 87) + { 0, { 0, 0, 0}}, // ( 48, 87) + { 0, { 0, 0, 0}}, // ( 49, 87) + { 0, { 0, 0, 0}}, // ( 50, 87) + { 0, { 0, 0, 0}}, // ( 51, 87) + { 0, { 0, 0, 0}}, // ( 52, 87) + { 0, { 0, 0, 0}}, // ( 53, 87) + { 0, { 0, 0, 0}}, // ( 54, 87) + { 0, { 0, 0, 0}}, // ( 55, 87) + { 0, { 0, 0, 0}}, // ( 56, 87) + { 0, { 0, 0, 0}}, // ( 57, 87) + { 0, { 0, 0, 0}}, // ( 58, 87) + { 0, { 0, 0, 0}}, // ( 59, 87) + { 0, { 0, 0, 0}}, // ( 60, 87) + { 0, { 0, 0, 0}}, // ( 61, 87) + { 0, { 0, 0, 0}}, // ( 62, 87) + { 0, { 0, 0, 0}}, // ( 63, 87) + { 0, { 0, 0, 0}}, // ( 64, 87) + { 0, { 0, 0, 0}}, // ( 65, 87) + { 0, { 0, 0, 0}}, // ( 66, 87) + { 0, { 0, 0, 0}}, // ( 67, 87) + { 0, { 0, 0, 0}}, // ( 68, 87) + { 0, { 0, 0, 0}}, // ( 69, 87) + { 0, { 0, 0, 0}}, // ( 70, 87) + { 0, { 0, 0, 0}}, // ( 71, 87) + { 0, { 0, 0, 0}}, // ( 72, 87) + { 0, { 0, 0, 0}}, // ( 73, 87) + { 0, { 0, 0, 0}}, // ( 74, 87) + { 0, { 0, 0, 0}}, // ( 75, 87) + { 0, { 0, 0, 0}}, // ( 76, 87) + { 0, { 0, 0, 0}}, // ( 77, 87) + { 0, { 0, 0, 0}}, // ( 78, 87) + { 0, { 0, 0, 0}}, // ( 79, 87) + { 0, { 0, 0, 0}}, // ( 80, 87) + { 0, { 0, 0, 0}}, // ( 81, 87) + { 0, { 0, 0, 0}}, // ( 82, 87) + { 0, { 0, 0, 0}}, // ( 83, 87) + { 0, { 0, 0, 0}}, // ( 84, 87) + { 0, { 0, 0, 0}}, // ( 85, 87) + { 0, { 0, 0, 0}}, // ( 86, 87) + { 0, { 0, 0, 0}}, // ( 87, 87) + { 0, { 0, 0, 0}}, // ( 88, 87) + { 0, { 0, 0, 0}}, // ( 89, 87) + { 0, { 0, 0, 0}}, // ( 90, 87) + { 0, { 0, 0, 0}}, // ( 91, 87) + { 0, { 0, 0, 0}}, // ( 92, 87) + { 0, { 0, 0, 0}}, // ( 93, 87) + { 0, { 0, 0, 0}}, // ( 94, 87) + { 0, { 0, 0, 0}}, // ( 95, 87) + { 0, { 0, 0, 0}}, // ( 96, 87) + { 0, { 0, 0, 0}}, // ( 97, 87) + { 0, { 0, 0, 0}}, // ( 98, 87) + { 0, { 0, 0, 0}}, // ( 99, 87) + { 0, { 0, 0, 0}}, // (100, 87) + { 0, { 0, 0, 0}}, // (101, 87) + { 0, { 0, 0, 0}}, // (102, 87) + { 0, { 0, 0, 0}}, // (103, 87) + { 0, { 0, 0, 0}}, // (104, 87) + { 0, { 0, 0, 0}}, // (105, 87) + { 0, { 0, 0, 0}}, // (106, 87) + { 0, { 0, 0, 0}}, // (107, 87) + { 0, { 0, 0, 0}}, // (108, 87) + { 0, { 0, 0, 0}}, // (109, 87) + { 0, { 0, 0, 0}}, // (110, 87) + { 0, { 0, 0, 0}}, // (111, 87) + { 0, { 0, 0, 0}}, // (112, 87) + { 0, { 0, 0, 0}}, // (113, 87) + { 0, { 0, 0, 0}}, // (114, 87) + { 0, { 0, 0, 0}}, // (115, 87) + { 0, { 0, 0, 0}}, // (116, 87) + { 0, { 0, 0, 0}}, // (117, 87) + { 0, { 0, 0, 0}}, // (118, 87) + { 0, { 0, 0, 0}}, // (119, 87) + { 0, { 0, 0, 0}}, // (120, 87) + { 0, { 0, 0, 0}}, // (121, 87) + { 0, { 0, 0, 0}}, // (122, 87) + { 0, { 0, 0, 0}}, // (123, 87) + { 0, { 0, 0, 0}}, // (124, 87) + { 0, { 0, 0, 0}}, // (125, 87) + { 0, { 0, 0, 0}}, // (126, 87) + { 0, { 0, 0, 0}}, // (127, 87) + { 0, { 0, 0, 0}}, // (128, 87) + { 0, { 0, 0, 0}}, // (129, 87) + { 0, { 0, 0, 0}}, // (130, 87) + { 0, { 0, 0, 0}}, // (131, 87) + { 0, { 0, 0, 0}}, // (132, 87) + { 0, { 0, 0, 0}}, // (133, 87) + { 0, { 0, 0, 0}}, // (134, 87) + { 0, { 0, 0, 0}}, // (135, 87) + { 0, { 0, 0, 0}}, // (136, 87) + { 0, { 0, 0, 0}}, // (137, 87) + { 0, { 0, 0, 0}}, // (138, 87) + { 0, { 0, 0, 0}}, // (139, 87) + { 0, { 0, 0, 0}}, // (140, 87) + { 0, { 0, 0, 0}}, // (141, 87) + { 0, { 0, 0, 0}}, // (142, 87) + { 0, { 0, 0, 0}}, // (143, 87) + { 0, { 0, 0, 0}}, // (144, 87) + { 0, { 0, 0, 0}}, // (145, 87) + { 0, { 0, 0, 0}}, // (146, 87) + { 0, { 0, 0, 0}}, // (147, 87) + { 0, { 0, 0, 0}}, // (148, 87) + { 0, { 0, 0, 0}}, // (149, 87) + { 0, { 0, 0, 0}}, // (150, 87) + { 0, { 0, 0, 0}}, // (151, 87) + { 0, { 0, 0, 0}}, // (152, 87) + { 0, { 0, 0, 0}}, // (153, 87) + { 0, { 0, 0, 0}}, // (154, 87) + { 0, { 0, 0, 0}}, // (155, 87) + { 0, { 0, 0, 0}}, // (156, 87) + { 0, { 0, 0, 0}}, // (157, 87) + { 0, { 0, 0, 0}}, // (158, 87) + { 0, { 0, 0, 0}}, // (159, 87) + { 0, { 0, 0, 0}}, // (160, 87) + { 0, { 0, 0, 0}}, // (161, 87) + { 0, { 0, 0, 0}}, // (162, 87) + { 0, { 0, 0, 0}}, // (163, 87) + { 0, { 0, 0, 0}}, // (164, 87) + { 0, { 0, 0, 0}}, // (165, 87) + { 0, { 0, 0, 0}}, // (166, 87) + { 0, { 0, 0, 0}}, // (167, 87) + { 0, { 0, 0, 0}}, // (168, 87) + { 0, { 0, 0, 0}}, // (169, 87) + { 0, { 0, 0, 0}}, // (170, 87) + { 0, { 0, 0, 0}}, // (171, 87) + { 0, { 0, 0, 0}}, // (172, 87) + { 0, { 0, 0, 0}}, // (173, 87) + { 0, { 0, 0, 0}}, // (174, 87) + { 0, { 0, 0, 0}}, // (175, 87) + { 0, { 0, 0, 0}}, // (176, 87) + { 8, { 0, 0, 0}}, // (177, 87) + {128, { 0, 0, 0}}, // (178, 87) + {128, { 0, 0, 0}}, // (179, 87) + {128, { 0, 0, 0}}, // ( 0, 88) + {128, { 0, 0, 0}}, // ( 1, 88) + { 7, { 0, 0, 0}}, // ( 2, 88) + { 0, { 0, 0, 0}}, // ( 3, 88) + { 0, { 0, 0, 0}}, // ( 4, 88) + { 0, { 0, 0, 0}}, // ( 5, 88) + { 0, { 0, 0, 0}}, // ( 6, 88) + { 0, { 0, 0, 0}}, // ( 7, 88) + { 0, { 0, 0, 0}}, // ( 8, 88) + { 0, { 0, 0, 0}}, // ( 9, 88) + { 0, { 0, 0, 0}}, // ( 10, 88) + { 0, { 0, 0, 0}}, // ( 11, 88) + { 0, { 0, 0, 0}}, // ( 12, 88) + { 0, { 0, 0, 0}}, // ( 13, 88) + { 0, { 0, 0, 0}}, // ( 14, 88) + { 0, { 0, 0, 0}}, // ( 15, 88) + { 0, { 0, 0, 0}}, // ( 16, 88) + { 0, { 0, 0, 0}}, // ( 17, 88) + { 0, { 0, 0, 0}}, // ( 18, 88) + { 0, { 0, 0, 0}}, // ( 19, 88) + { 0, { 0, 0, 0}}, // ( 20, 88) + { 0, { 0, 0, 0}}, // ( 21, 88) + { 0, { 0, 0, 0}}, // ( 22, 88) + { 0, { 0, 0, 0}}, // ( 23, 88) + { 0, { 0, 0, 0}}, // ( 24, 88) + { 0, { 0, 0, 0}}, // ( 25, 88) + { 0, { 0, 0, 0}}, // ( 26, 88) + { 0, { 0, 0, 0}}, // ( 27, 88) + { 0, { 0, 0, 0}}, // ( 28, 88) + { 0, { 0, 0, 0}}, // ( 29, 88) + { 0, { 0, 0, 0}}, // ( 30, 88) + { 0, { 0, 0, 0}}, // ( 31, 88) + { 0, { 0, 0, 0}}, // ( 32, 88) + { 0, { 0, 0, 0}}, // ( 33, 88) + { 0, { 0, 0, 0}}, // ( 34, 88) + { 0, { 0, 0, 0}}, // ( 35, 88) + { 0, { 0, 0, 0}}, // ( 36, 88) + { 0, { 0, 0, 0}}, // ( 37, 88) + { 0, { 0, 0, 0}}, // ( 38, 88) + { 0, { 0, 0, 0}}, // ( 39, 88) + { 0, { 0, 0, 0}}, // ( 40, 88) + { 0, { 0, 0, 0}}, // ( 41, 88) + { 0, { 0, 0, 0}}, // ( 42, 88) + { 0, { 0, 0, 0}}, // ( 43, 88) + { 0, { 0, 0, 0}}, // ( 44, 88) + { 0, { 0, 0, 0}}, // ( 45, 88) + { 0, { 0, 0, 0}}, // ( 46, 88) + { 0, { 0, 0, 0}}, // ( 47, 88) + { 0, { 0, 0, 0}}, // ( 48, 88) + { 0, { 0, 0, 0}}, // ( 49, 88) + { 0, { 0, 0, 0}}, // ( 50, 88) + { 0, { 0, 0, 0}}, // ( 51, 88) + { 0, { 0, 0, 0}}, // ( 52, 88) + { 0, { 0, 0, 0}}, // ( 53, 88) + { 0, { 0, 0, 0}}, // ( 54, 88) + { 0, { 0, 0, 0}}, // ( 55, 88) + { 0, { 0, 0, 0}}, // ( 56, 88) + { 0, { 0, 0, 0}}, // ( 57, 88) + { 0, { 0, 0, 0}}, // ( 58, 88) + { 0, { 0, 0, 0}}, // ( 59, 88) + { 0, { 0, 0, 0}}, // ( 60, 88) + { 0, { 0, 0, 0}}, // ( 61, 88) + { 0, { 0, 0, 0}}, // ( 62, 88) + { 0, { 0, 0, 0}}, // ( 63, 88) + { 0, { 0, 0, 0}}, // ( 64, 88) + { 0, { 0, 0, 0}}, // ( 65, 88) + { 0, { 0, 0, 0}}, // ( 66, 88) + { 0, { 0, 0, 0}}, // ( 67, 88) + { 0, { 0, 0, 0}}, // ( 68, 88) + { 0, { 0, 0, 0}}, // ( 69, 88) + { 0, { 0, 0, 0}}, // ( 70, 88) + { 0, { 0, 0, 0}}, // ( 71, 88) + { 0, { 0, 0, 0}}, // ( 72, 88) + { 0, { 0, 0, 0}}, // ( 73, 88) + { 0, { 0, 0, 0}}, // ( 74, 88) + { 0, { 0, 0, 0}}, // ( 75, 88) + { 0, { 0, 0, 0}}, // ( 76, 88) + { 0, { 0, 0, 0}}, // ( 77, 88) + { 0, { 0, 0, 0}}, // ( 78, 88) + { 0, { 0, 0, 0}}, // ( 79, 88) + { 0, { 0, 0, 0}}, // ( 80, 88) + { 0, { 0, 0, 0}}, // ( 81, 88) + { 0, { 0, 0, 0}}, // ( 82, 88) + { 0, { 0, 0, 0}}, // ( 83, 88) + { 0, { 0, 0, 0}}, // ( 84, 88) + { 0, { 0, 0, 0}}, // ( 85, 88) + { 0, { 0, 0, 0}}, // ( 86, 88) + { 0, { 0, 0, 0}}, // ( 87, 88) + { 0, { 0, 0, 0}}, // ( 88, 88) + { 0, { 0, 0, 0}}, // ( 89, 88) + { 0, { 0, 0, 0}}, // ( 90, 88) + { 0, { 0, 0, 0}}, // ( 91, 88) + { 0, { 0, 0, 0}}, // ( 92, 88) + { 0, { 0, 0, 0}}, // ( 93, 88) + { 0, { 0, 0, 0}}, // ( 94, 88) + { 0, { 0, 0, 0}}, // ( 95, 88) + { 0, { 0, 0, 0}}, // ( 96, 88) + { 0, { 0, 0, 0}}, // ( 97, 88) + { 0, { 0, 0, 0}}, // ( 98, 88) + { 0, { 0, 0, 0}}, // ( 99, 88) + { 0, { 0, 0, 0}}, // (100, 88) + { 0, { 0, 0, 0}}, // (101, 88) + { 0, { 0, 0, 0}}, // (102, 88) + { 0, { 0, 0, 0}}, // (103, 88) + { 0, { 0, 0, 0}}, // (104, 88) + { 0, { 0, 0, 0}}, // (105, 88) + { 0, { 0, 0, 0}}, // (106, 88) + { 0, { 0, 0, 0}}, // (107, 88) + { 0, { 0, 0, 0}}, // (108, 88) + { 0, { 0, 0, 0}}, // (109, 88) + { 0, { 0, 0, 0}}, // (110, 88) + { 0, { 0, 0, 0}}, // (111, 88) + { 0, { 0, 0, 0}}, // (112, 88) + { 0, { 0, 0, 0}}, // (113, 88) + { 0, { 0, 0, 0}}, // (114, 88) + { 0, { 0, 0, 0}}, // (115, 88) + { 0, { 0, 0, 0}}, // (116, 88) + { 0, { 0, 0, 0}}, // (117, 88) + { 0, { 0, 0, 0}}, // (118, 88) + { 0, { 0, 0, 0}}, // (119, 88) + { 0, { 0, 0, 0}}, // (120, 88) + { 0, { 0, 0, 0}}, // (121, 88) + { 0, { 0, 0, 0}}, // (122, 88) + { 0, { 0, 0, 0}}, // (123, 88) + { 0, { 0, 0, 0}}, // (124, 88) + { 0, { 0, 0, 0}}, // (125, 88) + { 0, { 0, 0, 0}}, // (126, 88) + { 0, { 0, 0, 0}}, // (127, 88) + { 0, { 0, 0, 0}}, // (128, 88) + { 0, { 0, 0, 0}}, // (129, 88) + { 0, { 0, 0, 0}}, // (130, 88) + { 0, { 0, 0, 0}}, // (131, 88) + { 0, { 0, 0, 0}}, // (132, 88) + { 0, { 0, 0, 0}}, // (133, 88) + { 0, { 0, 0, 0}}, // (134, 88) + { 0, { 0, 0, 0}}, // (135, 88) + { 0, { 0, 0, 0}}, // (136, 88) + { 0, { 0, 0, 0}}, // (137, 88) + { 0, { 0, 0, 0}}, // (138, 88) + { 0, { 0, 0, 0}}, // (139, 88) + { 0, { 0, 0, 0}}, // (140, 88) + { 0, { 0, 0, 0}}, // (141, 88) + { 0, { 0, 0, 0}}, // (142, 88) + { 0, { 0, 0, 0}}, // (143, 88) + { 0, { 0, 0, 0}}, // (144, 88) + { 0, { 0, 0, 0}}, // (145, 88) + { 0, { 0, 0, 0}}, // (146, 88) + { 0, { 0, 0, 0}}, // (147, 88) + { 0, { 0, 0, 0}}, // (148, 88) + { 0, { 0, 0, 0}}, // (149, 88) + { 0, { 0, 0, 0}}, // (150, 88) + { 0, { 0, 0, 0}}, // (151, 88) + { 0, { 0, 0, 0}}, // (152, 88) + { 0, { 0, 0, 0}}, // (153, 88) + { 0, { 0, 0, 0}}, // (154, 88) + { 0, { 0, 0, 0}}, // (155, 88) + { 0, { 0, 0, 0}}, // (156, 88) + { 0, { 0, 0, 0}}, // (157, 88) + { 0, { 0, 0, 0}}, // (158, 88) + { 0, { 0, 0, 0}}, // (159, 88) + { 0, { 0, 0, 0}}, // (160, 88) + { 0, { 0, 0, 0}}, // (161, 88) + { 0, { 0, 0, 0}}, // (162, 88) + { 0, { 0, 0, 0}}, // (163, 88) + { 0, { 0, 0, 0}}, // (164, 88) + { 0, { 0, 0, 0}}, // (165, 88) + { 0, { 0, 0, 0}}, // (166, 88) + { 0, { 0, 0, 0}}, // (167, 88) + { 0, { 0, 0, 0}}, // (168, 88) + { 0, { 0, 0, 0}}, // (169, 88) + { 0, { 0, 0, 0}}, // (170, 88) + { 0, { 0, 0, 0}}, // (171, 88) + { 0, { 0, 0, 0}}, // (172, 88) + { 0, { 0, 0, 0}}, // (173, 88) + { 0, { 0, 0, 0}}, // (174, 88) + { 0, { 0, 0, 0}}, // (175, 88) + { 0, { 0, 0, 0}}, // (176, 88) + { 6, { 0, 0, 0}}, // (177, 88) + {128, { 0, 0, 0}}, // (178, 88) + {128, { 0, 0, 0}}, // (179, 88) + {128, { 0, 0, 0}}, // ( 0, 89) + {128, { 0, 0, 0}}, // ( 1, 89) + { 0, { 0, 0, 0}}, // ( 2, 89) + { 0, { 0, 0, 0}}, // ( 3, 89) + { 0, { 0, 0, 0}}, // ( 4, 89) + { 0, { 0, 0, 0}}, // ( 5, 89) + { 0, { 0, 0, 0}}, // ( 6, 89) + { 0, { 0, 0, 0}}, // ( 7, 89) + { 0, { 0, 0, 0}}, // ( 8, 89) + { 0, { 0, 0, 0}}, // ( 9, 89) + { 0, { 0, 0, 0}}, // ( 10, 89) + { 0, { 0, 0, 0}}, // ( 11, 89) + { 0, { 0, 0, 0}}, // ( 12, 89) + { 0, { 0, 0, 0}}, // ( 13, 89) + { 0, { 0, 0, 0}}, // ( 14, 89) + { 0, { 0, 0, 0}}, // ( 15, 89) + { 0, { 0, 0, 0}}, // ( 16, 89) + { 0, { 0, 0, 0}}, // ( 17, 89) + { 0, { 0, 0, 0}}, // ( 18, 89) + { 0, { 0, 0, 0}}, // ( 19, 89) + { 0, { 0, 0, 0}}, // ( 20, 89) + { 0, { 0, 0, 0}}, // ( 21, 89) + { 0, { 0, 0, 0}}, // ( 22, 89) + { 0, { 0, 0, 0}}, // ( 23, 89) + { 0, { 0, 0, 0}}, // ( 24, 89) + { 0, { 0, 0, 0}}, // ( 25, 89) + { 0, { 0, 0, 0}}, // ( 26, 89) + { 0, { 0, 0, 0}}, // ( 27, 89) + { 0, { 0, 0, 0}}, // ( 28, 89) + { 0, { 0, 0, 0}}, // ( 29, 89) + { 0, { 0, 0, 0}}, // ( 30, 89) + { 0, { 0, 0, 0}}, // ( 31, 89) + { 0, { 0, 0, 0}}, // ( 32, 89) + { 0, { 0, 0, 0}}, // ( 33, 89) + { 0, { 0, 0, 0}}, // ( 34, 89) + { 0, { 0, 0, 0}}, // ( 35, 89) + { 0, { 0, 0, 0}}, // ( 36, 89) + { 0, { 0, 0, 0}}, // ( 37, 89) + { 0, { 0, 0, 0}}, // ( 38, 89) + { 0, { 0, 0, 0}}, // ( 39, 89) + { 0, { 0, 0, 0}}, // ( 40, 89) + { 0, { 0, 0, 0}}, // ( 41, 89) + { 0, { 0, 0, 0}}, // ( 42, 89) + { 0, { 0, 0, 0}}, // ( 43, 89) + { 0, { 0, 0, 0}}, // ( 44, 89) + { 0, { 0, 0, 0}}, // ( 45, 89) + { 0, { 0, 0, 0}}, // ( 46, 89) + { 0, { 0, 0, 0}}, // ( 47, 89) + { 0, { 0, 0, 0}}, // ( 48, 89) + { 0, { 0, 0, 0}}, // ( 49, 89) + { 0, { 0, 0, 0}}, // ( 50, 89) + { 0, { 0, 0, 0}}, // ( 51, 89) + { 0, { 0, 0, 0}}, // ( 52, 89) + { 0, { 0, 0, 0}}, // ( 53, 89) + { 0, { 0, 0, 0}}, // ( 54, 89) + { 0, { 0, 0, 0}}, // ( 55, 89) + { 0, { 0, 0, 0}}, // ( 56, 89) + { 0, { 0, 0, 0}}, // ( 57, 89) + { 0, { 0, 0, 0}}, // ( 58, 89) + { 0, { 0, 0, 0}}, // ( 59, 89) + { 0, { 0, 0, 0}}, // ( 60, 89) + { 0, { 0, 0, 0}}, // ( 61, 89) + { 0, { 0, 0, 0}}, // ( 62, 89) + { 0, { 0, 0, 0}}, // ( 63, 89) + { 0, { 0, 0, 0}}, // ( 64, 89) + { 0, { 0, 0, 0}}, // ( 65, 89) + { 0, { 0, 0, 0}}, // ( 66, 89) + { 0, { 0, 0, 0}}, // ( 67, 89) + { 0, { 0, 0, 0}}, // ( 68, 89) + { 0, { 0, 0, 0}}, // ( 69, 89) + { 0, { 0, 0, 0}}, // ( 70, 89) + { 0, { 0, 0, 0}}, // ( 71, 89) + { 0, { 0, 0, 0}}, // ( 72, 89) + { 0, { 0, 0, 0}}, // ( 73, 89) + { 0, { 0, 0, 0}}, // ( 74, 89) + { 0, { 0, 0, 0}}, // ( 75, 89) + { 0, { 0, 0, 0}}, // ( 76, 89) + { 0, { 0, 0, 0}}, // ( 77, 89) + { 0, { 0, 0, 0}}, // ( 78, 89) + { 0, { 0, 0, 0}}, // ( 79, 89) + { 0, { 0, 0, 0}}, // ( 80, 89) + { 0, { 0, 0, 0}}, // ( 81, 89) + { 0, { 0, 0, 0}}, // ( 82, 89) + { 0, { 0, 0, 0}}, // ( 83, 89) + { 0, { 0, 0, 0}}, // ( 84, 89) + { 0, { 0, 0, 0}}, // ( 85, 89) + { 0, { 0, 0, 0}}, // ( 86, 89) + { 0, { 0, 0, 0}}, // ( 87, 89) + { 0, { 0, 0, 0}}, // ( 88, 89) + { 0, { 0, 0, 0}}, // ( 89, 89) + { 0, { 0, 0, 0}}, // ( 90, 89) + { 0, { 0, 0, 0}}, // ( 91, 89) + { 0, { 0, 0, 0}}, // ( 92, 89) + { 0, { 0, 0, 0}}, // ( 93, 89) + { 0, { 0, 0, 0}}, // ( 94, 89) + { 0, { 0, 0, 0}}, // ( 95, 89) + { 0, { 0, 0, 0}}, // ( 96, 89) + { 0, { 0, 0, 0}}, // ( 97, 89) + { 0, { 0, 0, 0}}, // ( 98, 89) + { 0, { 0, 0, 0}}, // ( 99, 89) + { 0, { 0, 0, 0}}, // (100, 89) + { 0, { 0, 0, 0}}, // (101, 89) + { 0, { 0, 0, 0}}, // (102, 89) + { 0, { 0, 0, 0}}, // (103, 89) + { 0, { 0, 0, 0}}, // (104, 89) + { 0, { 0, 0, 0}}, // (105, 89) + { 0, { 0, 0, 0}}, // (106, 89) + { 0, { 0, 0, 0}}, // (107, 89) + { 0, { 0, 0, 0}}, // (108, 89) + { 0, { 0, 0, 0}}, // (109, 89) + { 0, { 0, 0, 0}}, // (110, 89) + { 0, { 0, 0, 0}}, // (111, 89) + { 0, { 0, 0, 0}}, // (112, 89) + { 0, { 0, 0, 0}}, // (113, 89) + { 0, { 0, 0, 0}}, // (114, 89) + { 0, { 0, 0, 0}}, // (115, 89) + { 0, { 0, 0, 0}}, // (116, 89) + { 0, { 0, 0, 0}}, // (117, 89) + { 0, { 0, 0, 0}}, // (118, 89) + { 0, { 0, 0, 0}}, // (119, 89) + { 0, { 0, 0, 0}}, // (120, 89) + { 0, { 0, 0, 0}}, // (121, 89) + { 0, { 0, 0, 0}}, // (122, 89) + { 0, { 0, 0, 0}}, // (123, 89) + { 0, { 0, 0, 0}}, // (124, 89) + { 0, { 0, 0, 0}}, // (125, 89) + { 0, { 0, 0, 0}}, // (126, 89) + { 0, { 0, 0, 0}}, // (127, 89) + { 0, { 0, 0, 0}}, // (128, 89) + { 0, { 0, 0, 0}}, // (129, 89) + { 0, { 0, 0, 0}}, // (130, 89) + { 0, { 0, 0, 0}}, // (131, 89) + { 0, { 0, 0, 0}}, // (132, 89) + { 0, { 0, 0, 0}}, // (133, 89) + { 0, { 0, 0, 0}}, // (134, 89) + { 0, { 0, 0, 0}}, // (135, 89) + { 0, { 0, 0, 0}}, // (136, 89) + { 0, { 0, 0, 0}}, // (137, 89) + { 0, { 0, 0, 0}}, // (138, 89) + { 0, { 0, 0, 0}}, // (139, 89) + { 0, { 0, 0, 0}}, // (140, 89) + { 0, { 0, 0, 0}}, // (141, 89) + { 0, { 0, 0, 0}}, // (142, 89) + { 0, { 0, 0, 0}}, // (143, 89) + { 0, { 0, 0, 0}}, // (144, 89) + { 0, { 0, 0, 0}}, // (145, 89) + { 0, { 0, 0, 0}}, // (146, 89) + { 0, { 0, 0, 0}}, // (147, 89) + { 0, { 0, 0, 0}}, // (148, 89) + { 0, { 0, 0, 0}}, // (149, 89) + { 0, { 0, 0, 0}}, // (150, 89) + { 0, { 0, 0, 0}}, // (151, 89) + { 0, { 0, 0, 0}}, // (152, 89) + { 0, { 0, 0, 0}}, // (153, 89) + { 0, { 0, 0, 0}}, // (154, 89) + { 0, { 0, 0, 0}}, // (155, 89) + { 0, { 0, 0, 0}}, // (156, 89) + { 0, { 0, 0, 0}}, // (157, 89) + { 0, { 0, 0, 0}}, // (158, 89) + { 0, { 0, 0, 0}}, // (159, 89) + { 0, { 0, 0, 0}}, // (160, 89) + { 0, { 0, 0, 0}}, // (161, 89) + { 0, { 0, 0, 0}}, // (162, 89) + { 0, { 0, 0, 0}}, // (163, 89) + { 0, { 0, 0, 0}}, // (164, 89) + { 0, { 0, 0, 0}}, // (165, 89) + { 0, { 0, 0, 0}}, // (166, 89) + { 0, { 0, 0, 0}}, // (167, 89) + { 0, { 0, 0, 0}}, // (168, 89) + { 0, { 0, 0, 0}}, // (169, 89) + { 0, { 0, 0, 0}}, // (170, 89) + { 0, { 0, 0, 0}}, // (171, 89) + { 0, { 0, 0, 0}}, // (172, 89) + { 0, { 0, 0, 0}}, // (173, 89) + { 0, { 0, 0, 0}}, // (174, 89) + { 0, { 0, 0, 0}}, // (175, 89) + { 0, { 0, 0, 0}}, // (176, 89) + { 0, { 0, 0, 0}}, // (177, 89) + {128, { 0, 0, 0}}, // (178, 89) + {128, { 0, 0, 0}}, // (179, 89) + {128, { 0, 0, 0}}, // ( 0, 90) + {128, { 0, 0, 0}}, // ( 1, 90) + { 0, { 0, 0, 0}}, // ( 2, 90) + { 0, { 0, 0, 0}}, // ( 3, 90) + { 0, { 0, 0, 0}}, // ( 4, 90) + { 0, { 0, 0, 0}}, // ( 5, 90) + { 0, { 0, 0, 0}}, // ( 6, 90) + { 0, { 0, 0, 0}}, // ( 7, 90) + { 0, { 0, 0, 0}}, // ( 8, 90) + { 0, { 0, 0, 0}}, // ( 9, 90) + { 0, { 0, 0, 0}}, // ( 10, 90) + { 0, { 0, 0, 0}}, // ( 11, 90) + { 0, { 0, 0, 0}}, // ( 12, 90) + { 0, { 0, 0, 0}}, // ( 13, 90) + { 0, { 0, 0, 0}}, // ( 14, 90) + { 0, { 0, 0, 0}}, // ( 15, 90) + { 0, { 0, 0, 0}}, // ( 16, 90) + { 0, { 0, 0, 0}}, // ( 17, 90) + { 0, { 0, 0, 0}}, // ( 18, 90) + { 0, { 0, 0, 0}}, // ( 19, 90) + { 0, { 0, 0, 0}}, // ( 20, 90) + { 0, { 0, 0, 0}}, // ( 21, 90) + { 0, { 0, 0, 0}}, // ( 22, 90) + { 0, { 0, 0, 0}}, // ( 23, 90) + { 0, { 0, 0, 0}}, // ( 24, 90) + { 0, { 0, 0, 0}}, // ( 25, 90) + { 0, { 0, 0, 0}}, // ( 26, 90) + { 0, { 0, 0, 0}}, // ( 27, 90) + { 0, { 0, 0, 0}}, // ( 28, 90) + { 0, { 0, 0, 0}}, // ( 29, 90) + { 0, { 0, 0, 0}}, // ( 30, 90) + { 0, { 0, 0, 0}}, // ( 31, 90) + { 0, { 0, 0, 0}}, // ( 32, 90) + { 0, { 0, 0, 0}}, // ( 33, 90) + { 0, { 0, 0, 0}}, // ( 34, 90) + { 0, { 0, 0, 0}}, // ( 35, 90) + { 0, { 0, 0, 0}}, // ( 36, 90) + { 0, { 0, 0, 0}}, // ( 37, 90) + { 0, { 0, 0, 0}}, // ( 38, 90) + { 0, { 0, 0, 0}}, // ( 39, 90) + { 0, { 0, 0, 0}}, // ( 40, 90) + { 0, { 0, 0, 0}}, // ( 41, 90) + { 0, { 0, 0, 0}}, // ( 42, 90) + { 0, { 0, 0, 0}}, // ( 43, 90) + { 0, { 0, 0, 0}}, // ( 44, 90) + { 0, { 0, 0, 0}}, // ( 45, 90) + { 0, { 0, 0, 0}}, // ( 46, 90) + { 0, { 0, 0, 0}}, // ( 47, 90) + { 0, { 0, 0, 0}}, // ( 48, 90) + { 0, { 0, 0, 0}}, // ( 49, 90) + { 0, { 0, 0, 0}}, // ( 50, 90) + { 0, { 0, 0, 0}}, // ( 51, 90) + { 0, { 0, 0, 0}}, // ( 52, 90) + { 0, { 0, 0, 0}}, // ( 53, 90) + { 0, { 0, 0, 0}}, // ( 54, 90) + { 0, { 0, 0, 0}}, // ( 55, 90) + { 0, { 0, 0, 0}}, // ( 56, 90) + { 0, { 0, 0, 0}}, // ( 57, 90) + { 0, { 0, 0, 0}}, // ( 58, 90) + { 0, { 0, 0, 0}}, // ( 59, 90) + { 0, { 0, 0, 0}}, // ( 60, 90) + { 0, { 0, 0, 0}}, // ( 61, 90) + { 0, { 0, 0, 0}}, // ( 62, 90) + { 0, { 0, 0, 0}}, // ( 63, 90) + { 0, { 0, 0, 0}}, // ( 64, 90) + { 0, { 0, 0, 0}}, // ( 65, 90) + { 0, { 0, 0, 0}}, // ( 66, 90) + { 0, { 0, 0, 0}}, // ( 67, 90) + { 0, { 0, 0, 0}}, // ( 68, 90) + { 0, { 0, 0, 0}}, // ( 69, 90) + { 0, { 0, 0, 0}}, // ( 70, 90) + { 0, { 0, 0, 0}}, // ( 71, 90) + { 0, { 0, 0, 0}}, // ( 72, 90) + { 0, { 0, 0, 0}}, // ( 73, 90) + { 0, { 0, 0, 0}}, // ( 74, 90) + { 0, { 0, 0, 0}}, // ( 75, 90) + { 0, { 0, 0, 0}}, // ( 76, 90) + { 0, { 0, 0, 0}}, // ( 77, 90) + { 0, { 0, 0, 0}}, // ( 78, 90) + { 0, { 0, 0, 0}}, // ( 79, 90) + { 0, { 0, 0, 0}}, // ( 80, 90) + { 0, { 0, 0, 0}}, // ( 81, 90) + { 0, { 0, 0, 0}}, // ( 82, 90) + { 0, { 0, 0, 0}}, // ( 83, 90) + { 0, { 0, 0, 0}}, // ( 84, 90) + { 0, { 0, 0, 0}}, // ( 85, 90) + { 0, { 0, 0, 0}}, // ( 86, 90) + { 0, { 0, 0, 0}}, // ( 87, 90) + { 0, { 0, 0, 0}}, // ( 88, 90) + { 0, { 0, 0, 0}}, // ( 89, 90) + { 0, { 0, 0, 0}}, // ( 90, 90) + { 0, { 0, 0, 0}}, // ( 91, 90) + { 0, { 0, 0, 0}}, // ( 92, 90) + { 0, { 0, 0, 0}}, // ( 93, 90) + { 0, { 0, 0, 0}}, // ( 94, 90) + { 0, { 0, 0, 0}}, // ( 95, 90) + { 0, { 0, 0, 0}}, // ( 96, 90) + { 0, { 0, 0, 0}}, // ( 97, 90) + { 0, { 0, 0, 0}}, // ( 98, 90) + { 0, { 0, 0, 0}}, // ( 99, 90) + { 0, { 0, 0, 0}}, // (100, 90) + { 0, { 0, 0, 0}}, // (101, 90) + { 0, { 0, 0, 0}}, // (102, 90) + { 0, { 0, 0, 0}}, // (103, 90) + { 0, { 0, 0, 0}}, // (104, 90) + { 0, { 0, 0, 0}}, // (105, 90) + { 0, { 0, 0, 0}}, // (106, 90) + { 0, { 0, 0, 0}}, // (107, 90) + { 0, { 0, 0, 0}}, // (108, 90) + { 0, { 0, 0, 0}}, // (109, 90) + { 0, { 0, 0, 0}}, // (110, 90) + { 0, { 0, 0, 0}}, // (111, 90) + { 0, { 0, 0, 0}}, // (112, 90) + { 0, { 0, 0, 0}}, // (113, 90) + { 0, { 0, 0, 0}}, // (114, 90) + { 0, { 0, 0, 0}}, // (115, 90) + { 0, { 0, 0, 0}}, // (116, 90) + { 0, { 0, 0, 0}}, // (117, 90) + { 0, { 0, 0, 0}}, // (118, 90) + { 0, { 0, 0, 0}}, // (119, 90) + { 0, { 0, 0, 0}}, // (120, 90) + { 0, { 0, 0, 0}}, // (121, 90) + { 0, { 0, 0, 0}}, // (122, 90) + { 0, { 0, 0, 0}}, // (123, 90) + { 0, { 0, 0, 0}}, // (124, 90) + { 0, { 0, 0, 0}}, // (125, 90) + { 0, { 0, 0, 0}}, // (126, 90) + { 0, { 0, 0, 0}}, // (127, 90) + { 0, { 0, 0, 0}}, // (128, 90) + { 0, { 0, 0, 0}}, // (129, 90) + { 0, { 0, 0, 0}}, // (130, 90) + { 0, { 0, 0, 0}}, // (131, 90) + { 0, { 0, 0, 0}}, // (132, 90) + { 0, { 0, 0, 0}}, // (133, 90) + { 0, { 0, 0, 0}}, // (134, 90) + { 0, { 0, 0, 0}}, // (135, 90) + { 0, { 0, 0, 0}}, // (136, 90) + { 0, { 0, 0, 0}}, // (137, 90) + { 0, { 0, 0, 0}}, // (138, 90) + { 0, { 0, 0, 0}}, // (139, 90) + { 0, { 0, 0, 0}}, // (140, 90) + { 0, { 0, 0, 0}}, // (141, 90) + { 0, { 0, 0, 0}}, // (142, 90) + { 0, { 0, 0, 0}}, // (143, 90) + { 0, { 0, 0, 0}}, // (144, 90) + { 0, { 0, 0, 0}}, // (145, 90) + { 0, { 0, 0, 0}}, // (146, 90) + { 0, { 0, 0, 0}}, // (147, 90) + { 0, { 0, 0, 0}}, // (148, 90) + { 0, { 0, 0, 0}}, // (149, 90) + { 0, { 0, 0, 0}}, // (150, 90) + { 0, { 0, 0, 0}}, // (151, 90) + { 0, { 0, 0, 0}}, // (152, 90) + { 0, { 0, 0, 0}}, // (153, 90) + { 0, { 0, 0, 0}}, // (154, 90) + { 0, { 0, 0, 0}}, // (155, 90) + { 0, { 0, 0, 0}}, // (156, 90) + { 0, { 0, 0, 0}}, // (157, 90) + { 0, { 0, 0, 0}}, // (158, 90) + { 0, { 0, 0, 0}}, // (159, 90) + { 0, { 0, 0, 0}}, // (160, 90) + { 0, { 0, 0, 0}}, // (161, 90) + { 0, { 0, 0, 0}}, // (162, 90) + { 0, { 0, 0, 0}}, // (163, 90) + { 0, { 0, 0, 0}}, // (164, 90) + { 0, { 0, 0, 0}}, // (165, 90) + { 0, { 0, 0, 0}}, // (166, 90) + { 0, { 0, 0, 0}}, // (167, 90) + { 0, { 0, 0, 0}}, // (168, 90) + { 0, { 0, 0, 0}}, // (169, 90) + { 0, { 0, 0, 0}}, // (170, 90) + { 0, { 0, 0, 0}}, // (171, 90) + { 0, { 0, 0, 0}}, // (172, 90) + { 0, { 0, 0, 0}}, // (173, 90) + { 0, { 0, 0, 0}}, // (174, 90) + { 0, { 0, 0, 0}}, // (175, 90) + { 0, { 0, 0, 0}}, // (176, 90) + { 0, { 0, 0, 0}}, // (177, 90) + {128, { 0, 0, 0}}, // (178, 90) + {128, { 0, 0, 0}}, // (179, 90) + {128, { 0, 0, 0}}, // ( 0, 91) + {128, { 0, 0, 0}}, // ( 1, 91) + { 7, { 0, 0, 0}}, // ( 2, 91) + { 0, { 0, 0, 0}}, // ( 3, 91) + { 0, { 0, 0, 0}}, // ( 4, 91) + { 0, { 0, 0, 0}}, // ( 5, 91) + { 0, { 0, 0, 0}}, // ( 6, 91) + { 0, { 0, 0, 0}}, // ( 7, 91) + { 0, { 0, 0, 0}}, // ( 8, 91) + { 0, { 0, 0, 0}}, // ( 9, 91) + { 0, { 0, 0, 0}}, // ( 10, 91) + { 0, { 0, 0, 0}}, // ( 11, 91) + { 0, { 0, 0, 0}}, // ( 12, 91) + { 0, { 0, 0, 0}}, // ( 13, 91) + { 0, { 0, 0, 0}}, // ( 14, 91) + { 0, { 0, 0, 0}}, // ( 15, 91) + { 0, { 0, 0, 0}}, // ( 16, 91) + { 0, { 0, 0, 0}}, // ( 17, 91) + { 0, { 0, 0, 0}}, // ( 18, 91) + { 0, { 0, 0, 0}}, // ( 19, 91) + { 0, { 0, 0, 0}}, // ( 20, 91) + { 0, { 0, 0, 0}}, // ( 21, 91) + { 0, { 0, 0, 0}}, // ( 22, 91) + { 0, { 0, 0, 0}}, // ( 23, 91) + { 0, { 0, 0, 0}}, // ( 24, 91) + { 0, { 0, 0, 0}}, // ( 25, 91) + { 0, { 0, 0, 0}}, // ( 26, 91) + { 0, { 0, 0, 0}}, // ( 27, 91) + { 0, { 0, 0, 0}}, // ( 28, 91) + { 0, { 0, 0, 0}}, // ( 29, 91) + { 0, { 0, 0, 0}}, // ( 30, 91) + { 0, { 0, 0, 0}}, // ( 31, 91) + { 0, { 0, 0, 0}}, // ( 32, 91) + { 0, { 0, 0, 0}}, // ( 33, 91) + { 0, { 0, 0, 0}}, // ( 34, 91) + { 0, { 0, 0, 0}}, // ( 35, 91) + { 0, { 0, 0, 0}}, // ( 36, 91) + { 0, { 0, 0, 0}}, // ( 37, 91) + { 0, { 0, 0, 0}}, // ( 38, 91) + { 0, { 0, 0, 0}}, // ( 39, 91) + { 0, { 0, 0, 0}}, // ( 40, 91) + { 0, { 0, 0, 0}}, // ( 41, 91) + { 0, { 0, 0, 0}}, // ( 42, 91) + { 0, { 0, 0, 0}}, // ( 43, 91) + { 0, { 0, 0, 0}}, // ( 44, 91) + { 0, { 0, 0, 0}}, // ( 45, 91) + { 0, { 0, 0, 0}}, // ( 46, 91) + { 0, { 0, 0, 0}}, // ( 47, 91) + { 0, { 0, 0, 0}}, // ( 48, 91) + { 0, { 0, 0, 0}}, // ( 49, 91) + { 0, { 0, 0, 0}}, // ( 50, 91) + { 0, { 0, 0, 0}}, // ( 51, 91) + { 0, { 0, 0, 0}}, // ( 52, 91) + { 0, { 0, 0, 0}}, // ( 53, 91) + { 0, { 0, 0, 0}}, // ( 54, 91) + { 0, { 0, 0, 0}}, // ( 55, 91) + { 0, { 0, 0, 0}}, // ( 56, 91) + { 0, { 0, 0, 0}}, // ( 57, 91) + { 0, { 0, 0, 0}}, // ( 58, 91) + { 0, { 0, 0, 0}}, // ( 59, 91) + { 0, { 0, 0, 0}}, // ( 60, 91) + { 0, { 0, 0, 0}}, // ( 61, 91) + { 0, { 0, 0, 0}}, // ( 62, 91) + { 0, { 0, 0, 0}}, // ( 63, 91) + { 0, { 0, 0, 0}}, // ( 64, 91) + { 0, { 0, 0, 0}}, // ( 65, 91) + { 0, { 0, 0, 0}}, // ( 66, 91) + { 0, { 0, 0, 0}}, // ( 67, 91) + { 0, { 0, 0, 0}}, // ( 68, 91) + { 0, { 0, 0, 0}}, // ( 69, 91) + { 0, { 0, 0, 0}}, // ( 70, 91) + { 0, { 0, 0, 0}}, // ( 71, 91) + { 0, { 0, 0, 0}}, // ( 72, 91) + { 0, { 0, 0, 0}}, // ( 73, 91) + { 0, { 0, 0, 0}}, // ( 74, 91) + { 0, { 0, 0, 0}}, // ( 75, 91) + { 0, { 0, 0, 0}}, // ( 76, 91) + { 0, { 0, 0, 0}}, // ( 77, 91) + { 0, { 0, 0, 0}}, // ( 78, 91) + { 0, { 0, 0, 0}}, // ( 79, 91) + { 0, { 0, 0, 0}}, // ( 80, 91) + { 0, { 0, 0, 0}}, // ( 81, 91) + { 0, { 0, 0, 0}}, // ( 82, 91) + { 0, { 0, 0, 0}}, // ( 83, 91) + { 0, { 0, 0, 0}}, // ( 84, 91) + { 0, { 0, 0, 0}}, // ( 85, 91) + { 0, { 0, 0, 0}}, // ( 86, 91) + { 0, { 0, 0, 0}}, // ( 87, 91) + { 0, { 0, 0, 0}}, // ( 88, 91) + { 0, { 0, 0, 0}}, // ( 89, 91) + { 0, { 0, 0, 0}}, // ( 90, 91) + { 0, { 0, 0, 0}}, // ( 91, 91) + { 0, { 0, 0, 0}}, // ( 92, 91) + { 0, { 0, 0, 0}}, // ( 93, 91) + { 0, { 0, 0, 0}}, // ( 94, 91) + { 0, { 0, 0, 0}}, // ( 95, 91) + { 0, { 0, 0, 0}}, // ( 96, 91) + { 0, { 0, 0, 0}}, // ( 97, 91) + { 0, { 0, 0, 0}}, // ( 98, 91) + { 0, { 0, 0, 0}}, // ( 99, 91) + { 0, { 0, 0, 0}}, // (100, 91) + { 0, { 0, 0, 0}}, // (101, 91) + { 0, { 0, 0, 0}}, // (102, 91) + { 0, { 0, 0, 0}}, // (103, 91) + { 0, { 0, 0, 0}}, // (104, 91) + { 0, { 0, 0, 0}}, // (105, 91) + { 0, { 0, 0, 0}}, // (106, 91) + { 0, { 0, 0, 0}}, // (107, 91) + { 0, { 0, 0, 0}}, // (108, 91) + { 0, { 0, 0, 0}}, // (109, 91) + { 0, { 0, 0, 0}}, // (110, 91) + { 0, { 0, 0, 0}}, // (111, 91) + { 0, { 0, 0, 0}}, // (112, 91) + { 0, { 0, 0, 0}}, // (113, 91) + { 0, { 0, 0, 0}}, // (114, 91) + { 0, { 0, 0, 0}}, // (115, 91) + { 0, { 0, 0, 0}}, // (116, 91) + { 0, { 0, 0, 0}}, // (117, 91) + { 0, { 0, 0, 0}}, // (118, 91) + { 0, { 0, 0, 0}}, // (119, 91) + { 0, { 0, 0, 0}}, // (120, 91) + { 0, { 0, 0, 0}}, // (121, 91) + { 0, { 0, 0, 0}}, // (122, 91) + { 0, { 0, 0, 0}}, // (123, 91) + { 0, { 0, 0, 0}}, // (124, 91) + { 0, { 0, 0, 0}}, // (125, 91) + { 0, { 0, 0, 0}}, // (126, 91) + { 0, { 0, 0, 0}}, // (127, 91) + { 0, { 0, 0, 0}}, // (128, 91) + { 0, { 0, 0, 0}}, // (129, 91) + { 0, { 0, 0, 0}}, // (130, 91) + { 0, { 0, 0, 0}}, // (131, 91) + { 0, { 0, 0, 0}}, // (132, 91) + { 0, { 0, 0, 0}}, // (133, 91) + { 0, { 0, 0, 0}}, // (134, 91) + { 0, { 0, 0, 0}}, // (135, 91) + { 0, { 0, 0, 0}}, // (136, 91) + { 0, { 0, 0, 0}}, // (137, 91) + { 0, { 0, 0, 0}}, // (138, 91) + { 0, { 0, 0, 0}}, // (139, 91) + { 0, { 0, 0, 0}}, // (140, 91) + { 0, { 0, 0, 0}}, // (141, 91) + { 0, { 0, 0, 0}}, // (142, 91) + { 0, { 0, 0, 0}}, // (143, 91) + { 0, { 0, 0, 0}}, // (144, 91) + { 0, { 0, 0, 0}}, // (145, 91) + { 0, { 0, 0, 0}}, // (146, 91) + { 0, { 0, 0, 0}}, // (147, 91) + { 0, { 0, 0, 0}}, // (148, 91) + { 0, { 0, 0, 0}}, // (149, 91) + { 0, { 0, 0, 0}}, // (150, 91) + { 0, { 0, 0, 0}}, // (151, 91) + { 0, { 0, 0, 0}}, // (152, 91) + { 0, { 0, 0, 0}}, // (153, 91) + { 0, { 0, 0, 0}}, // (154, 91) + { 0, { 0, 0, 0}}, // (155, 91) + { 0, { 0, 0, 0}}, // (156, 91) + { 0, { 0, 0, 0}}, // (157, 91) + { 0, { 0, 0, 0}}, // (158, 91) + { 0, { 0, 0, 0}}, // (159, 91) + { 0, { 0, 0, 0}}, // (160, 91) + { 0, { 0, 0, 0}}, // (161, 91) + { 0, { 0, 0, 0}}, // (162, 91) + { 0, { 0, 0, 0}}, // (163, 91) + { 0, { 0, 0, 0}}, // (164, 91) + { 0, { 0, 0, 0}}, // (165, 91) + { 0, { 0, 0, 0}}, // (166, 91) + { 0, { 0, 0, 0}}, // (167, 91) + { 0, { 0, 0, 0}}, // (168, 91) + { 0, { 0, 0, 0}}, // (169, 91) + { 0, { 0, 0, 0}}, // (170, 91) + { 0, { 0, 0, 0}}, // (171, 91) + { 0, { 0, 0, 0}}, // (172, 91) + { 0, { 0, 0, 0}}, // (173, 91) + { 0, { 0, 0, 0}}, // (174, 91) + { 0, { 0, 0, 0}}, // (175, 91) + { 0, { 0, 0, 0}}, // (176, 91) + { 6, { 0, 0, 0}}, // (177, 91) + {128, { 0, 0, 0}}, // (178, 91) + {128, { 0, 0, 0}}, // (179, 91) + {128, { 0, 0, 0}}, // ( 0, 92) + {128, { 0, 0, 0}}, // ( 1, 92) + { 8, { 0, 0, 0}}, // ( 2, 92) + { 0, { 0, 0, 0}}, // ( 3, 92) + { 0, { 0, 0, 0}}, // ( 4, 92) + { 0, { 0, 0, 0}}, // ( 5, 92) + { 0, { 0, 0, 0}}, // ( 6, 92) + { 0, { 0, 0, 0}}, // ( 7, 92) + { 0, { 0, 0, 0}}, // ( 8, 92) + { 0, { 0, 0, 0}}, // ( 9, 92) + { 0, { 0, 0, 0}}, // ( 10, 92) + { 0, { 0, 0, 0}}, // ( 11, 92) + { 0, { 0, 0, 0}}, // ( 12, 92) + { 0, { 0, 0, 0}}, // ( 13, 92) + { 0, { 0, 0, 0}}, // ( 14, 92) + { 0, { 0, 0, 0}}, // ( 15, 92) + { 0, { 0, 0, 0}}, // ( 16, 92) + { 0, { 0, 0, 0}}, // ( 17, 92) + { 0, { 0, 0, 0}}, // ( 18, 92) + { 0, { 0, 0, 0}}, // ( 19, 92) + { 0, { 0, 0, 0}}, // ( 20, 92) + { 0, { 0, 0, 0}}, // ( 21, 92) + { 0, { 0, 0, 0}}, // ( 22, 92) + { 0, { 0, 0, 0}}, // ( 23, 92) + { 0, { 0, 0, 0}}, // ( 24, 92) + { 0, { 0, 0, 0}}, // ( 25, 92) + { 0, { 0, 0, 0}}, // ( 26, 92) + { 0, { 0, 0, 0}}, // ( 27, 92) + { 0, { 0, 0, 0}}, // ( 28, 92) + { 0, { 0, 0, 0}}, // ( 29, 92) + { 0, { 0, 0, 0}}, // ( 30, 92) + { 0, { 0, 0, 0}}, // ( 31, 92) + { 0, { 0, 0, 0}}, // ( 32, 92) + { 0, { 0, 0, 0}}, // ( 33, 92) + { 0, { 0, 0, 0}}, // ( 34, 92) + { 0, { 0, 0, 0}}, // ( 35, 92) + { 0, { 0, 0, 0}}, // ( 36, 92) + { 0, { 0, 0, 0}}, // ( 37, 92) + { 0, { 0, 0, 0}}, // ( 38, 92) + { 0, { 0, 0, 0}}, // ( 39, 92) + { 0, { 0, 0, 0}}, // ( 40, 92) + { 0, { 0, 0, 0}}, // ( 41, 92) + { 0, { 0, 0, 0}}, // ( 42, 92) + { 0, { 0, 0, 0}}, // ( 43, 92) + { 0, { 0, 0, 0}}, // ( 44, 92) + { 0, { 0, 0, 0}}, // ( 45, 92) + { 0, { 0, 0, 0}}, // ( 46, 92) + { 0, { 0, 0, 0}}, // ( 47, 92) + { 0, { 0, 0, 0}}, // ( 48, 92) + { 0, { 0, 0, 0}}, // ( 49, 92) + { 0, { 0, 0, 0}}, // ( 50, 92) + { 0, { 0, 0, 0}}, // ( 51, 92) + { 0, { 0, 0, 0}}, // ( 52, 92) + { 0, { 0, 0, 0}}, // ( 53, 92) + { 0, { 0, 0, 0}}, // ( 54, 92) + { 0, { 0, 0, 0}}, // ( 55, 92) + { 0, { 0, 0, 0}}, // ( 56, 92) + { 0, { 0, 0, 0}}, // ( 57, 92) + { 0, { 0, 0, 0}}, // ( 58, 92) + { 0, { 0, 0, 0}}, // ( 59, 92) + { 0, { 0, 0, 0}}, // ( 60, 92) + { 0, { 0, 0, 0}}, // ( 61, 92) + { 0, { 0, 0, 0}}, // ( 62, 92) + { 0, { 0, 0, 0}}, // ( 63, 92) + { 0, { 0, 0, 0}}, // ( 64, 92) + { 0, { 0, 0, 0}}, // ( 65, 92) + { 0, { 0, 0, 0}}, // ( 66, 92) + { 0, { 0, 0, 0}}, // ( 67, 92) + { 0, { 0, 0, 0}}, // ( 68, 92) + { 0, { 0, 0, 0}}, // ( 69, 92) + { 0, { 0, 0, 0}}, // ( 70, 92) + { 0, { 0, 0, 0}}, // ( 71, 92) + { 0, { 0, 0, 0}}, // ( 72, 92) + { 0, { 0, 0, 0}}, // ( 73, 92) + { 0, { 0, 0, 0}}, // ( 74, 92) + { 0, { 0, 0, 0}}, // ( 75, 92) + { 0, { 0, 0, 0}}, // ( 76, 92) + { 0, { 0, 0, 0}}, // ( 77, 92) + { 0, { 0, 0, 0}}, // ( 78, 92) + { 0, { 0, 0, 0}}, // ( 79, 92) + { 0, { 0, 0, 0}}, // ( 80, 92) + { 0, { 0, 0, 0}}, // ( 81, 92) + { 0, { 0, 0, 0}}, // ( 82, 92) + { 0, { 0, 0, 0}}, // ( 83, 92) + { 0, { 0, 0, 0}}, // ( 84, 92) + { 0, { 0, 0, 0}}, // ( 85, 92) + { 0, { 0, 0, 0}}, // ( 86, 92) + { 0, { 0, 0, 0}}, // ( 87, 92) + { 0, { 0, 0, 0}}, // ( 88, 92) + { 0, { 0, 0, 0}}, // ( 89, 92) + { 0, { 0, 0, 0}}, // ( 90, 92) + { 0, { 0, 0, 0}}, // ( 91, 92) + { 0, { 0, 0, 0}}, // ( 92, 92) + { 0, { 0, 0, 0}}, // ( 93, 92) + { 0, { 0, 0, 0}}, // ( 94, 92) + { 0, { 0, 0, 0}}, // ( 95, 92) + { 0, { 0, 0, 0}}, // ( 96, 92) + { 0, { 0, 0, 0}}, // ( 97, 92) + { 0, { 0, 0, 0}}, // ( 98, 92) + { 0, { 0, 0, 0}}, // ( 99, 92) + { 0, { 0, 0, 0}}, // (100, 92) + { 0, { 0, 0, 0}}, // (101, 92) + { 0, { 0, 0, 0}}, // (102, 92) + { 0, { 0, 0, 0}}, // (103, 92) + { 0, { 0, 0, 0}}, // (104, 92) + { 0, { 0, 0, 0}}, // (105, 92) + { 0, { 0, 0, 0}}, // (106, 92) + { 0, { 0, 0, 0}}, // (107, 92) + { 0, { 0, 0, 0}}, // (108, 92) + { 0, { 0, 0, 0}}, // (109, 92) + { 0, { 0, 0, 0}}, // (110, 92) + { 0, { 0, 0, 0}}, // (111, 92) + { 0, { 0, 0, 0}}, // (112, 92) + { 0, { 0, 0, 0}}, // (113, 92) + { 0, { 0, 0, 0}}, // (114, 92) + { 0, { 0, 0, 0}}, // (115, 92) + { 0, { 0, 0, 0}}, // (116, 92) + { 0, { 0, 0, 0}}, // (117, 92) + { 0, { 0, 0, 0}}, // (118, 92) + { 0, { 0, 0, 0}}, // (119, 92) + { 0, { 0, 0, 0}}, // (120, 92) + { 0, { 0, 0, 0}}, // (121, 92) + { 0, { 0, 0, 0}}, // (122, 92) + { 0, { 0, 0, 0}}, // (123, 92) + { 0, { 0, 0, 0}}, // (124, 92) + { 0, { 0, 0, 0}}, // (125, 92) + { 0, { 0, 0, 0}}, // (126, 92) + { 0, { 0, 0, 0}}, // (127, 92) + { 0, { 0, 0, 0}}, // (128, 92) + { 0, { 0, 0, 0}}, // (129, 92) + { 0, { 0, 0, 0}}, // (130, 92) + { 0, { 0, 0, 0}}, // (131, 92) + { 0, { 0, 0, 0}}, // (132, 92) + { 0, { 0, 0, 0}}, // (133, 92) + { 0, { 0, 0, 0}}, // (134, 92) + { 0, { 0, 0, 0}}, // (135, 92) + { 0, { 0, 0, 0}}, // (136, 92) + { 0, { 0, 0, 0}}, // (137, 92) + { 0, { 0, 0, 0}}, // (138, 92) + { 0, { 0, 0, 0}}, // (139, 92) + { 0, { 0, 0, 0}}, // (140, 92) + { 0, { 0, 0, 0}}, // (141, 92) + { 0, { 0, 0, 0}}, // (142, 92) + { 0, { 0, 0, 0}}, // (143, 92) + { 0, { 0, 0, 0}}, // (144, 92) + { 0, { 0, 0, 0}}, // (145, 92) + { 0, { 0, 0, 0}}, // (146, 92) + { 0, { 0, 0, 0}}, // (147, 92) + { 0, { 0, 0, 0}}, // (148, 92) + { 0, { 0, 0, 0}}, // (149, 92) + { 0, { 0, 0, 0}}, // (150, 92) + { 0, { 0, 0, 0}}, // (151, 92) + { 0, { 0, 0, 0}}, // (152, 92) + { 0, { 0, 0, 0}}, // (153, 92) + { 0, { 0, 0, 0}}, // (154, 92) + { 0, { 0, 0, 0}}, // (155, 92) + { 0, { 0, 0, 0}}, // (156, 92) + { 0, { 0, 0, 0}}, // (157, 92) + { 0, { 0, 0, 0}}, // (158, 92) + { 0, { 0, 0, 0}}, // (159, 92) + { 0, { 0, 0, 0}}, // (160, 92) + { 0, { 0, 0, 0}}, // (161, 92) + { 0, { 0, 0, 0}}, // (162, 92) + { 0, { 0, 0, 0}}, // (163, 92) + { 0, { 0, 0, 0}}, // (164, 92) + { 0, { 0, 0, 0}}, // (165, 92) + { 0, { 0, 0, 0}}, // (166, 92) + { 0, { 0, 0, 0}}, // (167, 92) + { 0, { 0, 0, 0}}, // (168, 92) + { 0, { 0, 0, 0}}, // (169, 92) + { 0, { 0, 0, 0}}, // (170, 92) + { 0, { 0, 0, 0}}, // (171, 92) + { 0, { 0, 0, 0}}, // (172, 92) + { 0, { 0, 0, 0}}, // (173, 92) + { 0, { 0, 0, 0}}, // (174, 92) + { 0, { 0, 0, 0}}, // (175, 92) + { 0, { 0, 0, 0}}, // (176, 92) + { 8, { 0, 0, 0}}, // (177, 92) + {128, { 0, 0, 0}}, // (178, 92) + {128, { 0, 0, 0}}, // (179, 92) + {128, { 0, 0, 0}}, // ( 0, 93) + {128, { 0, 0, 0}}, // ( 1, 93) + { 12, { 0, 0, 0}}, // ( 2, 93) + { 0, { 0, 0, 0}}, // ( 3, 93) + { 0, { 0, 0, 0}}, // ( 4, 93) + { 0, { 0, 0, 0}}, // ( 5, 93) + { 0, { 0, 0, 0}}, // ( 6, 93) + { 0, { 0, 0, 0}}, // ( 7, 93) + { 0, { 0, 0, 0}}, // ( 8, 93) + { 0, { 0, 0, 0}}, // ( 9, 93) + { 0, { 0, 0, 0}}, // ( 10, 93) + { 0, { 0, 0, 0}}, // ( 11, 93) + { 0, { 0, 0, 0}}, // ( 12, 93) + { 0, { 0, 0, 0}}, // ( 13, 93) + { 0, { 0, 0, 0}}, // ( 14, 93) + { 0, { 0, 0, 0}}, // ( 15, 93) + { 0, { 0, 0, 0}}, // ( 16, 93) + { 0, { 0, 0, 0}}, // ( 17, 93) + { 0, { 0, 0, 0}}, // ( 18, 93) + { 0, { 0, 0, 0}}, // ( 19, 93) + { 0, { 0, 0, 0}}, // ( 20, 93) + { 0, { 0, 0, 0}}, // ( 21, 93) + { 0, { 0, 0, 0}}, // ( 22, 93) + { 0, { 0, 0, 0}}, // ( 23, 93) + { 0, { 0, 0, 0}}, // ( 24, 93) + { 0, { 0, 0, 0}}, // ( 25, 93) + { 0, { 0, 0, 0}}, // ( 26, 93) + { 0, { 0, 0, 0}}, // ( 27, 93) + { 0, { 0, 0, 0}}, // ( 28, 93) + { 0, { 0, 0, 0}}, // ( 29, 93) + { 0, { 0, 0, 0}}, // ( 30, 93) + { 0, { 0, 0, 0}}, // ( 31, 93) + { 0, { 0, 0, 0}}, // ( 32, 93) + { 0, { 0, 0, 0}}, // ( 33, 93) + { 0, { 0, 0, 0}}, // ( 34, 93) + { 0, { 0, 0, 0}}, // ( 35, 93) + { 0, { 0, 0, 0}}, // ( 36, 93) + { 0, { 0, 0, 0}}, // ( 37, 93) + { 0, { 0, 0, 0}}, // ( 38, 93) + { 0, { 0, 0, 0}}, // ( 39, 93) + { 0, { 0, 0, 0}}, // ( 40, 93) + { 0, { 0, 0, 0}}, // ( 41, 93) + { 0, { 0, 0, 0}}, // ( 42, 93) + { 0, { 0, 0, 0}}, // ( 43, 93) + { 0, { 0, 0, 0}}, // ( 44, 93) + { 0, { 0, 0, 0}}, // ( 45, 93) + { 0, { 0, 0, 0}}, // ( 46, 93) + { 0, { 0, 0, 0}}, // ( 47, 93) + { 0, { 0, 0, 0}}, // ( 48, 93) + { 0, { 0, 0, 0}}, // ( 49, 93) + { 0, { 0, 0, 0}}, // ( 50, 93) + { 0, { 0, 0, 0}}, // ( 51, 93) + { 0, { 0, 0, 0}}, // ( 52, 93) + { 0, { 0, 0, 0}}, // ( 53, 93) + { 0, { 0, 0, 0}}, // ( 54, 93) + { 0, { 0, 0, 0}}, // ( 55, 93) + { 0, { 0, 0, 0}}, // ( 56, 93) + { 0, { 0, 0, 0}}, // ( 57, 93) + { 0, { 0, 0, 0}}, // ( 58, 93) + { 0, { 0, 0, 0}}, // ( 59, 93) + { 0, { 0, 0, 0}}, // ( 60, 93) + { 0, { 0, 0, 0}}, // ( 61, 93) + { 0, { 0, 0, 0}}, // ( 62, 93) + { 0, { 0, 0, 0}}, // ( 63, 93) + { 0, { 0, 0, 0}}, // ( 64, 93) + { 0, { 0, 0, 0}}, // ( 65, 93) + { 0, { 0, 0, 0}}, // ( 66, 93) + { 0, { 0, 0, 0}}, // ( 67, 93) + { 0, { 0, 0, 0}}, // ( 68, 93) + { 0, { 0, 0, 0}}, // ( 69, 93) + { 0, { 0, 0, 0}}, // ( 70, 93) + { 0, { 0, 0, 0}}, // ( 71, 93) + { 0, { 0, 0, 0}}, // ( 72, 93) + { 0, { 0, 0, 0}}, // ( 73, 93) + { 0, { 0, 0, 0}}, // ( 74, 93) + { 0, { 0, 0, 0}}, // ( 75, 93) + { 0, { 0, 0, 0}}, // ( 76, 93) + { 0, { 0, 0, 0}}, // ( 77, 93) + { 0, { 0, 0, 0}}, // ( 78, 93) + { 0, { 0, 0, 0}}, // ( 79, 93) + { 0, { 0, 0, 0}}, // ( 80, 93) + { 0, { 0, 0, 0}}, // ( 81, 93) + { 0, { 0, 0, 0}}, // ( 82, 93) + { 0, { 0, 0, 0}}, // ( 83, 93) + { 0, { 0, 0, 0}}, // ( 84, 93) + { 0, { 0, 0, 0}}, // ( 85, 93) + { 0, { 0, 0, 0}}, // ( 86, 93) + { 0, { 0, 0, 0}}, // ( 87, 93) + { 0, { 0, 0, 0}}, // ( 88, 93) + { 0, { 0, 0, 0}}, // ( 89, 93) + { 0, { 0, 0, 0}}, // ( 90, 93) + { 0, { 0, 0, 0}}, // ( 91, 93) + { 0, { 0, 0, 0}}, // ( 92, 93) + { 0, { 0, 0, 0}}, // ( 93, 93) + { 0, { 0, 0, 0}}, // ( 94, 93) + { 0, { 0, 0, 0}}, // ( 95, 93) + { 0, { 0, 0, 0}}, // ( 96, 93) + { 0, { 0, 0, 0}}, // ( 97, 93) + { 0, { 0, 0, 0}}, // ( 98, 93) + { 0, { 0, 0, 0}}, // ( 99, 93) + { 0, { 0, 0, 0}}, // (100, 93) + { 0, { 0, 0, 0}}, // (101, 93) + { 0, { 0, 0, 0}}, // (102, 93) + { 0, { 0, 0, 0}}, // (103, 93) + { 0, { 0, 0, 0}}, // (104, 93) + { 0, { 0, 0, 0}}, // (105, 93) + { 0, { 0, 0, 0}}, // (106, 93) + { 0, { 0, 0, 0}}, // (107, 93) + { 0, { 0, 0, 0}}, // (108, 93) + { 0, { 0, 0, 0}}, // (109, 93) + { 0, { 0, 0, 0}}, // (110, 93) + { 0, { 0, 0, 0}}, // (111, 93) + { 0, { 0, 0, 0}}, // (112, 93) + { 0, { 0, 0, 0}}, // (113, 93) + { 0, { 0, 0, 0}}, // (114, 93) + { 0, { 0, 0, 0}}, // (115, 93) + { 0, { 0, 0, 0}}, // (116, 93) + { 0, { 0, 0, 0}}, // (117, 93) + { 0, { 0, 0, 0}}, // (118, 93) + { 0, { 0, 0, 0}}, // (119, 93) + { 0, { 0, 0, 0}}, // (120, 93) + { 0, { 0, 0, 0}}, // (121, 93) + { 0, { 0, 0, 0}}, // (122, 93) + { 0, { 0, 0, 0}}, // (123, 93) + { 0, { 0, 0, 0}}, // (124, 93) + { 0, { 0, 0, 0}}, // (125, 93) + { 0, { 0, 0, 0}}, // (126, 93) + { 0, { 0, 0, 0}}, // (127, 93) + { 0, { 0, 0, 0}}, // (128, 93) + { 0, { 0, 0, 0}}, // (129, 93) + { 0, { 0, 0, 0}}, // (130, 93) + { 0, { 0, 0, 0}}, // (131, 93) + { 0, { 0, 0, 0}}, // (132, 93) + { 0, { 0, 0, 0}}, // (133, 93) + { 0, { 0, 0, 0}}, // (134, 93) + { 0, { 0, 0, 0}}, // (135, 93) + { 0, { 0, 0, 0}}, // (136, 93) + { 0, { 0, 0, 0}}, // (137, 93) + { 0, { 0, 0, 0}}, // (138, 93) + { 0, { 0, 0, 0}}, // (139, 93) + { 0, { 0, 0, 0}}, // (140, 93) + { 0, { 0, 0, 0}}, // (141, 93) + { 0, { 0, 0, 0}}, // (142, 93) + { 0, { 0, 0, 0}}, // (143, 93) + { 0, { 0, 0, 0}}, // (144, 93) + { 0, { 0, 0, 0}}, // (145, 93) + { 0, { 0, 0, 0}}, // (146, 93) + { 0, { 0, 0, 0}}, // (147, 93) + { 0, { 0, 0, 0}}, // (148, 93) + { 0, { 0, 0, 0}}, // (149, 93) + { 0, { 0, 0, 0}}, // (150, 93) + { 0, { 0, 0, 0}}, // (151, 93) + { 0, { 0, 0, 0}}, // (152, 93) + { 0, { 0, 0, 0}}, // (153, 93) + { 0, { 0, 0, 0}}, // (154, 93) + { 0, { 0, 0, 0}}, // (155, 93) + { 0, { 0, 0, 0}}, // (156, 93) + { 0, { 0, 0, 0}}, // (157, 93) + { 0, { 0, 0, 0}}, // (158, 93) + { 0, { 0, 0, 0}}, // (159, 93) + { 0, { 0, 0, 0}}, // (160, 93) + { 0, { 0, 0, 0}}, // (161, 93) + { 0, { 0, 0, 0}}, // (162, 93) + { 0, { 0, 0, 0}}, // (163, 93) + { 0, { 0, 0, 0}}, // (164, 93) + { 0, { 0, 0, 0}}, // (165, 93) + { 0, { 0, 0, 0}}, // (166, 93) + { 0, { 0, 0, 0}}, // (167, 93) + { 0, { 0, 0, 0}}, // (168, 93) + { 0, { 0, 0, 0}}, // (169, 93) + { 0, { 0, 0, 0}}, // (170, 93) + { 0, { 0, 0, 0}}, // (171, 93) + { 0, { 0, 0, 0}}, // (172, 93) + { 0, { 0, 0, 0}}, // (173, 93) + { 0, { 0, 0, 0}}, // (174, 93) + { 0, { 0, 0, 0}}, // (175, 93) + { 0, { 0, 0, 0}}, // (176, 93) + { 11, { 0, 0, 0}}, // (177, 93) + {128, { 0, 0, 0}}, // (178, 93) + {128, { 0, 0, 0}}, // (179, 93) + {128, { 0, 0, 0}}, // ( 0, 94) + {128, { 0, 0, 0}}, // ( 1, 94) + { 16, { 0, 0, 0}}, // ( 2, 94) + { 0, { 0, 0, 0}}, // ( 3, 94) + { 0, { 0, 0, 0}}, // ( 4, 94) + { 0, { 0, 0, 0}}, // ( 5, 94) + { 0, { 0, 0, 0}}, // ( 6, 94) + { 0, { 0, 0, 0}}, // ( 7, 94) + { 0, { 0, 0, 0}}, // ( 8, 94) + { 0, { 0, 0, 0}}, // ( 9, 94) + { 0, { 0, 0, 0}}, // ( 10, 94) + { 0, { 0, 0, 0}}, // ( 11, 94) + { 0, { 0, 0, 0}}, // ( 12, 94) + { 0, { 0, 0, 0}}, // ( 13, 94) + { 0, { 0, 0, 0}}, // ( 14, 94) + { 0, { 0, 0, 0}}, // ( 15, 94) + { 0, { 0, 0, 0}}, // ( 16, 94) + { 0, { 0, 0, 0}}, // ( 17, 94) + { 0, { 0, 0, 0}}, // ( 18, 94) + { 0, { 0, 0, 0}}, // ( 19, 94) + { 0, { 0, 0, 0}}, // ( 20, 94) + { 0, { 0, 0, 0}}, // ( 21, 94) + { 0, { 0, 0, 0}}, // ( 22, 94) + { 0, { 0, 0, 0}}, // ( 23, 94) + { 0, { 0, 0, 0}}, // ( 24, 94) + { 0, { 0, 0, 0}}, // ( 25, 94) + { 0, { 0, 0, 0}}, // ( 26, 94) + { 0, { 0, 0, 0}}, // ( 27, 94) + { 0, { 0, 0, 0}}, // ( 28, 94) + { 0, { 0, 0, 0}}, // ( 29, 94) + { 0, { 0, 0, 0}}, // ( 30, 94) + { 0, { 0, 0, 0}}, // ( 31, 94) + { 0, { 0, 0, 0}}, // ( 32, 94) + { 0, { 0, 0, 0}}, // ( 33, 94) + { 0, { 0, 0, 0}}, // ( 34, 94) + { 0, { 0, 0, 0}}, // ( 35, 94) + { 0, { 0, 0, 0}}, // ( 36, 94) + { 0, { 0, 0, 0}}, // ( 37, 94) + { 0, { 0, 0, 0}}, // ( 38, 94) + { 0, { 0, 0, 0}}, // ( 39, 94) + { 0, { 0, 0, 0}}, // ( 40, 94) + { 0, { 0, 0, 0}}, // ( 41, 94) + { 0, { 0, 0, 0}}, // ( 42, 94) + { 0, { 0, 0, 0}}, // ( 43, 94) + { 0, { 0, 0, 0}}, // ( 44, 94) + { 0, { 0, 0, 0}}, // ( 45, 94) + { 0, { 0, 0, 0}}, // ( 46, 94) + { 0, { 0, 0, 0}}, // ( 47, 94) + { 0, { 0, 0, 0}}, // ( 48, 94) + { 0, { 0, 0, 0}}, // ( 49, 94) + { 0, { 0, 0, 0}}, // ( 50, 94) + { 0, { 0, 0, 0}}, // ( 51, 94) + { 0, { 0, 0, 0}}, // ( 52, 94) + { 0, { 0, 0, 0}}, // ( 53, 94) + { 0, { 0, 0, 0}}, // ( 54, 94) + { 0, { 0, 0, 0}}, // ( 55, 94) + { 0, { 0, 0, 0}}, // ( 56, 94) + { 0, { 0, 0, 0}}, // ( 57, 94) + { 0, { 0, 0, 0}}, // ( 58, 94) + { 0, { 0, 0, 0}}, // ( 59, 94) + { 0, { 0, 0, 0}}, // ( 60, 94) + { 0, { 0, 0, 0}}, // ( 61, 94) + { 0, { 0, 0, 0}}, // ( 62, 94) + { 0, { 0, 0, 0}}, // ( 63, 94) + { 0, { 0, 0, 0}}, // ( 64, 94) + { 0, { 0, 0, 0}}, // ( 65, 94) + { 0, { 0, 0, 0}}, // ( 66, 94) + { 0, { 0, 0, 0}}, // ( 67, 94) + { 0, { 0, 0, 0}}, // ( 68, 94) + { 0, { 0, 0, 0}}, // ( 69, 94) + { 0, { 0, 0, 0}}, // ( 70, 94) + { 0, { 0, 0, 0}}, // ( 71, 94) + { 0, { 0, 0, 0}}, // ( 72, 94) + { 0, { 0, 0, 0}}, // ( 73, 94) + { 0, { 0, 0, 0}}, // ( 74, 94) + { 0, { 0, 0, 0}}, // ( 75, 94) + { 0, { 0, 0, 0}}, // ( 76, 94) + { 0, { 0, 0, 0}}, // ( 77, 94) + { 0, { 0, 0, 0}}, // ( 78, 94) + { 0, { 0, 0, 0}}, // ( 79, 94) + { 0, { 0, 0, 0}}, // ( 80, 94) + { 0, { 0, 0, 0}}, // ( 81, 94) + { 0, { 0, 0, 0}}, // ( 82, 94) + { 0, { 0, 0, 0}}, // ( 83, 94) + { 0, { 0, 0, 0}}, // ( 84, 94) + { 0, { 0, 0, 0}}, // ( 85, 94) + { 0, { 0, 0, 0}}, // ( 86, 94) + { 0, { 0, 0, 0}}, // ( 87, 94) + { 0, { 0, 0, 0}}, // ( 88, 94) + { 0, { 0, 0, 0}}, // ( 89, 94) + { 0, { 0, 0, 0}}, // ( 90, 94) + { 0, { 0, 0, 0}}, // ( 91, 94) + { 0, { 0, 0, 0}}, // ( 92, 94) + { 0, { 0, 0, 0}}, // ( 93, 94) + { 0, { 0, 0, 0}}, // ( 94, 94) + { 0, { 0, 0, 0}}, // ( 95, 94) + { 0, { 0, 0, 0}}, // ( 96, 94) + { 0, { 0, 0, 0}}, // ( 97, 94) + { 0, { 0, 0, 0}}, // ( 98, 94) + { 0, { 0, 0, 0}}, // ( 99, 94) + { 0, { 0, 0, 0}}, // (100, 94) + { 0, { 0, 0, 0}}, // (101, 94) + { 0, { 0, 0, 0}}, // (102, 94) + { 0, { 0, 0, 0}}, // (103, 94) + { 0, { 0, 0, 0}}, // (104, 94) + { 0, { 0, 0, 0}}, // (105, 94) + { 0, { 0, 0, 0}}, // (106, 94) + { 0, { 0, 0, 0}}, // (107, 94) + { 0, { 0, 0, 0}}, // (108, 94) + { 0, { 0, 0, 0}}, // (109, 94) + { 0, { 0, 0, 0}}, // (110, 94) + { 0, { 0, 0, 0}}, // (111, 94) + { 0, { 0, 0, 0}}, // (112, 94) + { 0, { 0, 0, 0}}, // (113, 94) + { 0, { 0, 0, 0}}, // (114, 94) + { 0, { 0, 0, 0}}, // (115, 94) + { 0, { 0, 0, 0}}, // (116, 94) + { 0, { 0, 0, 0}}, // (117, 94) + { 0, { 0, 0, 0}}, // (118, 94) + { 0, { 0, 0, 0}}, // (119, 94) + { 0, { 0, 0, 0}}, // (120, 94) + { 0, { 0, 0, 0}}, // (121, 94) + { 0, { 0, 0, 0}}, // (122, 94) + { 0, { 0, 0, 0}}, // (123, 94) + { 0, { 0, 0, 0}}, // (124, 94) + { 0, { 0, 0, 0}}, // (125, 94) + { 0, { 0, 0, 0}}, // (126, 94) + { 0, { 0, 0, 0}}, // (127, 94) + { 0, { 0, 0, 0}}, // (128, 94) + { 0, { 0, 0, 0}}, // (129, 94) + { 0, { 0, 0, 0}}, // (130, 94) + { 0, { 0, 0, 0}}, // (131, 94) + { 0, { 0, 0, 0}}, // (132, 94) + { 0, { 0, 0, 0}}, // (133, 94) + { 0, { 0, 0, 0}}, // (134, 94) + { 0, { 0, 0, 0}}, // (135, 94) + { 0, { 0, 0, 0}}, // (136, 94) + { 0, { 0, 0, 0}}, // (137, 94) + { 0, { 0, 0, 0}}, // (138, 94) + { 0, { 0, 0, 0}}, // (139, 94) + { 0, { 0, 0, 0}}, // (140, 94) + { 0, { 0, 0, 0}}, // (141, 94) + { 0, { 0, 0, 0}}, // (142, 94) + { 0, { 0, 0, 0}}, // (143, 94) + { 0, { 0, 0, 0}}, // (144, 94) + { 0, { 0, 0, 0}}, // (145, 94) + { 0, { 0, 0, 0}}, // (146, 94) + { 0, { 0, 0, 0}}, // (147, 94) + { 0, { 0, 0, 0}}, // (148, 94) + { 0, { 0, 0, 0}}, // (149, 94) + { 0, { 0, 0, 0}}, // (150, 94) + { 0, { 0, 0, 0}}, // (151, 94) + { 0, { 0, 0, 0}}, // (152, 94) + { 0, { 0, 0, 0}}, // (153, 94) + { 0, { 0, 0, 0}}, // (154, 94) + { 0, { 0, 0, 0}}, // (155, 94) + { 0, { 0, 0, 0}}, // (156, 94) + { 0, { 0, 0, 0}}, // (157, 94) + { 0, { 0, 0, 0}}, // (158, 94) + { 0, { 0, 0, 0}}, // (159, 94) + { 0, { 0, 0, 0}}, // (160, 94) + { 0, { 0, 0, 0}}, // (161, 94) + { 0, { 0, 0, 0}}, // (162, 94) + { 0, { 0, 0, 0}}, // (163, 94) + { 0, { 0, 0, 0}}, // (164, 94) + { 0, { 0, 0, 0}}, // (165, 94) + { 0, { 0, 0, 0}}, // (166, 94) + { 0, { 0, 0, 0}}, // (167, 94) + { 0, { 0, 0, 0}}, // (168, 94) + { 0, { 0, 0, 0}}, // (169, 94) + { 0, { 0, 0, 0}}, // (170, 94) + { 0, { 0, 0, 0}}, // (171, 94) + { 0, { 0, 0, 0}}, // (172, 94) + { 0, { 0, 0, 0}}, // (173, 94) + { 0, { 0, 0, 0}}, // (174, 94) + { 0, { 0, 0, 0}}, // (175, 94) + { 0, { 0, 0, 0}}, // (176, 94) + { 15, { 0, 0, 0}}, // (177, 94) + {128, { 0, 0, 0}}, // (178, 94) + {128, { 0, 0, 0}}, // (179, 94) + {128, { 0, 0, 0}}, // ( 0, 95) + {128, { 0, 0, 0}}, // ( 1, 95) + { 25, { 0, 0, 0}}, // ( 2, 95) + { 0, { 0, 0, 0}}, // ( 3, 95) + { 0, { 0, 0, 0}}, // ( 4, 95) + { 0, { 0, 0, 0}}, // ( 5, 95) + { 0, { 0, 0, 0}}, // ( 6, 95) + { 0, { 0, 0, 0}}, // ( 7, 95) + { 0, { 0, 0, 0}}, // ( 8, 95) + { 0, { 0, 0, 0}}, // ( 9, 95) + { 0, { 0, 0, 0}}, // ( 10, 95) + { 0, { 0, 0, 0}}, // ( 11, 95) + { 0, { 0, 0, 0}}, // ( 12, 95) + { 0, { 0, 0, 0}}, // ( 13, 95) + { 0, { 0, 0, 0}}, // ( 14, 95) + { 0, { 0, 0, 0}}, // ( 15, 95) + { 0, { 0, 0, 0}}, // ( 16, 95) + { 0, { 0, 0, 0}}, // ( 17, 95) + { 0, { 0, 0, 0}}, // ( 18, 95) + { 0, { 0, 0, 0}}, // ( 19, 95) + { 0, { 0, 0, 0}}, // ( 20, 95) + { 0, { 0, 0, 0}}, // ( 21, 95) + { 0, { 0, 0, 0}}, // ( 22, 95) + { 0, { 0, 0, 0}}, // ( 23, 95) + { 0, { 0, 0, 0}}, // ( 24, 95) + { 0, { 0, 0, 0}}, // ( 25, 95) + { 0, { 0, 0, 0}}, // ( 26, 95) + { 0, { 0, 0, 0}}, // ( 27, 95) + { 0, { 0, 0, 0}}, // ( 28, 95) + { 0, { 0, 0, 0}}, // ( 29, 95) + { 0, { 0, 0, 0}}, // ( 30, 95) + { 0, { 0, 0, 0}}, // ( 31, 95) + { 0, { 0, 0, 0}}, // ( 32, 95) + { 0, { 0, 0, 0}}, // ( 33, 95) + { 0, { 0, 0, 0}}, // ( 34, 95) + { 0, { 0, 0, 0}}, // ( 35, 95) + { 0, { 0, 0, 0}}, // ( 36, 95) + { 0, { 0, 0, 0}}, // ( 37, 95) + { 0, { 0, 0, 0}}, // ( 38, 95) + { 0, { 0, 0, 0}}, // ( 39, 95) + { 0, { 0, 0, 0}}, // ( 40, 95) + { 0, { 0, 0, 0}}, // ( 41, 95) + { 0, { 0, 0, 0}}, // ( 42, 95) + { 0, { 0, 0, 0}}, // ( 43, 95) + { 0, { 0, 0, 0}}, // ( 44, 95) + { 0, { 0, 0, 0}}, // ( 45, 95) + { 0, { 0, 0, 0}}, // ( 46, 95) + { 0, { 0, 0, 0}}, // ( 47, 95) + { 0, { 0, 0, 0}}, // ( 48, 95) + { 0, { 0, 0, 0}}, // ( 49, 95) + { 0, { 0, 0, 0}}, // ( 50, 95) + { 0, { 0, 0, 0}}, // ( 51, 95) + { 0, { 0, 0, 0}}, // ( 52, 95) + { 0, { 0, 0, 0}}, // ( 53, 95) + { 0, { 0, 0, 0}}, // ( 54, 95) + { 0, { 0, 0, 0}}, // ( 55, 95) + { 0, { 0, 0, 0}}, // ( 56, 95) + { 0, { 0, 0, 0}}, // ( 57, 95) + { 0, { 0, 0, 0}}, // ( 58, 95) + { 0, { 0, 0, 0}}, // ( 59, 95) + { 0, { 0, 0, 0}}, // ( 60, 95) + { 0, { 0, 0, 0}}, // ( 61, 95) + { 0, { 0, 0, 0}}, // ( 62, 95) + { 0, { 0, 0, 0}}, // ( 63, 95) + { 0, { 0, 0, 0}}, // ( 64, 95) + { 0, { 0, 0, 0}}, // ( 65, 95) + { 0, { 0, 0, 0}}, // ( 66, 95) + { 0, { 0, 0, 0}}, // ( 67, 95) + { 0, { 0, 0, 0}}, // ( 68, 95) + { 0, { 0, 0, 0}}, // ( 69, 95) + { 0, { 0, 0, 0}}, // ( 70, 95) + { 0, { 0, 0, 0}}, // ( 71, 95) + { 0, { 0, 0, 0}}, // ( 72, 95) + { 0, { 0, 0, 0}}, // ( 73, 95) + { 0, { 0, 0, 0}}, // ( 74, 95) + { 0, { 0, 0, 0}}, // ( 75, 95) + { 0, { 0, 0, 0}}, // ( 76, 95) + { 0, { 0, 0, 0}}, // ( 77, 95) + { 0, { 0, 0, 0}}, // ( 78, 95) + { 0, { 0, 0, 0}}, // ( 79, 95) + { 0, { 0, 0, 0}}, // ( 80, 95) + { 0, { 0, 0, 0}}, // ( 81, 95) + { 0, { 0, 0, 0}}, // ( 82, 95) + { 0, { 0, 0, 0}}, // ( 83, 95) + { 0, { 0, 0, 0}}, // ( 84, 95) + { 0, { 0, 0, 0}}, // ( 85, 95) + { 0, { 0, 0, 0}}, // ( 86, 95) + { 0, { 0, 0, 0}}, // ( 87, 95) + { 0, { 0, 0, 0}}, // ( 88, 95) + { 0, { 0, 0, 0}}, // ( 89, 95) + { 0, { 0, 0, 0}}, // ( 90, 95) + { 0, { 0, 0, 0}}, // ( 91, 95) + { 0, { 0, 0, 0}}, // ( 92, 95) + { 0, { 0, 0, 0}}, // ( 93, 95) + { 0, { 0, 0, 0}}, // ( 94, 95) + { 0, { 0, 0, 0}}, // ( 95, 95) + { 0, { 0, 0, 0}}, // ( 96, 95) + { 0, { 0, 0, 0}}, // ( 97, 95) + { 0, { 0, 0, 0}}, // ( 98, 95) + { 0, { 0, 0, 0}}, // ( 99, 95) + { 0, { 0, 0, 0}}, // (100, 95) + { 0, { 0, 0, 0}}, // (101, 95) + { 0, { 0, 0, 0}}, // (102, 95) + { 0, { 0, 0, 0}}, // (103, 95) + { 0, { 0, 0, 0}}, // (104, 95) + { 0, { 0, 0, 0}}, // (105, 95) + { 0, { 0, 0, 0}}, // (106, 95) + { 0, { 0, 0, 0}}, // (107, 95) + { 0, { 0, 0, 0}}, // (108, 95) + { 0, { 0, 0, 0}}, // (109, 95) + { 0, { 0, 0, 0}}, // (110, 95) + { 0, { 0, 0, 0}}, // (111, 95) + { 0, { 0, 0, 0}}, // (112, 95) + { 0, { 0, 0, 0}}, // (113, 95) + { 0, { 0, 0, 0}}, // (114, 95) + { 0, { 0, 0, 0}}, // (115, 95) + { 0, { 0, 0, 0}}, // (116, 95) + { 0, { 0, 0, 0}}, // (117, 95) + { 0, { 0, 0, 0}}, // (118, 95) + { 0, { 0, 0, 0}}, // (119, 95) + { 0, { 0, 0, 0}}, // (120, 95) + { 0, { 0, 0, 0}}, // (121, 95) + { 0, { 0, 0, 0}}, // (122, 95) + { 0, { 0, 0, 0}}, // (123, 95) + { 0, { 0, 0, 0}}, // (124, 95) + { 0, { 0, 0, 0}}, // (125, 95) + { 0, { 0, 0, 0}}, // (126, 95) + { 0, { 0, 0, 0}}, // (127, 95) + { 0, { 0, 0, 0}}, // (128, 95) + { 0, { 0, 0, 0}}, // (129, 95) + { 0, { 0, 0, 0}}, // (130, 95) + { 0, { 0, 0, 0}}, // (131, 95) + { 0, { 0, 0, 0}}, // (132, 95) + { 0, { 0, 0, 0}}, // (133, 95) + { 0, { 0, 0, 0}}, // (134, 95) + { 0, { 0, 0, 0}}, // (135, 95) + { 0, { 0, 0, 0}}, // (136, 95) + { 0, { 0, 0, 0}}, // (137, 95) + { 0, { 0, 0, 0}}, // (138, 95) + { 0, { 0, 0, 0}}, // (139, 95) + { 0, { 0, 0, 0}}, // (140, 95) + { 0, { 0, 0, 0}}, // (141, 95) + { 0, { 0, 0, 0}}, // (142, 95) + { 0, { 0, 0, 0}}, // (143, 95) + { 0, { 0, 0, 0}}, // (144, 95) + { 0, { 0, 0, 0}}, // (145, 95) + { 0, { 0, 0, 0}}, // (146, 95) + { 0, { 0, 0, 0}}, // (147, 95) + { 0, { 0, 0, 0}}, // (148, 95) + { 0, { 0, 0, 0}}, // (149, 95) + { 0, { 0, 0, 0}}, // (150, 95) + { 0, { 0, 0, 0}}, // (151, 95) + { 0, { 0, 0, 0}}, // (152, 95) + { 0, { 0, 0, 0}}, // (153, 95) + { 0, { 0, 0, 0}}, // (154, 95) + { 0, { 0, 0, 0}}, // (155, 95) + { 0, { 0, 0, 0}}, // (156, 95) + { 0, { 0, 0, 0}}, // (157, 95) + { 0, { 0, 0, 0}}, // (158, 95) + { 0, { 0, 0, 0}}, // (159, 95) + { 0, { 0, 0, 0}}, // (160, 95) + { 0, { 0, 0, 0}}, // (161, 95) + { 0, { 0, 0, 0}}, // (162, 95) + { 0, { 0, 0, 0}}, // (163, 95) + { 0, { 0, 0, 0}}, // (164, 95) + { 0, { 0, 0, 0}}, // (165, 95) + { 0, { 0, 0, 0}}, // (166, 95) + { 0, { 0, 0, 0}}, // (167, 95) + { 0, { 0, 0, 0}}, // (168, 95) + { 0, { 0, 0, 0}}, // (169, 95) + { 0, { 0, 0, 0}}, // (170, 95) + { 0, { 0, 0, 0}}, // (171, 95) + { 0, { 0, 0, 0}}, // (172, 95) + { 0, { 0, 0, 0}}, // (173, 95) + { 0, { 0, 0, 0}}, // (174, 95) + { 0, { 0, 0, 0}}, // (175, 95) + { 0, { 0, 0, 0}}, // (176, 95) + { 25, { 0, 0, 0}}, // (177, 95) + {128, { 0, 0, 0}}, // (178, 95) + {128, { 0, 0, 0}}, // (179, 95) + {128, { 0, 0, 0}}, // ( 0, 96) + {128, { 0, 0, 0}}, // ( 1, 96) + { 34, { 0, 0, 0}}, // ( 2, 96) + { 0, { 0, 0, 0}}, // ( 3, 96) + { 0, { 0, 0, 0}}, // ( 4, 96) + { 0, { 0, 0, 0}}, // ( 5, 96) + { 0, { 0, 0, 0}}, // ( 6, 96) + { 0, { 0, 0, 0}}, // ( 7, 96) + { 0, { 0, 0, 0}}, // ( 8, 96) + { 0, { 0, 0, 0}}, // ( 9, 96) + { 0, { 0, 0, 0}}, // ( 10, 96) + { 0, { 0, 0, 0}}, // ( 11, 96) + { 0, { 0, 0, 0}}, // ( 12, 96) + { 0, { 0, 0, 0}}, // ( 13, 96) + { 0, { 0, 0, 0}}, // ( 14, 96) + { 0, { 0, 0, 0}}, // ( 15, 96) + { 0, { 0, 0, 0}}, // ( 16, 96) + { 0, { 0, 0, 0}}, // ( 17, 96) + { 0, { 0, 0, 0}}, // ( 18, 96) + { 0, { 0, 0, 0}}, // ( 19, 96) + { 0, { 0, 0, 0}}, // ( 20, 96) + { 0, { 0, 0, 0}}, // ( 21, 96) + { 0, { 0, 0, 0}}, // ( 22, 96) + { 0, { 0, 0, 0}}, // ( 23, 96) + { 0, { 0, 0, 0}}, // ( 24, 96) + { 0, { 0, 0, 0}}, // ( 25, 96) + { 0, { 0, 0, 0}}, // ( 26, 96) + { 0, { 0, 0, 0}}, // ( 27, 96) + { 0, { 0, 0, 0}}, // ( 28, 96) + { 0, { 0, 0, 0}}, // ( 29, 96) + { 0, { 0, 0, 0}}, // ( 30, 96) + { 0, { 0, 0, 0}}, // ( 31, 96) + { 0, { 0, 0, 0}}, // ( 32, 96) + { 0, { 0, 0, 0}}, // ( 33, 96) + { 0, { 0, 0, 0}}, // ( 34, 96) + { 0, { 0, 0, 0}}, // ( 35, 96) + { 0, { 0, 0, 0}}, // ( 36, 96) + { 0, { 0, 0, 0}}, // ( 37, 96) + { 0, { 0, 0, 0}}, // ( 38, 96) + { 0, { 0, 0, 0}}, // ( 39, 96) + { 0, { 0, 0, 0}}, // ( 40, 96) + { 0, { 0, 0, 0}}, // ( 41, 96) + { 0, { 0, 0, 0}}, // ( 42, 96) + { 0, { 0, 0, 0}}, // ( 43, 96) + { 0, { 0, 0, 0}}, // ( 44, 96) + { 0, { 0, 0, 0}}, // ( 45, 96) + { 0, { 0, 0, 0}}, // ( 46, 96) + { 0, { 0, 0, 0}}, // ( 47, 96) + { 0, { 0, 0, 0}}, // ( 48, 96) + { 0, { 0, 0, 0}}, // ( 49, 96) + { 0, { 0, 0, 0}}, // ( 50, 96) + { 0, { 0, 0, 0}}, // ( 51, 96) + { 0, { 0, 0, 0}}, // ( 52, 96) + { 0, { 0, 0, 0}}, // ( 53, 96) + { 0, { 0, 0, 0}}, // ( 54, 96) + { 0, { 0, 0, 0}}, // ( 55, 96) + { 0, { 0, 0, 0}}, // ( 56, 96) + { 0, { 0, 0, 0}}, // ( 57, 96) + { 0, { 0, 0, 0}}, // ( 58, 96) + { 0, { 0, 0, 0}}, // ( 59, 96) + { 0, { 0, 0, 0}}, // ( 60, 96) + { 0, { 0, 0, 0}}, // ( 61, 96) + { 0, { 0, 0, 0}}, // ( 62, 96) + { 0, { 0, 0, 0}}, // ( 63, 96) + { 0, { 0, 0, 0}}, // ( 64, 96) + { 0, { 0, 0, 0}}, // ( 65, 96) + { 0, { 0, 0, 0}}, // ( 66, 96) + { 0, { 0, 0, 0}}, // ( 67, 96) + { 0, { 0, 0, 0}}, // ( 68, 96) + { 0, { 0, 0, 0}}, // ( 69, 96) + { 0, { 0, 0, 0}}, // ( 70, 96) + { 0, { 0, 0, 0}}, // ( 71, 96) + { 0, { 0, 0, 0}}, // ( 72, 96) + { 0, { 0, 0, 0}}, // ( 73, 96) + { 0, { 0, 0, 0}}, // ( 74, 96) + { 0, { 0, 0, 0}}, // ( 75, 96) + { 0, { 0, 0, 0}}, // ( 76, 96) + { 0, { 0, 0, 0}}, // ( 77, 96) + { 0, { 0, 0, 0}}, // ( 78, 96) + { 0, { 0, 0, 0}}, // ( 79, 96) + { 0, { 0, 0, 0}}, // ( 80, 96) + { 0, { 0, 0, 0}}, // ( 81, 96) + { 0, { 0, 0, 0}}, // ( 82, 96) + { 0, { 0, 0, 0}}, // ( 83, 96) + { 0, { 0, 0, 0}}, // ( 84, 96) + { 0, { 0, 0, 0}}, // ( 85, 96) + { 0, { 0, 0, 0}}, // ( 86, 96) + { 0, { 0, 0, 0}}, // ( 87, 96) + { 0, { 0, 0, 0}}, // ( 88, 96) + { 0, { 0, 0, 0}}, // ( 89, 96) + { 0, { 0, 0, 0}}, // ( 90, 96) + { 0, { 0, 0, 0}}, // ( 91, 96) + { 0, { 0, 0, 0}}, // ( 92, 96) + { 0, { 0, 0, 0}}, // ( 93, 96) + { 0, { 0, 0, 0}}, // ( 94, 96) + { 0, { 0, 0, 0}}, // ( 95, 96) + { 0, { 0, 0, 0}}, // ( 96, 96) + { 0, { 0, 0, 0}}, // ( 97, 96) + { 0, { 0, 0, 0}}, // ( 98, 96) + { 0, { 0, 0, 0}}, // ( 99, 96) + { 0, { 0, 0, 0}}, // (100, 96) + { 0, { 0, 0, 0}}, // (101, 96) + { 0, { 0, 0, 0}}, // (102, 96) + { 0, { 0, 0, 0}}, // (103, 96) + { 0, { 0, 0, 0}}, // (104, 96) + { 0, { 0, 0, 0}}, // (105, 96) + { 0, { 0, 0, 0}}, // (106, 96) + { 0, { 0, 0, 0}}, // (107, 96) + { 0, { 0, 0, 0}}, // (108, 96) + { 0, { 0, 0, 0}}, // (109, 96) + { 0, { 0, 0, 0}}, // (110, 96) + { 0, { 0, 0, 0}}, // (111, 96) + { 0, { 0, 0, 0}}, // (112, 96) + { 0, { 0, 0, 0}}, // (113, 96) + { 0, { 0, 0, 0}}, // (114, 96) + { 0, { 0, 0, 0}}, // (115, 96) + { 0, { 0, 0, 0}}, // (116, 96) + { 0, { 0, 0, 0}}, // (117, 96) + { 0, { 0, 0, 0}}, // (118, 96) + { 0, { 0, 0, 0}}, // (119, 96) + { 0, { 0, 0, 0}}, // (120, 96) + { 0, { 0, 0, 0}}, // (121, 96) + { 0, { 0, 0, 0}}, // (122, 96) + { 0, { 0, 0, 0}}, // (123, 96) + { 0, { 0, 0, 0}}, // (124, 96) + { 0, { 0, 0, 0}}, // (125, 96) + { 0, { 0, 0, 0}}, // (126, 96) + { 0, { 0, 0, 0}}, // (127, 96) + { 0, { 0, 0, 0}}, // (128, 96) + { 0, { 0, 0, 0}}, // (129, 96) + { 0, { 0, 0, 0}}, // (130, 96) + { 0, { 0, 0, 0}}, // (131, 96) + { 0, { 0, 0, 0}}, // (132, 96) + { 0, { 0, 0, 0}}, // (133, 96) + { 0, { 0, 0, 0}}, // (134, 96) + { 0, { 0, 0, 0}}, // (135, 96) + { 0, { 0, 0, 0}}, // (136, 96) + { 0, { 0, 0, 0}}, // (137, 96) + { 0, { 0, 0, 0}}, // (138, 96) + { 0, { 0, 0, 0}}, // (139, 96) + { 0, { 0, 0, 0}}, // (140, 96) + { 0, { 0, 0, 0}}, // (141, 96) + { 0, { 0, 0, 0}}, // (142, 96) + { 0, { 0, 0, 0}}, // (143, 96) + { 0, { 0, 0, 0}}, // (144, 96) + { 0, { 0, 0, 0}}, // (145, 96) + { 0, { 0, 0, 0}}, // (146, 96) + { 0, { 0, 0, 0}}, // (147, 96) + { 0, { 0, 0, 0}}, // (148, 96) + { 0, { 0, 0, 0}}, // (149, 96) + { 0, { 0, 0, 0}}, // (150, 96) + { 0, { 0, 0, 0}}, // (151, 96) + { 0, { 0, 0, 0}}, // (152, 96) + { 0, { 0, 0, 0}}, // (153, 96) + { 0, { 0, 0, 0}}, // (154, 96) + { 0, { 0, 0, 0}}, // (155, 96) + { 0, { 0, 0, 0}}, // (156, 96) + { 0, { 0, 0, 0}}, // (157, 96) + { 0, { 0, 0, 0}}, // (158, 96) + { 0, { 0, 0, 0}}, // (159, 96) + { 0, { 0, 0, 0}}, // (160, 96) + { 0, { 0, 0, 0}}, // (161, 96) + { 0, { 0, 0, 0}}, // (162, 96) + { 0, { 0, 0, 0}}, // (163, 96) + { 0, { 0, 0, 0}}, // (164, 96) + { 0, { 0, 0, 0}}, // (165, 96) + { 0, { 0, 0, 0}}, // (166, 96) + { 0, { 0, 0, 0}}, // (167, 96) + { 0, { 0, 0, 0}}, // (168, 96) + { 0, { 0, 0, 0}}, // (169, 96) + { 0, { 0, 0, 0}}, // (170, 96) + { 0, { 0, 0, 0}}, // (171, 96) + { 0, { 0, 0, 0}}, // (172, 96) + { 0, { 0, 0, 0}}, // (173, 96) + { 0, { 0, 0, 0}}, // (174, 96) + { 0, { 0, 0, 0}}, // (175, 96) + { 0, { 0, 0, 0}}, // (176, 96) + { 34, { 0, 0, 0}}, // (177, 96) + {128, { 0, 0, 0}}, // (178, 96) + {128, { 0, 0, 0}}, // (179, 96) + {128, { 0, 0, 0}}, // ( 0, 97) + {128, { 0, 0, 0}}, // ( 1, 97) + { 43, { 0, 0, 0}}, // ( 2, 97) + { 0, { 0, 0, 0}}, // ( 3, 97) + { 0, { 0, 0, 0}}, // ( 4, 97) + { 0, { 0, 0, 0}}, // ( 5, 97) + { 0, { 0, 0, 0}}, // ( 6, 97) + { 0, { 0, 0, 0}}, // ( 7, 97) + { 0, { 0, 0, 0}}, // ( 8, 97) + { 0, { 0, 0, 0}}, // ( 9, 97) + { 0, { 0, 0, 0}}, // ( 10, 97) + { 0, { 0, 0, 0}}, // ( 11, 97) + { 0, { 0, 0, 0}}, // ( 12, 97) + { 0, { 0, 0, 0}}, // ( 13, 97) + { 0, { 0, 0, 0}}, // ( 14, 97) + { 0, { 0, 0, 0}}, // ( 15, 97) + { 0, { 0, 0, 0}}, // ( 16, 97) + { 0, { 0, 0, 0}}, // ( 17, 97) + { 0, { 0, 0, 0}}, // ( 18, 97) + { 0, { 0, 0, 0}}, // ( 19, 97) + { 0, { 0, 0, 0}}, // ( 20, 97) + { 0, { 0, 0, 0}}, // ( 21, 97) + { 0, { 0, 0, 0}}, // ( 22, 97) + { 0, { 0, 0, 0}}, // ( 23, 97) + { 0, { 0, 0, 0}}, // ( 24, 97) + { 0, { 0, 0, 0}}, // ( 25, 97) + { 0, { 0, 0, 0}}, // ( 26, 97) + { 0, { 0, 0, 0}}, // ( 27, 97) + { 0, { 0, 0, 0}}, // ( 28, 97) + { 0, { 0, 0, 0}}, // ( 29, 97) + { 0, { 0, 0, 0}}, // ( 30, 97) + { 0, { 0, 0, 0}}, // ( 31, 97) + { 0, { 0, 0, 0}}, // ( 32, 97) + { 0, { 0, 0, 0}}, // ( 33, 97) + { 0, { 0, 0, 0}}, // ( 34, 97) + { 0, { 0, 0, 0}}, // ( 35, 97) + { 0, { 0, 0, 0}}, // ( 36, 97) + { 0, { 0, 0, 0}}, // ( 37, 97) + { 0, { 0, 0, 0}}, // ( 38, 97) + { 0, { 0, 0, 0}}, // ( 39, 97) + { 0, { 0, 0, 0}}, // ( 40, 97) + { 0, { 0, 0, 0}}, // ( 41, 97) + { 0, { 0, 0, 0}}, // ( 42, 97) + { 0, { 0, 0, 0}}, // ( 43, 97) + { 0, { 0, 0, 0}}, // ( 44, 97) + { 0, { 0, 0, 0}}, // ( 45, 97) + { 0, { 0, 0, 0}}, // ( 46, 97) + { 0, { 0, 0, 0}}, // ( 47, 97) + { 0, { 0, 0, 0}}, // ( 48, 97) + { 0, { 0, 0, 0}}, // ( 49, 97) + { 0, { 0, 0, 0}}, // ( 50, 97) + { 0, { 0, 0, 0}}, // ( 51, 97) + { 0, { 0, 0, 0}}, // ( 52, 97) + { 0, { 0, 0, 0}}, // ( 53, 97) + { 0, { 0, 0, 0}}, // ( 54, 97) + { 0, { 0, 0, 0}}, // ( 55, 97) + { 0, { 0, 0, 0}}, // ( 56, 97) + { 0, { 0, 0, 0}}, // ( 57, 97) + { 0, { 0, 0, 0}}, // ( 58, 97) + { 0, { 0, 0, 0}}, // ( 59, 97) + { 0, { 0, 0, 0}}, // ( 60, 97) + { 0, { 0, 0, 0}}, // ( 61, 97) + { 0, { 0, 0, 0}}, // ( 62, 97) + { 0, { 0, 0, 0}}, // ( 63, 97) + { 0, { 0, 0, 0}}, // ( 64, 97) + { 0, { 0, 0, 0}}, // ( 65, 97) + { 0, { 0, 0, 0}}, // ( 66, 97) + { 0, { 0, 0, 0}}, // ( 67, 97) + { 0, { 0, 0, 0}}, // ( 68, 97) + { 0, { 0, 0, 0}}, // ( 69, 97) + { 0, { 0, 0, 0}}, // ( 70, 97) + { 0, { 0, 0, 0}}, // ( 71, 97) + { 0, { 0, 0, 0}}, // ( 72, 97) + { 0, { 0, 0, 0}}, // ( 73, 97) + { 0, { 0, 0, 0}}, // ( 74, 97) + { 0, { 0, 0, 0}}, // ( 75, 97) + { 0, { 0, 0, 0}}, // ( 76, 97) + { 0, { 0, 0, 0}}, // ( 77, 97) + { 0, { 0, 0, 0}}, // ( 78, 97) + { 0, { 0, 0, 0}}, // ( 79, 97) + { 0, { 0, 0, 0}}, // ( 80, 97) + { 0, { 0, 0, 0}}, // ( 81, 97) + { 0, { 0, 0, 0}}, // ( 82, 97) + { 0, { 0, 0, 0}}, // ( 83, 97) + { 0, { 0, 0, 0}}, // ( 84, 97) + { 0, { 0, 0, 0}}, // ( 85, 97) + { 0, { 0, 0, 0}}, // ( 86, 97) + { 0, { 0, 0, 0}}, // ( 87, 97) + { 0, { 0, 0, 0}}, // ( 88, 97) + { 0, { 0, 0, 0}}, // ( 89, 97) + { 0, { 0, 0, 0}}, // ( 90, 97) + { 0, { 0, 0, 0}}, // ( 91, 97) + { 0, { 0, 0, 0}}, // ( 92, 97) + { 0, { 0, 0, 0}}, // ( 93, 97) + { 0, { 0, 0, 0}}, // ( 94, 97) + { 0, { 0, 0, 0}}, // ( 95, 97) + { 0, { 0, 0, 0}}, // ( 96, 97) + { 0, { 0, 0, 0}}, // ( 97, 97) + { 0, { 0, 0, 0}}, // ( 98, 97) + { 0, { 0, 0, 0}}, // ( 99, 97) + { 0, { 0, 0, 0}}, // (100, 97) + { 0, { 0, 0, 0}}, // (101, 97) + { 0, { 0, 0, 0}}, // (102, 97) + { 0, { 0, 0, 0}}, // (103, 97) + { 0, { 0, 0, 0}}, // (104, 97) + { 0, { 0, 0, 0}}, // (105, 97) + { 0, { 0, 0, 0}}, // (106, 97) + { 0, { 0, 0, 0}}, // (107, 97) + { 0, { 0, 0, 0}}, // (108, 97) + { 0, { 0, 0, 0}}, // (109, 97) + { 0, { 0, 0, 0}}, // (110, 97) + { 0, { 0, 0, 0}}, // (111, 97) + { 0, { 0, 0, 0}}, // (112, 97) + { 0, { 0, 0, 0}}, // (113, 97) + { 0, { 0, 0, 0}}, // (114, 97) + { 0, { 0, 0, 0}}, // (115, 97) + { 0, { 0, 0, 0}}, // (116, 97) + { 0, { 0, 0, 0}}, // (117, 97) + { 0, { 0, 0, 0}}, // (118, 97) + { 0, { 0, 0, 0}}, // (119, 97) + { 0, { 0, 0, 0}}, // (120, 97) + { 0, { 0, 0, 0}}, // (121, 97) + { 0, { 0, 0, 0}}, // (122, 97) + { 0, { 0, 0, 0}}, // (123, 97) + { 0, { 0, 0, 0}}, // (124, 97) + { 0, { 0, 0, 0}}, // (125, 97) + { 0, { 0, 0, 0}}, // (126, 97) + { 0, { 0, 0, 0}}, // (127, 97) + { 0, { 0, 0, 0}}, // (128, 97) + { 0, { 0, 0, 0}}, // (129, 97) + { 0, { 0, 0, 0}}, // (130, 97) + { 0, { 0, 0, 0}}, // (131, 97) + { 0, { 0, 0, 0}}, // (132, 97) + { 0, { 0, 0, 0}}, // (133, 97) + { 0, { 0, 0, 0}}, // (134, 97) + { 0, { 0, 0, 0}}, // (135, 97) + { 0, { 0, 0, 0}}, // (136, 97) + { 0, { 0, 0, 0}}, // (137, 97) + { 0, { 0, 0, 0}}, // (138, 97) + { 0, { 0, 0, 0}}, // (139, 97) + { 0, { 0, 0, 0}}, // (140, 97) + { 0, { 0, 0, 0}}, // (141, 97) + { 0, { 0, 0, 0}}, // (142, 97) + { 0, { 0, 0, 0}}, // (143, 97) + { 0, { 0, 0, 0}}, // (144, 97) + { 0, { 0, 0, 0}}, // (145, 97) + { 0, { 0, 0, 0}}, // (146, 97) + { 0, { 0, 0, 0}}, // (147, 97) + { 0, { 0, 0, 0}}, // (148, 97) + { 0, { 0, 0, 0}}, // (149, 97) + { 0, { 0, 0, 0}}, // (150, 97) + { 0, { 0, 0, 0}}, // (151, 97) + { 0, { 0, 0, 0}}, // (152, 97) + { 0, { 0, 0, 0}}, // (153, 97) + { 0, { 0, 0, 0}}, // (154, 97) + { 0, { 0, 0, 0}}, // (155, 97) + { 0, { 0, 0, 0}}, // (156, 97) + { 0, { 0, 0, 0}}, // (157, 97) + { 0, { 0, 0, 0}}, // (158, 97) + { 0, { 0, 0, 0}}, // (159, 97) + { 0, { 0, 0, 0}}, // (160, 97) + { 0, { 0, 0, 0}}, // (161, 97) + { 0, { 0, 0, 0}}, // (162, 97) + { 0, { 0, 0, 0}}, // (163, 97) + { 0, { 0, 0, 0}}, // (164, 97) + { 0, { 0, 0, 0}}, // (165, 97) + { 0, { 0, 0, 0}}, // (166, 97) + { 0, { 0, 0, 0}}, // (167, 97) + { 0, { 0, 0, 0}}, // (168, 97) + { 0, { 0, 0, 0}}, // (169, 97) + { 0, { 0, 0, 0}}, // (170, 97) + { 0, { 0, 0, 0}}, // (171, 97) + { 0, { 0, 0, 0}}, // (172, 97) + { 0, { 0, 0, 0}}, // (173, 97) + { 0, { 0, 0, 0}}, // (174, 97) + { 0, { 0, 0, 0}}, // (175, 97) + { 0, { 0, 0, 0}}, // (176, 97) + { 43, { 0, 0, 0}}, // (177, 97) + {128, { 0, 0, 0}}, // (178, 97) + {128, { 0, 0, 0}}, // (179, 97) + {128, { 0, 0, 0}}, // ( 0, 98) + {128, { 0, 0, 0}}, // ( 1, 98) + { 54, { 0, 0, 0}}, // ( 2, 98) + { 0, { 0, 0, 0}}, // ( 3, 98) + { 0, { 0, 0, 0}}, // ( 4, 98) + { 0, { 0, 0, 0}}, // ( 5, 98) + { 0, { 0, 0, 0}}, // ( 6, 98) + { 0, { 0, 0, 0}}, // ( 7, 98) + { 0, { 0, 0, 0}}, // ( 8, 98) + { 0, { 0, 0, 0}}, // ( 9, 98) + { 0, { 0, 0, 0}}, // ( 10, 98) + { 0, { 0, 0, 0}}, // ( 11, 98) + { 0, { 0, 0, 0}}, // ( 12, 98) + { 0, { 0, 0, 0}}, // ( 13, 98) + { 0, { 0, 0, 0}}, // ( 14, 98) + { 0, { 0, 0, 0}}, // ( 15, 98) + { 0, { 0, 0, 0}}, // ( 16, 98) + { 0, { 0, 0, 0}}, // ( 17, 98) + { 0, { 0, 0, 0}}, // ( 18, 98) + { 0, { 0, 0, 0}}, // ( 19, 98) + { 0, { 0, 0, 0}}, // ( 20, 98) + { 0, { 0, 0, 0}}, // ( 21, 98) + { 0, { 0, 0, 0}}, // ( 22, 98) + { 0, { 0, 0, 0}}, // ( 23, 98) + { 0, { 0, 0, 0}}, // ( 24, 98) + { 0, { 0, 0, 0}}, // ( 25, 98) + { 0, { 0, 0, 0}}, // ( 26, 98) + { 0, { 0, 0, 0}}, // ( 27, 98) + { 0, { 0, 0, 0}}, // ( 28, 98) + { 0, { 0, 0, 0}}, // ( 29, 98) + { 0, { 0, 0, 0}}, // ( 30, 98) + { 0, { 0, 0, 0}}, // ( 31, 98) + { 0, { 0, 0, 0}}, // ( 32, 98) + { 0, { 0, 0, 0}}, // ( 33, 98) + { 0, { 0, 0, 0}}, // ( 34, 98) + { 0, { 0, 0, 0}}, // ( 35, 98) + { 0, { 0, 0, 0}}, // ( 36, 98) + { 0, { 0, 0, 0}}, // ( 37, 98) + { 0, { 0, 0, 0}}, // ( 38, 98) + { 0, { 0, 0, 0}}, // ( 39, 98) + { 0, { 0, 0, 0}}, // ( 40, 98) + { 0, { 0, 0, 0}}, // ( 41, 98) + { 0, { 0, 0, 0}}, // ( 42, 98) + { 0, { 0, 0, 0}}, // ( 43, 98) + { 0, { 0, 0, 0}}, // ( 44, 98) + { 0, { 0, 0, 0}}, // ( 45, 98) + { 0, { 0, 0, 0}}, // ( 46, 98) + { 0, { 0, 0, 0}}, // ( 47, 98) + { 0, { 0, 0, 0}}, // ( 48, 98) + { 0, { 0, 0, 0}}, // ( 49, 98) + { 0, { 0, 0, 0}}, // ( 50, 98) + { 0, { 0, 0, 0}}, // ( 51, 98) + { 0, { 0, 0, 0}}, // ( 52, 98) + { 0, { 0, 0, 0}}, // ( 53, 98) + { 0, { 0, 0, 0}}, // ( 54, 98) + { 0, { 0, 0, 0}}, // ( 55, 98) + { 0, { 0, 0, 0}}, // ( 56, 98) + { 0, { 0, 0, 0}}, // ( 57, 98) + { 0, { 0, 0, 0}}, // ( 58, 98) + { 0, { 0, 0, 0}}, // ( 59, 98) + { 0, { 0, 0, 0}}, // ( 60, 98) + { 0, { 0, 0, 0}}, // ( 61, 98) + { 0, { 0, 0, 0}}, // ( 62, 98) + { 0, { 0, 0, 0}}, // ( 63, 98) + { 0, { 0, 0, 0}}, // ( 64, 98) + { 0, { 0, 0, 0}}, // ( 65, 98) + { 0, { 0, 0, 0}}, // ( 66, 98) + { 0, { 0, 0, 0}}, // ( 67, 98) + { 0, { 0, 0, 0}}, // ( 68, 98) + { 0, { 0, 0, 0}}, // ( 69, 98) + { 0, { 0, 0, 0}}, // ( 70, 98) + { 0, { 0, 0, 0}}, // ( 71, 98) + { 0, { 0, 0, 0}}, // ( 72, 98) + { 0, { 0, 0, 0}}, // ( 73, 98) + { 0, { 0, 0, 0}}, // ( 74, 98) + { 0, { 0, 0, 0}}, // ( 75, 98) + { 0, { 0, 0, 0}}, // ( 76, 98) + { 0, { 0, 0, 0}}, // ( 77, 98) + { 0, { 0, 0, 0}}, // ( 78, 98) + { 0, { 0, 0, 0}}, // ( 79, 98) + { 0, { 0, 0, 0}}, // ( 80, 98) + { 0, { 0, 0, 0}}, // ( 81, 98) + { 0, { 0, 0, 0}}, // ( 82, 98) + { 0, { 0, 0, 0}}, // ( 83, 98) + { 0, { 0, 0, 0}}, // ( 84, 98) + { 0, { 0, 0, 0}}, // ( 85, 98) + { 0, { 0, 0, 0}}, // ( 86, 98) + { 0, { 0, 0, 0}}, // ( 87, 98) + { 0, { 0, 0, 0}}, // ( 88, 98) + { 0, { 0, 0, 0}}, // ( 89, 98) + { 0, { 0, 0, 0}}, // ( 90, 98) + { 0, { 0, 0, 0}}, // ( 91, 98) + { 0, { 0, 0, 0}}, // ( 92, 98) + { 0, { 0, 0, 0}}, // ( 93, 98) + { 0, { 0, 0, 0}}, // ( 94, 98) + { 0, { 0, 0, 0}}, // ( 95, 98) + { 0, { 0, 0, 0}}, // ( 96, 98) + { 0, { 0, 0, 0}}, // ( 97, 98) + { 0, { 0, 0, 0}}, // ( 98, 98) + { 0, { 0, 0, 0}}, // ( 99, 98) + { 0, { 0, 0, 0}}, // (100, 98) + { 0, { 0, 0, 0}}, // (101, 98) + { 0, { 0, 0, 0}}, // (102, 98) + { 0, { 0, 0, 0}}, // (103, 98) + { 0, { 0, 0, 0}}, // (104, 98) + { 0, { 0, 0, 0}}, // (105, 98) + { 0, { 0, 0, 0}}, // (106, 98) + { 0, { 0, 0, 0}}, // (107, 98) + { 0, { 0, 0, 0}}, // (108, 98) + { 0, { 0, 0, 0}}, // (109, 98) + { 0, { 0, 0, 0}}, // (110, 98) + { 0, { 0, 0, 0}}, // (111, 98) + { 0, { 0, 0, 0}}, // (112, 98) + { 0, { 0, 0, 0}}, // (113, 98) + { 0, { 0, 0, 0}}, // (114, 98) + { 0, { 0, 0, 0}}, // (115, 98) + { 0, { 0, 0, 0}}, // (116, 98) + { 0, { 0, 0, 0}}, // (117, 98) + { 0, { 0, 0, 0}}, // (118, 98) + { 0, { 0, 0, 0}}, // (119, 98) + { 0, { 0, 0, 0}}, // (120, 98) + { 0, { 0, 0, 0}}, // (121, 98) + { 0, { 0, 0, 0}}, // (122, 98) + { 0, { 0, 0, 0}}, // (123, 98) + { 0, { 0, 0, 0}}, // (124, 98) + { 0, { 0, 0, 0}}, // (125, 98) + { 0, { 0, 0, 0}}, // (126, 98) + { 0, { 0, 0, 0}}, // (127, 98) + { 0, { 0, 0, 0}}, // (128, 98) + { 0, { 0, 0, 0}}, // (129, 98) + { 0, { 0, 0, 0}}, // (130, 98) + { 0, { 0, 0, 0}}, // (131, 98) + { 0, { 0, 0, 0}}, // (132, 98) + { 0, { 0, 0, 0}}, // (133, 98) + { 0, { 0, 0, 0}}, // (134, 98) + { 0, { 0, 0, 0}}, // (135, 98) + { 0, { 0, 0, 0}}, // (136, 98) + { 0, { 0, 0, 0}}, // (137, 98) + { 0, { 0, 0, 0}}, // (138, 98) + { 0, { 0, 0, 0}}, // (139, 98) + { 0, { 0, 0, 0}}, // (140, 98) + { 0, { 0, 0, 0}}, // (141, 98) + { 0, { 0, 0, 0}}, // (142, 98) + { 0, { 0, 0, 0}}, // (143, 98) + { 0, { 0, 0, 0}}, // (144, 98) + { 0, { 0, 0, 0}}, // (145, 98) + { 0, { 0, 0, 0}}, // (146, 98) + { 0, { 0, 0, 0}}, // (147, 98) + { 0, { 0, 0, 0}}, // (148, 98) + { 0, { 0, 0, 0}}, // (149, 98) + { 0, { 0, 0, 0}}, // (150, 98) + { 0, { 0, 0, 0}}, // (151, 98) + { 0, { 0, 0, 0}}, // (152, 98) + { 0, { 0, 0, 0}}, // (153, 98) + { 0, { 0, 0, 0}}, // (154, 98) + { 0, { 0, 0, 0}}, // (155, 98) + { 0, { 0, 0, 0}}, // (156, 98) + { 0, { 0, 0, 0}}, // (157, 98) + { 0, { 0, 0, 0}}, // (158, 98) + { 0, { 0, 0, 0}}, // (159, 98) + { 0, { 0, 0, 0}}, // (160, 98) + { 0, { 0, 0, 0}}, // (161, 98) + { 0, { 0, 0, 0}}, // (162, 98) + { 0, { 0, 0, 0}}, // (163, 98) + { 0, { 0, 0, 0}}, // (164, 98) + { 0, { 0, 0, 0}}, // (165, 98) + { 0, { 0, 0, 0}}, // (166, 98) + { 0, { 0, 0, 0}}, // (167, 98) + { 0, { 0, 0, 0}}, // (168, 98) + { 0, { 0, 0, 0}}, // (169, 98) + { 0, { 0, 0, 0}}, // (170, 98) + { 0, { 0, 0, 0}}, // (171, 98) + { 0, { 0, 0, 0}}, // (172, 98) + { 0, { 0, 0, 0}}, // (173, 98) + { 0, { 0, 0, 0}}, // (174, 98) + { 0, { 0, 0, 0}}, // (175, 98) + { 0, { 0, 0, 0}}, // (176, 98) + { 54, { 0, 0, 0}}, // (177, 98) + {128, { 0, 0, 0}}, // (178, 98) + {128, { 0, 0, 0}}, // (179, 98) + {128, { 0, 0, 0}}, // ( 0, 99) + {128, { 0, 0, 0}}, // ( 1, 99) + { 66, { 0, 0, 0}}, // ( 2, 99) + { 0, { 0, 0, 0}}, // ( 3, 99) + { 0, { 0, 0, 0}}, // ( 4, 99) + { 0, { 0, 0, 0}}, // ( 5, 99) + { 0, { 0, 0, 0}}, // ( 6, 99) + { 0, { 0, 0, 0}}, // ( 7, 99) + { 0, { 0, 0, 0}}, // ( 8, 99) + { 0, { 0, 0, 0}}, // ( 9, 99) + { 0, { 0, 0, 0}}, // ( 10, 99) + { 0, { 0, 0, 0}}, // ( 11, 99) + { 0, { 0, 0, 0}}, // ( 12, 99) + { 0, { 0, 0, 0}}, // ( 13, 99) + { 0, { 0, 0, 0}}, // ( 14, 99) + { 0, { 0, 0, 0}}, // ( 15, 99) + { 0, { 0, 0, 0}}, // ( 16, 99) + { 0, { 0, 0, 0}}, // ( 17, 99) + { 0, { 0, 0, 0}}, // ( 18, 99) + { 0, { 0, 0, 0}}, // ( 19, 99) + { 0, { 0, 0, 0}}, // ( 20, 99) + { 0, { 0, 0, 0}}, // ( 21, 99) + { 0, { 0, 0, 0}}, // ( 22, 99) + { 0, { 0, 0, 0}}, // ( 23, 99) + { 0, { 0, 0, 0}}, // ( 24, 99) + { 0, { 0, 0, 0}}, // ( 25, 99) + { 0, { 0, 0, 0}}, // ( 26, 99) + { 0, { 0, 0, 0}}, // ( 27, 99) + { 0, { 0, 0, 0}}, // ( 28, 99) + { 0, { 0, 0, 0}}, // ( 29, 99) + { 0, { 0, 0, 0}}, // ( 30, 99) + { 0, { 0, 0, 0}}, // ( 31, 99) + { 0, { 0, 0, 0}}, // ( 32, 99) + { 0, { 0, 0, 0}}, // ( 33, 99) + { 0, { 0, 0, 0}}, // ( 34, 99) + { 0, { 0, 0, 0}}, // ( 35, 99) + { 0, { 0, 0, 0}}, // ( 36, 99) + { 0, { 0, 0, 0}}, // ( 37, 99) + { 0, { 0, 0, 0}}, // ( 38, 99) + { 0, { 0, 0, 0}}, // ( 39, 99) + { 0, { 0, 0, 0}}, // ( 40, 99) + { 0, { 0, 0, 0}}, // ( 41, 99) + { 0, { 0, 0, 0}}, // ( 42, 99) + { 0, { 0, 0, 0}}, // ( 43, 99) + { 0, { 0, 0, 0}}, // ( 44, 99) + { 0, { 0, 0, 0}}, // ( 45, 99) + { 0, { 0, 0, 0}}, // ( 46, 99) + { 0, { 0, 0, 0}}, // ( 47, 99) + { 0, { 0, 0, 0}}, // ( 48, 99) + { 0, { 0, 0, 0}}, // ( 49, 99) + { 0, { 0, 0, 0}}, // ( 50, 99) + { 0, { 0, 0, 0}}, // ( 51, 99) + { 0, { 0, 0, 0}}, // ( 52, 99) + { 0, { 0, 0, 0}}, // ( 53, 99) + { 0, { 0, 0, 0}}, // ( 54, 99) + { 0, { 0, 0, 0}}, // ( 55, 99) + { 0, { 0, 0, 0}}, // ( 56, 99) + { 0, { 0, 0, 0}}, // ( 57, 99) + { 0, { 0, 0, 0}}, // ( 58, 99) + { 0, { 0, 0, 0}}, // ( 59, 99) + { 0, { 0, 0, 0}}, // ( 60, 99) + { 0, { 0, 0, 0}}, // ( 61, 99) + { 0, { 0, 0, 0}}, // ( 62, 99) + { 0, { 0, 0, 0}}, // ( 63, 99) + { 0, { 0, 0, 0}}, // ( 64, 99) + { 0, { 0, 0, 0}}, // ( 65, 99) + { 0, { 0, 0, 0}}, // ( 66, 99) + { 0, { 0, 0, 0}}, // ( 67, 99) + { 0, { 0, 0, 0}}, // ( 68, 99) + { 0, { 0, 0, 0}}, // ( 69, 99) + { 0, { 0, 0, 0}}, // ( 70, 99) + { 0, { 0, 0, 0}}, // ( 71, 99) + { 0, { 0, 0, 0}}, // ( 72, 99) + { 0, { 0, 0, 0}}, // ( 73, 99) + { 0, { 0, 0, 0}}, // ( 74, 99) + { 0, { 0, 0, 0}}, // ( 75, 99) + { 0, { 0, 0, 0}}, // ( 76, 99) + { 0, { 0, 0, 0}}, // ( 77, 99) + { 0, { 0, 0, 0}}, // ( 78, 99) + { 0, { 0, 0, 0}}, // ( 79, 99) + { 0, { 0, 0, 0}}, // ( 80, 99) + { 0, { 0, 0, 0}}, // ( 81, 99) + { 0, { 0, 0, 0}}, // ( 82, 99) + { 0, { 0, 0, 0}}, // ( 83, 99) + { 0, { 0, 0, 0}}, // ( 84, 99) + { 0, { 0, 0, 0}}, // ( 85, 99) + { 0, { 0, 0, 0}}, // ( 86, 99) + { 0, { 0, 0, 0}}, // ( 87, 99) + { 0, { 0, 0, 0}}, // ( 88, 99) + { 0, { 0, 0, 0}}, // ( 89, 99) + { 0, { 0, 0, 0}}, // ( 90, 99) + { 0, { 0, 0, 0}}, // ( 91, 99) + { 0, { 0, 0, 0}}, // ( 92, 99) + { 0, { 0, 0, 0}}, // ( 93, 99) + { 0, { 0, 0, 0}}, // ( 94, 99) + { 0, { 0, 0, 0}}, // ( 95, 99) + { 0, { 0, 0, 0}}, // ( 96, 99) + { 0, { 0, 0, 0}}, // ( 97, 99) + { 0, { 0, 0, 0}}, // ( 98, 99) + { 0, { 0, 0, 0}}, // ( 99, 99) + { 0, { 0, 0, 0}}, // (100, 99) + { 0, { 0, 0, 0}}, // (101, 99) + { 0, { 0, 0, 0}}, // (102, 99) + { 0, { 0, 0, 0}}, // (103, 99) + { 0, { 0, 0, 0}}, // (104, 99) + { 0, { 0, 0, 0}}, // (105, 99) + { 0, { 0, 0, 0}}, // (106, 99) + { 0, { 0, 0, 0}}, // (107, 99) + { 0, { 0, 0, 0}}, // (108, 99) + { 0, { 0, 0, 0}}, // (109, 99) + { 0, { 0, 0, 0}}, // (110, 99) + { 0, { 0, 0, 0}}, // (111, 99) + { 0, { 0, 0, 0}}, // (112, 99) + { 0, { 0, 0, 0}}, // (113, 99) + { 0, { 0, 0, 0}}, // (114, 99) + { 0, { 0, 0, 0}}, // (115, 99) + { 0, { 0, 0, 0}}, // (116, 99) + { 0, { 0, 0, 0}}, // (117, 99) + { 0, { 0, 0, 0}}, // (118, 99) + { 0, { 0, 0, 0}}, // (119, 99) + { 0, { 0, 0, 0}}, // (120, 99) + { 0, { 0, 0, 0}}, // (121, 99) + { 0, { 0, 0, 0}}, // (122, 99) + { 0, { 0, 0, 0}}, // (123, 99) + { 0, { 0, 0, 0}}, // (124, 99) + { 0, { 0, 0, 0}}, // (125, 99) + { 0, { 0, 0, 0}}, // (126, 99) + { 0, { 0, 0, 0}}, // (127, 99) + { 0, { 0, 0, 0}}, // (128, 99) + { 0, { 0, 0, 0}}, // (129, 99) + { 0, { 0, 0, 0}}, // (130, 99) + { 0, { 0, 0, 0}}, // (131, 99) + { 0, { 0, 0, 0}}, // (132, 99) + { 0, { 0, 0, 0}}, // (133, 99) + { 0, { 0, 0, 0}}, // (134, 99) + { 0, { 0, 0, 0}}, // (135, 99) + { 0, { 0, 0, 0}}, // (136, 99) + { 0, { 0, 0, 0}}, // (137, 99) + { 0, { 0, 0, 0}}, // (138, 99) + { 0, { 0, 0, 0}}, // (139, 99) + { 0, { 0, 0, 0}}, // (140, 99) + { 0, { 0, 0, 0}}, // (141, 99) + { 0, { 0, 0, 0}}, // (142, 99) + { 0, { 0, 0, 0}}, // (143, 99) + { 0, { 0, 0, 0}}, // (144, 99) + { 0, { 0, 0, 0}}, // (145, 99) + { 0, { 0, 0, 0}}, // (146, 99) + { 0, { 0, 0, 0}}, // (147, 99) + { 0, { 0, 0, 0}}, // (148, 99) + { 0, { 0, 0, 0}}, // (149, 99) + { 0, { 0, 0, 0}}, // (150, 99) + { 0, { 0, 0, 0}}, // (151, 99) + { 0, { 0, 0, 0}}, // (152, 99) + { 0, { 0, 0, 0}}, // (153, 99) + { 0, { 0, 0, 0}}, // (154, 99) + { 0, { 0, 0, 0}}, // (155, 99) + { 0, { 0, 0, 0}}, // (156, 99) + { 0, { 0, 0, 0}}, // (157, 99) + { 0, { 0, 0, 0}}, // (158, 99) + { 0, { 0, 0, 0}}, // (159, 99) + { 0, { 0, 0, 0}}, // (160, 99) + { 0, { 0, 0, 0}}, // (161, 99) + { 0, { 0, 0, 0}}, // (162, 99) + { 0, { 0, 0, 0}}, // (163, 99) + { 0, { 0, 0, 0}}, // (164, 99) + { 0, { 0, 0, 0}}, // (165, 99) + { 0, { 0, 0, 0}}, // (166, 99) + { 0, { 0, 0, 0}}, // (167, 99) + { 0, { 0, 0, 0}}, // (168, 99) + { 0, { 0, 0, 0}}, // (169, 99) + { 0, { 0, 0, 0}}, // (170, 99) + { 0, { 0, 0, 0}}, // (171, 99) + { 0, { 0, 0, 0}}, // (172, 99) + { 0, { 0, 0, 0}}, // (173, 99) + { 0, { 0, 0, 0}}, // (174, 99) + { 0, { 0, 0, 0}}, // (175, 99) + { 0, { 0, 0, 0}}, // (176, 99) + { 67, { 0, 0, 0}}, // (177, 99) + {128, { 0, 0, 0}}, // (178, 99) + {128, { 0, 0, 0}}, // (179, 99) + {128, { 0, 0, 0}}, // ( 0, 100) + {128, { 0, 0, 0}}, // ( 1, 100) + { 83, { 0, 0, 0}}, // ( 2, 100) + { 0, { 0, 0, 0}}, // ( 3, 100) + { 0, { 0, 0, 0}}, // ( 4, 100) + { 0, { 0, 0, 0}}, // ( 5, 100) + { 0, { 0, 0, 0}}, // ( 6, 100) + { 0, { 0, 0, 0}}, // ( 7, 100) + { 0, { 0, 0, 0}}, // ( 8, 100) + { 0, { 0, 0, 0}}, // ( 9, 100) + { 0, { 0, 0, 0}}, // ( 10, 100) + { 0, { 0, 0, 0}}, // ( 11, 100) + { 0, { 0, 0, 0}}, // ( 12, 100) + { 0, { 0, 0, 0}}, // ( 13, 100) + { 0, { 0, 0, 0}}, // ( 14, 100) + { 0, { 0, 0, 0}}, // ( 15, 100) + { 0, { 0, 0, 0}}, // ( 16, 100) + { 0, { 0, 0, 0}}, // ( 17, 100) + { 0, { 0, 0, 0}}, // ( 18, 100) + { 0, { 0, 0, 0}}, // ( 19, 100) + { 0, { 0, 0, 0}}, // ( 20, 100) + { 0, { 0, 0, 0}}, // ( 21, 100) + { 0, { 0, 0, 0}}, // ( 22, 100) + { 0, { 0, 0, 0}}, // ( 23, 100) + { 0, { 0, 0, 0}}, // ( 24, 100) + { 0, { 0, 0, 0}}, // ( 25, 100) + { 0, { 0, 0, 0}}, // ( 26, 100) + { 0, { 0, 0, 0}}, // ( 27, 100) + { 0, { 0, 0, 0}}, // ( 28, 100) + { 0, { 0, 0, 0}}, // ( 29, 100) + { 0, { 0, 0, 0}}, // ( 30, 100) + { 0, { 0, 0, 0}}, // ( 31, 100) + { 0, { 0, 0, 0}}, // ( 32, 100) + { 0, { 0, 0, 0}}, // ( 33, 100) + { 0, { 0, 0, 0}}, // ( 34, 100) + { 0, { 0, 0, 0}}, // ( 35, 100) + { 0, { 0, 0, 0}}, // ( 36, 100) + { 0, { 0, 0, 0}}, // ( 37, 100) + { 0, { 0, 0, 0}}, // ( 38, 100) + { 0, { 0, 0, 0}}, // ( 39, 100) + { 0, { 0, 0, 0}}, // ( 40, 100) + { 0, { 0, 0, 0}}, // ( 41, 100) + { 0, { 0, 0, 0}}, // ( 42, 100) + { 0, { 0, 0, 0}}, // ( 43, 100) + { 0, { 0, 0, 0}}, // ( 44, 100) + { 0, { 0, 0, 0}}, // ( 45, 100) + { 0, { 0, 0, 0}}, // ( 46, 100) + { 0, { 0, 0, 0}}, // ( 47, 100) + { 0, { 0, 0, 0}}, // ( 48, 100) + { 0, { 0, 0, 0}}, // ( 49, 100) + { 0, { 0, 0, 0}}, // ( 50, 100) + { 0, { 0, 0, 0}}, // ( 51, 100) + { 0, { 0, 0, 0}}, // ( 52, 100) + { 0, { 0, 0, 0}}, // ( 53, 100) + { 0, { 0, 0, 0}}, // ( 54, 100) + { 0, { 0, 0, 0}}, // ( 55, 100) + { 0, { 0, 0, 0}}, // ( 56, 100) + { 0, { 0, 0, 0}}, // ( 57, 100) + { 0, { 0, 0, 0}}, // ( 58, 100) + { 0, { 0, 0, 0}}, // ( 59, 100) + { 0, { 0, 0, 0}}, // ( 60, 100) + { 0, { 0, 0, 0}}, // ( 61, 100) + { 0, { 0, 0, 0}}, // ( 62, 100) + { 0, { 0, 0, 0}}, // ( 63, 100) + { 0, { 0, 0, 0}}, // ( 64, 100) + { 0, { 0, 0, 0}}, // ( 65, 100) + { 0, { 0, 0, 0}}, // ( 66, 100) + { 0, { 0, 0, 0}}, // ( 67, 100) + { 0, { 0, 0, 0}}, // ( 68, 100) + { 0, { 0, 0, 0}}, // ( 69, 100) + { 0, { 0, 0, 0}}, // ( 70, 100) + { 0, { 0, 0, 0}}, // ( 71, 100) + { 0, { 0, 0, 0}}, // ( 72, 100) + { 0, { 0, 0, 0}}, // ( 73, 100) + { 0, { 0, 0, 0}}, // ( 74, 100) + { 0, { 0, 0, 0}}, // ( 75, 100) + { 0, { 0, 0, 0}}, // ( 76, 100) + { 0, { 0, 0, 0}}, // ( 77, 100) + { 0, { 0, 0, 0}}, // ( 78, 100) + { 0, { 0, 0, 0}}, // ( 79, 100) + { 0, { 0, 0, 0}}, // ( 80, 100) + { 0, { 0, 0, 0}}, // ( 81, 100) + { 0, { 0, 0, 0}}, // ( 82, 100) + { 0, { 0, 0, 0}}, // ( 83, 100) + { 0, { 0, 0, 0}}, // ( 84, 100) + { 0, { 0, 0, 0}}, // ( 85, 100) + { 0, { 0, 0, 0}}, // ( 86, 100) + { 0, { 0, 0, 0}}, // ( 87, 100) + { 0, { 0, 0, 0}}, // ( 88, 100) + { 0, { 0, 0, 0}}, // ( 89, 100) + { 0, { 0, 0, 0}}, // ( 90, 100) + { 0, { 0, 0, 0}}, // ( 91, 100) + { 0, { 0, 0, 0}}, // ( 92, 100) + { 0, { 0, 0, 0}}, // ( 93, 100) + { 0, { 0, 0, 0}}, // ( 94, 100) + { 0, { 0, 0, 0}}, // ( 95, 100) + { 0, { 0, 0, 0}}, // ( 96, 100) + { 0, { 0, 0, 0}}, // ( 97, 100) + { 0, { 0, 0, 0}}, // ( 98, 100) + { 0, { 0, 0, 0}}, // ( 99, 100) + { 0, { 0, 0, 0}}, // (100, 100) + { 0, { 0, 0, 0}}, // (101, 100) + { 0, { 0, 0, 0}}, // (102, 100) + { 0, { 0, 0, 0}}, // (103, 100) + { 0, { 0, 0, 0}}, // (104, 100) + { 0, { 0, 0, 0}}, // (105, 100) + { 0, { 0, 0, 0}}, // (106, 100) + { 0, { 0, 0, 0}}, // (107, 100) + { 0, { 0, 0, 0}}, // (108, 100) + { 0, { 0, 0, 0}}, // (109, 100) + { 0, { 0, 0, 0}}, // (110, 100) + { 0, { 0, 0, 0}}, // (111, 100) + { 0, { 0, 0, 0}}, // (112, 100) + { 0, { 0, 0, 0}}, // (113, 100) + { 0, { 0, 0, 0}}, // (114, 100) + { 0, { 0, 0, 0}}, // (115, 100) + { 0, { 0, 0, 0}}, // (116, 100) + { 0, { 0, 0, 0}}, // (117, 100) + { 0, { 0, 0, 0}}, // (118, 100) + { 0, { 0, 0, 0}}, // (119, 100) + { 0, { 0, 0, 0}}, // (120, 100) + { 0, { 0, 0, 0}}, // (121, 100) + { 0, { 0, 0, 0}}, // (122, 100) + { 0, { 0, 0, 0}}, // (123, 100) + { 0, { 0, 0, 0}}, // (124, 100) + { 0, { 0, 0, 0}}, // (125, 100) + { 0, { 0, 0, 0}}, // (126, 100) + { 0, { 0, 0, 0}}, // (127, 100) + { 0, { 0, 0, 0}}, // (128, 100) + { 0, { 0, 0, 0}}, // (129, 100) + { 0, { 0, 0, 0}}, // (130, 100) + { 0, { 0, 0, 0}}, // (131, 100) + { 0, { 0, 0, 0}}, // (132, 100) + { 0, { 0, 0, 0}}, // (133, 100) + { 0, { 0, 0, 0}}, // (134, 100) + { 0, { 0, 0, 0}}, // (135, 100) + { 0, { 0, 0, 0}}, // (136, 100) + { 0, { 0, 0, 0}}, // (137, 100) + { 0, { 0, 0, 0}}, // (138, 100) + { 0, { 0, 0, 0}}, // (139, 100) + { 0, { 0, 0, 0}}, // (140, 100) + { 0, { 0, 0, 0}}, // (141, 100) + { 0, { 0, 0, 0}}, // (142, 100) + { 0, { 0, 0, 0}}, // (143, 100) + { 0, { 0, 0, 0}}, // (144, 100) + { 0, { 0, 0, 0}}, // (145, 100) + { 0, { 0, 0, 0}}, // (146, 100) + { 0, { 0, 0, 0}}, // (147, 100) + { 0, { 0, 0, 0}}, // (148, 100) + { 0, { 0, 0, 0}}, // (149, 100) + { 0, { 0, 0, 0}}, // (150, 100) + { 0, { 0, 0, 0}}, // (151, 100) + { 0, { 0, 0, 0}}, // (152, 100) + { 0, { 0, 0, 0}}, // (153, 100) + { 0, { 0, 0, 0}}, // (154, 100) + { 0, { 0, 0, 0}}, // (155, 100) + { 0, { 0, 0, 0}}, // (156, 100) + { 0, { 0, 0, 0}}, // (157, 100) + { 0, { 0, 0, 0}}, // (158, 100) + { 0, { 0, 0, 0}}, // (159, 100) + { 0, { 0, 0, 0}}, // (160, 100) + { 0, { 0, 0, 0}}, // (161, 100) + { 0, { 0, 0, 0}}, // (162, 100) + { 0, { 0, 0, 0}}, // (163, 100) + { 0, { 0, 0, 0}}, // (164, 100) + { 0, { 0, 0, 0}}, // (165, 100) + { 0, { 0, 0, 0}}, // (166, 100) + { 0, { 0, 0, 0}}, // (167, 100) + { 0, { 0, 0, 0}}, // (168, 100) + { 0, { 0, 0, 0}}, // (169, 100) + { 0, { 0, 0, 0}}, // (170, 100) + { 0, { 0, 0, 0}}, // (171, 100) + { 0, { 0, 0, 0}}, // (172, 100) + { 0, { 0, 0, 0}}, // (173, 100) + { 0, { 0, 0, 0}}, // (174, 100) + { 0, { 0, 0, 0}}, // (175, 100) + { 0, { 0, 0, 0}}, // (176, 100) + { 83, { 0, 0, 0}}, // (177, 100) + {128, { 0, 0, 0}}, // (178, 100) + {128, { 0, 0, 0}}, // (179, 100) + {128, { 0, 0, 0}}, // ( 0, 101) + {128, { 0, 0, 0}}, // ( 1, 101) + { 99, { 0, 0, 0}}, // ( 2, 101) + { 0, { 0, 0, 0}}, // ( 3, 101) + { 0, { 0, 0, 0}}, // ( 4, 101) + { 0, { 0, 0, 0}}, // ( 5, 101) + { 0, { 0, 0, 0}}, // ( 6, 101) + { 0, { 0, 0, 0}}, // ( 7, 101) + { 0, { 0, 0, 0}}, // ( 8, 101) + { 0, { 0, 0, 0}}, // ( 9, 101) + { 0, { 0, 0, 0}}, // ( 10, 101) + { 0, { 0, 0, 0}}, // ( 11, 101) + { 0, { 0, 0, 0}}, // ( 12, 101) + { 0, { 0, 0, 0}}, // ( 13, 101) + { 0, { 0, 0, 0}}, // ( 14, 101) + { 0, { 0, 0, 0}}, // ( 15, 101) + { 0, { 0, 0, 0}}, // ( 16, 101) + { 0, { 0, 0, 0}}, // ( 17, 101) + { 0, { 0, 0, 0}}, // ( 18, 101) + { 0, { 0, 0, 0}}, // ( 19, 101) + { 0, { 0, 0, 0}}, // ( 20, 101) + { 0, { 0, 0, 0}}, // ( 21, 101) + { 0, { 0, 0, 0}}, // ( 22, 101) + { 0, { 0, 0, 0}}, // ( 23, 101) + { 0, { 0, 0, 0}}, // ( 24, 101) + { 0, { 0, 0, 0}}, // ( 25, 101) + { 0, { 0, 0, 0}}, // ( 26, 101) + { 0, { 0, 0, 0}}, // ( 27, 101) + { 0, { 0, 0, 0}}, // ( 28, 101) + { 0, { 0, 0, 0}}, // ( 29, 101) + { 0, { 0, 0, 0}}, // ( 30, 101) + { 0, { 0, 0, 0}}, // ( 31, 101) + { 0, { 0, 0, 0}}, // ( 32, 101) + { 0, { 0, 0, 0}}, // ( 33, 101) + { 0, { 0, 0, 0}}, // ( 34, 101) + { 0, { 0, 0, 0}}, // ( 35, 101) + { 0, { 0, 0, 0}}, // ( 36, 101) + { 0, { 0, 0, 0}}, // ( 37, 101) + { 0, { 0, 0, 0}}, // ( 38, 101) + { 0, { 0, 0, 0}}, // ( 39, 101) + { 0, { 0, 0, 0}}, // ( 40, 101) + { 0, { 0, 0, 0}}, // ( 41, 101) + { 0, { 0, 0, 0}}, // ( 42, 101) + { 0, { 0, 0, 0}}, // ( 43, 101) + { 0, { 0, 0, 0}}, // ( 44, 101) + { 0, { 0, 0, 0}}, // ( 45, 101) + { 0, { 0, 0, 0}}, // ( 46, 101) + { 0, { 0, 0, 0}}, // ( 47, 101) + { 0, { 0, 0, 0}}, // ( 48, 101) + { 0, { 0, 0, 0}}, // ( 49, 101) + { 0, { 0, 0, 0}}, // ( 50, 101) + { 0, { 0, 0, 0}}, // ( 51, 101) + { 0, { 0, 0, 0}}, // ( 52, 101) + { 0, { 0, 0, 0}}, // ( 53, 101) + { 0, { 0, 0, 0}}, // ( 54, 101) + { 0, { 0, 0, 0}}, // ( 55, 101) + { 0, { 0, 0, 0}}, // ( 56, 101) + { 0, { 0, 0, 0}}, // ( 57, 101) + { 0, { 0, 0, 0}}, // ( 58, 101) + { 0, { 0, 0, 0}}, // ( 59, 101) + { 0, { 0, 0, 0}}, // ( 60, 101) + { 0, { 0, 0, 0}}, // ( 61, 101) + { 0, { 0, 0, 0}}, // ( 62, 101) + { 0, { 0, 0, 0}}, // ( 63, 101) + { 0, { 0, 0, 0}}, // ( 64, 101) + { 0, { 0, 0, 0}}, // ( 65, 101) + { 0, { 0, 0, 0}}, // ( 66, 101) + { 0, { 0, 0, 0}}, // ( 67, 101) + { 0, { 0, 0, 0}}, // ( 68, 101) + { 0, { 0, 0, 0}}, // ( 69, 101) + { 0, { 0, 0, 0}}, // ( 70, 101) + { 0, { 0, 0, 0}}, // ( 71, 101) + { 0, { 0, 0, 0}}, // ( 72, 101) + { 0, { 0, 0, 0}}, // ( 73, 101) + { 0, { 0, 0, 0}}, // ( 74, 101) + { 0, { 0, 0, 0}}, // ( 75, 101) + { 0, { 0, 0, 0}}, // ( 76, 101) + { 0, { 0, 0, 0}}, // ( 77, 101) + { 0, { 0, 0, 0}}, // ( 78, 101) + { 0, { 0, 0, 0}}, // ( 79, 101) + { 0, { 0, 0, 0}}, // ( 80, 101) + { 0, { 0, 0, 0}}, // ( 81, 101) + { 0, { 0, 0, 0}}, // ( 82, 101) + { 0, { 0, 0, 0}}, // ( 83, 101) + { 0, { 0, 0, 0}}, // ( 84, 101) + { 0, { 0, 0, 0}}, // ( 85, 101) + { 0, { 0, 0, 0}}, // ( 86, 101) + { 0, { 0, 0, 0}}, // ( 87, 101) + { 0, { 0, 0, 0}}, // ( 88, 101) + { 0, { 0, 0, 0}}, // ( 89, 101) + { 0, { 0, 0, 0}}, // ( 90, 101) + { 0, { 0, 0, 0}}, // ( 91, 101) + { 0, { 0, 0, 0}}, // ( 92, 101) + { 0, { 0, 0, 0}}, // ( 93, 101) + { 0, { 0, 0, 0}}, // ( 94, 101) + { 0, { 0, 0, 0}}, // ( 95, 101) + { 0, { 0, 0, 0}}, // ( 96, 101) + { 0, { 0, 0, 0}}, // ( 97, 101) + { 0, { 0, 0, 0}}, // ( 98, 101) + { 0, { 0, 0, 0}}, // ( 99, 101) + { 0, { 0, 0, 0}}, // (100, 101) + { 0, { 0, 0, 0}}, // (101, 101) + { 0, { 0, 0, 0}}, // (102, 101) + { 0, { 0, 0, 0}}, // (103, 101) + { 0, { 0, 0, 0}}, // (104, 101) + { 0, { 0, 0, 0}}, // (105, 101) + { 0, { 0, 0, 0}}, // (106, 101) + { 0, { 0, 0, 0}}, // (107, 101) + { 0, { 0, 0, 0}}, // (108, 101) + { 0, { 0, 0, 0}}, // (109, 101) + { 0, { 0, 0, 0}}, // (110, 101) + { 0, { 0, 0, 0}}, // (111, 101) + { 0, { 0, 0, 0}}, // (112, 101) + { 0, { 0, 0, 0}}, // (113, 101) + { 0, { 0, 0, 0}}, // (114, 101) + { 0, { 0, 0, 0}}, // (115, 101) + { 0, { 0, 0, 0}}, // (116, 101) + { 0, { 0, 0, 0}}, // (117, 101) + { 0, { 0, 0, 0}}, // (118, 101) + { 0, { 0, 0, 0}}, // (119, 101) + { 0, { 0, 0, 0}}, // (120, 101) + { 0, { 0, 0, 0}}, // (121, 101) + { 0, { 0, 0, 0}}, // (122, 101) + { 0, { 0, 0, 0}}, // (123, 101) + { 0, { 0, 0, 0}}, // (124, 101) + { 0, { 0, 0, 0}}, // (125, 101) + { 0, { 0, 0, 0}}, // (126, 101) + { 0, { 0, 0, 0}}, // (127, 101) + { 0, { 0, 0, 0}}, // (128, 101) + { 0, { 0, 0, 0}}, // (129, 101) + { 0, { 0, 0, 0}}, // (130, 101) + { 0, { 0, 0, 0}}, // (131, 101) + { 0, { 0, 0, 0}}, // (132, 101) + { 0, { 0, 0, 0}}, // (133, 101) + { 0, { 0, 0, 0}}, // (134, 101) + { 0, { 0, 0, 0}}, // (135, 101) + { 0, { 0, 0, 0}}, // (136, 101) + { 0, { 0, 0, 0}}, // (137, 101) + { 0, { 0, 0, 0}}, // (138, 101) + { 0, { 0, 0, 0}}, // (139, 101) + { 0, { 0, 0, 0}}, // (140, 101) + { 0, { 0, 0, 0}}, // (141, 101) + { 0, { 0, 0, 0}}, // (142, 101) + { 0, { 0, 0, 0}}, // (143, 101) + { 0, { 0, 0, 0}}, // (144, 101) + { 0, { 0, 0, 0}}, // (145, 101) + { 0, { 0, 0, 0}}, // (146, 101) + { 0, { 0, 0, 0}}, // (147, 101) + { 0, { 0, 0, 0}}, // (148, 101) + { 0, { 0, 0, 0}}, // (149, 101) + { 0, { 0, 0, 0}}, // (150, 101) + { 0, { 0, 0, 0}}, // (151, 101) + { 0, { 0, 0, 0}}, // (152, 101) + { 0, { 0, 0, 0}}, // (153, 101) + { 0, { 0, 0, 0}}, // (154, 101) + { 0, { 0, 0, 0}}, // (155, 101) + { 0, { 0, 0, 0}}, // (156, 101) + { 0, { 0, 0, 0}}, // (157, 101) + { 0, { 0, 0, 0}}, // (158, 101) + { 0, { 0, 0, 0}}, // (159, 101) + { 0, { 0, 0, 0}}, // (160, 101) + { 0, { 0, 0, 0}}, // (161, 101) + { 0, { 0, 0, 0}}, // (162, 101) + { 0, { 0, 0, 0}}, // (163, 101) + { 0, { 0, 0, 0}}, // (164, 101) + { 0, { 0, 0, 0}}, // (165, 101) + { 0, { 0, 0, 0}}, // (166, 101) + { 0, { 0, 0, 0}}, // (167, 101) + { 0, { 0, 0, 0}}, // (168, 101) + { 0, { 0, 0, 0}}, // (169, 101) + { 0, { 0, 0, 0}}, // (170, 101) + { 0, { 0, 0, 0}}, // (171, 101) + { 0, { 0, 0, 0}}, // (172, 101) + { 0, { 0, 0, 0}}, // (173, 101) + { 0, { 0, 0, 0}}, // (174, 101) + { 0, { 0, 0, 0}}, // (175, 101) + { 0, { 0, 0, 0}}, // (176, 101) + { 99, { 0, 0, 0}}, // (177, 101) + {128, { 0, 0, 0}}, // (178, 101) + {128, { 0, 0, 0}}, // (179, 101) + {128, { 0, 0, 0}}, // ( 0, 102) + {128, { 0, 0, 0}}, // ( 1, 102) + {115, { 0, 0, 0}}, // ( 2, 102) + { 0, { 0, 0, 0}}, // ( 3, 102) + { 0, { 0, 0, 0}}, // ( 4, 102) + { 0, { 0, 0, 0}}, // ( 5, 102) + { 0, { 0, 0, 0}}, // ( 6, 102) + { 0, { 0, 0, 0}}, // ( 7, 102) + { 0, { 0, 0, 0}}, // ( 8, 102) + { 0, { 0, 0, 0}}, // ( 9, 102) + { 0, { 0, 0, 0}}, // ( 10, 102) + { 0, { 0, 0, 0}}, // ( 11, 102) + { 0, { 0, 0, 0}}, // ( 12, 102) + { 0, { 0, 0, 0}}, // ( 13, 102) + { 0, { 0, 0, 0}}, // ( 14, 102) + { 0, { 0, 0, 0}}, // ( 15, 102) + { 0, { 0, 0, 0}}, // ( 16, 102) + { 0, { 0, 0, 0}}, // ( 17, 102) + { 0, { 0, 0, 0}}, // ( 18, 102) + { 0, { 0, 0, 0}}, // ( 19, 102) + { 0, { 0, 0, 0}}, // ( 20, 102) + { 0, { 0, 0, 0}}, // ( 21, 102) + { 0, { 0, 0, 0}}, // ( 22, 102) + { 0, { 0, 0, 0}}, // ( 23, 102) + { 0, { 0, 0, 0}}, // ( 24, 102) + { 0, { 0, 0, 0}}, // ( 25, 102) + { 0, { 0, 0, 0}}, // ( 26, 102) + { 0, { 0, 0, 0}}, // ( 27, 102) + { 0, { 0, 0, 0}}, // ( 28, 102) + { 0, { 0, 0, 0}}, // ( 29, 102) + { 0, { 0, 0, 0}}, // ( 30, 102) + { 0, { 0, 0, 0}}, // ( 31, 102) + { 0, { 0, 0, 0}}, // ( 32, 102) + { 0, { 0, 0, 0}}, // ( 33, 102) + { 0, { 0, 0, 0}}, // ( 34, 102) + { 0, { 0, 0, 0}}, // ( 35, 102) + { 0, { 0, 0, 0}}, // ( 36, 102) + { 0, { 0, 0, 0}}, // ( 37, 102) + { 0, { 0, 0, 0}}, // ( 38, 102) + { 0, { 0, 0, 0}}, // ( 39, 102) + { 0, { 0, 0, 0}}, // ( 40, 102) + { 0, { 0, 0, 0}}, // ( 41, 102) + { 0, { 0, 0, 0}}, // ( 42, 102) + { 0, { 0, 0, 0}}, // ( 43, 102) + { 0, { 0, 0, 0}}, // ( 44, 102) + { 0, { 0, 0, 0}}, // ( 45, 102) + { 0, { 0, 0, 0}}, // ( 46, 102) + { 0, { 0, 0, 0}}, // ( 47, 102) + { 0, { 0, 0, 0}}, // ( 48, 102) + { 0, { 0, 0, 0}}, // ( 49, 102) + { 0, { 0, 0, 0}}, // ( 50, 102) + { 0, { 0, 0, 0}}, // ( 51, 102) + { 0, { 0, 0, 0}}, // ( 52, 102) + { 0, { 0, 0, 0}}, // ( 53, 102) + { 0, { 0, 0, 0}}, // ( 54, 102) + { 0, { 0, 0, 0}}, // ( 55, 102) + { 0, { 0, 0, 0}}, // ( 56, 102) + { 0, { 0, 0, 0}}, // ( 57, 102) + { 0, { 0, 0, 0}}, // ( 58, 102) + { 0, { 0, 0, 0}}, // ( 59, 102) + { 0, { 0, 0, 0}}, // ( 60, 102) + { 0, { 0, 0, 0}}, // ( 61, 102) + { 0, { 0, 0, 0}}, // ( 62, 102) + { 0, { 0, 0, 0}}, // ( 63, 102) + { 0, { 0, 0, 0}}, // ( 64, 102) + { 0, { 0, 0, 0}}, // ( 65, 102) + { 0, { 0, 0, 0}}, // ( 66, 102) + { 0, { 0, 0, 0}}, // ( 67, 102) + { 0, { 0, 0, 0}}, // ( 68, 102) + { 0, { 0, 0, 0}}, // ( 69, 102) + { 0, { 0, 0, 0}}, // ( 70, 102) + { 0, { 0, 0, 0}}, // ( 71, 102) + { 0, { 0, 0, 0}}, // ( 72, 102) + { 0, { 0, 0, 0}}, // ( 73, 102) + { 0, { 0, 0, 0}}, // ( 74, 102) + { 0, { 0, 0, 0}}, // ( 75, 102) + { 0, { 0, 0, 0}}, // ( 76, 102) + { 0, { 0, 0, 0}}, // ( 77, 102) + { 0, { 0, 0, 0}}, // ( 78, 102) + { 0, { 0, 0, 0}}, // ( 79, 102) + { 0, { 0, 0, 0}}, // ( 80, 102) + { 0, { 0, 0, 0}}, // ( 81, 102) + { 0, { 0, 0, 0}}, // ( 82, 102) + { 0, { 0, 0, 0}}, // ( 83, 102) + { 0, { 0, 0, 0}}, // ( 84, 102) + { 0, { 0, 0, 0}}, // ( 85, 102) + { 0, { 0, 0, 0}}, // ( 86, 102) + { 0, { 0, 0, 0}}, // ( 87, 102) + { 0, { 0, 0, 0}}, // ( 88, 102) + { 0, { 0, 0, 0}}, // ( 89, 102) + { 0, { 0, 0, 0}}, // ( 90, 102) + { 0, { 0, 0, 0}}, // ( 91, 102) + { 0, { 0, 0, 0}}, // ( 92, 102) + { 0, { 0, 0, 0}}, // ( 93, 102) + { 0, { 0, 0, 0}}, // ( 94, 102) + { 0, { 0, 0, 0}}, // ( 95, 102) + { 0, { 0, 0, 0}}, // ( 96, 102) + { 0, { 0, 0, 0}}, // ( 97, 102) + { 0, { 0, 0, 0}}, // ( 98, 102) + { 0, { 0, 0, 0}}, // ( 99, 102) + { 0, { 0, 0, 0}}, // (100, 102) + { 0, { 0, 0, 0}}, // (101, 102) + { 0, { 0, 0, 0}}, // (102, 102) + { 0, { 0, 0, 0}}, // (103, 102) + { 0, { 0, 0, 0}}, // (104, 102) + { 0, { 0, 0, 0}}, // (105, 102) + { 0, { 0, 0, 0}}, // (106, 102) + { 0, { 0, 0, 0}}, // (107, 102) + { 0, { 0, 0, 0}}, // (108, 102) + { 0, { 0, 0, 0}}, // (109, 102) + { 0, { 0, 0, 0}}, // (110, 102) + { 0, { 0, 0, 0}}, // (111, 102) + { 0, { 0, 0, 0}}, // (112, 102) + { 0, { 0, 0, 0}}, // (113, 102) + { 0, { 0, 0, 0}}, // (114, 102) + { 0, { 0, 0, 0}}, // (115, 102) + { 0, { 0, 0, 0}}, // (116, 102) + { 0, { 0, 0, 0}}, // (117, 102) + { 0, { 0, 0, 0}}, // (118, 102) + { 0, { 0, 0, 0}}, // (119, 102) + { 0, { 0, 0, 0}}, // (120, 102) + { 0, { 0, 0, 0}}, // (121, 102) + { 0, { 0, 0, 0}}, // (122, 102) + { 0, { 0, 0, 0}}, // (123, 102) + { 0, { 0, 0, 0}}, // (124, 102) + { 0, { 0, 0, 0}}, // (125, 102) + { 0, { 0, 0, 0}}, // (126, 102) + { 0, { 0, 0, 0}}, // (127, 102) + { 0, { 0, 0, 0}}, // (128, 102) + { 0, { 0, 0, 0}}, // (129, 102) + { 0, { 0, 0, 0}}, // (130, 102) + { 0, { 0, 0, 0}}, // (131, 102) + { 0, { 0, 0, 0}}, // (132, 102) + { 0, { 0, 0, 0}}, // (133, 102) + { 0, { 0, 0, 0}}, // (134, 102) + { 0, { 0, 0, 0}}, // (135, 102) + { 0, { 0, 0, 0}}, // (136, 102) + { 0, { 0, 0, 0}}, // (137, 102) + { 0, { 0, 0, 0}}, // (138, 102) + { 0, { 0, 0, 0}}, // (139, 102) + { 0, { 0, 0, 0}}, // (140, 102) + { 0, { 0, 0, 0}}, // (141, 102) + { 0, { 0, 0, 0}}, // (142, 102) + { 0, { 0, 0, 0}}, // (143, 102) + { 0, { 0, 0, 0}}, // (144, 102) + { 0, { 0, 0, 0}}, // (145, 102) + { 0, { 0, 0, 0}}, // (146, 102) + { 0, { 0, 0, 0}}, // (147, 102) + { 0, { 0, 0, 0}}, // (148, 102) + { 0, { 0, 0, 0}}, // (149, 102) + { 0, { 0, 0, 0}}, // (150, 102) + { 0, { 0, 0, 0}}, // (151, 102) + { 0, { 0, 0, 0}}, // (152, 102) + { 0, { 0, 0, 0}}, // (153, 102) + { 0, { 0, 0, 0}}, // (154, 102) + { 0, { 0, 0, 0}}, // (155, 102) + { 0, { 0, 0, 0}}, // (156, 102) + { 0, { 0, 0, 0}}, // (157, 102) + { 0, { 0, 0, 0}}, // (158, 102) + { 0, { 0, 0, 0}}, // (159, 102) + { 0, { 0, 0, 0}}, // (160, 102) + { 0, { 0, 0, 0}}, // (161, 102) + { 0, { 0, 0, 0}}, // (162, 102) + { 0, { 0, 0, 0}}, // (163, 102) + { 0, { 0, 0, 0}}, // (164, 102) + { 0, { 0, 0, 0}}, // (165, 102) + { 0, { 0, 0, 0}}, // (166, 102) + { 0, { 0, 0, 0}}, // (167, 102) + { 0, { 0, 0, 0}}, // (168, 102) + { 0, { 0, 0, 0}}, // (169, 102) + { 0, { 0, 0, 0}}, // (170, 102) + { 0, { 0, 0, 0}}, // (171, 102) + { 0, { 0, 0, 0}}, // (172, 102) + { 0, { 0, 0, 0}}, // (173, 102) + { 0, { 0, 0, 0}}, // (174, 102) + { 0, { 0, 0, 0}}, // (175, 102) + { 0, { 0, 0, 0}}, // (176, 102) + {115, { 0, 0, 0}}, // (177, 102) + {128, { 0, 0, 0}}, // (178, 102) + {128, { 0, 0, 0}}, // (179, 102) + {128, { 0, 0, 0}}, // ( 0, 103) + {128, { 0, 0, 0}}, // ( 1, 103) + {127, { 0, 0, 0}}, // ( 2, 103) + { 6, { 0, 0, 0}}, // ( 3, 103) + { 0, { 0, 0, 0}}, // ( 4, 103) + { 0, { 0, 0, 0}}, // ( 5, 103) + { 0, { 0, 0, 0}}, // ( 6, 103) + { 0, { 0, 0, 0}}, // ( 7, 103) + { 0, { 0, 0, 0}}, // ( 8, 103) + { 0, { 0, 0, 0}}, // ( 9, 103) + { 0, { 0, 0, 0}}, // ( 10, 103) + { 0, { 0, 0, 0}}, // ( 11, 103) + { 0, { 0, 0, 0}}, // ( 12, 103) + { 0, { 0, 0, 0}}, // ( 13, 103) + { 0, { 0, 0, 0}}, // ( 14, 103) + { 0, { 0, 0, 0}}, // ( 15, 103) + { 0, { 0, 0, 0}}, // ( 16, 103) + { 0, { 0, 0, 0}}, // ( 17, 103) + { 0, { 0, 0, 0}}, // ( 18, 103) + { 0, { 0, 0, 0}}, // ( 19, 103) + { 0, { 0, 0, 0}}, // ( 20, 103) + { 0, { 0, 0, 0}}, // ( 21, 103) + { 0, { 0, 0, 0}}, // ( 22, 103) + { 0, { 0, 0, 0}}, // ( 23, 103) + { 0, { 0, 0, 0}}, // ( 24, 103) + { 0, { 0, 0, 0}}, // ( 25, 103) + { 0, { 0, 0, 0}}, // ( 26, 103) + { 0, { 0, 0, 0}}, // ( 27, 103) + { 0, { 0, 0, 0}}, // ( 28, 103) + { 0, { 0, 0, 0}}, // ( 29, 103) + { 0, { 0, 0, 0}}, // ( 30, 103) + { 0, { 0, 0, 0}}, // ( 31, 103) + { 0, { 0, 0, 0}}, // ( 32, 103) + { 0, { 0, 0, 0}}, // ( 33, 103) + { 0, { 0, 0, 0}}, // ( 34, 103) + { 0, { 0, 0, 0}}, // ( 35, 103) + { 0, { 0, 0, 0}}, // ( 36, 103) + { 0, { 0, 0, 0}}, // ( 37, 103) + { 0, { 0, 0, 0}}, // ( 38, 103) + { 0, { 0, 0, 0}}, // ( 39, 103) + { 0, { 0, 0, 0}}, // ( 40, 103) + { 0, { 0, 0, 0}}, // ( 41, 103) + { 0, { 0, 0, 0}}, // ( 42, 103) + { 0, { 0, 0, 0}}, // ( 43, 103) + { 0, { 0, 0, 0}}, // ( 44, 103) + { 0, { 0, 0, 0}}, // ( 45, 103) + { 0, { 0, 0, 0}}, // ( 46, 103) + { 0, { 0, 0, 0}}, // ( 47, 103) + { 0, { 0, 0, 0}}, // ( 48, 103) + { 0, { 0, 0, 0}}, // ( 49, 103) + { 0, { 0, 0, 0}}, // ( 50, 103) + { 0, { 0, 0, 0}}, // ( 51, 103) + { 0, { 0, 0, 0}}, // ( 52, 103) + { 0, { 0, 0, 0}}, // ( 53, 103) + { 0, { 0, 0, 0}}, // ( 54, 103) + { 0, { 0, 0, 0}}, // ( 55, 103) + { 0, { 0, 0, 0}}, // ( 56, 103) + { 0, { 0, 0, 0}}, // ( 57, 103) + { 0, { 0, 0, 0}}, // ( 58, 103) + { 0, { 0, 0, 0}}, // ( 59, 103) + { 0, { 0, 0, 0}}, // ( 60, 103) + { 0, { 0, 0, 0}}, // ( 61, 103) + { 0, { 0, 0, 0}}, // ( 62, 103) + { 0, { 0, 0, 0}}, // ( 63, 103) + { 0, { 0, 0, 0}}, // ( 64, 103) + { 0, { 0, 0, 0}}, // ( 65, 103) + { 0, { 0, 0, 0}}, // ( 66, 103) + { 0, { 0, 0, 0}}, // ( 67, 103) + { 0, { 0, 0, 0}}, // ( 68, 103) + { 0, { 0, 0, 0}}, // ( 69, 103) + { 0, { 0, 0, 0}}, // ( 70, 103) + { 0, { 0, 0, 0}}, // ( 71, 103) + { 0, { 0, 0, 0}}, // ( 72, 103) + { 0, { 0, 0, 0}}, // ( 73, 103) + { 0, { 0, 0, 0}}, // ( 74, 103) + { 0, { 0, 0, 0}}, // ( 75, 103) + { 0, { 0, 0, 0}}, // ( 76, 103) + { 0, { 0, 0, 0}}, // ( 77, 103) + { 0, { 0, 0, 0}}, // ( 78, 103) + { 0, { 0, 0, 0}}, // ( 79, 103) + { 0, { 0, 0, 0}}, // ( 80, 103) + { 0, { 0, 0, 0}}, // ( 81, 103) + { 0, { 0, 0, 0}}, // ( 82, 103) + { 0, { 0, 0, 0}}, // ( 83, 103) + { 0, { 0, 0, 0}}, // ( 84, 103) + { 0, { 0, 0, 0}}, // ( 85, 103) + { 0, { 0, 0, 0}}, // ( 86, 103) + { 0, { 0, 0, 0}}, // ( 87, 103) + { 0, { 0, 0, 0}}, // ( 88, 103) + { 0, { 0, 0, 0}}, // ( 89, 103) + { 0, { 0, 0, 0}}, // ( 90, 103) + { 0, { 0, 0, 0}}, // ( 91, 103) + { 0, { 0, 0, 0}}, // ( 92, 103) + { 0, { 0, 0, 0}}, // ( 93, 103) + { 0, { 0, 0, 0}}, // ( 94, 103) + { 0, { 0, 0, 0}}, // ( 95, 103) + { 0, { 0, 0, 0}}, // ( 96, 103) + { 0, { 0, 0, 0}}, // ( 97, 103) + { 0, { 0, 0, 0}}, // ( 98, 103) + { 0, { 0, 0, 0}}, // ( 99, 103) + { 0, { 0, 0, 0}}, // (100, 103) + { 0, { 0, 0, 0}}, // (101, 103) + { 0, { 0, 0, 0}}, // (102, 103) + { 0, { 0, 0, 0}}, // (103, 103) + { 0, { 0, 0, 0}}, // (104, 103) + { 0, { 0, 0, 0}}, // (105, 103) + { 0, { 0, 0, 0}}, // (106, 103) + { 0, { 0, 0, 0}}, // (107, 103) + { 0, { 0, 0, 0}}, // (108, 103) + { 0, { 0, 0, 0}}, // (109, 103) + { 0, { 0, 0, 0}}, // (110, 103) + { 0, { 0, 0, 0}}, // (111, 103) + { 0, { 0, 0, 0}}, // (112, 103) + { 0, { 0, 0, 0}}, // (113, 103) + { 0, { 0, 0, 0}}, // (114, 103) + { 0, { 0, 0, 0}}, // (115, 103) + { 0, { 0, 0, 0}}, // (116, 103) + { 0, { 0, 0, 0}}, // (117, 103) + { 0, { 0, 0, 0}}, // (118, 103) + { 0, { 0, 0, 0}}, // (119, 103) + { 0, { 0, 0, 0}}, // (120, 103) + { 0, { 0, 0, 0}}, // (121, 103) + { 0, { 0, 0, 0}}, // (122, 103) + { 0, { 0, 0, 0}}, // (123, 103) + { 0, { 0, 0, 0}}, // (124, 103) + { 0, { 0, 0, 0}}, // (125, 103) + { 0, { 0, 0, 0}}, // (126, 103) + { 0, { 0, 0, 0}}, // (127, 103) + { 0, { 0, 0, 0}}, // (128, 103) + { 0, { 0, 0, 0}}, // (129, 103) + { 0, { 0, 0, 0}}, // (130, 103) + { 0, { 0, 0, 0}}, // (131, 103) + { 0, { 0, 0, 0}}, // (132, 103) + { 0, { 0, 0, 0}}, // (133, 103) + { 0, { 0, 0, 0}}, // (134, 103) + { 0, { 0, 0, 0}}, // (135, 103) + { 0, { 0, 0, 0}}, // (136, 103) + { 0, { 0, 0, 0}}, // (137, 103) + { 0, { 0, 0, 0}}, // (138, 103) + { 0, { 0, 0, 0}}, // (139, 103) + { 0, { 0, 0, 0}}, // (140, 103) + { 0, { 0, 0, 0}}, // (141, 103) + { 0, { 0, 0, 0}}, // (142, 103) + { 0, { 0, 0, 0}}, // (143, 103) + { 0, { 0, 0, 0}}, // (144, 103) + { 0, { 0, 0, 0}}, // (145, 103) + { 0, { 0, 0, 0}}, // (146, 103) + { 0, { 0, 0, 0}}, // (147, 103) + { 0, { 0, 0, 0}}, // (148, 103) + { 0, { 0, 0, 0}}, // (149, 103) + { 0, { 0, 0, 0}}, // (150, 103) + { 0, { 0, 0, 0}}, // (151, 103) + { 0, { 0, 0, 0}}, // (152, 103) + { 0, { 0, 0, 0}}, // (153, 103) + { 0, { 0, 0, 0}}, // (154, 103) + { 0, { 0, 0, 0}}, // (155, 103) + { 0, { 0, 0, 0}}, // (156, 103) + { 0, { 0, 0, 0}}, // (157, 103) + { 0, { 0, 0, 0}}, // (158, 103) + { 0, { 0, 0, 0}}, // (159, 103) + { 0, { 0, 0, 0}}, // (160, 103) + { 0, { 0, 0, 0}}, // (161, 103) + { 0, { 0, 0, 0}}, // (162, 103) + { 0, { 0, 0, 0}}, // (163, 103) + { 0, { 0, 0, 0}}, // (164, 103) + { 0, { 0, 0, 0}}, // (165, 103) + { 0, { 0, 0, 0}}, // (166, 103) + { 0, { 0, 0, 0}}, // (167, 103) + { 0, { 0, 0, 0}}, // (168, 103) + { 0, { 0, 0, 0}}, // (169, 103) + { 0, { 0, 0, 0}}, // (170, 103) + { 0, { 0, 0, 0}}, // (171, 103) + { 0, { 0, 0, 0}}, // (172, 103) + { 0, { 0, 0, 0}}, // (173, 103) + { 0, { 0, 0, 0}}, // (174, 103) + { 0, { 0, 0, 0}}, // (175, 103) + { 5, { 0, 0, 0}}, // (176, 103) + {127, { 0, 0, 0}}, // (177, 103) + {128, { 0, 0, 0}}, // (178, 103) + {128, { 0, 0, 0}}, // (179, 103) + {128, { 0, 0, 0}}, // ( 0, 104) + {128, { 0, 0, 0}}, // ( 1, 104) + {128, { 0, 0, 0}}, // ( 2, 104) + { 27, { 0, 0, 0}}, // ( 3, 104) + { 0, { 0, 0, 0}}, // ( 4, 104) + { 0, { 0, 0, 0}}, // ( 5, 104) + { 0, { 0, 0, 0}}, // ( 6, 104) + { 0, { 0, 0, 0}}, // ( 7, 104) + { 0, { 0, 0, 0}}, // ( 8, 104) + { 0, { 0, 0, 0}}, // ( 9, 104) + { 0, { 0, 0, 0}}, // ( 10, 104) + { 0, { 0, 0, 0}}, // ( 11, 104) + { 0, { 0, 0, 0}}, // ( 12, 104) + { 0, { 0, 0, 0}}, // ( 13, 104) + { 0, { 0, 0, 0}}, // ( 14, 104) + { 0, { 0, 0, 0}}, // ( 15, 104) + { 0, { 0, 0, 0}}, // ( 16, 104) + { 0, { 0, 0, 0}}, // ( 17, 104) + { 0, { 0, 0, 0}}, // ( 18, 104) + { 0, { 0, 0, 0}}, // ( 19, 104) + { 0, { 0, 0, 0}}, // ( 20, 104) + { 0, { 0, 0, 0}}, // ( 21, 104) + { 0, { 0, 0, 0}}, // ( 22, 104) + { 0, { 0, 0, 0}}, // ( 23, 104) + { 0, { 0, 0, 0}}, // ( 24, 104) + { 0, { 0, 0, 0}}, // ( 25, 104) + { 0, { 0, 0, 0}}, // ( 26, 104) + { 0, { 0, 0, 0}}, // ( 27, 104) + { 0, { 0, 0, 0}}, // ( 28, 104) + { 0, { 0, 0, 0}}, // ( 29, 104) + { 0, { 0, 0, 0}}, // ( 30, 104) + { 0, { 0, 0, 0}}, // ( 31, 104) + { 0, { 0, 0, 0}}, // ( 32, 104) + { 0, { 0, 0, 0}}, // ( 33, 104) + { 0, { 0, 0, 0}}, // ( 34, 104) + { 0, { 0, 0, 0}}, // ( 35, 104) + { 0, { 0, 0, 0}}, // ( 36, 104) + { 0, { 0, 0, 0}}, // ( 37, 104) + { 0, { 0, 0, 0}}, // ( 38, 104) + { 0, { 0, 0, 0}}, // ( 39, 104) + { 0, { 0, 0, 0}}, // ( 40, 104) + { 0, { 0, 0, 0}}, // ( 41, 104) + { 0, { 0, 0, 0}}, // ( 42, 104) + { 0, { 0, 0, 0}}, // ( 43, 104) + { 0, { 0, 0, 0}}, // ( 44, 104) + { 0, { 0, 0, 0}}, // ( 45, 104) + { 0, { 0, 0, 0}}, // ( 46, 104) + { 0, { 0, 0, 0}}, // ( 47, 104) + { 0, { 0, 0, 0}}, // ( 48, 104) + { 0, { 0, 0, 0}}, // ( 49, 104) + { 0, { 0, 0, 0}}, // ( 50, 104) + { 0, { 0, 0, 0}}, // ( 51, 104) + { 0, { 0, 0, 0}}, // ( 52, 104) + { 0, { 0, 0, 0}}, // ( 53, 104) + { 0, { 0, 0, 0}}, // ( 54, 104) + { 0, { 0, 0, 0}}, // ( 55, 104) + { 0, { 0, 0, 0}}, // ( 56, 104) + { 0, { 0, 0, 0}}, // ( 57, 104) + { 0, { 0, 0, 0}}, // ( 58, 104) + { 0, { 0, 0, 0}}, // ( 59, 104) + { 0, { 0, 0, 0}}, // ( 60, 104) + { 0, { 0, 0, 0}}, // ( 61, 104) + { 0, { 0, 0, 0}}, // ( 62, 104) + { 0, { 0, 0, 0}}, // ( 63, 104) + { 0, { 0, 0, 0}}, // ( 64, 104) + { 0, { 0, 0, 0}}, // ( 65, 104) + { 0, { 0, 0, 0}}, // ( 66, 104) + { 0, { 0, 0, 0}}, // ( 67, 104) + { 0, { 0, 0, 0}}, // ( 68, 104) + { 0, { 0, 0, 0}}, // ( 69, 104) + { 0, { 0, 0, 0}}, // ( 70, 104) + { 0, { 0, 0, 0}}, // ( 71, 104) + { 0, { 0, 0, 0}}, // ( 72, 104) + { 0, { 0, 0, 0}}, // ( 73, 104) + { 0, { 0, 0, 0}}, // ( 74, 104) + { 0, { 0, 0, 0}}, // ( 75, 104) + { 0, { 0, 0, 0}}, // ( 76, 104) + { 0, { 0, 0, 0}}, // ( 77, 104) + { 0, { 0, 0, 0}}, // ( 78, 104) + { 0, { 0, 0, 0}}, // ( 79, 104) + { 0, { 0, 0, 0}}, // ( 80, 104) + { 0, { 0, 0, 0}}, // ( 81, 104) + { 0, { 0, 0, 0}}, // ( 82, 104) + { 0, { 0, 0, 0}}, // ( 83, 104) + { 0, { 0, 0, 0}}, // ( 84, 104) + { 0, { 0, 0, 0}}, // ( 85, 104) + { 0, { 0, 0, 0}}, // ( 86, 104) + { 0, { 0, 0, 0}}, // ( 87, 104) + { 0, { 0, 0, 0}}, // ( 88, 104) + { 0, { 0, 0, 0}}, // ( 89, 104) + { 0, { 0, 0, 0}}, // ( 90, 104) + { 0, { 0, 0, 0}}, // ( 91, 104) + { 0, { 0, 0, 0}}, // ( 92, 104) + { 0, { 0, 0, 0}}, // ( 93, 104) + { 0, { 0, 0, 0}}, // ( 94, 104) + { 0, { 0, 0, 0}}, // ( 95, 104) + { 0, { 0, 0, 0}}, // ( 96, 104) + { 0, { 0, 0, 0}}, // ( 97, 104) + { 0, { 0, 0, 0}}, // ( 98, 104) + { 0, { 0, 0, 0}}, // ( 99, 104) + { 0, { 0, 0, 0}}, // (100, 104) + { 0, { 0, 0, 0}}, // (101, 104) + { 0, { 0, 0, 0}}, // (102, 104) + { 0, { 0, 0, 0}}, // (103, 104) + { 0, { 0, 0, 0}}, // (104, 104) + { 0, { 0, 0, 0}}, // (105, 104) + { 0, { 0, 0, 0}}, // (106, 104) + { 0, { 0, 0, 0}}, // (107, 104) + { 0, { 0, 0, 0}}, // (108, 104) + { 0, { 0, 0, 0}}, // (109, 104) + { 0, { 0, 0, 0}}, // (110, 104) + { 0, { 0, 0, 0}}, // (111, 104) + { 0, { 0, 0, 0}}, // (112, 104) + { 0, { 0, 0, 0}}, // (113, 104) + { 0, { 0, 0, 0}}, // (114, 104) + { 0, { 0, 0, 0}}, // (115, 104) + { 0, { 0, 0, 0}}, // (116, 104) + { 0, { 0, 0, 0}}, // (117, 104) + { 0, { 0, 0, 0}}, // (118, 104) + { 0, { 0, 0, 0}}, // (119, 104) + { 0, { 0, 0, 0}}, // (120, 104) + { 0, { 0, 0, 0}}, // (121, 104) + { 0, { 0, 0, 0}}, // (122, 104) + { 0, { 0, 0, 0}}, // (123, 104) + { 0, { 0, 0, 0}}, // (124, 104) + { 0, { 0, 0, 0}}, // (125, 104) + { 0, { 0, 0, 0}}, // (126, 104) + { 0, { 0, 0, 0}}, // (127, 104) + { 0, { 0, 0, 0}}, // (128, 104) + { 0, { 0, 0, 0}}, // (129, 104) + { 0, { 0, 0, 0}}, // (130, 104) + { 0, { 0, 0, 0}}, // (131, 104) + { 0, { 0, 0, 0}}, // (132, 104) + { 0, { 0, 0, 0}}, // (133, 104) + { 0, { 0, 0, 0}}, // (134, 104) + { 0, { 0, 0, 0}}, // (135, 104) + { 0, { 0, 0, 0}}, // (136, 104) + { 0, { 0, 0, 0}}, // (137, 104) + { 0, { 0, 0, 0}}, // (138, 104) + { 0, { 0, 0, 0}}, // (139, 104) + { 0, { 0, 0, 0}}, // (140, 104) + { 0, { 0, 0, 0}}, // (141, 104) + { 0, { 0, 0, 0}}, // (142, 104) + { 0, { 0, 0, 0}}, // (143, 104) + { 0, { 0, 0, 0}}, // (144, 104) + { 0, { 0, 0, 0}}, // (145, 104) + { 0, { 0, 0, 0}}, // (146, 104) + { 0, { 0, 0, 0}}, // (147, 104) + { 0, { 0, 0, 0}}, // (148, 104) + { 0, { 0, 0, 0}}, // (149, 104) + { 0, { 0, 0, 0}}, // (150, 104) + { 0, { 0, 0, 0}}, // (151, 104) + { 0, { 0, 0, 0}}, // (152, 104) + { 0, { 0, 0, 0}}, // (153, 104) + { 0, { 0, 0, 0}}, // (154, 104) + { 0, { 0, 0, 0}}, // (155, 104) + { 0, { 0, 0, 0}}, // (156, 104) + { 0, { 0, 0, 0}}, // (157, 104) + { 0, { 0, 0, 0}}, // (158, 104) + { 0, { 0, 0, 0}}, // (159, 104) + { 0, { 0, 0, 0}}, // (160, 104) + { 0, { 0, 0, 0}}, // (161, 104) + { 0, { 0, 0, 0}}, // (162, 104) + { 0, { 0, 0, 0}}, // (163, 104) + { 0, { 0, 0, 0}}, // (164, 104) + { 0, { 0, 0, 0}}, // (165, 104) + { 0, { 0, 0, 0}}, // (166, 104) + { 0, { 0, 0, 0}}, // (167, 104) + { 0, { 0, 0, 0}}, // (168, 104) + { 0, { 0, 0, 0}}, // (169, 104) + { 0, { 0, 0, 0}}, // (170, 104) + { 0, { 0, 0, 0}}, // (171, 104) + { 0, { 0, 0, 0}}, // (172, 104) + { 0, { 0, 0, 0}}, // (173, 104) + { 0, { 0, 0, 0}}, // (174, 104) + { 0, { 0, 0, 0}}, // (175, 104) + { 25, { 0, 0, 0}}, // (176, 104) + {128, { 0, 0, 0}}, // (177, 104) + {128, { 0, 0, 0}}, // (178, 104) + {128, { 0, 0, 0}}, // (179, 104) + {128, { 0, 0, 0}}, // ( 0, 105) + {128, { 0, 0, 0}}, // ( 1, 105) + {128, { 0, 0, 0}}, // ( 2, 105) + { 50, { 0, 0, 0}}, // ( 3, 105) + { 0, { 0, 0, 0}}, // ( 4, 105) + { 0, { 0, 0, 0}}, // ( 5, 105) + { 0, { 0, 0, 0}}, // ( 6, 105) + { 0, { 0, 0, 0}}, // ( 7, 105) + { 0, { 0, 0, 0}}, // ( 8, 105) + { 0, { 0, 0, 0}}, // ( 9, 105) + { 0, { 0, 0, 0}}, // ( 10, 105) + { 0, { 0, 0, 0}}, // ( 11, 105) + { 0, { 0, 0, 0}}, // ( 12, 105) + { 0, { 0, 0, 0}}, // ( 13, 105) + { 0, { 0, 0, 0}}, // ( 14, 105) + { 0, { 0, 0, 0}}, // ( 15, 105) + { 0, { 0, 0, 0}}, // ( 16, 105) + { 0, { 0, 0, 0}}, // ( 17, 105) + { 0, { 0, 0, 0}}, // ( 18, 105) + { 0, { 0, 0, 0}}, // ( 19, 105) + { 0, { 0, 0, 0}}, // ( 20, 105) + { 0, { 0, 0, 0}}, // ( 21, 105) + { 0, { 0, 0, 0}}, // ( 22, 105) + { 0, { 0, 0, 0}}, // ( 23, 105) + { 0, { 0, 0, 0}}, // ( 24, 105) + { 0, { 0, 0, 0}}, // ( 25, 105) + { 0, { 0, 0, 0}}, // ( 26, 105) + { 0, { 0, 0, 0}}, // ( 27, 105) + { 0, { 0, 0, 0}}, // ( 28, 105) + { 0, { 0, 0, 0}}, // ( 29, 105) + { 0, { 0, 0, 0}}, // ( 30, 105) + { 0, { 0, 0, 0}}, // ( 31, 105) + { 0, { 0, 0, 0}}, // ( 32, 105) + { 0, { 0, 0, 0}}, // ( 33, 105) + { 0, { 0, 0, 0}}, // ( 34, 105) + { 0, { 0, 0, 0}}, // ( 35, 105) + { 0, { 0, 0, 0}}, // ( 36, 105) + { 0, { 0, 0, 0}}, // ( 37, 105) + { 0, { 0, 0, 0}}, // ( 38, 105) + { 0, { 0, 0, 0}}, // ( 39, 105) + { 0, { 0, 0, 0}}, // ( 40, 105) + { 0, { 0, 0, 0}}, // ( 41, 105) + { 0, { 0, 0, 0}}, // ( 42, 105) + { 0, { 0, 0, 0}}, // ( 43, 105) + { 0, { 0, 0, 0}}, // ( 44, 105) + { 0, { 0, 0, 0}}, // ( 45, 105) + { 0, { 0, 0, 0}}, // ( 46, 105) + { 0, { 0, 0, 0}}, // ( 47, 105) + { 0, { 0, 0, 0}}, // ( 48, 105) + { 0, { 0, 0, 0}}, // ( 49, 105) + { 0, { 0, 0, 0}}, // ( 50, 105) + { 0, { 0, 0, 0}}, // ( 51, 105) + { 0, { 0, 0, 0}}, // ( 52, 105) + { 0, { 0, 0, 0}}, // ( 53, 105) + { 0, { 0, 0, 0}}, // ( 54, 105) + { 0, { 0, 0, 0}}, // ( 55, 105) + { 0, { 0, 0, 0}}, // ( 56, 105) + { 0, { 0, 0, 0}}, // ( 57, 105) + { 0, { 0, 0, 0}}, // ( 58, 105) + { 0, { 0, 0, 0}}, // ( 59, 105) + { 0, { 0, 0, 0}}, // ( 60, 105) + { 0, { 0, 0, 0}}, // ( 61, 105) + { 0, { 0, 0, 0}}, // ( 62, 105) + { 0, { 0, 0, 0}}, // ( 63, 105) + { 0, { 0, 0, 0}}, // ( 64, 105) + { 0, { 0, 0, 0}}, // ( 65, 105) + { 0, { 0, 0, 0}}, // ( 66, 105) + { 0, { 0, 0, 0}}, // ( 67, 105) + { 0, { 0, 0, 0}}, // ( 68, 105) + { 0, { 0, 0, 0}}, // ( 69, 105) + { 0, { 0, 0, 0}}, // ( 70, 105) + { 0, { 0, 0, 0}}, // ( 71, 105) + { 0, { 0, 0, 0}}, // ( 72, 105) + { 0, { 0, 0, 0}}, // ( 73, 105) + { 0, { 0, 0, 0}}, // ( 74, 105) + { 0, { 0, 0, 0}}, // ( 75, 105) + { 0, { 0, 0, 0}}, // ( 76, 105) + { 0, { 0, 0, 0}}, // ( 77, 105) + { 0, { 0, 0, 0}}, // ( 78, 105) + { 0, { 0, 0, 0}}, // ( 79, 105) + { 0, { 0, 0, 0}}, // ( 80, 105) + { 0, { 0, 0, 0}}, // ( 81, 105) + { 0, { 0, 0, 0}}, // ( 82, 105) + { 0, { 0, 0, 0}}, // ( 83, 105) + { 0, { 0, 0, 0}}, // ( 84, 105) + { 0, { 0, 0, 0}}, // ( 85, 105) + { 0, { 0, 0, 0}}, // ( 86, 105) + { 0, { 0, 0, 0}}, // ( 87, 105) + { 0, { 0, 0, 0}}, // ( 88, 105) + { 0, { 0, 0, 0}}, // ( 89, 105) + { 0, { 0, 0, 0}}, // ( 90, 105) + { 0, { 0, 0, 0}}, // ( 91, 105) + { 0, { 0, 0, 0}}, // ( 92, 105) + { 0, { 0, 0, 0}}, // ( 93, 105) + { 0, { 0, 0, 0}}, // ( 94, 105) + { 0, { 0, 0, 0}}, // ( 95, 105) + { 0, { 0, 0, 0}}, // ( 96, 105) + { 0, { 0, 0, 0}}, // ( 97, 105) + { 0, { 0, 0, 0}}, // ( 98, 105) + { 0, { 0, 0, 0}}, // ( 99, 105) + { 0, { 0, 0, 0}}, // (100, 105) + { 0, { 0, 0, 0}}, // (101, 105) + { 0, { 0, 0, 0}}, // (102, 105) + { 0, { 0, 0, 0}}, // (103, 105) + { 0, { 0, 0, 0}}, // (104, 105) + { 0, { 0, 0, 0}}, // (105, 105) + { 0, { 0, 0, 0}}, // (106, 105) + { 0, { 0, 0, 0}}, // (107, 105) + { 0, { 0, 0, 0}}, // (108, 105) + { 0, { 0, 0, 0}}, // (109, 105) + { 0, { 0, 0, 0}}, // (110, 105) + { 0, { 0, 0, 0}}, // (111, 105) + { 0, { 0, 0, 0}}, // (112, 105) + { 0, { 0, 0, 0}}, // (113, 105) + { 0, { 0, 0, 0}}, // (114, 105) + { 0, { 0, 0, 0}}, // (115, 105) + { 0, { 0, 0, 0}}, // (116, 105) + { 0, { 0, 0, 0}}, // (117, 105) + { 0, { 0, 0, 0}}, // (118, 105) + { 0, { 0, 0, 0}}, // (119, 105) + { 0, { 0, 0, 0}}, // (120, 105) + { 0, { 0, 0, 0}}, // (121, 105) + { 0, { 0, 0, 0}}, // (122, 105) + { 0, { 0, 0, 0}}, // (123, 105) + { 0, { 0, 0, 0}}, // (124, 105) + { 0, { 0, 0, 0}}, // (125, 105) + { 0, { 0, 0, 0}}, // (126, 105) + { 0, { 0, 0, 0}}, // (127, 105) + { 0, { 0, 0, 0}}, // (128, 105) + { 0, { 0, 0, 0}}, // (129, 105) + { 0, { 0, 0, 0}}, // (130, 105) + { 0, { 0, 0, 0}}, // (131, 105) + { 0, { 0, 0, 0}}, // (132, 105) + { 0, { 0, 0, 0}}, // (133, 105) + { 0, { 0, 0, 0}}, // (134, 105) + { 0, { 0, 0, 0}}, // (135, 105) + { 0, { 0, 0, 0}}, // (136, 105) + { 0, { 0, 0, 0}}, // (137, 105) + { 0, { 0, 0, 0}}, // (138, 105) + { 0, { 0, 0, 0}}, // (139, 105) + { 0, { 0, 0, 0}}, // (140, 105) + { 0, { 0, 0, 0}}, // (141, 105) + { 0, { 0, 0, 0}}, // (142, 105) + { 0, { 0, 0, 0}}, // (143, 105) + { 0, { 0, 0, 0}}, // (144, 105) + { 0, { 0, 0, 0}}, // (145, 105) + { 0, { 0, 0, 0}}, // (146, 105) + { 0, { 0, 0, 0}}, // (147, 105) + { 0, { 0, 0, 0}}, // (148, 105) + { 0, { 0, 0, 0}}, // (149, 105) + { 0, { 0, 0, 0}}, // (150, 105) + { 0, { 0, 0, 0}}, // (151, 105) + { 0, { 0, 0, 0}}, // (152, 105) + { 0, { 0, 0, 0}}, // (153, 105) + { 0, { 0, 0, 0}}, // (154, 105) + { 0, { 0, 0, 0}}, // (155, 105) + { 0, { 0, 0, 0}}, // (156, 105) + { 0, { 0, 0, 0}}, // (157, 105) + { 0, { 0, 0, 0}}, // (158, 105) + { 0, { 0, 0, 0}}, // (159, 105) + { 0, { 0, 0, 0}}, // (160, 105) + { 0, { 0, 0, 0}}, // (161, 105) + { 0, { 0, 0, 0}}, // (162, 105) + { 0, { 0, 0, 0}}, // (163, 105) + { 0, { 0, 0, 0}}, // (164, 105) + { 0, { 0, 0, 0}}, // (165, 105) + { 0, { 0, 0, 0}}, // (166, 105) + { 0, { 0, 0, 0}}, // (167, 105) + { 0, { 0, 0, 0}}, // (168, 105) + { 0, { 0, 0, 0}}, // (169, 105) + { 0, { 0, 0, 0}}, // (170, 105) + { 0, { 0, 0, 0}}, // (171, 105) + { 0, { 0, 0, 0}}, // (172, 105) + { 0, { 0, 0, 0}}, // (173, 105) + { 0, { 0, 0, 0}}, // (174, 105) + { 0, { 0, 0, 0}}, // (175, 105) + { 47, { 0, 0, 0}}, // (176, 105) + {128, { 0, 0, 0}}, // (177, 105) + {128, { 0, 0, 0}}, // (178, 105) + {128, { 0, 0, 0}}, // (179, 105) + {128, { 0, 0, 0}}, // ( 0, 106) + {128, { 0, 0, 0}}, // ( 1, 106) + {128, { 0, 0, 0}}, // ( 2, 106) + { 72, { 0, 0, 0}}, // ( 3, 106) + { 0, { 0, 0, 0}}, // ( 4, 106) + { 0, { 0, 0, 0}}, // ( 5, 106) + { 0, { 0, 0, 0}}, // ( 6, 106) + { 0, { 0, 0, 0}}, // ( 7, 106) + { 0, { 0, 0, 0}}, // ( 8, 106) + { 0, { 0, 0, 0}}, // ( 9, 106) + { 0, { 0, 0, 0}}, // ( 10, 106) + { 0, { 0, 0, 0}}, // ( 11, 106) + { 0, { 0, 0, 0}}, // ( 12, 106) + { 0, { 0, 0, 0}}, // ( 13, 106) + { 0, { 0, 0, 0}}, // ( 14, 106) + { 0, { 0, 0, 0}}, // ( 15, 106) + { 0, { 0, 0, 0}}, // ( 16, 106) + { 0, { 0, 0, 0}}, // ( 17, 106) + { 0, { 0, 0, 0}}, // ( 18, 106) + { 0, { 0, 0, 0}}, // ( 19, 106) + { 0, { 0, 0, 0}}, // ( 20, 106) + { 0, { 0, 0, 0}}, // ( 21, 106) + { 0, { 0, 0, 0}}, // ( 22, 106) + { 0, { 0, 0, 0}}, // ( 23, 106) + { 0, { 0, 0, 0}}, // ( 24, 106) + { 0, { 0, 0, 0}}, // ( 25, 106) + { 0, { 0, 0, 0}}, // ( 26, 106) + { 0, { 0, 0, 0}}, // ( 27, 106) + { 0, { 0, 0, 0}}, // ( 28, 106) + { 0, { 0, 0, 0}}, // ( 29, 106) + { 0, { 0, 0, 0}}, // ( 30, 106) + { 0, { 0, 0, 0}}, // ( 31, 106) + { 0, { 0, 0, 0}}, // ( 32, 106) + { 0, { 0, 0, 0}}, // ( 33, 106) + { 0, { 0, 0, 0}}, // ( 34, 106) + { 0, { 0, 0, 0}}, // ( 35, 106) + { 0, { 0, 0, 0}}, // ( 36, 106) + { 0, { 0, 0, 0}}, // ( 37, 106) + { 0, { 0, 0, 0}}, // ( 38, 106) + { 0, { 0, 0, 0}}, // ( 39, 106) + { 0, { 0, 0, 0}}, // ( 40, 106) + { 0, { 0, 0, 0}}, // ( 41, 106) + { 0, { 0, 0, 0}}, // ( 42, 106) + { 0, { 0, 0, 0}}, // ( 43, 106) + { 0, { 0, 0, 0}}, // ( 44, 106) + { 0, { 0, 0, 0}}, // ( 45, 106) + { 0, { 0, 0, 0}}, // ( 46, 106) + { 0, { 0, 0, 0}}, // ( 47, 106) + { 0, { 0, 0, 0}}, // ( 48, 106) + { 0, { 0, 0, 0}}, // ( 49, 106) + { 0, { 0, 0, 0}}, // ( 50, 106) + { 0, { 0, 0, 0}}, // ( 51, 106) + { 0, { 0, 0, 0}}, // ( 52, 106) + { 0, { 0, 0, 0}}, // ( 53, 106) + { 0, { 0, 0, 0}}, // ( 54, 106) + { 0, { 0, 0, 0}}, // ( 55, 106) + { 0, { 0, 0, 0}}, // ( 56, 106) + { 0, { 0, 0, 0}}, // ( 57, 106) + { 0, { 0, 0, 0}}, // ( 58, 106) + { 0, { 0, 0, 0}}, // ( 59, 106) + { 0, { 0, 0, 0}}, // ( 60, 106) + { 0, { 0, 0, 0}}, // ( 61, 106) + { 0, { 0, 0, 0}}, // ( 62, 106) + { 0, { 0, 0, 0}}, // ( 63, 106) + { 0, { 0, 0, 0}}, // ( 64, 106) + { 0, { 0, 0, 0}}, // ( 65, 106) + { 0, { 0, 0, 0}}, // ( 66, 106) + { 0, { 0, 0, 0}}, // ( 67, 106) + { 0, { 0, 0, 0}}, // ( 68, 106) + { 0, { 0, 0, 0}}, // ( 69, 106) + { 0, { 0, 0, 0}}, // ( 70, 106) + { 0, { 0, 0, 0}}, // ( 71, 106) + { 0, { 0, 0, 0}}, // ( 72, 106) + { 0, { 0, 0, 0}}, // ( 73, 106) + { 0, { 0, 0, 0}}, // ( 74, 106) + { 0, { 0, 0, 0}}, // ( 75, 106) + { 0, { 0, 0, 0}}, // ( 76, 106) + { 0, { 0, 0, 0}}, // ( 77, 106) + { 0, { 0, 0, 0}}, // ( 78, 106) + { 0, { 0, 0, 0}}, // ( 79, 106) + { 0, { 0, 0, 0}}, // ( 80, 106) + { 0, { 0, 0, 0}}, // ( 81, 106) + { 0, { 0, 0, 0}}, // ( 82, 106) + { 0, { 0, 0, 0}}, // ( 83, 106) + { 0, { 0, 0, 0}}, // ( 84, 106) + { 0, { 0, 0, 0}}, // ( 85, 106) + { 0, { 0, 0, 0}}, // ( 86, 106) + { 0, { 0, 0, 0}}, // ( 87, 106) + { 0, { 0, 0, 0}}, // ( 88, 106) + { 0, { 0, 0, 0}}, // ( 89, 106) + { 0, { 0, 0, 0}}, // ( 90, 106) + { 0, { 0, 0, 0}}, // ( 91, 106) + { 0, { 0, 0, 0}}, // ( 92, 106) + { 0, { 0, 0, 0}}, // ( 93, 106) + { 0, { 0, 0, 0}}, // ( 94, 106) + { 0, { 0, 0, 0}}, // ( 95, 106) + { 0, { 0, 0, 0}}, // ( 96, 106) + { 0, { 0, 0, 0}}, // ( 97, 106) + { 0, { 0, 0, 0}}, // ( 98, 106) + { 0, { 0, 0, 0}}, // ( 99, 106) + { 0, { 0, 0, 0}}, // (100, 106) + { 0, { 0, 0, 0}}, // (101, 106) + { 0, { 0, 0, 0}}, // (102, 106) + { 0, { 0, 0, 0}}, // (103, 106) + { 0, { 0, 0, 0}}, // (104, 106) + { 0, { 0, 0, 0}}, // (105, 106) + { 0, { 0, 0, 0}}, // (106, 106) + { 0, { 0, 0, 0}}, // (107, 106) + { 0, { 0, 0, 0}}, // (108, 106) + { 0, { 0, 0, 0}}, // (109, 106) + { 0, { 0, 0, 0}}, // (110, 106) + { 0, { 0, 0, 0}}, // (111, 106) + { 0, { 0, 0, 0}}, // (112, 106) + { 0, { 0, 0, 0}}, // (113, 106) + { 0, { 0, 0, 0}}, // (114, 106) + { 0, { 0, 0, 0}}, // (115, 106) + { 0, { 0, 0, 0}}, // (116, 106) + { 0, { 0, 0, 0}}, // (117, 106) + { 0, { 0, 0, 0}}, // (118, 106) + { 0, { 0, 0, 0}}, // (119, 106) + { 0, { 0, 0, 0}}, // (120, 106) + { 0, { 0, 0, 0}}, // (121, 106) + { 0, { 0, 0, 0}}, // (122, 106) + { 0, { 0, 0, 0}}, // (123, 106) + { 0, { 0, 0, 0}}, // (124, 106) + { 0, { 0, 0, 0}}, // (125, 106) + { 0, { 0, 0, 0}}, // (126, 106) + { 0, { 0, 0, 0}}, // (127, 106) + { 0, { 0, 0, 0}}, // (128, 106) + { 0, { 0, 0, 0}}, // (129, 106) + { 0, { 0, 0, 0}}, // (130, 106) + { 0, { 0, 0, 0}}, // (131, 106) + { 0, { 0, 0, 0}}, // (132, 106) + { 0, { 0, 0, 0}}, // (133, 106) + { 0, { 0, 0, 0}}, // (134, 106) + { 0, { 0, 0, 0}}, // (135, 106) + { 0, { 0, 0, 0}}, // (136, 106) + { 0, { 0, 0, 0}}, // (137, 106) + { 0, { 0, 0, 0}}, // (138, 106) + { 0, { 0, 0, 0}}, // (139, 106) + { 0, { 0, 0, 0}}, // (140, 106) + { 0, { 0, 0, 0}}, // (141, 106) + { 0, { 0, 0, 0}}, // (142, 106) + { 0, { 0, 0, 0}}, // (143, 106) + { 0, { 0, 0, 0}}, // (144, 106) + { 0, { 0, 0, 0}}, // (145, 106) + { 0, { 0, 0, 0}}, // (146, 106) + { 0, { 0, 0, 0}}, // (147, 106) + { 0, { 0, 0, 0}}, // (148, 106) + { 0, { 0, 0, 0}}, // (149, 106) + { 0, { 0, 0, 0}}, // (150, 106) + { 0, { 0, 0, 0}}, // (151, 106) + { 0, { 0, 0, 0}}, // (152, 106) + { 0, { 0, 0, 0}}, // (153, 106) + { 0, { 0, 0, 0}}, // (154, 106) + { 0, { 0, 0, 0}}, // (155, 106) + { 0, { 0, 0, 0}}, // (156, 106) + { 0, { 0, 0, 0}}, // (157, 106) + { 0, { 0, 0, 0}}, // (158, 106) + { 0, { 0, 0, 0}}, // (159, 106) + { 0, { 0, 0, 0}}, // (160, 106) + { 0, { 0, 0, 0}}, // (161, 106) + { 0, { 0, 0, 0}}, // (162, 106) + { 0, { 0, 0, 0}}, // (163, 106) + { 0, { 0, 0, 0}}, // (164, 106) + { 0, { 0, 0, 0}}, // (165, 106) + { 0, { 0, 0, 0}}, // (166, 106) + { 0, { 0, 0, 0}}, // (167, 106) + { 0, { 0, 0, 0}}, // (168, 106) + { 0, { 0, 0, 0}}, // (169, 106) + { 0, { 0, 0, 0}}, // (170, 106) + { 0, { 0, 0, 0}}, // (171, 106) + { 0, { 0, 0, 0}}, // (172, 106) + { 0, { 0, 0, 0}}, // (173, 106) + { 0, { 0, 0, 0}}, // (174, 106) + { 0, { 0, 0, 0}}, // (175, 106) + { 70, { 0, 0, 0}}, // (176, 106) + {128, { 0, 0, 0}}, // (177, 106) + {128, { 0, 0, 0}}, // (178, 106) + {128, { 0, 0, 0}}, // (179, 106) + {128, { 0, 0, 0}}, // ( 0, 107) + {128, { 0, 0, 0}}, // ( 1, 107) + {128, { 0, 0, 0}}, // ( 2, 107) + { 95, { 0, 0, 0}}, // ( 3, 107) + { 0, { 0, 0, 0}}, // ( 4, 107) + { 0, { 0, 0, 0}}, // ( 5, 107) + { 0, { 0, 0, 0}}, // ( 6, 107) + { 0, { 0, 0, 0}}, // ( 7, 107) + { 0, { 0, 0, 0}}, // ( 8, 107) + { 0, { 0, 0, 0}}, // ( 9, 107) + { 0, { 0, 0, 0}}, // ( 10, 107) + { 0, { 0, 0, 0}}, // ( 11, 107) + { 0, { 0, 0, 0}}, // ( 12, 107) + { 0, { 0, 0, 0}}, // ( 13, 107) + { 0, { 0, 0, 0}}, // ( 14, 107) + { 0, { 0, 0, 0}}, // ( 15, 107) + { 0, { 0, 0, 0}}, // ( 16, 107) + { 0, { 0, 0, 0}}, // ( 17, 107) + { 0, { 0, 0, 0}}, // ( 18, 107) + { 0, { 0, 0, 0}}, // ( 19, 107) + { 0, { 0, 0, 0}}, // ( 20, 107) + { 0, { 0, 0, 0}}, // ( 21, 107) + { 0, { 0, 0, 0}}, // ( 22, 107) + { 0, { 0, 0, 0}}, // ( 23, 107) + { 0, { 0, 0, 0}}, // ( 24, 107) + { 0, { 0, 0, 0}}, // ( 25, 107) + { 0, { 0, 0, 0}}, // ( 26, 107) + { 0, { 0, 0, 0}}, // ( 27, 107) + { 0, { 0, 0, 0}}, // ( 28, 107) + { 0, { 0, 0, 0}}, // ( 29, 107) + { 0, { 0, 0, 0}}, // ( 30, 107) + { 0, { 0, 0, 0}}, // ( 31, 107) + { 0, { 0, 0, 0}}, // ( 32, 107) + { 0, { 0, 0, 0}}, // ( 33, 107) + { 0, { 0, 0, 0}}, // ( 34, 107) + { 0, { 0, 0, 0}}, // ( 35, 107) + { 0, { 0, 0, 0}}, // ( 36, 107) + { 0, { 0, 0, 0}}, // ( 37, 107) + { 0, { 0, 0, 0}}, // ( 38, 107) + { 0, { 0, 0, 0}}, // ( 39, 107) + { 0, { 0, 0, 0}}, // ( 40, 107) + { 0, { 0, 0, 0}}, // ( 41, 107) + { 0, { 0, 0, 0}}, // ( 42, 107) + { 0, { 0, 0, 0}}, // ( 43, 107) + { 0, { 0, 0, 0}}, // ( 44, 107) + { 0, { 0, 0, 0}}, // ( 45, 107) + { 0, { 0, 0, 0}}, // ( 46, 107) + { 0, { 0, 0, 0}}, // ( 47, 107) + { 0, { 0, 0, 0}}, // ( 48, 107) + { 0, { 0, 0, 0}}, // ( 49, 107) + { 0, { 0, 0, 0}}, // ( 50, 107) + { 0, { 0, 0, 0}}, // ( 51, 107) + { 0, { 0, 0, 0}}, // ( 52, 107) + { 0, { 0, 0, 0}}, // ( 53, 107) + { 0, { 0, 0, 0}}, // ( 54, 107) + { 0, { 0, 0, 0}}, // ( 55, 107) + { 0, { 0, 0, 0}}, // ( 56, 107) + { 0, { 0, 0, 0}}, // ( 57, 107) + { 0, { 0, 0, 0}}, // ( 58, 107) + { 0, { 0, 0, 0}}, // ( 59, 107) + { 0, { 0, 0, 0}}, // ( 60, 107) + { 0, { 0, 0, 0}}, // ( 61, 107) + { 0, { 0, 0, 0}}, // ( 62, 107) + { 0, { 0, 0, 0}}, // ( 63, 107) + { 0, { 0, 0, 0}}, // ( 64, 107) + { 0, { 0, 0, 0}}, // ( 65, 107) + { 0, { 0, 0, 0}}, // ( 66, 107) + { 0, { 0, 0, 0}}, // ( 67, 107) + { 0, { 0, 0, 0}}, // ( 68, 107) + { 0, { 0, 0, 0}}, // ( 69, 107) + { 0, { 0, 0, 0}}, // ( 70, 107) + { 0, { 0, 0, 0}}, // ( 71, 107) + { 0, { 0, 0, 0}}, // ( 72, 107) + { 0, { 0, 0, 0}}, // ( 73, 107) + { 0, { 0, 0, 0}}, // ( 74, 107) + { 0, { 0, 0, 0}}, // ( 75, 107) + { 0, { 0, 0, 0}}, // ( 76, 107) + { 0, { 0, 0, 0}}, // ( 77, 107) + { 0, { 0, 0, 0}}, // ( 78, 107) + { 0, { 0, 0, 0}}, // ( 79, 107) + { 0, { 0, 0, 0}}, // ( 80, 107) + { 0, { 0, 0, 0}}, // ( 81, 107) + { 0, { 0, 0, 0}}, // ( 82, 107) + { 0, { 0, 0, 0}}, // ( 83, 107) + { 0, { 0, 0, 0}}, // ( 84, 107) + { 0, { 0, 0, 0}}, // ( 85, 107) + { 0, { 0, 0, 0}}, // ( 86, 107) + { 0, { 0, 0, 0}}, // ( 87, 107) + { 0, { 0, 0, 0}}, // ( 88, 107) + { 0, { 0, 0, 0}}, // ( 89, 107) + { 0, { 0, 0, 0}}, // ( 90, 107) + { 0, { 0, 0, 0}}, // ( 91, 107) + { 0, { 0, 0, 0}}, // ( 92, 107) + { 0, { 0, 0, 0}}, // ( 93, 107) + { 0, { 0, 0, 0}}, // ( 94, 107) + { 0, { 0, 0, 0}}, // ( 95, 107) + { 0, { 0, 0, 0}}, // ( 96, 107) + { 0, { 0, 0, 0}}, // ( 97, 107) + { 0, { 0, 0, 0}}, // ( 98, 107) + { 0, { 0, 0, 0}}, // ( 99, 107) + { 0, { 0, 0, 0}}, // (100, 107) + { 0, { 0, 0, 0}}, // (101, 107) + { 0, { 0, 0, 0}}, // (102, 107) + { 0, { 0, 0, 0}}, // (103, 107) + { 0, { 0, 0, 0}}, // (104, 107) + { 0, { 0, 0, 0}}, // (105, 107) + { 0, { 0, 0, 0}}, // (106, 107) + { 0, { 0, 0, 0}}, // (107, 107) + { 0, { 0, 0, 0}}, // (108, 107) + { 0, { 0, 0, 0}}, // (109, 107) + { 0, { 0, 0, 0}}, // (110, 107) + { 0, { 0, 0, 0}}, // (111, 107) + { 0, { 0, 0, 0}}, // (112, 107) + { 0, { 0, 0, 0}}, // (113, 107) + { 0, { 0, 0, 0}}, // (114, 107) + { 0, { 0, 0, 0}}, // (115, 107) + { 0, { 0, 0, 0}}, // (116, 107) + { 0, { 0, 0, 0}}, // (117, 107) + { 0, { 0, 0, 0}}, // (118, 107) + { 0, { 0, 0, 0}}, // (119, 107) + { 0, { 0, 0, 0}}, // (120, 107) + { 0, { 0, 0, 0}}, // (121, 107) + { 0, { 0, 0, 0}}, // (122, 107) + { 0, { 0, 0, 0}}, // (123, 107) + { 0, { 0, 0, 0}}, // (124, 107) + { 0, { 0, 0, 0}}, // (125, 107) + { 0, { 0, 0, 0}}, // (126, 107) + { 0, { 0, 0, 0}}, // (127, 107) + { 0, { 0, 0, 0}}, // (128, 107) + { 0, { 0, 0, 0}}, // (129, 107) + { 0, { 0, 0, 0}}, // (130, 107) + { 0, { 0, 0, 0}}, // (131, 107) + { 0, { 0, 0, 0}}, // (132, 107) + { 0, { 0, 0, 0}}, // (133, 107) + { 0, { 0, 0, 0}}, // (134, 107) + { 0, { 0, 0, 0}}, // (135, 107) + { 0, { 0, 0, 0}}, // (136, 107) + { 0, { 0, 0, 0}}, // (137, 107) + { 0, { 0, 0, 0}}, // (138, 107) + { 0, { 0, 0, 0}}, // (139, 107) + { 0, { 0, 0, 0}}, // (140, 107) + { 0, { 0, 0, 0}}, // (141, 107) + { 0, { 0, 0, 0}}, // (142, 107) + { 0, { 0, 0, 0}}, // (143, 107) + { 0, { 0, 0, 0}}, // (144, 107) + { 0, { 0, 0, 0}}, // (145, 107) + { 0, { 0, 0, 0}}, // (146, 107) + { 0, { 0, 0, 0}}, // (147, 107) + { 0, { 0, 0, 0}}, // (148, 107) + { 0, { 0, 0, 0}}, // (149, 107) + { 0, { 0, 0, 0}}, // (150, 107) + { 0, { 0, 0, 0}}, // (151, 107) + { 0, { 0, 0, 0}}, // (152, 107) + { 0, { 0, 0, 0}}, // (153, 107) + { 0, { 0, 0, 0}}, // (154, 107) + { 0, { 0, 0, 0}}, // (155, 107) + { 0, { 0, 0, 0}}, // (156, 107) + { 0, { 0, 0, 0}}, // (157, 107) + { 0, { 0, 0, 0}}, // (158, 107) + { 0, { 0, 0, 0}}, // (159, 107) + { 0, { 0, 0, 0}}, // (160, 107) + { 0, { 0, 0, 0}}, // (161, 107) + { 0, { 0, 0, 0}}, // (162, 107) + { 0, { 0, 0, 0}}, // (163, 107) + { 0, { 0, 0, 0}}, // (164, 107) + { 0, { 0, 0, 0}}, // (165, 107) + { 0, { 0, 0, 0}}, // (166, 107) + { 0, { 0, 0, 0}}, // (167, 107) + { 0, { 0, 0, 0}}, // (168, 107) + { 0, { 0, 0, 0}}, // (169, 107) + { 0, { 0, 0, 0}}, // (170, 107) + { 0, { 0, 0, 0}}, // (171, 107) + { 0, { 0, 0, 0}}, // (172, 107) + { 0, { 0, 0, 0}}, // (173, 107) + { 0, { 0, 0, 0}}, // (174, 107) + { 0, { 0, 0, 0}}, // (175, 107) + { 95, { 0, 0, 0}}, // (176, 107) + {128, { 0, 0, 0}}, // (177, 107) + {128, { 0, 0, 0}}, // (178, 107) + {128, { 0, 0, 0}}, // (179, 107) + {128, { 0, 0, 0}}, // ( 0, 108) + {128, { 0, 0, 0}}, // ( 1, 108) + {128, { 0, 0, 0}}, // ( 2, 108) + {120, { 0, 0, 0}}, // ( 3, 108) + { 1, { 0, 0, 0}}, // ( 4, 108) + { 0, { 0, 0, 0}}, // ( 5, 108) + { 0, { 0, 0, 0}}, // ( 6, 108) + { 0, { 0, 0, 0}}, // ( 7, 108) + { 0, { 0, 0, 0}}, // ( 8, 108) + { 0, { 0, 0, 0}}, // ( 9, 108) + { 0, { 0, 0, 0}}, // ( 10, 108) + { 0, { 0, 0, 0}}, // ( 11, 108) + { 0, { 0, 0, 0}}, // ( 12, 108) + { 0, { 0, 0, 0}}, // ( 13, 108) + { 0, { 0, 0, 0}}, // ( 14, 108) + { 0, { 0, 0, 0}}, // ( 15, 108) + { 0, { 0, 0, 0}}, // ( 16, 108) + { 0, { 0, 0, 0}}, // ( 17, 108) + { 0, { 0, 0, 0}}, // ( 18, 108) + { 0, { 0, 0, 0}}, // ( 19, 108) + { 0, { 0, 0, 0}}, // ( 20, 108) + { 0, { 0, 0, 0}}, // ( 21, 108) + { 0, { 0, 0, 0}}, // ( 22, 108) + { 0, { 0, 0, 0}}, // ( 23, 108) + { 0, { 0, 0, 0}}, // ( 24, 108) + { 0, { 0, 0, 0}}, // ( 25, 108) + { 0, { 0, 0, 0}}, // ( 26, 108) + { 0, { 0, 0, 0}}, // ( 27, 108) + { 0, { 0, 0, 0}}, // ( 28, 108) + { 0, { 0, 0, 0}}, // ( 29, 108) + { 0, { 0, 0, 0}}, // ( 30, 108) + { 0, { 0, 0, 0}}, // ( 31, 108) + { 0, { 0, 0, 0}}, // ( 32, 108) + { 0, { 0, 0, 0}}, // ( 33, 108) + { 0, { 0, 0, 0}}, // ( 34, 108) + { 0, { 0, 0, 0}}, // ( 35, 108) + { 0, { 0, 0, 0}}, // ( 36, 108) + { 0, { 0, 0, 0}}, // ( 37, 108) + { 0, { 0, 0, 0}}, // ( 38, 108) + { 0, { 0, 0, 0}}, // ( 39, 108) + { 0, { 0, 0, 0}}, // ( 40, 108) + { 0, { 0, 0, 0}}, // ( 41, 108) + { 0, { 0, 0, 0}}, // ( 42, 108) + { 0, { 0, 0, 0}}, // ( 43, 108) + { 0, { 0, 0, 0}}, // ( 44, 108) + { 0, { 0, 0, 0}}, // ( 45, 108) + { 0, { 0, 0, 0}}, // ( 46, 108) + { 0, { 0, 0, 0}}, // ( 47, 108) + { 0, { 0, 0, 0}}, // ( 48, 108) + { 0, { 0, 0, 0}}, // ( 49, 108) + { 0, { 0, 0, 0}}, // ( 50, 108) + { 0, { 0, 0, 0}}, // ( 51, 108) + { 0, { 0, 0, 0}}, // ( 52, 108) + { 0, { 0, 0, 0}}, // ( 53, 108) + { 0, { 0, 0, 0}}, // ( 54, 108) + { 0, { 0, 0, 0}}, // ( 55, 108) + { 0, { 0, 0, 0}}, // ( 56, 108) + { 0, { 0, 0, 0}}, // ( 57, 108) + { 0, { 0, 0, 0}}, // ( 58, 108) + { 0, { 0, 0, 0}}, // ( 59, 108) + { 0, { 0, 0, 0}}, // ( 60, 108) + { 0, { 0, 0, 0}}, // ( 61, 108) + { 0, { 0, 0, 0}}, // ( 62, 108) + { 0, { 0, 0, 0}}, // ( 63, 108) + { 0, { 0, 0, 0}}, // ( 64, 108) + { 0, { 0, 0, 0}}, // ( 65, 108) + { 0, { 0, 0, 0}}, // ( 66, 108) + { 0, { 0, 0, 0}}, // ( 67, 108) + { 0, { 0, 0, 0}}, // ( 68, 108) + { 0, { 0, 0, 0}}, // ( 69, 108) + { 0, { 0, 0, 0}}, // ( 70, 108) + { 0, { 0, 0, 0}}, // ( 71, 108) + { 0, { 0, 0, 0}}, // ( 72, 108) + { 0, { 0, 0, 0}}, // ( 73, 108) + { 0, { 0, 0, 0}}, // ( 74, 108) + { 0, { 0, 0, 0}}, // ( 75, 108) + { 0, { 0, 0, 0}}, // ( 76, 108) + { 0, { 0, 0, 0}}, // ( 77, 108) + { 0, { 0, 0, 0}}, // ( 78, 108) + { 0, { 0, 0, 0}}, // ( 79, 108) + { 0, { 0, 0, 0}}, // ( 80, 108) + { 0, { 0, 0, 0}}, // ( 81, 108) + { 0, { 0, 0, 0}}, // ( 82, 108) + { 0, { 0, 0, 0}}, // ( 83, 108) + { 0, { 0, 0, 0}}, // ( 84, 108) + { 0, { 0, 0, 0}}, // ( 85, 108) + { 0, { 0, 0, 0}}, // ( 86, 108) + { 0, { 0, 0, 0}}, // ( 87, 108) + { 0, { 0, 0, 0}}, // ( 88, 108) + { 0, { 0, 0, 0}}, // ( 89, 108) + { 0, { 0, 0, 0}}, // ( 90, 108) + { 0, { 0, 0, 0}}, // ( 91, 108) + { 0, { 0, 0, 0}}, // ( 92, 108) + { 0, { 0, 0, 0}}, // ( 93, 108) + { 0, { 0, 0, 0}}, // ( 94, 108) + { 0, { 0, 0, 0}}, // ( 95, 108) + { 0, { 0, 0, 0}}, // ( 96, 108) + { 0, { 0, 0, 0}}, // ( 97, 108) + { 0, { 0, 0, 0}}, // ( 98, 108) + { 0, { 0, 0, 0}}, // ( 99, 108) + { 0, { 0, 0, 0}}, // (100, 108) + { 0, { 0, 0, 0}}, // (101, 108) + { 0, { 0, 0, 0}}, // (102, 108) + { 0, { 0, 0, 0}}, // (103, 108) + { 0, { 0, 0, 0}}, // (104, 108) + { 0, { 0, 0, 0}}, // (105, 108) + { 0, { 0, 0, 0}}, // (106, 108) + { 0, { 0, 0, 0}}, // (107, 108) + { 0, { 0, 0, 0}}, // (108, 108) + { 0, { 0, 0, 0}}, // (109, 108) + { 0, { 0, 0, 0}}, // (110, 108) + { 0, { 0, 0, 0}}, // (111, 108) + { 0, { 0, 0, 0}}, // (112, 108) + { 0, { 0, 0, 0}}, // (113, 108) + { 0, { 0, 0, 0}}, // (114, 108) + { 0, { 0, 0, 0}}, // (115, 108) + { 0, { 0, 0, 0}}, // (116, 108) + { 0, { 0, 0, 0}}, // (117, 108) + { 0, { 0, 0, 0}}, // (118, 108) + { 0, { 0, 0, 0}}, // (119, 108) + { 0, { 0, 0, 0}}, // (120, 108) + { 0, { 0, 0, 0}}, // (121, 108) + { 0, { 0, 0, 0}}, // (122, 108) + { 0, { 0, 0, 0}}, // (123, 108) + { 0, { 0, 0, 0}}, // (124, 108) + { 0, { 0, 0, 0}}, // (125, 108) + { 0, { 0, 0, 0}}, // (126, 108) + { 0, { 0, 0, 0}}, // (127, 108) + { 0, { 0, 0, 0}}, // (128, 108) + { 0, { 0, 0, 0}}, // (129, 108) + { 0, { 0, 0, 0}}, // (130, 108) + { 0, { 0, 0, 0}}, // (131, 108) + { 0, { 0, 0, 0}}, // (132, 108) + { 0, { 0, 0, 0}}, // (133, 108) + { 0, { 0, 0, 0}}, // (134, 108) + { 0, { 0, 0, 0}}, // (135, 108) + { 0, { 0, 0, 0}}, // (136, 108) + { 0, { 0, 0, 0}}, // (137, 108) + { 0, { 0, 0, 0}}, // (138, 108) + { 0, { 0, 0, 0}}, // (139, 108) + { 0, { 0, 0, 0}}, // (140, 108) + { 0, { 0, 0, 0}}, // (141, 108) + { 0, { 0, 0, 0}}, // (142, 108) + { 0, { 0, 0, 0}}, // (143, 108) + { 0, { 0, 0, 0}}, // (144, 108) + { 0, { 0, 0, 0}}, // (145, 108) + { 0, { 0, 0, 0}}, // (146, 108) + { 0, { 0, 0, 0}}, // (147, 108) + { 0, { 0, 0, 0}}, // (148, 108) + { 0, { 0, 0, 0}}, // (149, 108) + { 0, { 0, 0, 0}}, // (150, 108) + { 0, { 0, 0, 0}}, // (151, 108) + { 0, { 0, 0, 0}}, // (152, 108) + { 0, { 0, 0, 0}}, // (153, 108) + { 0, { 0, 0, 0}}, // (154, 108) + { 0, { 0, 0, 0}}, // (155, 108) + { 0, { 0, 0, 0}}, // (156, 108) + { 0, { 0, 0, 0}}, // (157, 108) + { 0, { 0, 0, 0}}, // (158, 108) + { 0, { 0, 0, 0}}, // (159, 108) + { 0, { 0, 0, 0}}, // (160, 108) + { 0, { 0, 0, 0}}, // (161, 108) + { 0, { 0, 0, 0}}, // (162, 108) + { 0, { 0, 0, 0}}, // (163, 108) + { 0, { 0, 0, 0}}, // (164, 108) + { 0, { 0, 0, 0}}, // (165, 108) + { 0, { 0, 0, 0}}, // (166, 108) + { 0, { 0, 0, 0}}, // (167, 108) + { 0, { 0, 0, 0}}, // (168, 108) + { 0, { 0, 0, 0}}, // (169, 108) + { 0, { 0, 0, 0}}, // (170, 108) + { 0, { 0, 0, 0}}, // (171, 108) + { 0, { 0, 0, 0}}, // (172, 108) + { 0, { 0, 0, 0}}, // (173, 108) + { 0, { 0, 0, 0}}, // (174, 108) + { 1, { 0, 0, 0}}, // (175, 108) + {120, { 0, 0, 0}}, // (176, 108) + {128, { 0, 0, 0}}, // (177, 108) + {128, { 0, 0, 0}}, // (178, 108) + {128, { 0, 0, 0}}, // (179, 108) + {128, { 0, 0, 0}}, // ( 0, 109) + {128, { 0, 0, 0}}, // ( 1, 109) + {128, { 0, 0, 0}}, // ( 2, 109) + {128, { 0, 0, 0}}, // ( 3, 109) + { 22, { 0, 0, 0}}, // ( 4, 109) + { 0, { 0, 0, 0}}, // ( 5, 109) + { 0, { 0, 0, 0}}, // ( 6, 109) + { 0, { 0, 0, 0}}, // ( 7, 109) + { 0, { 0, 0, 0}}, // ( 8, 109) + { 0, { 0, 0, 0}}, // ( 9, 109) + { 0, { 0, 0, 0}}, // ( 10, 109) + { 0, { 0, 0, 0}}, // ( 11, 109) + { 0, { 0, 0, 0}}, // ( 12, 109) + { 0, { 0, 0, 0}}, // ( 13, 109) + { 0, { 0, 0, 0}}, // ( 14, 109) + { 0, { 0, 0, 0}}, // ( 15, 109) + { 0, { 0, 0, 0}}, // ( 16, 109) + { 0, { 0, 0, 0}}, // ( 17, 109) + { 0, { 0, 0, 0}}, // ( 18, 109) + { 0, { 0, 0, 0}}, // ( 19, 109) + { 0, { 0, 0, 0}}, // ( 20, 109) + { 0, { 0, 0, 0}}, // ( 21, 109) + { 0, { 0, 0, 0}}, // ( 22, 109) + { 0, { 0, 0, 0}}, // ( 23, 109) + { 0, { 0, 0, 0}}, // ( 24, 109) + { 0, { 0, 0, 0}}, // ( 25, 109) + { 0, { 0, 0, 0}}, // ( 26, 109) + { 0, { 0, 0, 0}}, // ( 27, 109) + { 0, { 0, 0, 0}}, // ( 28, 109) + { 0, { 0, 0, 0}}, // ( 29, 109) + { 0, { 0, 0, 0}}, // ( 30, 109) + { 0, { 0, 0, 0}}, // ( 31, 109) + { 0, { 0, 0, 0}}, // ( 32, 109) + { 0, { 0, 0, 0}}, // ( 33, 109) + { 0, { 0, 0, 0}}, // ( 34, 109) + { 0, { 0, 0, 0}}, // ( 35, 109) + { 0, { 0, 0, 0}}, // ( 36, 109) + { 0, { 0, 0, 0}}, // ( 37, 109) + { 0, { 0, 0, 0}}, // ( 38, 109) + { 0, { 0, 0, 0}}, // ( 39, 109) + { 0, { 0, 0, 0}}, // ( 40, 109) + { 0, { 0, 0, 0}}, // ( 41, 109) + { 0, { 0, 0, 0}}, // ( 42, 109) + { 0, { 0, 0, 0}}, // ( 43, 109) + { 0, { 0, 0, 0}}, // ( 44, 109) + { 0, { 0, 0, 0}}, // ( 45, 109) + { 0, { 0, 0, 0}}, // ( 46, 109) + { 0, { 0, 0, 0}}, // ( 47, 109) + { 0, { 0, 0, 0}}, // ( 48, 109) + { 0, { 0, 0, 0}}, // ( 49, 109) + { 0, { 0, 0, 0}}, // ( 50, 109) + { 0, { 0, 0, 0}}, // ( 51, 109) + { 0, { 0, 0, 0}}, // ( 52, 109) + { 0, { 0, 0, 0}}, // ( 53, 109) + { 0, { 0, 0, 0}}, // ( 54, 109) + { 0, { 0, 0, 0}}, // ( 55, 109) + { 0, { 0, 0, 0}}, // ( 56, 109) + { 0, { 0, 0, 0}}, // ( 57, 109) + { 0, { 0, 0, 0}}, // ( 58, 109) + { 0, { 0, 0, 0}}, // ( 59, 109) + { 0, { 0, 0, 0}}, // ( 60, 109) + { 0, { 0, 0, 0}}, // ( 61, 109) + { 0, { 0, 0, 0}}, // ( 62, 109) + { 0, { 0, 0, 0}}, // ( 63, 109) + { 0, { 0, 0, 0}}, // ( 64, 109) + { 0, { 0, 0, 0}}, // ( 65, 109) + { 0, { 0, 0, 0}}, // ( 66, 109) + { 0, { 0, 0, 0}}, // ( 67, 109) + { 0, { 0, 0, 0}}, // ( 68, 109) + { 0, { 0, 0, 0}}, // ( 69, 109) + { 0, { 0, 0, 0}}, // ( 70, 109) + { 0, { 0, 0, 0}}, // ( 71, 109) + { 0, { 0, 0, 0}}, // ( 72, 109) + { 0, { 0, 0, 0}}, // ( 73, 109) + { 0, { 0, 0, 0}}, // ( 74, 109) + { 0, { 0, 0, 0}}, // ( 75, 109) + { 0, { 0, 0, 0}}, // ( 76, 109) + { 0, { 0, 0, 0}}, // ( 77, 109) + { 0, { 0, 0, 0}}, // ( 78, 109) + { 0, { 0, 0, 0}}, // ( 79, 109) + { 0, { 0, 0, 0}}, // ( 80, 109) + { 0, { 0, 0, 0}}, // ( 81, 109) + { 0, { 0, 0, 0}}, // ( 82, 109) + { 0, { 0, 0, 0}}, // ( 83, 109) + { 0, { 0, 0, 0}}, // ( 84, 109) + { 0, { 0, 0, 0}}, // ( 85, 109) + { 0, { 0, 0, 0}}, // ( 86, 109) + { 0, { 0, 0, 0}}, // ( 87, 109) + { 0, { 0, 0, 0}}, // ( 88, 109) + { 0, { 0, 0, 0}}, // ( 89, 109) + { 0, { 0, 0, 0}}, // ( 90, 109) + { 0, { 0, 0, 0}}, // ( 91, 109) + { 0, { 0, 0, 0}}, // ( 92, 109) + { 0, { 0, 0, 0}}, // ( 93, 109) + { 0, { 0, 0, 0}}, // ( 94, 109) + { 0, { 0, 0, 0}}, // ( 95, 109) + { 0, { 0, 0, 0}}, // ( 96, 109) + { 0, { 0, 0, 0}}, // ( 97, 109) + { 0, { 0, 0, 0}}, // ( 98, 109) + { 0, { 0, 0, 0}}, // ( 99, 109) + { 0, { 0, 0, 0}}, // (100, 109) + { 0, { 0, 0, 0}}, // (101, 109) + { 0, { 0, 0, 0}}, // (102, 109) + { 0, { 0, 0, 0}}, // (103, 109) + { 0, { 0, 0, 0}}, // (104, 109) + { 0, { 0, 0, 0}}, // (105, 109) + { 0, { 0, 0, 0}}, // (106, 109) + { 0, { 0, 0, 0}}, // (107, 109) + { 0, { 0, 0, 0}}, // (108, 109) + { 0, { 0, 0, 0}}, // (109, 109) + { 0, { 0, 0, 0}}, // (110, 109) + { 0, { 0, 0, 0}}, // (111, 109) + { 0, { 0, 0, 0}}, // (112, 109) + { 0, { 0, 0, 0}}, // (113, 109) + { 0, { 0, 0, 0}}, // (114, 109) + { 0, { 0, 0, 0}}, // (115, 109) + { 0, { 0, 0, 0}}, // (116, 109) + { 0, { 0, 0, 0}}, // (117, 109) + { 0, { 0, 0, 0}}, // (118, 109) + { 0, { 0, 0, 0}}, // (119, 109) + { 0, { 0, 0, 0}}, // (120, 109) + { 0, { 0, 0, 0}}, // (121, 109) + { 0, { 0, 0, 0}}, // (122, 109) + { 0, { 0, 0, 0}}, // (123, 109) + { 0, { 0, 0, 0}}, // (124, 109) + { 0, { 0, 0, 0}}, // (125, 109) + { 0, { 0, 0, 0}}, // (126, 109) + { 0, { 0, 0, 0}}, // (127, 109) + { 0, { 0, 0, 0}}, // (128, 109) + { 0, { 0, 0, 0}}, // (129, 109) + { 0, { 0, 0, 0}}, // (130, 109) + { 0, { 0, 0, 0}}, // (131, 109) + { 0, { 0, 0, 0}}, // (132, 109) + { 0, { 0, 0, 0}}, // (133, 109) + { 0, { 0, 0, 0}}, // (134, 109) + { 0, { 0, 0, 0}}, // (135, 109) + { 0, { 0, 0, 0}}, // (136, 109) + { 0, { 0, 0, 0}}, // (137, 109) + { 0, { 0, 0, 0}}, // (138, 109) + { 0, { 0, 0, 0}}, // (139, 109) + { 0, { 0, 0, 0}}, // (140, 109) + { 0, { 0, 0, 0}}, // (141, 109) + { 0, { 0, 0, 0}}, // (142, 109) + { 0, { 0, 0, 0}}, // (143, 109) + { 0, { 0, 0, 0}}, // (144, 109) + { 0, { 0, 0, 0}}, // (145, 109) + { 0, { 0, 0, 0}}, // (146, 109) + { 0, { 0, 0, 0}}, // (147, 109) + { 0, { 0, 0, 0}}, // (148, 109) + { 0, { 0, 0, 0}}, // (149, 109) + { 0, { 0, 0, 0}}, // (150, 109) + { 0, { 0, 0, 0}}, // (151, 109) + { 0, { 0, 0, 0}}, // (152, 109) + { 0, { 0, 0, 0}}, // (153, 109) + { 0, { 0, 0, 0}}, // (154, 109) + { 0, { 0, 0, 0}}, // (155, 109) + { 0, { 0, 0, 0}}, // (156, 109) + { 0, { 0, 0, 0}}, // (157, 109) + { 0, { 0, 0, 0}}, // (158, 109) + { 0, { 0, 0, 0}}, // (159, 109) + { 0, { 0, 0, 0}}, // (160, 109) + { 0, { 0, 0, 0}}, // (161, 109) + { 0, { 0, 0, 0}}, // (162, 109) + { 0, { 0, 0, 0}}, // (163, 109) + { 0, { 0, 0, 0}}, // (164, 109) + { 0, { 0, 0, 0}}, // (165, 109) + { 0, { 0, 0, 0}}, // (166, 109) + { 0, { 0, 0, 0}}, // (167, 109) + { 0, { 0, 0, 0}}, // (168, 109) + { 0, { 0, 0, 0}}, // (169, 109) + { 0, { 0, 0, 0}}, // (170, 109) + { 0, { 0, 0, 0}}, // (171, 109) + { 0, { 0, 0, 0}}, // (172, 109) + { 0, { 0, 0, 0}}, // (173, 109) + { 0, { 0, 0, 0}}, // (174, 109) + { 22, { 0, 0, 0}}, // (175, 109) + {128, { 0, 0, 0}}, // (176, 109) + {128, { 0, 0, 0}}, // (177, 109) + {128, { 0, 0, 0}}, // (178, 109) + {128, { 0, 0, 0}}, // (179, 109) + {128, { 0, 0, 0}}, // ( 0, 110) + {128, { 0, 0, 0}}, // ( 1, 110) + {128, { 0, 0, 0}}, // ( 2, 110) + {128, { 0, 0, 0}}, // ( 3, 110) + { 52, { 0, 0, 0}}, // ( 4, 110) + { 0, { 0, 0, 0}}, // ( 5, 110) + { 0, { 0, 0, 0}}, // ( 6, 110) + { 0, { 0, 0, 0}}, // ( 7, 110) + { 0, { 0, 0, 0}}, // ( 8, 110) + { 0, { 0, 0, 0}}, // ( 9, 110) + { 0, { 0, 0, 0}}, // ( 10, 110) + { 0, { 0, 0, 0}}, // ( 11, 110) + { 0, { 0, 0, 0}}, // ( 12, 110) + { 0, { 0, 0, 0}}, // ( 13, 110) + { 0, { 0, 0, 0}}, // ( 14, 110) + { 0, { 0, 0, 0}}, // ( 15, 110) + { 0, { 0, 0, 0}}, // ( 16, 110) + { 0, { 0, 0, 0}}, // ( 17, 110) + { 0, { 0, 0, 0}}, // ( 18, 110) + { 0, { 0, 0, 0}}, // ( 19, 110) + { 0, { 0, 0, 0}}, // ( 20, 110) + { 0, { 0, 0, 0}}, // ( 21, 110) + { 0, { 0, 0, 0}}, // ( 22, 110) + { 0, { 0, 0, 0}}, // ( 23, 110) + { 0, { 0, 0, 0}}, // ( 24, 110) + { 0, { 0, 0, 0}}, // ( 25, 110) + { 0, { 0, 0, 0}}, // ( 26, 110) + { 0, { 0, 0, 0}}, // ( 27, 110) + { 0, { 0, 0, 0}}, // ( 28, 110) + { 0, { 0, 0, 0}}, // ( 29, 110) + { 0, { 0, 0, 0}}, // ( 30, 110) + { 0, { 0, 0, 0}}, // ( 31, 110) + { 0, { 0, 0, 0}}, // ( 32, 110) + { 0, { 0, 0, 0}}, // ( 33, 110) + { 0, { 0, 0, 0}}, // ( 34, 110) + { 0, { 0, 0, 0}}, // ( 35, 110) + { 0, { 0, 0, 0}}, // ( 36, 110) + { 0, { 0, 0, 0}}, // ( 37, 110) + { 0, { 0, 0, 0}}, // ( 38, 110) + { 0, { 0, 0, 0}}, // ( 39, 110) + { 0, { 0, 0, 0}}, // ( 40, 110) + { 0, { 0, 0, 0}}, // ( 41, 110) + { 0, { 0, 0, 0}}, // ( 42, 110) + { 0, { 0, 0, 0}}, // ( 43, 110) + { 0, { 0, 0, 0}}, // ( 44, 110) + { 0, { 0, 0, 0}}, // ( 45, 110) + { 0, { 0, 0, 0}}, // ( 46, 110) + { 0, { 0, 0, 0}}, // ( 47, 110) + { 0, { 0, 0, 0}}, // ( 48, 110) + { 0, { 0, 0, 0}}, // ( 49, 110) + { 0, { 0, 0, 0}}, // ( 50, 110) + { 0, { 0, 0, 0}}, // ( 51, 110) + { 0, { 0, 0, 0}}, // ( 52, 110) + { 0, { 0, 0, 0}}, // ( 53, 110) + { 0, { 0, 0, 0}}, // ( 54, 110) + { 0, { 0, 0, 0}}, // ( 55, 110) + { 0, { 0, 0, 0}}, // ( 56, 110) + { 0, { 0, 0, 0}}, // ( 57, 110) + { 0, { 0, 0, 0}}, // ( 58, 110) + { 0, { 0, 0, 0}}, // ( 59, 110) + { 0, { 0, 0, 0}}, // ( 60, 110) + { 0, { 0, 0, 0}}, // ( 61, 110) + { 0, { 0, 0, 0}}, // ( 62, 110) + { 0, { 0, 0, 0}}, // ( 63, 110) + { 0, { 0, 0, 0}}, // ( 64, 110) + { 0, { 0, 0, 0}}, // ( 65, 110) + { 0, { 0, 0, 0}}, // ( 66, 110) + { 0, { 0, 0, 0}}, // ( 67, 110) + { 0, { 0, 0, 0}}, // ( 68, 110) + { 0, { 0, 0, 0}}, // ( 69, 110) + { 0, { 0, 0, 0}}, // ( 70, 110) + { 0, { 0, 0, 0}}, // ( 71, 110) + { 0, { 0, 0, 0}}, // ( 72, 110) + { 0, { 0, 0, 0}}, // ( 73, 110) + { 0, { 0, 0, 0}}, // ( 74, 110) + { 0, { 0, 0, 0}}, // ( 75, 110) + { 0, { 0, 0, 0}}, // ( 76, 110) + { 0, { 0, 0, 0}}, // ( 77, 110) + { 0, { 0, 0, 0}}, // ( 78, 110) + { 0, { 0, 0, 0}}, // ( 79, 110) + { 0, { 0, 0, 0}}, // ( 80, 110) + { 0, { 0, 0, 0}}, // ( 81, 110) + { 0, { 0, 0, 0}}, // ( 82, 110) + { 0, { 0, 0, 0}}, // ( 83, 110) + { 0, { 0, 0, 0}}, // ( 84, 110) + { 0, { 0, 0, 0}}, // ( 85, 110) + { 0, { 0, 0, 0}}, // ( 86, 110) + { 0, { 0, 0, 0}}, // ( 87, 110) + { 0, { 0, 0, 0}}, // ( 88, 110) + { 0, { 0, 0, 0}}, // ( 89, 110) + { 0, { 0, 0, 0}}, // ( 90, 110) + { 0, { 0, 0, 0}}, // ( 91, 110) + { 0, { 0, 0, 0}}, // ( 92, 110) + { 0, { 0, 0, 0}}, // ( 93, 110) + { 0, { 0, 0, 0}}, // ( 94, 110) + { 0, { 0, 0, 0}}, // ( 95, 110) + { 0, { 0, 0, 0}}, // ( 96, 110) + { 0, { 0, 0, 0}}, // ( 97, 110) + { 0, { 0, 0, 0}}, // ( 98, 110) + { 0, { 0, 0, 0}}, // ( 99, 110) + { 0, { 0, 0, 0}}, // (100, 110) + { 0, { 0, 0, 0}}, // (101, 110) + { 0, { 0, 0, 0}}, // (102, 110) + { 0, { 0, 0, 0}}, // (103, 110) + { 0, { 0, 0, 0}}, // (104, 110) + { 0, { 0, 0, 0}}, // (105, 110) + { 0, { 0, 0, 0}}, // (106, 110) + { 0, { 0, 0, 0}}, // (107, 110) + { 0, { 0, 0, 0}}, // (108, 110) + { 0, { 0, 0, 0}}, // (109, 110) + { 0, { 0, 0, 0}}, // (110, 110) + { 0, { 0, 0, 0}}, // (111, 110) + { 0, { 0, 0, 0}}, // (112, 110) + { 0, { 0, 0, 0}}, // (113, 110) + { 0, { 0, 0, 0}}, // (114, 110) + { 0, { 0, 0, 0}}, // (115, 110) + { 0, { 0, 0, 0}}, // (116, 110) + { 0, { 0, 0, 0}}, // (117, 110) + { 0, { 0, 0, 0}}, // (118, 110) + { 0, { 0, 0, 0}}, // (119, 110) + { 0, { 0, 0, 0}}, // (120, 110) + { 0, { 0, 0, 0}}, // (121, 110) + { 0, { 0, 0, 0}}, // (122, 110) + { 0, { 0, 0, 0}}, // (123, 110) + { 0, { 0, 0, 0}}, // (124, 110) + { 0, { 0, 0, 0}}, // (125, 110) + { 0, { 0, 0, 0}}, // (126, 110) + { 0, { 0, 0, 0}}, // (127, 110) + { 0, { 0, 0, 0}}, // (128, 110) + { 0, { 0, 0, 0}}, // (129, 110) + { 0, { 0, 0, 0}}, // (130, 110) + { 0, { 0, 0, 0}}, // (131, 110) + { 0, { 0, 0, 0}}, // (132, 110) + { 0, { 0, 0, 0}}, // (133, 110) + { 0, { 0, 0, 0}}, // (134, 110) + { 0, { 0, 0, 0}}, // (135, 110) + { 0, { 0, 0, 0}}, // (136, 110) + { 0, { 0, 0, 0}}, // (137, 110) + { 0, { 0, 0, 0}}, // (138, 110) + { 0, { 0, 0, 0}}, // (139, 110) + { 0, { 0, 0, 0}}, // (140, 110) + { 0, { 0, 0, 0}}, // (141, 110) + { 0, { 0, 0, 0}}, // (142, 110) + { 0, { 0, 0, 0}}, // (143, 110) + { 0, { 0, 0, 0}}, // (144, 110) + { 0, { 0, 0, 0}}, // (145, 110) + { 0, { 0, 0, 0}}, // (146, 110) + { 0, { 0, 0, 0}}, // (147, 110) + { 0, { 0, 0, 0}}, // (148, 110) + { 0, { 0, 0, 0}}, // (149, 110) + { 0, { 0, 0, 0}}, // (150, 110) + { 0, { 0, 0, 0}}, // (151, 110) + { 0, { 0, 0, 0}}, // (152, 110) + { 0, { 0, 0, 0}}, // (153, 110) + { 0, { 0, 0, 0}}, // (154, 110) + { 0, { 0, 0, 0}}, // (155, 110) + { 0, { 0, 0, 0}}, // (156, 110) + { 0, { 0, 0, 0}}, // (157, 110) + { 0, { 0, 0, 0}}, // (158, 110) + { 0, { 0, 0, 0}}, // (159, 110) + { 0, { 0, 0, 0}}, // (160, 110) + { 0, { 0, 0, 0}}, // (161, 110) + { 0, { 0, 0, 0}}, // (162, 110) + { 0, { 0, 0, 0}}, // (163, 110) + { 0, { 0, 0, 0}}, // (164, 110) + { 0, { 0, 0, 0}}, // (165, 110) + { 0, { 0, 0, 0}}, // (166, 110) + { 0, { 0, 0, 0}}, // (167, 110) + { 0, { 0, 0, 0}}, // (168, 110) + { 0, { 0, 0, 0}}, // (169, 110) + { 0, { 0, 0, 0}}, // (170, 110) + { 0, { 0, 0, 0}}, // (171, 110) + { 0, { 0, 0, 0}}, // (172, 110) + { 0, { 0, 0, 0}}, // (173, 110) + { 0, { 0, 0, 0}}, // (174, 110) + { 52, { 0, 0, 0}}, // (175, 110) + {128, { 0, 0, 0}}, // (176, 110) + {128, { 0, 0, 0}}, // (177, 110) + {128, { 0, 0, 0}}, // (178, 110) + {128, { 0, 0, 0}}, // (179, 110) + {128, { 0, 0, 0}}, // ( 0, 111) + {128, { 0, 0, 0}}, // ( 1, 111) + {128, { 0, 0, 0}}, // ( 2, 111) + {128, { 0, 0, 0}}, // ( 3, 111) + { 83, { 0, 0, 0}}, // ( 4, 111) + { 0, { 0, 0, 0}}, // ( 5, 111) + { 0, { 0, 0, 0}}, // ( 6, 111) + { 0, { 0, 0, 0}}, // ( 7, 111) + { 0, { 0, 0, 0}}, // ( 8, 111) + { 0, { 0, 0, 0}}, // ( 9, 111) + { 0, { 0, 0, 0}}, // ( 10, 111) + { 0, { 0, 0, 0}}, // ( 11, 111) + { 0, { 0, 0, 0}}, // ( 12, 111) + { 0, { 0, 0, 0}}, // ( 13, 111) + { 0, { 0, 0, 0}}, // ( 14, 111) + { 0, { 0, 0, 0}}, // ( 15, 111) + { 0, { 0, 0, 0}}, // ( 16, 111) + { 0, { 0, 0, 0}}, // ( 17, 111) + { 0, { 0, 0, 0}}, // ( 18, 111) + { 0, { 0, 0, 0}}, // ( 19, 111) + { 0, { 0, 0, 0}}, // ( 20, 111) + { 0, { 0, 0, 0}}, // ( 21, 111) + { 0, { 0, 0, 0}}, // ( 22, 111) + { 0, { 0, 0, 0}}, // ( 23, 111) + { 0, { 0, 0, 0}}, // ( 24, 111) + { 0, { 0, 0, 0}}, // ( 25, 111) + { 0, { 0, 0, 0}}, // ( 26, 111) + { 0, { 0, 0, 0}}, // ( 27, 111) + { 0, { 0, 0, 0}}, // ( 28, 111) + { 0, { 0, 0, 0}}, // ( 29, 111) + { 0, { 0, 0, 0}}, // ( 30, 111) + { 0, { 0, 0, 0}}, // ( 31, 111) + { 0, { 0, 0, 0}}, // ( 32, 111) + { 0, { 0, 0, 0}}, // ( 33, 111) + { 0, { 0, 0, 0}}, // ( 34, 111) + { 0, { 0, 0, 0}}, // ( 35, 111) + { 0, { 0, 0, 0}}, // ( 36, 111) + { 0, { 0, 0, 0}}, // ( 37, 111) + { 0, { 0, 0, 0}}, // ( 38, 111) + { 0, { 0, 0, 0}}, // ( 39, 111) + { 0, { 0, 0, 0}}, // ( 40, 111) + { 0, { 0, 0, 0}}, // ( 41, 111) + { 0, { 0, 0, 0}}, // ( 42, 111) + { 0, { 0, 0, 0}}, // ( 43, 111) + { 0, { 0, 0, 0}}, // ( 44, 111) + { 0, { 0, 0, 0}}, // ( 45, 111) + { 0, { 0, 0, 0}}, // ( 46, 111) + { 0, { 0, 0, 0}}, // ( 47, 111) + { 0, { 0, 0, 0}}, // ( 48, 111) + { 0, { 0, 0, 0}}, // ( 49, 111) + { 0, { 0, 0, 0}}, // ( 50, 111) + { 0, { 0, 0, 0}}, // ( 51, 111) + { 0, { 0, 0, 0}}, // ( 52, 111) + { 0, { 0, 0, 0}}, // ( 53, 111) + { 0, { 0, 0, 0}}, // ( 54, 111) + { 0, { 0, 0, 0}}, // ( 55, 111) + { 0, { 0, 0, 0}}, // ( 56, 111) + { 0, { 0, 0, 0}}, // ( 57, 111) + { 0, { 0, 0, 0}}, // ( 58, 111) + { 0, { 0, 0, 0}}, // ( 59, 111) + { 0, { 0, 0, 0}}, // ( 60, 111) + { 0, { 0, 0, 0}}, // ( 61, 111) + { 0, { 0, 0, 0}}, // ( 62, 111) + { 0, { 0, 0, 0}}, // ( 63, 111) + { 0, { 0, 0, 0}}, // ( 64, 111) + { 0, { 0, 0, 0}}, // ( 65, 111) + { 0, { 0, 0, 0}}, // ( 66, 111) + { 0, { 0, 0, 0}}, // ( 67, 111) + { 0, { 0, 0, 0}}, // ( 68, 111) + { 0, { 0, 0, 0}}, // ( 69, 111) + { 0, { 0, 0, 0}}, // ( 70, 111) + { 0, { 0, 0, 0}}, // ( 71, 111) + { 0, { 0, 0, 0}}, // ( 72, 111) + { 0, { 0, 0, 0}}, // ( 73, 111) + { 0, { 0, 0, 0}}, // ( 74, 111) + { 0, { 0, 0, 0}}, // ( 75, 111) + { 0, { 0, 0, 0}}, // ( 76, 111) + { 0, { 0, 0, 0}}, // ( 77, 111) + { 0, { 0, 0, 0}}, // ( 78, 111) + { 0, { 0, 0, 0}}, // ( 79, 111) + { 0, { 0, 0, 0}}, // ( 80, 111) + { 0, { 0, 0, 0}}, // ( 81, 111) + { 0, { 0, 0, 0}}, // ( 82, 111) + { 0, { 0, 0, 0}}, // ( 83, 111) + { 0, { 0, 0, 0}}, // ( 84, 111) + { 0, { 0, 0, 0}}, // ( 85, 111) + { 0, { 0, 0, 0}}, // ( 86, 111) + { 0, { 0, 0, 0}}, // ( 87, 111) + { 0, { 0, 0, 0}}, // ( 88, 111) + { 0, { 0, 0, 0}}, // ( 89, 111) + { 0, { 0, 0, 0}}, // ( 90, 111) + { 0, { 0, 0, 0}}, // ( 91, 111) + { 0, { 0, 0, 0}}, // ( 92, 111) + { 0, { 0, 0, 0}}, // ( 93, 111) + { 0, { 0, 0, 0}}, // ( 94, 111) + { 0, { 0, 0, 0}}, // ( 95, 111) + { 0, { 0, 0, 0}}, // ( 96, 111) + { 0, { 0, 0, 0}}, // ( 97, 111) + { 0, { 0, 0, 0}}, // ( 98, 111) + { 0, { 0, 0, 0}}, // ( 99, 111) + { 0, { 0, 0, 0}}, // (100, 111) + { 0, { 0, 0, 0}}, // (101, 111) + { 0, { 0, 0, 0}}, // (102, 111) + { 0, { 0, 0, 0}}, // (103, 111) + { 0, { 0, 0, 0}}, // (104, 111) + { 0, { 0, 0, 0}}, // (105, 111) + { 0, { 0, 0, 0}}, // (106, 111) + { 0, { 0, 0, 0}}, // (107, 111) + { 0, { 0, 0, 0}}, // (108, 111) + { 0, { 0, 0, 0}}, // (109, 111) + { 0, { 0, 0, 0}}, // (110, 111) + { 0, { 0, 0, 0}}, // (111, 111) + { 0, { 0, 0, 0}}, // (112, 111) + { 0, { 0, 0, 0}}, // (113, 111) + { 0, { 0, 0, 0}}, // (114, 111) + { 0, { 0, 0, 0}}, // (115, 111) + { 0, { 0, 0, 0}}, // (116, 111) + { 0, { 0, 0, 0}}, // (117, 111) + { 0, { 0, 0, 0}}, // (118, 111) + { 0, { 0, 0, 0}}, // (119, 111) + { 0, { 0, 0, 0}}, // (120, 111) + { 0, { 0, 0, 0}}, // (121, 111) + { 0, { 0, 0, 0}}, // (122, 111) + { 0, { 0, 0, 0}}, // (123, 111) + { 0, { 0, 0, 0}}, // (124, 111) + { 0, { 0, 0, 0}}, // (125, 111) + { 0, { 0, 0, 0}}, // (126, 111) + { 0, { 0, 0, 0}}, // (127, 111) + { 0, { 0, 0, 0}}, // (128, 111) + { 0, { 0, 0, 0}}, // (129, 111) + { 0, { 0, 0, 0}}, // (130, 111) + { 0, { 0, 0, 0}}, // (131, 111) + { 0, { 0, 0, 0}}, // (132, 111) + { 0, { 0, 0, 0}}, // (133, 111) + { 0, { 0, 0, 0}}, // (134, 111) + { 0, { 0, 0, 0}}, // (135, 111) + { 0, { 0, 0, 0}}, // (136, 111) + { 0, { 0, 0, 0}}, // (137, 111) + { 0, { 0, 0, 0}}, // (138, 111) + { 0, { 0, 0, 0}}, // (139, 111) + { 0, { 0, 0, 0}}, // (140, 111) + { 0, { 0, 0, 0}}, // (141, 111) + { 0, { 0, 0, 0}}, // (142, 111) + { 0, { 0, 0, 0}}, // (143, 111) + { 0, { 0, 0, 0}}, // (144, 111) + { 0, { 0, 0, 0}}, // (145, 111) + { 0, { 0, 0, 0}}, // (146, 111) + { 0, { 0, 0, 0}}, // (147, 111) + { 0, { 0, 0, 0}}, // (148, 111) + { 0, { 0, 0, 0}}, // (149, 111) + { 0, { 0, 0, 0}}, // (150, 111) + { 0, { 0, 0, 0}}, // (151, 111) + { 0, { 0, 0, 0}}, // (152, 111) + { 0, { 0, 0, 0}}, // (153, 111) + { 0, { 0, 0, 0}}, // (154, 111) + { 0, { 0, 0, 0}}, // (155, 111) + { 0, { 0, 0, 0}}, // (156, 111) + { 0, { 0, 0, 0}}, // (157, 111) + { 0, { 0, 0, 0}}, // (158, 111) + { 0, { 0, 0, 0}}, // (159, 111) + { 0, { 0, 0, 0}}, // (160, 111) + { 0, { 0, 0, 0}}, // (161, 111) + { 0, { 0, 0, 0}}, // (162, 111) + { 0, { 0, 0, 0}}, // (163, 111) + { 0, { 0, 0, 0}}, // (164, 111) + { 0, { 0, 0, 0}}, // (165, 111) + { 0, { 0, 0, 0}}, // (166, 111) + { 0, { 0, 0, 0}}, // (167, 111) + { 0, { 0, 0, 0}}, // (168, 111) + { 0, { 0, 0, 0}}, // (169, 111) + { 0, { 0, 0, 0}}, // (170, 111) + { 0, { 0, 0, 0}}, // (171, 111) + { 0, { 0, 0, 0}}, // (172, 111) + { 0, { 0, 0, 0}}, // (173, 111) + { 0, { 0, 0, 0}}, // (174, 111) + { 83, { 0, 0, 0}}, // (175, 111) + {128, { 0, 0, 0}}, // (176, 111) + {128, { 0, 0, 0}}, // (177, 111) + {128, { 0, 0, 0}}, // (178, 111) + {128, { 0, 0, 0}}, // (179, 111) + {128, { 0, 0, 0}}, // ( 0, 112) + {128, { 0, 0, 0}}, // ( 1, 112) + {128, { 0, 0, 0}}, // ( 2, 112) + {128, { 0, 0, 0}}, // ( 3, 112) + {117, { 0, 0, 0}}, // ( 4, 112) + { 1, { 0, 0, 0}}, // ( 5, 112) + { 0, { 0, 0, 0}}, // ( 6, 112) + { 0, { 0, 0, 0}}, // ( 7, 112) + { 0, { 0, 0, 0}}, // ( 8, 112) + { 0, { 0, 0, 0}}, // ( 9, 112) + { 0, { 0, 0, 0}}, // ( 10, 112) + { 0, { 0, 0, 0}}, // ( 11, 112) + { 0, { 0, 0, 0}}, // ( 12, 112) + { 0, { 0, 0, 0}}, // ( 13, 112) + { 0, { 0, 0, 0}}, // ( 14, 112) + { 0, { 0, 0, 0}}, // ( 15, 112) + { 0, { 0, 0, 0}}, // ( 16, 112) + { 0, { 0, 0, 0}}, // ( 17, 112) + { 0, { 0, 0, 0}}, // ( 18, 112) + { 0, { 0, 0, 0}}, // ( 19, 112) + { 0, { 0, 0, 0}}, // ( 20, 112) + { 0, { 0, 0, 0}}, // ( 21, 112) + { 0, { 0, 0, 0}}, // ( 22, 112) + { 0, { 0, 0, 0}}, // ( 23, 112) + { 0, { 0, 0, 0}}, // ( 24, 112) + { 0, { 0, 0, 0}}, // ( 25, 112) + { 0, { 0, 0, 0}}, // ( 26, 112) + { 0, { 0, 0, 0}}, // ( 27, 112) + { 0, { 0, 0, 0}}, // ( 28, 112) + { 0, { 0, 0, 0}}, // ( 29, 112) + { 0, { 0, 0, 0}}, // ( 30, 112) + { 0, { 0, 0, 0}}, // ( 31, 112) + { 0, { 0, 0, 0}}, // ( 32, 112) + { 0, { 0, 0, 0}}, // ( 33, 112) + { 0, { 0, 0, 0}}, // ( 34, 112) + { 0, { 0, 0, 0}}, // ( 35, 112) + { 0, { 0, 0, 0}}, // ( 36, 112) + { 0, { 0, 0, 0}}, // ( 37, 112) + { 0, { 0, 0, 0}}, // ( 38, 112) + { 0, { 0, 0, 0}}, // ( 39, 112) + { 0, { 0, 0, 0}}, // ( 40, 112) + { 0, { 0, 0, 0}}, // ( 41, 112) + { 0, { 0, 0, 0}}, // ( 42, 112) + { 0, { 0, 0, 0}}, // ( 43, 112) + { 0, { 0, 0, 0}}, // ( 44, 112) + { 0, { 0, 0, 0}}, // ( 45, 112) + { 0, { 0, 0, 0}}, // ( 46, 112) + { 0, { 0, 0, 0}}, // ( 47, 112) + { 0, { 0, 0, 0}}, // ( 48, 112) + { 0, { 0, 0, 0}}, // ( 49, 112) + { 0, { 0, 0, 0}}, // ( 50, 112) + { 0, { 0, 0, 0}}, // ( 51, 112) + { 0, { 0, 0, 0}}, // ( 52, 112) + { 0, { 0, 0, 0}}, // ( 53, 112) + { 0, { 0, 0, 0}}, // ( 54, 112) + { 0, { 0, 0, 0}}, // ( 55, 112) + { 0, { 0, 0, 0}}, // ( 56, 112) + { 0, { 0, 0, 0}}, // ( 57, 112) + { 0, { 0, 0, 0}}, // ( 58, 112) + { 0, { 0, 0, 0}}, // ( 59, 112) + { 0, { 0, 0, 0}}, // ( 60, 112) + { 0, { 0, 0, 0}}, // ( 61, 112) + { 0, { 0, 0, 0}}, // ( 62, 112) + { 0, { 0, 0, 0}}, // ( 63, 112) + { 0, { 0, 0, 0}}, // ( 64, 112) + { 0, { 0, 0, 0}}, // ( 65, 112) + { 0, { 0, 0, 0}}, // ( 66, 112) + { 0, { 0, 0, 0}}, // ( 67, 112) + { 0, { 0, 0, 0}}, // ( 68, 112) + { 0, { 0, 0, 0}}, // ( 69, 112) + { 0, { 0, 0, 0}}, // ( 70, 112) + { 0, { 0, 0, 0}}, // ( 71, 112) + { 0, { 0, 0, 0}}, // ( 72, 112) + { 0, { 0, 0, 0}}, // ( 73, 112) + { 0, { 0, 0, 0}}, // ( 74, 112) + { 0, { 0, 0, 0}}, // ( 75, 112) + { 0, { 0, 0, 0}}, // ( 76, 112) + { 0, { 0, 0, 0}}, // ( 77, 112) + { 0, { 0, 0, 0}}, // ( 78, 112) + { 0, { 0, 0, 0}}, // ( 79, 112) + { 0, { 0, 0, 0}}, // ( 80, 112) + { 0, { 0, 0, 0}}, // ( 81, 112) + { 0, { 0, 0, 0}}, // ( 82, 112) + { 0, { 0, 0, 0}}, // ( 83, 112) + { 0, { 0, 0, 0}}, // ( 84, 112) + { 0, { 0, 0, 0}}, // ( 85, 112) + { 0, { 0, 0, 0}}, // ( 86, 112) + { 0, { 0, 0, 0}}, // ( 87, 112) + { 0, { 0, 0, 0}}, // ( 88, 112) + { 0, { 0, 0, 0}}, // ( 89, 112) + { 0, { 0, 0, 0}}, // ( 90, 112) + { 0, { 0, 0, 0}}, // ( 91, 112) + { 0, { 0, 0, 0}}, // ( 92, 112) + { 0, { 0, 0, 0}}, // ( 93, 112) + { 0, { 0, 0, 0}}, // ( 94, 112) + { 0, { 0, 0, 0}}, // ( 95, 112) + { 0, { 0, 0, 0}}, // ( 96, 112) + { 0, { 0, 0, 0}}, // ( 97, 112) + { 0, { 0, 0, 0}}, // ( 98, 112) + { 0, { 0, 0, 0}}, // ( 99, 112) + { 0, { 0, 0, 0}}, // (100, 112) + { 0, { 0, 0, 0}}, // (101, 112) + { 0, { 0, 0, 0}}, // (102, 112) + { 0, { 0, 0, 0}}, // (103, 112) + { 0, { 0, 0, 0}}, // (104, 112) + { 0, { 0, 0, 0}}, // (105, 112) + { 0, { 0, 0, 0}}, // (106, 112) + { 0, { 0, 0, 0}}, // (107, 112) + { 0, { 0, 0, 0}}, // (108, 112) + { 0, { 0, 0, 0}}, // (109, 112) + { 0, { 0, 0, 0}}, // (110, 112) + { 0, { 0, 0, 0}}, // (111, 112) + { 0, { 0, 0, 0}}, // (112, 112) + { 0, { 0, 0, 0}}, // (113, 112) + { 0, { 0, 0, 0}}, // (114, 112) + { 0, { 0, 0, 0}}, // (115, 112) + { 0, { 0, 0, 0}}, // (116, 112) + { 0, { 0, 0, 0}}, // (117, 112) + { 0, { 0, 0, 0}}, // (118, 112) + { 0, { 0, 0, 0}}, // (119, 112) + { 0, { 0, 0, 0}}, // (120, 112) + { 0, { 0, 0, 0}}, // (121, 112) + { 0, { 0, 0, 0}}, // (122, 112) + { 0, { 0, 0, 0}}, // (123, 112) + { 0, { 0, 0, 0}}, // (124, 112) + { 0, { 0, 0, 0}}, // (125, 112) + { 0, { 0, 0, 0}}, // (126, 112) + { 0, { 0, 0, 0}}, // (127, 112) + { 0, { 0, 0, 0}}, // (128, 112) + { 0, { 0, 0, 0}}, // (129, 112) + { 0, { 0, 0, 0}}, // (130, 112) + { 0, { 0, 0, 0}}, // (131, 112) + { 0, { 0, 0, 0}}, // (132, 112) + { 0, { 0, 0, 0}}, // (133, 112) + { 0, { 0, 0, 0}}, // (134, 112) + { 0, { 0, 0, 0}}, // (135, 112) + { 0, { 0, 0, 0}}, // (136, 112) + { 0, { 0, 0, 0}}, // (137, 112) + { 0, { 0, 0, 0}}, // (138, 112) + { 0, { 0, 0, 0}}, // (139, 112) + { 0, { 0, 0, 0}}, // (140, 112) + { 0, { 0, 0, 0}}, // (141, 112) + { 0, { 0, 0, 0}}, // (142, 112) + { 0, { 0, 0, 0}}, // (143, 112) + { 0, { 0, 0, 0}}, // (144, 112) + { 0, { 0, 0, 0}}, // (145, 112) + { 0, { 0, 0, 0}}, // (146, 112) + { 0, { 0, 0, 0}}, // (147, 112) + { 0, { 0, 0, 0}}, // (148, 112) + { 0, { 0, 0, 0}}, // (149, 112) + { 0, { 0, 0, 0}}, // (150, 112) + { 0, { 0, 0, 0}}, // (151, 112) + { 0, { 0, 0, 0}}, // (152, 112) + { 0, { 0, 0, 0}}, // (153, 112) + { 0, { 0, 0, 0}}, // (154, 112) + { 0, { 0, 0, 0}}, // (155, 112) + { 0, { 0, 0, 0}}, // (156, 112) + { 0, { 0, 0, 0}}, // (157, 112) + { 0, { 0, 0, 0}}, // (158, 112) + { 0, { 0, 0, 0}}, // (159, 112) + { 0, { 0, 0, 0}}, // (160, 112) + { 0, { 0, 0, 0}}, // (161, 112) + { 0, { 0, 0, 0}}, // (162, 112) + { 0, { 0, 0, 0}}, // (163, 112) + { 0, { 0, 0, 0}}, // (164, 112) + { 0, { 0, 0, 0}}, // (165, 112) + { 0, { 0, 0, 0}}, // (166, 112) + { 0, { 0, 0, 0}}, // (167, 112) + { 0, { 0, 0, 0}}, // (168, 112) + { 0, { 0, 0, 0}}, // (169, 112) + { 0, { 0, 0, 0}}, // (170, 112) + { 0, { 0, 0, 0}}, // (171, 112) + { 0, { 0, 0, 0}}, // (172, 112) + { 0, { 0, 0, 0}}, // (173, 112) + { 1, { 0, 0, 0}}, // (174, 112) + {115, { 0, 0, 0}}, // (175, 112) + {128, { 0, 0, 0}}, // (176, 112) + {128, { 0, 0, 0}}, // (177, 112) + {128, { 0, 0, 0}}, // (178, 112) + {128, { 0, 0, 0}}, // (179, 112) + {128, { 0, 0, 0}}, // ( 0, 113) + {128, { 0, 0, 0}}, // ( 1, 113) + {128, { 0, 0, 0}}, // ( 2, 113) + {128, { 0, 0, 0}}, // ( 3, 113) + {128, { 0, 0, 0}}, // ( 4, 113) + { 25, { 0, 0, 0}}, // ( 5, 113) + { 0, { 0, 0, 0}}, // ( 6, 113) + { 0, { 0, 0, 0}}, // ( 7, 113) + { 0, { 0, 0, 0}}, // ( 8, 113) + { 0, { 0, 0, 0}}, // ( 9, 113) + { 0, { 0, 0, 0}}, // ( 10, 113) + { 0, { 0, 0, 0}}, // ( 11, 113) + { 0, { 0, 0, 0}}, // ( 12, 113) + { 0, { 0, 0, 0}}, // ( 13, 113) + { 0, { 0, 0, 0}}, // ( 14, 113) + { 0, { 0, 0, 0}}, // ( 15, 113) + { 0, { 0, 0, 0}}, // ( 16, 113) + { 0, { 0, 0, 0}}, // ( 17, 113) + { 0, { 0, 0, 0}}, // ( 18, 113) + { 0, { 0, 0, 0}}, // ( 19, 113) + { 0, { 0, 0, 0}}, // ( 20, 113) + { 0, { 0, 0, 0}}, // ( 21, 113) + { 0, { 0, 0, 0}}, // ( 22, 113) + { 0, { 0, 0, 0}}, // ( 23, 113) + { 0, { 0, 0, 0}}, // ( 24, 113) + { 0, { 0, 0, 0}}, // ( 25, 113) + { 0, { 0, 0, 0}}, // ( 26, 113) + { 0, { 0, 0, 0}}, // ( 27, 113) + { 0, { 0, 0, 0}}, // ( 28, 113) + { 0, { 0, 0, 0}}, // ( 29, 113) + { 0, { 0, 0, 0}}, // ( 30, 113) + { 0, { 0, 0, 0}}, // ( 31, 113) + { 0, { 0, 0, 0}}, // ( 32, 113) + { 0, { 0, 0, 0}}, // ( 33, 113) + { 0, { 0, 0, 0}}, // ( 34, 113) + { 0, { 0, 0, 0}}, // ( 35, 113) + { 0, { 0, 0, 0}}, // ( 36, 113) + { 0, { 0, 0, 0}}, // ( 37, 113) + { 0, { 0, 0, 0}}, // ( 38, 113) + { 0, { 0, 0, 0}}, // ( 39, 113) + { 0, { 0, 0, 0}}, // ( 40, 113) + { 0, { 0, 0, 0}}, // ( 41, 113) + { 0, { 0, 0, 0}}, // ( 42, 113) + { 0, { 0, 0, 0}}, // ( 43, 113) + { 0, { 0, 0, 0}}, // ( 44, 113) + { 0, { 0, 0, 0}}, // ( 45, 113) + { 0, { 0, 0, 0}}, // ( 46, 113) + { 0, { 0, 0, 0}}, // ( 47, 113) + { 0, { 0, 0, 0}}, // ( 48, 113) + { 0, { 0, 0, 0}}, // ( 49, 113) + { 0, { 0, 0, 0}}, // ( 50, 113) + { 0, { 0, 0, 0}}, // ( 51, 113) + { 0, { 0, 0, 0}}, // ( 52, 113) + { 0, { 0, 0, 0}}, // ( 53, 113) + { 0, { 0, 0, 0}}, // ( 54, 113) + { 0, { 0, 0, 0}}, // ( 55, 113) + { 0, { 0, 0, 0}}, // ( 56, 113) + { 0, { 0, 0, 0}}, // ( 57, 113) + { 0, { 0, 0, 0}}, // ( 58, 113) + { 0, { 0, 0, 0}}, // ( 59, 113) + { 0, { 0, 0, 0}}, // ( 60, 113) + { 0, { 0, 0, 0}}, // ( 61, 113) + { 0, { 0, 0, 0}}, // ( 62, 113) + { 0, { 0, 0, 0}}, // ( 63, 113) + { 0, { 0, 0, 0}}, // ( 64, 113) + { 0, { 0, 0, 0}}, // ( 65, 113) + { 0, { 0, 0, 0}}, // ( 66, 113) + { 0, { 0, 0, 0}}, // ( 67, 113) + { 0, { 0, 0, 0}}, // ( 68, 113) + { 0, { 0, 0, 0}}, // ( 69, 113) + { 0, { 0, 0, 0}}, // ( 70, 113) + { 0, { 0, 0, 0}}, // ( 71, 113) + { 0, { 0, 0, 0}}, // ( 72, 113) + { 0, { 0, 0, 0}}, // ( 73, 113) + { 0, { 0, 0, 0}}, // ( 74, 113) + { 0, { 0, 0, 0}}, // ( 75, 113) + { 0, { 0, 0, 0}}, // ( 76, 113) + { 0, { 0, 0, 0}}, // ( 77, 113) + { 0, { 0, 0, 0}}, // ( 78, 113) + { 0, { 0, 0, 0}}, // ( 79, 113) + { 0, { 0, 0, 0}}, // ( 80, 113) + { 0, { 0, 0, 0}}, // ( 81, 113) + { 0, { 0, 0, 0}}, // ( 82, 113) + { 0, { 0, 0, 0}}, // ( 83, 113) + { 0, { 0, 0, 0}}, // ( 84, 113) + { 0, { 0, 0, 0}}, // ( 85, 113) + { 0, { 0, 0, 0}}, // ( 86, 113) + { 0, { 0, 0, 0}}, // ( 87, 113) + { 0, { 0, 0, 0}}, // ( 88, 113) + { 0, { 0, 0, 0}}, // ( 89, 113) + { 0, { 0, 0, 0}}, // ( 90, 113) + { 0, { 0, 0, 0}}, // ( 91, 113) + { 0, { 0, 0, 0}}, // ( 92, 113) + { 0, { 0, 0, 0}}, // ( 93, 113) + { 0, { 0, 0, 0}}, // ( 94, 113) + { 0, { 0, 0, 0}}, // ( 95, 113) + { 0, { 0, 0, 0}}, // ( 96, 113) + { 0, { 0, 0, 0}}, // ( 97, 113) + { 0, { 0, 0, 0}}, // ( 98, 113) + { 0, { 0, 0, 0}}, // ( 99, 113) + { 0, { 0, 0, 0}}, // (100, 113) + { 0, { 0, 0, 0}}, // (101, 113) + { 0, { 0, 0, 0}}, // (102, 113) + { 0, { 0, 0, 0}}, // (103, 113) + { 0, { 0, 0, 0}}, // (104, 113) + { 0, { 0, 0, 0}}, // (105, 113) + { 0, { 0, 0, 0}}, // (106, 113) + { 0, { 0, 0, 0}}, // (107, 113) + { 0, { 0, 0, 0}}, // (108, 113) + { 0, { 0, 0, 0}}, // (109, 113) + { 0, { 0, 0, 0}}, // (110, 113) + { 0, { 0, 0, 0}}, // (111, 113) + { 0, { 0, 0, 0}}, // (112, 113) + { 0, { 0, 0, 0}}, // (113, 113) + { 0, { 0, 0, 0}}, // (114, 113) + { 0, { 0, 0, 0}}, // (115, 113) + { 0, { 0, 0, 0}}, // (116, 113) + { 0, { 0, 0, 0}}, // (117, 113) + { 0, { 0, 0, 0}}, // (118, 113) + { 0, { 0, 0, 0}}, // (119, 113) + { 0, { 0, 0, 0}}, // (120, 113) + { 0, { 0, 0, 0}}, // (121, 113) + { 0, { 0, 0, 0}}, // (122, 113) + { 0, { 0, 0, 0}}, // (123, 113) + { 0, { 0, 0, 0}}, // (124, 113) + { 0, { 0, 0, 0}}, // (125, 113) + { 0, { 0, 0, 0}}, // (126, 113) + { 0, { 0, 0, 0}}, // (127, 113) + { 0, { 0, 0, 0}}, // (128, 113) + { 0, { 0, 0, 0}}, // (129, 113) + { 0, { 0, 0, 0}}, // (130, 113) + { 0, { 0, 0, 0}}, // (131, 113) + { 0, { 0, 0, 0}}, // (132, 113) + { 0, { 0, 0, 0}}, // (133, 113) + { 0, { 0, 0, 0}}, // (134, 113) + { 0, { 0, 0, 0}}, // (135, 113) + { 0, { 0, 0, 0}}, // (136, 113) + { 0, { 0, 0, 0}}, // (137, 113) + { 0, { 0, 0, 0}}, // (138, 113) + { 0, { 0, 0, 0}}, // (139, 113) + { 0, { 0, 0, 0}}, // (140, 113) + { 0, { 0, 0, 0}}, // (141, 113) + { 0, { 0, 0, 0}}, // (142, 113) + { 0, { 0, 0, 0}}, // (143, 113) + { 0, { 0, 0, 0}}, // (144, 113) + { 0, { 0, 0, 0}}, // (145, 113) + { 0, { 0, 0, 0}}, // (146, 113) + { 0, { 0, 0, 0}}, // (147, 113) + { 0, { 0, 0, 0}}, // (148, 113) + { 0, { 0, 0, 0}}, // (149, 113) + { 0, { 0, 0, 0}}, // (150, 113) + { 0, { 0, 0, 0}}, // (151, 113) + { 0, { 0, 0, 0}}, // (152, 113) + { 0, { 0, 0, 0}}, // (153, 113) + { 0, { 0, 0, 0}}, // (154, 113) + { 0, { 0, 0, 0}}, // (155, 113) + { 0, { 0, 0, 0}}, // (156, 113) + { 0, { 0, 0, 0}}, // (157, 113) + { 0, { 0, 0, 0}}, // (158, 113) + { 0, { 0, 0, 0}}, // (159, 113) + { 0, { 0, 0, 0}}, // (160, 113) + { 0, { 0, 0, 0}}, // (161, 113) + { 0, { 0, 0, 0}}, // (162, 113) + { 0, { 0, 0, 0}}, // (163, 113) + { 0, { 0, 0, 0}}, // (164, 113) + { 0, { 0, 0, 0}}, // (165, 113) + { 0, { 0, 0, 0}}, // (166, 113) + { 0, { 0, 0, 0}}, // (167, 113) + { 0, { 0, 0, 0}}, // (168, 113) + { 0, { 0, 0, 0}}, // (169, 113) + { 0, { 0, 0, 0}}, // (170, 113) + { 0, { 0, 0, 0}}, // (171, 113) + { 0, { 0, 0, 0}}, // (172, 113) + { 0, { 0, 0, 0}}, // (173, 113) + { 23, { 0, 0, 0}}, // (174, 113) + {128, { 0, 0, 0}}, // (175, 113) + {128, { 0, 0, 0}}, // (176, 113) + {128, { 0, 0, 0}}, // (177, 113) + {128, { 0, 0, 0}}, // (178, 113) + {128, { 0, 0, 0}}, // (179, 113) + {128, { 0, 0, 0}}, // ( 0, 114) + {128, { 0, 0, 0}}, // ( 1, 114) + {128, { 0, 0, 0}}, // ( 2, 114) + {128, { 0, 0, 0}}, // ( 3, 114) + {128, { 0, 0, 0}}, // ( 4, 114) + { 62, { 0, 0, 0}}, // ( 5, 114) + { 0, { 0, 0, 0}}, // ( 6, 114) + { 0, { 0, 0, 0}}, // ( 7, 114) + { 0, { 0, 0, 0}}, // ( 8, 114) + { 0, { 0, 0, 0}}, // ( 9, 114) + { 0, { 0, 0, 0}}, // ( 10, 114) + { 0, { 0, 0, 0}}, // ( 11, 114) + { 0, { 0, 0, 0}}, // ( 12, 114) + { 0, { 0, 0, 0}}, // ( 13, 114) + { 0, { 0, 0, 0}}, // ( 14, 114) + { 0, { 0, 0, 0}}, // ( 15, 114) + { 0, { 0, 0, 0}}, // ( 16, 114) + { 0, { 0, 0, 0}}, // ( 17, 114) + { 0, { 0, 0, 0}}, // ( 18, 114) + { 0, { 0, 0, 0}}, // ( 19, 114) + { 0, { 0, 0, 0}}, // ( 20, 114) + { 0, { 0, 0, 0}}, // ( 21, 114) + { 0, { 0, 0, 0}}, // ( 22, 114) + { 0, { 0, 0, 0}}, // ( 23, 114) + { 0, { 0, 0, 0}}, // ( 24, 114) + { 0, { 0, 0, 0}}, // ( 25, 114) + { 0, { 0, 0, 0}}, // ( 26, 114) + { 0, { 0, 0, 0}}, // ( 27, 114) + { 0, { 0, 0, 0}}, // ( 28, 114) + { 0, { 0, 0, 0}}, // ( 29, 114) + { 0, { 0, 0, 0}}, // ( 30, 114) + { 0, { 0, 0, 0}}, // ( 31, 114) + { 0, { 0, 0, 0}}, // ( 32, 114) + { 0, { 0, 0, 0}}, // ( 33, 114) + { 0, { 0, 0, 0}}, // ( 34, 114) + { 0, { 0, 0, 0}}, // ( 35, 114) + { 0, { 0, 0, 0}}, // ( 36, 114) + { 0, { 0, 0, 0}}, // ( 37, 114) + { 0, { 0, 0, 0}}, // ( 38, 114) + { 0, { 0, 0, 0}}, // ( 39, 114) + { 0, { 0, 0, 0}}, // ( 40, 114) + { 0, { 0, 0, 0}}, // ( 41, 114) + { 0, { 0, 0, 0}}, // ( 42, 114) + { 0, { 0, 0, 0}}, // ( 43, 114) + { 0, { 0, 0, 0}}, // ( 44, 114) + { 0, { 0, 0, 0}}, // ( 45, 114) + { 0, { 0, 0, 0}}, // ( 46, 114) + { 0, { 0, 0, 0}}, // ( 47, 114) + { 0, { 0, 0, 0}}, // ( 48, 114) + { 0, { 0, 0, 0}}, // ( 49, 114) + { 0, { 0, 0, 0}}, // ( 50, 114) + { 0, { 0, 0, 0}}, // ( 51, 114) + { 0, { 0, 0, 0}}, // ( 52, 114) + { 0, { 0, 0, 0}}, // ( 53, 114) + { 0, { 0, 0, 0}}, // ( 54, 114) + { 0, { 0, 0, 0}}, // ( 55, 114) + { 0, { 0, 0, 0}}, // ( 56, 114) + { 0, { 0, 0, 0}}, // ( 57, 114) + { 0, { 0, 0, 0}}, // ( 58, 114) + { 0, { 0, 0, 0}}, // ( 59, 114) + { 0, { 0, 0, 0}}, // ( 60, 114) + { 0, { 0, 0, 0}}, // ( 61, 114) + { 0, { 0, 0, 0}}, // ( 62, 114) + { 0, { 0, 0, 0}}, // ( 63, 114) + { 0, { 0, 0, 0}}, // ( 64, 114) + { 0, { 0, 0, 0}}, // ( 65, 114) + { 0, { 0, 0, 0}}, // ( 66, 114) + { 0, { 0, 0, 0}}, // ( 67, 114) + { 0, { 0, 0, 0}}, // ( 68, 114) + { 0, { 0, 0, 0}}, // ( 69, 114) + { 0, { 0, 0, 0}}, // ( 70, 114) + { 0, { 0, 0, 0}}, // ( 71, 114) + { 0, { 0, 0, 0}}, // ( 72, 114) + { 0, { 0, 0, 0}}, // ( 73, 114) + { 0, { 0, 0, 0}}, // ( 74, 114) + { 0, { 0, 0, 0}}, // ( 75, 114) + { 0, { 0, 0, 0}}, // ( 76, 114) + { 0, { 0, 0, 0}}, // ( 77, 114) + { 0, { 0, 0, 0}}, // ( 78, 114) + { 0, { 0, 0, 0}}, // ( 79, 114) + { 0, { 0, 0, 0}}, // ( 80, 114) + { 0, { 0, 0, 0}}, // ( 81, 114) + { 0, { 0, 0, 0}}, // ( 82, 114) + { 0, { 0, 0, 0}}, // ( 83, 114) + { 0, { 0, 0, 0}}, // ( 84, 114) + { 0, { 0, 0, 0}}, // ( 85, 114) + { 0, { 0, 0, 0}}, // ( 86, 114) + { 0, { 0, 0, 0}}, // ( 87, 114) + { 0, { 0, 0, 0}}, // ( 88, 114) + { 0, { 0, 0, 0}}, // ( 89, 114) + { 0, { 0, 0, 0}}, // ( 90, 114) + { 0, { 0, 0, 0}}, // ( 91, 114) + { 0, { 0, 0, 0}}, // ( 92, 114) + { 0, { 0, 0, 0}}, // ( 93, 114) + { 0, { 0, 0, 0}}, // ( 94, 114) + { 0, { 0, 0, 0}}, // ( 95, 114) + { 0, { 0, 0, 0}}, // ( 96, 114) + { 0, { 0, 0, 0}}, // ( 97, 114) + { 0, { 0, 0, 0}}, // ( 98, 114) + { 0, { 0, 0, 0}}, // ( 99, 114) + { 0, { 0, 0, 0}}, // (100, 114) + { 0, { 0, 0, 0}}, // (101, 114) + { 0, { 0, 0, 0}}, // (102, 114) + { 0, { 0, 0, 0}}, // (103, 114) + { 0, { 0, 0, 0}}, // (104, 114) + { 0, { 0, 0, 0}}, // (105, 114) + { 0, { 0, 0, 0}}, // (106, 114) + { 0, { 0, 0, 0}}, // (107, 114) + { 0, { 0, 0, 0}}, // (108, 114) + { 0, { 0, 0, 0}}, // (109, 114) + { 0, { 0, 0, 0}}, // (110, 114) + { 0, { 0, 0, 0}}, // (111, 114) + { 0, { 0, 0, 0}}, // (112, 114) + { 0, { 0, 0, 0}}, // (113, 114) + { 0, { 0, 0, 0}}, // (114, 114) + { 0, { 0, 0, 0}}, // (115, 114) + { 0, { 0, 0, 0}}, // (116, 114) + { 0, { 0, 0, 0}}, // (117, 114) + { 0, { 0, 0, 0}}, // (118, 114) + { 0, { 0, 0, 0}}, // (119, 114) + { 0, { 0, 0, 0}}, // (120, 114) + { 0, { 0, 0, 0}}, // (121, 114) + { 0, { 0, 0, 0}}, // (122, 114) + { 0, { 0, 0, 0}}, // (123, 114) + { 0, { 0, 0, 0}}, // (124, 114) + { 0, { 0, 0, 0}}, // (125, 114) + { 0, { 0, 0, 0}}, // (126, 114) + { 0, { 0, 0, 0}}, // (127, 114) + { 0, { 0, 0, 0}}, // (128, 114) + { 0, { 0, 0, 0}}, // (129, 114) + { 0, { 0, 0, 0}}, // (130, 114) + { 0, { 0, 0, 0}}, // (131, 114) + { 0, { 0, 0, 0}}, // (132, 114) + { 0, { 0, 0, 0}}, // (133, 114) + { 0, { 0, 0, 0}}, // (134, 114) + { 0, { 0, 0, 0}}, // (135, 114) + { 0, { 0, 0, 0}}, // (136, 114) + { 0, { 0, 0, 0}}, // (137, 114) + { 0, { 0, 0, 0}}, // (138, 114) + { 0, { 0, 0, 0}}, // (139, 114) + { 0, { 0, 0, 0}}, // (140, 114) + { 0, { 0, 0, 0}}, // (141, 114) + { 0, { 0, 0, 0}}, // (142, 114) + { 0, { 0, 0, 0}}, // (143, 114) + { 0, { 0, 0, 0}}, // (144, 114) + { 0, { 0, 0, 0}}, // (145, 114) + { 0, { 0, 0, 0}}, // (146, 114) + { 0, { 0, 0, 0}}, // (147, 114) + { 0, { 0, 0, 0}}, // (148, 114) + { 0, { 0, 0, 0}}, // (149, 114) + { 0, { 0, 0, 0}}, // (150, 114) + { 0, { 0, 0, 0}}, // (151, 114) + { 0, { 0, 0, 0}}, // (152, 114) + { 0, { 0, 0, 0}}, // (153, 114) + { 0, { 0, 0, 0}}, // (154, 114) + { 0, { 0, 0, 0}}, // (155, 114) + { 0, { 0, 0, 0}}, // (156, 114) + { 0, { 0, 0, 0}}, // (157, 114) + { 0, { 0, 0, 0}}, // (158, 114) + { 0, { 0, 0, 0}}, // (159, 114) + { 0, { 0, 0, 0}}, // (160, 114) + { 0, { 0, 0, 0}}, // (161, 114) + { 0, { 0, 0, 0}}, // (162, 114) + { 0, { 0, 0, 0}}, // (163, 114) + { 0, { 0, 0, 0}}, // (164, 114) + { 0, { 0, 0, 0}}, // (165, 114) + { 0, { 0, 0, 0}}, // (166, 114) + { 0, { 0, 0, 0}}, // (167, 114) + { 0, { 0, 0, 0}}, // (168, 114) + { 0, { 0, 0, 0}}, // (169, 114) + { 0, { 0, 0, 0}}, // (170, 114) + { 0, { 0, 0, 0}}, // (171, 114) + { 0, { 0, 0, 0}}, // (172, 114) + { 0, { 0, 0, 0}}, // (173, 114) + { 58, { 0, 0, 0}}, // (174, 114) + {128, { 0, 0, 0}}, // (175, 114) + {128, { 0, 0, 0}}, // (176, 114) + {128, { 0, 0, 0}}, // (177, 114) + {128, { 0, 0, 0}}, // (178, 114) + {128, { 0, 0, 0}}, // (179, 114) + {128, { 0, 0, 0}}, // ( 0, 115) + {128, { 0, 0, 0}}, // ( 1, 115) + {128, { 0, 0, 0}}, // ( 2, 115) + {128, { 0, 0, 0}}, // ( 3, 115) + {128, { 0, 0, 0}}, // ( 4, 115) + { 98, { 0, 0, 0}}, // ( 5, 115) + { 0, { 0, 0, 0}}, // ( 6, 115) + { 0, { 0, 0, 0}}, // ( 7, 115) + { 0, { 0, 0, 0}}, // ( 8, 115) + { 0, { 0, 0, 0}}, // ( 9, 115) + { 0, { 0, 0, 0}}, // ( 10, 115) + { 0, { 0, 0, 0}}, // ( 11, 115) + { 0, { 0, 0, 0}}, // ( 12, 115) + { 0, { 0, 0, 0}}, // ( 13, 115) + { 0, { 0, 0, 0}}, // ( 14, 115) + { 0, { 0, 0, 0}}, // ( 15, 115) + { 0, { 0, 0, 0}}, // ( 16, 115) + { 0, { 0, 0, 0}}, // ( 17, 115) + { 0, { 0, 0, 0}}, // ( 18, 115) + { 0, { 0, 0, 0}}, // ( 19, 115) + { 0, { 0, 0, 0}}, // ( 20, 115) + { 0, { 0, 0, 0}}, // ( 21, 115) + { 0, { 0, 0, 0}}, // ( 22, 115) + { 0, { 0, 0, 0}}, // ( 23, 115) + { 0, { 0, 0, 0}}, // ( 24, 115) + { 0, { 0, 0, 0}}, // ( 25, 115) + { 0, { 0, 0, 0}}, // ( 26, 115) + { 0, { 0, 0, 0}}, // ( 27, 115) + { 0, { 0, 0, 0}}, // ( 28, 115) + { 0, { 0, 0, 0}}, // ( 29, 115) + { 0, { 0, 0, 0}}, // ( 30, 115) + { 0, { 0, 0, 0}}, // ( 31, 115) + { 0, { 0, 0, 0}}, // ( 32, 115) + { 0, { 0, 0, 0}}, // ( 33, 115) + { 0, { 0, 0, 0}}, // ( 34, 115) + { 0, { 0, 0, 0}}, // ( 35, 115) + { 0, { 0, 0, 0}}, // ( 36, 115) + { 0, { 0, 0, 0}}, // ( 37, 115) + { 0, { 0, 0, 0}}, // ( 38, 115) + { 0, { 0, 0, 0}}, // ( 39, 115) + { 0, { 0, 0, 0}}, // ( 40, 115) + { 0, { 0, 0, 0}}, // ( 41, 115) + { 0, { 0, 0, 0}}, // ( 42, 115) + { 0, { 0, 0, 0}}, // ( 43, 115) + { 0, { 0, 0, 0}}, // ( 44, 115) + { 0, { 0, 0, 0}}, // ( 45, 115) + { 0, { 0, 0, 0}}, // ( 46, 115) + { 0, { 0, 0, 0}}, // ( 47, 115) + { 0, { 0, 0, 0}}, // ( 48, 115) + { 0, { 0, 0, 0}}, // ( 49, 115) + { 0, { 0, 0, 0}}, // ( 50, 115) + { 0, { 0, 0, 0}}, // ( 51, 115) + { 0, { 0, 0, 0}}, // ( 52, 115) + { 0, { 0, 0, 0}}, // ( 53, 115) + { 0, { 0, 0, 0}}, // ( 54, 115) + { 0, { 0, 0, 0}}, // ( 55, 115) + { 0, { 0, 0, 0}}, // ( 56, 115) + { 0, { 0, 0, 0}}, // ( 57, 115) + { 0, { 0, 0, 0}}, // ( 58, 115) + { 0, { 0, 0, 0}}, // ( 59, 115) + { 0, { 0, 0, 0}}, // ( 60, 115) + { 0, { 0, 0, 0}}, // ( 61, 115) + { 0, { 0, 0, 0}}, // ( 62, 115) + { 0, { 0, 0, 0}}, // ( 63, 115) + { 0, { 0, 0, 0}}, // ( 64, 115) + { 0, { 0, 0, 0}}, // ( 65, 115) + { 0, { 0, 0, 0}}, // ( 66, 115) + { 0, { 0, 0, 0}}, // ( 67, 115) + { 0, { 0, 0, 0}}, // ( 68, 115) + { 0, { 0, 0, 0}}, // ( 69, 115) + { 0, { 0, 0, 0}}, // ( 70, 115) + { 0, { 0, 0, 0}}, // ( 71, 115) + { 0, { 0, 0, 0}}, // ( 72, 115) + { 0, { 0, 0, 0}}, // ( 73, 115) + { 0, { 0, 0, 0}}, // ( 74, 115) + { 0, { 0, 0, 0}}, // ( 75, 115) + { 0, { 0, 0, 0}}, // ( 76, 115) + { 0, { 0, 0, 0}}, // ( 77, 115) + { 0, { 0, 0, 0}}, // ( 78, 115) + { 0, { 0, 0, 0}}, // ( 79, 115) + { 0, { 0, 0, 0}}, // ( 80, 115) + { 0, { 0, 0, 0}}, // ( 81, 115) + { 0, { 0, 0, 0}}, // ( 82, 115) + { 0, { 0, 0, 0}}, // ( 83, 115) + { 0, { 0, 0, 0}}, // ( 84, 115) + { 0, { 0, 0, 0}}, // ( 85, 115) + { 0, { 0, 0, 0}}, // ( 86, 115) + { 0, { 0, 0, 0}}, // ( 87, 115) + { 0, { 0, 0, 0}}, // ( 88, 115) + { 0, { 0, 0, 0}}, // ( 89, 115) + { 0, { 0, 0, 0}}, // ( 90, 115) + { 0, { 0, 0, 0}}, // ( 91, 115) + { 0, { 0, 0, 0}}, // ( 92, 115) + { 0, { 0, 0, 0}}, // ( 93, 115) + { 0, { 0, 0, 0}}, // ( 94, 115) + { 0, { 0, 0, 0}}, // ( 95, 115) + { 0, { 0, 0, 0}}, // ( 96, 115) + { 0, { 0, 0, 0}}, // ( 97, 115) + { 0, { 0, 0, 0}}, // ( 98, 115) + { 0, { 0, 0, 0}}, // ( 99, 115) + { 0, { 0, 0, 0}}, // (100, 115) + { 0, { 0, 0, 0}}, // (101, 115) + { 0, { 0, 0, 0}}, // (102, 115) + { 0, { 0, 0, 0}}, // (103, 115) + { 0, { 0, 0, 0}}, // (104, 115) + { 0, { 0, 0, 0}}, // (105, 115) + { 0, { 0, 0, 0}}, // (106, 115) + { 0, { 0, 0, 0}}, // (107, 115) + { 0, { 0, 0, 0}}, // (108, 115) + { 0, { 0, 0, 0}}, // (109, 115) + { 0, { 0, 0, 0}}, // (110, 115) + { 0, { 0, 0, 0}}, // (111, 115) + { 0, { 0, 0, 0}}, // (112, 115) + { 0, { 0, 0, 0}}, // (113, 115) + { 0, { 0, 0, 0}}, // (114, 115) + { 0, { 0, 0, 0}}, // (115, 115) + { 0, { 0, 0, 0}}, // (116, 115) + { 0, { 0, 0, 0}}, // (117, 115) + { 0, { 0, 0, 0}}, // (118, 115) + { 0, { 0, 0, 0}}, // (119, 115) + { 0, { 0, 0, 0}}, // (120, 115) + { 0, { 0, 0, 0}}, // (121, 115) + { 0, { 0, 0, 0}}, // (122, 115) + { 0, { 0, 0, 0}}, // (123, 115) + { 0, { 0, 0, 0}}, // (124, 115) + { 0, { 0, 0, 0}}, // (125, 115) + { 0, { 0, 0, 0}}, // (126, 115) + { 0, { 0, 0, 0}}, // (127, 115) + { 0, { 0, 0, 0}}, // (128, 115) + { 0, { 0, 0, 0}}, // (129, 115) + { 0, { 0, 0, 0}}, // (130, 115) + { 0, { 0, 0, 0}}, // (131, 115) + { 0, { 0, 0, 0}}, // (132, 115) + { 0, { 0, 0, 0}}, // (133, 115) + { 0, { 0, 0, 0}}, // (134, 115) + { 0, { 0, 0, 0}}, // (135, 115) + { 0, { 0, 0, 0}}, // (136, 115) + { 0, { 0, 0, 0}}, // (137, 115) + { 0, { 0, 0, 0}}, // (138, 115) + { 0, { 0, 0, 0}}, // (139, 115) + { 0, { 0, 0, 0}}, // (140, 115) + { 0, { 0, 0, 0}}, // (141, 115) + { 0, { 0, 0, 0}}, // (142, 115) + { 0, { 0, 0, 0}}, // (143, 115) + { 0, { 0, 0, 0}}, // (144, 115) + { 0, { 0, 0, 0}}, // (145, 115) + { 0, { 0, 0, 0}}, // (146, 115) + { 0, { 0, 0, 0}}, // (147, 115) + { 0, { 0, 0, 0}}, // (148, 115) + { 0, { 0, 0, 0}}, // (149, 115) + { 0, { 0, 0, 0}}, // (150, 115) + { 0, { 0, 0, 0}}, // (151, 115) + { 0, { 0, 0, 0}}, // (152, 115) + { 0, { 0, 0, 0}}, // (153, 115) + { 0, { 0, 0, 0}}, // (154, 115) + { 0, { 0, 0, 0}}, // (155, 115) + { 0, { 0, 0, 0}}, // (156, 115) + { 0, { 0, 0, 0}}, // (157, 115) + { 0, { 0, 0, 0}}, // (158, 115) + { 0, { 0, 0, 0}}, // (159, 115) + { 0, { 0, 0, 0}}, // (160, 115) + { 0, { 0, 0, 0}}, // (161, 115) + { 0, { 0, 0, 0}}, // (162, 115) + { 0, { 0, 0, 0}}, // (163, 115) + { 0, { 0, 0, 0}}, // (164, 115) + { 0, { 0, 0, 0}}, // (165, 115) + { 0, { 0, 0, 0}}, // (166, 115) + { 0, { 0, 0, 0}}, // (167, 115) + { 0, { 0, 0, 0}}, // (168, 115) + { 0, { 0, 0, 0}}, // (169, 115) + { 0, { 0, 0, 0}}, // (170, 115) + { 0, { 0, 0, 0}}, // (171, 115) + { 0, { 0, 0, 0}}, // (172, 115) + { 0, { 0, 0, 0}}, // (173, 115) + { 97, { 0, 0, 0}}, // (174, 115) + {128, { 0, 0, 0}}, // (175, 115) + {128, { 0, 0, 0}}, // (176, 115) + {128, { 0, 0, 0}}, // (177, 115) + {128, { 0, 0, 0}}, // (178, 115) + {128, { 0, 0, 0}}, // (179, 115) + {128, { 0, 0, 0}}, // ( 0, 116) + {128, { 0, 0, 0}}, // ( 1, 116) + {128, { 0, 0, 0}}, // ( 2, 116) + {128, { 0, 0, 0}}, // ( 3, 116) + {128, { 0, 0, 0}}, // ( 4, 116) + {126, { 0, 0, 0}}, // ( 5, 116) + { 11, { 0, 0, 0}}, // ( 6, 116) + { 0, { 0, 0, 0}}, // ( 7, 116) + { 0, { 0, 0, 0}}, // ( 8, 116) + { 0, { 0, 0, 0}}, // ( 9, 116) + { 0, { 0, 0, 0}}, // ( 10, 116) + { 0, { 0, 0, 0}}, // ( 11, 116) + { 0, { 0, 0, 0}}, // ( 12, 116) + { 0, { 0, 0, 0}}, // ( 13, 116) + { 0, { 0, 0, 0}}, // ( 14, 116) + { 0, { 0, 0, 0}}, // ( 15, 116) + { 0, { 0, 0, 0}}, // ( 16, 116) + { 0, { 0, 0, 0}}, // ( 17, 116) + { 0, { 0, 0, 0}}, // ( 18, 116) + { 0, { 0, 0, 0}}, // ( 19, 116) + { 0, { 0, 0, 0}}, // ( 20, 116) + { 0, { 0, 0, 0}}, // ( 21, 116) + { 0, { 0, 0, 0}}, // ( 22, 116) + { 0, { 0, 0, 0}}, // ( 23, 116) + { 0, { 0, 0, 0}}, // ( 24, 116) + { 0, { 0, 0, 0}}, // ( 25, 116) + { 0, { 0, 0, 0}}, // ( 26, 116) + { 0, { 0, 0, 0}}, // ( 27, 116) + { 0, { 0, 0, 0}}, // ( 28, 116) + { 0, { 0, 0, 0}}, // ( 29, 116) + { 0, { 0, 0, 0}}, // ( 30, 116) + { 0, { 0, 0, 0}}, // ( 31, 116) + { 0, { 0, 0, 0}}, // ( 32, 116) + { 0, { 0, 0, 0}}, // ( 33, 116) + { 0, { 0, 0, 0}}, // ( 34, 116) + { 0, { 0, 0, 0}}, // ( 35, 116) + { 0, { 0, 0, 0}}, // ( 36, 116) + { 0, { 0, 0, 0}}, // ( 37, 116) + { 0, { 0, 0, 0}}, // ( 38, 116) + { 0, { 0, 0, 0}}, // ( 39, 116) + { 0, { 0, 0, 0}}, // ( 40, 116) + { 0, { 0, 0, 0}}, // ( 41, 116) + { 0, { 0, 0, 0}}, // ( 42, 116) + { 0, { 0, 0, 0}}, // ( 43, 116) + { 0, { 0, 0, 0}}, // ( 44, 116) + { 0, { 0, 0, 0}}, // ( 45, 116) + { 0, { 0, 0, 0}}, // ( 46, 116) + { 0, { 0, 0, 0}}, // ( 47, 116) + { 0, { 0, 0, 0}}, // ( 48, 116) + { 0, { 0, 0, 0}}, // ( 49, 116) + { 0, { 0, 0, 0}}, // ( 50, 116) + { 0, { 0, 0, 0}}, // ( 51, 116) + { 0, { 0, 0, 0}}, // ( 52, 116) + { 0, { 0, 0, 0}}, // ( 53, 116) + { 0, { 0, 0, 0}}, // ( 54, 116) + { 0, { 0, 0, 0}}, // ( 55, 116) + { 0, { 0, 0, 0}}, // ( 56, 116) + { 0, { 0, 0, 0}}, // ( 57, 116) + { 0, { 0, 0, 0}}, // ( 58, 116) + { 0, { 0, 0, 0}}, // ( 59, 116) + { 0, { 0, 0, 0}}, // ( 60, 116) + { 0, { 0, 0, 0}}, // ( 61, 116) + { 0, { 0, 0, 0}}, // ( 62, 116) + { 0, { 0, 0, 0}}, // ( 63, 116) + { 0, { 0, 0, 0}}, // ( 64, 116) + { 0, { 0, 0, 0}}, // ( 65, 116) + { 0, { 0, 0, 0}}, // ( 66, 116) + { 0, { 0, 0, 0}}, // ( 67, 116) + { 0, { 0, 0, 0}}, // ( 68, 116) + { 0, { 0, 0, 0}}, // ( 69, 116) + { 0, { 0, 0, 0}}, // ( 70, 116) + { 0, { 0, 0, 0}}, // ( 71, 116) + { 0, { 0, 0, 0}}, // ( 72, 116) + { 0, { 0, 0, 0}}, // ( 73, 116) + { 0, { 0, 0, 0}}, // ( 74, 116) + { 0, { 0, 0, 0}}, // ( 75, 116) + { 0, { 0, 0, 0}}, // ( 76, 116) + { 0, { 0, 0, 0}}, // ( 77, 116) + { 0, { 0, 0, 0}}, // ( 78, 116) + { 0, { 0, 0, 0}}, // ( 79, 116) + { 0, { 0, 0, 0}}, // ( 80, 116) + { 0, { 0, 0, 0}}, // ( 81, 116) + { 0, { 0, 0, 0}}, // ( 82, 116) + { 0, { 0, 0, 0}}, // ( 83, 116) + { 0, { 0, 0, 0}}, // ( 84, 116) + { 0, { 0, 0, 0}}, // ( 85, 116) + { 0, { 0, 0, 0}}, // ( 86, 116) + { 0, { 0, 0, 0}}, // ( 87, 116) + { 0, { 0, 0, 0}}, // ( 88, 116) + { 0, { 0, 0, 0}}, // ( 89, 116) + { 0, { 0, 0, 0}}, // ( 90, 116) + { 0, { 0, 0, 0}}, // ( 91, 116) + { 0, { 0, 0, 0}}, // ( 92, 116) + { 0, { 0, 0, 0}}, // ( 93, 116) + { 0, { 0, 0, 0}}, // ( 94, 116) + { 0, { 0, 0, 0}}, // ( 95, 116) + { 0, { 0, 0, 0}}, // ( 96, 116) + { 0, { 0, 0, 0}}, // ( 97, 116) + { 0, { 0, 0, 0}}, // ( 98, 116) + { 0, { 0, 0, 0}}, // ( 99, 116) + { 0, { 0, 0, 0}}, // (100, 116) + { 0, { 0, 0, 0}}, // (101, 116) + { 0, { 0, 0, 0}}, // (102, 116) + { 0, { 0, 0, 0}}, // (103, 116) + { 0, { 0, 0, 0}}, // (104, 116) + { 0, { 0, 0, 0}}, // (105, 116) + { 0, { 0, 0, 0}}, // (106, 116) + { 0, { 0, 0, 0}}, // (107, 116) + { 0, { 0, 0, 0}}, // (108, 116) + { 0, { 0, 0, 0}}, // (109, 116) + { 0, { 0, 0, 0}}, // (110, 116) + { 0, { 0, 0, 0}}, // (111, 116) + { 0, { 0, 0, 0}}, // (112, 116) + { 0, { 0, 0, 0}}, // (113, 116) + { 0, { 0, 0, 0}}, // (114, 116) + { 0, { 0, 0, 0}}, // (115, 116) + { 0, { 0, 0, 0}}, // (116, 116) + { 0, { 0, 0, 0}}, // (117, 116) + { 0, { 0, 0, 0}}, // (118, 116) + { 0, { 0, 0, 0}}, // (119, 116) + { 0, { 0, 0, 0}}, // (120, 116) + { 0, { 0, 0, 0}}, // (121, 116) + { 0, { 0, 0, 0}}, // (122, 116) + { 0, { 0, 0, 0}}, // (123, 116) + { 0, { 0, 0, 0}}, // (124, 116) + { 0, { 0, 0, 0}}, // (125, 116) + { 0, { 0, 0, 0}}, // (126, 116) + { 0, { 0, 0, 0}}, // (127, 116) + { 0, { 0, 0, 0}}, // (128, 116) + { 0, { 0, 0, 0}}, // (129, 116) + { 0, { 0, 0, 0}}, // (130, 116) + { 0, { 0, 0, 0}}, // (131, 116) + { 0, { 0, 0, 0}}, // (132, 116) + { 0, { 0, 0, 0}}, // (133, 116) + { 0, { 0, 0, 0}}, // (134, 116) + { 0, { 0, 0, 0}}, // (135, 116) + { 0, { 0, 0, 0}}, // (136, 116) + { 0, { 0, 0, 0}}, // (137, 116) + { 0, { 0, 0, 0}}, // (138, 116) + { 0, { 0, 0, 0}}, // (139, 116) + { 0, { 0, 0, 0}}, // (140, 116) + { 0, { 0, 0, 0}}, // (141, 116) + { 0, { 0, 0, 0}}, // (142, 116) + { 0, { 0, 0, 0}}, // (143, 116) + { 0, { 0, 0, 0}}, // (144, 116) + { 0, { 0, 0, 0}}, // (145, 116) + { 0, { 0, 0, 0}}, // (146, 116) + { 0, { 0, 0, 0}}, // (147, 116) + { 0, { 0, 0, 0}}, // (148, 116) + { 0, { 0, 0, 0}}, // (149, 116) + { 0, { 0, 0, 0}}, // (150, 116) + { 0, { 0, 0, 0}}, // (151, 116) + { 0, { 0, 0, 0}}, // (152, 116) + { 0, { 0, 0, 0}}, // (153, 116) + { 0, { 0, 0, 0}}, // (154, 116) + { 0, { 0, 0, 0}}, // (155, 116) + { 0, { 0, 0, 0}}, // (156, 116) + { 0, { 0, 0, 0}}, // (157, 116) + { 0, { 0, 0, 0}}, // (158, 116) + { 0, { 0, 0, 0}}, // (159, 116) + { 0, { 0, 0, 0}}, // (160, 116) + { 0, { 0, 0, 0}}, // (161, 116) + { 0, { 0, 0, 0}}, // (162, 116) + { 0, { 0, 0, 0}}, // (163, 116) + { 0, { 0, 0, 0}}, // (164, 116) + { 0, { 0, 0, 0}}, // (165, 116) + { 0, { 0, 0, 0}}, // (166, 116) + { 0, { 0, 0, 0}}, // (167, 116) + { 0, { 0, 0, 0}}, // (168, 116) + { 0, { 0, 0, 0}}, // (169, 116) + { 0, { 0, 0, 0}}, // (170, 116) + { 0, { 0, 0, 0}}, // (171, 116) + { 0, { 0, 0, 0}}, // (172, 116) + { 10, { 0, 0, 0}}, // (173, 116) + {126, { 0, 0, 0}}, // (174, 116) + {128, { 0, 0, 0}}, // (175, 116) + {128, { 0, 0, 0}}, // (176, 116) + {128, { 0, 0, 0}}, // (177, 116) + {128, { 0, 0, 0}}, // (178, 116) + {128, { 0, 0, 0}}, // (179, 116) + {128, { 0, 0, 0}}, // ( 0, 117) + {128, { 0, 0, 0}}, // ( 1, 117) + {128, { 0, 0, 0}}, // ( 2, 117) + {128, { 0, 0, 0}}, // ( 3, 117) + {128, { 0, 0, 0}}, // ( 4, 117) + {128, { 0, 0, 0}}, // ( 5, 117) + { 52, { 0, 0, 0}}, // ( 6, 117) + { 0, { 0, 0, 0}}, // ( 7, 117) + { 0, { 0, 0, 0}}, // ( 8, 117) + { 0, { 0, 0, 0}}, // ( 9, 117) + { 0, { 0, 0, 0}}, // ( 10, 117) + { 0, { 0, 0, 0}}, // ( 11, 117) + { 0, { 0, 0, 0}}, // ( 12, 117) + { 0, { 0, 0, 0}}, // ( 13, 117) + { 0, { 0, 0, 0}}, // ( 14, 117) + { 0, { 0, 0, 0}}, // ( 15, 117) + { 0, { 0, 0, 0}}, // ( 16, 117) + { 0, { 0, 0, 0}}, // ( 17, 117) + { 0, { 0, 0, 0}}, // ( 18, 117) + { 0, { 0, 0, 0}}, // ( 19, 117) + { 0, { 0, 0, 0}}, // ( 20, 117) + { 0, { 0, 0, 0}}, // ( 21, 117) + { 0, { 0, 0, 0}}, // ( 22, 117) + { 0, { 0, 0, 0}}, // ( 23, 117) + { 0, { 0, 0, 0}}, // ( 24, 117) + { 0, { 0, 0, 0}}, // ( 25, 117) + { 0, { 0, 0, 0}}, // ( 26, 117) + { 0, { 0, 0, 0}}, // ( 27, 117) + { 0, { 0, 0, 0}}, // ( 28, 117) + { 0, { 0, 0, 0}}, // ( 29, 117) + { 0, { 0, 0, 0}}, // ( 30, 117) + { 0, { 0, 0, 0}}, // ( 31, 117) + { 0, { 0, 0, 0}}, // ( 32, 117) + { 0, { 0, 0, 0}}, // ( 33, 117) + { 0, { 0, 0, 0}}, // ( 34, 117) + { 0, { 0, 0, 0}}, // ( 35, 117) + { 0, { 0, 0, 0}}, // ( 36, 117) + { 0, { 0, 0, 0}}, // ( 37, 117) + { 0, { 0, 0, 0}}, // ( 38, 117) + { 0, { 0, 0, 0}}, // ( 39, 117) + { 0, { 0, 0, 0}}, // ( 40, 117) + { 0, { 0, 0, 0}}, // ( 41, 117) + { 0, { 0, 0, 0}}, // ( 42, 117) + { 0, { 0, 0, 0}}, // ( 43, 117) + { 0, { 0, 0, 0}}, // ( 44, 117) + { 0, { 0, 0, 0}}, // ( 45, 117) + { 0, { 0, 0, 0}}, // ( 46, 117) + { 0, { 0, 0, 0}}, // ( 47, 117) + { 0, { 0, 0, 0}}, // ( 48, 117) + { 0, { 0, 0, 0}}, // ( 49, 117) + { 0, { 0, 0, 0}}, // ( 50, 117) + { 0, { 0, 0, 0}}, // ( 51, 117) + { 0, { 0, 0, 0}}, // ( 52, 117) + { 0, { 0, 0, 0}}, // ( 53, 117) + { 0, { 0, 0, 0}}, // ( 54, 117) + { 0, { 0, 0, 0}}, // ( 55, 117) + { 0, { 0, 0, 0}}, // ( 56, 117) + { 0, { 0, 0, 0}}, // ( 57, 117) + { 0, { 0, 0, 0}}, // ( 58, 117) + { 0, { 0, 0, 0}}, // ( 59, 117) + { 0, { 0, 0, 0}}, // ( 60, 117) + { 0, { 0, 0, 0}}, // ( 61, 117) + { 0, { 0, 0, 0}}, // ( 62, 117) + { 0, { 0, 0, 0}}, // ( 63, 117) + { 0, { 0, 0, 0}}, // ( 64, 117) + { 0, { 0, 0, 0}}, // ( 65, 117) + { 0, { 0, 0, 0}}, // ( 66, 117) + { 0, { 0, 0, 0}}, // ( 67, 117) + { 0, { 0, 0, 0}}, // ( 68, 117) + { 0, { 0, 0, 0}}, // ( 69, 117) + { 0, { 0, 0, 0}}, // ( 70, 117) + { 0, { 0, 0, 0}}, // ( 71, 117) + { 0, { 0, 0, 0}}, // ( 72, 117) + { 0, { 0, 0, 0}}, // ( 73, 117) + { 0, { 0, 0, 0}}, // ( 74, 117) + { 0, { 0, 0, 0}}, // ( 75, 117) + { 0, { 0, 0, 0}}, // ( 76, 117) + { 0, { 0, 0, 0}}, // ( 77, 117) + { 0, { 0, 0, 0}}, // ( 78, 117) + { 0, { 0, 0, 0}}, // ( 79, 117) + { 0, { 0, 0, 0}}, // ( 80, 117) + { 0, { 0, 0, 0}}, // ( 81, 117) + { 0, { 0, 0, 0}}, // ( 82, 117) + { 0, { 0, 0, 0}}, // ( 83, 117) + { 0, { 0, 0, 0}}, // ( 84, 117) + { 0, { 0, 0, 0}}, // ( 85, 117) + { 0, { 0, 0, 0}}, // ( 86, 117) + { 0, { 0, 0, 0}}, // ( 87, 117) + { 0, { 0, 0, 0}}, // ( 88, 117) + { 0, { 0, 0, 0}}, // ( 89, 117) + { 0, { 0, 0, 0}}, // ( 90, 117) + { 0, { 0, 0, 0}}, // ( 91, 117) + { 0, { 0, 0, 0}}, // ( 92, 117) + { 0, { 0, 0, 0}}, // ( 93, 117) + { 0, { 0, 0, 0}}, // ( 94, 117) + { 0, { 0, 0, 0}}, // ( 95, 117) + { 0, { 0, 0, 0}}, // ( 96, 117) + { 0, { 0, 0, 0}}, // ( 97, 117) + { 0, { 0, 0, 0}}, // ( 98, 117) + { 0, { 0, 0, 0}}, // ( 99, 117) + { 0, { 0, 0, 0}}, // (100, 117) + { 0, { 0, 0, 0}}, // (101, 117) + { 0, { 0, 0, 0}}, // (102, 117) + { 0, { 0, 0, 0}}, // (103, 117) + { 0, { 0, 0, 0}}, // (104, 117) + { 0, { 0, 0, 0}}, // (105, 117) + { 0, { 0, 0, 0}}, // (106, 117) + { 0, { 0, 0, 0}}, // (107, 117) + { 0, { 0, 0, 0}}, // (108, 117) + { 0, { 0, 0, 0}}, // (109, 117) + { 0, { 0, 0, 0}}, // (110, 117) + { 0, { 0, 0, 0}}, // (111, 117) + { 0, { 0, 0, 0}}, // (112, 117) + { 0, { 0, 0, 0}}, // (113, 117) + { 0, { 0, 0, 0}}, // (114, 117) + { 0, { 0, 0, 0}}, // (115, 117) + { 0, { 0, 0, 0}}, // (116, 117) + { 0, { 0, 0, 0}}, // (117, 117) + { 0, { 0, 0, 0}}, // (118, 117) + { 0, { 0, 0, 0}}, // (119, 117) + { 0, { 0, 0, 0}}, // (120, 117) + { 0, { 0, 0, 0}}, // (121, 117) + { 0, { 0, 0, 0}}, // (122, 117) + { 0, { 0, 0, 0}}, // (123, 117) + { 0, { 0, 0, 0}}, // (124, 117) + { 0, { 0, 0, 0}}, // (125, 117) + { 0, { 0, 0, 0}}, // (126, 117) + { 0, { 0, 0, 0}}, // (127, 117) + { 0, { 0, 0, 0}}, // (128, 117) + { 0, { 0, 0, 0}}, // (129, 117) + { 0, { 0, 0, 0}}, // (130, 117) + { 0, { 0, 0, 0}}, // (131, 117) + { 0, { 0, 0, 0}}, // (132, 117) + { 0, { 0, 0, 0}}, // (133, 117) + { 0, { 0, 0, 0}}, // (134, 117) + { 0, { 0, 0, 0}}, // (135, 117) + { 0, { 0, 0, 0}}, // (136, 117) + { 0, { 0, 0, 0}}, // (137, 117) + { 0, { 0, 0, 0}}, // (138, 117) + { 0, { 0, 0, 0}}, // (139, 117) + { 0, { 0, 0, 0}}, // (140, 117) + { 0, { 0, 0, 0}}, // (141, 117) + { 0, { 0, 0, 0}}, // (142, 117) + { 0, { 0, 0, 0}}, // (143, 117) + { 0, { 0, 0, 0}}, // (144, 117) + { 0, { 0, 0, 0}}, // (145, 117) + { 0, { 0, 0, 0}}, // (146, 117) + { 0, { 0, 0, 0}}, // (147, 117) + { 0, { 0, 0, 0}}, // (148, 117) + { 0, { 0, 0, 0}}, // (149, 117) + { 0, { 0, 0, 0}}, // (150, 117) + { 0, { 0, 0, 0}}, // (151, 117) + { 0, { 0, 0, 0}}, // (152, 117) + { 0, { 0, 0, 0}}, // (153, 117) + { 0, { 0, 0, 0}}, // (154, 117) + { 0, { 0, 0, 0}}, // (155, 117) + { 0, { 0, 0, 0}}, // (156, 117) + { 0, { 0, 0, 0}}, // (157, 117) + { 0, { 0, 0, 0}}, // (158, 117) + { 0, { 0, 0, 0}}, // (159, 117) + { 0, { 0, 0, 0}}, // (160, 117) + { 0, { 0, 0, 0}}, // (161, 117) + { 0, { 0, 0, 0}}, // (162, 117) + { 0, { 0, 0, 0}}, // (163, 117) + { 0, { 0, 0, 0}}, // (164, 117) + { 0, { 0, 0, 0}}, // (165, 117) + { 0, { 0, 0, 0}}, // (166, 117) + { 0, { 0, 0, 0}}, // (167, 117) + { 0, { 0, 0, 0}}, // (168, 117) + { 0, { 0, 0, 0}}, // (169, 117) + { 0, { 0, 0, 0}}, // (170, 117) + { 0, { 0, 0, 0}}, // (171, 117) + { 0, { 0, 0, 0}}, // (172, 117) + { 52, { 0, 0, 0}}, // (173, 117) + {128, { 0, 0, 0}}, // (174, 117) + {128, { 0, 0, 0}}, // (175, 117) + {128, { 0, 0, 0}}, // (176, 117) + {128, { 0, 0, 0}}, // (177, 117) + {128, { 0, 0, 0}}, // (178, 117) + {128, { 0, 0, 0}}, // (179, 117) + {128, { 0, 0, 0}}, // ( 0, 118) + {128, { 0, 0, 0}}, // ( 1, 118) + {128, { 0, 0, 0}}, // ( 2, 118) + {128, { 0, 0, 0}}, // ( 3, 118) + {128, { 0, 0, 0}}, // ( 4, 118) + {128, { 0, 0, 0}}, // ( 5, 118) + { 95, { 0, 0, 0}}, // ( 6, 118) + { 0, { 0, 0, 0}}, // ( 7, 118) + { 0, { 0, 0, 0}}, // ( 8, 118) + { 0, { 0, 0, 0}}, // ( 9, 118) + { 0, { 0, 0, 0}}, // ( 10, 118) + { 0, { 0, 0, 0}}, // ( 11, 118) + { 0, { 0, 0, 0}}, // ( 12, 118) + { 0, { 0, 0, 0}}, // ( 13, 118) + { 0, { 0, 0, 0}}, // ( 14, 118) + { 0, { 0, 0, 0}}, // ( 15, 118) + { 0, { 0, 0, 0}}, // ( 16, 118) + { 0, { 0, 0, 0}}, // ( 17, 118) + { 0, { 0, 0, 0}}, // ( 18, 118) + { 0, { 0, 0, 0}}, // ( 19, 118) + { 0, { 0, 0, 0}}, // ( 20, 118) + { 0, { 0, 0, 0}}, // ( 21, 118) + { 0, { 0, 0, 0}}, // ( 22, 118) + { 0, { 0, 0, 0}}, // ( 23, 118) + { 0, { 0, 0, 0}}, // ( 24, 118) + { 0, { 0, 0, 0}}, // ( 25, 118) + { 0, { 0, 0, 0}}, // ( 26, 118) + { 0, { 0, 0, 0}}, // ( 27, 118) + { 0, { 0, 0, 0}}, // ( 28, 118) + { 0, { 0, 0, 0}}, // ( 29, 118) + { 0, { 0, 0, 0}}, // ( 30, 118) + { 0, { 0, 0, 0}}, // ( 31, 118) + { 0, { 0, 0, 0}}, // ( 32, 118) + { 0, { 0, 0, 0}}, // ( 33, 118) + { 0, { 0, 0, 0}}, // ( 34, 118) + { 0, { 0, 0, 0}}, // ( 35, 118) + { 0, { 0, 0, 0}}, // ( 36, 118) + { 0, { 0, 0, 0}}, // ( 37, 118) + { 0, { 0, 0, 0}}, // ( 38, 118) + { 0, { 0, 0, 0}}, // ( 39, 118) + { 0, { 0, 0, 0}}, // ( 40, 118) + { 0, { 0, 0, 0}}, // ( 41, 118) + { 0, { 0, 0, 0}}, // ( 42, 118) + { 0, { 0, 0, 0}}, // ( 43, 118) + { 0, { 0, 0, 0}}, // ( 44, 118) + { 0, { 0, 0, 0}}, // ( 45, 118) + { 0, { 0, 0, 0}}, // ( 46, 118) + { 0, { 0, 0, 0}}, // ( 47, 118) + { 0, { 0, 0, 0}}, // ( 48, 118) + { 0, { 0, 0, 0}}, // ( 49, 118) + { 0, { 0, 0, 0}}, // ( 50, 118) + { 0, { 0, 0, 0}}, // ( 51, 118) + { 0, { 0, 0, 0}}, // ( 52, 118) + { 0, { 0, 0, 0}}, // ( 53, 118) + { 0, { 0, 0, 0}}, // ( 54, 118) + { 0, { 0, 0, 0}}, // ( 55, 118) + { 0, { 0, 0, 0}}, // ( 56, 118) + { 0, { 0, 0, 0}}, // ( 57, 118) + { 0, { 0, 0, 0}}, // ( 58, 118) + { 0, { 0, 0, 0}}, // ( 59, 118) + { 0, { 0, 0, 0}}, // ( 60, 118) + { 0, { 0, 0, 0}}, // ( 61, 118) + { 0, { 0, 0, 0}}, // ( 62, 118) + { 0, { 0, 0, 0}}, // ( 63, 118) + { 0, { 0, 0, 0}}, // ( 64, 118) + { 0, { 0, 0, 0}}, // ( 65, 118) + { 0, { 0, 0, 0}}, // ( 66, 118) + { 0, { 0, 0, 0}}, // ( 67, 118) + { 0, { 0, 0, 0}}, // ( 68, 118) + { 0, { 0, 0, 0}}, // ( 69, 118) + { 0, { 0, 0, 0}}, // ( 70, 118) + { 0, { 0, 0, 0}}, // ( 71, 118) + { 0, { 0, 0, 0}}, // ( 72, 118) + { 0, { 0, 0, 0}}, // ( 73, 118) + { 0, { 0, 0, 0}}, // ( 74, 118) + { 0, { 0, 0, 0}}, // ( 75, 118) + { 0, { 0, 0, 0}}, // ( 76, 118) + { 0, { 0, 0, 0}}, // ( 77, 118) + { 0, { 0, 0, 0}}, // ( 78, 118) + { 0, { 0, 0, 0}}, // ( 79, 118) + { 0, { 0, 0, 0}}, // ( 80, 118) + { 0, { 0, 0, 0}}, // ( 81, 118) + { 0, { 0, 0, 0}}, // ( 82, 118) + { 0, { 0, 0, 0}}, // ( 83, 118) + { 0, { 0, 0, 0}}, // ( 84, 118) + { 0, { 0, 0, 0}}, // ( 85, 118) + { 0, { 0, 0, 0}}, // ( 86, 118) + { 0, { 0, 0, 0}}, // ( 87, 118) + { 0, { 0, 0, 0}}, // ( 88, 118) + { 0, { 0, 0, 0}}, // ( 89, 118) + { 0, { 0, 0, 0}}, // ( 90, 118) + { 0, { 0, 0, 0}}, // ( 91, 118) + { 0, { 0, 0, 0}}, // ( 92, 118) + { 0, { 0, 0, 0}}, // ( 93, 118) + { 0, { 0, 0, 0}}, // ( 94, 118) + { 0, { 0, 0, 0}}, // ( 95, 118) + { 0, { 0, 0, 0}}, // ( 96, 118) + { 0, { 0, 0, 0}}, // ( 97, 118) + { 0, { 0, 0, 0}}, // ( 98, 118) + { 0, { 0, 0, 0}}, // ( 99, 118) + { 0, { 0, 0, 0}}, // (100, 118) + { 0, { 0, 0, 0}}, // (101, 118) + { 0, { 0, 0, 0}}, // (102, 118) + { 0, { 0, 0, 0}}, // (103, 118) + { 0, { 0, 0, 0}}, // (104, 118) + { 0, { 0, 0, 0}}, // (105, 118) + { 0, { 0, 0, 0}}, // (106, 118) + { 0, { 0, 0, 0}}, // (107, 118) + { 0, { 0, 0, 0}}, // (108, 118) + { 0, { 0, 0, 0}}, // (109, 118) + { 0, { 0, 0, 0}}, // (110, 118) + { 0, { 0, 0, 0}}, // (111, 118) + { 0, { 0, 0, 0}}, // (112, 118) + { 0, { 0, 0, 0}}, // (113, 118) + { 0, { 0, 0, 0}}, // (114, 118) + { 0, { 0, 0, 0}}, // (115, 118) + { 0, { 0, 0, 0}}, // (116, 118) + { 0, { 0, 0, 0}}, // (117, 118) + { 0, { 0, 0, 0}}, // (118, 118) + { 0, { 0, 0, 0}}, // (119, 118) + { 0, { 0, 0, 0}}, // (120, 118) + { 0, { 0, 0, 0}}, // (121, 118) + { 0, { 0, 0, 0}}, // (122, 118) + { 0, { 0, 0, 0}}, // (123, 118) + { 0, { 0, 0, 0}}, // (124, 118) + { 0, { 0, 0, 0}}, // (125, 118) + { 0, { 0, 0, 0}}, // (126, 118) + { 0, { 0, 0, 0}}, // (127, 118) + { 0, { 0, 0, 0}}, // (128, 118) + { 0, { 0, 0, 0}}, // (129, 118) + { 0, { 0, 0, 0}}, // (130, 118) + { 0, { 0, 0, 0}}, // (131, 118) + { 0, { 0, 0, 0}}, // (132, 118) + { 0, { 0, 0, 0}}, // (133, 118) + { 0, { 0, 0, 0}}, // (134, 118) + { 0, { 0, 0, 0}}, // (135, 118) + { 0, { 0, 0, 0}}, // (136, 118) + { 0, { 0, 0, 0}}, // (137, 118) + { 0, { 0, 0, 0}}, // (138, 118) + { 0, { 0, 0, 0}}, // (139, 118) + { 0, { 0, 0, 0}}, // (140, 118) + { 0, { 0, 0, 0}}, // (141, 118) + { 0, { 0, 0, 0}}, // (142, 118) + { 0, { 0, 0, 0}}, // (143, 118) + { 0, { 0, 0, 0}}, // (144, 118) + { 0, { 0, 0, 0}}, // (145, 118) + { 0, { 0, 0, 0}}, // (146, 118) + { 0, { 0, 0, 0}}, // (147, 118) + { 0, { 0, 0, 0}}, // (148, 118) + { 0, { 0, 0, 0}}, // (149, 118) + { 0, { 0, 0, 0}}, // (150, 118) + { 0, { 0, 0, 0}}, // (151, 118) + { 0, { 0, 0, 0}}, // (152, 118) + { 0, { 0, 0, 0}}, // (153, 118) + { 0, { 0, 0, 0}}, // (154, 118) + { 0, { 0, 0, 0}}, // (155, 118) + { 0, { 0, 0, 0}}, // (156, 118) + { 0, { 0, 0, 0}}, // (157, 118) + { 0, { 0, 0, 0}}, // (158, 118) + { 0, { 0, 0, 0}}, // (159, 118) + { 0, { 0, 0, 0}}, // (160, 118) + { 0, { 0, 0, 0}}, // (161, 118) + { 0, { 0, 0, 0}}, // (162, 118) + { 0, { 0, 0, 0}}, // (163, 118) + { 0, { 0, 0, 0}}, // (164, 118) + { 0, { 0, 0, 0}}, // (165, 118) + { 0, { 0, 0, 0}}, // (166, 118) + { 0, { 0, 0, 0}}, // (167, 118) + { 0, { 0, 0, 0}}, // (168, 118) + { 0, { 0, 0, 0}}, // (169, 118) + { 0, { 0, 0, 0}}, // (170, 118) + { 0, { 0, 0, 0}}, // (171, 118) + { 0, { 0, 0, 0}}, // (172, 118) + { 95, { 0, 0, 0}}, // (173, 118) + {128, { 0, 0, 0}}, // (174, 118) + {128, { 0, 0, 0}}, // (175, 118) + {128, { 0, 0, 0}}, // (176, 118) + {128, { 0, 0, 0}}, // (177, 118) + {128, { 0, 0, 0}}, // (178, 118) + {128, { 0, 0, 0}}, // (179, 118) + {128, { 0, 0, 0}}, // ( 0, 119) + {128, { 0, 0, 0}}, // ( 1, 119) + {128, { 0, 0, 0}}, // ( 2, 119) + {128, { 0, 0, 0}}, // ( 3, 119) + {128, { 0, 0, 0}}, // ( 4, 119) + {128, { 0, 0, 0}}, // ( 5, 119) + {126, { 0, 0, 0}}, // ( 6, 119) + { 12, { 0, 0, 0}}, // ( 7, 119) + { 0, { 0, 0, 0}}, // ( 8, 119) + { 0, { 0, 0, 0}}, // ( 9, 119) + { 0, { 0, 0, 0}}, // ( 10, 119) + { 0, { 0, 0, 0}}, // ( 11, 119) + { 0, { 0, 0, 0}}, // ( 12, 119) + { 0, { 0, 0, 0}}, // ( 13, 119) + { 0, { 0, 0, 0}}, // ( 14, 119) + { 0, { 0, 0, 0}}, // ( 15, 119) + { 0, { 0, 0, 0}}, // ( 16, 119) + { 0, { 0, 0, 0}}, // ( 17, 119) + { 0, { 0, 0, 0}}, // ( 18, 119) + { 0, { 0, 0, 0}}, // ( 19, 119) + { 0, { 0, 0, 0}}, // ( 20, 119) + { 0, { 0, 0, 0}}, // ( 21, 119) + { 0, { 0, 0, 0}}, // ( 22, 119) + { 0, { 0, 0, 0}}, // ( 23, 119) + { 0, { 0, 0, 0}}, // ( 24, 119) + { 0, { 0, 0, 0}}, // ( 25, 119) + { 0, { 0, 0, 0}}, // ( 26, 119) + { 0, { 0, 0, 0}}, // ( 27, 119) + { 0, { 0, 0, 0}}, // ( 28, 119) + { 0, { 0, 0, 0}}, // ( 29, 119) + { 0, { 0, 0, 0}}, // ( 30, 119) + { 0, { 0, 0, 0}}, // ( 31, 119) + { 0, { 0, 0, 0}}, // ( 32, 119) + { 0, { 0, 0, 0}}, // ( 33, 119) + { 0, { 0, 0, 0}}, // ( 34, 119) + { 0, { 0, 0, 0}}, // ( 35, 119) + { 0, { 0, 0, 0}}, // ( 36, 119) + { 0, { 0, 0, 0}}, // ( 37, 119) + { 0, { 0, 0, 0}}, // ( 38, 119) + { 0, { 0, 0, 0}}, // ( 39, 119) + { 0, { 0, 0, 0}}, // ( 40, 119) + { 0, { 0, 0, 0}}, // ( 41, 119) + { 0, { 0, 0, 0}}, // ( 42, 119) + { 0, { 0, 0, 0}}, // ( 43, 119) + { 0, { 0, 0, 0}}, // ( 44, 119) + { 0, { 0, 0, 0}}, // ( 45, 119) + { 0, { 0, 0, 0}}, // ( 46, 119) + { 0, { 0, 0, 0}}, // ( 47, 119) + { 0, { 0, 0, 0}}, // ( 48, 119) + { 0, { 0, 0, 0}}, // ( 49, 119) + { 0, { 0, 0, 0}}, // ( 50, 119) + { 0, { 0, 0, 0}}, // ( 51, 119) + { 0, { 0, 0, 0}}, // ( 52, 119) + { 0, { 0, 0, 0}}, // ( 53, 119) + { 0, { 0, 0, 0}}, // ( 54, 119) + { 0, { 0, 0, 0}}, // ( 55, 119) + { 0, { 0, 0, 0}}, // ( 56, 119) + { 0, { 0, 0, 0}}, // ( 57, 119) + { 0, { 0, 0, 0}}, // ( 58, 119) + { 0, { 0, 0, 0}}, // ( 59, 119) + { 0, { 0, 0, 0}}, // ( 60, 119) + { 0, { 0, 0, 0}}, // ( 61, 119) + { 0, { 0, 0, 0}}, // ( 62, 119) + { 0, { 0, 0, 0}}, // ( 63, 119) + { 0, { 0, 0, 0}}, // ( 64, 119) + { 0, { 0, 0, 0}}, // ( 65, 119) + { 0, { 0, 0, 0}}, // ( 66, 119) + { 0, { 0, 0, 0}}, // ( 67, 119) + { 0, { 0, 0, 0}}, // ( 68, 119) + { 0, { 0, 0, 0}}, // ( 69, 119) + { 0, { 0, 0, 0}}, // ( 70, 119) + { 0, { 0, 0, 0}}, // ( 71, 119) + { 0, { 0, 0, 0}}, // ( 72, 119) + { 0, { 0, 0, 0}}, // ( 73, 119) + { 0, { 0, 0, 0}}, // ( 74, 119) + { 0, { 0, 0, 0}}, // ( 75, 119) + { 0, { 0, 0, 0}}, // ( 76, 119) + { 0, { 0, 0, 0}}, // ( 77, 119) + { 0, { 0, 0, 0}}, // ( 78, 119) + { 0, { 0, 0, 0}}, // ( 79, 119) + { 0, { 0, 0, 0}}, // ( 80, 119) + { 0, { 0, 0, 0}}, // ( 81, 119) + { 0, { 0, 0, 0}}, // ( 82, 119) + { 0, { 0, 0, 0}}, // ( 83, 119) + { 0, { 0, 0, 0}}, // ( 84, 119) + { 0, { 0, 0, 0}}, // ( 85, 119) + { 0, { 0, 0, 0}}, // ( 86, 119) + { 0, { 0, 0, 0}}, // ( 87, 119) + { 0, { 0, 0, 0}}, // ( 88, 119) + { 0, { 0, 0, 0}}, // ( 89, 119) + { 0, { 0, 0, 0}}, // ( 90, 119) + { 0, { 0, 0, 0}}, // ( 91, 119) + { 0, { 0, 0, 0}}, // ( 92, 119) + { 0, { 0, 0, 0}}, // ( 93, 119) + { 0, { 0, 0, 0}}, // ( 94, 119) + { 0, { 0, 0, 0}}, // ( 95, 119) + { 0, { 0, 0, 0}}, // ( 96, 119) + { 0, { 0, 0, 0}}, // ( 97, 119) + { 0, { 0, 0, 0}}, // ( 98, 119) + { 0, { 0, 0, 0}}, // ( 99, 119) + { 0, { 0, 0, 0}}, // (100, 119) + { 0, { 0, 0, 0}}, // (101, 119) + { 0, { 0, 0, 0}}, // (102, 119) + { 0, { 0, 0, 0}}, // (103, 119) + { 0, { 0, 0, 0}}, // (104, 119) + { 0, { 0, 0, 0}}, // (105, 119) + { 0, { 0, 0, 0}}, // (106, 119) + { 0, { 0, 0, 0}}, // (107, 119) + { 0, { 0, 0, 0}}, // (108, 119) + { 0, { 0, 0, 0}}, // (109, 119) + { 0, { 0, 0, 0}}, // (110, 119) + { 0, { 0, 0, 0}}, // (111, 119) + { 0, { 0, 0, 0}}, // (112, 119) + { 0, { 0, 0, 0}}, // (113, 119) + { 0, { 0, 0, 0}}, // (114, 119) + { 0, { 0, 0, 0}}, // (115, 119) + { 0, { 0, 0, 0}}, // (116, 119) + { 0, { 0, 0, 0}}, // (117, 119) + { 0, { 0, 0, 0}}, // (118, 119) + { 0, { 0, 0, 0}}, // (119, 119) + { 0, { 0, 0, 0}}, // (120, 119) + { 0, { 0, 0, 0}}, // (121, 119) + { 0, { 0, 0, 0}}, // (122, 119) + { 0, { 0, 0, 0}}, // (123, 119) + { 0, { 0, 0, 0}}, // (124, 119) + { 0, { 0, 0, 0}}, // (125, 119) + { 0, { 0, 0, 0}}, // (126, 119) + { 0, { 0, 0, 0}}, // (127, 119) + { 0, { 0, 0, 0}}, // (128, 119) + { 0, { 0, 0, 0}}, // (129, 119) + { 0, { 0, 0, 0}}, // (130, 119) + { 0, { 0, 0, 0}}, // (131, 119) + { 0, { 0, 0, 0}}, // (132, 119) + { 0, { 0, 0, 0}}, // (133, 119) + { 0, { 0, 0, 0}}, // (134, 119) + { 0, { 0, 0, 0}}, // (135, 119) + { 0, { 0, 0, 0}}, // (136, 119) + { 0, { 0, 0, 0}}, // (137, 119) + { 0, { 0, 0, 0}}, // (138, 119) + { 0, { 0, 0, 0}}, // (139, 119) + { 0, { 0, 0, 0}}, // (140, 119) + { 0, { 0, 0, 0}}, // (141, 119) + { 0, { 0, 0, 0}}, // (142, 119) + { 0, { 0, 0, 0}}, // (143, 119) + { 0, { 0, 0, 0}}, // (144, 119) + { 0, { 0, 0, 0}}, // (145, 119) + { 0, { 0, 0, 0}}, // (146, 119) + { 0, { 0, 0, 0}}, // (147, 119) + { 0, { 0, 0, 0}}, // (148, 119) + { 0, { 0, 0, 0}}, // (149, 119) + { 0, { 0, 0, 0}}, // (150, 119) + { 0, { 0, 0, 0}}, // (151, 119) + { 0, { 0, 0, 0}}, // (152, 119) + { 0, { 0, 0, 0}}, // (153, 119) + { 0, { 0, 0, 0}}, // (154, 119) + { 0, { 0, 0, 0}}, // (155, 119) + { 0, { 0, 0, 0}}, // (156, 119) + { 0, { 0, 0, 0}}, // (157, 119) + { 0, { 0, 0, 0}}, // (158, 119) + { 0, { 0, 0, 0}}, // (159, 119) + { 0, { 0, 0, 0}}, // (160, 119) + { 0, { 0, 0, 0}}, // (161, 119) + { 0, { 0, 0, 0}}, // (162, 119) + { 0, { 0, 0, 0}}, // (163, 119) + { 0, { 0, 0, 0}}, // (164, 119) + { 0, { 0, 0, 0}}, // (165, 119) + { 0, { 0, 0, 0}}, // (166, 119) + { 0, { 0, 0, 0}}, // (167, 119) + { 0, { 0, 0, 0}}, // (168, 119) + { 0, { 0, 0, 0}}, // (169, 119) + { 0, { 0, 0, 0}}, // (170, 119) + { 0, { 0, 0, 0}}, // (171, 119) + { 12, { 0, 0, 0}}, // (172, 119) + {126, { 0, 0, 0}}, // (173, 119) + {128, { 0, 0, 0}}, // (174, 119) + {128, { 0, 0, 0}}, // (175, 119) + {128, { 0, 0, 0}}, // (176, 119) + {128, { 0, 0, 0}}, // (177, 119) + {128, { 0, 0, 0}}, // (178, 119) + {128, { 0, 0, 0}}, // (179, 119) + {128, { 0, 0, 0}}, // ( 0, 120) + {128, { 0, 0, 0}}, // ( 1, 120) + {128, { 0, 0, 0}}, // ( 2, 120) + {128, { 0, 0, 0}}, // ( 3, 120) + {128, { 0, 0, 0}}, // ( 4, 120) + {128, { 0, 0, 0}}, // ( 5, 120) + {128, { 0, 0, 0}}, // ( 6, 120) + { 55, { 0, 0, 0}}, // ( 7, 120) + { 0, { 0, 0, 0}}, // ( 8, 120) + { 0, { 0, 0, 0}}, // ( 9, 120) + { 0, { 0, 0, 0}}, // ( 10, 120) + { 0, { 0, 0, 0}}, // ( 11, 120) + { 0, { 0, 0, 0}}, // ( 12, 120) + { 0, { 0, 0, 0}}, // ( 13, 120) + { 0, { 0, 0, 0}}, // ( 14, 120) + { 0, { 0, 0, 0}}, // ( 15, 120) + { 0, { 0, 0, 0}}, // ( 16, 120) + { 0, { 0, 0, 0}}, // ( 17, 120) + { 0, { 0, 0, 0}}, // ( 18, 120) + { 0, { 0, 0, 0}}, // ( 19, 120) + { 0, { 0, 0, 0}}, // ( 20, 120) + { 0, { 0, 0, 0}}, // ( 21, 120) + { 0, { 0, 0, 0}}, // ( 22, 120) + { 0, { 0, 0, 0}}, // ( 23, 120) + { 0, { 0, 0, 0}}, // ( 24, 120) + { 0, { 0, 0, 0}}, // ( 25, 120) + { 0, { 0, 0, 0}}, // ( 26, 120) + { 0, { 0, 0, 0}}, // ( 27, 120) + { 0, { 0, 0, 0}}, // ( 28, 120) + { 0, { 0, 0, 0}}, // ( 29, 120) + { 0, { 0, 0, 0}}, // ( 30, 120) + { 0, { 0, 0, 0}}, // ( 31, 120) + { 0, { 0, 0, 0}}, // ( 32, 120) + { 0, { 0, 0, 0}}, // ( 33, 120) + { 0, { 0, 0, 0}}, // ( 34, 120) + { 0, { 0, 0, 0}}, // ( 35, 120) + { 0, { 0, 0, 0}}, // ( 36, 120) + { 0, { 0, 0, 0}}, // ( 37, 120) + { 0, { 0, 0, 0}}, // ( 38, 120) + { 0, { 0, 0, 0}}, // ( 39, 120) + { 0, { 0, 0, 0}}, // ( 40, 120) + { 0, { 0, 0, 0}}, // ( 41, 120) + { 0, { 0, 0, 0}}, // ( 42, 120) + { 0, { 0, 0, 0}}, // ( 43, 120) + { 0, { 0, 0, 0}}, // ( 44, 120) + { 0, { 0, 0, 0}}, // ( 45, 120) + { 0, { 0, 0, 0}}, // ( 46, 120) + { 0, { 0, 0, 0}}, // ( 47, 120) + { 0, { 0, 0, 0}}, // ( 48, 120) + { 0, { 0, 0, 0}}, // ( 49, 120) + { 0, { 0, 0, 0}}, // ( 50, 120) + { 0, { 0, 0, 0}}, // ( 51, 120) + { 0, { 0, 0, 0}}, // ( 52, 120) + { 0, { 0, 0, 0}}, // ( 53, 120) + { 0, { 0, 0, 0}}, // ( 54, 120) + { 0, { 0, 0, 0}}, // ( 55, 120) + { 0, { 0, 0, 0}}, // ( 56, 120) + { 0, { 0, 0, 0}}, // ( 57, 120) + { 0, { 0, 0, 0}}, // ( 58, 120) + { 0, { 0, 0, 0}}, // ( 59, 120) + { 0, { 0, 0, 0}}, // ( 60, 120) + { 0, { 0, 0, 0}}, // ( 61, 120) + { 0, { 0, 0, 0}}, // ( 62, 120) + { 0, { 0, 0, 0}}, // ( 63, 120) + { 0, { 0, 0, 0}}, // ( 64, 120) + { 0, { 0, 0, 0}}, // ( 65, 120) + { 0, { 0, 0, 0}}, // ( 66, 120) + { 0, { 0, 0, 0}}, // ( 67, 120) + { 0, { 0, 0, 0}}, // ( 68, 120) + { 0, { 0, 0, 0}}, // ( 69, 120) + { 0, { 0, 0, 0}}, // ( 70, 120) + { 0, { 0, 0, 0}}, // ( 71, 120) + { 0, { 0, 0, 0}}, // ( 72, 120) + { 0, { 0, 0, 0}}, // ( 73, 120) + { 0, { 0, 0, 0}}, // ( 74, 120) + { 0, { 0, 0, 0}}, // ( 75, 120) + { 0, { 0, 0, 0}}, // ( 76, 120) + { 0, { 0, 0, 0}}, // ( 77, 120) + { 0, { 0, 0, 0}}, // ( 78, 120) + { 0, { 0, 0, 0}}, // ( 79, 120) + { 0, { 0, 0, 0}}, // ( 80, 120) + { 0, { 0, 0, 0}}, // ( 81, 120) + { 0, { 0, 0, 0}}, // ( 82, 120) + { 0, { 0, 0, 0}}, // ( 83, 120) + { 0, { 0, 0, 0}}, // ( 84, 120) + { 0, { 0, 0, 0}}, // ( 85, 120) + { 0, { 0, 0, 0}}, // ( 86, 120) + { 0, { 0, 0, 0}}, // ( 87, 120) + { 0, { 0, 0, 0}}, // ( 88, 120) + { 0, { 0, 0, 0}}, // ( 89, 120) + { 0, { 0, 0, 0}}, // ( 90, 120) + { 0, { 0, 0, 0}}, // ( 91, 120) + { 0, { 0, 0, 0}}, // ( 92, 120) + { 0, { 0, 0, 0}}, // ( 93, 120) + { 0, { 0, 0, 0}}, // ( 94, 120) + { 0, { 0, 0, 0}}, // ( 95, 120) + { 0, { 0, 0, 0}}, // ( 96, 120) + { 0, { 0, 0, 0}}, // ( 97, 120) + { 0, { 0, 0, 0}}, // ( 98, 120) + { 0, { 0, 0, 0}}, // ( 99, 120) + { 0, { 0, 0, 0}}, // (100, 120) + { 0, { 0, 0, 0}}, // (101, 120) + { 0, { 0, 0, 0}}, // (102, 120) + { 0, { 0, 0, 0}}, // (103, 120) + { 0, { 0, 0, 0}}, // (104, 120) + { 0, { 0, 0, 0}}, // (105, 120) + { 0, { 0, 0, 0}}, // (106, 120) + { 0, { 0, 0, 0}}, // (107, 120) + { 0, { 0, 0, 0}}, // (108, 120) + { 0, { 0, 0, 0}}, // (109, 120) + { 0, { 0, 0, 0}}, // (110, 120) + { 0, { 0, 0, 0}}, // (111, 120) + { 0, { 0, 0, 0}}, // (112, 120) + { 0, { 0, 0, 0}}, // (113, 120) + { 0, { 0, 0, 0}}, // (114, 120) + { 0, { 0, 0, 0}}, // (115, 120) + { 0, { 0, 0, 0}}, // (116, 120) + { 0, { 0, 0, 0}}, // (117, 120) + { 0, { 0, 0, 0}}, // (118, 120) + { 0, { 0, 0, 0}}, // (119, 120) + { 0, { 0, 0, 0}}, // (120, 120) + { 0, { 0, 0, 0}}, // (121, 120) + { 0, { 0, 0, 0}}, // (122, 120) + { 0, { 0, 0, 0}}, // (123, 120) + { 0, { 0, 0, 0}}, // (124, 120) + { 0, { 0, 0, 0}}, // (125, 120) + { 0, { 0, 0, 0}}, // (126, 120) + { 0, { 0, 0, 0}}, // (127, 120) + { 0, { 0, 0, 0}}, // (128, 120) + { 0, { 0, 0, 0}}, // (129, 120) + { 0, { 0, 0, 0}}, // (130, 120) + { 0, { 0, 0, 0}}, // (131, 120) + { 0, { 0, 0, 0}}, // (132, 120) + { 0, { 0, 0, 0}}, // (133, 120) + { 0, { 0, 0, 0}}, // (134, 120) + { 0, { 0, 0, 0}}, // (135, 120) + { 0, { 0, 0, 0}}, // (136, 120) + { 0, { 0, 0, 0}}, // (137, 120) + { 0, { 0, 0, 0}}, // (138, 120) + { 0, { 0, 0, 0}}, // (139, 120) + { 0, { 0, 0, 0}}, // (140, 120) + { 0, { 0, 0, 0}}, // (141, 120) + { 0, { 0, 0, 0}}, // (142, 120) + { 0, { 0, 0, 0}}, // (143, 120) + { 0, { 0, 0, 0}}, // (144, 120) + { 0, { 0, 0, 0}}, // (145, 120) + { 0, { 0, 0, 0}}, // (146, 120) + { 0, { 0, 0, 0}}, // (147, 120) + { 0, { 0, 0, 0}}, // (148, 120) + { 0, { 0, 0, 0}}, // (149, 120) + { 0, { 0, 0, 0}}, // (150, 120) + { 0, { 0, 0, 0}}, // (151, 120) + { 0, { 0, 0, 0}}, // (152, 120) + { 0, { 0, 0, 0}}, // (153, 120) + { 0, { 0, 0, 0}}, // (154, 120) + { 0, { 0, 0, 0}}, // (155, 120) + { 0, { 0, 0, 0}}, // (156, 120) + { 0, { 0, 0, 0}}, // (157, 120) + { 0, { 0, 0, 0}}, // (158, 120) + { 0, { 0, 0, 0}}, // (159, 120) + { 0, { 0, 0, 0}}, // (160, 120) + { 0, { 0, 0, 0}}, // (161, 120) + { 0, { 0, 0, 0}}, // (162, 120) + { 0, { 0, 0, 0}}, // (163, 120) + { 0, { 0, 0, 0}}, // (164, 120) + { 0, { 0, 0, 0}}, // (165, 120) + { 0, { 0, 0, 0}}, // (166, 120) + { 0, { 0, 0, 0}}, // (167, 120) + { 0, { 0, 0, 0}}, // (168, 120) + { 0, { 0, 0, 0}}, // (169, 120) + { 0, { 0, 0, 0}}, // (170, 120) + { 0, { 0, 0, 0}}, // (171, 120) + { 55, { 0, 0, 0}}, // (172, 120) + {128, { 0, 0, 0}}, // (173, 120) + {128, { 0, 0, 0}}, // (174, 120) + {128, { 0, 0, 0}}, // (175, 120) + {128, { 0, 0, 0}}, // (176, 120) + {128, { 0, 0, 0}}, // (177, 120) + {128, { 0, 0, 0}}, // (178, 120) + {128, { 0, 0, 0}}, // (179, 120) + {128, { 0, 0, 0}}, // ( 0, 121) + {128, { 0, 0, 0}}, // ( 1, 121) + {128, { 0, 0, 0}}, // ( 2, 121) + {128, { 0, 0, 0}}, // ( 3, 121) + {128, { 0, 0, 0}}, // ( 4, 121) + {128, { 0, 0, 0}}, // ( 5, 121) + {128, { 0, 0, 0}}, // ( 6, 121) + {106, { 0, 0, 0}}, // ( 7, 121) + { 0, { 0, 0, 0}}, // ( 8, 121) + { 0, { 0, 0, 0}}, // ( 9, 121) + { 0, { 0, 0, 0}}, // ( 10, 121) + { 0, { 0, 0, 0}}, // ( 11, 121) + { 0, { 0, 0, 0}}, // ( 12, 121) + { 0, { 0, 0, 0}}, // ( 13, 121) + { 0, { 0, 0, 0}}, // ( 14, 121) + { 0, { 0, 0, 0}}, // ( 15, 121) + { 0, { 0, 0, 0}}, // ( 16, 121) + { 0, { 0, 0, 0}}, // ( 17, 121) + { 0, { 0, 0, 0}}, // ( 18, 121) + { 0, { 0, 0, 0}}, // ( 19, 121) + { 0, { 0, 0, 0}}, // ( 20, 121) + { 0, { 0, 0, 0}}, // ( 21, 121) + { 0, { 0, 0, 0}}, // ( 22, 121) + { 0, { 0, 0, 0}}, // ( 23, 121) + { 0, { 0, 0, 0}}, // ( 24, 121) + { 0, { 0, 0, 0}}, // ( 25, 121) + { 0, { 0, 0, 0}}, // ( 26, 121) + { 0, { 0, 0, 0}}, // ( 27, 121) + { 0, { 0, 0, 0}}, // ( 28, 121) + { 0, { 0, 0, 0}}, // ( 29, 121) + { 0, { 0, 0, 0}}, // ( 30, 121) + { 0, { 0, 0, 0}}, // ( 31, 121) + { 0, { 0, 0, 0}}, // ( 32, 121) + { 0, { 0, 0, 0}}, // ( 33, 121) + { 0, { 0, 0, 0}}, // ( 34, 121) + { 0, { 0, 0, 0}}, // ( 35, 121) + { 0, { 0, 0, 0}}, // ( 36, 121) + { 0, { 0, 0, 0}}, // ( 37, 121) + { 0, { 0, 0, 0}}, // ( 38, 121) + { 0, { 0, 0, 0}}, // ( 39, 121) + { 0, { 0, 0, 0}}, // ( 40, 121) + { 0, { 0, 0, 0}}, // ( 41, 121) + { 0, { 0, 0, 0}}, // ( 42, 121) + { 0, { 0, 0, 0}}, // ( 43, 121) + { 0, { 0, 0, 0}}, // ( 44, 121) + { 0, { 0, 0, 0}}, // ( 45, 121) + { 0, { 0, 0, 0}}, // ( 46, 121) + { 0, { 0, 0, 0}}, // ( 47, 121) + { 0, { 0, 0, 0}}, // ( 48, 121) + { 0, { 0, 0, 0}}, // ( 49, 121) + { 0, { 0, 0, 0}}, // ( 50, 121) + { 0, { 0, 0, 0}}, // ( 51, 121) + { 0, { 0, 0, 0}}, // ( 52, 121) + { 0, { 0, 0, 0}}, // ( 53, 121) + { 0, { 0, 0, 0}}, // ( 54, 121) + { 0, { 0, 0, 0}}, // ( 55, 121) + { 0, { 0, 0, 0}}, // ( 56, 121) + { 0, { 0, 0, 0}}, // ( 57, 121) + { 0, { 0, 0, 0}}, // ( 58, 121) + { 0, { 0, 0, 0}}, // ( 59, 121) + { 0, { 0, 0, 0}}, // ( 60, 121) + { 0, { 0, 0, 0}}, // ( 61, 121) + { 0, { 0, 0, 0}}, // ( 62, 121) + { 0, { 0, 0, 0}}, // ( 63, 121) + { 0, { 0, 0, 0}}, // ( 64, 121) + { 0, { 0, 0, 0}}, // ( 65, 121) + { 0, { 0, 0, 0}}, // ( 66, 121) + { 0, { 0, 0, 0}}, // ( 67, 121) + { 0, { 0, 0, 0}}, // ( 68, 121) + { 0, { 0, 0, 0}}, // ( 69, 121) + { 0, { 0, 0, 0}}, // ( 70, 121) + { 0, { 0, 0, 0}}, // ( 71, 121) + { 0, { 0, 0, 0}}, // ( 72, 121) + { 0, { 0, 0, 0}}, // ( 73, 121) + { 0, { 0, 0, 0}}, // ( 74, 121) + { 0, { 0, 0, 0}}, // ( 75, 121) + { 0, { 0, 0, 0}}, // ( 76, 121) + { 0, { 0, 0, 0}}, // ( 77, 121) + { 0, { 0, 0, 0}}, // ( 78, 121) + { 0, { 0, 0, 0}}, // ( 79, 121) + { 0, { 0, 0, 0}}, // ( 80, 121) + { 0, { 0, 0, 0}}, // ( 81, 121) + { 0, { 0, 0, 0}}, // ( 82, 121) + { 0, { 0, 0, 0}}, // ( 83, 121) + { 0, { 0, 0, 0}}, // ( 84, 121) + { 0, { 0, 0, 0}}, // ( 85, 121) + { 0, { 0, 0, 0}}, // ( 86, 121) + { 0, { 0, 0, 0}}, // ( 87, 121) + { 0, { 0, 0, 0}}, // ( 88, 121) + { 0, { 0, 0, 0}}, // ( 89, 121) + { 0, { 0, 0, 0}}, // ( 90, 121) + { 0, { 0, 0, 0}}, // ( 91, 121) + { 0, { 0, 0, 0}}, // ( 92, 121) + { 0, { 0, 0, 0}}, // ( 93, 121) + { 0, { 0, 0, 0}}, // ( 94, 121) + { 0, { 0, 0, 0}}, // ( 95, 121) + { 0, { 0, 0, 0}}, // ( 96, 121) + { 0, { 0, 0, 0}}, // ( 97, 121) + { 0, { 0, 0, 0}}, // ( 98, 121) + { 0, { 0, 0, 0}}, // ( 99, 121) + { 0, { 0, 0, 0}}, // (100, 121) + { 0, { 0, 0, 0}}, // (101, 121) + { 0, { 0, 0, 0}}, // (102, 121) + { 0, { 0, 0, 0}}, // (103, 121) + { 0, { 0, 0, 0}}, // (104, 121) + { 0, { 0, 0, 0}}, // (105, 121) + { 0, { 0, 0, 0}}, // (106, 121) + { 0, { 0, 0, 0}}, // (107, 121) + { 0, { 0, 0, 0}}, // (108, 121) + { 0, { 0, 0, 0}}, // (109, 121) + { 0, { 0, 0, 0}}, // (110, 121) + { 0, { 0, 0, 0}}, // (111, 121) + { 0, { 0, 0, 0}}, // (112, 121) + { 0, { 0, 0, 0}}, // (113, 121) + { 0, { 0, 0, 0}}, // (114, 121) + { 0, { 0, 0, 0}}, // (115, 121) + { 0, { 0, 0, 0}}, // (116, 121) + { 0, { 0, 0, 0}}, // (117, 121) + { 0, { 0, 0, 0}}, // (118, 121) + { 0, { 0, 0, 0}}, // (119, 121) + { 0, { 0, 0, 0}}, // (120, 121) + { 0, { 0, 0, 0}}, // (121, 121) + { 0, { 0, 0, 0}}, // (122, 121) + { 0, { 0, 0, 0}}, // (123, 121) + { 0, { 0, 0, 0}}, // (124, 121) + { 0, { 0, 0, 0}}, // (125, 121) + { 0, { 0, 0, 0}}, // (126, 121) + { 0, { 0, 0, 0}}, // (127, 121) + { 0, { 0, 0, 0}}, // (128, 121) + { 0, { 0, 0, 0}}, // (129, 121) + { 0, { 0, 0, 0}}, // (130, 121) + { 0, { 0, 0, 0}}, // (131, 121) + { 0, { 0, 0, 0}}, // (132, 121) + { 0, { 0, 0, 0}}, // (133, 121) + { 0, { 0, 0, 0}}, // (134, 121) + { 0, { 0, 0, 0}}, // (135, 121) + { 0, { 0, 0, 0}}, // (136, 121) + { 0, { 0, 0, 0}}, // (137, 121) + { 0, { 0, 0, 0}}, // (138, 121) + { 0, { 0, 0, 0}}, // (139, 121) + { 0, { 0, 0, 0}}, // (140, 121) + { 0, { 0, 0, 0}}, // (141, 121) + { 0, { 0, 0, 0}}, // (142, 121) + { 0, { 0, 0, 0}}, // (143, 121) + { 0, { 0, 0, 0}}, // (144, 121) + { 0, { 0, 0, 0}}, // (145, 121) + { 0, { 0, 0, 0}}, // (146, 121) + { 0, { 0, 0, 0}}, // (147, 121) + { 0, { 0, 0, 0}}, // (148, 121) + { 0, { 0, 0, 0}}, // (149, 121) + { 0, { 0, 0, 0}}, // (150, 121) + { 0, { 0, 0, 0}}, // (151, 121) + { 0, { 0, 0, 0}}, // (152, 121) + { 0, { 0, 0, 0}}, // (153, 121) + { 0, { 0, 0, 0}}, // (154, 121) + { 0, { 0, 0, 0}}, // (155, 121) + { 0, { 0, 0, 0}}, // (156, 121) + { 0, { 0, 0, 0}}, // (157, 121) + { 0, { 0, 0, 0}}, // (158, 121) + { 0, { 0, 0, 0}}, // (159, 121) + { 0, { 0, 0, 0}}, // (160, 121) + { 0, { 0, 0, 0}}, // (161, 121) + { 0, { 0, 0, 0}}, // (162, 121) + { 0, { 0, 0, 0}}, // (163, 121) + { 0, { 0, 0, 0}}, // (164, 121) + { 0, { 0, 0, 0}}, // (165, 121) + { 0, { 0, 0, 0}}, // (166, 121) + { 0, { 0, 0, 0}}, // (167, 121) + { 0, { 0, 0, 0}}, // (168, 121) + { 0, { 0, 0, 0}}, // (169, 121) + { 0, { 0, 0, 0}}, // (170, 121) + { 0, { 0, 0, 0}}, // (171, 121) + {105, { 0, 0, 0}}, // (172, 121) + {128, { 0, 0, 0}}, // (173, 121) + {128, { 0, 0, 0}}, // (174, 121) + {128, { 0, 0, 0}}, // (175, 121) + {128, { 0, 0, 0}}, // (176, 121) + {128, { 0, 0, 0}}, // (177, 121) + {128, { 0, 0, 0}}, // (178, 121) + {128, { 0, 0, 0}}, // (179, 121) + {128, { 0, 0, 0}}, // ( 0, 122) + {128, { 0, 0, 0}}, // ( 1, 122) + {128, { 0, 0, 0}}, // ( 2, 122) + {128, { 0, 0, 0}}, // ( 3, 122) + {128, { 0, 0, 0}}, // ( 4, 122) + {128, { 0, 0, 0}}, // ( 5, 122) + {128, { 0, 0, 0}}, // ( 6, 122) + {128, { 0, 0, 0}}, // ( 7, 122) + { 29, { 0, 0, 0}}, // ( 8, 122) + { 0, { 0, 0, 0}}, // ( 9, 122) + { 0, { 0, 0, 0}}, // ( 10, 122) + { 0, { 0, 0, 0}}, // ( 11, 122) + { 0, { 0, 0, 0}}, // ( 12, 122) + { 0, { 0, 0, 0}}, // ( 13, 122) + { 0, { 0, 0, 0}}, // ( 14, 122) + { 0, { 0, 0, 0}}, // ( 15, 122) + { 0, { 0, 0, 0}}, // ( 16, 122) + { 0, { 0, 0, 0}}, // ( 17, 122) + { 0, { 0, 0, 0}}, // ( 18, 122) + { 0, { 0, 0, 0}}, // ( 19, 122) + { 0, { 0, 0, 0}}, // ( 20, 122) + { 0, { 0, 0, 0}}, // ( 21, 122) + { 0, { 0, 0, 0}}, // ( 22, 122) + { 0, { 0, 0, 0}}, // ( 23, 122) + { 0, { 0, 0, 0}}, // ( 24, 122) + { 0, { 0, 0, 0}}, // ( 25, 122) + { 0, { 0, 0, 0}}, // ( 26, 122) + { 0, { 0, 0, 0}}, // ( 27, 122) + { 0, { 0, 0, 0}}, // ( 28, 122) + { 0, { 0, 0, 0}}, // ( 29, 122) + { 0, { 0, 0, 0}}, // ( 30, 122) + { 0, { 0, 0, 0}}, // ( 31, 122) + { 0, { 0, 0, 0}}, // ( 32, 122) + { 0, { 0, 0, 0}}, // ( 33, 122) + { 0, { 0, 0, 0}}, // ( 34, 122) + { 0, { 0, 0, 0}}, // ( 35, 122) + { 0, { 0, 0, 0}}, // ( 36, 122) + { 0, { 0, 0, 0}}, // ( 37, 122) + { 0, { 0, 0, 0}}, // ( 38, 122) + { 0, { 0, 0, 0}}, // ( 39, 122) + { 0, { 0, 0, 0}}, // ( 40, 122) + { 0, { 0, 0, 0}}, // ( 41, 122) + { 0, { 0, 0, 0}}, // ( 42, 122) + { 0, { 0, 0, 0}}, // ( 43, 122) + { 0, { 0, 0, 0}}, // ( 44, 122) + { 0, { 0, 0, 0}}, // ( 45, 122) + { 0, { 0, 0, 0}}, // ( 46, 122) + { 0, { 0, 0, 0}}, // ( 47, 122) + { 0, { 0, 0, 0}}, // ( 48, 122) + { 0, { 0, 0, 0}}, // ( 49, 122) + { 0, { 0, 0, 0}}, // ( 50, 122) + { 0, { 0, 0, 0}}, // ( 51, 122) + { 0, { 0, 0, 0}}, // ( 52, 122) + { 0, { 0, 0, 0}}, // ( 53, 122) + { 0, { 0, 0, 0}}, // ( 54, 122) + { 0, { 0, 0, 0}}, // ( 55, 122) + { 0, { 0, 0, 0}}, // ( 56, 122) + { 0, { 0, 0, 0}}, // ( 57, 122) + { 0, { 0, 0, 0}}, // ( 58, 122) + { 0, { 0, 0, 0}}, // ( 59, 122) + { 0, { 0, 0, 0}}, // ( 60, 122) + { 0, { 0, 0, 0}}, // ( 61, 122) + { 0, { 0, 0, 0}}, // ( 62, 122) + { 0, { 0, 0, 0}}, // ( 63, 122) + { 0, { 0, 0, 0}}, // ( 64, 122) + { 0, { 0, 0, 0}}, // ( 65, 122) + { 0, { 0, 0, 0}}, // ( 66, 122) + { 0, { 0, 0, 0}}, // ( 67, 122) + { 0, { 0, 0, 0}}, // ( 68, 122) + { 0, { 0, 0, 0}}, // ( 69, 122) + { 0, { 0, 0, 0}}, // ( 70, 122) + { 0, { 0, 0, 0}}, // ( 71, 122) + { 0, { 0, 0, 0}}, // ( 72, 122) + { 0, { 0, 0, 0}}, // ( 73, 122) + { 0, { 0, 0, 0}}, // ( 74, 122) + { 0, { 0, 0, 0}}, // ( 75, 122) + { 0, { 0, 0, 0}}, // ( 76, 122) + { 0, { 0, 0, 0}}, // ( 77, 122) + { 0, { 0, 0, 0}}, // ( 78, 122) + { 0, { 0, 0, 0}}, // ( 79, 122) + { 0, { 0, 0, 0}}, // ( 80, 122) + { 0, { 0, 0, 0}}, // ( 81, 122) + { 0, { 0, 0, 0}}, // ( 82, 122) + { 0, { 0, 0, 0}}, // ( 83, 122) + { 0, { 0, 0, 0}}, // ( 84, 122) + { 0, { 0, 0, 0}}, // ( 85, 122) + { 0, { 0, 0, 0}}, // ( 86, 122) + { 0, { 0, 0, 0}}, // ( 87, 122) + { 0, { 0, 0, 0}}, // ( 88, 122) + { 0, { 0, 0, 0}}, // ( 89, 122) + { 0, { 0, 0, 0}}, // ( 90, 122) + { 0, { 0, 0, 0}}, // ( 91, 122) + { 0, { 0, 0, 0}}, // ( 92, 122) + { 0, { 0, 0, 0}}, // ( 93, 122) + { 0, { 0, 0, 0}}, // ( 94, 122) + { 0, { 0, 0, 0}}, // ( 95, 122) + { 0, { 0, 0, 0}}, // ( 96, 122) + { 0, { 0, 0, 0}}, // ( 97, 122) + { 0, { 0, 0, 0}}, // ( 98, 122) + { 0, { 0, 0, 0}}, // ( 99, 122) + { 0, { 0, 0, 0}}, // (100, 122) + { 0, { 0, 0, 0}}, // (101, 122) + { 0, { 0, 0, 0}}, // (102, 122) + { 0, { 0, 0, 0}}, // (103, 122) + { 0, { 0, 0, 0}}, // (104, 122) + { 0, { 0, 0, 0}}, // (105, 122) + { 0, { 0, 0, 0}}, // (106, 122) + { 0, { 0, 0, 0}}, // (107, 122) + { 0, { 0, 0, 0}}, // (108, 122) + { 0, { 0, 0, 0}}, // (109, 122) + { 0, { 0, 0, 0}}, // (110, 122) + { 0, { 0, 0, 0}}, // (111, 122) + { 0, { 0, 0, 0}}, // (112, 122) + { 0, { 0, 0, 0}}, // (113, 122) + { 0, { 0, 0, 0}}, // (114, 122) + { 0, { 0, 0, 0}}, // (115, 122) + { 0, { 0, 0, 0}}, // (116, 122) + { 0, { 0, 0, 0}}, // (117, 122) + { 0, { 0, 0, 0}}, // (118, 122) + { 0, { 0, 0, 0}}, // (119, 122) + { 0, { 0, 0, 0}}, // (120, 122) + { 0, { 0, 0, 0}}, // (121, 122) + { 0, { 0, 0, 0}}, // (122, 122) + { 0, { 0, 0, 0}}, // (123, 122) + { 0, { 0, 0, 0}}, // (124, 122) + { 0, { 0, 0, 0}}, // (125, 122) + { 0, { 0, 0, 0}}, // (126, 122) + { 0, { 0, 0, 0}}, // (127, 122) + { 0, { 0, 0, 0}}, // (128, 122) + { 0, { 0, 0, 0}}, // (129, 122) + { 0, { 0, 0, 0}}, // (130, 122) + { 0, { 0, 0, 0}}, // (131, 122) + { 0, { 0, 0, 0}}, // (132, 122) + { 0, { 0, 0, 0}}, // (133, 122) + { 0, { 0, 0, 0}}, // (134, 122) + { 0, { 0, 0, 0}}, // (135, 122) + { 0, { 0, 0, 0}}, // (136, 122) + { 0, { 0, 0, 0}}, // (137, 122) + { 0, { 0, 0, 0}}, // (138, 122) + { 0, { 0, 0, 0}}, // (139, 122) + { 0, { 0, 0, 0}}, // (140, 122) + { 0, { 0, 0, 0}}, // (141, 122) + { 0, { 0, 0, 0}}, // (142, 122) + { 0, { 0, 0, 0}}, // (143, 122) + { 0, { 0, 0, 0}}, // (144, 122) + { 0, { 0, 0, 0}}, // (145, 122) + { 0, { 0, 0, 0}}, // (146, 122) + { 0, { 0, 0, 0}}, // (147, 122) + { 0, { 0, 0, 0}}, // (148, 122) + { 0, { 0, 0, 0}}, // (149, 122) + { 0, { 0, 0, 0}}, // (150, 122) + { 0, { 0, 0, 0}}, // (151, 122) + { 0, { 0, 0, 0}}, // (152, 122) + { 0, { 0, 0, 0}}, // (153, 122) + { 0, { 0, 0, 0}}, // (154, 122) + { 0, { 0, 0, 0}}, // (155, 122) + { 0, { 0, 0, 0}}, // (156, 122) + { 0, { 0, 0, 0}}, // (157, 122) + { 0, { 0, 0, 0}}, // (158, 122) + { 0, { 0, 0, 0}}, // (159, 122) + { 0, { 0, 0, 0}}, // (160, 122) + { 0, { 0, 0, 0}}, // (161, 122) + { 0, { 0, 0, 0}}, // (162, 122) + { 0, { 0, 0, 0}}, // (163, 122) + { 0, { 0, 0, 0}}, // (164, 122) + { 0, { 0, 0, 0}}, // (165, 122) + { 0, { 0, 0, 0}}, // (166, 122) + { 0, { 0, 0, 0}}, // (167, 122) + { 0, { 0, 0, 0}}, // (168, 122) + { 0, { 0, 0, 0}}, // (169, 122) + { 0, { 0, 0, 0}}, // (170, 122) + { 29, { 0, 0, 0}}, // (171, 122) + {128, { 0, 0, 0}}, // (172, 122) + {128, { 0, 0, 0}}, // (173, 122) + {128, { 0, 0, 0}}, // (174, 122) + {128, { 0, 0, 0}}, // (175, 122) + {128, { 0, 0, 0}}, // (176, 122) + {128, { 0, 0, 0}}, // (177, 122) + {128, { 0, 0, 0}}, // (178, 122) + {128, { 0, 0, 0}}, // (179, 122) + {128, { 0, 0, 0}}, // ( 0, 123) + {128, { 0, 0, 0}}, // ( 1, 123) + {128, { 0, 0, 0}}, // ( 2, 123) + {128, { 0, 0, 0}}, // ( 3, 123) + {128, { 0, 0, 0}}, // ( 4, 123) + {128, { 0, 0, 0}}, // ( 5, 123) + {128, { 0, 0, 0}}, // ( 6, 123) + {128, { 0, 0, 0}}, // ( 7, 123) + { 79, { 0, 0, 0}}, // ( 8, 123) + { 0, { 0, 0, 0}}, // ( 9, 123) + { 0, { 0, 0, 0}}, // ( 10, 123) + { 0, { 0, 0, 0}}, // ( 11, 123) + { 0, { 0, 0, 0}}, // ( 12, 123) + { 0, { 0, 0, 0}}, // ( 13, 123) + { 0, { 0, 0, 0}}, // ( 14, 123) + { 0, { 0, 0, 0}}, // ( 15, 123) + { 0, { 0, 0, 0}}, // ( 16, 123) + { 0, { 0, 0, 0}}, // ( 17, 123) + { 0, { 0, 0, 0}}, // ( 18, 123) + { 0, { 0, 0, 0}}, // ( 19, 123) + { 0, { 0, 0, 0}}, // ( 20, 123) + { 0, { 0, 0, 0}}, // ( 21, 123) + { 0, { 0, 0, 0}}, // ( 22, 123) + { 0, { 0, 0, 0}}, // ( 23, 123) + { 0, { 0, 0, 0}}, // ( 24, 123) + { 0, { 0, 0, 0}}, // ( 25, 123) + { 0, { 0, 0, 0}}, // ( 26, 123) + { 0, { 0, 0, 0}}, // ( 27, 123) + { 0, { 0, 0, 0}}, // ( 28, 123) + { 0, { 0, 0, 0}}, // ( 29, 123) + { 0, { 0, 0, 0}}, // ( 30, 123) + { 0, { 0, 0, 0}}, // ( 31, 123) + { 0, { 0, 0, 0}}, // ( 32, 123) + { 0, { 0, 0, 0}}, // ( 33, 123) + { 0, { 0, 0, 0}}, // ( 34, 123) + { 0, { 0, 0, 0}}, // ( 35, 123) + { 0, { 0, 0, 0}}, // ( 36, 123) + { 0, { 0, 0, 0}}, // ( 37, 123) + { 0, { 0, 0, 0}}, // ( 38, 123) + { 0, { 0, 0, 0}}, // ( 39, 123) + { 0, { 0, 0, 0}}, // ( 40, 123) + { 0, { 0, 0, 0}}, // ( 41, 123) + { 0, { 0, 0, 0}}, // ( 42, 123) + { 0, { 0, 0, 0}}, // ( 43, 123) + { 0, { 0, 0, 0}}, // ( 44, 123) + { 0, { 0, 0, 0}}, // ( 45, 123) + { 0, { 0, 0, 0}}, // ( 46, 123) + { 0, { 0, 0, 0}}, // ( 47, 123) + { 0, { 0, 0, 0}}, // ( 48, 123) + { 0, { 0, 0, 0}}, // ( 49, 123) + { 0, { 0, 0, 0}}, // ( 50, 123) + { 0, { 0, 0, 0}}, // ( 51, 123) + { 0, { 0, 0, 0}}, // ( 52, 123) + { 0, { 0, 0, 0}}, // ( 53, 123) + { 0, { 0, 0, 0}}, // ( 54, 123) + { 0, { 0, 0, 0}}, // ( 55, 123) + { 0, { 0, 0, 0}}, // ( 56, 123) + { 0, { 0, 0, 0}}, // ( 57, 123) + { 0, { 0, 0, 0}}, // ( 58, 123) + { 0, { 0, 0, 0}}, // ( 59, 123) + { 0, { 0, 0, 0}}, // ( 60, 123) + { 0, { 0, 0, 0}}, // ( 61, 123) + { 0, { 0, 0, 0}}, // ( 62, 123) + { 0, { 0, 0, 0}}, // ( 63, 123) + { 0, { 0, 0, 0}}, // ( 64, 123) + { 0, { 0, 0, 0}}, // ( 65, 123) + { 0, { 0, 0, 0}}, // ( 66, 123) + { 0, { 0, 0, 0}}, // ( 67, 123) + { 0, { 0, 0, 0}}, // ( 68, 123) + { 0, { 0, 0, 0}}, // ( 69, 123) + { 0, { 0, 0, 0}}, // ( 70, 123) + { 0, { 0, 0, 0}}, // ( 71, 123) + { 0, { 0, 0, 0}}, // ( 72, 123) + { 0, { 0, 0, 0}}, // ( 73, 123) + { 0, { 0, 0, 0}}, // ( 74, 123) + { 0, { 0, 0, 0}}, // ( 75, 123) + { 0, { 0, 0, 0}}, // ( 76, 123) + { 0, { 0, 0, 0}}, // ( 77, 123) + { 0, { 0, 0, 0}}, // ( 78, 123) + { 0, { 0, 0, 0}}, // ( 79, 123) + { 0, { 0, 0, 0}}, // ( 80, 123) + { 0, { 0, 0, 0}}, // ( 81, 123) + { 0, { 0, 0, 0}}, // ( 82, 123) + { 0, { 0, 0, 0}}, // ( 83, 123) + { 0, { 0, 0, 0}}, // ( 84, 123) + { 0, { 0, 0, 0}}, // ( 85, 123) + { 0, { 0, 0, 0}}, // ( 86, 123) + { 0, { 0, 0, 0}}, // ( 87, 123) + { 0, { 0, 0, 0}}, // ( 88, 123) + { 0, { 0, 0, 0}}, // ( 89, 123) + { 0, { 0, 0, 0}}, // ( 90, 123) + { 0, { 0, 0, 0}}, // ( 91, 123) + { 0, { 0, 0, 0}}, // ( 92, 123) + { 0, { 0, 0, 0}}, // ( 93, 123) + { 0, { 0, 0, 0}}, // ( 94, 123) + { 0, { 0, 0, 0}}, // ( 95, 123) + { 0, { 0, 0, 0}}, // ( 96, 123) + { 0, { 0, 0, 0}}, // ( 97, 123) + { 0, { 0, 0, 0}}, // ( 98, 123) + { 0, { 0, 0, 0}}, // ( 99, 123) + { 0, { 0, 0, 0}}, // (100, 123) + { 0, { 0, 0, 0}}, // (101, 123) + { 0, { 0, 0, 0}}, // (102, 123) + { 0, { 0, 0, 0}}, // (103, 123) + { 0, { 0, 0, 0}}, // (104, 123) + { 0, { 0, 0, 0}}, // (105, 123) + { 0, { 0, 0, 0}}, // (106, 123) + { 0, { 0, 0, 0}}, // (107, 123) + { 0, { 0, 0, 0}}, // (108, 123) + { 0, { 0, 0, 0}}, // (109, 123) + { 0, { 0, 0, 0}}, // (110, 123) + { 0, { 0, 0, 0}}, // (111, 123) + { 0, { 0, 0, 0}}, // (112, 123) + { 0, { 0, 0, 0}}, // (113, 123) + { 0, { 0, 0, 0}}, // (114, 123) + { 0, { 0, 0, 0}}, // (115, 123) + { 0, { 0, 0, 0}}, // (116, 123) + { 0, { 0, 0, 0}}, // (117, 123) + { 0, { 0, 0, 0}}, // (118, 123) + { 0, { 0, 0, 0}}, // (119, 123) + { 0, { 0, 0, 0}}, // (120, 123) + { 0, { 0, 0, 0}}, // (121, 123) + { 0, { 0, 0, 0}}, // (122, 123) + { 0, { 0, 0, 0}}, // (123, 123) + { 0, { 0, 0, 0}}, // (124, 123) + { 0, { 0, 0, 0}}, // (125, 123) + { 0, { 0, 0, 0}}, // (126, 123) + { 0, { 0, 0, 0}}, // (127, 123) + { 0, { 0, 0, 0}}, // (128, 123) + { 0, { 0, 0, 0}}, // (129, 123) + { 0, { 0, 0, 0}}, // (130, 123) + { 0, { 0, 0, 0}}, // (131, 123) + { 0, { 0, 0, 0}}, // (132, 123) + { 0, { 0, 0, 0}}, // (133, 123) + { 0, { 0, 0, 0}}, // (134, 123) + { 0, { 0, 0, 0}}, // (135, 123) + { 0, { 0, 0, 0}}, // (136, 123) + { 0, { 0, 0, 0}}, // (137, 123) + { 0, { 0, 0, 0}}, // (138, 123) + { 0, { 0, 0, 0}}, // (139, 123) + { 0, { 0, 0, 0}}, // (140, 123) + { 0, { 0, 0, 0}}, // (141, 123) + { 0, { 0, 0, 0}}, // (142, 123) + { 0, { 0, 0, 0}}, // (143, 123) + { 0, { 0, 0, 0}}, // (144, 123) + { 0, { 0, 0, 0}}, // (145, 123) + { 0, { 0, 0, 0}}, // (146, 123) + { 0, { 0, 0, 0}}, // (147, 123) + { 0, { 0, 0, 0}}, // (148, 123) + { 0, { 0, 0, 0}}, // (149, 123) + { 0, { 0, 0, 0}}, // (150, 123) + { 0, { 0, 0, 0}}, // (151, 123) + { 0, { 0, 0, 0}}, // (152, 123) + { 0, { 0, 0, 0}}, // (153, 123) + { 0, { 0, 0, 0}}, // (154, 123) + { 0, { 0, 0, 0}}, // (155, 123) + { 0, { 0, 0, 0}}, // (156, 123) + { 0, { 0, 0, 0}}, // (157, 123) + { 0, { 0, 0, 0}}, // (158, 123) + { 0, { 0, 0, 0}}, // (159, 123) + { 0, { 0, 0, 0}}, // (160, 123) + { 0, { 0, 0, 0}}, // (161, 123) + { 0, { 0, 0, 0}}, // (162, 123) + { 0, { 0, 0, 0}}, // (163, 123) + { 0, { 0, 0, 0}}, // (164, 123) + { 0, { 0, 0, 0}}, // (165, 123) + { 0, { 0, 0, 0}}, // (166, 123) + { 0, { 0, 0, 0}}, // (167, 123) + { 0, { 0, 0, 0}}, // (168, 123) + { 0, { 0, 0, 0}}, // (169, 123) + { 0, { 0, 0, 0}}, // (170, 123) + { 79, { 0, 0, 0}}, // (171, 123) + {128, { 0, 0, 0}}, // (172, 123) + {128, { 0, 0, 0}}, // (173, 123) + {128, { 0, 0, 0}}, // (174, 123) + {128, { 0, 0, 0}}, // (175, 123) + {128, { 0, 0, 0}}, // (176, 123) + {128, { 0, 0, 0}}, // (177, 123) + {128, { 0, 0, 0}}, // (178, 123) + {128, { 0, 0, 0}}, // (179, 123) + {128, { 0, 0, 0}}, // ( 0, 124) + {128, { 0, 0, 0}}, // ( 1, 124) + {128, { 0, 0, 0}}, // ( 2, 124) + {128, { 0, 0, 0}}, // ( 3, 124) + {128, { 0, 0, 0}}, // ( 4, 124) + {128, { 0, 0, 0}}, // ( 5, 124) + {128, { 0, 0, 0}}, // ( 6, 124) + {128, { 0, 0, 0}}, // ( 7, 124) + {122, { 0, 0, 0}}, // ( 8, 124) + { 9, { 0, 0, 0}}, // ( 9, 124) + { 0, { 0, 0, 0}}, // ( 10, 124) + { 0, { 0, 0, 0}}, // ( 11, 124) + { 0, { 0, 0, 0}}, // ( 12, 124) + { 0, { 0, 0, 0}}, // ( 13, 124) + { 0, { 0, 0, 0}}, // ( 14, 124) + { 0, { 0, 0, 0}}, // ( 15, 124) + { 0, { 0, 0, 0}}, // ( 16, 124) + { 0, { 0, 0, 0}}, // ( 17, 124) + { 0, { 0, 0, 0}}, // ( 18, 124) + { 0, { 0, 0, 0}}, // ( 19, 124) + { 0, { 0, 0, 0}}, // ( 20, 124) + { 0, { 0, 0, 0}}, // ( 21, 124) + { 0, { 0, 0, 0}}, // ( 22, 124) + { 0, { 0, 0, 0}}, // ( 23, 124) + { 0, { 0, 0, 0}}, // ( 24, 124) + { 0, { 0, 0, 0}}, // ( 25, 124) + { 0, { 0, 0, 0}}, // ( 26, 124) + { 0, { 0, 0, 0}}, // ( 27, 124) + { 0, { 0, 0, 0}}, // ( 28, 124) + { 0, { 0, 0, 0}}, // ( 29, 124) + { 0, { 0, 0, 0}}, // ( 30, 124) + { 0, { 0, 0, 0}}, // ( 31, 124) + { 0, { 0, 0, 0}}, // ( 32, 124) + { 0, { 0, 0, 0}}, // ( 33, 124) + { 0, { 0, 0, 0}}, // ( 34, 124) + { 0, { 0, 0, 0}}, // ( 35, 124) + { 0, { 0, 0, 0}}, // ( 36, 124) + { 0, { 0, 0, 0}}, // ( 37, 124) + { 0, { 0, 0, 0}}, // ( 38, 124) + { 0, { 0, 0, 0}}, // ( 39, 124) + { 0, { 0, 0, 0}}, // ( 40, 124) + { 0, { 0, 0, 0}}, // ( 41, 124) + { 0, { 0, 0, 0}}, // ( 42, 124) + { 0, { 0, 0, 0}}, // ( 43, 124) + { 0, { 0, 0, 0}}, // ( 44, 124) + { 0, { 0, 0, 0}}, // ( 45, 124) + { 0, { 0, 0, 0}}, // ( 46, 124) + { 0, { 0, 0, 0}}, // ( 47, 124) + { 0, { 0, 0, 0}}, // ( 48, 124) + { 0, { 0, 0, 0}}, // ( 49, 124) + { 0, { 0, 0, 0}}, // ( 50, 124) + { 0, { 0, 0, 0}}, // ( 51, 124) + { 0, { 0, 0, 0}}, // ( 52, 124) + { 0, { 0, 0, 0}}, // ( 53, 124) + { 0, { 0, 0, 0}}, // ( 54, 124) + { 0, { 0, 0, 0}}, // ( 55, 124) + { 0, { 0, 0, 0}}, // ( 56, 124) + { 0, { 0, 0, 0}}, // ( 57, 124) + { 0, { 0, 0, 0}}, // ( 58, 124) + { 0, { 0, 0, 0}}, // ( 59, 124) + { 0, { 0, 0, 0}}, // ( 60, 124) + { 0, { 0, 0, 0}}, // ( 61, 124) + { 0, { 0, 0, 0}}, // ( 62, 124) + { 0, { 0, 0, 0}}, // ( 63, 124) + { 0, { 0, 0, 0}}, // ( 64, 124) + { 0, { 0, 0, 0}}, // ( 65, 124) + { 0, { 0, 0, 0}}, // ( 66, 124) + { 0, { 0, 0, 0}}, // ( 67, 124) + { 0, { 0, 0, 0}}, // ( 68, 124) + { 0, { 0, 0, 0}}, // ( 69, 124) + { 0, { 0, 0, 0}}, // ( 70, 124) + { 0, { 0, 0, 0}}, // ( 71, 124) + { 0, { 0, 0, 0}}, // ( 72, 124) + { 0, { 0, 0, 0}}, // ( 73, 124) + { 0, { 0, 0, 0}}, // ( 74, 124) + { 0, { 0, 0, 0}}, // ( 75, 124) + { 0, { 0, 0, 0}}, // ( 76, 124) + { 0, { 0, 0, 0}}, // ( 77, 124) + { 0, { 0, 0, 0}}, // ( 78, 124) + { 0, { 0, 0, 0}}, // ( 79, 124) + { 0, { 0, 0, 0}}, // ( 80, 124) + { 0, { 0, 0, 0}}, // ( 81, 124) + { 0, { 0, 0, 0}}, // ( 82, 124) + { 0, { 0, 0, 0}}, // ( 83, 124) + { 0, { 0, 0, 0}}, // ( 84, 124) + { 0, { 0, 0, 0}}, // ( 85, 124) + { 0, { 0, 0, 0}}, // ( 86, 124) + { 0, { 0, 0, 0}}, // ( 87, 124) + { 0, { 0, 0, 0}}, // ( 88, 124) + { 0, { 0, 0, 0}}, // ( 89, 124) + { 0, { 0, 0, 0}}, // ( 90, 124) + { 0, { 0, 0, 0}}, // ( 91, 124) + { 0, { 0, 0, 0}}, // ( 92, 124) + { 0, { 0, 0, 0}}, // ( 93, 124) + { 0, { 0, 0, 0}}, // ( 94, 124) + { 0, { 0, 0, 0}}, // ( 95, 124) + { 0, { 0, 0, 0}}, // ( 96, 124) + { 0, { 0, 0, 0}}, // ( 97, 124) + { 0, { 0, 0, 0}}, // ( 98, 124) + { 0, { 0, 0, 0}}, // ( 99, 124) + { 0, { 0, 0, 0}}, // (100, 124) + { 0, { 0, 0, 0}}, // (101, 124) + { 0, { 0, 0, 0}}, // (102, 124) + { 0, { 0, 0, 0}}, // (103, 124) + { 0, { 0, 0, 0}}, // (104, 124) + { 0, { 0, 0, 0}}, // (105, 124) + { 0, { 0, 0, 0}}, // (106, 124) + { 0, { 0, 0, 0}}, // (107, 124) + { 0, { 0, 0, 0}}, // (108, 124) + { 0, { 0, 0, 0}}, // (109, 124) + { 0, { 0, 0, 0}}, // (110, 124) + { 0, { 0, 0, 0}}, // (111, 124) + { 0, { 0, 0, 0}}, // (112, 124) + { 0, { 0, 0, 0}}, // (113, 124) + { 0, { 0, 0, 0}}, // (114, 124) + { 0, { 0, 0, 0}}, // (115, 124) + { 0, { 0, 0, 0}}, // (116, 124) + { 0, { 0, 0, 0}}, // (117, 124) + { 0, { 0, 0, 0}}, // (118, 124) + { 0, { 0, 0, 0}}, // (119, 124) + { 0, { 0, 0, 0}}, // (120, 124) + { 0, { 0, 0, 0}}, // (121, 124) + { 0, { 0, 0, 0}}, // (122, 124) + { 0, { 0, 0, 0}}, // (123, 124) + { 0, { 0, 0, 0}}, // (124, 124) + { 0, { 0, 0, 0}}, // (125, 124) + { 0, { 0, 0, 0}}, // (126, 124) + { 0, { 0, 0, 0}}, // (127, 124) + { 0, { 0, 0, 0}}, // (128, 124) + { 0, { 0, 0, 0}}, // (129, 124) + { 0, { 0, 0, 0}}, // (130, 124) + { 0, { 0, 0, 0}}, // (131, 124) + { 0, { 0, 0, 0}}, // (132, 124) + { 0, { 0, 0, 0}}, // (133, 124) + { 0, { 0, 0, 0}}, // (134, 124) + { 0, { 0, 0, 0}}, // (135, 124) + { 0, { 0, 0, 0}}, // (136, 124) + { 0, { 0, 0, 0}}, // (137, 124) + { 0, { 0, 0, 0}}, // (138, 124) + { 0, { 0, 0, 0}}, // (139, 124) + { 0, { 0, 0, 0}}, // (140, 124) + { 0, { 0, 0, 0}}, // (141, 124) + { 0, { 0, 0, 0}}, // (142, 124) + { 0, { 0, 0, 0}}, // (143, 124) + { 0, { 0, 0, 0}}, // (144, 124) + { 0, { 0, 0, 0}}, // (145, 124) + { 0, { 0, 0, 0}}, // (146, 124) + { 0, { 0, 0, 0}}, // (147, 124) + { 0, { 0, 0, 0}}, // (148, 124) + { 0, { 0, 0, 0}}, // (149, 124) + { 0, { 0, 0, 0}}, // (150, 124) + { 0, { 0, 0, 0}}, // (151, 124) + { 0, { 0, 0, 0}}, // (152, 124) + { 0, { 0, 0, 0}}, // (153, 124) + { 0, { 0, 0, 0}}, // (154, 124) + { 0, { 0, 0, 0}}, // (155, 124) + { 0, { 0, 0, 0}}, // (156, 124) + { 0, { 0, 0, 0}}, // (157, 124) + { 0, { 0, 0, 0}}, // (158, 124) + { 0, { 0, 0, 0}}, // (159, 124) + { 0, { 0, 0, 0}}, // (160, 124) + { 0, { 0, 0, 0}}, // (161, 124) + { 0, { 0, 0, 0}}, // (162, 124) + { 0, { 0, 0, 0}}, // (163, 124) + { 0, { 0, 0, 0}}, // (164, 124) + { 0, { 0, 0, 0}}, // (165, 124) + { 0, { 0, 0, 0}}, // (166, 124) + { 0, { 0, 0, 0}}, // (167, 124) + { 0, { 0, 0, 0}}, // (168, 124) + { 0, { 0, 0, 0}}, // (169, 124) + { 8, { 0, 0, 0}}, // (170, 124) + {122, { 0, 0, 0}}, // (171, 124) + {128, { 0, 0, 0}}, // (172, 124) + {128, { 0, 0, 0}}, // (173, 124) + {128, { 0, 0, 0}}, // (174, 124) + {128, { 0, 0, 0}}, // (175, 124) + {128, { 0, 0, 0}}, // (176, 124) + {128, { 0, 0, 0}}, // (177, 124) + {128, { 0, 0, 0}}, // (178, 124) + {128, { 0, 0, 0}}, // (179, 124) + {128, { 0, 0, 0}}, // ( 0, 125) + {128, { 0, 0, 0}}, // ( 1, 125) + {128, { 0, 0, 0}}, // ( 2, 125) + {128, { 0, 0, 0}}, // ( 3, 125) + {128, { 0, 0, 0}}, // ( 4, 125) + {128, { 0, 0, 0}}, // ( 5, 125) + {128, { 0, 0, 0}}, // ( 6, 125) + {128, { 0, 0, 0}}, // ( 7, 125) + {128, { 0, 0, 0}}, // ( 8, 125) + { 62, { 0, 0, 0}}, // ( 9, 125) + { 0, { 0, 0, 0}}, // ( 10, 125) + { 0, { 0, 0, 0}}, // ( 11, 125) + { 0, { 0, 0, 0}}, // ( 12, 125) + { 0, { 0, 0, 0}}, // ( 13, 125) + { 0, { 0, 0, 0}}, // ( 14, 125) + { 0, { 0, 0, 0}}, // ( 15, 125) + { 0, { 0, 0, 0}}, // ( 16, 125) + { 0, { 0, 0, 0}}, // ( 17, 125) + { 0, { 0, 0, 0}}, // ( 18, 125) + { 0, { 0, 0, 0}}, // ( 19, 125) + { 0, { 0, 0, 0}}, // ( 20, 125) + { 0, { 0, 0, 0}}, // ( 21, 125) + { 0, { 0, 0, 0}}, // ( 22, 125) + { 0, { 0, 0, 0}}, // ( 23, 125) + { 0, { 0, 0, 0}}, // ( 24, 125) + { 0, { 0, 0, 0}}, // ( 25, 125) + { 0, { 0, 0, 0}}, // ( 26, 125) + { 0, { 0, 0, 0}}, // ( 27, 125) + { 0, { 0, 0, 0}}, // ( 28, 125) + { 0, { 0, 0, 0}}, // ( 29, 125) + { 0, { 0, 0, 0}}, // ( 30, 125) + { 0, { 0, 0, 0}}, // ( 31, 125) + { 0, { 0, 0, 0}}, // ( 32, 125) + { 0, { 0, 0, 0}}, // ( 33, 125) + { 0, { 0, 0, 0}}, // ( 34, 125) + { 0, { 0, 0, 0}}, // ( 35, 125) + { 0, { 0, 0, 0}}, // ( 36, 125) + { 0, { 0, 0, 0}}, // ( 37, 125) + { 0, { 0, 0, 0}}, // ( 38, 125) + { 0, { 0, 0, 0}}, // ( 39, 125) + { 0, { 0, 0, 0}}, // ( 40, 125) + { 0, { 0, 0, 0}}, // ( 41, 125) + { 0, { 0, 0, 0}}, // ( 42, 125) + { 0, { 0, 0, 0}}, // ( 43, 125) + { 0, { 0, 0, 0}}, // ( 44, 125) + { 0, { 0, 0, 0}}, // ( 45, 125) + { 0, { 0, 0, 0}}, // ( 46, 125) + { 0, { 0, 0, 0}}, // ( 47, 125) + { 0, { 0, 0, 0}}, // ( 48, 125) + { 0, { 0, 0, 0}}, // ( 49, 125) + { 0, { 0, 0, 0}}, // ( 50, 125) + { 0, { 0, 0, 0}}, // ( 51, 125) + { 0, { 0, 0, 0}}, // ( 52, 125) + { 0, { 0, 0, 0}}, // ( 53, 125) + { 0, { 0, 0, 0}}, // ( 54, 125) + { 0, { 0, 0, 0}}, // ( 55, 125) + { 0, { 0, 0, 0}}, // ( 56, 125) + { 0, { 0, 0, 0}}, // ( 57, 125) + { 0, { 0, 0, 0}}, // ( 58, 125) + { 0, { 0, 0, 0}}, // ( 59, 125) + { 0, { 0, 0, 0}}, // ( 60, 125) + { 0, { 0, 0, 0}}, // ( 61, 125) + { 0, { 0, 0, 0}}, // ( 62, 125) + { 0, { 0, 0, 0}}, // ( 63, 125) + { 0, { 0, 0, 0}}, // ( 64, 125) + { 0, { 0, 0, 0}}, // ( 65, 125) + { 0, { 0, 0, 0}}, // ( 66, 125) + { 0, { 0, 0, 0}}, // ( 67, 125) + { 0, { 0, 0, 0}}, // ( 68, 125) + { 0, { 0, 0, 0}}, // ( 69, 125) + { 0, { 0, 0, 0}}, // ( 70, 125) + { 0, { 0, 0, 0}}, // ( 71, 125) + { 0, { 0, 0, 0}}, // ( 72, 125) + { 0, { 0, 0, 0}}, // ( 73, 125) + { 0, { 0, 0, 0}}, // ( 74, 125) + { 0, { 0, 0, 0}}, // ( 75, 125) + { 0, { 0, 0, 0}}, // ( 76, 125) + { 0, { 0, 0, 0}}, // ( 77, 125) + { 0, { 0, 0, 0}}, // ( 78, 125) + { 0, { 0, 0, 0}}, // ( 79, 125) + { 0, { 0, 0, 0}}, // ( 80, 125) + { 0, { 0, 0, 0}}, // ( 81, 125) + { 0, { 0, 0, 0}}, // ( 82, 125) + { 0, { 0, 0, 0}}, // ( 83, 125) + { 0, { 0, 0, 0}}, // ( 84, 125) + { 0, { 0, 0, 0}}, // ( 85, 125) + { 0, { 0, 0, 0}}, // ( 86, 125) + { 0, { 0, 0, 0}}, // ( 87, 125) + { 0, { 0, 0, 0}}, // ( 88, 125) + { 0, { 0, 0, 0}}, // ( 89, 125) + { 0, { 0, 0, 0}}, // ( 90, 125) + { 0, { 0, 0, 0}}, // ( 91, 125) + { 0, { 0, 0, 0}}, // ( 92, 125) + { 0, { 0, 0, 0}}, // ( 93, 125) + { 0, { 0, 0, 0}}, // ( 94, 125) + { 0, { 0, 0, 0}}, // ( 95, 125) + { 0, { 0, 0, 0}}, // ( 96, 125) + { 0, { 0, 0, 0}}, // ( 97, 125) + { 0, { 0, 0, 0}}, // ( 98, 125) + { 0, { 0, 0, 0}}, // ( 99, 125) + { 0, { 0, 0, 0}}, // (100, 125) + { 0, { 0, 0, 0}}, // (101, 125) + { 0, { 0, 0, 0}}, // (102, 125) + { 0, { 0, 0, 0}}, // (103, 125) + { 0, { 0, 0, 0}}, // (104, 125) + { 0, { 0, 0, 0}}, // (105, 125) + { 0, { 0, 0, 0}}, // (106, 125) + { 0, { 0, 0, 0}}, // (107, 125) + { 0, { 0, 0, 0}}, // (108, 125) + { 0, { 0, 0, 0}}, // (109, 125) + { 0, { 0, 0, 0}}, // (110, 125) + { 0, { 0, 0, 0}}, // (111, 125) + { 0, { 0, 0, 0}}, // (112, 125) + { 0, { 0, 0, 0}}, // (113, 125) + { 0, { 0, 0, 0}}, // (114, 125) + { 0, { 0, 0, 0}}, // (115, 125) + { 0, { 0, 0, 0}}, // (116, 125) + { 0, { 0, 0, 0}}, // (117, 125) + { 0, { 0, 0, 0}}, // (118, 125) + { 0, { 0, 0, 0}}, // (119, 125) + { 0, { 0, 0, 0}}, // (120, 125) + { 0, { 0, 0, 0}}, // (121, 125) + { 0, { 0, 0, 0}}, // (122, 125) + { 0, { 0, 0, 0}}, // (123, 125) + { 0, { 0, 0, 0}}, // (124, 125) + { 0, { 0, 0, 0}}, // (125, 125) + { 0, { 0, 0, 0}}, // (126, 125) + { 0, { 0, 0, 0}}, // (127, 125) + { 0, { 0, 0, 0}}, // (128, 125) + { 0, { 0, 0, 0}}, // (129, 125) + { 0, { 0, 0, 0}}, // (130, 125) + { 0, { 0, 0, 0}}, // (131, 125) + { 0, { 0, 0, 0}}, // (132, 125) + { 0, { 0, 0, 0}}, // (133, 125) + { 0, { 0, 0, 0}}, // (134, 125) + { 0, { 0, 0, 0}}, // (135, 125) + { 0, { 0, 0, 0}}, // (136, 125) + { 0, { 0, 0, 0}}, // (137, 125) + { 0, { 0, 0, 0}}, // (138, 125) + { 0, { 0, 0, 0}}, // (139, 125) + { 0, { 0, 0, 0}}, // (140, 125) + { 0, { 0, 0, 0}}, // (141, 125) + { 0, { 0, 0, 0}}, // (142, 125) + { 0, { 0, 0, 0}}, // (143, 125) + { 0, { 0, 0, 0}}, // (144, 125) + { 0, { 0, 0, 0}}, // (145, 125) + { 0, { 0, 0, 0}}, // (146, 125) + { 0, { 0, 0, 0}}, // (147, 125) + { 0, { 0, 0, 0}}, // (148, 125) + { 0, { 0, 0, 0}}, // (149, 125) + { 0, { 0, 0, 0}}, // (150, 125) + { 0, { 0, 0, 0}}, // (151, 125) + { 0, { 0, 0, 0}}, // (152, 125) + { 0, { 0, 0, 0}}, // (153, 125) + { 0, { 0, 0, 0}}, // (154, 125) + { 0, { 0, 0, 0}}, // (155, 125) + { 0, { 0, 0, 0}}, // (156, 125) + { 0, { 0, 0, 0}}, // (157, 125) + { 0, { 0, 0, 0}}, // (158, 125) + { 0, { 0, 0, 0}}, // (159, 125) + { 0, { 0, 0, 0}}, // (160, 125) + { 0, { 0, 0, 0}}, // (161, 125) + { 0, { 0, 0, 0}}, // (162, 125) + { 0, { 0, 0, 0}}, // (163, 125) + { 0, { 0, 0, 0}}, // (164, 125) + { 0, { 0, 0, 0}}, // (165, 125) + { 0, { 0, 0, 0}}, // (166, 125) + { 0, { 0, 0, 0}}, // (167, 125) + { 0, { 0, 0, 0}}, // (168, 125) + { 0, { 0, 0, 0}}, // (169, 125) + { 58, { 0, 0, 0}}, // (170, 125) + {128, { 0, 0, 0}}, // (171, 125) + {128, { 0, 0, 0}}, // (172, 125) + {128, { 0, 0, 0}}, // (173, 125) + {128, { 0, 0, 0}}, // (174, 125) + {128, { 0, 0, 0}}, // (175, 125) + {128, { 0, 0, 0}}, // (176, 125) + {128, { 0, 0, 0}}, // (177, 125) + {128, { 0, 0, 0}}, // (178, 125) + {128, { 0, 0, 0}}, // (179, 125) + {128, { 0, 0, 0}}, // ( 0, 126) + {128, { 0, 0, 0}}, // ( 1, 126) + {128, { 0, 0, 0}}, // ( 2, 126) + {128, { 0, 0, 0}}, // ( 3, 126) + {128, { 0, 0, 0}}, // ( 4, 126) + {128, { 0, 0, 0}}, // ( 5, 126) + {128, { 0, 0, 0}}, // ( 6, 126) + {128, { 0, 0, 0}}, // ( 7, 126) + {128, { 0, 0, 0}}, // ( 8, 126) + {115, { 0, 0, 0}}, // ( 9, 126) + { 3, { 0, 0, 0}}, // ( 10, 126) + { 0, { 0, 0, 0}}, // ( 11, 126) + { 0, { 0, 0, 0}}, // ( 12, 126) + { 0, { 0, 0, 0}}, // ( 13, 126) + { 0, { 0, 0, 0}}, // ( 14, 126) + { 0, { 0, 0, 0}}, // ( 15, 126) + { 0, { 0, 0, 0}}, // ( 16, 126) + { 0, { 0, 0, 0}}, // ( 17, 126) + { 0, { 0, 0, 0}}, // ( 18, 126) + { 0, { 0, 0, 0}}, // ( 19, 126) + { 0, { 0, 0, 0}}, // ( 20, 126) + { 0, { 0, 0, 0}}, // ( 21, 126) + { 0, { 0, 0, 0}}, // ( 22, 126) + { 0, { 0, 0, 0}}, // ( 23, 126) + { 0, { 0, 0, 0}}, // ( 24, 126) + { 0, { 0, 0, 0}}, // ( 25, 126) + { 0, { 0, 0, 0}}, // ( 26, 126) + { 0, { 0, 0, 0}}, // ( 27, 126) + { 0, { 0, 0, 0}}, // ( 28, 126) + { 0, { 0, 0, 0}}, // ( 29, 126) + { 0, { 0, 0, 0}}, // ( 30, 126) + { 0, { 0, 0, 0}}, // ( 31, 126) + { 0, { 0, 0, 0}}, // ( 32, 126) + { 0, { 0, 0, 0}}, // ( 33, 126) + { 0, { 0, 0, 0}}, // ( 34, 126) + { 0, { 0, 0, 0}}, // ( 35, 126) + { 0, { 0, 0, 0}}, // ( 36, 126) + { 0, { 0, 0, 0}}, // ( 37, 126) + { 0, { 0, 0, 0}}, // ( 38, 126) + { 0, { 0, 0, 0}}, // ( 39, 126) + { 0, { 0, 0, 0}}, // ( 40, 126) + { 0, { 0, 0, 0}}, // ( 41, 126) + { 0, { 0, 0, 0}}, // ( 42, 126) + { 0, { 0, 0, 0}}, // ( 43, 126) + { 0, { 0, 0, 0}}, // ( 44, 126) + { 0, { 0, 0, 0}}, // ( 45, 126) + { 0, { 0, 0, 0}}, // ( 46, 126) + { 0, { 0, 0, 0}}, // ( 47, 126) + { 0, { 0, 0, 0}}, // ( 48, 126) + { 0, { 0, 0, 0}}, // ( 49, 126) + { 0, { 0, 0, 0}}, // ( 50, 126) + { 0, { 0, 0, 0}}, // ( 51, 126) + { 0, { 0, 0, 0}}, // ( 52, 126) + { 0, { 0, 0, 0}}, // ( 53, 126) + { 0, { 0, 0, 0}}, // ( 54, 126) + { 0, { 0, 0, 0}}, // ( 55, 126) + { 0, { 0, 0, 0}}, // ( 56, 126) + { 0, { 0, 0, 0}}, // ( 57, 126) + { 0, { 0, 0, 0}}, // ( 58, 126) + { 0, { 0, 0, 0}}, // ( 59, 126) + { 0, { 0, 0, 0}}, // ( 60, 126) + { 0, { 0, 0, 0}}, // ( 61, 126) + { 0, { 0, 0, 0}}, // ( 62, 126) + { 0, { 0, 0, 0}}, // ( 63, 126) + { 0, { 0, 0, 0}}, // ( 64, 126) + { 0, { 0, 0, 0}}, // ( 65, 126) + { 0, { 0, 0, 0}}, // ( 66, 126) + { 0, { 0, 0, 0}}, // ( 67, 126) + { 0, { 0, 0, 0}}, // ( 68, 126) + { 0, { 0, 0, 0}}, // ( 69, 126) + { 0, { 0, 0, 0}}, // ( 70, 126) + { 0, { 0, 0, 0}}, // ( 71, 126) + { 0, { 0, 0, 0}}, // ( 72, 126) + { 0, { 0, 0, 0}}, // ( 73, 126) + { 0, { 0, 0, 0}}, // ( 74, 126) + { 0, { 0, 0, 0}}, // ( 75, 126) + { 0, { 0, 0, 0}}, // ( 76, 126) + { 0, { 0, 0, 0}}, // ( 77, 126) + { 0, { 0, 0, 0}}, // ( 78, 126) + { 0, { 0, 0, 0}}, // ( 79, 126) + { 0, { 0, 0, 0}}, // ( 80, 126) + { 0, { 0, 0, 0}}, // ( 81, 126) + { 0, { 0, 0, 0}}, // ( 82, 126) + { 0, { 0, 0, 0}}, // ( 83, 126) + { 0, { 0, 0, 0}}, // ( 84, 126) + { 0, { 0, 0, 0}}, // ( 85, 126) + { 0, { 0, 0, 0}}, // ( 86, 126) + { 0, { 0, 0, 0}}, // ( 87, 126) + { 0, { 0, 0, 0}}, // ( 88, 126) + { 0, { 0, 0, 0}}, // ( 89, 126) + { 0, { 0, 0, 0}}, // ( 90, 126) + { 0, { 0, 0, 0}}, // ( 91, 126) + { 0, { 0, 0, 0}}, // ( 92, 126) + { 0, { 0, 0, 0}}, // ( 93, 126) + { 0, { 0, 0, 0}}, // ( 94, 126) + { 0, { 0, 0, 0}}, // ( 95, 126) + { 0, { 0, 0, 0}}, // ( 96, 126) + { 0, { 0, 0, 0}}, // ( 97, 126) + { 0, { 0, 0, 0}}, // ( 98, 126) + { 0, { 0, 0, 0}}, // ( 99, 126) + { 0, { 0, 0, 0}}, // (100, 126) + { 0, { 0, 0, 0}}, // (101, 126) + { 0, { 0, 0, 0}}, // (102, 126) + { 0, { 0, 0, 0}}, // (103, 126) + { 0, { 0, 0, 0}}, // (104, 126) + { 0, { 0, 0, 0}}, // (105, 126) + { 0, { 0, 0, 0}}, // (106, 126) + { 0, { 0, 0, 0}}, // (107, 126) + { 0, { 0, 0, 0}}, // (108, 126) + { 0, { 0, 0, 0}}, // (109, 126) + { 0, { 0, 0, 0}}, // (110, 126) + { 0, { 0, 0, 0}}, // (111, 126) + { 0, { 0, 0, 0}}, // (112, 126) + { 0, { 0, 0, 0}}, // (113, 126) + { 0, { 0, 0, 0}}, // (114, 126) + { 0, { 0, 0, 0}}, // (115, 126) + { 0, { 0, 0, 0}}, // (116, 126) + { 0, { 0, 0, 0}}, // (117, 126) + { 0, { 0, 0, 0}}, // (118, 126) + { 0, { 0, 0, 0}}, // (119, 126) + { 0, { 0, 0, 0}}, // (120, 126) + { 0, { 0, 0, 0}}, // (121, 126) + { 0, { 0, 0, 0}}, // (122, 126) + { 0, { 0, 0, 0}}, // (123, 126) + { 0, { 0, 0, 0}}, // (124, 126) + { 0, { 0, 0, 0}}, // (125, 126) + { 0, { 0, 0, 0}}, // (126, 126) + { 0, { 0, 0, 0}}, // (127, 126) + { 0, { 0, 0, 0}}, // (128, 126) + { 0, { 0, 0, 0}}, // (129, 126) + { 0, { 0, 0, 0}}, // (130, 126) + { 0, { 0, 0, 0}}, // (131, 126) + { 0, { 0, 0, 0}}, // (132, 126) + { 0, { 0, 0, 0}}, // (133, 126) + { 0, { 0, 0, 0}}, // (134, 126) + { 0, { 0, 0, 0}}, // (135, 126) + { 0, { 0, 0, 0}}, // (136, 126) + { 0, { 0, 0, 0}}, // (137, 126) + { 0, { 0, 0, 0}}, // (138, 126) + { 0, { 0, 0, 0}}, // (139, 126) + { 0, { 0, 0, 0}}, // (140, 126) + { 0, { 0, 0, 0}}, // (141, 126) + { 0, { 0, 0, 0}}, // (142, 126) + { 0, { 0, 0, 0}}, // (143, 126) + { 0, { 0, 0, 0}}, // (144, 126) + { 0, { 0, 0, 0}}, // (145, 126) + { 0, { 0, 0, 0}}, // (146, 126) + { 0, { 0, 0, 0}}, // (147, 126) + { 0, { 0, 0, 0}}, // (148, 126) + { 0, { 0, 0, 0}}, // (149, 126) + { 0, { 0, 0, 0}}, // (150, 126) + { 0, { 0, 0, 0}}, // (151, 126) + { 0, { 0, 0, 0}}, // (152, 126) + { 0, { 0, 0, 0}}, // (153, 126) + { 0, { 0, 0, 0}}, // (154, 126) + { 0, { 0, 0, 0}}, // (155, 126) + { 0, { 0, 0, 0}}, // (156, 126) + { 0, { 0, 0, 0}}, // (157, 126) + { 0, { 0, 0, 0}}, // (158, 126) + { 0, { 0, 0, 0}}, // (159, 126) + { 0, { 0, 0, 0}}, // (160, 126) + { 0, { 0, 0, 0}}, // (161, 126) + { 0, { 0, 0, 0}}, // (162, 126) + { 0, { 0, 0, 0}}, // (163, 126) + { 0, { 0, 0, 0}}, // (164, 126) + { 0, { 0, 0, 0}}, // (165, 126) + { 0, { 0, 0, 0}}, // (166, 126) + { 0, { 0, 0, 0}}, // (167, 126) + { 0, { 0, 0, 0}}, // (168, 126) + { 3, { 0, 0, 0}}, // (169, 126) + {113, { 0, 0, 0}}, // (170, 126) + {128, { 0, 0, 0}}, // (171, 126) + {128, { 0, 0, 0}}, // (172, 126) + {128, { 0, 0, 0}}, // (173, 126) + {128, { 0, 0, 0}}, // (174, 126) + {128, { 0, 0, 0}}, // (175, 126) + {128, { 0, 0, 0}}, // (176, 126) + {128, { 0, 0, 0}}, // (177, 126) + {128, { 0, 0, 0}}, // (178, 126) + {128, { 0, 0, 0}}, // (179, 126) + {128, { 0, 0, 0}}, // ( 0, 127) + {128, { 0, 0, 0}}, // ( 1, 127) + {128, { 0, 0, 0}}, // ( 2, 127) + {128, { 0, 0, 0}}, // ( 3, 127) + {128, { 0, 0, 0}}, // ( 4, 127) + {128, { 0, 0, 0}}, // ( 5, 127) + {128, { 0, 0, 0}}, // ( 6, 127) + {128, { 0, 0, 0}}, // ( 7, 127) + {128, { 0, 0, 0}}, // ( 8, 127) + {128, { 0, 0, 0}}, // ( 9, 127) + { 49, { 0, 0, 0}}, // ( 10, 127) + { 0, { 0, 0, 0}}, // ( 11, 127) + { 0, { 0, 0, 0}}, // ( 12, 127) + { 0, { 0, 0, 0}}, // ( 13, 127) + { 0, { 0, 0, 0}}, // ( 14, 127) + { 0, { 0, 0, 0}}, // ( 15, 127) + { 0, { 0, 0, 0}}, // ( 16, 127) + { 0, { 0, 0, 0}}, // ( 17, 127) + { 0, { 0, 0, 0}}, // ( 18, 127) + { 0, { 0, 0, 0}}, // ( 19, 127) + { 0, { 0, 0, 0}}, // ( 20, 127) + { 0, { 0, 0, 0}}, // ( 21, 127) + { 0, { 0, 0, 0}}, // ( 22, 127) + { 0, { 0, 0, 0}}, // ( 23, 127) + { 0, { 0, 0, 0}}, // ( 24, 127) + { 0, { 0, 0, 0}}, // ( 25, 127) + { 0, { 0, 0, 0}}, // ( 26, 127) + { 0, { 0, 0, 0}}, // ( 27, 127) + { 0, { 0, 0, 0}}, // ( 28, 127) + { 0, { 0, 0, 0}}, // ( 29, 127) + { 0, { 0, 0, 0}}, // ( 30, 127) + { 0, { 0, 0, 0}}, // ( 31, 127) + { 0, { 0, 0, 0}}, // ( 32, 127) + { 0, { 0, 0, 0}}, // ( 33, 127) + { 0, { 0, 0, 0}}, // ( 34, 127) + { 0, { 0, 0, 0}}, // ( 35, 127) + { 0, { 0, 0, 0}}, // ( 36, 127) + { 0, { 0, 0, 0}}, // ( 37, 127) + { 0, { 0, 0, 0}}, // ( 38, 127) + { 0, { 0, 0, 0}}, // ( 39, 127) + { 0, { 0, 0, 0}}, // ( 40, 127) + { 0, { 0, 0, 0}}, // ( 41, 127) + { 0, { 0, 0, 0}}, // ( 42, 127) + { 0, { 0, 0, 0}}, // ( 43, 127) + { 0, { 0, 0, 0}}, // ( 44, 127) + { 0, { 0, 0, 0}}, // ( 45, 127) + { 0, { 0, 0, 0}}, // ( 46, 127) + { 0, { 0, 0, 0}}, // ( 47, 127) + { 0, { 0, 0, 0}}, // ( 48, 127) + { 0, { 0, 0, 0}}, // ( 49, 127) + { 0, { 0, 0, 0}}, // ( 50, 127) + { 0, { 0, 0, 0}}, // ( 51, 127) + { 0, { 0, 0, 0}}, // ( 52, 127) + { 0, { 0, 0, 0}}, // ( 53, 127) + { 0, { 0, 0, 0}}, // ( 54, 127) + { 0, { 0, 0, 0}}, // ( 55, 127) + { 0, { 0, 0, 0}}, // ( 56, 127) + { 0, { 0, 0, 0}}, // ( 57, 127) + { 0, { 0, 0, 0}}, // ( 58, 127) + { 0, { 0, 0, 0}}, // ( 59, 127) + { 0, { 0, 0, 0}}, // ( 60, 127) + { 0, { 0, 0, 0}}, // ( 61, 127) + { 0, { 0, 0, 0}}, // ( 62, 127) + { 0, { 0, 0, 0}}, // ( 63, 127) + { 0, { 0, 0, 0}}, // ( 64, 127) + { 0, { 0, 0, 0}}, // ( 65, 127) + { 0, { 0, 0, 0}}, // ( 66, 127) + { 0, { 0, 0, 0}}, // ( 67, 127) + { 0, { 0, 0, 0}}, // ( 68, 127) + { 0, { 0, 0, 0}}, // ( 69, 127) + { 0, { 0, 0, 0}}, // ( 70, 127) + { 0, { 0, 0, 0}}, // ( 71, 127) + { 0, { 0, 0, 0}}, // ( 72, 127) + { 0, { 0, 0, 0}}, // ( 73, 127) + { 0, { 0, 0, 0}}, // ( 74, 127) + { 0, { 0, 0, 0}}, // ( 75, 127) + { 0, { 0, 0, 0}}, // ( 76, 127) + { 0, { 0, 0, 0}}, // ( 77, 127) + { 0, { 0, 0, 0}}, // ( 78, 127) + { 0, { 0, 0, 0}}, // ( 79, 127) + { 0, { 0, 0, 0}}, // ( 80, 127) + { 0, { 0, 0, 0}}, // ( 81, 127) + { 0, { 0, 0, 0}}, // ( 82, 127) + { 0, { 0, 0, 0}}, // ( 83, 127) + { 0, { 0, 0, 0}}, // ( 84, 127) + { 0, { 0, 0, 0}}, // ( 85, 127) + { 0, { 0, 0, 0}}, // ( 86, 127) + { 0, { 0, 0, 0}}, // ( 87, 127) + { 0, { 0, 0, 0}}, // ( 88, 127) + { 0, { 0, 0, 0}}, // ( 89, 127) + { 0, { 0, 0, 0}}, // ( 90, 127) + { 0, { 0, 0, 0}}, // ( 91, 127) + { 0, { 0, 0, 0}}, // ( 92, 127) + { 0, { 0, 0, 0}}, // ( 93, 127) + { 0, { 0, 0, 0}}, // ( 94, 127) + { 0, { 0, 0, 0}}, // ( 95, 127) + { 0, { 0, 0, 0}}, // ( 96, 127) + { 0, { 0, 0, 0}}, // ( 97, 127) + { 0, { 0, 0, 0}}, // ( 98, 127) + { 0, { 0, 0, 0}}, // ( 99, 127) + { 0, { 0, 0, 0}}, // (100, 127) + { 0, { 0, 0, 0}}, // (101, 127) + { 0, { 0, 0, 0}}, // (102, 127) + { 0, { 0, 0, 0}}, // (103, 127) + { 0, { 0, 0, 0}}, // (104, 127) + { 0, { 0, 0, 0}}, // (105, 127) + { 0, { 0, 0, 0}}, // (106, 127) + { 0, { 0, 0, 0}}, // (107, 127) + { 0, { 0, 0, 0}}, // (108, 127) + { 0, { 0, 0, 0}}, // (109, 127) + { 0, { 0, 0, 0}}, // (110, 127) + { 0, { 0, 0, 0}}, // (111, 127) + { 0, { 0, 0, 0}}, // (112, 127) + { 0, { 0, 0, 0}}, // (113, 127) + { 0, { 0, 0, 0}}, // (114, 127) + { 0, { 0, 0, 0}}, // (115, 127) + { 0, { 0, 0, 0}}, // (116, 127) + { 0, { 0, 0, 0}}, // (117, 127) + { 0, { 0, 0, 0}}, // (118, 127) + { 0, { 0, 0, 0}}, // (119, 127) + { 0, { 0, 0, 0}}, // (120, 127) + { 0, { 0, 0, 0}}, // (121, 127) + { 0, { 0, 0, 0}}, // (122, 127) + { 0, { 0, 0, 0}}, // (123, 127) + { 0, { 0, 0, 0}}, // (124, 127) + { 0, { 0, 0, 0}}, // (125, 127) + { 0, { 0, 0, 0}}, // (126, 127) + { 0, { 0, 0, 0}}, // (127, 127) + { 0, { 0, 0, 0}}, // (128, 127) + { 0, { 0, 0, 0}}, // (129, 127) + { 0, { 0, 0, 0}}, // (130, 127) + { 0, { 0, 0, 0}}, // (131, 127) + { 0, { 0, 0, 0}}, // (132, 127) + { 0, { 0, 0, 0}}, // (133, 127) + { 0, { 0, 0, 0}}, // (134, 127) + { 0, { 0, 0, 0}}, // (135, 127) + { 0, { 0, 0, 0}}, // (136, 127) + { 0, { 0, 0, 0}}, // (137, 127) + { 0, { 0, 0, 0}}, // (138, 127) + { 0, { 0, 0, 0}}, // (139, 127) + { 0, { 0, 0, 0}}, // (140, 127) + { 0, { 0, 0, 0}}, // (141, 127) + { 0, { 0, 0, 0}}, // (142, 127) + { 0, { 0, 0, 0}}, // (143, 127) + { 0, { 0, 0, 0}}, // (144, 127) + { 0, { 0, 0, 0}}, // (145, 127) + { 0, { 0, 0, 0}}, // (146, 127) + { 0, { 0, 0, 0}}, // (147, 127) + { 0, { 0, 0, 0}}, // (148, 127) + { 0, { 0, 0, 0}}, // (149, 127) + { 0, { 0, 0, 0}}, // (150, 127) + { 0, { 0, 0, 0}}, // (151, 127) + { 0, { 0, 0, 0}}, // (152, 127) + { 0, { 0, 0, 0}}, // (153, 127) + { 0, { 0, 0, 0}}, // (154, 127) + { 0, { 0, 0, 0}}, // (155, 127) + { 0, { 0, 0, 0}}, // (156, 127) + { 0, { 0, 0, 0}}, // (157, 127) + { 0, { 0, 0, 0}}, // (158, 127) + { 0, { 0, 0, 0}}, // (159, 127) + { 0, { 0, 0, 0}}, // (160, 127) + { 0, { 0, 0, 0}}, // (161, 127) + { 0, { 0, 0, 0}}, // (162, 127) + { 0, { 0, 0, 0}}, // (163, 127) + { 0, { 0, 0, 0}}, // (164, 127) + { 0, { 0, 0, 0}}, // (165, 127) + { 0, { 0, 0, 0}}, // (166, 127) + { 0, { 0, 0, 0}}, // (167, 127) + { 0, { 0, 0, 0}}, // (168, 127) + { 47, { 0, 0, 0}}, // (169, 127) + {128, { 0, 0, 0}}, // (170, 127) + {128, { 0, 0, 0}}, // (171, 127) + {128, { 0, 0, 0}}, // (172, 127) + {128, { 0, 0, 0}}, // (173, 127) + {128, { 0, 0, 0}}, // (174, 127) + {128, { 0, 0, 0}}, // (175, 127) + {128, { 0, 0, 0}}, // (176, 127) + {128, { 0, 0, 0}}, // (177, 127) + {128, { 0, 0, 0}}, // (178, 127) + {128, { 0, 0, 0}}, // (179, 127) + {128, { 0, 0, 0}}, // ( 0, 128) + {128, { 0, 0, 0}}, // ( 1, 128) + {128, { 0, 0, 0}}, // ( 2, 128) + {128, { 0, 0, 0}}, // ( 3, 128) + {128, { 0, 0, 0}}, // ( 4, 128) + {128, { 0, 0, 0}}, // ( 5, 128) + {128, { 0, 0, 0}}, // ( 6, 128) + {128, { 0, 0, 0}}, // ( 7, 128) + {128, { 0, 0, 0}}, // ( 8, 128) + {128, { 0, 0, 0}}, // ( 9, 128) + {108, { 0, 0, 0}}, // ( 10, 128) + { 2, { 0, 0, 0}}, // ( 11, 128) + { 0, { 0, 0, 0}}, // ( 12, 128) + { 0, { 0, 0, 0}}, // ( 13, 128) + { 0, { 0, 0, 0}}, // ( 14, 128) + { 0, { 0, 0, 0}}, // ( 15, 128) + { 0, { 0, 0, 0}}, // ( 16, 128) + { 0, { 0, 0, 0}}, // ( 17, 128) + { 0, { 0, 0, 0}}, // ( 18, 128) + { 0, { 0, 0, 0}}, // ( 19, 128) + { 0, { 0, 0, 0}}, // ( 20, 128) + { 0, { 0, 0, 0}}, // ( 21, 128) + { 0, { 0, 0, 0}}, // ( 22, 128) + { 0, { 0, 0, 0}}, // ( 23, 128) + { 0, { 0, 0, 0}}, // ( 24, 128) + { 0, { 0, 0, 0}}, // ( 25, 128) + { 0, { 0, 0, 0}}, // ( 26, 128) + { 0, { 0, 0, 0}}, // ( 27, 128) + { 0, { 0, 0, 0}}, // ( 28, 128) + { 0, { 0, 0, 0}}, // ( 29, 128) + { 0, { 0, 0, 0}}, // ( 30, 128) + { 0, { 0, 0, 0}}, // ( 31, 128) + { 0, { 0, 0, 0}}, // ( 32, 128) + { 0, { 0, 0, 0}}, // ( 33, 128) + { 0, { 0, 0, 0}}, // ( 34, 128) + { 0, { 0, 0, 0}}, // ( 35, 128) + { 0, { 0, 0, 0}}, // ( 36, 128) + { 0, { 0, 0, 0}}, // ( 37, 128) + { 0, { 0, 0, 0}}, // ( 38, 128) + { 0, { 0, 0, 0}}, // ( 39, 128) + { 0, { 0, 0, 0}}, // ( 40, 128) + { 0, { 0, 0, 0}}, // ( 41, 128) + { 0, { 0, 0, 0}}, // ( 42, 128) + { 0, { 0, 0, 0}}, // ( 43, 128) + { 0, { 0, 0, 0}}, // ( 44, 128) + { 0, { 0, 0, 0}}, // ( 45, 128) + { 0, { 0, 0, 0}}, // ( 46, 128) + { 0, { 0, 0, 0}}, // ( 47, 128) + { 0, { 0, 0, 0}}, // ( 48, 128) + { 0, { 0, 0, 0}}, // ( 49, 128) + { 0, { 0, 0, 0}}, // ( 50, 128) + { 0, { 0, 0, 0}}, // ( 51, 128) + { 0, { 0, 0, 0}}, // ( 52, 128) + { 0, { 0, 0, 0}}, // ( 53, 128) + { 0, { 0, 0, 0}}, // ( 54, 128) + { 0, { 0, 0, 0}}, // ( 55, 128) + { 0, { 0, 0, 0}}, // ( 56, 128) + { 0, { 0, 0, 0}}, // ( 57, 128) + { 0, { 0, 0, 0}}, // ( 58, 128) + { 0, { 0, 0, 0}}, // ( 59, 128) + { 0, { 0, 0, 0}}, // ( 60, 128) + { 0, { 0, 0, 0}}, // ( 61, 128) + { 0, { 0, 0, 0}}, // ( 62, 128) + { 0, { 0, 0, 0}}, // ( 63, 128) + { 0, { 0, 0, 0}}, // ( 64, 128) + { 0, { 0, 0, 0}}, // ( 65, 128) + { 0, { 0, 0, 0}}, // ( 66, 128) + { 0, { 0, 0, 0}}, // ( 67, 128) + { 0, { 0, 0, 0}}, // ( 68, 128) + { 0, { 0, 0, 0}}, // ( 69, 128) + { 0, { 0, 0, 0}}, // ( 70, 128) + { 0, { 0, 0, 0}}, // ( 71, 128) + { 0, { 0, 0, 0}}, // ( 72, 128) + { 0, { 0, 0, 0}}, // ( 73, 128) + { 0, { 0, 0, 0}}, // ( 74, 128) + { 0, { 0, 0, 0}}, // ( 75, 128) + { 0, { 0, 0, 0}}, // ( 76, 128) + { 0, { 0, 0, 0}}, // ( 77, 128) + { 0, { 0, 0, 0}}, // ( 78, 128) + { 0, { 0, 0, 0}}, // ( 79, 128) + { 0, { 0, 0, 0}}, // ( 80, 128) + { 0, { 0, 0, 0}}, // ( 81, 128) + { 0, { 0, 0, 0}}, // ( 82, 128) + { 0, { 0, 0, 0}}, // ( 83, 128) + { 0, { 0, 0, 0}}, // ( 84, 128) + { 0, { 0, 0, 0}}, // ( 85, 128) + { 0, { 0, 0, 0}}, // ( 86, 128) + { 0, { 0, 0, 0}}, // ( 87, 128) + { 0, { 0, 0, 0}}, // ( 88, 128) + { 0, { 0, 0, 0}}, // ( 89, 128) + { 0, { 0, 0, 0}}, // ( 90, 128) + { 0, { 0, 0, 0}}, // ( 91, 128) + { 0, { 0, 0, 0}}, // ( 92, 128) + { 0, { 0, 0, 0}}, // ( 93, 128) + { 0, { 0, 0, 0}}, // ( 94, 128) + { 0, { 0, 0, 0}}, // ( 95, 128) + { 0, { 0, 0, 0}}, // ( 96, 128) + { 0, { 0, 0, 0}}, // ( 97, 128) + { 0, { 0, 0, 0}}, // ( 98, 128) + { 0, { 0, 0, 0}}, // ( 99, 128) + { 0, { 0, 0, 0}}, // (100, 128) + { 0, { 0, 0, 0}}, // (101, 128) + { 0, { 0, 0, 0}}, // (102, 128) + { 0, { 0, 0, 0}}, // (103, 128) + { 0, { 0, 0, 0}}, // (104, 128) + { 0, { 0, 0, 0}}, // (105, 128) + { 0, { 0, 0, 0}}, // (106, 128) + { 0, { 0, 0, 0}}, // (107, 128) + { 0, { 0, 0, 0}}, // (108, 128) + { 0, { 0, 0, 0}}, // (109, 128) + { 0, { 0, 0, 0}}, // (110, 128) + { 0, { 0, 0, 0}}, // (111, 128) + { 0, { 0, 0, 0}}, // (112, 128) + { 0, { 0, 0, 0}}, // (113, 128) + { 0, { 0, 0, 0}}, // (114, 128) + { 0, { 0, 0, 0}}, // (115, 128) + { 0, { 0, 0, 0}}, // (116, 128) + { 0, { 0, 0, 0}}, // (117, 128) + { 0, { 0, 0, 0}}, // (118, 128) + { 0, { 0, 0, 0}}, // (119, 128) + { 0, { 0, 0, 0}}, // (120, 128) + { 0, { 0, 0, 0}}, // (121, 128) + { 0, { 0, 0, 0}}, // (122, 128) + { 0, { 0, 0, 0}}, // (123, 128) + { 0, { 0, 0, 0}}, // (124, 128) + { 0, { 0, 0, 0}}, // (125, 128) + { 0, { 0, 0, 0}}, // (126, 128) + { 0, { 0, 0, 0}}, // (127, 128) + { 0, { 0, 0, 0}}, // (128, 128) + { 0, { 0, 0, 0}}, // (129, 128) + { 0, { 0, 0, 0}}, // (130, 128) + { 0, { 0, 0, 0}}, // (131, 128) + { 0, { 0, 0, 0}}, // (132, 128) + { 0, { 0, 0, 0}}, // (133, 128) + { 0, { 0, 0, 0}}, // (134, 128) + { 0, { 0, 0, 0}}, // (135, 128) + { 0, { 0, 0, 0}}, // (136, 128) + { 0, { 0, 0, 0}}, // (137, 128) + { 0, { 0, 0, 0}}, // (138, 128) + { 0, { 0, 0, 0}}, // (139, 128) + { 0, { 0, 0, 0}}, // (140, 128) + { 0, { 0, 0, 0}}, // (141, 128) + { 0, { 0, 0, 0}}, // (142, 128) + { 0, { 0, 0, 0}}, // (143, 128) + { 0, { 0, 0, 0}}, // (144, 128) + { 0, { 0, 0, 0}}, // (145, 128) + { 0, { 0, 0, 0}}, // (146, 128) + { 0, { 0, 0, 0}}, // (147, 128) + { 0, { 0, 0, 0}}, // (148, 128) + { 0, { 0, 0, 0}}, // (149, 128) + { 0, { 0, 0, 0}}, // (150, 128) + { 0, { 0, 0, 0}}, // (151, 128) + { 0, { 0, 0, 0}}, // (152, 128) + { 0, { 0, 0, 0}}, // (153, 128) + { 0, { 0, 0, 0}}, // (154, 128) + { 0, { 0, 0, 0}}, // (155, 128) + { 0, { 0, 0, 0}}, // (156, 128) + { 0, { 0, 0, 0}}, // (157, 128) + { 0, { 0, 0, 0}}, // (158, 128) + { 0, { 0, 0, 0}}, // (159, 128) + { 0, { 0, 0, 0}}, // (160, 128) + { 0, { 0, 0, 0}}, // (161, 128) + { 0, { 0, 0, 0}}, // (162, 128) + { 0, { 0, 0, 0}}, // (163, 128) + { 0, { 0, 0, 0}}, // (164, 128) + { 0, { 0, 0, 0}}, // (165, 128) + { 0, { 0, 0, 0}}, // (166, 128) + { 0, { 0, 0, 0}}, // (167, 128) + { 2, { 0, 0, 0}}, // (168, 128) + {108, { 0, 0, 0}}, // (169, 128) + {128, { 0, 0, 0}}, // (170, 128) + {128, { 0, 0, 0}}, // (171, 128) + {128, { 0, 0, 0}}, // (172, 128) + {128, { 0, 0, 0}}, // (173, 128) + {128, { 0, 0, 0}}, // (174, 128) + {128, { 0, 0, 0}}, // (175, 128) + {128, { 0, 0, 0}}, // (176, 128) + {128, { 0, 0, 0}}, // (177, 128) + {128, { 0, 0, 0}}, // (178, 128) + {128, { 0, 0, 0}}, // (179, 128) + {128, { 0, 0, 0}}, // ( 0, 129) + {128, { 0, 0, 0}}, // ( 1, 129) + {128, { 0, 0, 0}}, // ( 2, 129) + {128, { 0, 0, 0}}, // ( 3, 129) + {128, { 0, 0, 0}}, // ( 4, 129) + {128, { 0, 0, 0}}, // ( 5, 129) + {128, { 0, 0, 0}}, // ( 6, 129) + {128, { 0, 0, 0}}, // ( 7, 129) + {128, { 0, 0, 0}}, // ( 8, 129) + {128, { 0, 0, 0}}, // ( 9, 129) + {128, { 0, 0, 0}}, // ( 10, 129) + { 47, { 0, 0, 0}}, // ( 11, 129) + { 0, { 0, 0, 0}}, // ( 12, 129) + { 0, { 0, 0, 0}}, // ( 13, 129) + { 0, { 0, 0, 0}}, // ( 14, 129) + { 0, { 0, 0, 0}}, // ( 15, 129) + { 0, { 0, 0, 0}}, // ( 16, 129) + { 0, { 0, 0, 0}}, // ( 17, 129) + { 0, { 0, 0, 0}}, // ( 18, 129) + { 0, { 0, 0, 0}}, // ( 19, 129) + { 0, { 0, 0, 0}}, // ( 20, 129) + { 0, { 0, 0, 0}}, // ( 21, 129) + { 0, { 0, 0, 0}}, // ( 22, 129) + { 0, { 0, 0, 0}}, // ( 23, 129) + { 0, { 0, 0, 0}}, // ( 24, 129) + { 0, { 0, 0, 0}}, // ( 25, 129) + { 0, { 0, 0, 0}}, // ( 26, 129) + { 0, { 0, 0, 0}}, // ( 27, 129) + { 0, { 0, 0, 0}}, // ( 28, 129) + { 0, { 0, 0, 0}}, // ( 29, 129) + { 0, { 0, 0, 0}}, // ( 30, 129) + { 0, { 0, 0, 0}}, // ( 31, 129) + { 0, { 0, 0, 0}}, // ( 32, 129) + { 0, { 0, 0, 0}}, // ( 33, 129) + { 0, { 0, 0, 0}}, // ( 34, 129) + { 0, { 0, 0, 0}}, // ( 35, 129) + { 0, { 0, 0, 0}}, // ( 36, 129) + { 0, { 0, 0, 0}}, // ( 37, 129) + { 0, { 0, 0, 0}}, // ( 38, 129) + { 0, { 0, 0, 0}}, // ( 39, 129) + { 0, { 0, 0, 0}}, // ( 40, 129) + { 0, { 0, 0, 0}}, // ( 41, 129) + { 0, { 0, 0, 0}}, // ( 42, 129) + { 0, { 0, 0, 0}}, // ( 43, 129) + { 0, { 0, 0, 0}}, // ( 44, 129) + { 0, { 0, 0, 0}}, // ( 45, 129) + { 0, { 0, 0, 0}}, // ( 46, 129) + { 0, { 0, 0, 0}}, // ( 47, 129) + { 0, { 0, 0, 0}}, // ( 48, 129) + { 0, { 0, 0, 0}}, // ( 49, 129) + { 0, { 0, 0, 0}}, // ( 50, 129) + { 0, { 0, 0, 0}}, // ( 51, 129) + { 0, { 0, 0, 0}}, // ( 52, 129) + { 0, { 0, 0, 0}}, // ( 53, 129) + { 0, { 0, 0, 0}}, // ( 54, 129) + { 0, { 0, 0, 0}}, // ( 55, 129) + { 0, { 0, 0, 0}}, // ( 56, 129) + { 0, { 0, 0, 0}}, // ( 57, 129) + { 0, { 0, 0, 0}}, // ( 58, 129) + { 0, { 0, 0, 0}}, // ( 59, 129) + { 0, { 0, 0, 0}}, // ( 60, 129) + { 0, { 0, 0, 0}}, // ( 61, 129) + { 0, { 0, 0, 0}}, // ( 62, 129) + { 0, { 0, 0, 0}}, // ( 63, 129) + { 0, { 0, 0, 0}}, // ( 64, 129) + { 0, { 0, 0, 0}}, // ( 65, 129) + { 0, { 0, 0, 0}}, // ( 66, 129) + { 0, { 0, 0, 0}}, // ( 67, 129) + { 0, { 0, 0, 0}}, // ( 68, 129) + { 0, { 0, 0, 0}}, // ( 69, 129) + { 0, { 0, 0, 0}}, // ( 70, 129) + { 0, { 0, 0, 0}}, // ( 71, 129) + { 0, { 0, 0, 0}}, // ( 72, 129) + { 0, { 0, 0, 0}}, // ( 73, 129) + { 0, { 0, 0, 0}}, // ( 74, 129) + { 0, { 0, 0, 0}}, // ( 75, 129) + { 0, { 0, 0, 0}}, // ( 76, 129) + { 0, { 0, 0, 0}}, // ( 77, 129) + { 0, { 0, 0, 0}}, // ( 78, 129) + { 0, { 0, 0, 0}}, // ( 79, 129) + { 0, { 0, 0, 0}}, // ( 80, 129) + { 0, { 0, 0, 0}}, // ( 81, 129) + { 0, { 0, 0, 0}}, // ( 82, 129) + { 0, { 0, 0, 0}}, // ( 83, 129) + { 0, { 0, 0, 0}}, // ( 84, 129) + { 0, { 0, 0, 0}}, // ( 85, 129) + { 0, { 0, 0, 0}}, // ( 86, 129) + { 0, { 0, 0, 0}}, // ( 87, 129) + { 0, { 0, 0, 0}}, // ( 88, 129) + { 0, { 0, 0, 0}}, // ( 89, 129) + { 0, { 0, 0, 0}}, // ( 90, 129) + { 0, { 0, 0, 0}}, // ( 91, 129) + { 0, { 0, 0, 0}}, // ( 92, 129) + { 0, { 0, 0, 0}}, // ( 93, 129) + { 0, { 0, 0, 0}}, // ( 94, 129) + { 0, { 0, 0, 0}}, // ( 95, 129) + { 0, { 0, 0, 0}}, // ( 96, 129) + { 0, { 0, 0, 0}}, // ( 97, 129) + { 0, { 0, 0, 0}}, // ( 98, 129) + { 0, { 0, 0, 0}}, // ( 99, 129) + { 0, { 0, 0, 0}}, // (100, 129) + { 0, { 0, 0, 0}}, // (101, 129) + { 0, { 0, 0, 0}}, // (102, 129) + { 0, { 0, 0, 0}}, // (103, 129) + { 0, { 0, 0, 0}}, // (104, 129) + { 0, { 0, 0, 0}}, // (105, 129) + { 0, { 0, 0, 0}}, // (106, 129) + { 0, { 0, 0, 0}}, // (107, 129) + { 0, { 0, 0, 0}}, // (108, 129) + { 0, { 0, 0, 0}}, // (109, 129) + { 0, { 0, 0, 0}}, // (110, 129) + { 0, { 0, 0, 0}}, // (111, 129) + { 0, { 0, 0, 0}}, // (112, 129) + { 0, { 0, 0, 0}}, // (113, 129) + { 0, { 0, 0, 0}}, // (114, 129) + { 0, { 0, 0, 0}}, // (115, 129) + { 0, { 0, 0, 0}}, // (116, 129) + { 0, { 0, 0, 0}}, // (117, 129) + { 0, { 0, 0, 0}}, // (118, 129) + { 0, { 0, 0, 0}}, // (119, 129) + { 0, { 0, 0, 0}}, // (120, 129) + { 0, { 0, 0, 0}}, // (121, 129) + { 0, { 0, 0, 0}}, // (122, 129) + { 0, { 0, 0, 0}}, // (123, 129) + { 0, { 0, 0, 0}}, // (124, 129) + { 0, { 0, 0, 0}}, // (125, 129) + { 0, { 0, 0, 0}}, // (126, 129) + { 0, { 0, 0, 0}}, // (127, 129) + { 0, { 0, 0, 0}}, // (128, 129) + { 0, { 0, 0, 0}}, // (129, 129) + { 0, { 0, 0, 0}}, // (130, 129) + { 0, { 0, 0, 0}}, // (131, 129) + { 0, { 0, 0, 0}}, // (132, 129) + { 0, { 0, 0, 0}}, // (133, 129) + { 0, { 0, 0, 0}}, // (134, 129) + { 0, { 0, 0, 0}}, // (135, 129) + { 0, { 0, 0, 0}}, // (136, 129) + { 0, { 0, 0, 0}}, // (137, 129) + { 0, { 0, 0, 0}}, // (138, 129) + { 0, { 0, 0, 0}}, // (139, 129) + { 0, { 0, 0, 0}}, // (140, 129) + { 0, { 0, 0, 0}}, // (141, 129) + { 0, { 0, 0, 0}}, // (142, 129) + { 0, { 0, 0, 0}}, // (143, 129) + { 0, { 0, 0, 0}}, // (144, 129) + { 0, { 0, 0, 0}}, // (145, 129) + { 0, { 0, 0, 0}}, // (146, 129) + { 0, { 0, 0, 0}}, // (147, 129) + { 0, { 0, 0, 0}}, // (148, 129) + { 0, { 0, 0, 0}}, // (149, 129) + { 0, { 0, 0, 0}}, // (150, 129) + { 0, { 0, 0, 0}}, // (151, 129) + { 0, { 0, 0, 0}}, // (152, 129) + { 0, { 0, 0, 0}}, // (153, 129) + { 0, { 0, 0, 0}}, // (154, 129) + { 0, { 0, 0, 0}}, // (155, 129) + { 0, { 0, 0, 0}}, // (156, 129) + { 0, { 0, 0, 0}}, // (157, 129) + { 0, { 0, 0, 0}}, // (158, 129) + { 0, { 0, 0, 0}}, // (159, 129) + { 0, { 0, 0, 0}}, // (160, 129) + { 0, { 0, 0, 0}}, // (161, 129) + { 0, { 0, 0, 0}}, // (162, 129) + { 0, { 0, 0, 0}}, // (163, 129) + { 0, { 0, 0, 0}}, // (164, 129) + { 0, { 0, 0, 0}}, // (165, 129) + { 0, { 0, 0, 0}}, // (166, 129) + { 0, { 0, 0, 0}}, // (167, 129) + { 47, { 0, 0, 0}}, // (168, 129) + {128, { 0, 0, 0}}, // (169, 129) + {128, { 0, 0, 0}}, // (170, 129) + {128, { 0, 0, 0}}, // (171, 129) + {128, { 0, 0, 0}}, // (172, 129) + {128, { 0, 0, 0}}, // (173, 129) + {128, { 0, 0, 0}}, // (174, 129) + {128, { 0, 0, 0}}, // (175, 129) + {128, { 0, 0, 0}}, // (176, 129) + {128, { 0, 0, 0}}, // (177, 129) + {128, { 0, 0, 0}}, // (178, 129) + {128, { 0, 0, 0}}, // (179, 129) + {128, { 0, 0, 0}}, // ( 0, 130) + {128, { 0, 0, 0}}, // ( 1, 130) + {128, { 0, 0, 0}}, // ( 2, 130) + {128, { 0, 0, 0}}, // ( 3, 130) + {128, { 0, 0, 0}}, // ( 4, 130) + {128, { 0, 0, 0}}, // ( 5, 130) + {128, { 0, 0, 0}}, // ( 6, 130) + {128, { 0, 0, 0}}, // ( 7, 130) + {128, { 0, 0, 0}}, // ( 8, 130) + {128, { 0, 0, 0}}, // ( 9, 130) + {128, { 0, 0, 0}}, // ( 10, 130) + {110, { 0, 0, 0}}, // ( 11, 130) + { 2, { 0, 0, 0}}, // ( 12, 130) + { 0, { 0, 0, 0}}, // ( 13, 130) + { 0, { 0, 0, 0}}, // ( 14, 130) + { 0, { 0, 0, 0}}, // ( 15, 130) + { 0, { 0, 0, 0}}, // ( 16, 130) + { 0, { 0, 0, 0}}, // ( 17, 130) + { 0, { 0, 0, 0}}, // ( 18, 130) + { 0, { 0, 0, 0}}, // ( 19, 130) + { 0, { 0, 0, 0}}, // ( 20, 130) + { 0, { 0, 0, 0}}, // ( 21, 130) + { 0, { 0, 0, 0}}, // ( 22, 130) + { 0, { 0, 0, 0}}, // ( 23, 130) + { 0, { 0, 0, 0}}, // ( 24, 130) + { 0, { 0, 0, 0}}, // ( 25, 130) + { 0, { 0, 0, 0}}, // ( 26, 130) + { 0, { 0, 0, 0}}, // ( 27, 130) + { 0, { 0, 0, 0}}, // ( 28, 130) + { 0, { 0, 0, 0}}, // ( 29, 130) + { 0, { 0, 0, 0}}, // ( 30, 130) + { 0, { 0, 0, 0}}, // ( 31, 130) + { 0, { 0, 0, 0}}, // ( 32, 130) + { 0, { 0, 0, 0}}, // ( 33, 130) + { 0, { 0, 0, 0}}, // ( 34, 130) + { 0, { 0, 0, 0}}, // ( 35, 130) + { 0, { 0, 0, 0}}, // ( 36, 130) + { 0, { 0, 0, 0}}, // ( 37, 130) + { 0, { 0, 0, 0}}, // ( 38, 130) + { 0, { 0, 0, 0}}, // ( 39, 130) + { 0, { 0, 0, 0}}, // ( 40, 130) + { 0, { 0, 0, 0}}, // ( 41, 130) + { 0, { 0, 0, 0}}, // ( 42, 130) + { 0, { 0, 0, 0}}, // ( 43, 130) + { 0, { 0, 0, 0}}, // ( 44, 130) + { 0, { 0, 0, 0}}, // ( 45, 130) + { 0, { 0, 0, 0}}, // ( 46, 130) + { 0, { 0, 0, 0}}, // ( 47, 130) + { 0, { 0, 0, 0}}, // ( 48, 130) + { 0, { 0, 0, 0}}, // ( 49, 130) + { 0, { 0, 0, 0}}, // ( 50, 130) + { 0, { 0, 0, 0}}, // ( 51, 130) + { 0, { 0, 0, 0}}, // ( 52, 130) + { 0, { 0, 0, 0}}, // ( 53, 130) + { 0, { 0, 0, 0}}, // ( 54, 130) + { 0, { 0, 0, 0}}, // ( 55, 130) + { 0, { 0, 0, 0}}, // ( 56, 130) + { 0, { 0, 0, 0}}, // ( 57, 130) + { 0, { 0, 0, 0}}, // ( 58, 130) + { 0, { 0, 0, 0}}, // ( 59, 130) + { 0, { 0, 0, 0}}, // ( 60, 130) + { 0, { 0, 0, 0}}, // ( 61, 130) + { 0, { 0, 0, 0}}, // ( 62, 130) + { 0, { 0, 0, 0}}, // ( 63, 130) + { 0, { 0, 0, 0}}, // ( 64, 130) + { 0, { 0, 0, 0}}, // ( 65, 130) + { 0, { 0, 0, 0}}, // ( 66, 130) + { 0, { 0, 0, 0}}, // ( 67, 130) + { 0, { 0, 0, 0}}, // ( 68, 130) + { 0, { 0, 0, 0}}, // ( 69, 130) + { 0, { 0, 0, 0}}, // ( 70, 130) + { 0, { 0, 0, 0}}, // ( 71, 130) + { 0, { 0, 0, 0}}, // ( 72, 130) + { 0, { 0, 0, 0}}, // ( 73, 130) + { 0, { 0, 0, 0}}, // ( 74, 130) + { 0, { 0, 0, 0}}, // ( 75, 130) + { 0, { 0, 0, 0}}, // ( 76, 130) + { 0, { 0, 0, 0}}, // ( 77, 130) + { 0, { 0, 0, 0}}, // ( 78, 130) + { 0, { 0, 0, 0}}, // ( 79, 130) + { 0, { 0, 0, 0}}, // ( 80, 130) + { 0, { 0, 0, 0}}, // ( 81, 130) + { 0, { 0, 0, 0}}, // ( 82, 130) + { 0, { 0, 0, 0}}, // ( 83, 130) + { 0, { 0, 0, 0}}, // ( 84, 130) + { 0, { 0, 0, 0}}, // ( 85, 130) + { 0, { 0, 0, 0}}, // ( 86, 130) + { 0, { 0, 0, 0}}, // ( 87, 130) + { 0, { 0, 0, 0}}, // ( 88, 130) + { 0, { 0, 0, 0}}, // ( 89, 130) + { 0, { 0, 0, 0}}, // ( 90, 130) + { 0, { 0, 0, 0}}, // ( 91, 130) + { 0, { 0, 0, 0}}, // ( 92, 130) + { 0, { 0, 0, 0}}, // ( 93, 130) + { 0, { 0, 0, 0}}, // ( 94, 130) + { 0, { 0, 0, 0}}, // ( 95, 130) + { 0, { 0, 0, 0}}, // ( 96, 130) + { 0, { 0, 0, 0}}, // ( 97, 130) + { 0, { 0, 0, 0}}, // ( 98, 130) + { 0, { 0, 0, 0}}, // ( 99, 130) + { 0, { 0, 0, 0}}, // (100, 130) + { 0, { 0, 0, 0}}, // (101, 130) + { 0, { 0, 0, 0}}, // (102, 130) + { 0, { 0, 0, 0}}, // (103, 130) + { 0, { 0, 0, 0}}, // (104, 130) + { 0, { 0, 0, 0}}, // (105, 130) + { 0, { 0, 0, 0}}, // (106, 130) + { 0, { 0, 0, 0}}, // (107, 130) + { 0, { 0, 0, 0}}, // (108, 130) + { 0, { 0, 0, 0}}, // (109, 130) + { 0, { 0, 0, 0}}, // (110, 130) + { 0, { 0, 0, 0}}, // (111, 130) + { 0, { 0, 0, 0}}, // (112, 130) + { 0, { 0, 0, 0}}, // (113, 130) + { 0, { 0, 0, 0}}, // (114, 130) + { 0, { 0, 0, 0}}, // (115, 130) + { 0, { 0, 0, 0}}, // (116, 130) + { 0, { 0, 0, 0}}, // (117, 130) + { 0, { 0, 0, 0}}, // (118, 130) + { 0, { 0, 0, 0}}, // (119, 130) + { 0, { 0, 0, 0}}, // (120, 130) + { 0, { 0, 0, 0}}, // (121, 130) + { 0, { 0, 0, 0}}, // (122, 130) + { 0, { 0, 0, 0}}, // (123, 130) + { 0, { 0, 0, 0}}, // (124, 130) + { 0, { 0, 0, 0}}, // (125, 130) + { 0, { 0, 0, 0}}, // (126, 130) + { 0, { 0, 0, 0}}, // (127, 130) + { 0, { 0, 0, 0}}, // (128, 130) + { 0, { 0, 0, 0}}, // (129, 130) + { 0, { 0, 0, 0}}, // (130, 130) + { 0, { 0, 0, 0}}, // (131, 130) + { 0, { 0, 0, 0}}, // (132, 130) + { 0, { 0, 0, 0}}, // (133, 130) + { 0, { 0, 0, 0}}, // (134, 130) + { 0, { 0, 0, 0}}, // (135, 130) + { 0, { 0, 0, 0}}, // (136, 130) + { 0, { 0, 0, 0}}, // (137, 130) + { 0, { 0, 0, 0}}, // (138, 130) + { 0, { 0, 0, 0}}, // (139, 130) + { 0, { 0, 0, 0}}, // (140, 130) + { 0, { 0, 0, 0}}, // (141, 130) + { 0, { 0, 0, 0}}, // (142, 130) + { 0, { 0, 0, 0}}, // (143, 130) + { 0, { 0, 0, 0}}, // (144, 130) + { 0, { 0, 0, 0}}, // (145, 130) + { 0, { 0, 0, 0}}, // (146, 130) + { 0, { 0, 0, 0}}, // (147, 130) + { 0, { 0, 0, 0}}, // (148, 130) + { 0, { 0, 0, 0}}, // (149, 130) + { 0, { 0, 0, 0}}, // (150, 130) + { 0, { 0, 0, 0}}, // (151, 130) + { 0, { 0, 0, 0}}, // (152, 130) + { 0, { 0, 0, 0}}, // (153, 130) + { 0, { 0, 0, 0}}, // (154, 130) + { 0, { 0, 0, 0}}, // (155, 130) + { 0, { 0, 0, 0}}, // (156, 130) + { 0, { 0, 0, 0}}, // (157, 130) + { 0, { 0, 0, 0}}, // (158, 130) + { 0, { 0, 0, 0}}, // (159, 130) + { 0, { 0, 0, 0}}, // (160, 130) + { 0, { 0, 0, 0}}, // (161, 130) + { 0, { 0, 0, 0}}, // (162, 130) + { 0, { 0, 0, 0}}, // (163, 130) + { 0, { 0, 0, 0}}, // (164, 130) + { 0, { 0, 0, 0}}, // (165, 130) + { 0, { 0, 0, 0}}, // (166, 130) + { 2, { 0, 0, 0}}, // (167, 130) + {110, { 0, 0, 0}}, // (168, 130) + {128, { 0, 0, 0}}, // (169, 130) + {128, { 0, 0, 0}}, // (170, 130) + {128, { 0, 0, 0}}, // (171, 130) + {128, { 0, 0, 0}}, // (172, 130) + {128, { 0, 0, 0}}, // (173, 130) + {128, { 0, 0, 0}}, // (174, 130) + {128, { 0, 0, 0}}, // (175, 130) + {128, { 0, 0, 0}}, // (176, 130) + {128, { 0, 0, 0}}, // (177, 130) + {128, { 0, 0, 0}}, // (178, 130) + {128, { 0, 0, 0}}, // (179, 130) + {128, { 0, 0, 0}}, // ( 0, 131) + {128, { 0, 0, 0}}, // ( 1, 131) + {128, { 0, 0, 0}}, // ( 2, 131) + {128, { 0, 0, 0}}, // ( 3, 131) + {128, { 0, 0, 0}}, // ( 4, 131) + {128, { 0, 0, 0}}, // ( 5, 131) + {128, { 0, 0, 0}}, // ( 6, 131) + {128, { 0, 0, 0}}, // ( 7, 131) + {128, { 0, 0, 0}}, // ( 8, 131) + {128, { 0, 0, 0}}, // ( 9, 131) + {128, { 0, 0, 0}}, // ( 10, 131) + {128, { 0, 0, 0}}, // ( 11, 131) + { 51, { 0, 0, 0}}, // ( 12, 131) + { 0, { 0, 0, 0}}, // ( 13, 131) + { 0, { 0, 0, 0}}, // ( 14, 131) + { 0, { 0, 0, 0}}, // ( 15, 131) + { 0, { 0, 0, 0}}, // ( 16, 131) + { 0, { 0, 0, 0}}, // ( 17, 131) + { 0, { 0, 0, 0}}, // ( 18, 131) + { 0, { 0, 0, 0}}, // ( 19, 131) + { 0, { 0, 0, 0}}, // ( 20, 131) + { 0, { 0, 0, 0}}, // ( 21, 131) + { 0, { 0, 0, 0}}, // ( 22, 131) + { 0, { 0, 0, 0}}, // ( 23, 131) + { 0, { 0, 0, 0}}, // ( 24, 131) + { 0, { 0, 0, 0}}, // ( 25, 131) + { 0, { 0, 0, 0}}, // ( 26, 131) + { 0, { 0, 0, 0}}, // ( 27, 131) + { 0, { 0, 0, 0}}, // ( 28, 131) + { 0, { 0, 0, 0}}, // ( 29, 131) + { 0, { 0, 0, 0}}, // ( 30, 131) + { 0, { 0, 0, 0}}, // ( 31, 131) + { 0, { 0, 0, 0}}, // ( 32, 131) + { 0, { 0, 0, 0}}, // ( 33, 131) + { 0, { 0, 0, 0}}, // ( 34, 131) + { 0, { 0, 0, 0}}, // ( 35, 131) + { 0, { 0, 0, 0}}, // ( 36, 131) + { 0, { 0, 0, 0}}, // ( 37, 131) + { 0, { 0, 0, 0}}, // ( 38, 131) + { 0, { 0, 0, 0}}, // ( 39, 131) + { 0, { 0, 0, 0}}, // ( 40, 131) + { 0, { 0, 0, 0}}, // ( 41, 131) + { 0, { 0, 0, 0}}, // ( 42, 131) + { 0, { 0, 0, 0}}, // ( 43, 131) + { 0, { 0, 0, 0}}, // ( 44, 131) + { 0, { 0, 0, 0}}, // ( 45, 131) + { 0, { 0, 0, 0}}, // ( 46, 131) + { 0, { 0, 0, 0}}, // ( 47, 131) + { 0, { 0, 0, 0}}, // ( 48, 131) + { 0, { 0, 0, 0}}, // ( 49, 131) + { 0, { 0, 0, 0}}, // ( 50, 131) + { 0, { 0, 0, 0}}, // ( 51, 131) + { 0, { 0, 0, 0}}, // ( 52, 131) + { 0, { 0, 0, 0}}, // ( 53, 131) + { 0, { 0, 0, 0}}, // ( 54, 131) + { 0, { 0, 0, 0}}, // ( 55, 131) + { 0, { 0, 0, 0}}, // ( 56, 131) + { 0, { 0, 0, 0}}, // ( 57, 131) + { 0, { 0, 0, 0}}, // ( 58, 131) + { 0, { 0, 0, 0}}, // ( 59, 131) + { 0, { 0, 0, 0}}, // ( 60, 131) + { 0, { 0, 0, 0}}, // ( 61, 131) + { 0, { 0, 0, 0}}, // ( 62, 131) + { 0, { 0, 0, 0}}, // ( 63, 131) + { 0, { 0, 0, 0}}, // ( 64, 131) + { 0, { 0, 0, 0}}, // ( 65, 131) + { 0, { 0, 0, 0}}, // ( 66, 131) + { 0, { 0, 0, 0}}, // ( 67, 131) + { 0, { 0, 0, 0}}, // ( 68, 131) + { 0, { 0, 0, 0}}, // ( 69, 131) + { 0, { 0, 0, 0}}, // ( 70, 131) + { 0, { 0, 0, 0}}, // ( 71, 131) + { 0, { 0, 0, 0}}, // ( 72, 131) + { 0, { 0, 0, 0}}, // ( 73, 131) + { 0, { 0, 0, 0}}, // ( 74, 131) + { 0, { 0, 0, 0}}, // ( 75, 131) + { 0, { 0, 0, 0}}, // ( 76, 131) + { 0, { 0, 0, 0}}, // ( 77, 131) + { 0, { 0, 0, 0}}, // ( 78, 131) + { 0, { 0, 0, 0}}, // ( 79, 131) + { 0, { 0, 0, 0}}, // ( 80, 131) + { 0, { 0, 0, 0}}, // ( 81, 131) + { 0, { 0, 0, 0}}, // ( 82, 131) + { 0, { 0, 0, 0}}, // ( 83, 131) + { 0, { 0, 0, 0}}, // ( 84, 131) + { 0, { 0, 0, 0}}, // ( 85, 131) + { 0, { 0, 0, 0}}, // ( 86, 131) + { 0, { 0, 0, 0}}, // ( 87, 131) + { 0, { 0, 0, 0}}, // ( 88, 131) + { 0, { 0, 0, 0}}, // ( 89, 131) + { 0, { 0, 0, 0}}, // ( 90, 131) + { 0, { 0, 0, 0}}, // ( 91, 131) + { 0, { 0, 0, 0}}, // ( 92, 131) + { 0, { 0, 0, 0}}, // ( 93, 131) + { 0, { 0, 0, 0}}, // ( 94, 131) + { 0, { 0, 0, 0}}, // ( 95, 131) + { 0, { 0, 0, 0}}, // ( 96, 131) + { 0, { 0, 0, 0}}, // ( 97, 131) + { 0, { 0, 0, 0}}, // ( 98, 131) + { 0, { 0, 0, 0}}, // ( 99, 131) + { 0, { 0, 0, 0}}, // (100, 131) + { 0, { 0, 0, 0}}, // (101, 131) + { 0, { 0, 0, 0}}, // (102, 131) + { 0, { 0, 0, 0}}, // (103, 131) + { 0, { 0, 0, 0}}, // (104, 131) + { 0, { 0, 0, 0}}, // (105, 131) + { 0, { 0, 0, 0}}, // (106, 131) + { 0, { 0, 0, 0}}, // (107, 131) + { 0, { 0, 0, 0}}, // (108, 131) + { 0, { 0, 0, 0}}, // (109, 131) + { 0, { 0, 0, 0}}, // (110, 131) + { 0, { 0, 0, 0}}, // (111, 131) + { 0, { 0, 0, 0}}, // (112, 131) + { 0, { 0, 0, 0}}, // (113, 131) + { 0, { 0, 0, 0}}, // (114, 131) + { 0, { 0, 0, 0}}, // (115, 131) + { 0, { 0, 0, 0}}, // (116, 131) + { 0, { 0, 0, 0}}, // (117, 131) + { 0, { 0, 0, 0}}, // (118, 131) + { 0, { 0, 0, 0}}, // (119, 131) + { 0, { 0, 0, 0}}, // (120, 131) + { 0, { 0, 0, 0}}, // (121, 131) + { 0, { 0, 0, 0}}, // (122, 131) + { 0, { 0, 0, 0}}, // (123, 131) + { 0, { 0, 0, 0}}, // (124, 131) + { 0, { 0, 0, 0}}, // (125, 131) + { 0, { 0, 0, 0}}, // (126, 131) + { 0, { 0, 0, 0}}, // (127, 131) + { 0, { 0, 0, 0}}, // (128, 131) + { 0, { 0, 0, 0}}, // (129, 131) + { 0, { 0, 0, 0}}, // (130, 131) + { 0, { 0, 0, 0}}, // (131, 131) + { 0, { 0, 0, 0}}, // (132, 131) + { 0, { 0, 0, 0}}, // (133, 131) + { 0, { 0, 0, 0}}, // (134, 131) + { 0, { 0, 0, 0}}, // (135, 131) + { 0, { 0, 0, 0}}, // (136, 131) + { 0, { 0, 0, 0}}, // (137, 131) + { 0, { 0, 0, 0}}, // (138, 131) + { 0, { 0, 0, 0}}, // (139, 131) + { 0, { 0, 0, 0}}, // (140, 131) + { 0, { 0, 0, 0}}, // (141, 131) + { 0, { 0, 0, 0}}, // (142, 131) + { 0, { 0, 0, 0}}, // (143, 131) + { 0, { 0, 0, 0}}, // (144, 131) + { 0, { 0, 0, 0}}, // (145, 131) + { 0, { 0, 0, 0}}, // (146, 131) + { 0, { 0, 0, 0}}, // (147, 131) + { 0, { 0, 0, 0}}, // (148, 131) + { 0, { 0, 0, 0}}, // (149, 131) + { 0, { 0, 0, 0}}, // (150, 131) + { 0, { 0, 0, 0}}, // (151, 131) + { 0, { 0, 0, 0}}, // (152, 131) + { 0, { 0, 0, 0}}, // (153, 131) + { 0, { 0, 0, 0}}, // (154, 131) + { 0, { 0, 0, 0}}, // (155, 131) + { 0, { 0, 0, 0}}, // (156, 131) + { 0, { 0, 0, 0}}, // (157, 131) + { 0, { 0, 0, 0}}, // (158, 131) + { 0, { 0, 0, 0}}, // (159, 131) + { 0, { 0, 0, 0}}, // (160, 131) + { 0, { 0, 0, 0}}, // (161, 131) + { 0, { 0, 0, 0}}, // (162, 131) + { 0, { 0, 0, 0}}, // (163, 131) + { 0, { 0, 0, 0}}, // (164, 131) + { 0, { 0, 0, 0}}, // (165, 131) + { 0, { 0, 0, 0}}, // (166, 131) + { 50, { 0, 0, 0}}, // (167, 131) + {128, { 0, 0, 0}}, // (168, 131) + {128, { 0, 0, 0}}, // (169, 131) + {128, { 0, 0, 0}}, // (170, 131) + {128, { 0, 0, 0}}, // (171, 131) + {128, { 0, 0, 0}}, // (172, 131) + {128, { 0, 0, 0}}, // (173, 131) + {128, { 0, 0, 0}}, // (174, 131) + {128, { 0, 0, 0}}, // (175, 131) + {128, { 0, 0, 0}}, // (176, 131) + {128, { 0, 0, 0}}, // (177, 131) + {128, { 0, 0, 0}}, // (178, 131) + {128, { 0, 0, 0}}, // (179, 131) + {128, { 0, 0, 0}}, // ( 0, 132) + {128, { 0, 0, 0}}, // ( 1, 132) + {128, { 0, 0, 0}}, // ( 2, 132) + {128, { 0, 0, 0}}, // ( 3, 132) + {128, { 0, 0, 0}}, // ( 4, 132) + {128, { 0, 0, 0}}, // ( 5, 132) + {128, { 0, 0, 0}}, // ( 6, 132) + {128, { 0, 0, 0}}, // ( 7, 132) + {128, { 0, 0, 0}}, // ( 8, 132) + {128, { 0, 0, 0}}, // ( 9, 132) + {128, { 0, 0, 0}}, // ( 10, 132) + {128, { 0, 0, 0}}, // ( 11, 132) + {114, { 0, 0, 0}}, // ( 12, 132) + { 6, { 0, 0, 0}}, // ( 13, 132) + { 0, { 0, 0, 0}}, // ( 14, 132) + { 0, { 0, 0, 0}}, // ( 15, 132) + { 0, { 0, 0, 0}}, // ( 16, 132) + { 0, { 0, 0, 0}}, // ( 17, 132) + { 0, { 0, 0, 0}}, // ( 18, 132) + { 0, { 0, 0, 0}}, // ( 19, 132) + { 0, { 0, 0, 0}}, // ( 20, 132) + { 0, { 0, 0, 0}}, // ( 21, 132) + { 0, { 0, 0, 0}}, // ( 22, 132) + { 0, { 0, 0, 0}}, // ( 23, 132) + { 0, { 0, 0, 0}}, // ( 24, 132) + { 0, { 0, 0, 0}}, // ( 25, 132) + { 0, { 0, 0, 0}}, // ( 26, 132) + { 0, { 0, 0, 0}}, // ( 27, 132) + { 0, { 0, 0, 0}}, // ( 28, 132) + { 0, { 0, 0, 0}}, // ( 29, 132) + { 0, { 0, 0, 0}}, // ( 30, 132) + { 0, { 0, 0, 0}}, // ( 31, 132) + { 0, { 0, 0, 0}}, // ( 32, 132) + { 0, { 0, 0, 0}}, // ( 33, 132) + { 0, { 0, 0, 0}}, // ( 34, 132) + { 0, { 0, 0, 0}}, // ( 35, 132) + { 0, { 0, 0, 0}}, // ( 36, 132) + { 0, { 0, 0, 0}}, // ( 37, 132) + { 0, { 0, 0, 0}}, // ( 38, 132) + { 0, { 0, 0, 0}}, // ( 39, 132) + { 0, { 0, 0, 0}}, // ( 40, 132) + { 0, { 0, 0, 0}}, // ( 41, 132) + { 0, { 0, 0, 0}}, // ( 42, 132) + { 0, { 0, 0, 0}}, // ( 43, 132) + { 0, { 0, 0, 0}}, // ( 44, 132) + { 0, { 0, 0, 0}}, // ( 45, 132) + { 0, { 0, 0, 0}}, // ( 46, 132) + { 0, { 0, 0, 0}}, // ( 47, 132) + { 0, { 0, 0, 0}}, // ( 48, 132) + { 0, { 0, 0, 0}}, // ( 49, 132) + { 0, { 0, 0, 0}}, // ( 50, 132) + { 0, { 0, 0, 0}}, // ( 51, 132) + { 0, { 0, 0, 0}}, // ( 52, 132) + { 0, { 0, 0, 0}}, // ( 53, 132) + { 0, { 0, 0, 0}}, // ( 54, 132) + { 0, { 0, 0, 0}}, // ( 55, 132) + { 0, { 0, 0, 0}}, // ( 56, 132) + { 0, { 0, 0, 0}}, // ( 57, 132) + { 0, { 0, 0, 0}}, // ( 58, 132) + { 0, { 0, 0, 0}}, // ( 59, 132) + { 0, { 0, 0, 0}}, // ( 60, 132) + { 0, { 0, 0, 0}}, // ( 61, 132) + { 0, { 0, 0, 0}}, // ( 62, 132) + { 0, { 0, 0, 0}}, // ( 63, 132) + { 0, { 0, 0, 0}}, // ( 64, 132) + { 0, { 0, 0, 0}}, // ( 65, 132) + { 0, { 0, 0, 0}}, // ( 66, 132) + { 0, { 0, 0, 0}}, // ( 67, 132) + { 0, { 0, 0, 0}}, // ( 68, 132) + { 0, { 0, 0, 0}}, // ( 69, 132) + { 0, { 0, 0, 0}}, // ( 70, 132) + { 0, { 0, 0, 0}}, // ( 71, 132) + { 0, { 0, 0, 0}}, // ( 72, 132) + { 0, { 0, 0, 0}}, // ( 73, 132) + { 0, { 0, 0, 0}}, // ( 74, 132) + { 0, { 0, 0, 0}}, // ( 75, 132) + { 0, { 0, 0, 0}}, // ( 76, 132) + { 0, { 0, 0, 0}}, // ( 77, 132) + { 0, { 0, 0, 0}}, // ( 78, 132) + { 0, { 0, 0, 0}}, // ( 79, 132) + { 0, { 0, 0, 0}}, // ( 80, 132) + { 0, { 0, 0, 0}}, // ( 81, 132) + { 0, { 0, 0, 0}}, // ( 82, 132) + { 0, { 0, 0, 0}}, // ( 83, 132) + { 0, { 0, 0, 0}}, // ( 84, 132) + { 0, { 0, 0, 0}}, // ( 85, 132) + { 0, { 0, 0, 0}}, // ( 86, 132) + { 0, { 0, 0, 0}}, // ( 87, 132) + { 0, { 0, 0, 0}}, // ( 88, 132) + { 0, { 0, 0, 0}}, // ( 89, 132) + { 0, { 0, 0, 0}}, // ( 90, 132) + { 0, { 0, 0, 0}}, // ( 91, 132) + { 0, { 0, 0, 0}}, // ( 92, 132) + { 0, { 0, 0, 0}}, // ( 93, 132) + { 0, { 0, 0, 0}}, // ( 94, 132) + { 0, { 0, 0, 0}}, // ( 95, 132) + { 0, { 0, 0, 0}}, // ( 96, 132) + { 0, { 0, 0, 0}}, // ( 97, 132) + { 0, { 0, 0, 0}}, // ( 98, 132) + { 0, { 0, 0, 0}}, // ( 99, 132) + { 0, { 0, 0, 0}}, // (100, 132) + { 0, { 0, 0, 0}}, // (101, 132) + { 0, { 0, 0, 0}}, // (102, 132) + { 0, { 0, 0, 0}}, // (103, 132) + { 0, { 0, 0, 0}}, // (104, 132) + { 0, { 0, 0, 0}}, // (105, 132) + { 0, { 0, 0, 0}}, // (106, 132) + { 0, { 0, 0, 0}}, // (107, 132) + { 0, { 0, 0, 0}}, // (108, 132) + { 0, { 0, 0, 0}}, // (109, 132) + { 0, { 0, 0, 0}}, // (110, 132) + { 0, { 0, 0, 0}}, // (111, 132) + { 0, { 0, 0, 0}}, // (112, 132) + { 0, { 0, 0, 0}}, // (113, 132) + { 0, { 0, 0, 0}}, // (114, 132) + { 0, { 0, 0, 0}}, // (115, 132) + { 0, { 0, 0, 0}}, // (116, 132) + { 0, { 0, 0, 0}}, // (117, 132) + { 0, { 0, 0, 0}}, // (118, 132) + { 0, { 0, 0, 0}}, // (119, 132) + { 0, { 0, 0, 0}}, // (120, 132) + { 0, { 0, 0, 0}}, // (121, 132) + { 0, { 0, 0, 0}}, // (122, 132) + { 0, { 0, 0, 0}}, // (123, 132) + { 0, { 0, 0, 0}}, // (124, 132) + { 0, { 0, 0, 0}}, // (125, 132) + { 0, { 0, 0, 0}}, // (126, 132) + { 0, { 0, 0, 0}}, // (127, 132) + { 0, { 0, 0, 0}}, // (128, 132) + { 0, { 0, 0, 0}}, // (129, 132) + { 0, { 0, 0, 0}}, // (130, 132) + { 0, { 0, 0, 0}}, // (131, 132) + { 0, { 0, 0, 0}}, // (132, 132) + { 0, { 0, 0, 0}}, // (133, 132) + { 0, { 0, 0, 0}}, // (134, 132) + { 0, { 0, 0, 0}}, // (135, 132) + { 0, { 0, 0, 0}}, // (136, 132) + { 0, { 0, 0, 0}}, // (137, 132) + { 0, { 0, 0, 0}}, // (138, 132) + { 0, { 0, 0, 0}}, // (139, 132) + { 0, { 0, 0, 0}}, // (140, 132) + { 0, { 0, 0, 0}}, // (141, 132) + { 0, { 0, 0, 0}}, // (142, 132) + { 0, { 0, 0, 0}}, // (143, 132) + { 0, { 0, 0, 0}}, // (144, 132) + { 0, { 0, 0, 0}}, // (145, 132) + { 0, { 0, 0, 0}}, // (146, 132) + { 0, { 0, 0, 0}}, // (147, 132) + { 0, { 0, 0, 0}}, // (148, 132) + { 0, { 0, 0, 0}}, // (149, 132) + { 0, { 0, 0, 0}}, // (150, 132) + { 0, { 0, 0, 0}}, // (151, 132) + { 0, { 0, 0, 0}}, // (152, 132) + { 0, { 0, 0, 0}}, // (153, 132) + { 0, { 0, 0, 0}}, // (154, 132) + { 0, { 0, 0, 0}}, // (155, 132) + { 0, { 0, 0, 0}}, // (156, 132) + { 0, { 0, 0, 0}}, // (157, 132) + { 0, { 0, 0, 0}}, // (158, 132) + { 0, { 0, 0, 0}}, // (159, 132) + { 0, { 0, 0, 0}}, // (160, 132) + { 0, { 0, 0, 0}}, // (161, 132) + { 0, { 0, 0, 0}}, // (162, 132) + { 0, { 0, 0, 0}}, // (163, 132) + { 0, { 0, 0, 0}}, // (164, 132) + { 0, { 0, 0, 0}}, // (165, 132) + { 6, { 0, 0, 0}}, // (166, 132) + {114, { 0, 0, 0}}, // (167, 132) + {128, { 0, 0, 0}}, // (168, 132) + {128, { 0, 0, 0}}, // (169, 132) + {128, { 0, 0, 0}}, // (170, 132) + {128, { 0, 0, 0}}, // (171, 132) + {128, { 0, 0, 0}}, // (172, 132) + {128, { 0, 0, 0}}, // (173, 132) + {128, { 0, 0, 0}}, // (174, 132) + {128, { 0, 0, 0}}, // (175, 132) + {128, { 0, 0, 0}}, // (176, 132) + {128, { 0, 0, 0}}, // (177, 132) + {128, { 0, 0, 0}}, // (178, 132) + {128, { 0, 0, 0}}, // (179, 132) + {128, { 0, 0, 0}}, // ( 0, 133) + {128, { 0, 0, 0}}, // ( 1, 133) + {128, { 0, 0, 0}}, // ( 2, 133) + {128, { 0, 0, 0}}, // ( 3, 133) + {128, { 0, 0, 0}}, // ( 4, 133) + {128, { 0, 0, 0}}, // ( 5, 133) + {128, { 0, 0, 0}}, // ( 6, 133) + {128, { 0, 0, 0}}, // ( 7, 133) + {128, { 0, 0, 0}}, // ( 8, 133) + {128, { 0, 0, 0}}, // ( 9, 133) + {128, { 0, 0, 0}}, // ( 10, 133) + {128, { 0, 0, 0}}, // ( 11, 133) + {128, { 0, 0, 0}}, // ( 12, 133) + { 65, { 0, 0, 0}}, // ( 13, 133) + { 0, { 0, 0, 0}}, // ( 14, 133) + { 0, { 0, 0, 0}}, // ( 15, 133) + { 0, { 0, 0, 0}}, // ( 16, 133) + { 0, { 0, 0, 0}}, // ( 17, 133) + { 0, { 0, 0, 0}}, // ( 18, 133) + { 0, { 0, 0, 0}}, // ( 19, 133) + { 0, { 0, 0, 0}}, // ( 20, 133) + { 0, { 0, 0, 0}}, // ( 21, 133) + { 0, { 0, 0, 0}}, // ( 22, 133) + { 0, { 0, 0, 0}}, // ( 23, 133) + { 0, { 0, 0, 0}}, // ( 24, 133) + { 0, { 0, 0, 0}}, // ( 25, 133) + { 0, { 0, 0, 0}}, // ( 26, 133) + { 0, { 0, 0, 0}}, // ( 27, 133) + { 0, { 0, 0, 0}}, // ( 28, 133) + { 0, { 0, 0, 0}}, // ( 29, 133) + { 0, { 0, 0, 0}}, // ( 30, 133) + { 0, { 0, 0, 0}}, // ( 31, 133) + { 0, { 0, 0, 0}}, // ( 32, 133) + { 0, { 0, 0, 0}}, // ( 33, 133) + { 0, { 0, 0, 0}}, // ( 34, 133) + { 0, { 0, 0, 0}}, // ( 35, 133) + { 0, { 0, 0, 0}}, // ( 36, 133) + { 0, { 0, 0, 0}}, // ( 37, 133) + { 0, { 0, 0, 0}}, // ( 38, 133) + { 0, { 0, 0, 0}}, // ( 39, 133) + { 0, { 0, 0, 0}}, // ( 40, 133) + { 0, { 0, 0, 0}}, // ( 41, 133) + { 0, { 0, 0, 0}}, // ( 42, 133) + { 0, { 0, 0, 0}}, // ( 43, 133) + { 0, { 0, 0, 0}}, // ( 44, 133) + { 0, { 0, 0, 0}}, // ( 45, 133) + { 0, { 0, 0, 0}}, // ( 46, 133) + { 0, { 0, 0, 0}}, // ( 47, 133) + { 0, { 0, 0, 0}}, // ( 48, 133) + { 0, { 0, 0, 0}}, // ( 49, 133) + { 0, { 0, 0, 0}}, // ( 50, 133) + { 0, { 0, 0, 0}}, // ( 51, 133) + { 0, { 0, 0, 0}}, // ( 52, 133) + { 0, { 0, 0, 0}}, // ( 53, 133) + { 0, { 0, 0, 0}}, // ( 54, 133) + { 0, { 0, 0, 0}}, // ( 55, 133) + { 0, { 0, 0, 0}}, // ( 56, 133) + { 0, { 0, 0, 0}}, // ( 57, 133) + { 0, { 0, 0, 0}}, // ( 58, 133) + { 0, { 0, 0, 0}}, // ( 59, 133) + { 0, { 0, 0, 0}}, // ( 60, 133) + { 0, { 0, 0, 0}}, // ( 61, 133) + { 0, { 0, 0, 0}}, // ( 62, 133) + { 0, { 0, 0, 0}}, // ( 63, 133) + { 0, { 0, 0, 0}}, // ( 64, 133) + { 0, { 0, 0, 0}}, // ( 65, 133) + { 0, { 0, 0, 0}}, // ( 66, 133) + { 0, { 0, 0, 0}}, // ( 67, 133) + { 0, { 0, 0, 0}}, // ( 68, 133) + { 0, { 0, 0, 0}}, // ( 69, 133) + { 0, { 0, 0, 0}}, // ( 70, 133) + { 0, { 0, 0, 0}}, // ( 71, 133) + { 0, { 0, 0, 0}}, // ( 72, 133) + { 0, { 0, 0, 0}}, // ( 73, 133) + { 0, { 0, 0, 0}}, // ( 74, 133) + { 0, { 0, 0, 0}}, // ( 75, 133) + { 0, { 0, 0, 0}}, // ( 76, 133) + { 0, { 0, 0, 0}}, // ( 77, 133) + { 0, { 0, 0, 0}}, // ( 78, 133) + { 0, { 0, 0, 0}}, // ( 79, 133) + { 0, { 0, 0, 0}}, // ( 80, 133) + { 0, { 0, 0, 0}}, // ( 81, 133) + { 0, { 0, 0, 0}}, // ( 82, 133) + { 0, { 0, 0, 0}}, // ( 83, 133) + { 0, { 0, 0, 0}}, // ( 84, 133) + { 0, { 0, 0, 0}}, // ( 85, 133) + { 0, { 0, 0, 0}}, // ( 86, 133) + { 0, { 0, 0, 0}}, // ( 87, 133) + { 0, { 0, 0, 0}}, // ( 88, 133) + { 0, { 0, 0, 0}}, // ( 89, 133) + { 0, { 0, 0, 0}}, // ( 90, 133) + { 0, { 0, 0, 0}}, // ( 91, 133) + { 0, { 0, 0, 0}}, // ( 92, 133) + { 0, { 0, 0, 0}}, // ( 93, 133) + { 0, { 0, 0, 0}}, // ( 94, 133) + { 0, { 0, 0, 0}}, // ( 95, 133) + { 0, { 0, 0, 0}}, // ( 96, 133) + { 0, { 0, 0, 0}}, // ( 97, 133) + { 0, { 0, 0, 0}}, // ( 98, 133) + { 0, { 0, 0, 0}}, // ( 99, 133) + { 0, { 0, 0, 0}}, // (100, 133) + { 0, { 0, 0, 0}}, // (101, 133) + { 0, { 0, 0, 0}}, // (102, 133) + { 0, { 0, 0, 0}}, // (103, 133) + { 0, { 0, 0, 0}}, // (104, 133) + { 0, { 0, 0, 0}}, // (105, 133) + { 0, { 0, 0, 0}}, // (106, 133) + { 0, { 0, 0, 0}}, // (107, 133) + { 0, { 0, 0, 0}}, // (108, 133) + { 0, { 0, 0, 0}}, // (109, 133) + { 0, { 0, 0, 0}}, // (110, 133) + { 0, { 0, 0, 0}}, // (111, 133) + { 0, { 0, 0, 0}}, // (112, 133) + { 0, { 0, 0, 0}}, // (113, 133) + { 0, { 0, 0, 0}}, // (114, 133) + { 0, { 0, 0, 0}}, // (115, 133) + { 0, { 0, 0, 0}}, // (116, 133) + { 0, { 0, 0, 0}}, // (117, 133) + { 0, { 0, 0, 0}}, // (118, 133) + { 0, { 0, 0, 0}}, // (119, 133) + { 0, { 0, 0, 0}}, // (120, 133) + { 0, { 0, 0, 0}}, // (121, 133) + { 0, { 0, 0, 0}}, // (122, 133) + { 0, { 0, 0, 0}}, // (123, 133) + { 0, { 0, 0, 0}}, // (124, 133) + { 0, { 0, 0, 0}}, // (125, 133) + { 0, { 0, 0, 0}}, // (126, 133) + { 0, { 0, 0, 0}}, // (127, 133) + { 0, { 0, 0, 0}}, // (128, 133) + { 0, { 0, 0, 0}}, // (129, 133) + { 0, { 0, 0, 0}}, // (130, 133) + { 0, { 0, 0, 0}}, // (131, 133) + { 0, { 0, 0, 0}}, // (132, 133) + { 0, { 0, 0, 0}}, // (133, 133) + { 0, { 0, 0, 0}}, // (134, 133) + { 0, { 0, 0, 0}}, // (135, 133) + { 0, { 0, 0, 0}}, // (136, 133) + { 0, { 0, 0, 0}}, // (137, 133) + { 0, { 0, 0, 0}}, // (138, 133) + { 0, { 0, 0, 0}}, // (139, 133) + { 0, { 0, 0, 0}}, // (140, 133) + { 0, { 0, 0, 0}}, // (141, 133) + { 0, { 0, 0, 0}}, // (142, 133) + { 0, { 0, 0, 0}}, // (143, 133) + { 0, { 0, 0, 0}}, // (144, 133) + { 0, { 0, 0, 0}}, // (145, 133) + { 0, { 0, 0, 0}}, // (146, 133) + { 0, { 0, 0, 0}}, // (147, 133) + { 0, { 0, 0, 0}}, // (148, 133) + { 0, { 0, 0, 0}}, // (149, 133) + { 0, { 0, 0, 0}}, // (150, 133) + { 0, { 0, 0, 0}}, // (151, 133) + { 0, { 0, 0, 0}}, // (152, 133) + { 0, { 0, 0, 0}}, // (153, 133) + { 0, { 0, 0, 0}}, // (154, 133) + { 0, { 0, 0, 0}}, // (155, 133) + { 0, { 0, 0, 0}}, // (156, 133) + { 0, { 0, 0, 0}}, // (157, 133) + { 0, { 0, 0, 0}}, // (158, 133) + { 0, { 0, 0, 0}}, // (159, 133) + { 0, { 0, 0, 0}}, // (160, 133) + { 0, { 0, 0, 0}}, // (161, 133) + { 0, { 0, 0, 0}}, // (162, 133) + { 0, { 0, 0, 0}}, // (163, 133) + { 0, { 0, 0, 0}}, // (164, 133) + { 0, { 0, 0, 0}}, // (165, 133) + { 65, { 0, 0, 0}}, // (166, 133) + {128, { 0, 0, 0}}, // (167, 133) + {128, { 0, 0, 0}}, // (168, 133) + {128, { 0, 0, 0}}, // (169, 133) + {128, { 0, 0, 0}}, // (170, 133) + {128, { 0, 0, 0}}, // (171, 133) + {128, { 0, 0, 0}}, // (172, 133) + {128, { 0, 0, 0}}, // (173, 133) + {128, { 0, 0, 0}}, // (174, 133) + {128, { 0, 0, 0}}, // (175, 133) + {128, { 0, 0, 0}}, // (176, 133) + {128, { 0, 0, 0}}, // (177, 133) + {128, { 0, 0, 0}}, // (178, 133) + {128, { 0, 0, 0}}, // (179, 133) + {128, { 0, 0, 0}}, // ( 0, 134) + {128, { 0, 0, 0}}, // ( 1, 134) + {128, { 0, 0, 0}}, // ( 2, 134) + {128, { 0, 0, 0}}, // ( 3, 134) + {128, { 0, 0, 0}}, // ( 4, 134) + {128, { 0, 0, 0}}, // ( 5, 134) + {128, { 0, 0, 0}}, // ( 6, 134) + {128, { 0, 0, 0}}, // ( 7, 134) + {128, { 0, 0, 0}}, // ( 8, 134) + {128, { 0, 0, 0}}, // ( 9, 134) + {128, { 0, 0, 0}}, // ( 10, 134) + {128, { 0, 0, 0}}, // ( 11, 134) + {128, { 0, 0, 0}}, // ( 12, 134) + {124, { 0, 0, 0}}, // ( 13, 134) + { 15, { 0, 0, 0}}, // ( 14, 134) + { 0, { 0, 0, 0}}, // ( 15, 134) + { 0, { 0, 0, 0}}, // ( 16, 134) + { 0, { 0, 0, 0}}, // ( 17, 134) + { 0, { 0, 0, 0}}, // ( 18, 134) + { 0, { 0, 0, 0}}, // ( 19, 134) + { 0, { 0, 0, 0}}, // ( 20, 134) + { 0, { 0, 0, 0}}, // ( 21, 134) + { 0, { 0, 0, 0}}, // ( 22, 134) + { 0, { 0, 0, 0}}, // ( 23, 134) + { 0, { 0, 0, 0}}, // ( 24, 134) + { 0, { 0, 0, 0}}, // ( 25, 134) + { 0, { 0, 0, 0}}, // ( 26, 134) + { 0, { 0, 0, 0}}, // ( 27, 134) + { 0, { 0, 0, 0}}, // ( 28, 134) + { 0, { 0, 0, 0}}, // ( 29, 134) + { 0, { 0, 0, 0}}, // ( 30, 134) + { 0, { 0, 0, 0}}, // ( 31, 134) + { 0, { 0, 0, 0}}, // ( 32, 134) + { 0, { 0, 0, 0}}, // ( 33, 134) + { 0, { 0, 0, 0}}, // ( 34, 134) + { 0, { 0, 0, 0}}, // ( 35, 134) + { 0, { 0, 0, 0}}, // ( 36, 134) + { 0, { 0, 0, 0}}, // ( 37, 134) + { 0, { 0, 0, 0}}, // ( 38, 134) + { 0, { 0, 0, 0}}, // ( 39, 134) + { 0, { 0, 0, 0}}, // ( 40, 134) + { 0, { 0, 0, 0}}, // ( 41, 134) + { 0, { 0, 0, 0}}, // ( 42, 134) + { 0, { 0, 0, 0}}, // ( 43, 134) + { 0, { 0, 0, 0}}, // ( 44, 134) + { 0, { 0, 0, 0}}, // ( 45, 134) + { 0, { 0, 0, 0}}, // ( 46, 134) + { 0, { 0, 0, 0}}, // ( 47, 134) + { 0, { 0, 0, 0}}, // ( 48, 134) + { 0, { 0, 0, 0}}, // ( 49, 134) + { 0, { 0, 0, 0}}, // ( 50, 134) + { 0, { 0, 0, 0}}, // ( 51, 134) + { 0, { 0, 0, 0}}, // ( 52, 134) + { 0, { 0, 0, 0}}, // ( 53, 134) + { 0, { 0, 0, 0}}, // ( 54, 134) + { 0, { 0, 0, 0}}, // ( 55, 134) + { 0, { 0, 0, 0}}, // ( 56, 134) + { 0, { 0, 0, 0}}, // ( 57, 134) + { 0, { 0, 0, 0}}, // ( 58, 134) + { 0, { 0, 0, 0}}, // ( 59, 134) + { 0, { 0, 0, 0}}, // ( 60, 134) + { 0, { 0, 0, 0}}, // ( 61, 134) + { 0, { 0, 0, 0}}, // ( 62, 134) + { 0, { 0, 0, 0}}, // ( 63, 134) + { 0, { 0, 0, 0}}, // ( 64, 134) + { 0, { 0, 0, 0}}, // ( 65, 134) + { 0, { 0, 0, 0}}, // ( 66, 134) + { 0, { 0, 0, 0}}, // ( 67, 134) + { 0, { 0, 0, 0}}, // ( 68, 134) + { 0, { 0, 0, 0}}, // ( 69, 134) + { 0, { 0, 0, 0}}, // ( 70, 134) + { 0, { 0, 0, 0}}, // ( 71, 134) + { 0, { 0, 0, 0}}, // ( 72, 134) + { 0, { 0, 0, 0}}, // ( 73, 134) + { 0, { 0, 0, 0}}, // ( 74, 134) + { 0, { 0, 0, 0}}, // ( 75, 134) + { 0, { 0, 0, 0}}, // ( 76, 134) + { 0, { 0, 0, 0}}, // ( 77, 134) + { 0, { 0, 0, 0}}, // ( 78, 134) + { 0, { 0, 0, 0}}, // ( 79, 134) + { 0, { 0, 0, 0}}, // ( 80, 134) + { 0, { 0, 0, 0}}, // ( 81, 134) + { 0, { 0, 0, 0}}, // ( 82, 134) + { 0, { 0, 0, 0}}, // ( 83, 134) + { 0, { 0, 0, 0}}, // ( 84, 134) + { 0, { 0, 0, 0}}, // ( 85, 134) + { 0, { 0, 0, 0}}, // ( 86, 134) + { 0, { 0, 0, 0}}, // ( 87, 134) + { 0, { 0, 0, 0}}, // ( 88, 134) + { 0, { 0, 0, 0}}, // ( 89, 134) + { 0, { 0, 0, 0}}, // ( 90, 134) + { 0, { 0, 0, 0}}, // ( 91, 134) + { 0, { 0, 0, 0}}, // ( 92, 134) + { 0, { 0, 0, 0}}, // ( 93, 134) + { 0, { 0, 0, 0}}, // ( 94, 134) + { 0, { 0, 0, 0}}, // ( 95, 134) + { 0, { 0, 0, 0}}, // ( 96, 134) + { 0, { 0, 0, 0}}, // ( 97, 134) + { 0, { 0, 0, 0}}, // ( 98, 134) + { 0, { 0, 0, 0}}, // ( 99, 134) + { 0, { 0, 0, 0}}, // (100, 134) + { 0, { 0, 0, 0}}, // (101, 134) + { 0, { 0, 0, 0}}, // (102, 134) + { 0, { 0, 0, 0}}, // (103, 134) + { 0, { 0, 0, 0}}, // (104, 134) + { 0, { 0, 0, 0}}, // (105, 134) + { 0, { 0, 0, 0}}, // (106, 134) + { 0, { 0, 0, 0}}, // (107, 134) + { 0, { 0, 0, 0}}, // (108, 134) + { 0, { 0, 0, 0}}, // (109, 134) + { 0, { 0, 0, 0}}, // (110, 134) + { 0, { 0, 0, 0}}, // (111, 134) + { 0, { 0, 0, 0}}, // (112, 134) + { 0, { 0, 0, 0}}, // (113, 134) + { 0, { 0, 0, 0}}, // (114, 134) + { 0, { 0, 0, 0}}, // (115, 134) + { 0, { 0, 0, 0}}, // (116, 134) + { 0, { 0, 0, 0}}, // (117, 134) + { 0, { 0, 0, 0}}, // (118, 134) + { 0, { 0, 0, 0}}, // (119, 134) + { 0, { 0, 0, 0}}, // (120, 134) + { 0, { 0, 0, 0}}, // (121, 134) + { 0, { 0, 0, 0}}, // (122, 134) + { 0, { 0, 0, 0}}, // (123, 134) + { 0, { 0, 0, 0}}, // (124, 134) + { 0, { 0, 0, 0}}, // (125, 134) + { 0, { 0, 0, 0}}, // (126, 134) + { 0, { 0, 0, 0}}, // (127, 134) + { 0, { 0, 0, 0}}, // (128, 134) + { 0, { 0, 0, 0}}, // (129, 134) + { 0, { 0, 0, 0}}, // (130, 134) + { 0, { 0, 0, 0}}, // (131, 134) + { 0, { 0, 0, 0}}, // (132, 134) + { 0, { 0, 0, 0}}, // (133, 134) + { 0, { 0, 0, 0}}, // (134, 134) + { 0, { 0, 0, 0}}, // (135, 134) + { 0, { 0, 0, 0}}, // (136, 134) + { 0, { 0, 0, 0}}, // (137, 134) + { 0, { 0, 0, 0}}, // (138, 134) + { 0, { 0, 0, 0}}, // (139, 134) + { 0, { 0, 0, 0}}, // (140, 134) + { 0, { 0, 0, 0}}, // (141, 134) + { 0, { 0, 0, 0}}, // (142, 134) + { 0, { 0, 0, 0}}, // (143, 134) + { 0, { 0, 0, 0}}, // (144, 134) + { 0, { 0, 0, 0}}, // (145, 134) + { 0, { 0, 0, 0}}, // (146, 134) + { 0, { 0, 0, 0}}, // (147, 134) + { 0, { 0, 0, 0}}, // (148, 134) + { 0, { 0, 0, 0}}, // (149, 134) + { 0, { 0, 0, 0}}, // (150, 134) + { 0, { 0, 0, 0}}, // (151, 134) + { 0, { 0, 0, 0}}, // (152, 134) + { 0, { 0, 0, 0}}, // (153, 134) + { 0, { 0, 0, 0}}, // (154, 134) + { 0, { 0, 0, 0}}, // (155, 134) + { 0, { 0, 0, 0}}, // (156, 134) + { 0, { 0, 0, 0}}, // (157, 134) + { 0, { 0, 0, 0}}, // (158, 134) + { 0, { 0, 0, 0}}, // (159, 134) + { 0, { 0, 0, 0}}, // (160, 134) + { 0, { 0, 0, 0}}, // (161, 134) + { 0, { 0, 0, 0}}, // (162, 134) + { 0, { 0, 0, 0}}, // (163, 134) + { 0, { 0, 0, 0}}, // (164, 134) + { 15, { 0, 0, 0}}, // (165, 134) + {124, { 0, 0, 0}}, // (166, 134) + {128, { 0, 0, 0}}, // (167, 134) + {128, { 0, 0, 0}}, // (168, 134) + {128, { 0, 0, 0}}, // (169, 134) + {128, { 0, 0, 0}}, // (170, 134) + {128, { 0, 0, 0}}, // (171, 134) + {128, { 0, 0, 0}}, // (172, 134) + {128, { 0, 0, 0}}, // (173, 134) + {128, { 0, 0, 0}}, // (174, 134) + {128, { 0, 0, 0}}, // (175, 134) + {128, { 0, 0, 0}}, // (176, 134) + {128, { 0, 0, 0}}, // (177, 134) + {128, { 0, 0, 0}}, // (178, 134) + {128, { 0, 0, 0}}, // (179, 134) + {128, { 0, 0, 0}}, // ( 0, 135) + {128, { 0, 0, 0}}, // ( 1, 135) + {128, { 0, 0, 0}}, // ( 2, 135) + {128, { 0, 0, 0}}, // ( 3, 135) + {128, { 0, 0, 0}}, // ( 4, 135) + {128, { 0, 0, 0}}, // ( 5, 135) + {128, { 0, 0, 0}}, // ( 6, 135) + {128, { 0, 0, 0}}, // ( 7, 135) + {128, { 0, 0, 0}}, // ( 8, 135) + {128, { 0, 0, 0}}, // ( 9, 135) + {128, { 0, 0, 0}}, // ( 10, 135) + {128, { 0, 0, 0}}, // ( 11, 135) + {128, { 0, 0, 0}}, // ( 12, 135) + {128, { 0, 0, 0}}, // ( 13, 135) + { 85, { 0, 0, 0}}, // ( 14, 135) + { 0, { 0, 0, 0}}, // ( 15, 135) + { 0, { 0, 0, 0}}, // ( 16, 135) + { 0, { 0, 0, 0}}, // ( 17, 135) + { 0, { 0, 0, 0}}, // ( 18, 135) + { 0, { 0, 0, 0}}, // ( 19, 135) + { 0, { 0, 0, 0}}, // ( 20, 135) + { 0, { 0, 0, 0}}, // ( 21, 135) + { 0, { 0, 0, 0}}, // ( 22, 135) + { 0, { 0, 0, 0}}, // ( 23, 135) + { 0, { 0, 0, 0}}, // ( 24, 135) + { 0, { 0, 0, 0}}, // ( 25, 135) + { 0, { 0, 0, 0}}, // ( 26, 135) + { 0, { 0, 0, 0}}, // ( 27, 135) + { 0, { 0, 0, 0}}, // ( 28, 135) + { 0, { 0, 0, 0}}, // ( 29, 135) + { 0, { 0, 0, 0}}, // ( 30, 135) + { 0, { 0, 0, 0}}, // ( 31, 135) + { 0, { 0, 0, 0}}, // ( 32, 135) + { 0, { 0, 0, 0}}, // ( 33, 135) + { 0, { 0, 0, 0}}, // ( 34, 135) + { 0, { 0, 0, 0}}, // ( 35, 135) + { 0, { 0, 0, 0}}, // ( 36, 135) + { 0, { 0, 0, 0}}, // ( 37, 135) + { 0, { 0, 0, 0}}, // ( 38, 135) + { 0, { 0, 0, 0}}, // ( 39, 135) + { 0, { 0, 0, 0}}, // ( 40, 135) + { 0, { 0, 0, 0}}, // ( 41, 135) + { 0, { 0, 0, 0}}, // ( 42, 135) + { 0, { 0, 0, 0}}, // ( 43, 135) + { 0, { 0, 0, 0}}, // ( 44, 135) + { 0, { 0, 0, 0}}, // ( 45, 135) + { 0, { 0, 0, 0}}, // ( 46, 135) + { 0, { 0, 0, 0}}, // ( 47, 135) + { 0, { 0, 0, 0}}, // ( 48, 135) + { 0, { 0, 0, 0}}, // ( 49, 135) + { 0, { 0, 0, 0}}, // ( 50, 135) + { 0, { 0, 0, 0}}, // ( 51, 135) + { 0, { 0, 0, 0}}, // ( 52, 135) + { 0, { 0, 0, 0}}, // ( 53, 135) + { 0, { 0, 0, 0}}, // ( 54, 135) + { 0, { 0, 0, 0}}, // ( 55, 135) + { 0, { 0, 0, 0}}, // ( 56, 135) + { 0, { 0, 0, 0}}, // ( 57, 135) + { 0, { 0, 0, 0}}, // ( 58, 135) + { 0, { 0, 0, 0}}, // ( 59, 135) + { 0, { 0, 0, 0}}, // ( 60, 135) + { 0, { 0, 0, 0}}, // ( 61, 135) + { 0, { 0, 0, 0}}, // ( 62, 135) + { 0, { 0, 0, 0}}, // ( 63, 135) + { 0, { 0, 0, 0}}, // ( 64, 135) + { 0, { 0, 0, 0}}, // ( 65, 135) + { 0, { 0, 0, 0}}, // ( 66, 135) + { 0, { 0, 0, 0}}, // ( 67, 135) + { 0, { 0, 0, 0}}, // ( 68, 135) + { 0, { 0, 0, 0}}, // ( 69, 135) + { 0, { 0, 0, 0}}, // ( 70, 135) + { 0, { 0, 0, 0}}, // ( 71, 135) + { 0, { 0, 0, 0}}, // ( 72, 135) + { 0, { 0, 0, 0}}, // ( 73, 135) + { 0, { 0, 0, 0}}, // ( 74, 135) + { 0, { 0, 0, 0}}, // ( 75, 135) + { 0, { 0, 0, 0}}, // ( 76, 135) + { 0, { 0, 0, 0}}, // ( 77, 135) + { 0, { 0, 0, 0}}, // ( 78, 135) + { 0, { 0, 0, 0}}, // ( 79, 135) + { 0, { 0, 0, 0}}, // ( 80, 135) + { 0, { 0, 0, 0}}, // ( 81, 135) + { 0, { 0, 0, 0}}, // ( 82, 135) + { 0, { 0, 0, 0}}, // ( 83, 135) + { 0, { 0, 0, 0}}, // ( 84, 135) + { 0, { 0, 0, 0}}, // ( 85, 135) + { 0, { 0, 0, 0}}, // ( 86, 135) + { 0, { 0, 0, 0}}, // ( 87, 135) + { 0, { 0, 0, 0}}, // ( 88, 135) + { 0, { 0, 0, 0}}, // ( 89, 135) + { 0, { 0, 0, 0}}, // ( 90, 135) + { 0, { 0, 0, 0}}, // ( 91, 135) + { 0, { 0, 0, 0}}, // ( 92, 135) + { 0, { 0, 0, 0}}, // ( 93, 135) + { 0, { 0, 0, 0}}, // ( 94, 135) + { 0, { 0, 0, 0}}, // ( 95, 135) + { 0, { 0, 0, 0}}, // ( 96, 135) + { 0, { 0, 0, 0}}, // ( 97, 135) + { 0, { 0, 0, 0}}, // ( 98, 135) + { 0, { 0, 0, 0}}, // ( 99, 135) + { 0, { 0, 0, 0}}, // (100, 135) + { 0, { 0, 0, 0}}, // (101, 135) + { 0, { 0, 0, 0}}, // (102, 135) + { 0, { 0, 0, 0}}, // (103, 135) + { 0, { 0, 0, 0}}, // (104, 135) + { 0, { 0, 0, 0}}, // (105, 135) + { 0, { 0, 0, 0}}, // (106, 135) + { 0, { 0, 0, 0}}, // (107, 135) + { 0, { 0, 0, 0}}, // (108, 135) + { 0, { 0, 0, 0}}, // (109, 135) + { 0, { 0, 0, 0}}, // (110, 135) + { 0, { 0, 0, 0}}, // (111, 135) + { 0, { 0, 0, 0}}, // (112, 135) + { 0, { 0, 0, 0}}, // (113, 135) + { 0, { 0, 0, 0}}, // (114, 135) + { 0, { 0, 0, 0}}, // (115, 135) + { 0, { 0, 0, 0}}, // (116, 135) + { 0, { 0, 0, 0}}, // (117, 135) + { 0, { 0, 0, 0}}, // (118, 135) + { 0, { 0, 0, 0}}, // (119, 135) + { 0, { 0, 0, 0}}, // (120, 135) + { 0, { 0, 0, 0}}, // (121, 135) + { 0, { 0, 0, 0}}, // (122, 135) + { 0, { 0, 0, 0}}, // (123, 135) + { 0, { 0, 0, 0}}, // (124, 135) + { 0, { 0, 0, 0}}, // (125, 135) + { 0, { 0, 0, 0}}, // (126, 135) + { 0, { 0, 0, 0}}, // (127, 135) + { 0, { 0, 0, 0}}, // (128, 135) + { 0, { 0, 0, 0}}, // (129, 135) + { 0, { 0, 0, 0}}, // (130, 135) + { 0, { 0, 0, 0}}, // (131, 135) + { 0, { 0, 0, 0}}, // (132, 135) + { 0, { 0, 0, 0}}, // (133, 135) + { 0, { 0, 0, 0}}, // (134, 135) + { 0, { 0, 0, 0}}, // (135, 135) + { 0, { 0, 0, 0}}, // (136, 135) + { 0, { 0, 0, 0}}, // (137, 135) + { 0, { 0, 0, 0}}, // (138, 135) + { 0, { 0, 0, 0}}, // (139, 135) + { 0, { 0, 0, 0}}, // (140, 135) + { 0, { 0, 0, 0}}, // (141, 135) + { 0, { 0, 0, 0}}, // (142, 135) + { 0, { 0, 0, 0}}, // (143, 135) + { 0, { 0, 0, 0}}, // (144, 135) + { 0, { 0, 0, 0}}, // (145, 135) + { 0, { 0, 0, 0}}, // (146, 135) + { 0, { 0, 0, 0}}, // (147, 135) + { 0, { 0, 0, 0}}, // (148, 135) + { 0, { 0, 0, 0}}, // (149, 135) + { 0, { 0, 0, 0}}, // (150, 135) + { 0, { 0, 0, 0}}, // (151, 135) + { 0, { 0, 0, 0}}, // (152, 135) + { 0, { 0, 0, 0}}, // (153, 135) + { 0, { 0, 0, 0}}, // (154, 135) + { 0, { 0, 0, 0}}, // (155, 135) + { 0, { 0, 0, 0}}, // (156, 135) + { 0, { 0, 0, 0}}, // (157, 135) + { 0, { 0, 0, 0}}, // (158, 135) + { 0, { 0, 0, 0}}, // (159, 135) + { 0, { 0, 0, 0}}, // (160, 135) + { 0, { 0, 0, 0}}, // (161, 135) + { 0, { 0, 0, 0}}, // (162, 135) + { 0, { 0, 0, 0}}, // (163, 135) + { 0, { 0, 0, 0}}, // (164, 135) + { 85, { 0, 0, 0}}, // (165, 135) + {128, { 0, 0, 0}}, // (166, 135) + {128, { 0, 0, 0}}, // (167, 135) + {128, { 0, 0, 0}}, // (168, 135) + {128, { 0, 0, 0}}, // (169, 135) + {128, { 0, 0, 0}}, // (170, 135) + {128, { 0, 0, 0}}, // (171, 135) + {128, { 0, 0, 0}}, // (172, 135) + {128, { 0, 0, 0}}, // (173, 135) + {128, { 0, 0, 0}}, // (174, 135) + {128, { 0, 0, 0}}, // (175, 135) + {128, { 0, 0, 0}}, // (176, 135) + {128, { 0, 0, 0}}, // (177, 135) + {128, { 0, 0, 0}}, // (178, 135) + {128, { 0, 0, 0}}, // (179, 135) + {128, { 0, 0, 0}}, // ( 0, 136) + {128, { 0, 0, 0}}, // ( 1, 136) + {128, { 0, 0, 0}}, // ( 2, 136) + {128, { 0, 0, 0}}, // ( 3, 136) + {128, { 0, 0, 0}}, // ( 4, 136) + {128, { 0, 0, 0}}, // ( 5, 136) + {128, { 0, 0, 0}}, // ( 6, 136) + {128, { 0, 0, 0}}, // ( 7, 136) + {128, { 0, 0, 0}}, // ( 8, 136) + {128, { 0, 0, 0}}, // ( 9, 136) + {128, { 0, 0, 0}}, // ( 10, 136) + {128, { 0, 0, 0}}, // ( 11, 136) + {128, { 0, 0, 0}}, // ( 12, 136) + {128, { 0, 0, 0}}, // ( 13, 136) + {128, { 0, 0, 0}}, // ( 14, 136) + { 38, { 0, 0, 0}}, // ( 15, 136) + { 0, { 0, 0, 0}}, // ( 16, 136) + { 0, { 0, 0, 0}}, // ( 17, 136) + { 0, { 0, 0, 0}}, // ( 18, 136) + { 0, { 0, 0, 0}}, // ( 19, 136) + { 0, { 0, 0, 0}}, // ( 20, 136) + { 0, { 0, 0, 0}}, // ( 21, 136) + { 0, { 0, 0, 0}}, // ( 22, 136) + { 0, { 0, 0, 0}}, // ( 23, 136) + { 0, { 0, 0, 0}}, // ( 24, 136) + { 0, { 0, 0, 0}}, // ( 25, 136) + { 0, { 0, 0, 0}}, // ( 26, 136) + { 0, { 0, 0, 0}}, // ( 27, 136) + { 0, { 0, 0, 0}}, // ( 28, 136) + { 0, { 0, 0, 0}}, // ( 29, 136) + { 0, { 0, 0, 0}}, // ( 30, 136) + { 0, { 0, 0, 0}}, // ( 31, 136) + { 0, { 0, 0, 0}}, // ( 32, 136) + { 0, { 0, 0, 0}}, // ( 33, 136) + { 0, { 0, 0, 0}}, // ( 34, 136) + { 0, { 0, 0, 0}}, // ( 35, 136) + { 0, { 0, 0, 0}}, // ( 36, 136) + { 0, { 0, 0, 0}}, // ( 37, 136) + { 0, { 0, 0, 0}}, // ( 38, 136) + { 0, { 0, 0, 0}}, // ( 39, 136) + { 0, { 0, 0, 0}}, // ( 40, 136) + { 0, { 0, 0, 0}}, // ( 41, 136) + { 0, { 0, 0, 0}}, // ( 42, 136) + { 0, { 0, 0, 0}}, // ( 43, 136) + { 0, { 0, 0, 0}}, // ( 44, 136) + { 0, { 0, 0, 0}}, // ( 45, 136) + { 0, { 0, 0, 0}}, // ( 46, 136) + { 0, { 0, 0, 0}}, // ( 47, 136) + { 0, { 0, 0, 0}}, // ( 48, 136) + { 0, { 0, 0, 0}}, // ( 49, 136) + { 0, { 0, 0, 0}}, // ( 50, 136) + { 0, { 0, 0, 0}}, // ( 51, 136) + { 0, { 0, 0, 0}}, // ( 52, 136) + { 0, { 0, 0, 0}}, // ( 53, 136) + { 0, { 0, 0, 0}}, // ( 54, 136) + { 0, { 0, 0, 0}}, // ( 55, 136) + { 0, { 0, 0, 0}}, // ( 56, 136) + { 0, { 0, 0, 0}}, // ( 57, 136) + { 0, { 0, 0, 0}}, // ( 58, 136) + { 0, { 0, 0, 0}}, // ( 59, 136) + { 0, { 0, 0, 0}}, // ( 60, 136) + { 0, { 0, 0, 0}}, // ( 61, 136) + { 0, { 0, 0, 0}}, // ( 62, 136) + { 0, { 0, 0, 0}}, // ( 63, 136) + { 0, { 0, 0, 0}}, // ( 64, 136) + { 0, { 0, 0, 0}}, // ( 65, 136) + { 0, { 0, 0, 0}}, // ( 66, 136) + { 0, { 0, 0, 0}}, // ( 67, 136) + { 0, { 0, 0, 0}}, // ( 68, 136) + { 0, { 0, 0, 0}}, // ( 69, 136) + { 0, { 0, 0, 0}}, // ( 70, 136) + { 0, { 0, 0, 0}}, // ( 71, 136) + { 0, { 0, 0, 0}}, // ( 72, 136) + { 0, { 0, 0, 0}}, // ( 73, 136) + { 0, { 0, 0, 0}}, // ( 74, 136) + { 0, { 0, 0, 0}}, // ( 75, 136) + { 0, { 0, 0, 0}}, // ( 76, 136) + { 0, { 0, 0, 0}}, // ( 77, 136) + { 0, { 0, 0, 0}}, // ( 78, 136) + { 0, { 0, 0, 0}}, // ( 79, 136) + { 0, { 0, 0, 0}}, // ( 80, 136) + { 0, { 0, 0, 0}}, // ( 81, 136) + { 0, { 0, 0, 0}}, // ( 82, 136) + { 0, { 0, 0, 0}}, // ( 83, 136) + { 0, { 0, 0, 0}}, // ( 84, 136) + { 0, { 0, 0, 0}}, // ( 85, 136) + { 0, { 0, 0, 0}}, // ( 86, 136) + { 0, { 0, 0, 0}}, // ( 87, 136) + { 0, { 0, 0, 0}}, // ( 88, 136) + { 0, { 0, 0, 0}}, // ( 89, 136) + { 0, { 0, 0, 0}}, // ( 90, 136) + { 0, { 0, 0, 0}}, // ( 91, 136) + { 0, { 0, 0, 0}}, // ( 92, 136) + { 0, { 0, 0, 0}}, // ( 93, 136) + { 0, { 0, 0, 0}}, // ( 94, 136) + { 0, { 0, 0, 0}}, // ( 95, 136) + { 0, { 0, 0, 0}}, // ( 96, 136) + { 0, { 0, 0, 0}}, // ( 97, 136) + { 0, { 0, 0, 0}}, // ( 98, 136) + { 0, { 0, 0, 0}}, // ( 99, 136) + { 0, { 0, 0, 0}}, // (100, 136) + { 0, { 0, 0, 0}}, // (101, 136) + { 0, { 0, 0, 0}}, // (102, 136) + { 0, { 0, 0, 0}}, // (103, 136) + { 0, { 0, 0, 0}}, // (104, 136) + { 0, { 0, 0, 0}}, // (105, 136) + { 0, { 0, 0, 0}}, // (106, 136) + { 0, { 0, 0, 0}}, // (107, 136) + { 0, { 0, 0, 0}}, // (108, 136) + { 0, { 0, 0, 0}}, // (109, 136) + { 0, { 0, 0, 0}}, // (110, 136) + { 0, { 0, 0, 0}}, // (111, 136) + { 0, { 0, 0, 0}}, // (112, 136) + { 0, { 0, 0, 0}}, // (113, 136) + { 0, { 0, 0, 0}}, // (114, 136) + { 0, { 0, 0, 0}}, // (115, 136) + { 0, { 0, 0, 0}}, // (116, 136) + { 0, { 0, 0, 0}}, // (117, 136) + { 0, { 0, 0, 0}}, // (118, 136) + { 0, { 0, 0, 0}}, // (119, 136) + { 0, { 0, 0, 0}}, // (120, 136) + { 0, { 0, 0, 0}}, // (121, 136) + { 0, { 0, 0, 0}}, // (122, 136) + { 0, { 0, 0, 0}}, // (123, 136) + { 0, { 0, 0, 0}}, // (124, 136) + { 0, { 0, 0, 0}}, // (125, 136) + { 0, { 0, 0, 0}}, // (126, 136) + { 0, { 0, 0, 0}}, // (127, 136) + { 0, { 0, 0, 0}}, // (128, 136) + { 0, { 0, 0, 0}}, // (129, 136) + { 0, { 0, 0, 0}}, // (130, 136) + { 0, { 0, 0, 0}}, // (131, 136) + { 0, { 0, 0, 0}}, // (132, 136) + { 0, { 0, 0, 0}}, // (133, 136) + { 0, { 0, 0, 0}}, // (134, 136) + { 0, { 0, 0, 0}}, // (135, 136) + { 0, { 0, 0, 0}}, // (136, 136) + { 0, { 0, 0, 0}}, // (137, 136) + { 0, { 0, 0, 0}}, // (138, 136) + { 0, { 0, 0, 0}}, // (139, 136) + { 0, { 0, 0, 0}}, // (140, 136) + { 0, { 0, 0, 0}}, // (141, 136) + { 0, { 0, 0, 0}}, // (142, 136) + { 0, { 0, 0, 0}}, // (143, 136) + { 0, { 0, 0, 0}}, // (144, 136) + { 0, { 0, 0, 0}}, // (145, 136) + { 0, { 0, 0, 0}}, // (146, 136) + { 0, { 0, 0, 0}}, // (147, 136) + { 0, { 0, 0, 0}}, // (148, 136) + { 0, { 0, 0, 0}}, // (149, 136) + { 0, { 0, 0, 0}}, // (150, 136) + { 0, { 0, 0, 0}}, // (151, 136) + { 0, { 0, 0, 0}}, // (152, 136) + { 0, { 0, 0, 0}}, // (153, 136) + { 0, { 0, 0, 0}}, // (154, 136) + { 0, { 0, 0, 0}}, // (155, 136) + { 0, { 0, 0, 0}}, // (156, 136) + { 0, { 0, 0, 0}}, // (157, 136) + { 0, { 0, 0, 0}}, // (158, 136) + { 0, { 0, 0, 0}}, // (159, 136) + { 0, { 0, 0, 0}}, // (160, 136) + { 0, { 0, 0, 0}}, // (161, 136) + { 0, { 0, 0, 0}}, // (162, 136) + { 0, { 0, 0, 0}}, // (163, 136) + { 38, { 0, 0, 0}}, // (164, 136) + {128, { 0, 0, 0}}, // (165, 136) + {128, { 0, 0, 0}}, // (166, 136) + {128, { 0, 0, 0}}, // (167, 136) + {128, { 0, 0, 0}}, // (168, 136) + {128, { 0, 0, 0}}, // (169, 136) + {128, { 0, 0, 0}}, // (170, 136) + {128, { 0, 0, 0}}, // (171, 136) + {128, { 0, 0, 0}}, // (172, 136) + {128, { 0, 0, 0}}, // (173, 136) + {128, { 0, 0, 0}}, // (174, 136) + {128, { 0, 0, 0}}, // (175, 136) + {128, { 0, 0, 0}}, // (176, 136) + {128, { 0, 0, 0}}, // (177, 136) + {128, { 0, 0, 0}}, // (178, 136) + {128, { 0, 0, 0}}, // (179, 136) + {128, { 0, 0, 0}}, // ( 0, 137) + {128, { 0, 0, 0}}, // ( 1, 137) + {128, { 0, 0, 0}}, // ( 2, 137) + {128, { 0, 0, 0}}, // ( 3, 137) + {128, { 0, 0, 0}}, // ( 4, 137) + {128, { 0, 0, 0}}, // ( 5, 137) + {128, { 0, 0, 0}}, // ( 6, 137) + {128, { 0, 0, 0}}, // ( 7, 137) + {128, { 0, 0, 0}}, // ( 8, 137) + {128, { 0, 0, 0}}, // ( 9, 137) + {128, { 0, 0, 0}}, // ( 10, 137) + {128, { 0, 0, 0}}, // ( 11, 137) + {128, { 0, 0, 0}}, // ( 12, 137) + {128, { 0, 0, 0}}, // ( 13, 137) + {128, { 0, 0, 0}}, // ( 14, 137) + {113, { 0, 0, 0}}, // ( 15, 137) + { 7, { 0, 0, 0}}, // ( 16, 137) + { 0, { 0, 0, 0}}, // ( 17, 137) + { 0, { 0, 0, 0}}, // ( 18, 137) + { 0, { 0, 0, 0}}, // ( 19, 137) + { 0, { 0, 0, 0}}, // ( 20, 137) + { 0, { 0, 0, 0}}, // ( 21, 137) + { 0, { 0, 0, 0}}, // ( 22, 137) + { 0, { 0, 0, 0}}, // ( 23, 137) + { 0, { 0, 0, 0}}, // ( 24, 137) + { 0, { 0, 0, 0}}, // ( 25, 137) + { 0, { 0, 0, 0}}, // ( 26, 137) + { 0, { 0, 0, 0}}, // ( 27, 137) + { 0, { 0, 0, 0}}, // ( 28, 137) + { 0, { 0, 0, 0}}, // ( 29, 137) + { 0, { 0, 0, 0}}, // ( 30, 137) + { 0, { 0, 0, 0}}, // ( 31, 137) + { 0, { 0, 0, 0}}, // ( 32, 137) + { 0, { 0, 0, 0}}, // ( 33, 137) + { 0, { 0, 0, 0}}, // ( 34, 137) + { 0, { 0, 0, 0}}, // ( 35, 137) + { 0, { 0, 0, 0}}, // ( 36, 137) + { 0, { 0, 0, 0}}, // ( 37, 137) + { 0, { 0, 0, 0}}, // ( 38, 137) + { 0, { 0, 0, 0}}, // ( 39, 137) + { 0, { 0, 0, 0}}, // ( 40, 137) + { 0, { 0, 0, 0}}, // ( 41, 137) + { 0, { 0, 0, 0}}, // ( 42, 137) + { 0, { 0, 0, 0}}, // ( 43, 137) + { 0, { 0, 0, 0}}, // ( 44, 137) + { 0, { 0, 0, 0}}, // ( 45, 137) + { 0, { 0, 0, 0}}, // ( 46, 137) + { 0, { 0, 0, 0}}, // ( 47, 137) + { 0, { 0, 0, 0}}, // ( 48, 137) + { 0, { 0, 0, 0}}, // ( 49, 137) + { 0, { 0, 0, 0}}, // ( 50, 137) + { 0, { 0, 0, 0}}, // ( 51, 137) + { 0, { 0, 0, 0}}, // ( 52, 137) + { 0, { 0, 0, 0}}, // ( 53, 137) + { 0, { 0, 0, 0}}, // ( 54, 137) + { 0, { 0, 0, 0}}, // ( 55, 137) + { 0, { 0, 0, 0}}, // ( 56, 137) + { 0, { 0, 0, 0}}, // ( 57, 137) + { 0, { 0, 0, 0}}, // ( 58, 137) + { 0, { 0, 0, 0}}, // ( 59, 137) + { 0, { 0, 0, 0}}, // ( 60, 137) + { 0, { 0, 0, 0}}, // ( 61, 137) + { 0, { 0, 0, 0}}, // ( 62, 137) + { 0, { 0, 0, 0}}, // ( 63, 137) + { 0, { 0, 0, 0}}, // ( 64, 137) + { 0, { 0, 0, 0}}, // ( 65, 137) + { 0, { 0, 0, 0}}, // ( 66, 137) + { 0, { 0, 0, 0}}, // ( 67, 137) + { 0, { 0, 0, 0}}, // ( 68, 137) + { 0, { 0, 0, 0}}, // ( 69, 137) + { 0, { 0, 0, 0}}, // ( 70, 137) + { 0, { 0, 0, 0}}, // ( 71, 137) + { 0, { 0, 0, 0}}, // ( 72, 137) + { 0, { 0, 0, 0}}, // ( 73, 137) + { 0, { 0, 0, 0}}, // ( 74, 137) + { 0, { 0, 0, 0}}, // ( 75, 137) + { 0, { 0, 0, 0}}, // ( 76, 137) + { 0, { 0, 0, 0}}, // ( 77, 137) + { 0, { 0, 0, 0}}, // ( 78, 137) + { 0, { 0, 0, 0}}, // ( 79, 137) + { 0, { 0, 0, 0}}, // ( 80, 137) + { 0, { 0, 0, 0}}, // ( 81, 137) + { 0, { 0, 0, 0}}, // ( 82, 137) + { 0, { 0, 0, 0}}, // ( 83, 137) + { 0, { 0, 0, 0}}, // ( 84, 137) + { 0, { 0, 0, 0}}, // ( 85, 137) + { 0, { 0, 0, 0}}, // ( 86, 137) + { 0, { 0, 0, 0}}, // ( 87, 137) + { 0, { 0, 0, 0}}, // ( 88, 137) + { 0, { 0, 0, 0}}, // ( 89, 137) + { 0, { 0, 0, 0}}, // ( 90, 137) + { 0, { 0, 0, 0}}, // ( 91, 137) + { 0, { 0, 0, 0}}, // ( 92, 137) + { 0, { 0, 0, 0}}, // ( 93, 137) + { 0, { 0, 0, 0}}, // ( 94, 137) + { 0, { 0, 0, 0}}, // ( 95, 137) + { 0, { 0, 0, 0}}, // ( 96, 137) + { 0, { 0, 0, 0}}, // ( 97, 137) + { 0, { 0, 0, 0}}, // ( 98, 137) + { 0, { 0, 0, 0}}, // ( 99, 137) + { 0, { 0, 0, 0}}, // (100, 137) + { 0, { 0, 0, 0}}, // (101, 137) + { 0, { 0, 0, 0}}, // (102, 137) + { 0, { 0, 0, 0}}, // (103, 137) + { 0, { 0, 0, 0}}, // (104, 137) + { 0, { 0, 0, 0}}, // (105, 137) + { 0, { 0, 0, 0}}, // (106, 137) + { 0, { 0, 0, 0}}, // (107, 137) + { 0, { 0, 0, 0}}, // (108, 137) + { 0, { 0, 0, 0}}, // (109, 137) + { 0, { 0, 0, 0}}, // (110, 137) + { 0, { 0, 0, 0}}, // (111, 137) + { 0, { 0, 0, 0}}, // (112, 137) + { 0, { 0, 0, 0}}, // (113, 137) + { 0, { 0, 0, 0}}, // (114, 137) + { 0, { 0, 0, 0}}, // (115, 137) + { 0, { 0, 0, 0}}, // (116, 137) + { 0, { 0, 0, 0}}, // (117, 137) + { 0, { 0, 0, 0}}, // (118, 137) + { 0, { 0, 0, 0}}, // (119, 137) + { 0, { 0, 0, 0}}, // (120, 137) + { 0, { 0, 0, 0}}, // (121, 137) + { 0, { 0, 0, 0}}, // (122, 137) + { 0, { 0, 0, 0}}, // (123, 137) + { 0, { 0, 0, 0}}, // (124, 137) + { 0, { 0, 0, 0}}, // (125, 137) + { 0, { 0, 0, 0}}, // (126, 137) + { 0, { 0, 0, 0}}, // (127, 137) + { 0, { 0, 0, 0}}, // (128, 137) + { 0, { 0, 0, 0}}, // (129, 137) + { 0, { 0, 0, 0}}, // (130, 137) + { 0, { 0, 0, 0}}, // (131, 137) + { 0, { 0, 0, 0}}, // (132, 137) + { 0, { 0, 0, 0}}, // (133, 137) + { 0, { 0, 0, 0}}, // (134, 137) + { 0, { 0, 0, 0}}, // (135, 137) + { 0, { 0, 0, 0}}, // (136, 137) + { 0, { 0, 0, 0}}, // (137, 137) + { 0, { 0, 0, 0}}, // (138, 137) + { 0, { 0, 0, 0}}, // (139, 137) + { 0, { 0, 0, 0}}, // (140, 137) + { 0, { 0, 0, 0}}, // (141, 137) + { 0, { 0, 0, 0}}, // (142, 137) + { 0, { 0, 0, 0}}, // (143, 137) + { 0, { 0, 0, 0}}, // (144, 137) + { 0, { 0, 0, 0}}, // (145, 137) + { 0, { 0, 0, 0}}, // (146, 137) + { 0, { 0, 0, 0}}, // (147, 137) + { 0, { 0, 0, 0}}, // (148, 137) + { 0, { 0, 0, 0}}, // (149, 137) + { 0, { 0, 0, 0}}, // (150, 137) + { 0, { 0, 0, 0}}, // (151, 137) + { 0, { 0, 0, 0}}, // (152, 137) + { 0, { 0, 0, 0}}, // (153, 137) + { 0, { 0, 0, 0}}, // (154, 137) + { 0, { 0, 0, 0}}, // (155, 137) + { 0, { 0, 0, 0}}, // (156, 137) + { 0, { 0, 0, 0}}, // (157, 137) + { 0, { 0, 0, 0}}, // (158, 137) + { 0, { 0, 0, 0}}, // (159, 137) + { 0, { 0, 0, 0}}, // (160, 137) + { 0, { 0, 0, 0}}, // (161, 137) + { 0, { 0, 0, 0}}, // (162, 137) + { 7, { 0, 0, 0}}, // (163, 137) + {113, { 0, 0, 0}}, // (164, 137) + {128, { 0, 0, 0}}, // (165, 137) + {128, { 0, 0, 0}}, // (166, 137) + {128, { 0, 0, 0}}, // (167, 137) + {128, { 0, 0, 0}}, // (168, 137) + {128, { 0, 0, 0}}, // (169, 137) + {128, { 0, 0, 0}}, // (170, 137) + {128, { 0, 0, 0}}, // (171, 137) + {128, { 0, 0, 0}}, // (172, 137) + {128, { 0, 0, 0}}, // (173, 137) + {128, { 0, 0, 0}}, // (174, 137) + {128, { 0, 0, 0}}, // (175, 137) + {128, { 0, 0, 0}}, // (176, 137) + {128, { 0, 0, 0}}, // (177, 137) + {128, { 0, 0, 0}}, // (178, 137) + {128, { 0, 0, 0}}, // (179, 137) + {128, { 0, 0, 0}}, // ( 0, 138) + {128, { 0, 0, 0}}, // ( 1, 138) + {128, { 0, 0, 0}}, // ( 2, 138) + {128, { 0, 0, 0}}, // ( 3, 138) + {128, { 0, 0, 0}}, // ( 4, 138) + {128, { 0, 0, 0}}, // ( 5, 138) + {128, { 0, 0, 0}}, // ( 6, 138) + {128, { 0, 0, 0}}, // ( 7, 138) + {128, { 0, 0, 0}}, // ( 8, 138) + {128, { 0, 0, 0}}, // ( 9, 138) + {128, { 0, 0, 0}}, // ( 10, 138) + {128, { 0, 0, 0}}, // ( 11, 138) + {128, { 0, 0, 0}}, // ( 12, 138) + {128, { 0, 0, 0}}, // ( 13, 138) + {128, { 0, 0, 0}}, // ( 14, 138) + {128, { 0, 0, 0}}, // ( 15, 138) + { 74, { 0, 0, 0}}, // ( 16, 138) + { 0, { 0, 0, 0}}, // ( 17, 138) + { 0, { 0, 0, 0}}, // ( 18, 138) + { 0, { 0, 0, 0}}, // ( 19, 138) + { 0, { 0, 0, 0}}, // ( 20, 138) + { 0, { 0, 0, 0}}, // ( 21, 138) + { 0, { 0, 0, 0}}, // ( 22, 138) + { 0, { 0, 0, 0}}, // ( 23, 138) + { 0, { 0, 0, 0}}, // ( 24, 138) + { 0, { 0, 0, 0}}, // ( 25, 138) + { 0, { 0, 0, 0}}, // ( 26, 138) + { 0, { 0, 0, 0}}, // ( 27, 138) + { 0, { 0, 0, 0}}, // ( 28, 138) + { 0, { 0, 0, 0}}, // ( 29, 138) + { 0, { 0, 0, 0}}, // ( 30, 138) + { 0, { 0, 0, 0}}, // ( 31, 138) + { 0, { 0, 0, 0}}, // ( 32, 138) + { 0, { 0, 0, 0}}, // ( 33, 138) + { 0, { 0, 0, 0}}, // ( 34, 138) + { 0, { 0, 0, 0}}, // ( 35, 138) + { 0, { 0, 0, 0}}, // ( 36, 138) + { 0, { 0, 0, 0}}, // ( 37, 138) + { 0, { 0, 0, 0}}, // ( 38, 138) + { 0, { 0, 0, 0}}, // ( 39, 138) + { 0, { 0, 0, 0}}, // ( 40, 138) + { 0, { 0, 0, 0}}, // ( 41, 138) + { 0, { 0, 0, 0}}, // ( 42, 138) + { 0, { 0, 0, 0}}, // ( 43, 138) + { 0, { 0, 0, 0}}, // ( 44, 138) + { 0, { 0, 0, 0}}, // ( 45, 138) + { 0, { 0, 0, 0}}, // ( 46, 138) + { 0, { 0, 0, 0}}, // ( 47, 138) + { 0, { 0, 0, 0}}, // ( 48, 138) + { 0, { 0, 0, 0}}, // ( 49, 138) + { 0, { 0, 0, 0}}, // ( 50, 138) + { 0, { 0, 0, 0}}, // ( 51, 138) + { 0, { 0, 0, 0}}, // ( 52, 138) + { 0, { 0, 0, 0}}, // ( 53, 138) + { 0, { 0, 0, 0}}, // ( 54, 138) + { 0, { 0, 0, 0}}, // ( 55, 138) + { 0, { 0, 0, 0}}, // ( 56, 138) + { 0, { 0, 0, 0}}, // ( 57, 138) + { 0, { 0, 0, 0}}, // ( 58, 138) + { 0, { 0, 0, 0}}, // ( 59, 138) + { 0, { 0, 0, 0}}, // ( 60, 138) + { 0, { 0, 0, 0}}, // ( 61, 138) + { 0, { 0, 0, 0}}, // ( 62, 138) + { 0, { 0, 0, 0}}, // ( 63, 138) + { 0, { 0, 0, 0}}, // ( 64, 138) + { 0, { 0, 0, 0}}, // ( 65, 138) + { 0, { 0, 0, 0}}, // ( 66, 138) + { 0, { 0, 0, 0}}, // ( 67, 138) + { 0, { 0, 0, 0}}, // ( 68, 138) + { 0, { 0, 0, 0}}, // ( 69, 138) + { 0, { 0, 0, 0}}, // ( 70, 138) + { 0, { 0, 0, 0}}, // ( 71, 138) + { 0, { 0, 0, 0}}, // ( 72, 138) + { 0, { 0, 0, 0}}, // ( 73, 138) + { 0, { 0, 0, 0}}, // ( 74, 138) + { 0, { 0, 0, 0}}, // ( 75, 138) + { 0, { 0, 0, 0}}, // ( 76, 138) + { 0, { 0, 0, 0}}, // ( 77, 138) + { 0, { 0, 0, 0}}, // ( 78, 138) + { 0, { 0, 0, 0}}, // ( 79, 138) + { 0, { 0, 0, 0}}, // ( 80, 138) + { 0, { 0, 0, 0}}, // ( 81, 138) + { 0, { 0, 0, 0}}, // ( 82, 138) + { 0, { 0, 0, 0}}, // ( 83, 138) + { 0, { 0, 0, 0}}, // ( 84, 138) + { 0, { 0, 0, 0}}, // ( 85, 138) + { 0, { 0, 0, 0}}, // ( 86, 138) + { 0, { 0, 0, 0}}, // ( 87, 138) + { 0, { 0, 0, 0}}, // ( 88, 138) + { 0, { 0, 0, 0}}, // ( 89, 138) + { 0, { 0, 0, 0}}, // ( 90, 138) + { 0, { 0, 0, 0}}, // ( 91, 138) + { 0, { 0, 0, 0}}, // ( 92, 138) + { 0, { 0, 0, 0}}, // ( 93, 138) + { 0, { 0, 0, 0}}, // ( 94, 138) + { 0, { 0, 0, 0}}, // ( 95, 138) + { 0, { 0, 0, 0}}, // ( 96, 138) + { 0, { 0, 0, 0}}, // ( 97, 138) + { 0, { 0, 0, 0}}, // ( 98, 138) + { 0, { 0, 0, 0}}, // ( 99, 138) + { 0, { 0, 0, 0}}, // (100, 138) + { 0, { 0, 0, 0}}, // (101, 138) + { 0, { 0, 0, 0}}, // (102, 138) + { 0, { 0, 0, 0}}, // (103, 138) + { 0, { 0, 0, 0}}, // (104, 138) + { 0, { 0, 0, 0}}, // (105, 138) + { 0, { 0, 0, 0}}, // (106, 138) + { 0, { 0, 0, 0}}, // (107, 138) + { 0, { 0, 0, 0}}, // (108, 138) + { 0, { 0, 0, 0}}, // (109, 138) + { 0, { 0, 0, 0}}, // (110, 138) + { 0, { 0, 0, 0}}, // (111, 138) + { 0, { 0, 0, 0}}, // (112, 138) + { 0, { 0, 0, 0}}, // (113, 138) + { 0, { 0, 0, 0}}, // (114, 138) + { 0, { 0, 0, 0}}, // (115, 138) + { 0, { 0, 0, 0}}, // (116, 138) + { 0, { 0, 0, 0}}, // (117, 138) + { 0, { 0, 0, 0}}, // (118, 138) + { 0, { 0, 0, 0}}, // (119, 138) + { 0, { 0, 0, 0}}, // (120, 138) + { 0, { 0, 0, 0}}, // (121, 138) + { 0, { 0, 0, 0}}, // (122, 138) + { 0, { 0, 0, 0}}, // (123, 138) + { 0, { 0, 0, 0}}, // (124, 138) + { 0, { 0, 0, 0}}, // (125, 138) + { 0, { 0, 0, 0}}, // (126, 138) + { 0, { 0, 0, 0}}, // (127, 138) + { 0, { 0, 0, 0}}, // (128, 138) + { 0, { 0, 0, 0}}, // (129, 138) + { 0, { 0, 0, 0}}, // (130, 138) + { 0, { 0, 0, 0}}, // (131, 138) + { 0, { 0, 0, 0}}, // (132, 138) + { 0, { 0, 0, 0}}, // (133, 138) + { 0, { 0, 0, 0}}, // (134, 138) + { 0, { 0, 0, 0}}, // (135, 138) + { 0, { 0, 0, 0}}, // (136, 138) + { 0, { 0, 0, 0}}, // (137, 138) + { 0, { 0, 0, 0}}, // (138, 138) + { 0, { 0, 0, 0}}, // (139, 138) + { 0, { 0, 0, 0}}, // (140, 138) + { 0, { 0, 0, 0}}, // (141, 138) + { 0, { 0, 0, 0}}, // (142, 138) + { 0, { 0, 0, 0}}, // (143, 138) + { 0, { 0, 0, 0}}, // (144, 138) + { 0, { 0, 0, 0}}, // (145, 138) + { 0, { 0, 0, 0}}, // (146, 138) + { 0, { 0, 0, 0}}, // (147, 138) + { 0, { 0, 0, 0}}, // (148, 138) + { 0, { 0, 0, 0}}, // (149, 138) + { 0, { 0, 0, 0}}, // (150, 138) + { 0, { 0, 0, 0}}, // (151, 138) + { 0, { 0, 0, 0}}, // (152, 138) + { 0, { 0, 0, 0}}, // (153, 138) + { 0, { 0, 0, 0}}, // (154, 138) + { 0, { 0, 0, 0}}, // (155, 138) + { 0, { 0, 0, 0}}, // (156, 138) + { 0, { 0, 0, 0}}, // (157, 138) + { 0, { 0, 0, 0}}, // (158, 138) + { 0, { 0, 0, 0}}, // (159, 138) + { 0, { 0, 0, 0}}, // (160, 138) + { 0, { 0, 0, 0}}, // (161, 138) + { 0, { 0, 0, 0}}, // (162, 138) + { 74, { 0, 0, 0}}, // (163, 138) + {128, { 0, 0, 0}}, // (164, 138) + {128, { 0, 0, 0}}, // (165, 138) + {128, { 0, 0, 0}}, // (166, 138) + {128, { 0, 0, 0}}, // (167, 138) + {128, { 0, 0, 0}}, // (168, 138) + {128, { 0, 0, 0}}, // (169, 138) + {128, { 0, 0, 0}}, // (170, 138) + {128, { 0, 0, 0}}, // (171, 138) + {128, { 0, 0, 0}}, // (172, 138) + {128, { 0, 0, 0}}, // (173, 138) + {128, { 0, 0, 0}}, // (174, 138) + {128, { 0, 0, 0}}, // (175, 138) + {128, { 0, 0, 0}}, // (176, 138) + {128, { 0, 0, 0}}, // (177, 138) + {128, { 0, 0, 0}}, // (178, 138) + {128, { 0, 0, 0}}, // (179, 138) + {128, { 0, 0, 0}}, // ( 0, 139) + {128, { 0, 0, 0}}, // ( 1, 139) + {128, { 0, 0, 0}}, // ( 2, 139) + {128, { 0, 0, 0}}, // ( 3, 139) + {128, { 0, 0, 0}}, // ( 4, 139) + {128, { 0, 0, 0}}, // ( 5, 139) + {128, { 0, 0, 0}}, // ( 6, 139) + {128, { 0, 0, 0}}, // ( 7, 139) + {128, { 0, 0, 0}}, // ( 8, 139) + {128, { 0, 0, 0}}, // ( 9, 139) + {128, { 0, 0, 0}}, // ( 10, 139) + {128, { 0, 0, 0}}, // ( 11, 139) + {128, { 0, 0, 0}}, // ( 12, 139) + {128, { 0, 0, 0}}, // ( 13, 139) + {128, { 0, 0, 0}}, // ( 14, 139) + {128, { 0, 0, 0}}, // ( 15, 139) + {127, { 0, 0, 0}}, // ( 16, 139) + { 32, { 0, 0, 0}}, // ( 17, 139) + { 0, { 0, 0, 0}}, // ( 18, 139) + { 0, { 0, 0, 0}}, // ( 19, 139) + { 0, { 0, 0, 0}}, // ( 20, 139) + { 0, { 0, 0, 0}}, // ( 21, 139) + { 0, { 0, 0, 0}}, // ( 22, 139) + { 0, { 0, 0, 0}}, // ( 23, 139) + { 0, { 0, 0, 0}}, // ( 24, 139) + { 0, { 0, 0, 0}}, // ( 25, 139) + { 0, { 0, 0, 0}}, // ( 26, 139) + { 0, { 0, 0, 0}}, // ( 27, 139) + { 0, { 0, 0, 0}}, // ( 28, 139) + { 0, { 0, 0, 0}}, // ( 29, 139) + { 0, { 0, 0, 0}}, // ( 30, 139) + { 0, { 0, 0, 0}}, // ( 31, 139) + { 0, { 0, 0, 0}}, // ( 32, 139) + { 0, { 0, 0, 0}}, // ( 33, 139) + { 0, { 0, 0, 0}}, // ( 34, 139) + { 0, { 0, 0, 0}}, // ( 35, 139) + { 0, { 0, 0, 0}}, // ( 36, 139) + { 0, { 0, 0, 0}}, // ( 37, 139) + { 0, { 0, 0, 0}}, // ( 38, 139) + { 0, { 0, 0, 0}}, // ( 39, 139) + { 0, { 0, 0, 0}}, // ( 40, 139) + { 0, { 0, 0, 0}}, // ( 41, 139) + { 0, { 0, 0, 0}}, // ( 42, 139) + { 0, { 0, 0, 0}}, // ( 43, 139) + { 0, { 0, 0, 0}}, // ( 44, 139) + { 0, { 0, 0, 0}}, // ( 45, 139) + { 0, { 0, 0, 0}}, // ( 46, 139) + { 0, { 0, 0, 0}}, // ( 47, 139) + { 0, { 0, 0, 0}}, // ( 48, 139) + { 0, { 0, 0, 0}}, // ( 49, 139) + { 0, { 0, 0, 0}}, // ( 50, 139) + { 0, { 0, 0, 0}}, // ( 51, 139) + { 0, { 0, 0, 0}}, // ( 52, 139) + { 0, { 0, 0, 0}}, // ( 53, 139) + { 0, { 0, 0, 0}}, // ( 54, 139) + { 0, { 0, 0, 0}}, // ( 55, 139) + { 0, { 0, 0, 0}}, // ( 56, 139) + { 0, { 0, 0, 0}}, // ( 57, 139) + { 0, { 0, 0, 0}}, // ( 58, 139) + { 0, { 0, 0, 0}}, // ( 59, 139) + { 0, { 0, 0, 0}}, // ( 60, 139) + { 0, { 0, 0, 0}}, // ( 61, 139) + { 0, { 0, 0, 0}}, // ( 62, 139) + { 0, { 0, 0, 0}}, // ( 63, 139) + { 0, { 0, 0, 0}}, // ( 64, 139) + { 0, { 0, 0, 0}}, // ( 65, 139) + { 0, { 0, 0, 0}}, // ( 66, 139) + { 0, { 0, 0, 0}}, // ( 67, 139) + { 0, { 0, 0, 0}}, // ( 68, 139) + { 0, { 0, 0, 0}}, // ( 69, 139) + { 0, { 0, 0, 0}}, // ( 70, 139) + { 0, { 0, 0, 0}}, // ( 71, 139) + { 0, { 0, 0, 0}}, // ( 72, 139) + { 0, { 0, 0, 0}}, // ( 73, 139) + { 0, { 0, 0, 0}}, // ( 74, 139) + { 0, { 0, 0, 0}}, // ( 75, 139) + { 0, { 0, 0, 0}}, // ( 76, 139) + { 0, { 0, 0, 0}}, // ( 77, 139) + { 0, { 0, 0, 0}}, // ( 78, 139) + { 0, { 0, 0, 0}}, // ( 79, 139) + { 0, { 0, 0, 0}}, // ( 80, 139) + { 0, { 0, 0, 0}}, // ( 81, 139) + { 0, { 0, 0, 0}}, // ( 82, 139) + { 0, { 0, 0, 0}}, // ( 83, 139) + { 0, { 0, 0, 0}}, // ( 84, 139) + { 0, { 0, 0, 0}}, // ( 85, 139) + { 0, { 0, 0, 0}}, // ( 86, 139) + { 0, { 0, 0, 0}}, // ( 87, 139) + { 0, { 0, 0, 0}}, // ( 88, 139) + { 0, { 0, 0, 0}}, // ( 89, 139) + { 0, { 0, 0, 0}}, // ( 90, 139) + { 0, { 0, 0, 0}}, // ( 91, 139) + { 0, { 0, 0, 0}}, // ( 92, 139) + { 0, { 0, 0, 0}}, // ( 93, 139) + { 0, { 0, 0, 0}}, // ( 94, 139) + { 0, { 0, 0, 0}}, // ( 95, 139) + { 0, { 0, 0, 0}}, // ( 96, 139) + { 0, { 0, 0, 0}}, // ( 97, 139) + { 0, { 0, 0, 0}}, // ( 98, 139) + { 0, { 0, 0, 0}}, // ( 99, 139) + { 0, { 0, 0, 0}}, // (100, 139) + { 0, { 0, 0, 0}}, // (101, 139) + { 0, { 0, 0, 0}}, // (102, 139) + { 0, { 0, 0, 0}}, // (103, 139) + { 0, { 0, 0, 0}}, // (104, 139) + { 0, { 0, 0, 0}}, // (105, 139) + { 0, { 0, 0, 0}}, // (106, 139) + { 0, { 0, 0, 0}}, // (107, 139) + { 0, { 0, 0, 0}}, // (108, 139) + { 0, { 0, 0, 0}}, // (109, 139) + { 0, { 0, 0, 0}}, // (110, 139) + { 0, { 0, 0, 0}}, // (111, 139) + { 0, { 0, 0, 0}}, // (112, 139) + { 0, { 0, 0, 0}}, // (113, 139) + { 0, { 0, 0, 0}}, // (114, 139) + { 0, { 0, 0, 0}}, // (115, 139) + { 0, { 0, 0, 0}}, // (116, 139) + { 0, { 0, 0, 0}}, // (117, 139) + { 0, { 0, 0, 0}}, // (118, 139) + { 0, { 0, 0, 0}}, // (119, 139) + { 0, { 0, 0, 0}}, // (120, 139) + { 0, { 0, 0, 0}}, // (121, 139) + { 0, { 0, 0, 0}}, // (122, 139) + { 0, { 0, 0, 0}}, // (123, 139) + { 0, { 0, 0, 0}}, // (124, 139) + { 0, { 0, 0, 0}}, // (125, 139) + { 0, { 0, 0, 0}}, // (126, 139) + { 0, { 0, 0, 0}}, // (127, 139) + { 0, { 0, 0, 0}}, // (128, 139) + { 0, { 0, 0, 0}}, // (129, 139) + { 0, { 0, 0, 0}}, // (130, 139) + { 0, { 0, 0, 0}}, // (131, 139) + { 0, { 0, 0, 0}}, // (132, 139) + { 0, { 0, 0, 0}}, // (133, 139) + { 0, { 0, 0, 0}}, // (134, 139) + { 0, { 0, 0, 0}}, // (135, 139) + { 0, { 0, 0, 0}}, // (136, 139) + { 0, { 0, 0, 0}}, // (137, 139) + { 0, { 0, 0, 0}}, // (138, 139) + { 0, { 0, 0, 0}}, // (139, 139) + { 0, { 0, 0, 0}}, // (140, 139) + { 0, { 0, 0, 0}}, // (141, 139) + { 0, { 0, 0, 0}}, // (142, 139) + { 0, { 0, 0, 0}}, // (143, 139) + { 0, { 0, 0, 0}}, // (144, 139) + { 0, { 0, 0, 0}}, // (145, 139) + { 0, { 0, 0, 0}}, // (146, 139) + { 0, { 0, 0, 0}}, // (147, 139) + { 0, { 0, 0, 0}}, // (148, 139) + { 0, { 0, 0, 0}}, // (149, 139) + { 0, { 0, 0, 0}}, // (150, 139) + { 0, { 0, 0, 0}}, // (151, 139) + { 0, { 0, 0, 0}}, // (152, 139) + { 0, { 0, 0, 0}}, // (153, 139) + { 0, { 0, 0, 0}}, // (154, 139) + { 0, { 0, 0, 0}}, // (155, 139) + { 0, { 0, 0, 0}}, // (156, 139) + { 0, { 0, 0, 0}}, // (157, 139) + { 0, { 0, 0, 0}}, // (158, 139) + { 0, { 0, 0, 0}}, // (159, 139) + { 0, { 0, 0, 0}}, // (160, 139) + { 0, { 0, 0, 0}}, // (161, 139) + { 32, { 0, 0, 0}}, // (162, 139) + {127, { 0, 0, 0}}, // (163, 139) + {128, { 0, 0, 0}}, // (164, 139) + {128, { 0, 0, 0}}, // (165, 139) + {128, { 0, 0, 0}}, // (166, 139) + {128, { 0, 0, 0}}, // (167, 139) + {128, { 0, 0, 0}}, // (168, 139) + {128, { 0, 0, 0}}, // (169, 139) + {128, { 0, 0, 0}}, // (170, 139) + {128, { 0, 0, 0}}, // (171, 139) + {128, { 0, 0, 0}}, // (172, 139) + {128, { 0, 0, 0}}, // (173, 139) + {128, { 0, 0, 0}}, // (174, 139) + {128, { 0, 0, 0}}, // (175, 139) + {128, { 0, 0, 0}}, // (176, 139) + {128, { 0, 0, 0}}, // (177, 139) + {128, { 0, 0, 0}}, // (178, 139) + {128, { 0, 0, 0}}, // (179, 139) + {128, { 0, 0, 0}}, // ( 0, 140) + {128, { 0, 0, 0}}, // ( 1, 140) + {128, { 0, 0, 0}}, // ( 2, 140) + {128, { 0, 0, 0}}, // ( 3, 140) + {128, { 0, 0, 0}}, // ( 4, 140) + {128, { 0, 0, 0}}, // ( 5, 140) + {128, { 0, 0, 0}}, // ( 6, 140) + {128, { 0, 0, 0}}, // ( 7, 140) + {128, { 0, 0, 0}}, // ( 8, 140) + {128, { 0, 0, 0}}, // ( 9, 140) + {128, { 0, 0, 0}}, // ( 10, 140) + {128, { 0, 0, 0}}, // ( 11, 140) + {128, { 0, 0, 0}}, // ( 12, 140) + {128, { 0, 0, 0}}, // ( 13, 140) + {128, { 0, 0, 0}}, // ( 14, 140) + {128, { 0, 0, 0}}, // ( 15, 140) + {128, { 0, 0, 0}}, // ( 16, 140) + {113, { 0, 0, 0}}, // ( 17, 140) + { 9, { 0, 0, 0}}, // ( 18, 140) + { 0, { 0, 0, 0}}, // ( 19, 140) + { 0, { 0, 0, 0}}, // ( 20, 140) + { 0, { 0, 0, 0}}, // ( 21, 140) + { 0, { 0, 0, 0}}, // ( 22, 140) + { 0, { 0, 0, 0}}, // ( 23, 140) + { 0, { 0, 0, 0}}, // ( 24, 140) + { 0, { 0, 0, 0}}, // ( 25, 140) + { 0, { 0, 0, 0}}, // ( 26, 140) + { 0, { 0, 0, 0}}, // ( 27, 140) + { 0, { 0, 0, 0}}, // ( 28, 140) + { 0, { 0, 0, 0}}, // ( 29, 140) + { 0, { 0, 0, 0}}, // ( 30, 140) + { 0, { 0, 0, 0}}, // ( 31, 140) + { 0, { 0, 0, 0}}, // ( 32, 140) + { 0, { 0, 0, 0}}, // ( 33, 140) + { 0, { 0, 0, 0}}, // ( 34, 140) + { 0, { 0, 0, 0}}, // ( 35, 140) + { 0, { 0, 0, 0}}, // ( 36, 140) + { 0, { 0, 0, 0}}, // ( 37, 140) + { 0, { 0, 0, 0}}, // ( 38, 140) + { 0, { 0, 0, 0}}, // ( 39, 140) + { 0, { 0, 0, 0}}, // ( 40, 140) + { 0, { 0, 0, 0}}, // ( 41, 140) + { 0, { 0, 0, 0}}, // ( 42, 140) + { 0, { 0, 0, 0}}, // ( 43, 140) + { 0, { 0, 0, 0}}, // ( 44, 140) + { 0, { 0, 0, 0}}, // ( 45, 140) + { 0, { 0, 0, 0}}, // ( 46, 140) + { 0, { 0, 0, 0}}, // ( 47, 140) + { 0, { 0, 0, 0}}, // ( 48, 140) + { 0, { 0, 0, 0}}, // ( 49, 140) + { 0, { 0, 0, 0}}, // ( 50, 140) + { 0, { 0, 0, 0}}, // ( 51, 140) + { 0, { 0, 0, 0}}, // ( 52, 140) + { 0, { 0, 0, 0}}, // ( 53, 140) + { 0, { 0, 0, 0}}, // ( 54, 140) + { 0, { 0, 0, 0}}, // ( 55, 140) + { 0, { 0, 0, 0}}, // ( 56, 140) + { 0, { 0, 0, 0}}, // ( 57, 140) + { 0, { 0, 0, 0}}, // ( 58, 140) + { 0, { 0, 0, 0}}, // ( 59, 140) + { 0, { 0, 0, 0}}, // ( 60, 140) + { 0, { 0, 0, 0}}, // ( 61, 140) + { 0, { 0, 0, 0}}, // ( 62, 140) + { 0, { 0, 0, 0}}, // ( 63, 140) + { 0, { 0, 0, 0}}, // ( 64, 140) + { 0, { 0, 0, 0}}, // ( 65, 140) + { 0, { 0, 0, 0}}, // ( 66, 140) + { 0, { 0, 0, 0}}, // ( 67, 140) + { 0, { 0, 0, 0}}, // ( 68, 140) + { 0, { 0, 0, 0}}, // ( 69, 140) + { 0, { 0, 0, 0}}, // ( 70, 140) + { 0, { 0, 0, 0}}, // ( 71, 140) + { 0, { 0, 0, 0}}, // ( 72, 140) + { 0, { 0, 0, 0}}, // ( 73, 140) + { 0, { 0, 0, 0}}, // ( 74, 140) + { 0, { 0, 0, 0}}, // ( 75, 140) + { 0, { 0, 0, 0}}, // ( 76, 140) + { 0, { 0, 0, 0}}, // ( 77, 140) + { 0, { 0, 0, 0}}, // ( 78, 140) + { 0, { 0, 0, 0}}, // ( 79, 140) + { 0, { 0, 0, 0}}, // ( 80, 140) + { 0, { 0, 0, 0}}, // ( 81, 140) + { 0, { 0, 0, 0}}, // ( 82, 140) + { 0, { 0, 0, 0}}, // ( 83, 140) + { 0, { 0, 0, 0}}, // ( 84, 140) + { 0, { 0, 0, 0}}, // ( 85, 140) + { 0, { 0, 0, 0}}, // ( 86, 140) + { 0, { 0, 0, 0}}, // ( 87, 140) + { 0, { 0, 0, 0}}, // ( 88, 140) + { 0, { 0, 0, 0}}, // ( 89, 140) + { 0, { 0, 0, 0}}, // ( 90, 140) + { 0, { 0, 0, 0}}, // ( 91, 140) + { 0, { 0, 0, 0}}, // ( 92, 140) + { 0, { 0, 0, 0}}, // ( 93, 140) + { 0, { 0, 0, 0}}, // ( 94, 140) + { 0, { 0, 0, 0}}, // ( 95, 140) + { 0, { 0, 0, 0}}, // ( 96, 140) + { 0, { 0, 0, 0}}, // ( 97, 140) + { 0, { 0, 0, 0}}, // ( 98, 140) + { 0, { 0, 0, 0}}, // ( 99, 140) + { 0, { 0, 0, 0}}, // (100, 140) + { 0, { 0, 0, 0}}, // (101, 140) + { 0, { 0, 0, 0}}, // (102, 140) + { 0, { 0, 0, 0}}, // (103, 140) + { 0, { 0, 0, 0}}, // (104, 140) + { 0, { 0, 0, 0}}, // (105, 140) + { 0, { 0, 0, 0}}, // (106, 140) + { 0, { 0, 0, 0}}, // (107, 140) + { 0, { 0, 0, 0}}, // (108, 140) + { 0, { 0, 0, 0}}, // (109, 140) + { 0, { 0, 0, 0}}, // (110, 140) + { 0, { 0, 0, 0}}, // (111, 140) + { 0, { 0, 0, 0}}, // (112, 140) + { 0, { 0, 0, 0}}, // (113, 140) + { 0, { 0, 0, 0}}, // (114, 140) + { 0, { 0, 0, 0}}, // (115, 140) + { 0, { 0, 0, 0}}, // (116, 140) + { 0, { 0, 0, 0}}, // (117, 140) + { 0, { 0, 0, 0}}, // (118, 140) + { 0, { 0, 0, 0}}, // (119, 140) + { 0, { 0, 0, 0}}, // (120, 140) + { 0, { 0, 0, 0}}, // (121, 140) + { 0, { 0, 0, 0}}, // (122, 140) + { 0, { 0, 0, 0}}, // (123, 140) + { 0, { 0, 0, 0}}, // (124, 140) + { 0, { 0, 0, 0}}, // (125, 140) + { 0, { 0, 0, 0}}, // (126, 140) + { 0, { 0, 0, 0}}, // (127, 140) + { 0, { 0, 0, 0}}, // (128, 140) + { 0, { 0, 0, 0}}, // (129, 140) + { 0, { 0, 0, 0}}, // (130, 140) + { 0, { 0, 0, 0}}, // (131, 140) + { 0, { 0, 0, 0}}, // (132, 140) + { 0, { 0, 0, 0}}, // (133, 140) + { 0, { 0, 0, 0}}, // (134, 140) + { 0, { 0, 0, 0}}, // (135, 140) + { 0, { 0, 0, 0}}, // (136, 140) + { 0, { 0, 0, 0}}, // (137, 140) + { 0, { 0, 0, 0}}, // (138, 140) + { 0, { 0, 0, 0}}, // (139, 140) + { 0, { 0, 0, 0}}, // (140, 140) + { 0, { 0, 0, 0}}, // (141, 140) + { 0, { 0, 0, 0}}, // (142, 140) + { 0, { 0, 0, 0}}, // (143, 140) + { 0, { 0, 0, 0}}, // (144, 140) + { 0, { 0, 0, 0}}, // (145, 140) + { 0, { 0, 0, 0}}, // (146, 140) + { 0, { 0, 0, 0}}, // (147, 140) + { 0, { 0, 0, 0}}, // (148, 140) + { 0, { 0, 0, 0}}, // (149, 140) + { 0, { 0, 0, 0}}, // (150, 140) + { 0, { 0, 0, 0}}, // (151, 140) + { 0, { 0, 0, 0}}, // (152, 140) + { 0, { 0, 0, 0}}, // (153, 140) + { 0, { 0, 0, 0}}, // (154, 140) + { 0, { 0, 0, 0}}, // (155, 140) + { 0, { 0, 0, 0}}, // (156, 140) + { 0, { 0, 0, 0}}, // (157, 140) + { 0, { 0, 0, 0}}, // (158, 140) + { 0, { 0, 0, 0}}, // (159, 140) + { 0, { 0, 0, 0}}, // (160, 140) + { 9, { 0, 0, 0}}, // (161, 140) + {113, { 0, 0, 0}}, // (162, 140) + {128, { 0, 0, 0}}, // (163, 140) + {128, { 0, 0, 0}}, // (164, 140) + {128, { 0, 0, 0}}, // (165, 140) + {128, { 0, 0, 0}}, // (166, 140) + {128, { 0, 0, 0}}, // (167, 140) + {128, { 0, 0, 0}}, // (168, 140) + {128, { 0, 0, 0}}, // (169, 140) + {128, { 0, 0, 0}}, // (170, 140) + {128, { 0, 0, 0}}, // (171, 140) + {128, { 0, 0, 0}}, // (172, 140) + {128, { 0, 0, 0}}, // (173, 140) + {128, { 0, 0, 0}}, // (174, 140) + {128, { 0, 0, 0}}, // (175, 140) + {128, { 0, 0, 0}}, // (176, 140) + {128, { 0, 0, 0}}, // (177, 140) + {128, { 0, 0, 0}}, // (178, 140) + {128, { 0, 0, 0}}, // (179, 140) + {128, { 0, 0, 0}}, // ( 0, 141) + {128, { 0, 0, 0}}, // ( 1, 141) + {128, { 0, 0, 0}}, // ( 2, 141) + {128, { 0, 0, 0}}, // ( 3, 141) + {128, { 0, 0, 0}}, // ( 4, 141) + {128, { 0, 0, 0}}, // ( 5, 141) + {128, { 0, 0, 0}}, // ( 6, 141) + {128, { 0, 0, 0}}, // ( 7, 141) + {128, { 0, 0, 0}}, // ( 8, 141) + {128, { 0, 0, 0}}, // ( 9, 141) + {128, { 0, 0, 0}}, // ( 10, 141) + {128, { 0, 0, 0}}, // ( 11, 141) + {128, { 0, 0, 0}}, // ( 12, 141) + {128, { 0, 0, 0}}, // ( 13, 141) + {128, { 0, 0, 0}}, // ( 14, 141) + {128, { 0, 0, 0}}, // ( 15, 141) + {128, { 0, 0, 0}}, // ( 16, 141) + {128, { 0, 0, 0}}, // ( 17, 141) + { 85, { 0, 0, 0}}, // ( 18, 141) + { 0, { 0, 0, 0}}, // ( 19, 141) + { 0, { 0, 0, 0}}, // ( 20, 141) + { 0, { 0, 0, 0}}, // ( 21, 141) + { 0, { 0, 0, 0}}, // ( 22, 141) + { 0, { 0, 0, 0}}, // ( 23, 141) + { 0, { 0, 0, 0}}, // ( 24, 141) + { 0, { 0, 0, 0}}, // ( 25, 141) + { 0, { 0, 0, 0}}, // ( 26, 141) + { 0, { 0, 0, 0}}, // ( 27, 141) + { 0, { 0, 0, 0}}, // ( 28, 141) + { 0, { 0, 0, 0}}, // ( 29, 141) + { 0, { 0, 0, 0}}, // ( 30, 141) + { 0, { 0, 0, 0}}, // ( 31, 141) + { 0, { 0, 0, 0}}, // ( 32, 141) + { 0, { 0, 0, 0}}, // ( 33, 141) + { 0, { 0, 0, 0}}, // ( 34, 141) + { 0, { 0, 0, 0}}, // ( 35, 141) + { 0, { 0, 0, 0}}, // ( 36, 141) + { 0, { 0, 0, 0}}, // ( 37, 141) + { 0, { 0, 0, 0}}, // ( 38, 141) + { 0, { 0, 0, 0}}, // ( 39, 141) + { 0, { 0, 0, 0}}, // ( 40, 141) + { 0, { 0, 0, 0}}, // ( 41, 141) + { 0, { 0, 0, 0}}, // ( 42, 141) + { 0, { 0, 0, 0}}, // ( 43, 141) + { 0, { 0, 0, 0}}, // ( 44, 141) + { 0, { 0, 0, 0}}, // ( 45, 141) + { 0, { 0, 0, 0}}, // ( 46, 141) + { 0, { 0, 0, 0}}, // ( 47, 141) + { 0, { 0, 0, 0}}, // ( 48, 141) + { 0, { 0, 0, 0}}, // ( 49, 141) + { 0, { 0, 0, 0}}, // ( 50, 141) + { 0, { 0, 0, 0}}, // ( 51, 141) + { 0, { 0, 0, 0}}, // ( 52, 141) + { 0, { 0, 0, 0}}, // ( 53, 141) + { 0, { 0, 0, 0}}, // ( 54, 141) + { 0, { 0, 0, 0}}, // ( 55, 141) + { 0, { 0, 0, 0}}, // ( 56, 141) + { 0, { 0, 0, 0}}, // ( 57, 141) + { 0, { 0, 0, 0}}, // ( 58, 141) + { 0, { 0, 0, 0}}, // ( 59, 141) + { 0, { 0, 0, 0}}, // ( 60, 141) + { 0, { 0, 0, 0}}, // ( 61, 141) + { 0, { 0, 0, 0}}, // ( 62, 141) + { 0, { 0, 0, 0}}, // ( 63, 141) + { 0, { 0, 0, 0}}, // ( 64, 141) + { 0, { 0, 0, 0}}, // ( 65, 141) + { 0, { 0, 0, 0}}, // ( 66, 141) + { 0, { 0, 0, 0}}, // ( 67, 141) + { 0, { 0, 0, 0}}, // ( 68, 141) + { 0, { 0, 0, 0}}, // ( 69, 141) + { 0, { 0, 0, 0}}, // ( 70, 141) + { 0, { 0, 0, 0}}, // ( 71, 141) + { 0, { 0, 0, 0}}, // ( 72, 141) + { 0, { 0, 0, 0}}, // ( 73, 141) + { 0, { 0, 0, 0}}, // ( 74, 141) + { 0, { 0, 0, 0}}, // ( 75, 141) + { 0, { 0, 0, 0}}, // ( 76, 141) + { 0, { 0, 0, 0}}, // ( 77, 141) + { 0, { 0, 0, 0}}, // ( 78, 141) + { 0, { 0, 0, 0}}, // ( 79, 141) + { 0, { 0, 0, 0}}, // ( 80, 141) + { 0, { 0, 0, 0}}, // ( 81, 141) + { 0, { 0, 0, 0}}, // ( 82, 141) + { 0, { 0, 0, 0}}, // ( 83, 141) + { 0, { 0, 0, 0}}, // ( 84, 141) + { 0, { 0, 0, 0}}, // ( 85, 141) + { 0, { 0, 0, 0}}, // ( 86, 141) + { 0, { 0, 0, 0}}, // ( 87, 141) + { 0, { 0, 0, 0}}, // ( 88, 141) + { 0, { 0, 0, 0}}, // ( 89, 141) + { 0, { 0, 0, 0}}, // ( 90, 141) + { 0, { 0, 0, 0}}, // ( 91, 141) + { 0, { 0, 0, 0}}, // ( 92, 141) + { 0, { 0, 0, 0}}, // ( 93, 141) + { 0, { 0, 0, 0}}, // ( 94, 141) + { 0, { 0, 0, 0}}, // ( 95, 141) + { 0, { 0, 0, 0}}, // ( 96, 141) + { 0, { 0, 0, 0}}, // ( 97, 141) + { 0, { 0, 0, 0}}, // ( 98, 141) + { 0, { 0, 0, 0}}, // ( 99, 141) + { 0, { 0, 0, 0}}, // (100, 141) + { 0, { 0, 0, 0}}, // (101, 141) + { 0, { 0, 0, 0}}, // (102, 141) + { 0, { 0, 0, 0}}, // (103, 141) + { 0, { 0, 0, 0}}, // (104, 141) + { 0, { 0, 0, 0}}, // (105, 141) + { 0, { 0, 0, 0}}, // (106, 141) + { 0, { 0, 0, 0}}, // (107, 141) + { 0, { 0, 0, 0}}, // (108, 141) + { 0, { 0, 0, 0}}, // (109, 141) + { 0, { 0, 0, 0}}, // (110, 141) + { 0, { 0, 0, 0}}, // (111, 141) + { 0, { 0, 0, 0}}, // (112, 141) + { 0, { 0, 0, 0}}, // (113, 141) + { 0, { 0, 0, 0}}, // (114, 141) + { 0, { 0, 0, 0}}, // (115, 141) + { 0, { 0, 0, 0}}, // (116, 141) + { 0, { 0, 0, 0}}, // (117, 141) + { 0, { 0, 0, 0}}, // (118, 141) + { 0, { 0, 0, 0}}, // (119, 141) + { 0, { 0, 0, 0}}, // (120, 141) + { 0, { 0, 0, 0}}, // (121, 141) + { 0, { 0, 0, 0}}, // (122, 141) + { 0, { 0, 0, 0}}, // (123, 141) + { 0, { 0, 0, 0}}, // (124, 141) + { 0, { 0, 0, 0}}, // (125, 141) + { 0, { 0, 0, 0}}, // (126, 141) + { 0, { 0, 0, 0}}, // (127, 141) + { 0, { 0, 0, 0}}, // (128, 141) + { 0, { 0, 0, 0}}, // (129, 141) + { 0, { 0, 0, 0}}, // (130, 141) + { 0, { 0, 0, 0}}, // (131, 141) + { 0, { 0, 0, 0}}, // (132, 141) + { 0, { 0, 0, 0}}, // (133, 141) + { 0, { 0, 0, 0}}, // (134, 141) + { 0, { 0, 0, 0}}, // (135, 141) + { 0, { 0, 0, 0}}, // (136, 141) + { 0, { 0, 0, 0}}, // (137, 141) + { 0, { 0, 0, 0}}, // (138, 141) + { 0, { 0, 0, 0}}, // (139, 141) + { 0, { 0, 0, 0}}, // (140, 141) + { 0, { 0, 0, 0}}, // (141, 141) + { 0, { 0, 0, 0}}, // (142, 141) + { 0, { 0, 0, 0}}, // (143, 141) + { 0, { 0, 0, 0}}, // (144, 141) + { 0, { 0, 0, 0}}, // (145, 141) + { 0, { 0, 0, 0}}, // (146, 141) + { 0, { 0, 0, 0}}, // (147, 141) + { 0, { 0, 0, 0}}, // (148, 141) + { 0, { 0, 0, 0}}, // (149, 141) + { 0, { 0, 0, 0}}, // (150, 141) + { 0, { 0, 0, 0}}, // (151, 141) + { 0, { 0, 0, 0}}, // (152, 141) + { 0, { 0, 0, 0}}, // (153, 141) + { 0, { 0, 0, 0}}, // (154, 141) + { 0, { 0, 0, 0}}, // (155, 141) + { 0, { 0, 0, 0}}, // (156, 141) + { 0, { 0, 0, 0}}, // (157, 141) + { 0, { 0, 0, 0}}, // (158, 141) + { 0, { 0, 0, 0}}, // (159, 141) + { 0, { 0, 0, 0}}, // (160, 141) + { 84, { 0, 0, 0}}, // (161, 141) + {128, { 0, 0, 0}}, // (162, 141) + {128, { 0, 0, 0}}, // (163, 141) + {128, { 0, 0, 0}}, // (164, 141) + {128, { 0, 0, 0}}, // (165, 141) + {128, { 0, 0, 0}}, // (166, 141) + {128, { 0, 0, 0}}, // (167, 141) + {128, { 0, 0, 0}}, // (168, 141) + {128, { 0, 0, 0}}, // (169, 141) + {128, { 0, 0, 0}}, // (170, 141) + {128, { 0, 0, 0}}, // (171, 141) + {128, { 0, 0, 0}}, // (172, 141) + {128, { 0, 0, 0}}, // (173, 141) + {128, { 0, 0, 0}}, // (174, 141) + {128, { 0, 0, 0}}, // (175, 141) + {128, { 0, 0, 0}}, // (176, 141) + {128, { 0, 0, 0}}, // (177, 141) + {128, { 0, 0, 0}}, // (178, 141) + {128, { 0, 0, 0}}, // (179, 141) + {128, { 0, 0, 0}}, // ( 0, 142) + {128, { 0, 0, 0}}, // ( 1, 142) + {128, { 0, 0, 0}}, // ( 2, 142) + {128, { 0, 0, 0}}, // ( 3, 142) + {128, { 0, 0, 0}}, // ( 4, 142) + {128, { 0, 0, 0}}, // ( 5, 142) + {128, { 0, 0, 0}}, // ( 6, 142) + {128, { 0, 0, 0}}, // ( 7, 142) + {128, { 0, 0, 0}}, // ( 8, 142) + {128, { 0, 0, 0}}, // ( 9, 142) + {128, { 0, 0, 0}}, // ( 10, 142) + {128, { 0, 0, 0}}, // ( 11, 142) + {128, { 0, 0, 0}}, // ( 12, 142) + {128, { 0, 0, 0}}, // ( 13, 142) + {128, { 0, 0, 0}}, // ( 14, 142) + {128, { 0, 0, 0}}, // ( 15, 142) + {128, { 0, 0, 0}}, // ( 16, 142) + {128, { 0, 0, 0}}, // ( 17, 142) + {128, { 0, 0, 0}}, // ( 18, 142) + { 49, { 0, 0, 0}}, // ( 19, 142) + { 0, { 0, 0, 0}}, // ( 20, 142) + { 0, { 0, 0, 0}}, // ( 21, 142) + { 0, { 0, 0, 0}}, // ( 22, 142) + { 0, { 0, 0, 0}}, // ( 23, 142) + { 0, { 0, 0, 0}}, // ( 24, 142) + { 0, { 0, 0, 0}}, // ( 25, 142) + { 0, { 0, 0, 0}}, // ( 26, 142) + { 0, { 0, 0, 0}}, // ( 27, 142) + { 0, { 0, 0, 0}}, // ( 28, 142) + { 0, { 0, 0, 0}}, // ( 29, 142) + { 0, { 0, 0, 0}}, // ( 30, 142) + { 0, { 0, 0, 0}}, // ( 31, 142) + { 0, { 0, 0, 0}}, // ( 32, 142) + { 0, { 0, 0, 0}}, // ( 33, 142) + { 0, { 0, 0, 0}}, // ( 34, 142) + { 0, { 0, 0, 0}}, // ( 35, 142) + { 0, { 0, 0, 0}}, // ( 36, 142) + { 0, { 0, 0, 0}}, // ( 37, 142) + { 0, { 0, 0, 0}}, // ( 38, 142) + { 0, { 0, 0, 0}}, // ( 39, 142) + { 0, { 0, 0, 0}}, // ( 40, 142) + { 0, { 0, 0, 0}}, // ( 41, 142) + { 0, { 0, 0, 0}}, // ( 42, 142) + { 0, { 0, 0, 0}}, // ( 43, 142) + { 0, { 0, 0, 0}}, // ( 44, 142) + { 0, { 0, 0, 0}}, // ( 45, 142) + { 0, { 0, 0, 0}}, // ( 46, 142) + { 0, { 0, 0, 0}}, // ( 47, 142) + { 0, { 0, 0, 0}}, // ( 48, 142) + { 0, { 0, 0, 0}}, // ( 49, 142) + { 0, { 0, 0, 0}}, // ( 50, 142) + { 0, { 0, 0, 0}}, // ( 51, 142) + { 0, { 0, 0, 0}}, // ( 52, 142) + { 0, { 0, 0, 0}}, // ( 53, 142) + { 0, { 0, 0, 0}}, // ( 54, 142) + { 0, { 0, 0, 0}}, // ( 55, 142) + { 0, { 0, 0, 0}}, // ( 56, 142) + { 0, { 0, 0, 0}}, // ( 57, 142) + { 0, { 0, 0, 0}}, // ( 58, 142) + { 0, { 0, 0, 0}}, // ( 59, 142) + { 0, { 0, 0, 0}}, // ( 60, 142) + { 0, { 0, 0, 0}}, // ( 61, 142) + { 0, { 0, 0, 0}}, // ( 62, 142) + { 0, { 0, 0, 0}}, // ( 63, 142) + { 0, { 0, 0, 0}}, // ( 64, 142) + { 0, { 0, 0, 0}}, // ( 65, 142) + { 0, { 0, 0, 0}}, // ( 66, 142) + { 0, { 0, 0, 0}}, // ( 67, 142) + { 0, { 0, 0, 0}}, // ( 68, 142) + { 0, { 0, 0, 0}}, // ( 69, 142) + { 0, { 0, 0, 0}}, // ( 70, 142) + { 0, { 0, 0, 0}}, // ( 71, 142) + { 0, { 0, 0, 0}}, // ( 72, 142) + { 0, { 0, 0, 0}}, // ( 73, 142) + { 0, { 0, 0, 0}}, // ( 74, 142) + { 0, { 0, 0, 0}}, // ( 75, 142) + { 0, { 0, 0, 0}}, // ( 76, 142) + { 0, { 0, 0, 0}}, // ( 77, 142) + { 0, { 0, 0, 0}}, // ( 78, 142) + { 0, { 0, 0, 0}}, // ( 79, 142) + { 0, { 0, 0, 0}}, // ( 80, 142) + { 0, { 0, 0, 0}}, // ( 81, 142) + { 0, { 0, 0, 0}}, // ( 82, 142) + { 0, { 0, 0, 0}}, // ( 83, 142) + { 0, { 0, 0, 0}}, // ( 84, 142) + { 0, { 0, 0, 0}}, // ( 85, 142) + { 0, { 0, 0, 0}}, // ( 86, 142) + { 0, { 0, 0, 0}}, // ( 87, 142) + { 0, { 0, 0, 0}}, // ( 88, 142) + { 0, { 0, 0, 0}}, // ( 89, 142) + { 0, { 0, 0, 0}}, // ( 90, 142) + { 0, { 0, 0, 0}}, // ( 91, 142) + { 0, { 0, 0, 0}}, // ( 92, 142) + { 0, { 0, 0, 0}}, // ( 93, 142) + { 0, { 0, 0, 0}}, // ( 94, 142) + { 0, { 0, 0, 0}}, // ( 95, 142) + { 0, { 0, 0, 0}}, // ( 96, 142) + { 0, { 0, 0, 0}}, // ( 97, 142) + { 0, { 0, 0, 0}}, // ( 98, 142) + { 0, { 0, 0, 0}}, // ( 99, 142) + { 0, { 0, 0, 0}}, // (100, 142) + { 0, { 0, 0, 0}}, // (101, 142) + { 0, { 0, 0, 0}}, // (102, 142) + { 0, { 0, 0, 0}}, // (103, 142) + { 0, { 0, 0, 0}}, // (104, 142) + { 0, { 0, 0, 0}}, // (105, 142) + { 0, { 0, 0, 0}}, // (106, 142) + { 0, { 0, 0, 0}}, // (107, 142) + { 0, { 0, 0, 0}}, // (108, 142) + { 0, { 0, 0, 0}}, // (109, 142) + { 0, { 0, 0, 0}}, // (110, 142) + { 0, { 0, 0, 0}}, // (111, 142) + { 0, { 0, 0, 0}}, // (112, 142) + { 0, { 0, 0, 0}}, // (113, 142) + { 0, { 0, 0, 0}}, // (114, 142) + { 0, { 0, 0, 0}}, // (115, 142) + { 0, { 0, 0, 0}}, // (116, 142) + { 0, { 0, 0, 0}}, // (117, 142) + { 0, { 0, 0, 0}}, // (118, 142) + { 0, { 0, 0, 0}}, // (119, 142) + { 0, { 0, 0, 0}}, // (120, 142) + { 0, { 0, 0, 0}}, // (121, 142) + { 0, { 0, 0, 0}}, // (122, 142) + { 0, { 0, 0, 0}}, // (123, 142) + { 0, { 0, 0, 0}}, // (124, 142) + { 0, { 0, 0, 0}}, // (125, 142) + { 0, { 0, 0, 0}}, // (126, 142) + { 0, { 0, 0, 0}}, // (127, 142) + { 0, { 0, 0, 0}}, // (128, 142) + { 0, { 0, 0, 0}}, // (129, 142) + { 0, { 0, 0, 0}}, // (130, 142) + { 0, { 0, 0, 0}}, // (131, 142) + { 0, { 0, 0, 0}}, // (132, 142) + { 0, { 0, 0, 0}}, // (133, 142) + { 0, { 0, 0, 0}}, // (134, 142) + { 0, { 0, 0, 0}}, // (135, 142) + { 0, { 0, 0, 0}}, // (136, 142) + { 0, { 0, 0, 0}}, // (137, 142) + { 0, { 0, 0, 0}}, // (138, 142) + { 0, { 0, 0, 0}}, // (139, 142) + { 0, { 0, 0, 0}}, // (140, 142) + { 0, { 0, 0, 0}}, // (141, 142) + { 0, { 0, 0, 0}}, // (142, 142) + { 0, { 0, 0, 0}}, // (143, 142) + { 0, { 0, 0, 0}}, // (144, 142) + { 0, { 0, 0, 0}}, // (145, 142) + { 0, { 0, 0, 0}}, // (146, 142) + { 0, { 0, 0, 0}}, // (147, 142) + { 0, { 0, 0, 0}}, // (148, 142) + { 0, { 0, 0, 0}}, // (149, 142) + { 0, { 0, 0, 0}}, // (150, 142) + { 0, { 0, 0, 0}}, // (151, 142) + { 0, { 0, 0, 0}}, // (152, 142) + { 0, { 0, 0, 0}}, // (153, 142) + { 0, { 0, 0, 0}}, // (154, 142) + { 0, { 0, 0, 0}}, // (155, 142) + { 0, { 0, 0, 0}}, // (156, 142) + { 0, { 0, 0, 0}}, // (157, 142) + { 0, { 0, 0, 0}}, // (158, 142) + { 0, { 0, 0, 0}}, // (159, 142) + { 49, { 0, 0, 0}}, // (160, 142) + {128, { 0, 0, 0}}, // (161, 142) + {128, { 0, 0, 0}}, // (162, 142) + {128, { 0, 0, 0}}, // (163, 142) + {128, { 0, 0, 0}}, // (164, 142) + {128, { 0, 0, 0}}, // (165, 142) + {128, { 0, 0, 0}}, // (166, 142) + {128, { 0, 0, 0}}, // (167, 142) + {128, { 0, 0, 0}}, // (168, 142) + {128, { 0, 0, 0}}, // (169, 142) + {128, { 0, 0, 0}}, // (170, 142) + {128, { 0, 0, 0}}, // (171, 142) + {128, { 0, 0, 0}}, // (172, 142) + {128, { 0, 0, 0}}, // (173, 142) + {128, { 0, 0, 0}}, // (174, 142) + {128, { 0, 0, 0}}, // (175, 142) + {128, { 0, 0, 0}}, // (176, 142) + {128, { 0, 0, 0}}, // (177, 142) + {128, { 0, 0, 0}}, // (178, 142) + {128, { 0, 0, 0}}, // (179, 142) + {128, { 0, 0, 0}}, // ( 0, 143) + {128, { 0, 0, 0}}, // ( 1, 143) + {128, { 0, 0, 0}}, // ( 2, 143) + {128, { 0, 0, 0}}, // ( 3, 143) + {128, { 0, 0, 0}}, // ( 4, 143) + {128, { 0, 0, 0}}, // ( 5, 143) + {128, { 0, 0, 0}}, // ( 6, 143) + {128, { 0, 0, 0}}, // ( 7, 143) + {128, { 0, 0, 0}}, // ( 8, 143) + {128, { 0, 0, 0}}, // ( 9, 143) + {128, { 0, 0, 0}}, // ( 10, 143) + {128, { 0, 0, 0}}, // ( 11, 143) + {128, { 0, 0, 0}}, // ( 12, 143) + {128, { 0, 0, 0}}, // ( 13, 143) + {128, { 0, 0, 0}}, // ( 14, 143) + {128, { 0, 0, 0}}, // ( 15, 143) + {128, { 0, 0, 0}}, // ( 16, 143) + {128, { 0, 0, 0}}, // ( 17, 143) + {128, { 0, 0, 0}}, // ( 18, 143) + {123, { 0, 0, 0}}, // ( 19, 143) + { 24, { 0, 0, 0}}, // ( 20, 143) + { 0, { 0, 0, 0}}, // ( 21, 143) + { 0, { 0, 0, 0}}, // ( 22, 143) + { 0, { 0, 0, 0}}, // ( 23, 143) + { 0, { 0, 0, 0}}, // ( 24, 143) + { 0, { 0, 0, 0}}, // ( 25, 143) + { 0, { 0, 0, 0}}, // ( 26, 143) + { 0, { 0, 0, 0}}, // ( 27, 143) + { 0, { 0, 0, 0}}, // ( 28, 143) + { 0, { 0, 0, 0}}, // ( 29, 143) + { 0, { 0, 0, 0}}, // ( 30, 143) + { 0, { 0, 0, 0}}, // ( 31, 143) + { 0, { 0, 0, 0}}, // ( 32, 143) + { 0, { 0, 0, 0}}, // ( 33, 143) + { 0, { 0, 0, 0}}, // ( 34, 143) + { 0, { 0, 0, 0}}, // ( 35, 143) + { 0, { 0, 0, 0}}, // ( 36, 143) + { 0, { 0, 0, 0}}, // ( 37, 143) + { 0, { 0, 0, 0}}, // ( 38, 143) + { 0, { 0, 0, 0}}, // ( 39, 143) + { 0, { 0, 0, 0}}, // ( 40, 143) + { 0, { 0, 0, 0}}, // ( 41, 143) + { 0, { 0, 0, 0}}, // ( 42, 143) + { 0, { 0, 0, 0}}, // ( 43, 143) + { 0, { 0, 0, 0}}, // ( 44, 143) + { 0, { 0, 0, 0}}, // ( 45, 143) + { 0, { 0, 0, 0}}, // ( 46, 143) + { 0, { 0, 0, 0}}, // ( 47, 143) + { 0, { 0, 0, 0}}, // ( 48, 143) + { 0, { 0, 0, 0}}, // ( 49, 143) + { 0, { 0, 0, 0}}, // ( 50, 143) + { 0, { 0, 0, 0}}, // ( 51, 143) + { 0, { 0, 0, 0}}, // ( 52, 143) + { 0, { 0, 0, 0}}, // ( 53, 143) + { 0, { 0, 0, 0}}, // ( 54, 143) + { 0, { 0, 0, 0}}, // ( 55, 143) + { 0, { 0, 0, 0}}, // ( 56, 143) + { 0, { 0, 0, 0}}, // ( 57, 143) + { 0, { 0, 0, 0}}, // ( 58, 143) + { 0, { 0, 0, 0}}, // ( 59, 143) + { 0, { 0, 0, 0}}, // ( 60, 143) + { 0, { 0, 0, 0}}, // ( 61, 143) + { 0, { 0, 0, 0}}, // ( 62, 143) + { 0, { 0, 0, 0}}, // ( 63, 143) + { 0, { 0, 0, 0}}, // ( 64, 143) + { 0, { 0, 0, 0}}, // ( 65, 143) + { 0, { 0, 0, 0}}, // ( 66, 143) + { 0, { 0, 0, 0}}, // ( 67, 143) + { 0, { 0, 0, 0}}, // ( 68, 143) + { 0, { 0, 0, 0}}, // ( 69, 143) + { 0, { 0, 0, 0}}, // ( 70, 143) + { 0, { 0, 0, 0}}, // ( 71, 143) + { 0, { 0, 0, 0}}, // ( 72, 143) + { 0, { 0, 0, 0}}, // ( 73, 143) + { 0, { 0, 0, 0}}, // ( 74, 143) + { 0, { 0, 0, 0}}, // ( 75, 143) + { 0, { 0, 0, 0}}, // ( 76, 143) + { 0, { 0, 0, 0}}, // ( 77, 143) + { 0, { 0, 0, 0}}, // ( 78, 143) + { 0, { 0, 0, 0}}, // ( 79, 143) + { 0, { 0, 0, 0}}, // ( 80, 143) + { 0, { 0, 0, 0}}, // ( 81, 143) + { 0, { 0, 0, 0}}, // ( 82, 143) + { 0, { 0, 0, 0}}, // ( 83, 143) + { 0, { 0, 0, 0}}, // ( 84, 143) + { 0, { 0, 0, 0}}, // ( 85, 143) + { 0, { 0, 0, 0}}, // ( 86, 143) + { 0, { 0, 0, 0}}, // ( 87, 143) + { 0, { 0, 0, 0}}, // ( 88, 143) + { 0, { 0, 0, 0}}, // ( 89, 143) + { 0, { 0, 0, 0}}, // ( 90, 143) + { 0, { 0, 0, 0}}, // ( 91, 143) + { 0, { 0, 0, 0}}, // ( 92, 143) + { 0, { 0, 0, 0}}, // ( 93, 143) + { 0, { 0, 0, 0}}, // ( 94, 143) + { 0, { 0, 0, 0}}, // ( 95, 143) + { 0, { 0, 0, 0}}, // ( 96, 143) + { 0, { 0, 0, 0}}, // ( 97, 143) + { 0, { 0, 0, 0}}, // ( 98, 143) + { 0, { 0, 0, 0}}, // ( 99, 143) + { 0, { 0, 0, 0}}, // (100, 143) + { 0, { 0, 0, 0}}, // (101, 143) + { 0, { 0, 0, 0}}, // (102, 143) + { 0, { 0, 0, 0}}, // (103, 143) + { 0, { 0, 0, 0}}, // (104, 143) + { 0, { 0, 0, 0}}, // (105, 143) + { 0, { 0, 0, 0}}, // (106, 143) + { 0, { 0, 0, 0}}, // (107, 143) + { 0, { 0, 0, 0}}, // (108, 143) + { 0, { 0, 0, 0}}, // (109, 143) + { 0, { 0, 0, 0}}, // (110, 143) + { 0, { 0, 0, 0}}, // (111, 143) + { 0, { 0, 0, 0}}, // (112, 143) + { 0, { 0, 0, 0}}, // (113, 143) + { 0, { 0, 0, 0}}, // (114, 143) + { 0, { 0, 0, 0}}, // (115, 143) + { 0, { 0, 0, 0}}, // (116, 143) + { 0, { 0, 0, 0}}, // (117, 143) + { 0, { 0, 0, 0}}, // (118, 143) + { 0, { 0, 0, 0}}, // (119, 143) + { 0, { 0, 0, 0}}, // (120, 143) + { 0, { 0, 0, 0}}, // (121, 143) + { 0, { 0, 0, 0}}, // (122, 143) + { 0, { 0, 0, 0}}, // (123, 143) + { 0, { 0, 0, 0}}, // (124, 143) + { 0, { 0, 0, 0}}, // (125, 143) + { 0, { 0, 0, 0}}, // (126, 143) + { 0, { 0, 0, 0}}, // (127, 143) + { 0, { 0, 0, 0}}, // (128, 143) + { 0, { 0, 0, 0}}, // (129, 143) + { 0, { 0, 0, 0}}, // (130, 143) + { 0, { 0, 0, 0}}, // (131, 143) + { 0, { 0, 0, 0}}, // (132, 143) + { 0, { 0, 0, 0}}, // (133, 143) + { 0, { 0, 0, 0}}, // (134, 143) + { 0, { 0, 0, 0}}, // (135, 143) + { 0, { 0, 0, 0}}, // (136, 143) + { 0, { 0, 0, 0}}, // (137, 143) + { 0, { 0, 0, 0}}, // (138, 143) + { 0, { 0, 0, 0}}, // (139, 143) + { 0, { 0, 0, 0}}, // (140, 143) + { 0, { 0, 0, 0}}, // (141, 143) + { 0, { 0, 0, 0}}, // (142, 143) + { 0, { 0, 0, 0}}, // (143, 143) + { 0, { 0, 0, 0}}, // (144, 143) + { 0, { 0, 0, 0}}, // (145, 143) + { 0, { 0, 0, 0}}, // (146, 143) + { 0, { 0, 0, 0}}, // (147, 143) + { 0, { 0, 0, 0}}, // (148, 143) + { 0, { 0, 0, 0}}, // (149, 143) + { 0, { 0, 0, 0}}, // (150, 143) + { 0, { 0, 0, 0}}, // (151, 143) + { 0, { 0, 0, 0}}, // (152, 143) + { 0, { 0, 0, 0}}, // (153, 143) + { 0, { 0, 0, 0}}, // (154, 143) + { 0, { 0, 0, 0}}, // (155, 143) + { 0, { 0, 0, 0}}, // (156, 143) + { 0, { 0, 0, 0}}, // (157, 143) + { 0, { 0, 0, 0}}, // (158, 143) + { 24, { 0, 0, 0}}, // (159, 143) + {123, { 0, 0, 0}}, // (160, 143) + {128, { 0, 0, 0}}, // (161, 143) + {128, { 0, 0, 0}}, // (162, 143) + {128, { 0, 0, 0}}, // (163, 143) + {128, { 0, 0, 0}}, // (164, 143) + {128, { 0, 0, 0}}, // (165, 143) + {128, { 0, 0, 0}}, // (166, 143) + {128, { 0, 0, 0}}, // (167, 143) + {128, { 0, 0, 0}}, // (168, 143) + {128, { 0, 0, 0}}, // (169, 143) + {128, { 0, 0, 0}}, // (170, 143) + {128, { 0, 0, 0}}, // (171, 143) + {128, { 0, 0, 0}}, // (172, 143) + {128, { 0, 0, 0}}, // (173, 143) + {128, { 0, 0, 0}}, // (174, 143) + {128, { 0, 0, 0}}, // (175, 143) + {128, { 0, 0, 0}}, // (176, 143) + {128, { 0, 0, 0}}, // (177, 143) + {128, { 0, 0, 0}}, // (178, 143) + {128, { 0, 0, 0}}, // (179, 143) + {128, { 0, 0, 0}}, // ( 0, 144) + {128, { 0, 0, 0}}, // ( 1, 144) + {128, { 0, 0, 0}}, // ( 2, 144) + {128, { 0, 0, 0}}, // ( 3, 144) + {128, { 0, 0, 0}}, // ( 4, 144) + {128, { 0, 0, 0}}, // ( 5, 144) + {128, { 0, 0, 0}}, // ( 6, 144) + {128, { 0, 0, 0}}, // ( 7, 144) + {128, { 0, 0, 0}}, // ( 8, 144) + {128, { 0, 0, 0}}, // ( 9, 144) + {128, { 0, 0, 0}}, // ( 10, 144) + {128, { 0, 0, 0}}, // ( 11, 144) + {128, { 0, 0, 0}}, // ( 12, 144) + {128, { 0, 0, 0}}, // ( 13, 144) + {128, { 0, 0, 0}}, // ( 14, 144) + {128, { 0, 0, 0}}, // ( 15, 144) + {128, { 0, 0, 0}}, // ( 16, 144) + {128, { 0, 0, 0}}, // ( 17, 144) + {128, { 0, 0, 0}}, // ( 18, 144) + {128, { 0, 0, 0}}, // ( 19, 144) + {111, { 0, 0, 0}}, // ( 20, 144) + { 9, { 0, 0, 0}}, // ( 21, 144) + { 0, { 0, 0, 0}}, // ( 22, 144) + { 0, { 0, 0, 0}}, // ( 23, 144) + { 0, { 0, 0, 0}}, // ( 24, 144) + { 0, { 0, 0, 0}}, // ( 25, 144) + { 0, { 0, 0, 0}}, // ( 26, 144) + { 0, { 0, 0, 0}}, // ( 27, 144) + { 0, { 0, 0, 0}}, // ( 28, 144) + { 0, { 0, 0, 0}}, // ( 29, 144) + { 0, { 0, 0, 0}}, // ( 30, 144) + { 0, { 0, 0, 0}}, // ( 31, 144) + { 0, { 0, 0, 0}}, // ( 32, 144) + { 0, { 0, 0, 0}}, // ( 33, 144) + { 0, { 0, 0, 0}}, // ( 34, 144) + { 0, { 0, 0, 0}}, // ( 35, 144) + { 0, { 0, 0, 0}}, // ( 36, 144) + { 0, { 0, 0, 0}}, // ( 37, 144) + { 0, { 0, 0, 0}}, // ( 38, 144) + { 0, { 0, 0, 0}}, // ( 39, 144) + { 0, { 0, 0, 0}}, // ( 40, 144) + { 0, { 0, 0, 0}}, // ( 41, 144) + { 0, { 0, 0, 0}}, // ( 42, 144) + { 0, { 0, 0, 0}}, // ( 43, 144) + { 0, { 0, 0, 0}}, // ( 44, 144) + { 0, { 0, 0, 0}}, // ( 45, 144) + { 0, { 0, 0, 0}}, // ( 46, 144) + { 0, { 0, 0, 0}}, // ( 47, 144) + { 0, { 0, 0, 0}}, // ( 48, 144) + { 0, { 0, 0, 0}}, // ( 49, 144) + { 0, { 0, 0, 0}}, // ( 50, 144) + { 0, { 0, 0, 0}}, // ( 51, 144) + { 0, { 0, 0, 0}}, // ( 52, 144) + { 0, { 0, 0, 0}}, // ( 53, 144) + { 0, { 0, 0, 0}}, // ( 54, 144) + { 0, { 0, 0, 0}}, // ( 55, 144) + { 0, { 0, 0, 0}}, // ( 56, 144) + { 0, { 0, 0, 0}}, // ( 57, 144) + { 0, { 0, 0, 0}}, // ( 58, 144) + { 0, { 0, 0, 0}}, // ( 59, 144) + { 0, { 0, 0, 0}}, // ( 60, 144) + { 0, { 0, 0, 0}}, // ( 61, 144) + { 0, { 0, 0, 0}}, // ( 62, 144) + { 0, { 0, 0, 0}}, // ( 63, 144) + { 0, { 0, 0, 0}}, // ( 64, 144) + { 0, { 0, 0, 0}}, // ( 65, 144) + { 0, { 0, 0, 0}}, // ( 66, 144) + { 0, { 0, 0, 0}}, // ( 67, 144) + { 0, { 0, 0, 0}}, // ( 68, 144) + { 0, { 0, 0, 0}}, // ( 69, 144) + { 0, { 0, 0, 0}}, // ( 70, 144) + { 0, { 0, 0, 0}}, // ( 71, 144) + { 0, { 0, 0, 0}}, // ( 72, 144) + { 0, { 0, 0, 0}}, // ( 73, 144) + { 0, { 0, 0, 0}}, // ( 74, 144) + { 0, { 0, 0, 0}}, // ( 75, 144) + { 0, { 0, 0, 0}}, // ( 76, 144) + { 0, { 0, 0, 0}}, // ( 77, 144) + { 0, { 0, 0, 0}}, // ( 78, 144) + { 0, { 0, 0, 0}}, // ( 79, 144) + { 0, { 0, 0, 0}}, // ( 80, 144) + { 0, { 0, 0, 0}}, // ( 81, 144) + { 0, { 0, 0, 0}}, // ( 82, 144) + { 0, { 0, 0, 0}}, // ( 83, 144) + { 0, { 0, 0, 0}}, // ( 84, 144) + { 0, { 0, 0, 0}}, // ( 85, 144) + { 0, { 0, 0, 0}}, // ( 86, 144) + { 0, { 0, 0, 0}}, // ( 87, 144) + { 0, { 0, 0, 0}}, // ( 88, 144) + { 0, { 0, 0, 0}}, // ( 89, 144) + { 0, { 0, 0, 0}}, // ( 90, 144) + { 0, { 0, 0, 0}}, // ( 91, 144) + { 0, { 0, 0, 0}}, // ( 92, 144) + { 0, { 0, 0, 0}}, // ( 93, 144) + { 0, { 0, 0, 0}}, // ( 94, 144) + { 0, { 0, 0, 0}}, // ( 95, 144) + { 0, { 0, 0, 0}}, // ( 96, 144) + { 0, { 0, 0, 0}}, // ( 97, 144) + { 0, { 0, 0, 0}}, // ( 98, 144) + { 0, { 0, 0, 0}}, // ( 99, 144) + { 0, { 0, 0, 0}}, // (100, 144) + { 0, { 0, 0, 0}}, // (101, 144) + { 0, { 0, 0, 0}}, // (102, 144) + { 0, { 0, 0, 0}}, // (103, 144) + { 0, { 0, 0, 0}}, // (104, 144) + { 0, { 0, 0, 0}}, // (105, 144) + { 0, { 0, 0, 0}}, // (106, 144) + { 0, { 0, 0, 0}}, // (107, 144) + { 0, { 0, 0, 0}}, // (108, 144) + { 0, { 0, 0, 0}}, // (109, 144) + { 0, { 0, 0, 0}}, // (110, 144) + { 0, { 0, 0, 0}}, // (111, 144) + { 0, { 0, 0, 0}}, // (112, 144) + { 0, { 0, 0, 0}}, // (113, 144) + { 0, { 0, 0, 0}}, // (114, 144) + { 0, { 0, 0, 0}}, // (115, 144) + { 0, { 0, 0, 0}}, // (116, 144) + { 0, { 0, 0, 0}}, // (117, 144) + { 0, { 0, 0, 0}}, // (118, 144) + { 0, { 0, 0, 0}}, // (119, 144) + { 0, { 0, 0, 0}}, // (120, 144) + { 0, { 0, 0, 0}}, // (121, 144) + { 0, { 0, 0, 0}}, // (122, 144) + { 0, { 0, 0, 0}}, // (123, 144) + { 0, { 0, 0, 0}}, // (124, 144) + { 0, { 0, 0, 0}}, // (125, 144) + { 0, { 0, 0, 0}}, // (126, 144) + { 0, { 0, 0, 0}}, // (127, 144) + { 0, { 0, 0, 0}}, // (128, 144) + { 0, { 0, 0, 0}}, // (129, 144) + { 0, { 0, 0, 0}}, // (130, 144) + { 0, { 0, 0, 0}}, // (131, 144) + { 0, { 0, 0, 0}}, // (132, 144) + { 0, { 0, 0, 0}}, // (133, 144) + { 0, { 0, 0, 0}}, // (134, 144) + { 0, { 0, 0, 0}}, // (135, 144) + { 0, { 0, 0, 0}}, // (136, 144) + { 0, { 0, 0, 0}}, // (137, 144) + { 0, { 0, 0, 0}}, // (138, 144) + { 0, { 0, 0, 0}}, // (139, 144) + { 0, { 0, 0, 0}}, // (140, 144) + { 0, { 0, 0, 0}}, // (141, 144) + { 0, { 0, 0, 0}}, // (142, 144) + { 0, { 0, 0, 0}}, // (143, 144) + { 0, { 0, 0, 0}}, // (144, 144) + { 0, { 0, 0, 0}}, // (145, 144) + { 0, { 0, 0, 0}}, // (146, 144) + { 0, { 0, 0, 0}}, // (147, 144) + { 0, { 0, 0, 0}}, // (148, 144) + { 0, { 0, 0, 0}}, // (149, 144) + { 0, { 0, 0, 0}}, // (150, 144) + { 0, { 0, 0, 0}}, // (151, 144) + { 0, { 0, 0, 0}}, // (152, 144) + { 0, { 0, 0, 0}}, // (153, 144) + { 0, { 0, 0, 0}}, // (154, 144) + { 0, { 0, 0, 0}}, // (155, 144) + { 0, { 0, 0, 0}}, // (156, 144) + { 0, { 0, 0, 0}}, // (157, 144) + { 9, { 0, 0, 0}}, // (158, 144) + {111, { 0, 0, 0}}, // (159, 144) + {128, { 0, 0, 0}}, // (160, 144) + {128, { 0, 0, 0}}, // (161, 144) + {128, { 0, 0, 0}}, // (162, 144) + {128, { 0, 0, 0}}, // (163, 144) + {128, { 0, 0, 0}}, // (164, 144) + {128, { 0, 0, 0}}, // (165, 144) + {128, { 0, 0, 0}}, // (166, 144) + {128, { 0, 0, 0}}, // (167, 144) + {128, { 0, 0, 0}}, // (168, 144) + {128, { 0, 0, 0}}, // (169, 144) + {128, { 0, 0, 0}}, // (170, 144) + {128, { 0, 0, 0}}, // (171, 144) + {128, { 0, 0, 0}}, // (172, 144) + {128, { 0, 0, 0}}, // (173, 144) + {128, { 0, 0, 0}}, // (174, 144) + {128, { 0, 0, 0}}, // (175, 144) + {128, { 0, 0, 0}}, // (176, 144) + {128, { 0, 0, 0}}, // (177, 144) + {128, { 0, 0, 0}}, // (178, 144) + {128, { 0, 0, 0}}, // (179, 144) + {128, { 0, 0, 0}}, // ( 0, 145) + {128, { 0, 0, 0}}, // ( 1, 145) + {128, { 0, 0, 0}}, // ( 2, 145) + {128, { 0, 0, 0}}, // ( 3, 145) + {128, { 0, 0, 0}}, // ( 4, 145) + {128, { 0, 0, 0}}, // ( 5, 145) + {128, { 0, 0, 0}}, // ( 6, 145) + {128, { 0, 0, 0}}, // ( 7, 145) + {128, { 0, 0, 0}}, // ( 8, 145) + {128, { 0, 0, 0}}, // ( 9, 145) + {128, { 0, 0, 0}}, // ( 10, 145) + {128, { 0, 0, 0}}, // ( 11, 145) + {128, { 0, 0, 0}}, // ( 12, 145) + {128, { 0, 0, 0}}, // ( 13, 145) + {128, { 0, 0, 0}}, // ( 14, 145) + {128, { 0, 0, 0}}, // ( 15, 145) + {128, { 0, 0, 0}}, // ( 16, 145) + {128, { 0, 0, 0}}, // ( 17, 145) + {128, { 0, 0, 0}}, // ( 18, 145) + {128, { 0, 0, 0}}, // ( 19, 145) + {128, { 0, 0, 0}}, // ( 20, 145) + { 91, { 0, 0, 0}}, // ( 21, 145) + { 2, { 0, 0, 0}}, // ( 22, 145) + { 0, { 0, 0, 0}}, // ( 23, 145) + { 0, { 0, 0, 0}}, // ( 24, 145) + { 0, { 0, 0, 0}}, // ( 25, 145) + { 0, { 0, 0, 0}}, // ( 26, 145) + { 0, { 0, 0, 0}}, // ( 27, 145) + { 0, { 0, 0, 0}}, // ( 28, 145) + { 0, { 0, 0, 0}}, // ( 29, 145) + { 0, { 0, 0, 0}}, // ( 30, 145) + { 0, { 0, 0, 0}}, // ( 31, 145) + { 0, { 0, 0, 0}}, // ( 32, 145) + { 0, { 0, 0, 0}}, // ( 33, 145) + { 0, { 0, 0, 0}}, // ( 34, 145) + { 0, { 0, 0, 0}}, // ( 35, 145) + { 0, { 0, 0, 0}}, // ( 36, 145) + { 0, { 0, 0, 0}}, // ( 37, 145) + { 0, { 0, 0, 0}}, // ( 38, 145) + { 0, { 0, 0, 0}}, // ( 39, 145) + { 0, { 0, 0, 0}}, // ( 40, 145) + { 0, { 0, 0, 0}}, // ( 41, 145) + { 0, { 0, 0, 0}}, // ( 42, 145) + { 0, { 0, 0, 0}}, // ( 43, 145) + { 0, { 0, 0, 0}}, // ( 44, 145) + { 0, { 0, 0, 0}}, // ( 45, 145) + { 0, { 0, 0, 0}}, // ( 46, 145) + { 0, { 0, 0, 0}}, // ( 47, 145) + { 0, { 0, 0, 0}}, // ( 48, 145) + { 0, { 0, 0, 0}}, // ( 49, 145) + { 0, { 0, 0, 0}}, // ( 50, 145) + { 0, { 0, 0, 0}}, // ( 51, 145) + { 0, { 0, 0, 0}}, // ( 52, 145) + { 0, { 0, 0, 0}}, // ( 53, 145) + { 0, { 0, 0, 0}}, // ( 54, 145) + { 0, { 0, 0, 0}}, // ( 55, 145) + { 0, { 0, 0, 0}}, // ( 56, 145) + { 0, { 0, 0, 0}}, // ( 57, 145) + { 0, { 0, 0, 0}}, // ( 58, 145) + { 0, { 0, 0, 0}}, // ( 59, 145) + { 0, { 0, 0, 0}}, // ( 60, 145) + { 0, { 0, 0, 0}}, // ( 61, 145) + { 0, { 0, 0, 0}}, // ( 62, 145) + { 0, { 0, 0, 0}}, // ( 63, 145) + { 0, { 0, 0, 0}}, // ( 64, 145) + { 0, { 0, 0, 0}}, // ( 65, 145) + { 0, { 0, 0, 0}}, // ( 66, 145) + { 0, { 0, 0, 0}}, // ( 67, 145) + { 0, { 0, 0, 0}}, // ( 68, 145) + { 0, { 0, 0, 0}}, // ( 69, 145) + { 0, { 0, 0, 0}}, // ( 70, 145) + { 0, { 0, 0, 0}}, // ( 71, 145) + { 0, { 0, 0, 0}}, // ( 72, 145) + { 0, { 0, 0, 0}}, // ( 73, 145) + { 0, { 0, 0, 0}}, // ( 74, 145) + { 0, { 0, 0, 0}}, // ( 75, 145) + { 0, { 0, 0, 0}}, // ( 76, 145) + { 0, { 0, 0, 0}}, // ( 77, 145) + { 0, { 0, 0, 0}}, // ( 78, 145) + { 0, { 0, 0, 0}}, // ( 79, 145) + { 0, { 0, 0, 0}}, // ( 80, 145) + { 0, { 0, 0, 0}}, // ( 81, 145) + { 0, { 0, 0, 0}}, // ( 82, 145) + { 0, { 0, 0, 0}}, // ( 83, 145) + { 0, { 0, 0, 0}}, // ( 84, 145) + { 0, { 0, 0, 0}}, // ( 85, 145) + { 0, { 0, 0, 0}}, // ( 86, 145) + { 0, { 0, 0, 0}}, // ( 87, 145) + { 0, { 0, 0, 0}}, // ( 88, 145) + { 0, { 0, 0, 0}}, // ( 89, 145) + { 0, { 0, 0, 0}}, // ( 90, 145) + { 0, { 0, 0, 0}}, // ( 91, 145) + { 0, { 0, 0, 0}}, // ( 92, 145) + { 0, { 0, 0, 0}}, // ( 93, 145) + { 0, { 0, 0, 0}}, // ( 94, 145) + { 0, { 0, 0, 0}}, // ( 95, 145) + { 0, { 0, 0, 0}}, // ( 96, 145) + { 0, { 0, 0, 0}}, // ( 97, 145) + { 0, { 0, 0, 0}}, // ( 98, 145) + { 0, { 0, 0, 0}}, // ( 99, 145) + { 0, { 0, 0, 0}}, // (100, 145) + { 0, { 0, 0, 0}}, // (101, 145) + { 0, { 0, 0, 0}}, // (102, 145) + { 0, { 0, 0, 0}}, // (103, 145) + { 0, { 0, 0, 0}}, // (104, 145) + { 0, { 0, 0, 0}}, // (105, 145) + { 0, { 0, 0, 0}}, // (106, 145) + { 0, { 0, 0, 0}}, // (107, 145) + { 0, { 0, 0, 0}}, // (108, 145) + { 0, { 0, 0, 0}}, // (109, 145) + { 0, { 0, 0, 0}}, // (110, 145) + { 0, { 0, 0, 0}}, // (111, 145) + { 0, { 0, 0, 0}}, // (112, 145) + { 0, { 0, 0, 0}}, // (113, 145) + { 0, { 0, 0, 0}}, // (114, 145) + { 0, { 0, 0, 0}}, // (115, 145) + { 0, { 0, 0, 0}}, // (116, 145) + { 0, { 0, 0, 0}}, // (117, 145) + { 0, { 0, 0, 0}}, // (118, 145) + { 0, { 0, 0, 0}}, // (119, 145) + { 0, { 0, 0, 0}}, // (120, 145) + { 0, { 0, 0, 0}}, // (121, 145) + { 0, { 0, 0, 0}}, // (122, 145) + { 0, { 0, 0, 0}}, // (123, 145) + { 0, { 0, 0, 0}}, // (124, 145) + { 0, { 0, 0, 0}}, // (125, 145) + { 0, { 0, 0, 0}}, // (126, 145) + { 0, { 0, 0, 0}}, // (127, 145) + { 0, { 0, 0, 0}}, // (128, 145) + { 0, { 0, 0, 0}}, // (129, 145) + { 0, { 0, 0, 0}}, // (130, 145) + { 0, { 0, 0, 0}}, // (131, 145) + { 0, { 0, 0, 0}}, // (132, 145) + { 0, { 0, 0, 0}}, // (133, 145) + { 0, { 0, 0, 0}}, // (134, 145) + { 0, { 0, 0, 0}}, // (135, 145) + { 0, { 0, 0, 0}}, // (136, 145) + { 0, { 0, 0, 0}}, // (137, 145) + { 0, { 0, 0, 0}}, // (138, 145) + { 0, { 0, 0, 0}}, // (139, 145) + { 0, { 0, 0, 0}}, // (140, 145) + { 0, { 0, 0, 0}}, // (141, 145) + { 0, { 0, 0, 0}}, // (142, 145) + { 0, { 0, 0, 0}}, // (143, 145) + { 0, { 0, 0, 0}}, // (144, 145) + { 0, { 0, 0, 0}}, // (145, 145) + { 0, { 0, 0, 0}}, // (146, 145) + { 0, { 0, 0, 0}}, // (147, 145) + { 0, { 0, 0, 0}}, // (148, 145) + { 0, { 0, 0, 0}}, // (149, 145) + { 0, { 0, 0, 0}}, // (150, 145) + { 0, { 0, 0, 0}}, // (151, 145) + { 0, { 0, 0, 0}}, // (152, 145) + { 0, { 0, 0, 0}}, // (153, 145) + { 0, { 0, 0, 0}}, // (154, 145) + { 0, { 0, 0, 0}}, // (155, 145) + { 0, { 0, 0, 0}}, // (156, 145) + { 1, { 0, 0, 0}}, // (157, 145) + { 91, { 0, 0, 0}}, // (158, 145) + {128, { 0, 0, 0}}, // (159, 145) + {128, { 0, 0, 0}}, // (160, 145) + {128, { 0, 0, 0}}, // (161, 145) + {128, { 0, 0, 0}}, // (162, 145) + {128, { 0, 0, 0}}, // (163, 145) + {128, { 0, 0, 0}}, // (164, 145) + {128, { 0, 0, 0}}, // (165, 145) + {128, { 0, 0, 0}}, // (166, 145) + {128, { 0, 0, 0}}, // (167, 145) + {128, { 0, 0, 0}}, // (168, 145) + {128, { 0, 0, 0}}, // (169, 145) + {128, { 0, 0, 0}}, // (170, 145) + {128, { 0, 0, 0}}, // (171, 145) + {128, { 0, 0, 0}}, // (172, 145) + {128, { 0, 0, 0}}, // (173, 145) + {128, { 0, 0, 0}}, // (174, 145) + {128, { 0, 0, 0}}, // (175, 145) + {128, { 0, 0, 0}}, // (176, 145) + {128, { 0, 0, 0}}, // (177, 145) + {128, { 0, 0, 0}}, // (178, 145) + {128, { 0, 0, 0}}, // (179, 145) + {128, { 0, 0, 0}}, // ( 0, 146) + {128, { 0, 0, 0}}, // ( 1, 146) + {128, { 0, 0, 0}}, // ( 2, 146) + {128, { 0, 0, 0}}, // ( 3, 146) + {128, { 0, 0, 0}}, // ( 4, 146) + {128, { 0, 0, 0}}, // ( 5, 146) + {128, { 0, 0, 0}}, // ( 6, 146) + {128, { 0, 0, 0}}, // ( 7, 146) + {128, { 0, 0, 0}}, // ( 8, 146) + {128, { 0, 0, 0}}, // ( 9, 146) + {128, { 0, 0, 0}}, // ( 10, 146) + {128, { 0, 0, 0}}, // ( 11, 146) + {128, { 0, 0, 0}}, // ( 12, 146) + {128, { 0, 0, 0}}, // ( 13, 146) + {128, { 0, 0, 0}}, // ( 14, 146) + {128, { 0, 0, 0}}, // ( 15, 146) + {128, { 0, 0, 0}}, // ( 16, 146) + {128, { 0, 0, 0}}, // ( 17, 146) + {128, { 0, 0, 0}}, // ( 18, 146) + {128, { 0, 0, 0}}, // ( 19, 146) + {128, { 0, 0, 0}}, // ( 20, 146) + {128, { 0, 0, 0}}, // ( 21, 146) + { 68, { 0, 0, 0}}, // ( 22, 146) + { 0, { 0, 0, 0}}, // ( 23, 146) + { 0, { 0, 0, 0}}, // ( 24, 146) + { 0, { 0, 0, 0}}, // ( 25, 146) + { 0, { 0, 0, 0}}, // ( 26, 146) + { 0, { 0, 0, 0}}, // ( 27, 146) + { 0, { 0, 0, 0}}, // ( 28, 146) + { 0, { 0, 0, 0}}, // ( 29, 146) + { 0, { 0, 0, 0}}, // ( 30, 146) + { 0, { 0, 0, 0}}, // ( 31, 146) + { 0, { 0, 0, 0}}, // ( 32, 146) + { 0, { 0, 0, 0}}, // ( 33, 146) + { 0, { 0, 0, 0}}, // ( 34, 146) + { 0, { 0, 0, 0}}, // ( 35, 146) + { 0, { 0, 0, 0}}, // ( 36, 146) + { 0, { 0, 0, 0}}, // ( 37, 146) + { 0, { 0, 0, 0}}, // ( 38, 146) + { 0, { 0, 0, 0}}, // ( 39, 146) + { 0, { 0, 0, 0}}, // ( 40, 146) + { 0, { 0, 0, 0}}, // ( 41, 146) + { 0, { 0, 0, 0}}, // ( 42, 146) + { 0, { 0, 0, 0}}, // ( 43, 146) + { 0, { 0, 0, 0}}, // ( 44, 146) + { 0, { 0, 0, 0}}, // ( 45, 146) + { 0, { 0, 0, 0}}, // ( 46, 146) + { 0, { 0, 0, 0}}, // ( 47, 146) + { 0, { 0, 0, 0}}, // ( 48, 146) + { 0, { 0, 0, 0}}, // ( 49, 146) + { 0, { 0, 0, 0}}, // ( 50, 146) + { 0, { 0, 0, 0}}, // ( 51, 146) + { 0, { 0, 0, 0}}, // ( 52, 146) + { 0, { 0, 0, 0}}, // ( 53, 146) + { 0, { 0, 0, 0}}, // ( 54, 146) + { 0, { 0, 0, 0}}, // ( 55, 146) + { 0, { 0, 0, 0}}, // ( 56, 146) + { 0, { 0, 0, 0}}, // ( 57, 146) + { 0, { 0, 0, 0}}, // ( 58, 146) + { 0, { 0, 0, 0}}, // ( 59, 146) + { 0, { 0, 0, 0}}, // ( 60, 146) + { 0, { 0, 0, 0}}, // ( 61, 146) + { 0, { 0, 0, 0}}, // ( 62, 146) + { 0, { 0, 0, 0}}, // ( 63, 146) + { 0, { 0, 0, 0}}, // ( 64, 146) + { 0, { 0, 0, 0}}, // ( 65, 146) + { 0, { 0, 0, 0}}, // ( 66, 146) + { 0, { 0, 0, 0}}, // ( 67, 146) + { 0, { 0, 0, 0}}, // ( 68, 146) + { 0, { 0, 0, 0}}, // ( 69, 146) + { 0, { 0, 0, 0}}, // ( 70, 146) + { 0, { 0, 0, 0}}, // ( 71, 146) + { 0, { 0, 0, 0}}, // ( 72, 146) + { 0, { 0, 0, 0}}, // ( 73, 146) + { 0, { 0, 0, 0}}, // ( 74, 146) + { 0, { 0, 0, 0}}, // ( 75, 146) + { 0, { 0, 0, 0}}, // ( 76, 146) + { 0, { 0, 0, 0}}, // ( 77, 146) + { 0, { 0, 0, 0}}, // ( 78, 146) + { 0, { 0, 0, 0}}, // ( 79, 146) + { 0, { 0, 0, 0}}, // ( 80, 146) + { 0, { 0, 0, 0}}, // ( 81, 146) + { 0, { 0, 0, 0}}, // ( 82, 146) + { 0, { 0, 0, 0}}, // ( 83, 146) + { 0, { 0, 0, 0}}, // ( 84, 146) + { 0, { 0, 0, 0}}, // ( 85, 146) + { 0, { 0, 0, 0}}, // ( 86, 146) + { 0, { 0, 0, 0}}, // ( 87, 146) + { 0, { 0, 0, 0}}, // ( 88, 146) + { 0, { 0, 0, 0}}, // ( 89, 146) + { 0, { 0, 0, 0}}, // ( 90, 146) + { 0, { 0, 0, 0}}, // ( 91, 146) + { 0, { 0, 0, 0}}, // ( 92, 146) + { 0, { 0, 0, 0}}, // ( 93, 146) + { 0, { 0, 0, 0}}, // ( 94, 146) + { 0, { 0, 0, 0}}, // ( 95, 146) + { 0, { 0, 0, 0}}, // ( 96, 146) + { 0, { 0, 0, 0}}, // ( 97, 146) + { 0, { 0, 0, 0}}, // ( 98, 146) + { 0, { 0, 0, 0}}, // ( 99, 146) + { 0, { 0, 0, 0}}, // (100, 146) + { 0, { 0, 0, 0}}, // (101, 146) + { 0, { 0, 0, 0}}, // (102, 146) + { 0, { 0, 0, 0}}, // (103, 146) + { 0, { 0, 0, 0}}, // (104, 146) + { 0, { 0, 0, 0}}, // (105, 146) + { 0, { 0, 0, 0}}, // (106, 146) + { 0, { 0, 0, 0}}, // (107, 146) + { 0, { 0, 0, 0}}, // (108, 146) + { 0, { 0, 0, 0}}, // (109, 146) + { 0, { 0, 0, 0}}, // (110, 146) + { 0, { 0, 0, 0}}, // (111, 146) + { 0, { 0, 0, 0}}, // (112, 146) + { 0, { 0, 0, 0}}, // (113, 146) + { 0, { 0, 0, 0}}, // (114, 146) + { 0, { 0, 0, 0}}, // (115, 146) + { 0, { 0, 0, 0}}, // (116, 146) + { 0, { 0, 0, 0}}, // (117, 146) + { 0, { 0, 0, 0}}, // (118, 146) + { 0, { 0, 0, 0}}, // (119, 146) + { 0, { 0, 0, 0}}, // (120, 146) + { 0, { 0, 0, 0}}, // (121, 146) + { 0, { 0, 0, 0}}, // (122, 146) + { 0, { 0, 0, 0}}, // (123, 146) + { 0, { 0, 0, 0}}, // (124, 146) + { 0, { 0, 0, 0}}, // (125, 146) + { 0, { 0, 0, 0}}, // (126, 146) + { 0, { 0, 0, 0}}, // (127, 146) + { 0, { 0, 0, 0}}, // (128, 146) + { 0, { 0, 0, 0}}, // (129, 146) + { 0, { 0, 0, 0}}, // (130, 146) + { 0, { 0, 0, 0}}, // (131, 146) + { 0, { 0, 0, 0}}, // (132, 146) + { 0, { 0, 0, 0}}, // (133, 146) + { 0, { 0, 0, 0}}, // (134, 146) + { 0, { 0, 0, 0}}, // (135, 146) + { 0, { 0, 0, 0}}, // (136, 146) + { 0, { 0, 0, 0}}, // (137, 146) + { 0, { 0, 0, 0}}, // (138, 146) + { 0, { 0, 0, 0}}, // (139, 146) + { 0, { 0, 0, 0}}, // (140, 146) + { 0, { 0, 0, 0}}, // (141, 146) + { 0, { 0, 0, 0}}, // (142, 146) + { 0, { 0, 0, 0}}, // (143, 146) + { 0, { 0, 0, 0}}, // (144, 146) + { 0, { 0, 0, 0}}, // (145, 146) + { 0, { 0, 0, 0}}, // (146, 146) + { 0, { 0, 0, 0}}, // (147, 146) + { 0, { 0, 0, 0}}, // (148, 146) + { 0, { 0, 0, 0}}, // (149, 146) + { 0, { 0, 0, 0}}, // (150, 146) + { 0, { 0, 0, 0}}, // (151, 146) + { 0, { 0, 0, 0}}, // (152, 146) + { 0, { 0, 0, 0}}, // (153, 146) + { 0, { 0, 0, 0}}, // (154, 146) + { 0, { 0, 0, 0}}, // (155, 146) + { 0, { 0, 0, 0}}, // (156, 146) + { 68, { 0, 0, 0}}, // (157, 146) + {128, { 0, 0, 0}}, // (158, 146) + {128, { 0, 0, 0}}, // (159, 146) + {128, { 0, 0, 0}}, // (160, 146) + {128, { 0, 0, 0}}, // (161, 146) + {128, { 0, 0, 0}}, // (162, 146) + {128, { 0, 0, 0}}, // (163, 146) + {128, { 0, 0, 0}}, // (164, 146) + {128, { 0, 0, 0}}, // (165, 146) + {128, { 0, 0, 0}}, // (166, 146) + {128, { 0, 0, 0}}, // (167, 146) + {128, { 0, 0, 0}}, // (168, 146) + {128, { 0, 0, 0}}, // (169, 146) + {128, { 0, 0, 0}}, // (170, 146) + {128, { 0, 0, 0}}, // (171, 146) + {128, { 0, 0, 0}}, // (172, 146) + {128, { 0, 0, 0}}, // (173, 146) + {128, { 0, 0, 0}}, // (174, 146) + {128, { 0, 0, 0}}, // (175, 146) + {128, { 0, 0, 0}}, // (176, 146) + {128, { 0, 0, 0}}, // (177, 146) + {128, { 0, 0, 0}}, // (178, 146) + {128, { 0, 0, 0}}, // (179, 146) + {128, { 0, 0, 0}}, // ( 0, 147) + {128, { 0, 0, 0}}, // ( 1, 147) + {128, { 0, 0, 0}}, // ( 2, 147) + {128, { 0, 0, 0}}, // ( 3, 147) + {128, { 0, 0, 0}}, // ( 4, 147) + {128, { 0, 0, 0}}, // ( 5, 147) + {128, { 0, 0, 0}}, // ( 6, 147) + {128, { 0, 0, 0}}, // ( 7, 147) + {128, { 0, 0, 0}}, // ( 8, 147) + {128, { 0, 0, 0}}, // ( 9, 147) + {128, { 0, 0, 0}}, // ( 10, 147) + {128, { 0, 0, 0}}, // ( 11, 147) + {128, { 0, 0, 0}}, // ( 12, 147) + {128, { 0, 0, 0}}, // ( 13, 147) + {128, { 0, 0, 0}}, // ( 14, 147) + {128, { 0, 0, 0}}, // ( 15, 147) + {128, { 0, 0, 0}}, // ( 16, 147) + {128, { 0, 0, 0}}, // ( 17, 147) + {128, { 0, 0, 0}}, // ( 18, 147) + {128, { 0, 0, 0}}, // ( 19, 147) + {128, { 0, 0, 0}}, // ( 20, 147) + {128, { 0, 0, 0}}, // ( 21, 147) + {128, { 0, 0, 0}}, // ( 22, 147) + { 53, { 0, 0, 0}}, // ( 23, 147) + { 0, { 0, 0, 0}}, // ( 24, 147) + { 0, { 0, 0, 0}}, // ( 25, 147) + { 0, { 0, 0, 0}}, // ( 26, 147) + { 0, { 0, 0, 0}}, // ( 27, 147) + { 0, { 0, 0, 0}}, // ( 28, 147) + { 0, { 0, 0, 0}}, // ( 29, 147) + { 0, { 0, 0, 0}}, // ( 30, 147) + { 0, { 0, 0, 0}}, // ( 31, 147) + { 0, { 0, 0, 0}}, // ( 32, 147) + { 0, { 0, 0, 0}}, // ( 33, 147) + { 0, { 0, 0, 0}}, // ( 34, 147) + { 0, { 0, 0, 0}}, // ( 35, 147) + { 0, { 0, 0, 0}}, // ( 36, 147) + { 0, { 0, 0, 0}}, // ( 37, 147) + { 0, { 0, 0, 0}}, // ( 38, 147) + { 0, { 0, 0, 0}}, // ( 39, 147) + { 0, { 0, 0, 0}}, // ( 40, 147) + { 0, { 0, 0, 0}}, // ( 41, 147) + { 0, { 0, 0, 0}}, // ( 42, 147) + { 0, { 0, 0, 0}}, // ( 43, 147) + { 0, { 0, 0, 0}}, // ( 44, 147) + { 0, { 0, 0, 0}}, // ( 45, 147) + { 0, { 0, 0, 0}}, // ( 46, 147) + { 0, { 0, 0, 0}}, // ( 47, 147) + { 0, { 0, 0, 0}}, // ( 48, 147) + { 0, { 0, 0, 0}}, // ( 49, 147) + { 0, { 0, 0, 0}}, // ( 50, 147) + { 0, { 0, 0, 0}}, // ( 51, 147) + { 0, { 0, 0, 0}}, // ( 52, 147) + { 0, { 0, 0, 0}}, // ( 53, 147) + { 0, { 0, 0, 0}}, // ( 54, 147) + { 0, { 0, 0, 0}}, // ( 55, 147) + { 0, { 0, 0, 0}}, // ( 56, 147) + { 0, { 0, 0, 0}}, // ( 57, 147) + { 0, { 0, 0, 0}}, // ( 58, 147) + { 0, { 0, 0, 0}}, // ( 59, 147) + { 0, { 0, 0, 0}}, // ( 60, 147) + { 0, { 0, 0, 0}}, // ( 61, 147) + { 0, { 0, 0, 0}}, // ( 62, 147) + { 0, { 0, 0, 0}}, // ( 63, 147) + { 0, { 0, 0, 0}}, // ( 64, 147) + { 0, { 0, 0, 0}}, // ( 65, 147) + { 0, { 0, 0, 0}}, // ( 66, 147) + { 0, { 0, 0, 0}}, // ( 67, 147) + { 0, { 0, 0, 0}}, // ( 68, 147) + { 0, { 0, 0, 0}}, // ( 69, 147) + { 0, { 0, 0, 0}}, // ( 70, 147) + { 0, { 0, 0, 0}}, // ( 71, 147) + { 0, { 0, 0, 0}}, // ( 72, 147) + { 0, { 0, 0, 0}}, // ( 73, 147) + { 0, { 0, 0, 0}}, // ( 74, 147) + { 0, { 0, 0, 0}}, // ( 75, 147) + { 0, { 0, 0, 0}}, // ( 76, 147) + { 0, { 0, 0, 0}}, // ( 77, 147) + { 0, { 0, 0, 0}}, // ( 78, 147) + { 0, { 0, 0, 0}}, // ( 79, 147) + { 0, { 0, 0, 0}}, // ( 80, 147) + { 0, { 0, 0, 0}}, // ( 81, 147) + { 0, { 0, 0, 0}}, // ( 82, 147) + { 0, { 0, 0, 0}}, // ( 83, 147) + { 0, { 0, 0, 0}}, // ( 84, 147) + { 0, { 0, 0, 0}}, // ( 85, 147) + { 0, { 0, 0, 0}}, // ( 86, 147) + { 0, { 0, 0, 0}}, // ( 87, 147) + { 0, { 0, 0, 0}}, // ( 88, 147) + { 0, { 0, 0, 0}}, // ( 89, 147) + { 0, { 0, 0, 0}}, // ( 90, 147) + { 0, { 0, 0, 0}}, // ( 91, 147) + { 0, { 0, 0, 0}}, // ( 92, 147) + { 0, { 0, 0, 0}}, // ( 93, 147) + { 0, { 0, 0, 0}}, // ( 94, 147) + { 0, { 0, 0, 0}}, // ( 95, 147) + { 0, { 0, 0, 0}}, // ( 96, 147) + { 0, { 0, 0, 0}}, // ( 97, 147) + { 0, { 0, 0, 0}}, // ( 98, 147) + { 0, { 0, 0, 0}}, // ( 99, 147) + { 0, { 0, 0, 0}}, // (100, 147) + { 0, { 0, 0, 0}}, // (101, 147) + { 0, { 0, 0, 0}}, // (102, 147) + { 0, { 0, 0, 0}}, // (103, 147) + { 0, { 0, 0, 0}}, // (104, 147) + { 0, { 0, 0, 0}}, // (105, 147) + { 0, { 0, 0, 0}}, // (106, 147) + { 0, { 0, 0, 0}}, // (107, 147) + { 0, { 0, 0, 0}}, // (108, 147) + { 0, { 0, 0, 0}}, // (109, 147) + { 0, { 0, 0, 0}}, // (110, 147) + { 0, { 0, 0, 0}}, // (111, 147) + { 0, { 0, 0, 0}}, // (112, 147) + { 0, { 0, 0, 0}}, // (113, 147) + { 0, { 0, 0, 0}}, // (114, 147) + { 0, { 0, 0, 0}}, // (115, 147) + { 0, { 0, 0, 0}}, // (116, 147) + { 0, { 0, 0, 0}}, // (117, 147) + { 0, { 0, 0, 0}}, // (118, 147) + { 0, { 0, 0, 0}}, // (119, 147) + { 0, { 0, 0, 0}}, // (120, 147) + { 0, { 0, 0, 0}}, // (121, 147) + { 0, { 0, 0, 0}}, // (122, 147) + { 0, { 0, 0, 0}}, // (123, 147) + { 0, { 0, 0, 0}}, // (124, 147) + { 0, { 0, 0, 0}}, // (125, 147) + { 0, { 0, 0, 0}}, // (126, 147) + { 0, { 0, 0, 0}}, // (127, 147) + { 0, { 0, 0, 0}}, // (128, 147) + { 0, { 0, 0, 0}}, // (129, 147) + { 0, { 0, 0, 0}}, // (130, 147) + { 0, { 0, 0, 0}}, // (131, 147) + { 0, { 0, 0, 0}}, // (132, 147) + { 0, { 0, 0, 0}}, // (133, 147) + { 0, { 0, 0, 0}}, // (134, 147) + { 0, { 0, 0, 0}}, // (135, 147) + { 0, { 0, 0, 0}}, // (136, 147) + { 0, { 0, 0, 0}}, // (137, 147) + { 0, { 0, 0, 0}}, // (138, 147) + { 0, { 0, 0, 0}}, // (139, 147) + { 0, { 0, 0, 0}}, // (140, 147) + { 0, { 0, 0, 0}}, // (141, 147) + { 0, { 0, 0, 0}}, // (142, 147) + { 0, { 0, 0, 0}}, // (143, 147) + { 0, { 0, 0, 0}}, // (144, 147) + { 0, { 0, 0, 0}}, // (145, 147) + { 0, { 0, 0, 0}}, // (146, 147) + { 0, { 0, 0, 0}}, // (147, 147) + { 0, { 0, 0, 0}}, // (148, 147) + { 0, { 0, 0, 0}}, // (149, 147) + { 0, { 0, 0, 0}}, // (150, 147) + { 0, { 0, 0, 0}}, // (151, 147) + { 0, { 0, 0, 0}}, // (152, 147) + { 0, { 0, 0, 0}}, // (153, 147) + { 0, { 0, 0, 0}}, // (154, 147) + { 0, { 0, 0, 0}}, // (155, 147) + { 53, { 0, 0, 0}}, // (156, 147) + {128, { 0, 0, 0}}, // (157, 147) + {128, { 0, 0, 0}}, // (158, 147) + {128, { 0, 0, 0}}, // (159, 147) + {128, { 0, 0, 0}}, // (160, 147) + {128, { 0, 0, 0}}, // (161, 147) + {128, { 0, 0, 0}}, // (162, 147) + {128, { 0, 0, 0}}, // (163, 147) + {128, { 0, 0, 0}}, // (164, 147) + {128, { 0, 0, 0}}, // (165, 147) + {128, { 0, 0, 0}}, // (166, 147) + {128, { 0, 0, 0}}, // (167, 147) + {128, { 0, 0, 0}}, // (168, 147) + {128, { 0, 0, 0}}, // (169, 147) + {128, { 0, 0, 0}}, // (170, 147) + {128, { 0, 0, 0}}, // (171, 147) + {128, { 0, 0, 0}}, // (172, 147) + {128, { 0, 0, 0}}, // (173, 147) + {128, { 0, 0, 0}}, // (174, 147) + {128, { 0, 0, 0}}, // (175, 147) + {128, { 0, 0, 0}}, // (176, 147) + {128, { 0, 0, 0}}, // (177, 147) + {128, { 0, 0, 0}}, // (178, 147) + {128, { 0, 0, 0}}, // (179, 147) + {128, { 0, 0, 0}}, // ( 0, 148) + {128, { 0, 0, 0}}, // ( 1, 148) + {128, { 0, 0, 0}}, // ( 2, 148) + {128, { 0, 0, 0}}, // ( 3, 148) + {128, { 0, 0, 0}}, // ( 4, 148) + {128, { 0, 0, 0}}, // ( 5, 148) + {128, { 0, 0, 0}}, // ( 6, 148) + {128, { 0, 0, 0}}, // ( 7, 148) + {128, { 0, 0, 0}}, // ( 8, 148) + {128, { 0, 0, 0}}, // ( 9, 148) + {128, { 0, 0, 0}}, // ( 10, 148) + {128, { 0, 0, 0}}, // ( 11, 148) + {128, { 0, 0, 0}}, // ( 12, 148) + {128, { 0, 0, 0}}, // ( 13, 148) + {128, { 0, 0, 0}}, // ( 14, 148) + {128, { 0, 0, 0}}, // ( 15, 148) + {128, { 0, 0, 0}}, // ( 16, 148) + {128, { 0, 0, 0}}, // ( 17, 148) + {128, { 0, 0, 0}}, // ( 18, 148) + {128, { 0, 0, 0}}, // ( 19, 148) + {128, { 0, 0, 0}}, // ( 20, 148) + {128, { 0, 0, 0}}, // ( 21, 148) + {128, { 0, 0, 0}}, // ( 22, 148) + {126, { 0, 0, 0}}, // ( 23, 148) + { 39, { 0, 0, 0}}, // ( 24, 148) + { 0, { 0, 0, 0}}, // ( 25, 148) + { 0, { 0, 0, 0}}, // ( 26, 148) + { 0, { 0, 0, 0}}, // ( 27, 148) + { 0, { 0, 0, 0}}, // ( 28, 148) + { 0, { 0, 0, 0}}, // ( 29, 148) + { 0, { 0, 0, 0}}, // ( 30, 148) + { 0, { 0, 0, 0}}, // ( 31, 148) + { 0, { 0, 0, 0}}, // ( 32, 148) + { 0, { 0, 0, 0}}, // ( 33, 148) + { 0, { 0, 0, 0}}, // ( 34, 148) + { 0, { 0, 0, 0}}, // ( 35, 148) + { 0, { 0, 0, 0}}, // ( 36, 148) + { 0, { 0, 0, 0}}, // ( 37, 148) + { 0, { 0, 0, 0}}, // ( 38, 148) + { 0, { 0, 0, 0}}, // ( 39, 148) + { 0, { 0, 0, 0}}, // ( 40, 148) + { 0, { 0, 0, 0}}, // ( 41, 148) + { 0, { 0, 0, 0}}, // ( 42, 148) + { 0, { 0, 0, 0}}, // ( 43, 148) + { 0, { 0, 0, 0}}, // ( 44, 148) + { 0, { 0, 0, 0}}, // ( 45, 148) + { 0, { 0, 0, 0}}, // ( 46, 148) + { 0, { 0, 0, 0}}, // ( 47, 148) + { 0, { 0, 0, 0}}, // ( 48, 148) + { 0, { 0, 0, 0}}, // ( 49, 148) + { 0, { 0, 0, 0}}, // ( 50, 148) + { 0, { 0, 0, 0}}, // ( 51, 148) + { 0, { 0, 0, 0}}, // ( 52, 148) + { 0, { 0, 0, 0}}, // ( 53, 148) + { 0, { 0, 0, 0}}, // ( 54, 148) + { 0, { 0, 0, 0}}, // ( 55, 148) + { 0, { 0, 0, 0}}, // ( 56, 148) + { 0, { 0, 0, 0}}, // ( 57, 148) + { 0, { 0, 0, 0}}, // ( 58, 148) + { 0, { 0, 0, 0}}, // ( 59, 148) + { 0, { 0, 0, 0}}, // ( 60, 148) + { 0, { 0, 0, 0}}, // ( 61, 148) + { 0, { 0, 0, 0}}, // ( 62, 148) + { 0, { 0, 0, 0}}, // ( 63, 148) + { 0, { 0, 0, 0}}, // ( 64, 148) + { 0, { 0, 0, 0}}, // ( 65, 148) + { 0, { 0, 0, 0}}, // ( 66, 148) + { 0, { 0, 0, 0}}, // ( 67, 148) + { 0, { 0, 0, 0}}, // ( 68, 148) + { 0, { 0, 0, 0}}, // ( 69, 148) + { 0, { 0, 0, 0}}, // ( 70, 148) + { 0, { 0, 0, 0}}, // ( 71, 148) + { 0, { 0, 0, 0}}, // ( 72, 148) + { 0, { 0, 0, 0}}, // ( 73, 148) + { 0, { 0, 0, 0}}, // ( 74, 148) + { 0, { 0, 0, 0}}, // ( 75, 148) + { 0, { 0, 0, 0}}, // ( 76, 148) + { 0, { 0, 0, 0}}, // ( 77, 148) + { 0, { 0, 0, 0}}, // ( 78, 148) + { 0, { 0, 0, 0}}, // ( 79, 148) + { 0, { 0, 0, 0}}, // ( 80, 148) + { 0, { 0, 0, 0}}, // ( 81, 148) + { 0, { 0, 0, 0}}, // ( 82, 148) + { 0, { 0, 0, 0}}, // ( 83, 148) + { 0, { 0, 0, 0}}, // ( 84, 148) + { 0, { 0, 0, 0}}, // ( 85, 148) + { 0, { 0, 0, 0}}, // ( 86, 148) + { 0, { 0, 0, 0}}, // ( 87, 148) + { 0, { 0, 0, 0}}, // ( 88, 148) + { 0, { 0, 0, 0}}, // ( 89, 148) + { 0, { 0, 0, 0}}, // ( 90, 148) + { 0, { 0, 0, 0}}, // ( 91, 148) + { 0, { 0, 0, 0}}, // ( 92, 148) + { 0, { 0, 0, 0}}, // ( 93, 148) + { 0, { 0, 0, 0}}, // ( 94, 148) + { 0, { 0, 0, 0}}, // ( 95, 148) + { 0, { 0, 0, 0}}, // ( 96, 148) + { 0, { 0, 0, 0}}, // ( 97, 148) + { 0, { 0, 0, 0}}, // ( 98, 148) + { 0, { 0, 0, 0}}, // ( 99, 148) + { 0, { 0, 0, 0}}, // (100, 148) + { 0, { 0, 0, 0}}, // (101, 148) + { 0, { 0, 0, 0}}, // (102, 148) + { 0, { 0, 0, 0}}, // (103, 148) + { 0, { 0, 0, 0}}, // (104, 148) + { 0, { 0, 0, 0}}, // (105, 148) + { 0, { 0, 0, 0}}, // (106, 148) + { 0, { 0, 0, 0}}, // (107, 148) + { 0, { 0, 0, 0}}, // (108, 148) + { 0, { 0, 0, 0}}, // (109, 148) + { 0, { 0, 0, 0}}, // (110, 148) + { 0, { 0, 0, 0}}, // (111, 148) + { 0, { 0, 0, 0}}, // (112, 148) + { 0, { 0, 0, 0}}, // (113, 148) + { 0, { 0, 0, 0}}, // (114, 148) + { 0, { 0, 0, 0}}, // (115, 148) + { 0, { 0, 0, 0}}, // (116, 148) + { 0, { 0, 0, 0}}, // (117, 148) + { 0, { 0, 0, 0}}, // (118, 148) + { 0, { 0, 0, 0}}, // (119, 148) + { 0, { 0, 0, 0}}, // (120, 148) + { 0, { 0, 0, 0}}, // (121, 148) + { 0, { 0, 0, 0}}, // (122, 148) + { 0, { 0, 0, 0}}, // (123, 148) + { 0, { 0, 0, 0}}, // (124, 148) + { 0, { 0, 0, 0}}, // (125, 148) + { 0, { 0, 0, 0}}, // (126, 148) + { 0, { 0, 0, 0}}, // (127, 148) + { 0, { 0, 0, 0}}, // (128, 148) + { 0, { 0, 0, 0}}, // (129, 148) + { 0, { 0, 0, 0}}, // (130, 148) + { 0, { 0, 0, 0}}, // (131, 148) + { 0, { 0, 0, 0}}, // (132, 148) + { 0, { 0, 0, 0}}, // (133, 148) + { 0, { 0, 0, 0}}, // (134, 148) + { 0, { 0, 0, 0}}, // (135, 148) + { 0, { 0, 0, 0}}, // (136, 148) + { 0, { 0, 0, 0}}, // (137, 148) + { 0, { 0, 0, 0}}, // (138, 148) + { 0, { 0, 0, 0}}, // (139, 148) + { 0, { 0, 0, 0}}, // (140, 148) + { 0, { 0, 0, 0}}, // (141, 148) + { 0, { 0, 0, 0}}, // (142, 148) + { 0, { 0, 0, 0}}, // (143, 148) + { 0, { 0, 0, 0}}, // (144, 148) + { 0, { 0, 0, 0}}, // (145, 148) + { 0, { 0, 0, 0}}, // (146, 148) + { 0, { 0, 0, 0}}, // (147, 148) + { 0, { 0, 0, 0}}, // (148, 148) + { 0, { 0, 0, 0}}, // (149, 148) + { 0, { 0, 0, 0}}, // (150, 148) + { 0, { 0, 0, 0}}, // (151, 148) + { 0, { 0, 0, 0}}, // (152, 148) + { 0, { 0, 0, 0}}, // (153, 148) + { 0, { 0, 0, 0}}, // (154, 148) + { 39, { 0, 0, 0}}, // (155, 148) + {126, { 0, 0, 0}}, // (156, 148) + {128, { 0, 0, 0}}, // (157, 148) + {128, { 0, 0, 0}}, // (158, 148) + {128, { 0, 0, 0}}, // (159, 148) + {128, { 0, 0, 0}}, // (160, 148) + {128, { 0, 0, 0}}, // (161, 148) + {128, { 0, 0, 0}}, // (162, 148) + {128, { 0, 0, 0}}, // (163, 148) + {128, { 0, 0, 0}}, // (164, 148) + {128, { 0, 0, 0}}, // (165, 148) + {128, { 0, 0, 0}}, // (166, 148) + {128, { 0, 0, 0}}, // (167, 148) + {128, { 0, 0, 0}}, // (168, 148) + {128, { 0, 0, 0}}, // (169, 148) + {128, { 0, 0, 0}}, // (170, 148) + {128, { 0, 0, 0}}, // (171, 148) + {128, { 0, 0, 0}}, // (172, 148) + {128, { 0, 0, 0}}, // (173, 148) + {128, { 0, 0, 0}}, // (174, 148) + {128, { 0, 0, 0}}, // (175, 148) + {128, { 0, 0, 0}}, // (176, 148) + {128, { 0, 0, 0}}, // (177, 148) + {128, { 0, 0, 0}}, // (178, 148) + {128, { 0, 0, 0}}, // (179, 148) + {128, { 0, 0, 0}}, // ( 0, 149) + {128, { 0, 0, 0}}, // ( 1, 149) + {128, { 0, 0, 0}}, // ( 2, 149) + {128, { 0, 0, 0}}, // ( 3, 149) + {128, { 0, 0, 0}}, // ( 4, 149) + {128, { 0, 0, 0}}, // ( 5, 149) + {128, { 0, 0, 0}}, // ( 6, 149) + {128, { 0, 0, 0}}, // ( 7, 149) + {128, { 0, 0, 0}}, // ( 8, 149) + {128, { 0, 0, 0}}, // ( 9, 149) + {128, { 0, 0, 0}}, // ( 10, 149) + {128, { 0, 0, 0}}, // ( 11, 149) + {128, { 0, 0, 0}}, // ( 12, 149) + {128, { 0, 0, 0}}, // ( 13, 149) + {128, { 0, 0, 0}}, // ( 14, 149) + {128, { 0, 0, 0}}, // ( 15, 149) + {128, { 0, 0, 0}}, // ( 16, 149) + {128, { 0, 0, 0}}, // ( 17, 149) + {128, { 0, 0, 0}}, // ( 18, 149) + {128, { 0, 0, 0}}, // ( 19, 149) + {128, { 0, 0, 0}}, // ( 20, 149) + {128, { 0, 0, 0}}, // ( 21, 149) + {128, { 0, 0, 0}}, // ( 22, 149) + {128, { 0, 0, 0}}, // ( 23, 149) + {123, { 0, 0, 0}}, // ( 24, 149) + { 28, { 0, 0, 0}}, // ( 25, 149) + { 0, { 0, 0, 0}}, // ( 26, 149) + { 0, { 0, 0, 0}}, // ( 27, 149) + { 0, { 0, 0, 0}}, // ( 28, 149) + { 0, { 0, 0, 0}}, // ( 29, 149) + { 0, { 0, 0, 0}}, // ( 30, 149) + { 0, { 0, 0, 0}}, // ( 31, 149) + { 0, { 0, 0, 0}}, // ( 32, 149) + { 0, { 0, 0, 0}}, // ( 33, 149) + { 0, { 0, 0, 0}}, // ( 34, 149) + { 0, { 0, 0, 0}}, // ( 35, 149) + { 0, { 0, 0, 0}}, // ( 36, 149) + { 0, { 0, 0, 0}}, // ( 37, 149) + { 0, { 0, 0, 0}}, // ( 38, 149) + { 0, { 0, 0, 0}}, // ( 39, 149) + { 0, { 0, 0, 0}}, // ( 40, 149) + { 0, { 0, 0, 0}}, // ( 41, 149) + { 0, { 0, 0, 0}}, // ( 42, 149) + { 0, { 0, 0, 0}}, // ( 43, 149) + { 0, { 0, 0, 0}}, // ( 44, 149) + { 0, { 0, 0, 0}}, // ( 45, 149) + { 0, { 0, 0, 0}}, // ( 46, 149) + { 0, { 0, 0, 0}}, // ( 47, 149) + { 0, { 0, 0, 0}}, // ( 48, 149) + { 0, { 0, 0, 0}}, // ( 49, 149) + { 0, { 0, 0, 0}}, // ( 50, 149) + { 0, { 0, 0, 0}}, // ( 51, 149) + { 0, { 0, 0, 0}}, // ( 52, 149) + { 0, { 0, 0, 0}}, // ( 53, 149) + { 0, { 0, 0, 0}}, // ( 54, 149) + { 0, { 0, 0, 0}}, // ( 55, 149) + { 0, { 0, 0, 0}}, // ( 56, 149) + { 0, { 0, 0, 0}}, // ( 57, 149) + { 0, { 0, 0, 0}}, // ( 58, 149) + { 0, { 0, 0, 0}}, // ( 59, 149) + { 0, { 0, 0, 0}}, // ( 60, 149) + { 0, { 0, 0, 0}}, // ( 61, 149) + { 0, { 0, 0, 0}}, // ( 62, 149) + { 0, { 0, 0, 0}}, // ( 63, 149) + { 0, { 0, 0, 0}}, // ( 64, 149) + { 0, { 0, 0, 0}}, // ( 65, 149) + { 0, { 0, 0, 0}}, // ( 66, 149) + { 0, { 0, 0, 0}}, // ( 67, 149) + { 0, { 0, 0, 0}}, // ( 68, 149) + { 0, { 0, 0, 0}}, // ( 69, 149) + { 0, { 0, 0, 0}}, // ( 70, 149) + { 0, { 0, 0, 0}}, // ( 71, 149) + { 0, { 0, 0, 0}}, // ( 72, 149) + { 0, { 0, 0, 0}}, // ( 73, 149) + { 0, { 0, 0, 0}}, // ( 74, 149) + { 0, { 0, 0, 0}}, // ( 75, 149) + { 0, { 0, 0, 0}}, // ( 76, 149) + { 0, { 0, 0, 0}}, // ( 77, 149) + { 0, { 0, 0, 0}}, // ( 78, 149) + { 0, { 0, 0, 0}}, // ( 79, 149) + { 0, { 0, 0, 0}}, // ( 80, 149) + { 0, { 0, 0, 0}}, // ( 81, 149) + { 0, { 0, 0, 0}}, // ( 82, 149) + { 0, { 0, 0, 0}}, // ( 83, 149) + { 0, { 0, 0, 0}}, // ( 84, 149) + { 0, { 0, 0, 0}}, // ( 85, 149) + { 0, { 0, 0, 0}}, // ( 86, 149) + { 0, { 0, 0, 0}}, // ( 87, 149) + { 0, { 0, 0, 0}}, // ( 88, 149) + { 0, { 0, 0, 0}}, // ( 89, 149) + { 0, { 0, 0, 0}}, // ( 90, 149) + { 0, { 0, 0, 0}}, // ( 91, 149) + { 0, { 0, 0, 0}}, // ( 92, 149) + { 0, { 0, 0, 0}}, // ( 93, 149) + { 0, { 0, 0, 0}}, // ( 94, 149) + { 0, { 0, 0, 0}}, // ( 95, 149) + { 0, { 0, 0, 0}}, // ( 96, 149) + { 0, { 0, 0, 0}}, // ( 97, 149) + { 0, { 0, 0, 0}}, // ( 98, 149) + { 0, { 0, 0, 0}}, // ( 99, 149) + { 0, { 0, 0, 0}}, // (100, 149) + { 0, { 0, 0, 0}}, // (101, 149) + { 0, { 0, 0, 0}}, // (102, 149) + { 0, { 0, 0, 0}}, // (103, 149) + { 0, { 0, 0, 0}}, // (104, 149) + { 0, { 0, 0, 0}}, // (105, 149) + { 0, { 0, 0, 0}}, // (106, 149) + { 0, { 0, 0, 0}}, // (107, 149) + { 0, { 0, 0, 0}}, // (108, 149) + { 0, { 0, 0, 0}}, // (109, 149) + { 0, { 0, 0, 0}}, // (110, 149) + { 0, { 0, 0, 0}}, // (111, 149) + { 0, { 0, 0, 0}}, // (112, 149) + { 0, { 0, 0, 0}}, // (113, 149) + { 0, { 0, 0, 0}}, // (114, 149) + { 0, { 0, 0, 0}}, // (115, 149) + { 0, { 0, 0, 0}}, // (116, 149) + { 0, { 0, 0, 0}}, // (117, 149) + { 0, { 0, 0, 0}}, // (118, 149) + { 0, { 0, 0, 0}}, // (119, 149) + { 0, { 0, 0, 0}}, // (120, 149) + { 0, { 0, 0, 0}}, // (121, 149) + { 0, { 0, 0, 0}}, // (122, 149) + { 0, { 0, 0, 0}}, // (123, 149) + { 0, { 0, 0, 0}}, // (124, 149) + { 0, { 0, 0, 0}}, // (125, 149) + { 0, { 0, 0, 0}}, // (126, 149) + { 0, { 0, 0, 0}}, // (127, 149) + { 0, { 0, 0, 0}}, // (128, 149) + { 0, { 0, 0, 0}}, // (129, 149) + { 0, { 0, 0, 0}}, // (130, 149) + { 0, { 0, 0, 0}}, // (131, 149) + { 0, { 0, 0, 0}}, // (132, 149) + { 0, { 0, 0, 0}}, // (133, 149) + { 0, { 0, 0, 0}}, // (134, 149) + { 0, { 0, 0, 0}}, // (135, 149) + { 0, { 0, 0, 0}}, // (136, 149) + { 0, { 0, 0, 0}}, // (137, 149) + { 0, { 0, 0, 0}}, // (138, 149) + { 0, { 0, 0, 0}}, // (139, 149) + { 0, { 0, 0, 0}}, // (140, 149) + { 0, { 0, 0, 0}}, // (141, 149) + { 0, { 0, 0, 0}}, // (142, 149) + { 0, { 0, 0, 0}}, // (143, 149) + { 0, { 0, 0, 0}}, // (144, 149) + { 0, { 0, 0, 0}}, // (145, 149) + { 0, { 0, 0, 0}}, // (146, 149) + { 0, { 0, 0, 0}}, // (147, 149) + { 0, { 0, 0, 0}}, // (148, 149) + { 0, { 0, 0, 0}}, // (149, 149) + { 0, { 0, 0, 0}}, // (150, 149) + { 0, { 0, 0, 0}}, // (151, 149) + { 0, { 0, 0, 0}}, // (152, 149) + { 0, { 0, 0, 0}}, // (153, 149) + { 28, { 0, 0, 0}}, // (154, 149) + {123, { 0, 0, 0}}, // (155, 149) + {128, { 0, 0, 0}}, // (156, 149) + {128, { 0, 0, 0}}, // (157, 149) + {128, { 0, 0, 0}}, // (158, 149) + {128, { 0, 0, 0}}, // (159, 149) + {128, { 0, 0, 0}}, // (160, 149) + {128, { 0, 0, 0}}, // (161, 149) + {128, { 0, 0, 0}}, // (162, 149) + {128, { 0, 0, 0}}, // (163, 149) + {128, { 0, 0, 0}}, // (164, 149) + {128, { 0, 0, 0}}, // (165, 149) + {128, { 0, 0, 0}}, // (166, 149) + {128, { 0, 0, 0}}, // (167, 149) + {128, { 0, 0, 0}}, // (168, 149) + {128, { 0, 0, 0}}, // (169, 149) + {128, { 0, 0, 0}}, // (170, 149) + {128, { 0, 0, 0}}, // (171, 149) + {128, { 0, 0, 0}}, // (172, 149) + {128, { 0, 0, 0}}, // (173, 149) + {128, { 0, 0, 0}}, // (174, 149) + {128, { 0, 0, 0}}, // (175, 149) + {128, { 0, 0, 0}}, // (176, 149) + {128, { 0, 0, 0}}, // (177, 149) + {128, { 0, 0, 0}}, // (178, 149) + {128, { 0, 0, 0}}, // (179, 149) + {128, { 0, 0, 0}}, // ( 0, 150) + {128, { 0, 0, 0}}, // ( 1, 150) + {128, { 0, 0, 0}}, // ( 2, 150) + {128, { 0, 0, 0}}, // ( 3, 150) + {128, { 0, 0, 0}}, // ( 4, 150) + {128, { 0, 0, 0}}, // ( 5, 150) + {128, { 0, 0, 0}}, // ( 6, 150) + {128, { 0, 0, 0}}, // ( 7, 150) + {128, { 0, 0, 0}}, // ( 8, 150) + {128, { 0, 0, 0}}, // ( 9, 150) + {128, { 0, 0, 0}}, // ( 10, 150) + {128, { 0, 0, 0}}, // ( 11, 150) + {128, { 0, 0, 0}}, // ( 12, 150) + {128, { 0, 0, 0}}, // ( 13, 150) + {128, { 0, 0, 0}}, // ( 14, 150) + {128, { 0, 0, 0}}, // ( 15, 150) + {128, { 0, 0, 0}}, // ( 16, 150) + {128, { 0, 0, 0}}, // ( 17, 150) + {128, { 0, 0, 0}}, // ( 18, 150) + {128, { 0, 0, 0}}, // ( 19, 150) + {128, { 0, 0, 0}}, // ( 20, 150) + {128, { 0, 0, 0}}, // ( 21, 150) + {128, { 0, 0, 0}}, // ( 22, 150) + {128, { 0, 0, 0}}, // ( 23, 150) + {128, { 0, 0, 0}}, // ( 24, 150) + {120, { 0, 0, 0}}, // ( 25, 150) + { 24, { 0, 0, 0}}, // ( 26, 150) + { 0, { 0, 0, 0}}, // ( 27, 150) + { 0, { 0, 0, 0}}, // ( 28, 150) + { 0, { 0, 0, 0}}, // ( 29, 150) + { 0, { 0, 0, 0}}, // ( 30, 150) + { 0, { 0, 0, 0}}, // ( 31, 150) + { 0, { 0, 0, 0}}, // ( 32, 150) + { 0, { 0, 0, 0}}, // ( 33, 150) + { 0, { 0, 0, 0}}, // ( 34, 150) + { 0, { 0, 0, 0}}, // ( 35, 150) + { 0, { 0, 0, 0}}, // ( 36, 150) + { 0, { 0, 0, 0}}, // ( 37, 150) + { 0, { 0, 0, 0}}, // ( 38, 150) + { 0, { 0, 0, 0}}, // ( 39, 150) + { 0, { 0, 0, 0}}, // ( 40, 150) + { 0, { 0, 0, 0}}, // ( 41, 150) + { 0, { 0, 0, 0}}, // ( 42, 150) + { 0, { 0, 0, 0}}, // ( 43, 150) + { 0, { 0, 0, 0}}, // ( 44, 150) + { 0, { 0, 0, 0}}, // ( 45, 150) + { 0, { 0, 0, 0}}, // ( 46, 150) + { 0, { 0, 0, 0}}, // ( 47, 150) + { 0, { 0, 0, 0}}, // ( 48, 150) + { 0, { 0, 0, 0}}, // ( 49, 150) + { 0, { 0, 0, 0}}, // ( 50, 150) + { 0, { 0, 0, 0}}, // ( 51, 150) + { 0, { 0, 0, 0}}, // ( 52, 150) + { 0, { 0, 0, 0}}, // ( 53, 150) + { 0, { 0, 0, 0}}, // ( 54, 150) + { 0, { 0, 0, 0}}, // ( 55, 150) + { 0, { 0, 0, 0}}, // ( 56, 150) + { 0, { 0, 0, 0}}, // ( 57, 150) + { 0, { 0, 0, 0}}, // ( 58, 150) + { 0, { 0, 0, 0}}, // ( 59, 150) + { 0, { 0, 0, 0}}, // ( 60, 150) + { 0, { 0, 0, 0}}, // ( 61, 150) + { 0, { 0, 0, 0}}, // ( 62, 150) + { 0, { 0, 0, 0}}, // ( 63, 150) + { 0, { 0, 0, 0}}, // ( 64, 150) + { 0, { 0, 0, 0}}, // ( 65, 150) + { 0, { 0, 0, 0}}, // ( 66, 150) + { 0, { 0, 0, 0}}, // ( 67, 150) + { 0, { 0, 0, 0}}, // ( 68, 150) + { 0, { 0, 0, 0}}, // ( 69, 150) + { 0, { 0, 0, 0}}, // ( 70, 150) + { 0, { 0, 0, 0}}, // ( 71, 150) + { 0, { 0, 0, 0}}, // ( 72, 150) + { 0, { 0, 0, 0}}, // ( 73, 150) + { 0, { 0, 0, 0}}, // ( 74, 150) + { 0, { 0, 0, 0}}, // ( 75, 150) + { 0, { 0, 0, 0}}, // ( 76, 150) + { 0, { 0, 0, 0}}, // ( 77, 150) + { 0, { 0, 0, 0}}, // ( 78, 150) + { 0, { 0, 0, 0}}, // ( 79, 150) + { 0, { 0, 0, 0}}, // ( 80, 150) + { 0, { 0, 0, 0}}, // ( 81, 150) + { 0, { 0, 0, 0}}, // ( 82, 150) + { 0, { 0, 0, 0}}, // ( 83, 150) + { 0, { 0, 0, 0}}, // ( 84, 150) + { 0, { 0, 0, 0}}, // ( 85, 150) + { 0, { 0, 0, 0}}, // ( 86, 150) + { 0, { 0, 0, 0}}, // ( 87, 150) + { 0, { 0, 0, 0}}, // ( 88, 150) + { 0, { 0, 0, 0}}, // ( 89, 150) + { 0, { 0, 0, 0}}, // ( 90, 150) + { 0, { 0, 0, 0}}, // ( 91, 150) + { 0, { 0, 0, 0}}, // ( 92, 150) + { 0, { 0, 0, 0}}, // ( 93, 150) + { 0, { 0, 0, 0}}, // ( 94, 150) + { 0, { 0, 0, 0}}, // ( 95, 150) + { 0, { 0, 0, 0}}, // ( 96, 150) + { 0, { 0, 0, 0}}, // ( 97, 150) + { 0, { 0, 0, 0}}, // ( 98, 150) + { 0, { 0, 0, 0}}, // ( 99, 150) + { 0, { 0, 0, 0}}, // (100, 150) + { 0, { 0, 0, 0}}, // (101, 150) + { 0, { 0, 0, 0}}, // (102, 150) + { 0, { 0, 0, 0}}, // (103, 150) + { 0, { 0, 0, 0}}, // (104, 150) + { 0, { 0, 0, 0}}, // (105, 150) + { 0, { 0, 0, 0}}, // (106, 150) + { 0, { 0, 0, 0}}, // (107, 150) + { 0, { 0, 0, 0}}, // (108, 150) + { 0, { 0, 0, 0}}, // (109, 150) + { 0, { 0, 0, 0}}, // (110, 150) + { 0, { 0, 0, 0}}, // (111, 150) + { 0, { 0, 0, 0}}, // (112, 150) + { 0, { 0, 0, 0}}, // (113, 150) + { 0, { 0, 0, 0}}, // (114, 150) + { 0, { 0, 0, 0}}, // (115, 150) + { 0, { 0, 0, 0}}, // (116, 150) + { 0, { 0, 0, 0}}, // (117, 150) + { 0, { 0, 0, 0}}, // (118, 150) + { 0, { 0, 0, 0}}, // (119, 150) + { 0, { 0, 0, 0}}, // (120, 150) + { 0, { 0, 0, 0}}, // (121, 150) + { 0, { 0, 0, 0}}, // (122, 150) + { 0, { 0, 0, 0}}, // (123, 150) + { 0, { 0, 0, 0}}, // (124, 150) + { 0, { 0, 0, 0}}, // (125, 150) + { 0, { 0, 0, 0}}, // (126, 150) + { 0, { 0, 0, 0}}, // (127, 150) + { 0, { 0, 0, 0}}, // (128, 150) + { 0, { 0, 0, 0}}, // (129, 150) + { 0, { 0, 0, 0}}, // (130, 150) + { 0, { 0, 0, 0}}, // (131, 150) + { 0, { 0, 0, 0}}, // (132, 150) + { 0, { 0, 0, 0}}, // (133, 150) + { 0, { 0, 0, 0}}, // (134, 150) + { 0, { 0, 0, 0}}, // (135, 150) + { 0, { 0, 0, 0}}, // (136, 150) + { 0, { 0, 0, 0}}, // (137, 150) + { 0, { 0, 0, 0}}, // (138, 150) + { 0, { 0, 0, 0}}, // (139, 150) + { 0, { 0, 0, 0}}, // (140, 150) + { 0, { 0, 0, 0}}, // (141, 150) + { 0, { 0, 0, 0}}, // (142, 150) + { 0, { 0, 0, 0}}, // (143, 150) + { 0, { 0, 0, 0}}, // (144, 150) + { 0, { 0, 0, 0}}, // (145, 150) + { 0, { 0, 0, 0}}, // (146, 150) + { 0, { 0, 0, 0}}, // (147, 150) + { 0, { 0, 0, 0}}, // (148, 150) + { 0, { 0, 0, 0}}, // (149, 150) + { 0, { 0, 0, 0}}, // (150, 150) + { 0, { 0, 0, 0}}, // (151, 150) + { 0, { 0, 0, 0}}, // (152, 150) + { 24, { 0, 0, 0}}, // (153, 150) + {120, { 0, 0, 0}}, // (154, 150) + {128, { 0, 0, 0}}, // (155, 150) + {128, { 0, 0, 0}}, // (156, 150) + {128, { 0, 0, 0}}, // (157, 150) + {128, { 0, 0, 0}}, // (158, 150) + {128, { 0, 0, 0}}, // (159, 150) + {128, { 0, 0, 0}}, // (160, 150) + {128, { 0, 0, 0}}, // (161, 150) + {128, { 0, 0, 0}}, // (162, 150) + {128, { 0, 0, 0}}, // (163, 150) + {128, { 0, 0, 0}}, // (164, 150) + {128, { 0, 0, 0}}, // (165, 150) + {128, { 0, 0, 0}}, // (166, 150) + {128, { 0, 0, 0}}, // (167, 150) + {128, { 0, 0, 0}}, // (168, 150) + {128, { 0, 0, 0}}, // (169, 150) + {128, { 0, 0, 0}}, // (170, 150) + {128, { 0, 0, 0}}, // (171, 150) + {128, { 0, 0, 0}}, // (172, 150) + {128, { 0, 0, 0}}, // (173, 150) + {128, { 0, 0, 0}}, // (174, 150) + {128, { 0, 0, 0}}, // (175, 150) + {128, { 0, 0, 0}}, // (176, 150) + {128, { 0, 0, 0}}, // (177, 150) + {128, { 0, 0, 0}}, // (178, 150) + {128, { 0, 0, 0}}, // (179, 150) + {128, { 0, 0, 0}}, // ( 0, 151) + {128, { 0, 0, 0}}, // ( 1, 151) + {128, { 0, 0, 0}}, // ( 2, 151) + {128, { 0, 0, 0}}, // ( 3, 151) + {128, { 0, 0, 0}}, // ( 4, 151) + {128, { 0, 0, 0}}, // ( 5, 151) + {128, { 0, 0, 0}}, // ( 6, 151) + {128, { 0, 0, 0}}, // ( 7, 151) + {128, { 0, 0, 0}}, // ( 8, 151) + {128, { 0, 0, 0}}, // ( 9, 151) + {128, { 0, 0, 0}}, // ( 10, 151) + {128, { 0, 0, 0}}, // ( 11, 151) + {128, { 0, 0, 0}}, // ( 12, 151) + {128, { 0, 0, 0}}, // ( 13, 151) + {128, { 0, 0, 0}}, // ( 14, 151) + {128, { 0, 0, 0}}, // ( 15, 151) + {128, { 0, 0, 0}}, // ( 16, 151) + {128, { 0, 0, 0}}, // ( 17, 151) + {128, { 0, 0, 0}}, // ( 18, 151) + {128, { 0, 0, 0}}, // ( 19, 151) + {128, { 0, 0, 0}}, // ( 20, 151) + {128, { 0, 0, 0}}, // ( 21, 151) + {128, { 0, 0, 0}}, // ( 22, 151) + {128, { 0, 0, 0}}, // ( 23, 151) + {128, { 0, 0, 0}}, // ( 24, 151) + {128, { 0, 0, 0}}, // ( 25, 151) + {117, { 0, 0, 0}}, // ( 26, 151) + { 21, { 0, 0, 0}}, // ( 27, 151) + { 0, { 0, 0, 0}}, // ( 28, 151) + { 0, { 0, 0, 0}}, // ( 29, 151) + { 0, { 0, 0, 0}}, // ( 30, 151) + { 0, { 0, 0, 0}}, // ( 31, 151) + { 0, { 0, 0, 0}}, // ( 32, 151) + { 0, { 0, 0, 0}}, // ( 33, 151) + { 0, { 0, 0, 0}}, // ( 34, 151) + { 0, { 0, 0, 0}}, // ( 35, 151) + { 0, { 0, 0, 0}}, // ( 36, 151) + { 0, { 0, 0, 0}}, // ( 37, 151) + { 0, { 0, 0, 0}}, // ( 38, 151) + { 0, { 0, 0, 0}}, // ( 39, 151) + { 0, { 0, 0, 0}}, // ( 40, 151) + { 0, { 0, 0, 0}}, // ( 41, 151) + { 0, { 0, 0, 0}}, // ( 42, 151) + { 0, { 0, 0, 0}}, // ( 43, 151) + { 0, { 0, 0, 0}}, // ( 44, 151) + { 0, { 0, 0, 0}}, // ( 45, 151) + { 0, { 0, 0, 0}}, // ( 46, 151) + { 0, { 0, 0, 0}}, // ( 47, 151) + { 0, { 0, 0, 0}}, // ( 48, 151) + { 0, { 0, 0, 0}}, // ( 49, 151) + { 0, { 0, 0, 0}}, // ( 50, 151) + { 0, { 0, 0, 0}}, // ( 51, 151) + { 0, { 0, 0, 0}}, // ( 52, 151) + { 0, { 0, 0, 0}}, // ( 53, 151) + { 0, { 0, 0, 0}}, // ( 54, 151) + { 0, { 0, 0, 0}}, // ( 55, 151) + { 0, { 0, 0, 0}}, // ( 56, 151) + { 0, { 0, 0, 0}}, // ( 57, 151) + { 0, { 0, 0, 0}}, // ( 58, 151) + { 0, { 0, 0, 0}}, // ( 59, 151) + { 0, { 0, 0, 0}}, // ( 60, 151) + { 0, { 0, 0, 0}}, // ( 61, 151) + { 0, { 0, 0, 0}}, // ( 62, 151) + { 0, { 0, 0, 0}}, // ( 63, 151) + { 0, { 0, 0, 0}}, // ( 64, 151) + { 0, { 0, 0, 0}}, // ( 65, 151) + { 0, { 0, 0, 0}}, // ( 66, 151) + { 0, { 0, 0, 0}}, // ( 67, 151) + { 0, { 0, 0, 0}}, // ( 68, 151) + { 0, { 0, 0, 0}}, // ( 69, 151) + { 0, { 0, 0, 0}}, // ( 70, 151) + { 0, { 0, 0, 0}}, // ( 71, 151) + { 0, { 0, 0, 0}}, // ( 72, 151) + { 0, { 0, 0, 0}}, // ( 73, 151) + { 0, { 0, 0, 0}}, // ( 74, 151) + { 0, { 0, 0, 0}}, // ( 75, 151) + { 0, { 0, 0, 0}}, // ( 76, 151) + { 0, { 0, 0, 0}}, // ( 77, 151) + { 0, { 0, 0, 0}}, // ( 78, 151) + { 0, { 0, 0, 0}}, // ( 79, 151) + { 0, { 0, 0, 0}}, // ( 80, 151) + { 0, { 0, 0, 0}}, // ( 81, 151) + { 0, { 0, 0, 0}}, // ( 82, 151) + { 0, { 0, 0, 0}}, // ( 83, 151) + { 0, { 0, 0, 0}}, // ( 84, 151) + { 0, { 0, 0, 0}}, // ( 85, 151) + { 0, { 0, 0, 0}}, // ( 86, 151) + { 0, { 0, 0, 0}}, // ( 87, 151) + { 0, { 0, 0, 0}}, // ( 88, 151) + { 0, { 0, 0, 0}}, // ( 89, 151) + { 0, { 0, 0, 0}}, // ( 90, 151) + { 0, { 0, 0, 0}}, // ( 91, 151) + { 0, { 0, 0, 0}}, // ( 92, 151) + { 0, { 0, 0, 0}}, // ( 93, 151) + { 0, { 0, 0, 0}}, // ( 94, 151) + { 0, { 0, 0, 0}}, // ( 95, 151) + { 0, { 0, 0, 0}}, // ( 96, 151) + { 0, { 0, 0, 0}}, // ( 97, 151) + { 0, { 0, 0, 0}}, // ( 98, 151) + { 0, { 0, 0, 0}}, // ( 99, 151) + { 0, { 0, 0, 0}}, // (100, 151) + { 0, { 0, 0, 0}}, // (101, 151) + { 0, { 0, 0, 0}}, // (102, 151) + { 0, { 0, 0, 0}}, // (103, 151) + { 0, { 0, 0, 0}}, // (104, 151) + { 0, { 0, 0, 0}}, // (105, 151) + { 0, { 0, 0, 0}}, // (106, 151) + { 0, { 0, 0, 0}}, // (107, 151) + { 0, { 0, 0, 0}}, // (108, 151) + { 0, { 0, 0, 0}}, // (109, 151) + { 0, { 0, 0, 0}}, // (110, 151) + { 0, { 0, 0, 0}}, // (111, 151) + { 0, { 0, 0, 0}}, // (112, 151) + { 0, { 0, 0, 0}}, // (113, 151) + { 0, { 0, 0, 0}}, // (114, 151) + { 0, { 0, 0, 0}}, // (115, 151) + { 0, { 0, 0, 0}}, // (116, 151) + { 0, { 0, 0, 0}}, // (117, 151) + { 0, { 0, 0, 0}}, // (118, 151) + { 0, { 0, 0, 0}}, // (119, 151) + { 0, { 0, 0, 0}}, // (120, 151) + { 0, { 0, 0, 0}}, // (121, 151) + { 0, { 0, 0, 0}}, // (122, 151) + { 0, { 0, 0, 0}}, // (123, 151) + { 0, { 0, 0, 0}}, // (124, 151) + { 0, { 0, 0, 0}}, // (125, 151) + { 0, { 0, 0, 0}}, // (126, 151) + { 0, { 0, 0, 0}}, // (127, 151) + { 0, { 0, 0, 0}}, // (128, 151) + { 0, { 0, 0, 0}}, // (129, 151) + { 0, { 0, 0, 0}}, // (130, 151) + { 0, { 0, 0, 0}}, // (131, 151) + { 0, { 0, 0, 0}}, // (132, 151) + { 0, { 0, 0, 0}}, // (133, 151) + { 0, { 0, 0, 0}}, // (134, 151) + { 0, { 0, 0, 0}}, // (135, 151) + { 0, { 0, 0, 0}}, // (136, 151) + { 0, { 0, 0, 0}}, // (137, 151) + { 0, { 0, 0, 0}}, // (138, 151) + { 0, { 0, 0, 0}}, // (139, 151) + { 0, { 0, 0, 0}}, // (140, 151) + { 0, { 0, 0, 0}}, // (141, 151) + { 0, { 0, 0, 0}}, // (142, 151) + { 0, { 0, 0, 0}}, // (143, 151) + { 0, { 0, 0, 0}}, // (144, 151) + { 0, { 0, 0, 0}}, // (145, 151) + { 0, { 0, 0, 0}}, // (146, 151) + { 0, { 0, 0, 0}}, // (147, 151) + { 0, { 0, 0, 0}}, // (148, 151) + { 0, { 0, 0, 0}}, // (149, 151) + { 0, { 0, 0, 0}}, // (150, 151) + { 0, { 0, 0, 0}}, // (151, 151) + { 21, { 0, 0, 0}}, // (152, 151) + {117, { 0, 0, 0}}, // (153, 151) + {128, { 0, 0, 0}}, // (154, 151) + {128, { 0, 0, 0}}, // (155, 151) + {128, { 0, 0, 0}}, // (156, 151) + {128, { 0, 0, 0}}, // (157, 151) + {128, { 0, 0, 0}}, // (158, 151) + {128, { 0, 0, 0}}, // (159, 151) + {128, { 0, 0, 0}}, // (160, 151) + {128, { 0, 0, 0}}, // (161, 151) + {128, { 0, 0, 0}}, // (162, 151) + {128, { 0, 0, 0}}, // (163, 151) + {128, { 0, 0, 0}}, // (164, 151) + {128, { 0, 0, 0}}, // (165, 151) + {128, { 0, 0, 0}}, // (166, 151) + {128, { 0, 0, 0}}, // (167, 151) + {128, { 0, 0, 0}}, // (168, 151) + {128, { 0, 0, 0}}, // (169, 151) + {128, { 0, 0, 0}}, // (170, 151) + {128, { 0, 0, 0}}, // (171, 151) + {128, { 0, 0, 0}}, // (172, 151) + {128, { 0, 0, 0}}, // (173, 151) + {128, { 0, 0, 0}}, // (174, 151) + {128, { 0, 0, 0}}, // (175, 151) + {128, { 0, 0, 0}}, // (176, 151) + {128, { 0, 0, 0}}, // (177, 151) + {128, { 0, 0, 0}}, // (178, 151) + {128, { 0, 0, 0}}, // (179, 151) + {128, { 0, 0, 0}}, // ( 0, 152) + {128, { 0, 0, 0}}, // ( 1, 152) + {128, { 0, 0, 0}}, // ( 2, 152) + {128, { 0, 0, 0}}, // ( 3, 152) + {128, { 0, 0, 0}}, // ( 4, 152) + {128, { 0, 0, 0}}, // ( 5, 152) + {128, { 0, 0, 0}}, // ( 6, 152) + {128, { 0, 0, 0}}, // ( 7, 152) + {128, { 0, 0, 0}}, // ( 8, 152) + {128, { 0, 0, 0}}, // ( 9, 152) + {128, { 0, 0, 0}}, // ( 10, 152) + {128, { 0, 0, 0}}, // ( 11, 152) + {128, { 0, 0, 0}}, // ( 12, 152) + {128, { 0, 0, 0}}, // ( 13, 152) + {128, { 0, 0, 0}}, // ( 14, 152) + {128, { 0, 0, 0}}, // ( 15, 152) + {128, { 0, 0, 0}}, // ( 16, 152) + {128, { 0, 0, 0}}, // ( 17, 152) + {128, { 0, 0, 0}}, // ( 18, 152) + {128, { 0, 0, 0}}, // ( 19, 152) + {128, { 0, 0, 0}}, // ( 20, 152) + {128, { 0, 0, 0}}, // ( 21, 152) + {128, { 0, 0, 0}}, // ( 22, 152) + {128, { 0, 0, 0}}, // ( 23, 152) + {128, { 0, 0, 0}}, // ( 24, 152) + {128, { 0, 0, 0}}, // ( 25, 152) + {128, { 0, 0, 0}}, // ( 26, 152) + {115, { 0, 0, 0}}, // ( 27, 152) + { 21, { 0, 0, 0}}, // ( 28, 152) + { 0, { 0, 0, 0}}, // ( 29, 152) + { 0, { 0, 0, 0}}, // ( 30, 152) + { 0, { 0, 0, 0}}, // ( 31, 152) + { 0, { 0, 0, 0}}, // ( 32, 152) + { 0, { 0, 0, 0}}, // ( 33, 152) + { 0, { 0, 0, 0}}, // ( 34, 152) + { 0, { 0, 0, 0}}, // ( 35, 152) + { 0, { 0, 0, 0}}, // ( 36, 152) + { 0, { 0, 0, 0}}, // ( 37, 152) + { 0, { 0, 0, 0}}, // ( 38, 152) + { 0, { 0, 0, 0}}, // ( 39, 152) + { 0, { 0, 0, 0}}, // ( 40, 152) + { 0, { 0, 0, 0}}, // ( 41, 152) + { 0, { 0, 0, 0}}, // ( 42, 152) + { 0, { 0, 0, 0}}, // ( 43, 152) + { 0, { 0, 0, 0}}, // ( 44, 152) + { 0, { 0, 0, 0}}, // ( 45, 152) + { 0, { 0, 0, 0}}, // ( 46, 152) + { 0, { 0, 0, 0}}, // ( 47, 152) + { 0, { 0, 0, 0}}, // ( 48, 152) + { 0, { 0, 0, 0}}, // ( 49, 152) + { 0, { 0, 0, 0}}, // ( 50, 152) + { 0, { 0, 0, 0}}, // ( 51, 152) + { 0, { 0, 0, 0}}, // ( 52, 152) + { 0, { 0, 0, 0}}, // ( 53, 152) + { 0, { 0, 0, 0}}, // ( 54, 152) + { 0, { 0, 0, 0}}, // ( 55, 152) + { 0, { 0, 0, 0}}, // ( 56, 152) + { 0, { 0, 0, 0}}, // ( 57, 152) + { 0, { 0, 0, 0}}, // ( 58, 152) + { 0, { 0, 0, 0}}, // ( 59, 152) + { 0, { 0, 0, 0}}, // ( 60, 152) + { 0, { 0, 0, 0}}, // ( 61, 152) + { 0, { 0, 0, 0}}, // ( 62, 152) + { 0, { 0, 0, 0}}, // ( 63, 152) + { 0, { 0, 0, 0}}, // ( 64, 152) + { 0, { 0, 0, 0}}, // ( 65, 152) + { 0, { 0, 0, 0}}, // ( 66, 152) + { 0, { 0, 0, 0}}, // ( 67, 152) + { 0, { 0, 0, 0}}, // ( 68, 152) + { 0, { 0, 0, 0}}, // ( 69, 152) + { 0, { 0, 0, 0}}, // ( 70, 152) + { 0, { 0, 0, 0}}, // ( 71, 152) + { 0, { 0, 0, 0}}, // ( 72, 152) + { 0, { 0, 0, 0}}, // ( 73, 152) + { 0, { 0, 0, 0}}, // ( 74, 152) + { 0, { 0, 0, 0}}, // ( 75, 152) + { 0, { 0, 0, 0}}, // ( 76, 152) + { 0, { 0, 0, 0}}, // ( 77, 152) + { 0, { 0, 0, 0}}, // ( 78, 152) + { 0, { 0, 0, 0}}, // ( 79, 152) + { 0, { 0, 0, 0}}, // ( 80, 152) + { 0, { 0, 0, 0}}, // ( 81, 152) + { 0, { 0, 0, 0}}, // ( 82, 152) + { 0, { 0, 0, 0}}, // ( 83, 152) + { 0, { 0, 0, 0}}, // ( 84, 152) + { 0, { 0, 0, 0}}, // ( 85, 152) + { 0, { 0, 0, 0}}, // ( 86, 152) + { 0, { 0, 0, 0}}, // ( 87, 152) + { 0, { 0, 0, 0}}, // ( 88, 152) + { 0, { 0, 0, 0}}, // ( 89, 152) + { 0, { 0, 0, 0}}, // ( 90, 152) + { 0, { 0, 0, 0}}, // ( 91, 152) + { 0, { 0, 0, 0}}, // ( 92, 152) + { 0, { 0, 0, 0}}, // ( 93, 152) + { 0, { 0, 0, 0}}, // ( 94, 152) + { 0, { 0, 0, 0}}, // ( 95, 152) + { 0, { 0, 0, 0}}, // ( 96, 152) + { 0, { 0, 0, 0}}, // ( 97, 152) + { 0, { 0, 0, 0}}, // ( 98, 152) + { 0, { 0, 0, 0}}, // ( 99, 152) + { 0, { 0, 0, 0}}, // (100, 152) + { 0, { 0, 0, 0}}, // (101, 152) + { 0, { 0, 0, 0}}, // (102, 152) + { 0, { 0, 0, 0}}, // (103, 152) + { 0, { 0, 0, 0}}, // (104, 152) + { 0, { 0, 0, 0}}, // (105, 152) + { 0, { 0, 0, 0}}, // (106, 152) + { 0, { 0, 0, 0}}, // (107, 152) + { 0, { 0, 0, 0}}, // (108, 152) + { 0, { 0, 0, 0}}, // (109, 152) + { 0, { 0, 0, 0}}, // (110, 152) + { 0, { 0, 0, 0}}, // (111, 152) + { 0, { 0, 0, 0}}, // (112, 152) + { 0, { 0, 0, 0}}, // (113, 152) + { 0, { 0, 0, 0}}, // (114, 152) + { 0, { 0, 0, 0}}, // (115, 152) + { 0, { 0, 0, 0}}, // (116, 152) + { 0, { 0, 0, 0}}, // (117, 152) + { 0, { 0, 0, 0}}, // (118, 152) + { 0, { 0, 0, 0}}, // (119, 152) + { 0, { 0, 0, 0}}, // (120, 152) + { 0, { 0, 0, 0}}, // (121, 152) + { 0, { 0, 0, 0}}, // (122, 152) + { 0, { 0, 0, 0}}, // (123, 152) + { 0, { 0, 0, 0}}, // (124, 152) + { 0, { 0, 0, 0}}, // (125, 152) + { 0, { 0, 0, 0}}, // (126, 152) + { 0, { 0, 0, 0}}, // (127, 152) + { 0, { 0, 0, 0}}, // (128, 152) + { 0, { 0, 0, 0}}, // (129, 152) + { 0, { 0, 0, 0}}, // (130, 152) + { 0, { 0, 0, 0}}, // (131, 152) + { 0, { 0, 0, 0}}, // (132, 152) + { 0, { 0, 0, 0}}, // (133, 152) + { 0, { 0, 0, 0}}, // (134, 152) + { 0, { 0, 0, 0}}, // (135, 152) + { 0, { 0, 0, 0}}, // (136, 152) + { 0, { 0, 0, 0}}, // (137, 152) + { 0, { 0, 0, 0}}, // (138, 152) + { 0, { 0, 0, 0}}, // (139, 152) + { 0, { 0, 0, 0}}, // (140, 152) + { 0, { 0, 0, 0}}, // (141, 152) + { 0, { 0, 0, 0}}, // (142, 152) + { 0, { 0, 0, 0}}, // (143, 152) + { 0, { 0, 0, 0}}, // (144, 152) + { 0, { 0, 0, 0}}, // (145, 152) + { 0, { 0, 0, 0}}, // (146, 152) + { 0, { 0, 0, 0}}, // (147, 152) + { 0, { 0, 0, 0}}, // (148, 152) + { 0, { 0, 0, 0}}, // (149, 152) + { 0, { 0, 0, 0}}, // (150, 152) + { 21, { 0, 0, 0}}, // (151, 152) + {115, { 0, 0, 0}}, // (152, 152) + {128, { 0, 0, 0}}, // (153, 152) + {128, { 0, 0, 0}}, // (154, 152) + {128, { 0, 0, 0}}, // (155, 152) + {128, { 0, 0, 0}}, // (156, 152) + {128, { 0, 0, 0}}, // (157, 152) + {128, { 0, 0, 0}}, // (158, 152) + {128, { 0, 0, 0}}, // (159, 152) + {128, { 0, 0, 0}}, // (160, 152) + {128, { 0, 0, 0}}, // (161, 152) + {128, { 0, 0, 0}}, // (162, 152) + {128, { 0, 0, 0}}, // (163, 152) + {128, { 0, 0, 0}}, // (164, 152) + {128, { 0, 0, 0}}, // (165, 152) + {128, { 0, 0, 0}}, // (166, 152) + {128, { 0, 0, 0}}, // (167, 152) + {128, { 0, 0, 0}}, // (168, 152) + {128, { 0, 0, 0}}, // (169, 152) + {128, { 0, 0, 0}}, // (170, 152) + {128, { 0, 0, 0}}, // (171, 152) + {128, { 0, 0, 0}}, // (172, 152) + {128, { 0, 0, 0}}, // (173, 152) + {128, { 0, 0, 0}}, // (174, 152) + {128, { 0, 0, 0}}, // (175, 152) + {128, { 0, 0, 0}}, // (176, 152) + {128, { 0, 0, 0}}, // (177, 152) + {128, { 0, 0, 0}}, // (178, 152) + {128, { 0, 0, 0}}, // (179, 152) + {128, { 0, 0, 0}}, // ( 0, 153) + {128, { 0, 0, 0}}, // ( 1, 153) + {128, { 0, 0, 0}}, // ( 2, 153) + {128, { 0, 0, 0}}, // ( 3, 153) + {128, { 0, 0, 0}}, // ( 4, 153) + {128, { 0, 0, 0}}, // ( 5, 153) + {128, { 0, 0, 0}}, // ( 6, 153) + {128, { 0, 0, 0}}, // ( 7, 153) + {128, { 0, 0, 0}}, // ( 8, 153) + {128, { 0, 0, 0}}, // ( 9, 153) + {128, { 0, 0, 0}}, // ( 10, 153) + {128, { 0, 0, 0}}, // ( 11, 153) + {128, { 0, 0, 0}}, // ( 12, 153) + {128, { 0, 0, 0}}, // ( 13, 153) + {128, { 0, 0, 0}}, // ( 14, 153) + {128, { 0, 0, 0}}, // ( 15, 153) + {128, { 0, 0, 0}}, // ( 16, 153) + {128, { 0, 0, 0}}, // ( 17, 153) + {128, { 0, 0, 0}}, // ( 18, 153) + {128, { 0, 0, 0}}, // ( 19, 153) + {128, { 0, 0, 0}}, // ( 20, 153) + {128, { 0, 0, 0}}, // ( 21, 153) + {128, { 0, 0, 0}}, // ( 22, 153) + {128, { 0, 0, 0}}, // ( 23, 153) + {128, { 0, 0, 0}}, // ( 24, 153) + {128, { 0, 0, 0}}, // ( 25, 153) + {128, { 0, 0, 0}}, // ( 26, 153) + {128, { 0, 0, 0}}, // ( 27, 153) + {117, { 0, 0, 0}}, // ( 28, 153) + { 25, { 0, 0, 0}}, // ( 29, 153) + { 0, { 0, 0, 0}}, // ( 30, 153) + { 0, { 0, 0, 0}}, // ( 31, 153) + { 0, { 0, 0, 0}}, // ( 32, 153) + { 0, { 0, 0, 0}}, // ( 33, 153) + { 0, { 0, 0, 0}}, // ( 34, 153) + { 0, { 0, 0, 0}}, // ( 35, 153) + { 0, { 0, 0, 0}}, // ( 36, 153) + { 0, { 0, 0, 0}}, // ( 37, 153) + { 0, { 0, 0, 0}}, // ( 38, 153) + { 0, { 0, 0, 0}}, // ( 39, 153) + { 0, { 0, 0, 0}}, // ( 40, 153) + { 0, { 0, 0, 0}}, // ( 41, 153) + { 0, { 0, 0, 0}}, // ( 42, 153) + { 0, { 0, 0, 0}}, // ( 43, 153) + { 0, { 0, 0, 0}}, // ( 44, 153) + { 0, { 0, 0, 0}}, // ( 45, 153) + { 0, { 0, 0, 0}}, // ( 46, 153) + { 0, { 0, 0, 0}}, // ( 47, 153) + { 0, { 0, 0, 0}}, // ( 48, 153) + { 0, { 0, 0, 0}}, // ( 49, 153) + { 0, { 0, 0, 0}}, // ( 50, 153) + { 0, { 0, 0, 0}}, // ( 51, 153) + { 0, { 0, 0, 0}}, // ( 52, 153) + { 0, { 0, 0, 0}}, // ( 53, 153) + { 0, { 0, 0, 0}}, // ( 54, 153) + { 0, { 0, 0, 0}}, // ( 55, 153) + { 0, { 0, 0, 0}}, // ( 56, 153) + { 0, { 0, 0, 0}}, // ( 57, 153) + { 0, { 0, 0, 0}}, // ( 58, 153) + { 0, { 0, 0, 0}}, // ( 59, 153) + { 0, { 0, 0, 0}}, // ( 60, 153) + { 0, { 0, 0, 0}}, // ( 61, 153) + { 0, { 0, 0, 0}}, // ( 62, 153) + { 0, { 0, 0, 0}}, // ( 63, 153) + { 0, { 0, 0, 0}}, // ( 64, 153) + { 0, { 0, 0, 0}}, // ( 65, 153) + { 0, { 0, 0, 0}}, // ( 66, 153) + { 0, { 0, 0, 0}}, // ( 67, 153) + { 0, { 0, 0, 0}}, // ( 68, 153) + { 0, { 0, 0, 0}}, // ( 69, 153) + { 0, { 0, 0, 0}}, // ( 70, 153) + { 0, { 0, 0, 0}}, // ( 71, 153) + { 0, { 0, 0, 0}}, // ( 72, 153) + { 0, { 0, 0, 0}}, // ( 73, 153) + { 0, { 0, 0, 0}}, // ( 74, 153) + { 0, { 0, 0, 0}}, // ( 75, 153) + { 0, { 0, 0, 0}}, // ( 76, 153) + { 0, { 0, 0, 0}}, // ( 77, 153) + { 0, { 0, 0, 0}}, // ( 78, 153) + { 0, { 0, 0, 0}}, // ( 79, 153) + { 0, { 0, 0, 0}}, // ( 80, 153) + { 0, { 0, 0, 0}}, // ( 81, 153) + { 0, { 0, 0, 0}}, // ( 82, 153) + { 0, { 0, 0, 0}}, // ( 83, 153) + { 0, { 0, 0, 0}}, // ( 84, 153) + { 0, { 0, 0, 0}}, // ( 85, 153) + { 0, { 0, 0, 0}}, // ( 86, 153) + { 0, { 0, 0, 0}}, // ( 87, 153) + { 0, { 0, 0, 0}}, // ( 88, 153) + { 0, { 0, 0, 0}}, // ( 89, 153) + { 0, { 0, 0, 0}}, // ( 90, 153) + { 0, { 0, 0, 0}}, // ( 91, 153) + { 0, { 0, 0, 0}}, // ( 92, 153) + { 0, { 0, 0, 0}}, // ( 93, 153) + { 0, { 0, 0, 0}}, // ( 94, 153) + { 0, { 0, 0, 0}}, // ( 95, 153) + { 0, { 0, 0, 0}}, // ( 96, 153) + { 0, { 0, 0, 0}}, // ( 97, 153) + { 0, { 0, 0, 0}}, // ( 98, 153) + { 0, { 0, 0, 0}}, // ( 99, 153) + { 0, { 0, 0, 0}}, // (100, 153) + { 0, { 0, 0, 0}}, // (101, 153) + { 0, { 0, 0, 0}}, // (102, 153) + { 0, { 0, 0, 0}}, // (103, 153) + { 0, { 0, 0, 0}}, // (104, 153) + { 0, { 0, 0, 0}}, // (105, 153) + { 0, { 0, 0, 0}}, // (106, 153) + { 0, { 0, 0, 0}}, // (107, 153) + { 0, { 0, 0, 0}}, // (108, 153) + { 0, { 0, 0, 0}}, // (109, 153) + { 0, { 0, 0, 0}}, // (110, 153) + { 0, { 0, 0, 0}}, // (111, 153) + { 0, { 0, 0, 0}}, // (112, 153) + { 0, { 0, 0, 0}}, // (113, 153) + { 0, { 0, 0, 0}}, // (114, 153) + { 0, { 0, 0, 0}}, // (115, 153) + { 0, { 0, 0, 0}}, // (116, 153) + { 0, { 0, 0, 0}}, // (117, 153) + { 0, { 0, 0, 0}}, // (118, 153) + { 0, { 0, 0, 0}}, // (119, 153) + { 0, { 0, 0, 0}}, // (120, 153) + { 0, { 0, 0, 0}}, // (121, 153) + { 0, { 0, 0, 0}}, // (122, 153) + { 0, { 0, 0, 0}}, // (123, 153) + { 0, { 0, 0, 0}}, // (124, 153) + { 0, { 0, 0, 0}}, // (125, 153) + { 0, { 0, 0, 0}}, // (126, 153) + { 0, { 0, 0, 0}}, // (127, 153) + { 0, { 0, 0, 0}}, // (128, 153) + { 0, { 0, 0, 0}}, // (129, 153) + { 0, { 0, 0, 0}}, // (130, 153) + { 0, { 0, 0, 0}}, // (131, 153) + { 0, { 0, 0, 0}}, // (132, 153) + { 0, { 0, 0, 0}}, // (133, 153) + { 0, { 0, 0, 0}}, // (134, 153) + { 0, { 0, 0, 0}}, // (135, 153) + { 0, { 0, 0, 0}}, // (136, 153) + { 0, { 0, 0, 0}}, // (137, 153) + { 0, { 0, 0, 0}}, // (138, 153) + { 0, { 0, 0, 0}}, // (139, 153) + { 0, { 0, 0, 0}}, // (140, 153) + { 0, { 0, 0, 0}}, // (141, 153) + { 0, { 0, 0, 0}}, // (142, 153) + { 0, { 0, 0, 0}}, // (143, 153) + { 0, { 0, 0, 0}}, // (144, 153) + { 0, { 0, 0, 0}}, // (145, 153) + { 0, { 0, 0, 0}}, // (146, 153) + { 0, { 0, 0, 0}}, // (147, 153) + { 0, { 0, 0, 0}}, // (148, 153) + { 0, { 0, 0, 0}}, // (149, 153) + { 25, { 0, 0, 0}}, // (150, 153) + {117, { 0, 0, 0}}, // (151, 153) + {128, { 0, 0, 0}}, // (152, 153) + {128, { 0, 0, 0}}, // (153, 153) + {128, { 0, 0, 0}}, // (154, 153) + {128, { 0, 0, 0}}, // (155, 153) + {128, { 0, 0, 0}}, // (156, 153) + {128, { 0, 0, 0}}, // (157, 153) + {128, { 0, 0, 0}}, // (158, 153) + {128, { 0, 0, 0}}, // (159, 153) + {128, { 0, 0, 0}}, // (160, 153) + {128, { 0, 0, 0}}, // (161, 153) + {128, { 0, 0, 0}}, // (162, 153) + {128, { 0, 0, 0}}, // (163, 153) + {128, { 0, 0, 0}}, // (164, 153) + {128, { 0, 0, 0}}, // (165, 153) + {128, { 0, 0, 0}}, // (166, 153) + {128, { 0, 0, 0}}, // (167, 153) + {128, { 0, 0, 0}}, // (168, 153) + {128, { 0, 0, 0}}, // (169, 153) + {128, { 0, 0, 0}}, // (170, 153) + {128, { 0, 0, 0}}, // (171, 153) + {128, { 0, 0, 0}}, // (172, 153) + {128, { 0, 0, 0}}, // (173, 153) + {128, { 0, 0, 0}}, // (174, 153) + {128, { 0, 0, 0}}, // (175, 153) + {128, { 0, 0, 0}}, // (176, 153) + {128, { 0, 0, 0}}, // (177, 153) + {128, { 0, 0, 0}}, // (178, 153) + {128, { 0, 0, 0}}, // (179, 153) + {128, { 0, 0, 0}}, // ( 0, 154) + {128, { 0, 0, 0}}, // ( 1, 154) + {128, { 0, 0, 0}}, // ( 2, 154) + {128, { 0, 0, 0}}, // ( 3, 154) + {128, { 0, 0, 0}}, // ( 4, 154) + {128, { 0, 0, 0}}, // ( 5, 154) + {128, { 0, 0, 0}}, // ( 6, 154) + {128, { 0, 0, 0}}, // ( 7, 154) + {128, { 0, 0, 0}}, // ( 8, 154) + {128, { 0, 0, 0}}, // ( 9, 154) + {128, { 0, 0, 0}}, // ( 10, 154) + {128, { 0, 0, 0}}, // ( 11, 154) + {128, { 0, 0, 0}}, // ( 12, 154) + {128, { 0, 0, 0}}, // ( 13, 154) + {128, { 0, 0, 0}}, // ( 14, 154) + {128, { 0, 0, 0}}, // ( 15, 154) + {128, { 0, 0, 0}}, // ( 16, 154) + {128, { 0, 0, 0}}, // ( 17, 154) + {128, { 0, 0, 0}}, // ( 18, 154) + {128, { 0, 0, 0}}, // ( 19, 154) + {128, { 0, 0, 0}}, // ( 20, 154) + {128, { 0, 0, 0}}, // ( 21, 154) + {128, { 0, 0, 0}}, // ( 22, 154) + {128, { 0, 0, 0}}, // ( 23, 154) + {128, { 0, 0, 0}}, // ( 24, 154) + {128, { 0, 0, 0}}, // ( 25, 154) + {128, { 0, 0, 0}}, // ( 26, 154) + {128, { 0, 0, 0}}, // ( 27, 154) + {128, { 0, 0, 0}}, // ( 28, 154) + {120, { 0, 0, 0}}, // ( 29, 154) + { 29, { 0, 0, 0}}, // ( 30, 154) + { 0, { 0, 0, 0}}, // ( 31, 154) + { 0, { 0, 0, 0}}, // ( 32, 154) + { 0, { 0, 0, 0}}, // ( 33, 154) + { 0, { 0, 0, 0}}, // ( 34, 154) + { 0, { 0, 0, 0}}, // ( 35, 154) + { 0, { 0, 0, 0}}, // ( 36, 154) + { 0, { 0, 0, 0}}, // ( 37, 154) + { 0, { 0, 0, 0}}, // ( 38, 154) + { 0, { 0, 0, 0}}, // ( 39, 154) + { 0, { 0, 0, 0}}, // ( 40, 154) + { 0, { 0, 0, 0}}, // ( 41, 154) + { 0, { 0, 0, 0}}, // ( 42, 154) + { 0, { 0, 0, 0}}, // ( 43, 154) + { 0, { 0, 0, 0}}, // ( 44, 154) + { 0, { 0, 0, 0}}, // ( 45, 154) + { 0, { 0, 0, 0}}, // ( 46, 154) + { 0, { 0, 0, 0}}, // ( 47, 154) + { 0, { 0, 0, 0}}, // ( 48, 154) + { 0, { 0, 0, 0}}, // ( 49, 154) + { 0, { 0, 0, 0}}, // ( 50, 154) + { 0, { 0, 0, 0}}, // ( 51, 154) + { 0, { 0, 0, 0}}, // ( 52, 154) + { 0, { 0, 0, 0}}, // ( 53, 154) + { 0, { 0, 0, 0}}, // ( 54, 154) + { 0, { 0, 0, 0}}, // ( 55, 154) + { 0, { 0, 0, 0}}, // ( 56, 154) + { 0, { 0, 0, 0}}, // ( 57, 154) + { 0, { 0, 0, 0}}, // ( 58, 154) + { 0, { 0, 0, 0}}, // ( 59, 154) + { 0, { 0, 0, 0}}, // ( 60, 154) + { 0, { 0, 0, 0}}, // ( 61, 154) + { 0, { 0, 0, 0}}, // ( 62, 154) + { 0, { 0, 0, 0}}, // ( 63, 154) + { 0, { 0, 0, 0}}, // ( 64, 154) + { 0, { 0, 0, 0}}, // ( 65, 154) + { 0, { 0, 0, 0}}, // ( 66, 154) + { 0, { 0, 0, 0}}, // ( 67, 154) + { 0, { 0, 0, 0}}, // ( 68, 154) + { 0, { 0, 0, 0}}, // ( 69, 154) + { 0, { 0, 0, 0}}, // ( 70, 154) + { 0, { 0, 0, 0}}, // ( 71, 154) + { 0, { 0, 0, 0}}, // ( 72, 154) + { 0, { 0, 0, 0}}, // ( 73, 154) + { 0, { 0, 0, 0}}, // ( 74, 154) + { 0, { 0, 0, 0}}, // ( 75, 154) + { 0, { 0, 0, 0}}, // ( 76, 154) + { 0, { 0, 0, 0}}, // ( 77, 154) + { 0, { 0, 0, 0}}, // ( 78, 154) + { 0, { 0, 0, 0}}, // ( 79, 154) + { 0, { 0, 0, 0}}, // ( 80, 154) + { 0, { 0, 0, 0}}, // ( 81, 154) + { 0, { 0, 0, 0}}, // ( 82, 154) + { 0, { 0, 0, 0}}, // ( 83, 154) + { 0, { 0, 0, 0}}, // ( 84, 154) + { 0, { 0, 0, 0}}, // ( 85, 154) + { 0, { 0, 0, 0}}, // ( 86, 154) + { 0, { 0, 0, 0}}, // ( 87, 154) + { 0, { 0, 0, 0}}, // ( 88, 154) + { 0, { 0, 0, 0}}, // ( 89, 154) + { 0, { 0, 0, 0}}, // ( 90, 154) + { 0, { 0, 0, 0}}, // ( 91, 154) + { 0, { 0, 0, 0}}, // ( 92, 154) + { 0, { 0, 0, 0}}, // ( 93, 154) + { 0, { 0, 0, 0}}, // ( 94, 154) + { 0, { 0, 0, 0}}, // ( 95, 154) + { 0, { 0, 0, 0}}, // ( 96, 154) + { 0, { 0, 0, 0}}, // ( 97, 154) + { 0, { 0, 0, 0}}, // ( 98, 154) + { 0, { 0, 0, 0}}, // ( 99, 154) + { 0, { 0, 0, 0}}, // (100, 154) + { 0, { 0, 0, 0}}, // (101, 154) + { 0, { 0, 0, 0}}, // (102, 154) + { 0, { 0, 0, 0}}, // (103, 154) + { 0, { 0, 0, 0}}, // (104, 154) + { 0, { 0, 0, 0}}, // (105, 154) + { 0, { 0, 0, 0}}, // (106, 154) + { 0, { 0, 0, 0}}, // (107, 154) + { 0, { 0, 0, 0}}, // (108, 154) + { 0, { 0, 0, 0}}, // (109, 154) + { 0, { 0, 0, 0}}, // (110, 154) + { 0, { 0, 0, 0}}, // (111, 154) + { 0, { 0, 0, 0}}, // (112, 154) + { 0, { 0, 0, 0}}, // (113, 154) + { 0, { 0, 0, 0}}, // (114, 154) + { 0, { 0, 0, 0}}, // (115, 154) + { 0, { 0, 0, 0}}, // (116, 154) + { 0, { 0, 0, 0}}, // (117, 154) + { 0, { 0, 0, 0}}, // (118, 154) + { 0, { 0, 0, 0}}, // (119, 154) + { 0, { 0, 0, 0}}, // (120, 154) + { 0, { 0, 0, 0}}, // (121, 154) + { 0, { 0, 0, 0}}, // (122, 154) + { 0, { 0, 0, 0}}, // (123, 154) + { 0, { 0, 0, 0}}, // (124, 154) + { 0, { 0, 0, 0}}, // (125, 154) + { 0, { 0, 0, 0}}, // (126, 154) + { 0, { 0, 0, 0}}, // (127, 154) + { 0, { 0, 0, 0}}, // (128, 154) + { 0, { 0, 0, 0}}, // (129, 154) + { 0, { 0, 0, 0}}, // (130, 154) + { 0, { 0, 0, 0}}, // (131, 154) + { 0, { 0, 0, 0}}, // (132, 154) + { 0, { 0, 0, 0}}, // (133, 154) + { 0, { 0, 0, 0}}, // (134, 154) + { 0, { 0, 0, 0}}, // (135, 154) + { 0, { 0, 0, 0}}, // (136, 154) + { 0, { 0, 0, 0}}, // (137, 154) + { 0, { 0, 0, 0}}, // (138, 154) + { 0, { 0, 0, 0}}, // (139, 154) + { 0, { 0, 0, 0}}, // (140, 154) + { 0, { 0, 0, 0}}, // (141, 154) + { 0, { 0, 0, 0}}, // (142, 154) + { 0, { 0, 0, 0}}, // (143, 154) + { 0, { 0, 0, 0}}, // (144, 154) + { 0, { 0, 0, 0}}, // (145, 154) + { 0, { 0, 0, 0}}, // (146, 154) + { 0, { 0, 0, 0}}, // (147, 154) + { 0, { 0, 0, 0}}, // (148, 154) + { 29, { 0, 0, 0}}, // (149, 154) + {120, { 0, 0, 0}}, // (150, 154) + {128, { 0, 0, 0}}, // (151, 154) + {128, { 0, 0, 0}}, // (152, 154) + {128, { 0, 0, 0}}, // (153, 154) + {128, { 0, 0, 0}}, // (154, 154) + {128, { 0, 0, 0}}, // (155, 154) + {128, { 0, 0, 0}}, // (156, 154) + {128, { 0, 0, 0}}, // (157, 154) + {128, { 0, 0, 0}}, // (158, 154) + {128, { 0, 0, 0}}, // (159, 154) + {128, { 0, 0, 0}}, // (160, 154) + {128, { 0, 0, 0}}, // (161, 154) + {128, { 0, 0, 0}}, // (162, 154) + {128, { 0, 0, 0}}, // (163, 154) + {128, { 0, 0, 0}}, // (164, 154) + {128, { 0, 0, 0}}, // (165, 154) + {128, { 0, 0, 0}}, // (166, 154) + {128, { 0, 0, 0}}, // (167, 154) + {128, { 0, 0, 0}}, // (168, 154) + {128, { 0, 0, 0}}, // (169, 154) + {128, { 0, 0, 0}}, // (170, 154) + {128, { 0, 0, 0}}, // (171, 154) + {128, { 0, 0, 0}}, // (172, 154) + {128, { 0, 0, 0}}, // (173, 154) + {128, { 0, 0, 0}}, // (174, 154) + {128, { 0, 0, 0}}, // (175, 154) + {128, { 0, 0, 0}}, // (176, 154) + {128, { 0, 0, 0}}, // (177, 154) + {128, { 0, 0, 0}}, // (178, 154) + {128, { 0, 0, 0}}, // (179, 154) + {128, { 0, 0, 0}}, // ( 0, 155) + {128, { 0, 0, 0}}, // ( 1, 155) + {128, { 0, 0, 0}}, // ( 2, 155) + {128, { 0, 0, 0}}, // ( 3, 155) + {128, { 0, 0, 0}}, // ( 4, 155) + {128, { 0, 0, 0}}, // ( 5, 155) + {128, { 0, 0, 0}}, // ( 6, 155) + {128, { 0, 0, 0}}, // ( 7, 155) + {128, { 0, 0, 0}}, // ( 8, 155) + {128, { 0, 0, 0}}, // ( 9, 155) + {128, { 0, 0, 0}}, // ( 10, 155) + {128, { 0, 0, 0}}, // ( 11, 155) + {128, { 0, 0, 0}}, // ( 12, 155) + {128, { 0, 0, 0}}, // ( 13, 155) + {128, { 0, 0, 0}}, // ( 14, 155) + {128, { 0, 0, 0}}, // ( 15, 155) + {128, { 0, 0, 0}}, // ( 16, 155) + {128, { 0, 0, 0}}, // ( 17, 155) + {128, { 0, 0, 0}}, // ( 18, 155) + {128, { 0, 0, 0}}, // ( 19, 155) + {128, { 0, 0, 0}}, // ( 20, 155) + {128, { 0, 0, 0}}, // ( 21, 155) + {128, { 0, 0, 0}}, // ( 22, 155) + {128, { 0, 0, 0}}, // ( 23, 155) + {128, { 0, 0, 0}}, // ( 24, 155) + {128, { 0, 0, 0}}, // ( 25, 155) + {128, { 0, 0, 0}}, // ( 26, 155) + {128, { 0, 0, 0}}, // ( 27, 155) + {128, { 0, 0, 0}}, // ( 28, 155) + {128, { 0, 0, 0}}, // ( 29, 155) + {122, { 0, 0, 0}}, // ( 30, 155) + { 36, { 0, 0, 0}}, // ( 31, 155) + { 0, { 0, 0, 0}}, // ( 32, 155) + { 0, { 0, 0, 0}}, // ( 33, 155) + { 0, { 0, 0, 0}}, // ( 34, 155) + { 0, { 0, 0, 0}}, // ( 35, 155) + { 0, { 0, 0, 0}}, // ( 36, 155) + { 0, { 0, 0, 0}}, // ( 37, 155) + { 0, { 0, 0, 0}}, // ( 38, 155) + { 0, { 0, 0, 0}}, // ( 39, 155) + { 0, { 0, 0, 0}}, // ( 40, 155) + { 0, { 0, 0, 0}}, // ( 41, 155) + { 0, { 0, 0, 0}}, // ( 42, 155) + { 0, { 0, 0, 0}}, // ( 43, 155) + { 0, { 0, 0, 0}}, // ( 44, 155) + { 0, { 0, 0, 0}}, // ( 45, 155) + { 0, { 0, 0, 0}}, // ( 46, 155) + { 0, { 0, 0, 0}}, // ( 47, 155) + { 0, { 0, 0, 0}}, // ( 48, 155) + { 0, { 0, 0, 0}}, // ( 49, 155) + { 0, { 0, 0, 0}}, // ( 50, 155) + { 0, { 0, 0, 0}}, // ( 51, 155) + { 0, { 0, 0, 0}}, // ( 52, 155) + { 0, { 0, 0, 0}}, // ( 53, 155) + { 0, { 0, 0, 0}}, // ( 54, 155) + { 0, { 0, 0, 0}}, // ( 55, 155) + { 0, { 0, 0, 0}}, // ( 56, 155) + { 0, { 0, 0, 0}}, // ( 57, 155) + { 0, { 0, 0, 0}}, // ( 58, 155) + { 0, { 0, 0, 0}}, // ( 59, 155) + { 0, { 0, 0, 0}}, // ( 60, 155) + { 0, { 0, 0, 0}}, // ( 61, 155) + { 0, { 0, 0, 0}}, // ( 62, 155) + { 0, { 0, 0, 0}}, // ( 63, 155) + { 0, { 0, 0, 0}}, // ( 64, 155) + { 0, { 0, 0, 0}}, // ( 65, 155) + { 0, { 0, 0, 0}}, // ( 66, 155) + { 0, { 0, 0, 0}}, // ( 67, 155) + { 0, { 0, 0, 0}}, // ( 68, 155) + { 0, { 0, 0, 0}}, // ( 69, 155) + { 0, { 0, 0, 0}}, // ( 70, 155) + { 0, { 0, 0, 0}}, // ( 71, 155) + { 0, { 0, 0, 0}}, // ( 72, 155) + { 0, { 0, 0, 0}}, // ( 73, 155) + { 0, { 0, 0, 0}}, // ( 74, 155) + { 0, { 0, 0, 0}}, // ( 75, 155) + { 0, { 0, 0, 0}}, // ( 76, 155) + { 0, { 0, 0, 0}}, // ( 77, 155) + { 0, { 0, 0, 0}}, // ( 78, 155) + { 0, { 0, 0, 0}}, // ( 79, 155) + { 0, { 0, 0, 0}}, // ( 80, 155) + { 0, { 0, 0, 0}}, // ( 81, 155) + { 0, { 0, 0, 0}}, // ( 82, 155) + { 0, { 0, 0, 0}}, // ( 83, 155) + { 0, { 0, 0, 0}}, // ( 84, 155) + { 0, { 0, 0, 0}}, // ( 85, 155) + { 0, { 0, 0, 0}}, // ( 86, 155) + { 0, { 0, 0, 0}}, // ( 87, 155) + { 0, { 0, 0, 0}}, // ( 88, 155) + { 0, { 0, 0, 0}}, // ( 89, 155) + { 0, { 0, 0, 0}}, // ( 90, 155) + { 0, { 0, 0, 0}}, // ( 91, 155) + { 0, { 0, 0, 0}}, // ( 92, 155) + { 0, { 0, 0, 0}}, // ( 93, 155) + { 0, { 0, 0, 0}}, // ( 94, 155) + { 0, { 0, 0, 0}}, // ( 95, 155) + { 0, { 0, 0, 0}}, // ( 96, 155) + { 0, { 0, 0, 0}}, // ( 97, 155) + { 0, { 0, 0, 0}}, // ( 98, 155) + { 0, { 0, 0, 0}}, // ( 99, 155) + { 0, { 0, 0, 0}}, // (100, 155) + { 0, { 0, 0, 0}}, // (101, 155) + { 0, { 0, 0, 0}}, // (102, 155) + { 0, { 0, 0, 0}}, // (103, 155) + { 0, { 0, 0, 0}}, // (104, 155) + { 0, { 0, 0, 0}}, // (105, 155) + { 0, { 0, 0, 0}}, // (106, 155) + { 0, { 0, 0, 0}}, // (107, 155) + { 0, { 0, 0, 0}}, // (108, 155) + { 0, { 0, 0, 0}}, // (109, 155) + { 0, { 0, 0, 0}}, // (110, 155) + { 0, { 0, 0, 0}}, // (111, 155) + { 0, { 0, 0, 0}}, // (112, 155) + { 0, { 0, 0, 0}}, // (113, 155) + { 0, { 0, 0, 0}}, // (114, 155) + { 0, { 0, 0, 0}}, // (115, 155) + { 0, { 0, 0, 0}}, // (116, 155) + { 0, { 0, 0, 0}}, // (117, 155) + { 0, { 0, 0, 0}}, // (118, 155) + { 0, { 0, 0, 0}}, // (119, 155) + { 0, { 0, 0, 0}}, // (120, 155) + { 0, { 0, 0, 0}}, // (121, 155) + { 0, { 0, 0, 0}}, // (122, 155) + { 0, { 0, 0, 0}}, // (123, 155) + { 0, { 0, 0, 0}}, // (124, 155) + { 0, { 0, 0, 0}}, // (125, 155) + { 0, { 0, 0, 0}}, // (126, 155) + { 0, { 0, 0, 0}}, // (127, 155) + { 0, { 0, 0, 0}}, // (128, 155) + { 0, { 0, 0, 0}}, // (129, 155) + { 0, { 0, 0, 0}}, // (130, 155) + { 0, { 0, 0, 0}}, // (131, 155) + { 0, { 0, 0, 0}}, // (132, 155) + { 0, { 0, 0, 0}}, // (133, 155) + { 0, { 0, 0, 0}}, // (134, 155) + { 0, { 0, 0, 0}}, // (135, 155) + { 0, { 0, 0, 0}}, // (136, 155) + { 0, { 0, 0, 0}}, // (137, 155) + { 0, { 0, 0, 0}}, // (138, 155) + { 0, { 0, 0, 0}}, // (139, 155) + { 0, { 0, 0, 0}}, // (140, 155) + { 0, { 0, 0, 0}}, // (141, 155) + { 0, { 0, 0, 0}}, // (142, 155) + { 0, { 0, 0, 0}}, // (143, 155) + { 0, { 0, 0, 0}}, // (144, 155) + { 0, { 0, 0, 0}}, // (145, 155) + { 0, { 0, 0, 0}}, // (146, 155) + { 0, { 0, 0, 0}}, // (147, 155) + { 36, { 0, 0, 0}}, // (148, 155) + {122, { 0, 0, 0}}, // (149, 155) + {128, { 0, 0, 0}}, // (150, 155) + {128, { 0, 0, 0}}, // (151, 155) + {128, { 0, 0, 0}}, // (152, 155) + {128, { 0, 0, 0}}, // (153, 155) + {128, { 0, 0, 0}}, // (154, 155) + {128, { 0, 0, 0}}, // (155, 155) + {128, { 0, 0, 0}}, // (156, 155) + {128, { 0, 0, 0}}, // (157, 155) + {128, { 0, 0, 0}}, // (158, 155) + {128, { 0, 0, 0}}, // (159, 155) + {128, { 0, 0, 0}}, // (160, 155) + {128, { 0, 0, 0}}, // (161, 155) + {128, { 0, 0, 0}}, // (162, 155) + {128, { 0, 0, 0}}, // (163, 155) + {128, { 0, 0, 0}}, // (164, 155) + {128, { 0, 0, 0}}, // (165, 155) + {128, { 0, 0, 0}}, // (166, 155) + {128, { 0, 0, 0}}, // (167, 155) + {128, { 0, 0, 0}}, // (168, 155) + {128, { 0, 0, 0}}, // (169, 155) + {128, { 0, 0, 0}}, // (170, 155) + {128, { 0, 0, 0}}, // (171, 155) + {128, { 0, 0, 0}}, // (172, 155) + {128, { 0, 0, 0}}, // (173, 155) + {128, { 0, 0, 0}}, // (174, 155) + {128, { 0, 0, 0}}, // (175, 155) + {128, { 0, 0, 0}}, // (176, 155) + {128, { 0, 0, 0}}, // (177, 155) + {128, { 0, 0, 0}}, // (178, 155) + {128, { 0, 0, 0}}, // (179, 155) + {128, { 0, 0, 0}}, // ( 0, 156) + {128, { 0, 0, 0}}, // ( 1, 156) + {128, { 0, 0, 0}}, // ( 2, 156) + {128, { 0, 0, 0}}, // ( 3, 156) + {128, { 0, 0, 0}}, // ( 4, 156) + {128, { 0, 0, 0}}, // ( 5, 156) + {128, { 0, 0, 0}}, // ( 6, 156) + {128, { 0, 0, 0}}, // ( 7, 156) + {128, { 0, 0, 0}}, // ( 8, 156) + {128, { 0, 0, 0}}, // ( 9, 156) + {128, { 0, 0, 0}}, // ( 10, 156) + {128, { 0, 0, 0}}, // ( 11, 156) + {128, { 0, 0, 0}}, // ( 12, 156) + {128, { 0, 0, 0}}, // ( 13, 156) + {128, { 0, 0, 0}}, // ( 14, 156) + {128, { 0, 0, 0}}, // ( 15, 156) + {128, { 0, 0, 0}}, // ( 16, 156) + {128, { 0, 0, 0}}, // ( 17, 156) + {128, { 0, 0, 0}}, // ( 18, 156) + {128, { 0, 0, 0}}, // ( 19, 156) + {128, { 0, 0, 0}}, // ( 20, 156) + {128, { 0, 0, 0}}, // ( 21, 156) + {128, { 0, 0, 0}}, // ( 22, 156) + {128, { 0, 0, 0}}, // ( 23, 156) + {128, { 0, 0, 0}}, // ( 24, 156) + {128, { 0, 0, 0}}, // ( 25, 156) + {128, { 0, 0, 0}}, // ( 26, 156) + {128, { 0, 0, 0}}, // ( 27, 156) + {128, { 0, 0, 0}}, // ( 28, 156) + {128, { 0, 0, 0}}, // ( 29, 156) + {128, { 0, 0, 0}}, // ( 30, 156) + {126, { 0, 0, 0}}, // ( 31, 156) + { 49, { 0, 0, 0}}, // ( 32, 156) + { 0, { 0, 0, 0}}, // ( 33, 156) + { 0, { 0, 0, 0}}, // ( 34, 156) + { 0, { 0, 0, 0}}, // ( 35, 156) + { 0, { 0, 0, 0}}, // ( 36, 156) + { 0, { 0, 0, 0}}, // ( 37, 156) + { 0, { 0, 0, 0}}, // ( 38, 156) + { 0, { 0, 0, 0}}, // ( 39, 156) + { 0, { 0, 0, 0}}, // ( 40, 156) + { 0, { 0, 0, 0}}, // ( 41, 156) + { 0, { 0, 0, 0}}, // ( 42, 156) + { 0, { 0, 0, 0}}, // ( 43, 156) + { 0, { 0, 0, 0}}, // ( 44, 156) + { 0, { 0, 0, 0}}, // ( 45, 156) + { 0, { 0, 0, 0}}, // ( 46, 156) + { 0, { 0, 0, 0}}, // ( 47, 156) + { 0, { 0, 0, 0}}, // ( 48, 156) + { 0, { 0, 0, 0}}, // ( 49, 156) + { 0, { 0, 0, 0}}, // ( 50, 156) + { 0, { 0, 0, 0}}, // ( 51, 156) + { 0, { 0, 0, 0}}, // ( 52, 156) + { 0, { 0, 0, 0}}, // ( 53, 156) + { 0, { 0, 0, 0}}, // ( 54, 156) + { 0, { 0, 0, 0}}, // ( 55, 156) + { 0, { 0, 0, 0}}, // ( 56, 156) + { 0, { 0, 0, 0}}, // ( 57, 156) + { 0, { 0, 0, 0}}, // ( 58, 156) + { 0, { 0, 0, 0}}, // ( 59, 156) + { 0, { 0, 0, 0}}, // ( 60, 156) + { 0, { 0, 0, 0}}, // ( 61, 156) + { 0, { 0, 0, 0}}, // ( 62, 156) + { 0, { 0, 0, 0}}, // ( 63, 156) + { 0, { 0, 0, 0}}, // ( 64, 156) + { 0, { 0, 0, 0}}, // ( 65, 156) + { 0, { 0, 0, 0}}, // ( 66, 156) + { 0, { 0, 0, 0}}, // ( 67, 156) + { 0, { 0, 0, 0}}, // ( 68, 156) + { 0, { 0, 0, 0}}, // ( 69, 156) + { 0, { 0, 0, 0}}, // ( 70, 156) + { 0, { 0, 0, 0}}, // ( 71, 156) + { 0, { 0, 0, 0}}, // ( 72, 156) + { 0, { 0, 0, 0}}, // ( 73, 156) + { 0, { 0, 0, 0}}, // ( 74, 156) + { 0, { 0, 0, 0}}, // ( 75, 156) + { 0, { 0, 0, 0}}, // ( 76, 156) + { 0, { 0, 0, 0}}, // ( 77, 156) + { 0, { 0, 0, 0}}, // ( 78, 156) + { 0, { 0, 0, 0}}, // ( 79, 156) + { 0, { 0, 0, 0}}, // ( 80, 156) + { 0, { 0, 0, 0}}, // ( 81, 156) + { 0, { 0, 0, 0}}, // ( 82, 156) + { 0, { 0, 0, 0}}, // ( 83, 156) + { 0, { 0, 0, 0}}, // ( 84, 156) + { 0, { 0, 0, 0}}, // ( 85, 156) + { 0, { 0, 0, 0}}, // ( 86, 156) + { 0, { 0, 0, 0}}, // ( 87, 156) + { 0, { 0, 0, 0}}, // ( 88, 156) + { 0, { 0, 0, 0}}, // ( 89, 156) + { 0, { 0, 0, 0}}, // ( 90, 156) + { 0, { 0, 0, 0}}, // ( 91, 156) + { 0, { 0, 0, 0}}, // ( 92, 156) + { 0, { 0, 0, 0}}, // ( 93, 156) + { 0, { 0, 0, 0}}, // ( 94, 156) + { 0, { 0, 0, 0}}, // ( 95, 156) + { 0, { 0, 0, 0}}, // ( 96, 156) + { 0, { 0, 0, 0}}, // ( 97, 156) + { 0, { 0, 0, 0}}, // ( 98, 156) + { 0, { 0, 0, 0}}, // ( 99, 156) + { 0, { 0, 0, 0}}, // (100, 156) + { 0, { 0, 0, 0}}, // (101, 156) + { 0, { 0, 0, 0}}, // (102, 156) + { 0, { 0, 0, 0}}, // (103, 156) + { 0, { 0, 0, 0}}, // (104, 156) + { 0, { 0, 0, 0}}, // (105, 156) + { 0, { 0, 0, 0}}, // (106, 156) + { 0, { 0, 0, 0}}, // (107, 156) + { 0, { 0, 0, 0}}, // (108, 156) + { 0, { 0, 0, 0}}, // (109, 156) + { 0, { 0, 0, 0}}, // (110, 156) + { 0, { 0, 0, 0}}, // (111, 156) + { 0, { 0, 0, 0}}, // (112, 156) + { 0, { 0, 0, 0}}, // (113, 156) + { 0, { 0, 0, 0}}, // (114, 156) + { 0, { 0, 0, 0}}, // (115, 156) + { 0, { 0, 0, 0}}, // (116, 156) + { 0, { 0, 0, 0}}, // (117, 156) + { 0, { 0, 0, 0}}, // (118, 156) + { 0, { 0, 0, 0}}, // (119, 156) + { 0, { 0, 0, 0}}, // (120, 156) + { 0, { 0, 0, 0}}, // (121, 156) + { 0, { 0, 0, 0}}, // (122, 156) + { 0, { 0, 0, 0}}, // (123, 156) + { 0, { 0, 0, 0}}, // (124, 156) + { 0, { 0, 0, 0}}, // (125, 156) + { 0, { 0, 0, 0}}, // (126, 156) + { 0, { 0, 0, 0}}, // (127, 156) + { 0, { 0, 0, 0}}, // (128, 156) + { 0, { 0, 0, 0}}, // (129, 156) + { 0, { 0, 0, 0}}, // (130, 156) + { 0, { 0, 0, 0}}, // (131, 156) + { 0, { 0, 0, 0}}, // (132, 156) + { 0, { 0, 0, 0}}, // (133, 156) + { 0, { 0, 0, 0}}, // (134, 156) + { 0, { 0, 0, 0}}, // (135, 156) + { 0, { 0, 0, 0}}, // (136, 156) + { 0, { 0, 0, 0}}, // (137, 156) + { 0, { 0, 0, 0}}, // (138, 156) + { 0, { 0, 0, 0}}, // (139, 156) + { 0, { 0, 0, 0}}, // (140, 156) + { 0, { 0, 0, 0}}, // (141, 156) + { 0, { 0, 0, 0}}, // (142, 156) + { 0, { 0, 0, 0}}, // (143, 156) + { 0, { 0, 0, 0}}, // (144, 156) + { 0, { 0, 0, 0}}, // (145, 156) + { 0, { 0, 0, 0}}, // (146, 156) + { 49, { 0, 0, 0}}, // (147, 156) + {125, { 0, 0, 0}}, // (148, 156) + {128, { 0, 0, 0}}, // (149, 156) + {128, { 0, 0, 0}}, // (150, 156) + {128, { 0, 0, 0}}, // (151, 156) + {128, { 0, 0, 0}}, // (152, 156) + {128, { 0, 0, 0}}, // (153, 156) + {128, { 0, 0, 0}}, // (154, 156) + {128, { 0, 0, 0}}, // (155, 156) + {128, { 0, 0, 0}}, // (156, 156) + {128, { 0, 0, 0}}, // (157, 156) + {128, { 0, 0, 0}}, // (158, 156) + {128, { 0, 0, 0}}, // (159, 156) + {128, { 0, 0, 0}}, // (160, 156) + {128, { 0, 0, 0}}, // (161, 156) + {128, { 0, 0, 0}}, // (162, 156) + {128, { 0, 0, 0}}, // (163, 156) + {128, { 0, 0, 0}}, // (164, 156) + {128, { 0, 0, 0}}, // (165, 156) + {128, { 0, 0, 0}}, // (166, 156) + {128, { 0, 0, 0}}, // (167, 156) + {128, { 0, 0, 0}}, // (168, 156) + {128, { 0, 0, 0}}, // (169, 156) + {128, { 0, 0, 0}}, // (170, 156) + {128, { 0, 0, 0}}, // (171, 156) + {128, { 0, 0, 0}}, // (172, 156) + {128, { 0, 0, 0}}, // (173, 156) + {128, { 0, 0, 0}}, // (174, 156) + {128, { 0, 0, 0}}, // (175, 156) + {128, { 0, 0, 0}}, // (176, 156) + {128, { 0, 0, 0}}, // (177, 156) + {128, { 0, 0, 0}}, // (178, 156) + {128, { 0, 0, 0}}, // (179, 156) + {128, { 0, 0, 0}}, // ( 0, 157) + {128, { 0, 0, 0}}, // ( 1, 157) + {128, { 0, 0, 0}}, // ( 2, 157) + {128, { 0, 0, 0}}, // ( 3, 157) + {128, { 0, 0, 0}}, // ( 4, 157) + {128, { 0, 0, 0}}, // ( 5, 157) + {128, { 0, 0, 0}}, // ( 6, 157) + {128, { 0, 0, 0}}, // ( 7, 157) + {128, { 0, 0, 0}}, // ( 8, 157) + {128, { 0, 0, 0}}, // ( 9, 157) + {128, { 0, 0, 0}}, // ( 10, 157) + {128, { 0, 0, 0}}, // ( 11, 157) + {128, { 0, 0, 0}}, // ( 12, 157) + {128, { 0, 0, 0}}, // ( 13, 157) + {128, { 0, 0, 0}}, // ( 14, 157) + {128, { 0, 0, 0}}, // ( 15, 157) + {128, { 0, 0, 0}}, // ( 16, 157) + {128, { 0, 0, 0}}, // ( 17, 157) + {128, { 0, 0, 0}}, // ( 18, 157) + {128, { 0, 0, 0}}, // ( 19, 157) + {128, { 0, 0, 0}}, // ( 20, 157) + {128, { 0, 0, 0}}, // ( 21, 157) + {128, { 0, 0, 0}}, // ( 22, 157) + {128, { 0, 0, 0}}, // ( 23, 157) + {128, { 0, 0, 0}}, // ( 24, 157) + {128, { 0, 0, 0}}, // ( 25, 157) + {128, { 0, 0, 0}}, // ( 26, 157) + {128, { 0, 0, 0}}, // ( 27, 157) + {128, { 0, 0, 0}}, // ( 28, 157) + {128, { 0, 0, 0}}, // ( 29, 157) + {128, { 0, 0, 0}}, // ( 30, 157) + {128, { 0, 0, 0}}, // ( 31, 157) + {128, { 0, 0, 0}}, // ( 32, 157) + { 69, { 0, 0, 0}}, // ( 33, 157) + { 1, { 0, 0, 0}}, // ( 34, 157) + { 0, { 0, 0, 0}}, // ( 35, 157) + { 0, { 0, 0, 0}}, // ( 36, 157) + { 0, { 0, 0, 0}}, // ( 37, 157) + { 0, { 0, 0, 0}}, // ( 38, 157) + { 0, { 0, 0, 0}}, // ( 39, 157) + { 0, { 0, 0, 0}}, // ( 40, 157) + { 0, { 0, 0, 0}}, // ( 41, 157) + { 0, { 0, 0, 0}}, // ( 42, 157) + { 0, { 0, 0, 0}}, // ( 43, 157) + { 0, { 0, 0, 0}}, // ( 44, 157) + { 0, { 0, 0, 0}}, // ( 45, 157) + { 0, { 0, 0, 0}}, // ( 46, 157) + { 0, { 0, 0, 0}}, // ( 47, 157) + { 0, { 0, 0, 0}}, // ( 48, 157) + { 0, { 0, 0, 0}}, // ( 49, 157) + { 0, { 0, 0, 0}}, // ( 50, 157) + { 0, { 0, 0, 0}}, // ( 51, 157) + { 0, { 0, 0, 0}}, // ( 52, 157) + { 0, { 0, 0, 0}}, // ( 53, 157) + { 0, { 0, 0, 0}}, // ( 54, 157) + { 0, { 0, 0, 0}}, // ( 55, 157) + { 0, { 0, 0, 0}}, // ( 56, 157) + { 0, { 0, 0, 0}}, // ( 57, 157) + { 0, { 0, 0, 0}}, // ( 58, 157) + { 0, { 0, 0, 0}}, // ( 59, 157) + { 0, { 0, 0, 0}}, // ( 60, 157) + { 0, { 0, 0, 0}}, // ( 61, 157) + { 0, { 0, 0, 0}}, // ( 62, 157) + { 0, { 0, 0, 0}}, // ( 63, 157) + { 0, { 0, 0, 0}}, // ( 64, 157) + { 0, { 0, 0, 0}}, // ( 65, 157) + { 0, { 0, 0, 0}}, // ( 66, 157) + { 0, { 0, 0, 0}}, // ( 67, 157) + { 0, { 0, 0, 0}}, // ( 68, 157) + { 0, { 0, 0, 0}}, // ( 69, 157) + { 0, { 0, 0, 0}}, // ( 70, 157) + { 0, { 0, 0, 0}}, // ( 71, 157) + { 0, { 0, 0, 0}}, // ( 72, 157) + { 0, { 0, 0, 0}}, // ( 73, 157) + { 0, { 0, 0, 0}}, // ( 74, 157) + { 0, { 0, 0, 0}}, // ( 75, 157) + { 0, { 0, 0, 0}}, // ( 76, 157) + { 0, { 0, 0, 0}}, // ( 77, 157) + { 0, { 0, 0, 0}}, // ( 78, 157) + { 0, { 0, 0, 0}}, // ( 79, 157) + { 0, { 0, 0, 0}}, // ( 80, 157) + { 0, { 0, 0, 0}}, // ( 81, 157) + { 0, { 0, 0, 0}}, // ( 82, 157) + { 0, { 0, 0, 0}}, // ( 83, 157) + { 0, { 0, 0, 0}}, // ( 84, 157) + { 0, { 0, 0, 0}}, // ( 85, 157) + { 0, { 0, 0, 0}}, // ( 86, 157) + { 0, { 0, 0, 0}}, // ( 87, 157) + { 0, { 0, 0, 0}}, // ( 88, 157) + { 0, { 0, 0, 0}}, // ( 89, 157) + { 0, { 0, 0, 0}}, // ( 90, 157) + { 0, { 0, 0, 0}}, // ( 91, 157) + { 0, { 0, 0, 0}}, // ( 92, 157) + { 0, { 0, 0, 0}}, // ( 93, 157) + { 0, { 0, 0, 0}}, // ( 94, 157) + { 0, { 0, 0, 0}}, // ( 95, 157) + { 0, { 0, 0, 0}}, // ( 96, 157) + { 0, { 0, 0, 0}}, // ( 97, 157) + { 0, { 0, 0, 0}}, // ( 98, 157) + { 0, { 0, 0, 0}}, // ( 99, 157) + { 0, { 0, 0, 0}}, // (100, 157) + { 0, { 0, 0, 0}}, // (101, 157) + { 0, { 0, 0, 0}}, // (102, 157) + { 0, { 0, 0, 0}}, // (103, 157) + { 0, { 0, 0, 0}}, // (104, 157) + { 0, { 0, 0, 0}}, // (105, 157) + { 0, { 0, 0, 0}}, // (106, 157) + { 0, { 0, 0, 0}}, // (107, 157) + { 0, { 0, 0, 0}}, // (108, 157) + { 0, { 0, 0, 0}}, // (109, 157) + { 0, { 0, 0, 0}}, // (110, 157) + { 0, { 0, 0, 0}}, // (111, 157) + { 0, { 0, 0, 0}}, // (112, 157) + { 0, { 0, 0, 0}}, // (113, 157) + { 0, { 0, 0, 0}}, // (114, 157) + { 0, { 0, 0, 0}}, // (115, 157) + { 0, { 0, 0, 0}}, // (116, 157) + { 0, { 0, 0, 0}}, // (117, 157) + { 0, { 0, 0, 0}}, // (118, 157) + { 0, { 0, 0, 0}}, // (119, 157) + { 0, { 0, 0, 0}}, // (120, 157) + { 0, { 0, 0, 0}}, // (121, 157) + { 0, { 0, 0, 0}}, // (122, 157) + { 0, { 0, 0, 0}}, // (123, 157) + { 0, { 0, 0, 0}}, // (124, 157) + { 0, { 0, 0, 0}}, // (125, 157) + { 0, { 0, 0, 0}}, // (126, 157) + { 0, { 0, 0, 0}}, // (127, 157) + { 0, { 0, 0, 0}}, // (128, 157) + { 0, { 0, 0, 0}}, // (129, 157) + { 0, { 0, 0, 0}}, // (130, 157) + { 0, { 0, 0, 0}}, // (131, 157) + { 0, { 0, 0, 0}}, // (132, 157) + { 0, { 0, 0, 0}}, // (133, 157) + { 0, { 0, 0, 0}}, // (134, 157) + { 0, { 0, 0, 0}}, // (135, 157) + { 0, { 0, 0, 0}}, // (136, 157) + { 0, { 0, 0, 0}}, // (137, 157) + { 0, { 0, 0, 0}}, // (138, 157) + { 0, { 0, 0, 0}}, // (139, 157) + { 0, { 0, 0, 0}}, // (140, 157) + { 0, { 0, 0, 0}}, // (141, 157) + { 0, { 0, 0, 0}}, // (142, 157) + { 0, { 0, 0, 0}}, // (143, 157) + { 0, { 0, 0, 0}}, // (144, 157) + { 1, { 0, 0, 0}}, // (145, 157) + { 68, { 0, 0, 0}}, // (146, 157) + {128, { 0, 0, 0}}, // (147, 157) + {128, { 0, 0, 0}}, // (148, 157) + {128, { 0, 0, 0}}, // (149, 157) + {128, { 0, 0, 0}}, // (150, 157) + {128, { 0, 0, 0}}, // (151, 157) + {128, { 0, 0, 0}}, // (152, 157) + {128, { 0, 0, 0}}, // (153, 157) + {128, { 0, 0, 0}}, // (154, 157) + {128, { 0, 0, 0}}, // (155, 157) + {128, { 0, 0, 0}}, // (156, 157) + {128, { 0, 0, 0}}, // (157, 157) + {128, { 0, 0, 0}}, // (158, 157) + {128, { 0, 0, 0}}, // (159, 157) + {128, { 0, 0, 0}}, // (160, 157) + {128, { 0, 0, 0}}, // (161, 157) + {128, { 0, 0, 0}}, // (162, 157) + {128, { 0, 0, 0}}, // (163, 157) + {128, { 0, 0, 0}}, // (164, 157) + {128, { 0, 0, 0}}, // (165, 157) + {128, { 0, 0, 0}}, // (166, 157) + {128, { 0, 0, 0}}, // (167, 157) + {128, { 0, 0, 0}}, // (168, 157) + {128, { 0, 0, 0}}, // (169, 157) + {128, { 0, 0, 0}}, // (170, 157) + {128, { 0, 0, 0}}, // (171, 157) + {128, { 0, 0, 0}}, // (172, 157) + {128, { 0, 0, 0}}, // (173, 157) + {128, { 0, 0, 0}}, // (174, 157) + {128, { 0, 0, 0}}, // (175, 157) + {128, { 0, 0, 0}}, // (176, 157) + {128, { 0, 0, 0}}, // (177, 157) + {128, { 0, 0, 0}}, // (178, 157) + {128, { 0, 0, 0}}, // (179, 157) + {128, { 0, 0, 0}}, // ( 0, 158) + {128, { 0, 0, 0}}, // ( 1, 158) + {128, { 0, 0, 0}}, // ( 2, 158) + {128, { 0, 0, 0}}, // ( 3, 158) + {128, { 0, 0, 0}}, // ( 4, 158) + {128, { 0, 0, 0}}, // ( 5, 158) + {128, { 0, 0, 0}}, // ( 6, 158) + {128, { 0, 0, 0}}, // ( 7, 158) + {128, { 0, 0, 0}}, // ( 8, 158) + {128, { 0, 0, 0}}, // ( 9, 158) + {128, { 0, 0, 0}}, // ( 10, 158) + {128, { 0, 0, 0}}, // ( 11, 158) + {128, { 0, 0, 0}}, // ( 12, 158) + {128, { 0, 0, 0}}, // ( 13, 158) + {128, { 0, 0, 0}}, // ( 14, 158) + {128, { 0, 0, 0}}, // ( 15, 158) + {128, { 0, 0, 0}}, // ( 16, 158) + {128, { 0, 0, 0}}, // ( 17, 158) + {128, { 0, 0, 0}}, // ( 18, 158) + {128, { 0, 0, 0}}, // ( 19, 158) + {128, { 0, 0, 0}}, // ( 20, 158) + {128, { 0, 0, 0}}, // ( 21, 158) + {128, { 0, 0, 0}}, // ( 22, 158) + {128, { 0, 0, 0}}, // ( 23, 158) + {128, { 0, 0, 0}}, // ( 24, 158) + {128, { 0, 0, 0}}, // ( 25, 158) + {128, { 0, 0, 0}}, // ( 26, 158) + {128, { 0, 0, 0}}, // ( 27, 158) + {128, { 0, 0, 0}}, // ( 28, 158) + {128, { 0, 0, 0}}, // ( 29, 158) + {128, { 0, 0, 0}}, // ( 30, 158) + {128, { 0, 0, 0}}, // ( 31, 158) + {128, { 0, 0, 0}}, // ( 32, 158) + {128, { 0, 0, 0}}, // ( 33, 158) + { 90, { 0, 0, 0}}, // ( 34, 158) + { 8, { 0, 0, 0}}, // ( 35, 158) + { 0, { 0, 0, 0}}, // ( 36, 158) + { 0, { 0, 0, 0}}, // ( 37, 158) + { 0, { 0, 0, 0}}, // ( 38, 158) + { 0, { 0, 0, 0}}, // ( 39, 158) + { 0, { 0, 0, 0}}, // ( 40, 158) + { 0, { 0, 0, 0}}, // ( 41, 158) + { 0, { 0, 0, 0}}, // ( 42, 158) + { 0, { 0, 0, 0}}, // ( 43, 158) + { 0, { 0, 0, 0}}, // ( 44, 158) + { 0, { 0, 0, 0}}, // ( 45, 158) + { 0, { 0, 0, 0}}, // ( 46, 158) + { 0, { 0, 0, 0}}, // ( 47, 158) + { 0, { 0, 0, 0}}, // ( 48, 158) + { 0, { 0, 0, 0}}, // ( 49, 158) + { 0, { 0, 0, 0}}, // ( 50, 158) + { 0, { 0, 0, 0}}, // ( 51, 158) + { 0, { 0, 0, 0}}, // ( 52, 158) + { 0, { 0, 0, 0}}, // ( 53, 158) + { 0, { 0, 0, 0}}, // ( 54, 158) + { 0, { 0, 0, 0}}, // ( 55, 158) + { 0, { 0, 0, 0}}, // ( 56, 158) + { 0, { 0, 0, 0}}, // ( 57, 158) + { 0, { 0, 0, 0}}, // ( 58, 158) + { 0, { 0, 0, 0}}, // ( 59, 158) + { 0, { 0, 0, 0}}, // ( 60, 158) + { 0, { 0, 0, 0}}, // ( 61, 158) + { 0, { 0, 0, 0}}, // ( 62, 158) + { 0, { 0, 0, 0}}, // ( 63, 158) + { 0, { 0, 0, 0}}, // ( 64, 158) + { 0, { 0, 0, 0}}, // ( 65, 158) + { 0, { 0, 0, 0}}, // ( 66, 158) + { 0, { 0, 0, 0}}, // ( 67, 158) + { 0, { 0, 0, 0}}, // ( 68, 158) + { 0, { 0, 0, 0}}, // ( 69, 158) + { 0, { 0, 0, 0}}, // ( 70, 158) + { 0, { 0, 0, 0}}, // ( 71, 158) + { 0, { 0, 0, 0}}, // ( 72, 158) + { 0, { 0, 0, 0}}, // ( 73, 158) + { 0, { 0, 0, 0}}, // ( 74, 158) + { 0, { 0, 0, 0}}, // ( 75, 158) + { 0, { 0, 0, 0}}, // ( 76, 158) + { 0, { 0, 0, 0}}, // ( 77, 158) + { 0, { 0, 0, 0}}, // ( 78, 158) + { 0, { 0, 0, 0}}, // ( 79, 158) + { 0, { 0, 0, 0}}, // ( 80, 158) + { 0, { 0, 0, 0}}, // ( 81, 158) + { 0, { 0, 0, 0}}, // ( 82, 158) + { 0, { 0, 0, 0}}, // ( 83, 158) + { 0, { 0, 0, 0}}, // ( 84, 158) + { 0, { 0, 0, 0}}, // ( 85, 158) + { 0, { 0, 0, 0}}, // ( 86, 158) + { 0, { 0, 0, 0}}, // ( 87, 158) + { 0, { 0, 0, 0}}, // ( 88, 158) + { 0, { 0, 0, 0}}, // ( 89, 158) + { 0, { 0, 0, 0}}, // ( 90, 158) + { 0, { 0, 0, 0}}, // ( 91, 158) + { 0, { 0, 0, 0}}, // ( 92, 158) + { 0, { 0, 0, 0}}, // ( 93, 158) + { 0, { 0, 0, 0}}, // ( 94, 158) + { 0, { 0, 0, 0}}, // ( 95, 158) + { 0, { 0, 0, 0}}, // ( 96, 158) + { 0, { 0, 0, 0}}, // ( 97, 158) + { 0, { 0, 0, 0}}, // ( 98, 158) + { 0, { 0, 0, 0}}, // ( 99, 158) + { 0, { 0, 0, 0}}, // (100, 158) + { 0, { 0, 0, 0}}, // (101, 158) + { 0, { 0, 0, 0}}, // (102, 158) + { 0, { 0, 0, 0}}, // (103, 158) + { 0, { 0, 0, 0}}, // (104, 158) + { 0, { 0, 0, 0}}, // (105, 158) + { 0, { 0, 0, 0}}, // (106, 158) + { 0, { 0, 0, 0}}, // (107, 158) + { 0, { 0, 0, 0}}, // (108, 158) + { 0, { 0, 0, 0}}, // (109, 158) + { 0, { 0, 0, 0}}, // (110, 158) + { 0, { 0, 0, 0}}, // (111, 158) + { 0, { 0, 0, 0}}, // (112, 158) + { 0, { 0, 0, 0}}, // (113, 158) + { 0, { 0, 0, 0}}, // (114, 158) + { 0, { 0, 0, 0}}, // (115, 158) + { 0, { 0, 0, 0}}, // (116, 158) + { 0, { 0, 0, 0}}, // (117, 158) + { 0, { 0, 0, 0}}, // (118, 158) + { 0, { 0, 0, 0}}, // (119, 158) + { 0, { 0, 0, 0}}, // (120, 158) + { 0, { 0, 0, 0}}, // (121, 158) + { 0, { 0, 0, 0}}, // (122, 158) + { 0, { 0, 0, 0}}, // (123, 158) + { 0, { 0, 0, 0}}, // (124, 158) + { 0, { 0, 0, 0}}, // (125, 158) + { 0, { 0, 0, 0}}, // (126, 158) + { 0, { 0, 0, 0}}, // (127, 158) + { 0, { 0, 0, 0}}, // (128, 158) + { 0, { 0, 0, 0}}, // (129, 158) + { 0, { 0, 0, 0}}, // (130, 158) + { 0, { 0, 0, 0}}, // (131, 158) + { 0, { 0, 0, 0}}, // (132, 158) + { 0, { 0, 0, 0}}, // (133, 158) + { 0, { 0, 0, 0}}, // (134, 158) + { 0, { 0, 0, 0}}, // (135, 158) + { 0, { 0, 0, 0}}, // (136, 158) + { 0, { 0, 0, 0}}, // (137, 158) + { 0, { 0, 0, 0}}, // (138, 158) + { 0, { 0, 0, 0}}, // (139, 158) + { 0, { 0, 0, 0}}, // (140, 158) + { 0, { 0, 0, 0}}, // (141, 158) + { 0, { 0, 0, 0}}, // (142, 158) + { 0, { 0, 0, 0}}, // (143, 158) + { 8, { 0, 0, 0}}, // (144, 158) + { 89, { 0, 0, 0}}, // (145, 158) + {128, { 0, 0, 0}}, // (146, 158) + {128, { 0, 0, 0}}, // (147, 158) + {128, { 0, 0, 0}}, // (148, 158) + {128, { 0, 0, 0}}, // (149, 158) + {128, { 0, 0, 0}}, // (150, 158) + {128, { 0, 0, 0}}, // (151, 158) + {128, { 0, 0, 0}}, // (152, 158) + {128, { 0, 0, 0}}, // (153, 158) + {128, { 0, 0, 0}}, // (154, 158) + {128, { 0, 0, 0}}, // (155, 158) + {128, { 0, 0, 0}}, // (156, 158) + {128, { 0, 0, 0}}, // (157, 158) + {128, { 0, 0, 0}}, // (158, 158) + {128, { 0, 0, 0}}, // (159, 158) + {128, { 0, 0, 0}}, // (160, 158) + {128, { 0, 0, 0}}, // (161, 158) + {128, { 0, 0, 0}}, // (162, 158) + {128, { 0, 0, 0}}, // (163, 158) + {128, { 0, 0, 0}}, // (164, 158) + {128, { 0, 0, 0}}, // (165, 158) + {128, { 0, 0, 0}}, // (166, 158) + {128, { 0, 0, 0}}, // (167, 158) + {128, { 0, 0, 0}}, // (168, 158) + {128, { 0, 0, 0}}, // (169, 158) + {128, { 0, 0, 0}}, // (170, 158) + {128, { 0, 0, 0}}, // (171, 158) + {128, { 0, 0, 0}}, // (172, 158) + {128, { 0, 0, 0}}, // (173, 158) + {128, { 0, 0, 0}}, // (174, 158) + {128, { 0, 0, 0}}, // (175, 158) + {128, { 0, 0, 0}}, // (176, 158) + {128, { 0, 0, 0}}, // (177, 158) + {128, { 0, 0, 0}}, // (178, 158) + {128, { 0, 0, 0}}, // (179, 158) + {128, { 0, 0, 0}}, // ( 0, 159) + {128, { 0, 0, 0}}, // ( 1, 159) + {128, { 0, 0, 0}}, // ( 2, 159) + {128, { 0, 0, 0}}, // ( 3, 159) + {128, { 0, 0, 0}}, // ( 4, 159) + {128, { 0, 0, 0}}, // ( 5, 159) + {128, { 0, 0, 0}}, // ( 6, 159) + {128, { 0, 0, 0}}, // ( 7, 159) + {128, { 0, 0, 0}}, // ( 8, 159) + {128, { 0, 0, 0}}, // ( 9, 159) + {128, { 0, 0, 0}}, // ( 10, 159) + {128, { 0, 0, 0}}, // ( 11, 159) + {128, { 0, 0, 0}}, // ( 12, 159) + {128, { 0, 0, 0}}, // ( 13, 159) + {128, { 0, 0, 0}}, // ( 14, 159) + {128, { 0, 0, 0}}, // ( 15, 159) + {128, { 0, 0, 0}}, // ( 16, 159) + {128, { 0, 0, 0}}, // ( 17, 159) + {128, { 0, 0, 0}}, // ( 18, 159) + {128, { 0, 0, 0}}, // ( 19, 159) + {128, { 0, 0, 0}}, // ( 20, 159) + {128, { 0, 0, 0}}, // ( 21, 159) + {128, { 0, 0, 0}}, // ( 22, 159) + {128, { 0, 0, 0}}, // ( 23, 159) + {128, { 0, 0, 0}}, // ( 24, 159) + {128, { 0, 0, 0}}, // ( 25, 159) + {128, { 0, 0, 0}}, // ( 26, 159) + {128, { 0, 0, 0}}, // ( 27, 159) + {128, { 0, 0, 0}}, // ( 28, 159) + {128, { 0, 0, 0}}, // ( 29, 159) + {128, { 0, 0, 0}}, // ( 30, 159) + {128, { 0, 0, 0}}, // ( 31, 159) + {128, { 0, 0, 0}}, // ( 32, 159) + {128, { 0, 0, 0}}, // ( 33, 159) + {128, { 0, 0, 0}}, // ( 34, 159) + {108, { 0, 0, 0}}, // ( 35, 159) + { 22, { 0, 0, 0}}, // ( 36, 159) + { 0, { 0, 0, 0}}, // ( 37, 159) + { 0, { 0, 0, 0}}, // ( 38, 159) + { 0, { 0, 0, 0}}, // ( 39, 159) + { 0, { 0, 0, 0}}, // ( 40, 159) + { 0, { 0, 0, 0}}, // ( 41, 159) + { 0, { 0, 0, 0}}, // ( 42, 159) + { 0, { 0, 0, 0}}, // ( 43, 159) + { 0, { 0, 0, 0}}, // ( 44, 159) + { 0, { 0, 0, 0}}, // ( 45, 159) + { 0, { 0, 0, 0}}, // ( 46, 159) + { 0, { 0, 0, 0}}, // ( 47, 159) + { 0, { 0, 0, 0}}, // ( 48, 159) + { 0, { 0, 0, 0}}, // ( 49, 159) + { 0, { 0, 0, 0}}, // ( 50, 159) + { 0, { 0, 0, 0}}, // ( 51, 159) + { 0, { 0, 0, 0}}, // ( 52, 159) + { 0, { 0, 0, 0}}, // ( 53, 159) + { 0, { 0, 0, 0}}, // ( 54, 159) + { 0, { 0, 0, 0}}, // ( 55, 159) + { 0, { 0, 0, 0}}, // ( 56, 159) + { 0, { 0, 0, 0}}, // ( 57, 159) + { 0, { 0, 0, 0}}, // ( 58, 159) + { 0, { 0, 0, 0}}, // ( 59, 159) + { 0, { 0, 0, 0}}, // ( 60, 159) + { 0, { 0, 0, 0}}, // ( 61, 159) + { 0, { 0, 0, 0}}, // ( 62, 159) + { 0, { 0, 0, 0}}, // ( 63, 159) + { 0, { 0, 0, 0}}, // ( 64, 159) + { 0, { 0, 0, 0}}, // ( 65, 159) + { 0, { 0, 0, 0}}, // ( 66, 159) + { 0, { 0, 0, 0}}, // ( 67, 159) + { 0, { 0, 0, 0}}, // ( 68, 159) + { 0, { 0, 0, 0}}, // ( 69, 159) + { 0, { 0, 0, 0}}, // ( 70, 159) + { 0, { 0, 0, 0}}, // ( 71, 159) + { 0, { 0, 0, 0}}, // ( 72, 159) + { 0, { 0, 0, 0}}, // ( 73, 159) + { 0, { 0, 0, 0}}, // ( 74, 159) + { 0, { 0, 0, 0}}, // ( 75, 159) + { 0, { 0, 0, 0}}, // ( 76, 159) + { 0, { 0, 0, 0}}, // ( 77, 159) + { 0, { 0, 0, 0}}, // ( 78, 159) + { 0, { 0, 0, 0}}, // ( 79, 159) + { 0, { 0, 0, 0}}, // ( 80, 159) + { 0, { 0, 0, 0}}, // ( 81, 159) + { 0, { 0, 0, 0}}, // ( 82, 159) + { 0, { 0, 0, 0}}, // ( 83, 159) + { 0, { 0, 0, 0}}, // ( 84, 159) + { 0, { 0, 0, 0}}, // ( 85, 159) + { 0, { 0, 0, 0}}, // ( 86, 159) + { 0, { 0, 0, 0}}, // ( 87, 159) + { 0, { 0, 0, 0}}, // ( 88, 159) + { 0, { 0, 0, 0}}, // ( 89, 159) + { 0, { 0, 0, 0}}, // ( 90, 159) + { 0, { 0, 0, 0}}, // ( 91, 159) + { 0, { 0, 0, 0}}, // ( 92, 159) + { 0, { 0, 0, 0}}, // ( 93, 159) + { 0, { 0, 0, 0}}, // ( 94, 159) + { 0, { 0, 0, 0}}, // ( 95, 159) + { 0, { 0, 0, 0}}, // ( 96, 159) + { 0, { 0, 0, 0}}, // ( 97, 159) + { 0, { 0, 0, 0}}, // ( 98, 159) + { 0, { 0, 0, 0}}, // ( 99, 159) + { 0, { 0, 0, 0}}, // (100, 159) + { 0, { 0, 0, 0}}, // (101, 159) + { 0, { 0, 0, 0}}, // (102, 159) + { 0, { 0, 0, 0}}, // (103, 159) + { 0, { 0, 0, 0}}, // (104, 159) + { 0, { 0, 0, 0}}, // (105, 159) + { 0, { 0, 0, 0}}, // (106, 159) + { 0, { 0, 0, 0}}, // (107, 159) + { 0, { 0, 0, 0}}, // (108, 159) + { 0, { 0, 0, 0}}, // (109, 159) + { 0, { 0, 0, 0}}, // (110, 159) + { 0, { 0, 0, 0}}, // (111, 159) + { 0, { 0, 0, 0}}, // (112, 159) + { 0, { 0, 0, 0}}, // (113, 159) + { 0, { 0, 0, 0}}, // (114, 159) + { 0, { 0, 0, 0}}, // (115, 159) + { 0, { 0, 0, 0}}, // (116, 159) + { 0, { 0, 0, 0}}, // (117, 159) + { 0, { 0, 0, 0}}, // (118, 159) + { 0, { 0, 0, 0}}, // (119, 159) + { 0, { 0, 0, 0}}, // (120, 159) + { 0, { 0, 0, 0}}, // (121, 159) + { 0, { 0, 0, 0}}, // (122, 159) + { 0, { 0, 0, 0}}, // (123, 159) + { 0, { 0, 0, 0}}, // (124, 159) + { 0, { 0, 0, 0}}, // (125, 159) + { 0, { 0, 0, 0}}, // (126, 159) + { 0, { 0, 0, 0}}, // (127, 159) + { 0, { 0, 0, 0}}, // (128, 159) + { 0, { 0, 0, 0}}, // (129, 159) + { 0, { 0, 0, 0}}, // (130, 159) + { 0, { 0, 0, 0}}, // (131, 159) + { 0, { 0, 0, 0}}, // (132, 159) + { 0, { 0, 0, 0}}, // (133, 159) + { 0, { 0, 0, 0}}, // (134, 159) + { 0, { 0, 0, 0}}, // (135, 159) + { 0, { 0, 0, 0}}, // (136, 159) + { 0, { 0, 0, 0}}, // (137, 159) + { 0, { 0, 0, 0}}, // (138, 159) + { 0, { 0, 0, 0}}, // (139, 159) + { 0, { 0, 0, 0}}, // (140, 159) + { 0, { 0, 0, 0}}, // (141, 159) + { 0, { 0, 0, 0}}, // (142, 159) + { 22, { 0, 0, 0}}, // (143, 159) + {108, { 0, 0, 0}}, // (144, 159) + {128, { 0, 0, 0}}, // (145, 159) + {128, { 0, 0, 0}}, // (146, 159) + {128, { 0, 0, 0}}, // (147, 159) + {128, { 0, 0, 0}}, // (148, 159) + {128, { 0, 0, 0}}, // (149, 159) + {128, { 0, 0, 0}}, // (150, 159) + {128, { 0, 0, 0}}, // (151, 159) + {128, { 0, 0, 0}}, // (152, 159) + {128, { 0, 0, 0}}, // (153, 159) + {128, { 0, 0, 0}}, // (154, 159) + {128, { 0, 0, 0}}, // (155, 159) + {128, { 0, 0, 0}}, // (156, 159) + {128, { 0, 0, 0}}, // (157, 159) + {128, { 0, 0, 0}}, // (158, 159) + {128, { 0, 0, 0}}, // (159, 159) + {128, { 0, 0, 0}}, // (160, 159) + {128, { 0, 0, 0}}, // (161, 159) + {128, { 0, 0, 0}}, // (162, 159) + {128, { 0, 0, 0}}, // (163, 159) + {128, { 0, 0, 0}}, // (164, 159) + {128, { 0, 0, 0}}, // (165, 159) + {128, { 0, 0, 0}}, // (166, 159) + {128, { 0, 0, 0}}, // (167, 159) + {128, { 0, 0, 0}}, // (168, 159) + {128, { 0, 0, 0}}, // (169, 159) + {128, { 0, 0, 0}}, // (170, 159) + {128, { 0, 0, 0}}, // (171, 159) + {128, { 0, 0, 0}}, // (172, 159) + {128, { 0, 0, 0}}, // (173, 159) + {128, { 0, 0, 0}}, // (174, 159) + {128, { 0, 0, 0}}, // (175, 159) + {128, { 0, 0, 0}}, // (176, 159) + {128, { 0, 0, 0}}, // (177, 159) + {128, { 0, 0, 0}}, // (178, 159) + {128, { 0, 0, 0}}, // (179, 159) + {128, { 0, 0, 0}}, // ( 0, 160) + {128, { 0, 0, 0}}, // ( 1, 160) + {128, { 0, 0, 0}}, // ( 2, 160) + {128, { 0, 0, 0}}, // ( 3, 160) + {128, { 0, 0, 0}}, // ( 4, 160) + {128, { 0, 0, 0}}, // ( 5, 160) + {128, { 0, 0, 0}}, // ( 6, 160) + {128, { 0, 0, 0}}, // ( 7, 160) + {128, { 0, 0, 0}}, // ( 8, 160) + {128, { 0, 0, 0}}, // ( 9, 160) + {128, { 0, 0, 0}}, // ( 10, 160) + {128, { 0, 0, 0}}, // ( 11, 160) + {128, { 0, 0, 0}}, // ( 12, 160) + {128, { 0, 0, 0}}, // ( 13, 160) + {128, { 0, 0, 0}}, // ( 14, 160) + {128, { 0, 0, 0}}, // ( 15, 160) + {128, { 0, 0, 0}}, // ( 16, 160) + {128, { 0, 0, 0}}, // ( 17, 160) + {128, { 0, 0, 0}}, // ( 18, 160) + {128, { 0, 0, 0}}, // ( 19, 160) + {128, { 0, 0, 0}}, // ( 20, 160) + {128, { 0, 0, 0}}, // ( 21, 160) + {128, { 0, 0, 0}}, // ( 22, 160) + {128, { 0, 0, 0}}, // ( 23, 160) + {128, { 0, 0, 0}}, // ( 24, 160) + {128, { 0, 0, 0}}, // ( 25, 160) + {128, { 0, 0, 0}}, // ( 26, 160) + {128, { 0, 0, 0}}, // ( 27, 160) + {128, { 0, 0, 0}}, // ( 28, 160) + {128, { 0, 0, 0}}, // ( 29, 160) + {128, { 0, 0, 0}}, // ( 30, 160) + {128, { 0, 0, 0}}, // ( 31, 160) + {128, { 0, 0, 0}}, // ( 32, 160) + {128, { 0, 0, 0}}, // ( 33, 160) + {128, { 0, 0, 0}}, // ( 34, 160) + {128, { 0, 0, 0}}, // ( 35, 160) + {123, { 0, 0, 0}}, // ( 36, 160) + { 48, { 0, 0, 0}}, // ( 37, 160) + { 0, { 0, 0, 0}}, // ( 38, 160) + { 0, { 0, 0, 0}}, // ( 39, 160) + { 0, { 0, 0, 0}}, // ( 40, 160) + { 0, { 0, 0, 0}}, // ( 41, 160) + { 0, { 0, 0, 0}}, // ( 42, 160) + { 0, { 0, 0, 0}}, // ( 43, 160) + { 0, { 0, 0, 0}}, // ( 44, 160) + { 0, { 0, 0, 0}}, // ( 45, 160) + { 0, { 0, 0, 0}}, // ( 46, 160) + { 0, { 0, 0, 0}}, // ( 47, 160) + { 0, { 0, 0, 0}}, // ( 48, 160) + { 0, { 0, 0, 0}}, // ( 49, 160) + { 0, { 0, 0, 0}}, // ( 50, 160) + { 0, { 0, 0, 0}}, // ( 51, 160) + { 0, { 0, 0, 0}}, // ( 52, 160) + { 0, { 0, 0, 0}}, // ( 53, 160) + { 0, { 0, 0, 0}}, // ( 54, 160) + { 0, { 0, 0, 0}}, // ( 55, 160) + { 0, { 0, 0, 0}}, // ( 56, 160) + { 0, { 0, 0, 0}}, // ( 57, 160) + { 0, { 0, 0, 0}}, // ( 58, 160) + { 0, { 0, 0, 0}}, // ( 59, 160) + { 0, { 0, 0, 0}}, // ( 60, 160) + { 0, { 0, 0, 0}}, // ( 61, 160) + { 0, { 0, 0, 0}}, // ( 62, 160) + { 0, { 0, 0, 0}}, // ( 63, 160) + { 0, { 0, 0, 0}}, // ( 64, 160) + { 0, { 0, 0, 0}}, // ( 65, 160) + { 0, { 0, 0, 0}}, // ( 66, 160) + { 0, { 0, 0, 0}}, // ( 67, 160) + { 0, { 0, 0, 0}}, // ( 68, 160) + { 0, { 0, 0, 0}}, // ( 69, 160) + { 0, { 0, 0, 0}}, // ( 70, 160) + { 0, { 0, 0, 0}}, // ( 71, 160) + { 0, { 0, 0, 0}}, // ( 72, 160) + { 0, { 0, 0, 0}}, // ( 73, 160) + { 0, { 0, 0, 0}}, // ( 74, 160) + { 0, { 0, 0, 0}}, // ( 75, 160) + { 0, { 0, 0, 0}}, // ( 76, 160) + { 0, { 0, 0, 0}}, // ( 77, 160) + { 0, { 0, 0, 0}}, // ( 78, 160) + { 0, { 0, 0, 0}}, // ( 79, 160) + { 0, { 0, 0, 0}}, // ( 80, 160) + { 0, { 0, 0, 0}}, // ( 81, 160) + { 0, { 0, 0, 0}}, // ( 82, 160) + { 0, { 0, 0, 0}}, // ( 83, 160) + { 0, { 0, 0, 0}}, // ( 84, 160) + { 0, { 0, 0, 0}}, // ( 85, 160) + { 0, { 0, 0, 0}}, // ( 86, 160) + { 0, { 0, 0, 0}}, // ( 87, 160) + { 0, { 0, 0, 0}}, // ( 88, 160) + { 0, { 0, 0, 0}}, // ( 89, 160) + { 0, { 0, 0, 0}}, // ( 90, 160) + { 0, { 0, 0, 0}}, // ( 91, 160) + { 0, { 0, 0, 0}}, // ( 92, 160) + { 0, { 0, 0, 0}}, // ( 93, 160) + { 0, { 0, 0, 0}}, // ( 94, 160) + { 0, { 0, 0, 0}}, // ( 95, 160) + { 0, { 0, 0, 0}}, // ( 96, 160) + { 0, { 0, 0, 0}}, // ( 97, 160) + { 0, { 0, 0, 0}}, // ( 98, 160) + { 0, { 0, 0, 0}}, // ( 99, 160) + { 0, { 0, 0, 0}}, // (100, 160) + { 0, { 0, 0, 0}}, // (101, 160) + { 0, { 0, 0, 0}}, // (102, 160) + { 0, { 0, 0, 0}}, // (103, 160) + { 0, { 0, 0, 0}}, // (104, 160) + { 0, { 0, 0, 0}}, // (105, 160) + { 0, { 0, 0, 0}}, // (106, 160) + { 0, { 0, 0, 0}}, // (107, 160) + { 0, { 0, 0, 0}}, // (108, 160) + { 0, { 0, 0, 0}}, // (109, 160) + { 0, { 0, 0, 0}}, // (110, 160) + { 0, { 0, 0, 0}}, // (111, 160) + { 0, { 0, 0, 0}}, // (112, 160) + { 0, { 0, 0, 0}}, // (113, 160) + { 0, { 0, 0, 0}}, // (114, 160) + { 0, { 0, 0, 0}}, // (115, 160) + { 0, { 0, 0, 0}}, // (116, 160) + { 0, { 0, 0, 0}}, // (117, 160) + { 0, { 0, 0, 0}}, // (118, 160) + { 0, { 0, 0, 0}}, // (119, 160) + { 0, { 0, 0, 0}}, // (120, 160) + { 0, { 0, 0, 0}}, // (121, 160) + { 0, { 0, 0, 0}}, // (122, 160) + { 0, { 0, 0, 0}}, // (123, 160) + { 0, { 0, 0, 0}}, // (124, 160) + { 0, { 0, 0, 0}}, // (125, 160) + { 0, { 0, 0, 0}}, // (126, 160) + { 0, { 0, 0, 0}}, // (127, 160) + { 0, { 0, 0, 0}}, // (128, 160) + { 0, { 0, 0, 0}}, // (129, 160) + { 0, { 0, 0, 0}}, // (130, 160) + { 0, { 0, 0, 0}}, // (131, 160) + { 0, { 0, 0, 0}}, // (132, 160) + { 0, { 0, 0, 0}}, // (133, 160) + { 0, { 0, 0, 0}}, // (134, 160) + { 0, { 0, 0, 0}}, // (135, 160) + { 0, { 0, 0, 0}}, // (136, 160) + { 0, { 0, 0, 0}}, // (137, 160) + { 0, { 0, 0, 0}}, // (138, 160) + { 0, { 0, 0, 0}}, // (139, 160) + { 0, { 0, 0, 0}}, // (140, 160) + { 0, { 0, 0, 0}}, // (141, 160) + { 48, { 0, 0, 0}}, // (142, 160) + {123, { 0, 0, 0}}, // (143, 160) + {128, { 0, 0, 0}}, // (144, 160) + {128, { 0, 0, 0}}, // (145, 160) + {128, { 0, 0, 0}}, // (146, 160) + {128, { 0, 0, 0}}, // (147, 160) + {128, { 0, 0, 0}}, // (148, 160) + {128, { 0, 0, 0}}, // (149, 160) + {128, { 0, 0, 0}}, // (150, 160) + {128, { 0, 0, 0}}, // (151, 160) + {128, { 0, 0, 0}}, // (152, 160) + {128, { 0, 0, 0}}, // (153, 160) + {128, { 0, 0, 0}}, // (154, 160) + {128, { 0, 0, 0}}, // (155, 160) + {128, { 0, 0, 0}}, // (156, 160) + {128, { 0, 0, 0}}, // (157, 160) + {128, { 0, 0, 0}}, // (158, 160) + {128, { 0, 0, 0}}, // (159, 160) + {128, { 0, 0, 0}}, // (160, 160) + {128, { 0, 0, 0}}, // (161, 160) + {128, { 0, 0, 0}}, // (162, 160) + {128, { 0, 0, 0}}, // (163, 160) + {128, { 0, 0, 0}}, // (164, 160) + {128, { 0, 0, 0}}, // (165, 160) + {128, { 0, 0, 0}}, // (166, 160) + {128, { 0, 0, 0}}, // (167, 160) + {128, { 0, 0, 0}}, // (168, 160) + {128, { 0, 0, 0}}, // (169, 160) + {128, { 0, 0, 0}}, // (170, 160) + {128, { 0, 0, 0}}, // (171, 160) + {128, { 0, 0, 0}}, // (172, 160) + {128, { 0, 0, 0}}, // (173, 160) + {128, { 0, 0, 0}}, // (174, 160) + {128, { 0, 0, 0}}, // (175, 160) + {128, { 0, 0, 0}}, // (176, 160) + {128, { 0, 0, 0}}, // (177, 160) + {128, { 0, 0, 0}}, // (178, 160) + {128, { 0, 0, 0}}, // (179, 160) + {128, { 0, 0, 0}}, // ( 0, 161) + {128, { 0, 0, 0}}, // ( 1, 161) + {128, { 0, 0, 0}}, // ( 2, 161) + {128, { 0, 0, 0}}, // ( 3, 161) + {128, { 0, 0, 0}}, // ( 4, 161) + {128, { 0, 0, 0}}, // ( 5, 161) + {128, { 0, 0, 0}}, // ( 6, 161) + {128, { 0, 0, 0}}, // ( 7, 161) + {128, { 0, 0, 0}}, // ( 8, 161) + {128, { 0, 0, 0}}, // ( 9, 161) + {128, { 0, 0, 0}}, // ( 10, 161) + {128, { 0, 0, 0}}, // ( 11, 161) + {128, { 0, 0, 0}}, // ( 12, 161) + {128, { 0, 0, 0}}, // ( 13, 161) + {128, { 0, 0, 0}}, // ( 14, 161) + {128, { 0, 0, 0}}, // ( 15, 161) + {128, { 0, 0, 0}}, // ( 16, 161) + {128, { 0, 0, 0}}, // ( 17, 161) + {128, { 0, 0, 0}}, // ( 18, 161) + {128, { 0, 0, 0}}, // ( 19, 161) + {128, { 0, 0, 0}}, // ( 20, 161) + {128, { 0, 0, 0}}, // ( 21, 161) + {128, { 0, 0, 0}}, // ( 22, 161) + {128, { 0, 0, 0}}, // ( 23, 161) + {128, { 0, 0, 0}}, // ( 24, 161) + {128, { 0, 0, 0}}, // ( 25, 161) + {128, { 0, 0, 0}}, // ( 26, 161) + {128, { 0, 0, 0}}, // ( 27, 161) + {128, { 0, 0, 0}}, // ( 28, 161) + {128, { 0, 0, 0}}, // ( 29, 161) + {128, { 0, 0, 0}}, // ( 30, 161) + {128, { 0, 0, 0}}, // ( 31, 161) + {128, { 0, 0, 0}}, // ( 32, 161) + {128, { 0, 0, 0}}, // ( 33, 161) + {128, { 0, 0, 0}}, // ( 34, 161) + {128, { 0, 0, 0}}, // ( 35, 161) + {128, { 0, 0, 0}}, // ( 36, 161) + {128, { 0, 0, 0}}, // ( 37, 161) + { 85, { 0, 0, 0}}, // ( 38, 161) + { 9, { 0, 0, 0}}, // ( 39, 161) + { 0, { 0, 0, 0}}, // ( 40, 161) + { 0, { 0, 0, 0}}, // ( 41, 161) + { 0, { 0, 0, 0}}, // ( 42, 161) + { 0, { 0, 0, 0}}, // ( 43, 161) + { 0, { 0, 0, 0}}, // ( 44, 161) + { 0, { 0, 0, 0}}, // ( 45, 161) + { 0, { 0, 0, 0}}, // ( 46, 161) + { 0, { 0, 0, 0}}, // ( 47, 161) + { 0, { 0, 0, 0}}, // ( 48, 161) + { 0, { 0, 0, 0}}, // ( 49, 161) + { 0, { 0, 0, 0}}, // ( 50, 161) + { 0, { 0, 0, 0}}, // ( 51, 161) + { 0, { 0, 0, 0}}, // ( 52, 161) + { 0, { 0, 0, 0}}, // ( 53, 161) + { 0, { 0, 0, 0}}, // ( 54, 161) + { 0, { 0, 0, 0}}, // ( 55, 161) + { 0, { 0, 0, 0}}, // ( 56, 161) + { 0, { 0, 0, 0}}, // ( 57, 161) + { 0, { 0, 0, 0}}, // ( 58, 161) + { 0, { 0, 0, 0}}, // ( 59, 161) + { 0, { 0, 0, 0}}, // ( 60, 161) + { 0, { 0, 0, 0}}, // ( 61, 161) + { 0, { 0, 0, 0}}, // ( 62, 161) + { 0, { 0, 0, 0}}, // ( 63, 161) + { 0, { 0, 0, 0}}, // ( 64, 161) + { 0, { 0, 0, 0}}, // ( 65, 161) + { 0, { 0, 0, 0}}, // ( 66, 161) + { 0, { 0, 0, 0}}, // ( 67, 161) + { 0, { 0, 0, 0}}, // ( 68, 161) + { 0, { 0, 0, 0}}, // ( 69, 161) + { 0, { 0, 0, 0}}, // ( 70, 161) + { 0, { 0, 0, 0}}, // ( 71, 161) + { 0, { 0, 0, 0}}, // ( 72, 161) + { 0, { 0, 0, 0}}, // ( 73, 161) + { 0, { 0, 0, 0}}, // ( 74, 161) + { 0, { 0, 0, 0}}, // ( 75, 161) + { 0, { 0, 0, 0}}, // ( 76, 161) + { 0, { 0, 0, 0}}, // ( 77, 161) + { 0, { 0, 0, 0}}, // ( 78, 161) + { 0, { 0, 0, 0}}, // ( 79, 161) + { 0, { 0, 0, 0}}, // ( 80, 161) + { 0, { 0, 0, 0}}, // ( 81, 161) + { 0, { 0, 0, 0}}, // ( 82, 161) + { 0, { 0, 0, 0}}, // ( 83, 161) + { 0, { 0, 0, 0}}, // ( 84, 161) + { 0, { 0, 0, 0}}, // ( 85, 161) + { 0, { 0, 0, 0}}, // ( 86, 161) + { 0, { 0, 0, 0}}, // ( 87, 161) + { 0, { 0, 0, 0}}, // ( 88, 161) + { 0, { 0, 0, 0}}, // ( 89, 161) + { 0, { 0, 0, 0}}, // ( 90, 161) + { 0, { 0, 0, 0}}, // ( 91, 161) + { 0, { 0, 0, 0}}, // ( 92, 161) + { 0, { 0, 0, 0}}, // ( 93, 161) + { 0, { 0, 0, 0}}, // ( 94, 161) + { 0, { 0, 0, 0}}, // ( 95, 161) + { 0, { 0, 0, 0}}, // ( 96, 161) + { 0, { 0, 0, 0}}, // ( 97, 161) + { 0, { 0, 0, 0}}, // ( 98, 161) + { 0, { 0, 0, 0}}, // ( 99, 161) + { 0, { 0, 0, 0}}, // (100, 161) + { 0, { 0, 0, 0}}, // (101, 161) + { 0, { 0, 0, 0}}, // (102, 161) + { 0, { 0, 0, 0}}, // (103, 161) + { 0, { 0, 0, 0}}, // (104, 161) + { 0, { 0, 0, 0}}, // (105, 161) + { 0, { 0, 0, 0}}, // (106, 161) + { 0, { 0, 0, 0}}, // (107, 161) + { 0, { 0, 0, 0}}, // (108, 161) + { 0, { 0, 0, 0}}, // (109, 161) + { 0, { 0, 0, 0}}, // (110, 161) + { 0, { 0, 0, 0}}, // (111, 161) + { 0, { 0, 0, 0}}, // (112, 161) + { 0, { 0, 0, 0}}, // (113, 161) + { 0, { 0, 0, 0}}, // (114, 161) + { 0, { 0, 0, 0}}, // (115, 161) + { 0, { 0, 0, 0}}, // (116, 161) + { 0, { 0, 0, 0}}, // (117, 161) + { 0, { 0, 0, 0}}, // (118, 161) + { 0, { 0, 0, 0}}, // (119, 161) + { 0, { 0, 0, 0}}, // (120, 161) + { 0, { 0, 0, 0}}, // (121, 161) + { 0, { 0, 0, 0}}, // (122, 161) + { 0, { 0, 0, 0}}, // (123, 161) + { 0, { 0, 0, 0}}, // (124, 161) + { 0, { 0, 0, 0}}, // (125, 161) + { 0, { 0, 0, 0}}, // (126, 161) + { 0, { 0, 0, 0}}, // (127, 161) + { 0, { 0, 0, 0}}, // (128, 161) + { 0, { 0, 0, 0}}, // (129, 161) + { 0, { 0, 0, 0}}, // (130, 161) + { 0, { 0, 0, 0}}, // (131, 161) + { 0, { 0, 0, 0}}, // (132, 161) + { 0, { 0, 0, 0}}, // (133, 161) + { 0, { 0, 0, 0}}, // (134, 161) + { 0, { 0, 0, 0}}, // (135, 161) + { 0, { 0, 0, 0}}, // (136, 161) + { 0, { 0, 0, 0}}, // (137, 161) + { 0, { 0, 0, 0}}, // (138, 161) + { 0, { 0, 0, 0}}, // (139, 161) + { 8, { 0, 0, 0}}, // (140, 161) + { 85, { 0, 0, 0}}, // (141, 161) + {128, { 0, 0, 0}}, // (142, 161) + {128, { 0, 0, 0}}, // (143, 161) + {128, { 0, 0, 0}}, // (144, 161) + {128, { 0, 0, 0}}, // (145, 161) + {128, { 0, 0, 0}}, // (146, 161) + {128, { 0, 0, 0}}, // (147, 161) + {128, { 0, 0, 0}}, // (148, 161) + {128, { 0, 0, 0}}, // (149, 161) + {128, { 0, 0, 0}}, // (150, 161) + {128, { 0, 0, 0}}, // (151, 161) + {128, { 0, 0, 0}}, // (152, 161) + {128, { 0, 0, 0}}, // (153, 161) + {128, { 0, 0, 0}}, // (154, 161) + {128, { 0, 0, 0}}, // (155, 161) + {128, { 0, 0, 0}}, // (156, 161) + {128, { 0, 0, 0}}, // (157, 161) + {128, { 0, 0, 0}}, // (158, 161) + {128, { 0, 0, 0}}, // (159, 161) + {128, { 0, 0, 0}}, // (160, 161) + {128, { 0, 0, 0}}, // (161, 161) + {128, { 0, 0, 0}}, // (162, 161) + {128, { 0, 0, 0}}, // (163, 161) + {128, { 0, 0, 0}}, // (164, 161) + {128, { 0, 0, 0}}, // (165, 161) + {128, { 0, 0, 0}}, // (166, 161) + {128, { 0, 0, 0}}, // (167, 161) + {128, { 0, 0, 0}}, // (168, 161) + {128, { 0, 0, 0}}, // (169, 161) + {128, { 0, 0, 0}}, // (170, 161) + {128, { 0, 0, 0}}, // (171, 161) + {128, { 0, 0, 0}}, // (172, 161) + {128, { 0, 0, 0}}, // (173, 161) + {128, { 0, 0, 0}}, // (174, 161) + {128, { 0, 0, 0}}, // (175, 161) + {128, { 0, 0, 0}}, // (176, 161) + {128, { 0, 0, 0}}, // (177, 161) + {128, { 0, 0, 0}}, // (178, 161) + {128, { 0, 0, 0}}, // (179, 161) + {128, { 0, 0, 0}}, // ( 0, 162) + {128, { 0, 0, 0}}, // ( 1, 162) + {128, { 0, 0, 0}}, // ( 2, 162) + {128, { 0, 0, 0}}, // ( 3, 162) + {128, { 0, 0, 0}}, // ( 4, 162) + {128, { 0, 0, 0}}, // ( 5, 162) + {128, { 0, 0, 0}}, // ( 6, 162) + {128, { 0, 0, 0}}, // ( 7, 162) + {128, { 0, 0, 0}}, // ( 8, 162) + {128, { 0, 0, 0}}, // ( 9, 162) + {128, { 0, 0, 0}}, // ( 10, 162) + {128, { 0, 0, 0}}, // ( 11, 162) + {128, { 0, 0, 0}}, // ( 12, 162) + {128, { 0, 0, 0}}, // ( 13, 162) + {128, { 0, 0, 0}}, // ( 14, 162) + {128, { 0, 0, 0}}, // ( 15, 162) + {128, { 0, 0, 0}}, // ( 16, 162) + {128, { 0, 0, 0}}, // ( 17, 162) + {128, { 0, 0, 0}}, // ( 18, 162) + {128, { 0, 0, 0}}, // ( 19, 162) + {128, { 0, 0, 0}}, // ( 20, 162) + {128, { 0, 0, 0}}, // ( 21, 162) + {128, { 0, 0, 0}}, // ( 22, 162) + {128, { 0, 0, 0}}, // ( 23, 162) + {128, { 0, 0, 0}}, // ( 24, 162) + {128, { 0, 0, 0}}, // ( 25, 162) + {128, { 0, 0, 0}}, // ( 26, 162) + {128, { 0, 0, 0}}, // ( 27, 162) + {128, { 0, 0, 0}}, // ( 28, 162) + {128, { 0, 0, 0}}, // ( 29, 162) + {128, { 0, 0, 0}}, // ( 30, 162) + {128, { 0, 0, 0}}, // ( 31, 162) + {128, { 0, 0, 0}}, // ( 32, 162) + {128, { 0, 0, 0}}, // ( 33, 162) + {128, { 0, 0, 0}}, // ( 34, 162) + {128, { 0, 0, 0}}, // ( 35, 162) + {128, { 0, 0, 0}}, // ( 36, 162) + {128, { 0, 0, 0}}, // ( 37, 162) + {128, { 0, 0, 0}}, // ( 38, 162) + {113, { 0, 0, 0}}, // ( 39, 162) + { 32, { 0, 0, 0}}, // ( 40, 162) + { 0, { 0, 0, 0}}, // ( 41, 162) + { 0, { 0, 0, 0}}, // ( 42, 162) + { 0, { 0, 0, 0}}, // ( 43, 162) + { 0, { 0, 0, 0}}, // ( 44, 162) + { 0, { 0, 0, 0}}, // ( 45, 162) + { 0, { 0, 0, 0}}, // ( 46, 162) + { 0, { 0, 0, 0}}, // ( 47, 162) + { 0, { 0, 0, 0}}, // ( 48, 162) + { 0, { 0, 0, 0}}, // ( 49, 162) + { 0, { 0, 0, 0}}, // ( 50, 162) + { 0, { 0, 0, 0}}, // ( 51, 162) + { 0, { 0, 0, 0}}, // ( 52, 162) + { 0, { 0, 0, 0}}, // ( 53, 162) + { 0, { 0, 0, 0}}, // ( 54, 162) + { 0, { 0, 0, 0}}, // ( 55, 162) + { 0, { 0, 0, 0}}, // ( 56, 162) + { 0, { 0, 0, 0}}, // ( 57, 162) + { 0, { 0, 0, 0}}, // ( 58, 162) + { 0, { 0, 0, 0}}, // ( 59, 162) + { 0, { 0, 0, 0}}, // ( 60, 162) + { 0, { 0, 0, 0}}, // ( 61, 162) + { 0, { 0, 0, 0}}, // ( 62, 162) + { 0, { 0, 0, 0}}, // ( 63, 162) + { 0, { 0, 0, 0}}, // ( 64, 162) + { 0, { 0, 0, 0}}, // ( 65, 162) + { 0, { 0, 0, 0}}, // ( 66, 162) + { 0, { 0, 0, 0}}, // ( 67, 162) + { 0, { 0, 0, 0}}, // ( 68, 162) + { 0, { 0, 0, 0}}, // ( 69, 162) + { 0, { 0, 0, 0}}, // ( 70, 162) + { 0, { 0, 0, 0}}, // ( 71, 162) + { 0, { 0, 0, 0}}, // ( 72, 162) + { 0, { 0, 0, 0}}, // ( 73, 162) + { 0, { 0, 0, 0}}, // ( 74, 162) + { 0, { 0, 0, 0}}, // ( 75, 162) + { 0, { 0, 0, 0}}, // ( 76, 162) + { 0, { 0, 0, 0}}, // ( 77, 162) + { 0, { 0, 0, 0}}, // ( 78, 162) + { 0, { 0, 0, 0}}, // ( 79, 162) + { 0, { 0, 0, 0}}, // ( 80, 162) + { 0, { 0, 0, 0}}, // ( 81, 162) + { 0, { 0, 0, 0}}, // ( 82, 162) + { 0, { 0, 0, 0}}, // ( 83, 162) + { 0, { 0, 0, 0}}, // ( 84, 162) + { 0, { 0, 0, 0}}, // ( 85, 162) + { 0, { 0, 0, 0}}, // ( 86, 162) + { 0, { 0, 0, 0}}, // ( 87, 162) + { 0, { 0, 0, 0}}, // ( 88, 162) + { 0, { 0, 0, 0}}, // ( 89, 162) + { 0, { 0, 0, 0}}, // ( 90, 162) + { 0, { 0, 0, 0}}, // ( 91, 162) + { 0, { 0, 0, 0}}, // ( 92, 162) + { 0, { 0, 0, 0}}, // ( 93, 162) + { 0, { 0, 0, 0}}, // ( 94, 162) + { 0, { 0, 0, 0}}, // ( 95, 162) + { 0, { 0, 0, 0}}, // ( 96, 162) + { 0, { 0, 0, 0}}, // ( 97, 162) + { 0, { 0, 0, 0}}, // ( 98, 162) + { 0, { 0, 0, 0}}, // ( 99, 162) + { 0, { 0, 0, 0}}, // (100, 162) + { 0, { 0, 0, 0}}, // (101, 162) + { 0, { 0, 0, 0}}, // (102, 162) + { 0, { 0, 0, 0}}, // (103, 162) + { 0, { 0, 0, 0}}, // (104, 162) + { 0, { 0, 0, 0}}, // (105, 162) + { 0, { 0, 0, 0}}, // (106, 162) + { 0, { 0, 0, 0}}, // (107, 162) + { 0, { 0, 0, 0}}, // (108, 162) + { 0, { 0, 0, 0}}, // (109, 162) + { 0, { 0, 0, 0}}, // (110, 162) + { 0, { 0, 0, 0}}, // (111, 162) + { 0, { 0, 0, 0}}, // (112, 162) + { 0, { 0, 0, 0}}, // (113, 162) + { 0, { 0, 0, 0}}, // (114, 162) + { 0, { 0, 0, 0}}, // (115, 162) + { 0, { 0, 0, 0}}, // (116, 162) + { 0, { 0, 0, 0}}, // (117, 162) + { 0, { 0, 0, 0}}, // (118, 162) + { 0, { 0, 0, 0}}, // (119, 162) + { 0, { 0, 0, 0}}, // (120, 162) + { 0, { 0, 0, 0}}, // (121, 162) + { 0, { 0, 0, 0}}, // (122, 162) + { 0, { 0, 0, 0}}, // (123, 162) + { 0, { 0, 0, 0}}, // (124, 162) + { 0, { 0, 0, 0}}, // (125, 162) + { 0, { 0, 0, 0}}, // (126, 162) + { 0, { 0, 0, 0}}, // (127, 162) + { 0, { 0, 0, 0}}, // (128, 162) + { 0, { 0, 0, 0}}, // (129, 162) + { 0, { 0, 0, 0}}, // (130, 162) + { 0, { 0, 0, 0}}, // (131, 162) + { 0, { 0, 0, 0}}, // (132, 162) + { 0, { 0, 0, 0}}, // (133, 162) + { 0, { 0, 0, 0}}, // (134, 162) + { 0, { 0, 0, 0}}, // (135, 162) + { 0, { 0, 0, 0}}, // (136, 162) + { 0, { 0, 0, 0}}, // (137, 162) + { 0, { 0, 0, 0}}, // (138, 162) + { 32, { 0, 0, 0}}, // (139, 162) + {113, { 0, 0, 0}}, // (140, 162) + {128, { 0, 0, 0}}, // (141, 162) + {128, { 0, 0, 0}}, // (142, 162) + {128, { 0, 0, 0}}, // (143, 162) + {128, { 0, 0, 0}}, // (144, 162) + {128, { 0, 0, 0}}, // (145, 162) + {128, { 0, 0, 0}}, // (146, 162) + {128, { 0, 0, 0}}, // (147, 162) + {128, { 0, 0, 0}}, // (148, 162) + {128, { 0, 0, 0}}, // (149, 162) + {128, { 0, 0, 0}}, // (150, 162) + {128, { 0, 0, 0}}, // (151, 162) + {128, { 0, 0, 0}}, // (152, 162) + {128, { 0, 0, 0}}, // (153, 162) + {128, { 0, 0, 0}}, // (154, 162) + {128, { 0, 0, 0}}, // (155, 162) + {128, { 0, 0, 0}}, // (156, 162) + {128, { 0, 0, 0}}, // (157, 162) + {128, { 0, 0, 0}}, // (158, 162) + {128, { 0, 0, 0}}, // (159, 162) + {128, { 0, 0, 0}}, // (160, 162) + {128, { 0, 0, 0}}, // (161, 162) + {128, { 0, 0, 0}}, // (162, 162) + {128, { 0, 0, 0}}, // (163, 162) + {128, { 0, 0, 0}}, // (164, 162) + {128, { 0, 0, 0}}, // (165, 162) + {128, { 0, 0, 0}}, // (166, 162) + {128, { 0, 0, 0}}, // (167, 162) + {128, { 0, 0, 0}}, // (168, 162) + {128, { 0, 0, 0}}, // (169, 162) + {128, { 0, 0, 0}}, // (170, 162) + {128, { 0, 0, 0}}, // (171, 162) + {128, { 0, 0, 0}}, // (172, 162) + {128, { 0, 0, 0}}, // (173, 162) + {128, { 0, 0, 0}}, // (174, 162) + {128, { 0, 0, 0}}, // (175, 162) + {128, { 0, 0, 0}}, // (176, 162) + {128, { 0, 0, 0}}, // (177, 162) + {128, { 0, 0, 0}}, // (178, 162) + {128, { 0, 0, 0}}, // (179, 162) + {128, { 0, 0, 0}}, // ( 0, 163) + {128, { 0, 0, 0}}, // ( 1, 163) + {128, { 0, 0, 0}}, // ( 2, 163) + {128, { 0, 0, 0}}, // ( 3, 163) + {128, { 0, 0, 0}}, // ( 4, 163) + {128, { 0, 0, 0}}, // ( 5, 163) + {128, { 0, 0, 0}}, // ( 6, 163) + {128, { 0, 0, 0}}, // ( 7, 163) + {128, { 0, 0, 0}}, // ( 8, 163) + {128, { 0, 0, 0}}, // ( 9, 163) + {128, { 0, 0, 0}}, // ( 10, 163) + {128, { 0, 0, 0}}, // ( 11, 163) + {128, { 0, 0, 0}}, // ( 12, 163) + {128, { 0, 0, 0}}, // ( 13, 163) + {128, { 0, 0, 0}}, // ( 14, 163) + {128, { 0, 0, 0}}, // ( 15, 163) + {128, { 0, 0, 0}}, // ( 16, 163) + {128, { 0, 0, 0}}, // ( 17, 163) + {128, { 0, 0, 0}}, // ( 18, 163) + {128, { 0, 0, 0}}, // ( 19, 163) + {128, { 0, 0, 0}}, // ( 20, 163) + {128, { 0, 0, 0}}, // ( 21, 163) + {128, { 0, 0, 0}}, // ( 22, 163) + {128, { 0, 0, 0}}, // ( 23, 163) + {128, { 0, 0, 0}}, // ( 24, 163) + {128, { 0, 0, 0}}, // ( 25, 163) + {128, { 0, 0, 0}}, // ( 26, 163) + {128, { 0, 0, 0}}, // ( 27, 163) + {128, { 0, 0, 0}}, // ( 28, 163) + {128, { 0, 0, 0}}, // ( 29, 163) + {128, { 0, 0, 0}}, // ( 30, 163) + {128, { 0, 0, 0}}, // ( 31, 163) + {128, { 0, 0, 0}}, // ( 32, 163) + {128, { 0, 0, 0}}, // ( 33, 163) + {128, { 0, 0, 0}}, // ( 34, 163) + {128, { 0, 0, 0}}, // ( 35, 163) + {128, { 0, 0, 0}}, // ( 36, 163) + {128, { 0, 0, 0}}, // ( 37, 163) + {128, { 0, 0, 0}}, // ( 38, 163) + {128, { 0, 0, 0}}, // ( 39, 163) + {127, { 0, 0, 0}}, // ( 40, 163) + { 74, { 0, 0, 0}}, // ( 41, 163) + { 7, { 0, 0, 0}}, // ( 42, 163) + { 0, { 0, 0, 0}}, // ( 43, 163) + { 0, { 0, 0, 0}}, // ( 44, 163) + { 0, { 0, 0, 0}}, // ( 45, 163) + { 0, { 0, 0, 0}}, // ( 46, 163) + { 0, { 0, 0, 0}}, // ( 47, 163) + { 0, { 0, 0, 0}}, // ( 48, 163) + { 0, { 0, 0, 0}}, // ( 49, 163) + { 0, { 0, 0, 0}}, // ( 50, 163) + { 0, { 0, 0, 0}}, // ( 51, 163) + { 0, { 0, 0, 0}}, // ( 52, 163) + { 0, { 0, 0, 0}}, // ( 53, 163) + { 0, { 0, 0, 0}}, // ( 54, 163) + { 0, { 0, 0, 0}}, // ( 55, 163) + { 0, { 0, 0, 0}}, // ( 56, 163) + { 0, { 0, 0, 0}}, // ( 57, 163) + { 0, { 0, 0, 0}}, // ( 58, 163) + { 0, { 0, 0, 0}}, // ( 59, 163) + { 0, { 0, 0, 0}}, // ( 60, 163) + { 0, { 0, 0, 0}}, // ( 61, 163) + { 0, { 0, 0, 0}}, // ( 62, 163) + { 0, { 0, 0, 0}}, // ( 63, 163) + { 0, { 0, 0, 0}}, // ( 64, 163) + { 0, { 0, 0, 0}}, // ( 65, 163) + { 0, { 0, 0, 0}}, // ( 66, 163) + { 0, { 0, 0, 0}}, // ( 67, 163) + { 0, { 0, 0, 0}}, // ( 68, 163) + { 0, { 0, 0, 0}}, // ( 69, 163) + { 0, { 0, 0, 0}}, // ( 70, 163) + { 0, { 0, 0, 0}}, // ( 71, 163) + { 0, { 0, 0, 0}}, // ( 72, 163) + { 0, { 0, 0, 0}}, // ( 73, 163) + { 0, { 0, 0, 0}}, // ( 74, 163) + { 0, { 0, 0, 0}}, // ( 75, 163) + { 0, { 0, 0, 0}}, // ( 76, 163) + { 0, { 0, 0, 0}}, // ( 77, 163) + { 0, { 0, 0, 0}}, // ( 78, 163) + { 0, { 0, 0, 0}}, // ( 79, 163) + { 0, { 0, 0, 0}}, // ( 80, 163) + { 0, { 0, 0, 0}}, // ( 81, 163) + { 0, { 0, 0, 0}}, // ( 82, 163) + { 0, { 0, 0, 0}}, // ( 83, 163) + { 0, { 0, 0, 0}}, // ( 84, 163) + { 0, { 0, 0, 0}}, // ( 85, 163) + { 0, { 0, 0, 0}}, // ( 86, 163) + { 0, { 0, 0, 0}}, // ( 87, 163) + { 0, { 0, 0, 0}}, // ( 88, 163) + { 0, { 0, 0, 0}}, // ( 89, 163) + { 0, { 0, 0, 0}}, // ( 90, 163) + { 0, { 0, 0, 0}}, // ( 91, 163) + { 0, { 0, 0, 0}}, // ( 92, 163) + { 0, { 0, 0, 0}}, // ( 93, 163) + { 0, { 0, 0, 0}}, // ( 94, 163) + { 0, { 0, 0, 0}}, // ( 95, 163) + { 0, { 0, 0, 0}}, // ( 96, 163) + { 0, { 0, 0, 0}}, // ( 97, 163) + { 0, { 0, 0, 0}}, // ( 98, 163) + { 0, { 0, 0, 0}}, // ( 99, 163) + { 0, { 0, 0, 0}}, // (100, 163) + { 0, { 0, 0, 0}}, // (101, 163) + { 0, { 0, 0, 0}}, // (102, 163) + { 0, { 0, 0, 0}}, // (103, 163) + { 0, { 0, 0, 0}}, // (104, 163) + { 0, { 0, 0, 0}}, // (105, 163) + { 0, { 0, 0, 0}}, // (106, 163) + { 0, { 0, 0, 0}}, // (107, 163) + { 0, { 0, 0, 0}}, // (108, 163) + { 0, { 0, 0, 0}}, // (109, 163) + { 0, { 0, 0, 0}}, // (110, 163) + { 0, { 0, 0, 0}}, // (111, 163) + { 0, { 0, 0, 0}}, // (112, 163) + { 0, { 0, 0, 0}}, // (113, 163) + { 0, { 0, 0, 0}}, // (114, 163) + { 0, { 0, 0, 0}}, // (115, 163) + { 0, { 0, 0, 0}}, // (116, 163) + { 0, { 0, 0, 0}}, // (117, 163) + { 0, { 0, 0, 0}}, // (118, 163) + { 0, { 0, 0, 0}}, // (119, 163) + { 0, { 0, 0, 0}}, // (120, 163) + { 0, { 0, 0, 0}}, // (121, 163) + { 0, { 0, 0, 0}}, // (122, 163) + { 0, { 0, 0, 0}}, // (123, 163) + { 0, { 0, 0, 0}}, // (124, 163) + { 0, { 0, 0, 0}}, // (125, 163) + { 0, { 0, 0, 0}}, // (126, 163) + { 0, { 0, 0, 0}}, // (127, 163) + { 0, { 0, 0, 0}}, // (128, 163) + { 0, { 0, 0, 0}}, // (129, 163) + { 0, { 0, 0, 0}}, // (130, 163) + { 0, { 0, 0, 0}}, // (131, 163) + { 0, { 0, 0, 0}}, // (132, 163) + { 0, { 0, 0, 0}}, // (133, 163) + { 0, { 0, 0, 0}}, // (134, 163) + { 0, { 0, 0, 0}}, // (135, 163) + { 0, { 0, 0, 0}}, // (136, 163) + { 7, { 0, 0, 0}}, // (137, 163) + { 74, { 0, 0, 0}}, // (138, 163) + {127, { 0, 0, 0}}, // (139, 163) + {128, { 0, 0, 0}}, // (140, 163) + {128, { 0, 0, 0}}, // (141, 163) + {128, { 0, 0, 0}}, // (142, 163) + {128, { 0, 0, 0}}, // (143, 163) + {128, { 0, 0, 0}}, // (144, 163) + {128, { 0, 0, 0}}, // (145, 163) + {128, { 0, 0, 0}}, // (146, 163) + {128, { 0, 0, 0}}, // (147, 163) + {128, { 0, 0, 0}}, // (148, 163) + {128, { 0, 0, 0}}, // (149, 163) + {128, { 0, 0, 0}}, // (150, 163) + {128, { 0, 0, 0}}, // (151, 163) + {128, { 0, 0, 0}}, // (152, 163) + {128, { 0, 0, 0}}, // (153, 163) + {128, { 0, 0, 0}}, // (154, 163) + {128, { 0, 0, 0}}, // (155, 163) + {128, { 0, 0, 0}}, // (156, 163) + {128, { 0, 0, 0}}, // (157, 163) + {128, { 0, 0, 0}}, // (158, 163) + {128, { 0, 0, 0}}, // (159, 163) + {128, { 0, 0, 0}}, // (160, 163) + {128, { 0, 0, 0}}, // (161, 163) + {128, { 0, 0, 0}}, // (162, 163) + {128, { 0, 0, 0}}, // (163, 163) + {128, { 0, 0, 0}}, // (164, 163) + {128, { 0, 0, 0}}, // (165, 163) + {128, { 0, 0, 0}}, // (166, 163) + {128, { 0, 0, 0}}, // (167, 163) + {128, { 0, 0, 0}}, // (168, 163) + {128, { 0, 0, 0}}, // (169, 163) + {128, { 0, 0, 0}}, // (170, 163) + {128, { 0, 0, 0}}, // (171, 163) + {128, { 0, 0, 0}}, // (172, 163) + {128, { 0, 0, 0}}, // (173, 163) + {128, { 0, 0, 0}}, // (174, 163) + {128, { 0, 0, 0}}, // (175, 163) + {128, { 0, 0, 0}}, // (176, 163) + {128, { 0, 0, 0}}, // (177, 163) + {128, { 0, 0, 0}}, // (178, 163) + {128, { 0, 0, 0}}, // (179, 163) + {128, { 0, 0, 0}}, // ( 0, 164) + {128, { 0, 0, 0}}, // ( 1, 164) + {128, { 0, 0, 0}}, // ( 2, 164) + {128, { 0, 0, 0}}, // ( 3, 164) + {128, { 0, 0, 0}}, // ( 4, 164) + {128, { 0, 0, 0}}, // ( 5, 164) + {128, { 0, 0, 0}}, // ( 6, 164) + {128, { 0, 0, 0}}, // ( 7, 164) + {128, { 0, 0, 0}}, // ( 8, 164) + {128, { 0, 0, 0}}, // ( 9, 164) + {128, { 0, 0, 0}}, // ( 10, 164) + {128, { 0, 0, 0}}, // ( 11, 164) + {128, { 0, 0, 0}}, // ( 12, 164) + {128, { 0, 0, 0}}, // ( 13, 164) + {128, { 0, 0, 0}}, // ( 14, 164) + {128, { 0, 0, 0}}, // ( 15, 164) + {128, { 0, 0, 0}}, // ( 16, 164) + {128, { 0, 0, 0}}, // ( 17, 164) + {128, { 0, 0, 0}}, // ( 18, 164) + {128, { 0, 0, 0}}, // ( 19, 164) + {128, { 0, 0, 0}}, // ( 20, 164) + {128, { 0, 0, 0}}, // ( 21, 164) + {128, { 0, 0, 0}}, // ( 22, 164) + {128, { 0, 0, 0}}, // ( 23, 164) + {128, { 0, 0, 0}}, // ( 24, 164) + {128, { 0, 0, 0}}, // ( 25, 164) + {128, { 0, 0, 0}}, // ( 26, 164) + {128, { 0, 0, 0}}, // ( 27, 164) + {128, { 0, 0, 0}}, // ( 28, 164) + {128, { 0, 0, 0}}, // ( 29, 164) + {128, { 0, 0, 0}}, // ( 30, 164) + {128, { 0, 0, 0}}, // ( 31, 164) + {128, { 0, 0, 0}}, // ( 32, 164) + {128, { 0, 0, 0}}, // ( 33, 164) + {128, { 0, 0, 0}}, // ( 34, 164) + {128, { 0, 0, 0}}, // ( 35, 164) + {128, { 0, 0, 0}}, // ( 36, 164) + {128, { 0, 0, 0}}, // ( 37, 164) + {128, { 0, 0, 0}}, // ( 38, 164) + {128, { 0, 0, 0}}, // ( 39, 164) + {128, { 0, 0, 0}}, // ( 40, 164) + {128, { 0, 0, 0}}, // ( 41, 164) + {113, { 0, 0, 0}}, // ( 42, 164) + { 38, { 0, 0, 0}}, // ( 43, 164) + { 0, { 0, 0, 0}}, // ( 44, 164) + { 0, { 0, 0, 0}}, // ( 45, 164) + { 0, { 0, 0, 0}}, // ( 46, 164) + { 0, { 0, 0, 0}}, // ( 47, 164) + { 0, { 0, 0, 0}}, // ( 48, 164) + { 0, { 0, 0, 0}}, // ( 49, 164) + { 0, { 0, 0, 0}}, // ( 50, 164) + { 0, { 0, 0, 0}}, // ( 51, 164) + { 0, { 0, 0, 0}}, // ( 52, 164) + { 0, { 0, 0, 0}}, // ( 53, 164) + { 0, { 0, 0, 0}}, // ( 54, 164) + { 0, { 0, 0, 0}}, // ( 55, 164) + { 0, { 0, 0, 0}}, // ( 56, 164) + { 0, { 0, 0, 0}}, // ( 57, 164) + { 0, { 0, 0, 0}}, // ( 58, 164) + { 0, { 0, 0, 0}}, // ( 59, 164) + { 0, { 0, 0, 0}}, // ( 60, 164) + { 0, { 0, 0, 0}}, // ( 61, 164) + { 0, { 0, 0, 0}}, // ( 62, 164) + { 0, { 0, 0, 0}}, // ( 63, 164) + { 0, { 0, 0, 0}}, // ( 64, 164) + { 0, { 0, 0, 0}}, // ( 65, 164) + { 0, { 0, 0, 0}}, // ( 66, 164) + { 0, { 0, 0, 0}}, // ( 67, 164) + { 0, { 0, 0, 0}}, // ( 68, 164) + { 0, { 0, 0, 0}}, // ( 69, 164) + { 0, { 0, 0, 0}}, // ( 70, 164) + { 0, { 0, 0, 0}}, // ( 71, 164) + { 0, { 0, 0, 0}}, // ( 72, 164) + { 0, { 0, 0, 0}}, // ( 73, 164) + { 0, { 0, 0, 0}}, // ( 74, 164) + { 0, { 0, 0, 0}}, // ( 75, 164) + { 0, { 0, 0, 0}}, // ( 76, 164) + { 0, { 0, 0, 0}}, // ( 77, 164) + { 0, { 0, 0, 0}}, // ( 78, 164) + { 0, { 0, 0, 0}}, // ( 79, 164) + { 0, { 0, 0, 0}}, // ( 80, 164) + { 0, { 0, 0, 0}}, // ( 81, 164) + { 0, { 0, 0, 0}}, // ( 82, 164) + { 0, { 0, 0, 0}}, // ( 83, 164) + { 0, { 0, 0, 0}}, // ( 84, 164) + { 0, { 0, 0, 0}}, // ( 85, 164) + { 0, { 0, 0, 0}}, // ( 86, 164) + { 0, { 0, 0, 0}}, // ( 87, 164) + { 0, { 0, 0, 0}}, // ( 88, 164) + { 0, { 0, 0, 0}}, // ( 89, 164) + { 0, { 0, 0, 0}}, // ( 90, 164) + { 0, { 0, 0, 0}}, // ( 91, 164) + { 0, { 0, 0, 0}}, // ( 92, 164) + { 0, { 0, 0, 0}}, // ( 93, 164) + { 0, { 0, 0, 0}}, // ( 94, 164) + { 0, { 0, 0, 0}}, // ( 95, 164) + { 0, { 0, 0, 0}}, // ( 96, 164) + { 0, { 0, 0, 0}}, // ( 97, 164) + { 0, { 0, 0, 0}}, // ( 98, 164) + { 0, { 0, 0, 0}}, // ( 99, 164) + { 0, { 0, 0, 0}}, // (100, 164) + { 0, { 0, 0, 0}}, // (101, 164) + { 0, { 0, 0, 0}}, // (102, 164) + { 0, { 0, 0, 0}}, // (103, 164) + { 0, { 0, 0, 0}}, // (104, 164) + { 0, { 0, 0, 0}}, // (105, 164) + { 0, { 0, 0, 0}}, // (106, 164) + { 0, { 0, 0, 0}}, // (107, 164) + { 0, { 0, 0, 0}}, // (108, 164) + { 0, { 0, 0, 0}}, // (109, 164) + { 0, { 0, 0, 0}}, // (110, 164) + { 0, { 0, 0, 0}}, // (111, 164) + { 0, { 0, 0, 0}}, // (112, 164) + { 0, { 0, 0, 0}}, // (113, 164) + { 0, { 0, 0, 0}}, // (114, 164) + { 0, { 0, 0, 0}}, // (115, 164) + { 0, { 0, 0, 0}}, // (116, 164) + { 0, { 0, 0, 0}}, // (117, 164) + { 0, { 0, 0, 0}}, // (118, 164) + { 0, { 0, 0, 0}}, // (119, 164) + { 0, { 0, 0, 0}}, // (120, 164) + { 0, { 0, 0, 0}}, // (121, 164) + { 0, { 0, 0, 0}}, // (122, 164) + { 0, { 0, 0, 0}}, // (123, 164) + { 0, { 0, 0, 0}}, // (124, 164) + { 0, { 0, 0, 0}}, // (125, 164) + { 0, { 0, 0, 0}}, // (126, 164) + { 0, { 0, 0, 0}}, // (127, 164) + { 0, { 0, 0, 0}}, // (128, 164) + { 0, { 0, 0, 0}}, // (129, 164) + { 0, { 0, 0, 0}}, // (130, 164) + { 0, { 0, 0, 0}}, // (131, 164) + { 0, { 0, 0, 0}}, // (132, 164) + { 0, { 0, 0, 0}}, // (133, 164) + { 0, { 0, 0, 0}}, // (134, 164) + { 0, { 0, 0, 0}}, // (135, 164) + { 38, { 0, 0, 0}}, // (136, 164) + {113, { 0, 0, 0}}, // (137, 164) + {128, { 0, 0, 0}}, // (138, 164) + {128, { 0, 0, 0}}, // (139, 164) + {128, { 0, 0, 0}}, // (140, 164) + {128, { 0, 0, 0}}, // (141, 164) + {128, { 0, 0, 0}}, // (142, 164) + {128, { 0, 0, 0}}, // (143, 164) + {128, { 0, 0, 0}}, // (144, 164) + {128, { 0, 0, 0}}, // (145, 164) + {128, { 0, 0, 0}}, // (146, 164) + {128, { 0, 0, 0}}, // (147, 164) + {128, { 0, 0, 0}}, // (148, 164) + {128, { 0, 0, 0}}, // (149, 164) + {128, { 0, 0, 0}}, // (150, 164) + {128, { 0, 0, 0}}, // (151, 164) + {128, { 0, 0, 0}}, // (152, 164) + {128, { 0, 0, 0}}, // (153, 164) + {128, { 0, 0, 0}}, // (154, 164) + {128, { 0, 0, 0}}, // (155, 164) + {128, { 0, 0, 0}}, // (156, 164) + {128, { 0, 0, 0}}, // (157, 164) + {128, { 0, 0, 0}}, // (158, 164) + {128, { 0, 0, 0}}, // (159, 164) + {128, { 0, 0, 0}}, // (160, 164) + {128, { 0, 0, 0}}, // (161, 164) + {128, { 0, 0, 0}}, // (162, 164) + {128, { 0, 0, 0}}, // (163, 164) + {128, { 0, 0, 0}}, // (164, 164) + {128, { 0, 0, 0}}, // (165, 164) + {128, { 0, 0, 0}}, // (166, 164) + {128, { 0, 0, 0}}, // (167, 164) + {128, { 0, 0, 0}}, // (168, 164) + {128, { 0, 0, 0}}, // (169, 164) + {128, { 0, 0, 0}}, // (170, 164) + {128, { 0, 0, 0}}, // (171, 164) + {128, { 0, 0, 0}}, // (172, 164) + {128, { 0, 0, 0}}, // (173, 164) + {128, { 0, 0, 0}}, // (174, 164) + {128, { 0, 0, 0}}, // (175, 164) + {128, { 0, 0, 0}}, // (176, 164) + {128, { 0, 0, 0}}, // (177, 164) + {128, { 0, 0, 0}}, // (178, 164) + {128, { 0, 0, 0}}, // (179, 164) + {128, { 0, 0, 0}}, // ( 0, 165) + {128, { 0, 0, 0}}, // ( 1, 165) + {128, { 0, 0, 0}}, // ( 2, 165) + {128, { 0, 0, 0}}, // ( 3, 165) + {128, { 0, 0, 0}}, // ( 4, 165) + {128, { 0, 0, 0}}, // ( 5, 165) + {128, { 0, 0, 0}}, // ( 6, 165) + {128, { 0, 0, 0}}, // ( 7, 165) + {128, { 0, 0, 0}}, // ( 8, 165) + {128, { 0, 0, 0}}, // ( 9, 165) + {128, { 0, 0, 0}}, // ( 10, 165) + {128, { 0, 0, 0}}, // ( 11, 165) + {128, { 0, 0, 0}}, // ( 12, 165) + {128, { 0, 0, 0}}, // ( 13, 165) + {128, { 0, 0, 0}}, // ( 14, 165) + {128, { 0, 0, 0}}, // ( 15, 165) + {128, { 0, 0, 0}}, // ( 16, 165) + {128, { 0, 0, 0}}, // ( 17, 165) + {128, { 0, 0, 0}}, // ( 18, 165) + {128, { 0, 0, 0}}, // ( 19, 165) + {128, { 0, 0, 0}}, // ( 20, 165) + {128, { 0, 0, 0}}, // ( 21, 165) + {128, { 0, 0, 0}}, // ( 22, 165) + {128, { 0, 0, 0}}, // ( 23, 165) + {128, { 0, 0, 0}}, // ( 24, 165) + {128, { 0, 0, 0}}, // ( 25, 165) + {128, { 0, 0, 0}}, // ( 26, 165) + {128, { 0, 0, 0}}, // ( 27, 165) + {128, { 0, 0, 0}}, // ( 28, 165) + {128, { 0, 0, 0}}, // ( 29, 165) + {128, { 0, 0, 0}}, // ( 30, 165) + {128, { 0, 0, 0}}, // ( 31, 165) + {128, { 0, 0, 0}}, // ( 32, 165) + {128, { 0, 0, 0}}, // ( 33, 165) + {128, { 0, 0, 0}}, // ( 34, 165) + {128, { 0, 0, 0}}, // ( 35, 165) + {128, { 0, 0, 0}}, // ( 36, 165) + {128, { 0, 0, 0}}, // ( 37, 165) + {128, { 0, 0, 0}}, // ( 38, 165) + {128, { 0, 0, 0}}, // ( 39, 165) + {128, { 0, 0, 0}}, // ( 40, 165) + {128, { 0, 0, 0}}, // ( 41, 165) + {128, { 0, 0, 0}}, // ( 42, 165) + {128, { 0, 0, 0}}, // ( 43, 165) + { 85, { 0, 0, 0}}, // ( 44, 165) + { 15, { 0, 0, 0}}, // ( 45, 165) + { 0, { 0, 0, 0}}, // ( 46, 165) + { 0, { 0, 0, 0}}, // ( 47, 165) + { 0, { 0, 0, 0}}, // ( 48, 165) + { 0, { 0, 0, 0}}, // ( 49, 165) + { 0, { 0, 0, 0}}, // ( 50, 165) + { 0, { 0, 0, 0}}, // ( 51, 165) + { 0, { 0, 0, 0}}, // ( 52, 165) + { 0, { 0, 0, 0}}, // ( 53, 165) + { 0, { 0, 0, 0}}, // ( 54, 165) + { 0, { 0, 0, 0}}, // ( 55, 165) + { 0, { 0, 0, 0}}, // ( 56, 165) + { 0, { 0, 0, 0}}, // ( 57, 165) + { 0, { 0, 0, 0}}, // ( 58, 165) + { 0, { 0, 0, 0}}, // ( 59, 165) + { 0, { 0, 0, 0}}, // ( 60, 165) + { 0, { 0, 0, 0}}, // ( 61, 165) + { 0, { 0, 0, 0}}, // ( 62, 165) + { 0, { 0, 0, 0}}, // ( 63, 165) + { 0, { 0, 0, 0}}, // ( 64, 165) + { 0, { 0, 0, 0}}, // ( 65, 165) + { 0, { 0, 0, 0}}, // ( 66, 165) + { 0, { 0, 0, 0}}, // ( 67, 165) + { 0, { 0, 0, 0}}, // ( 68, 165) + { 0, { 0, 0, 0}}, // ( 69, 165) + { 0, { 0, 0, 0}}, // ( 70, 165) + { 0, { 0, 0, 0}}, // ( 71, 165) + { 0, { 0, 0, 0}}, // ( 72, 165) + { 0, { 0, 0, 0}}, // ( 73, 165) + { 0, { 0, 0, 0}}, // ( 74, 165) + { 0, { 0, 0, 0}}, // ( 75, 165) + { 0, { 0, 0, 0}}, // ( 76, 165) + { 0, { 0, 0, 0}}, // ( 77, 165) + { 0, { 0, 0, 0}}, // ( 78, 165) + { 0, { 0, 0, 0}}, // ( 79, 165) + { 0, { 0, 0, 0}}, // ( 80, 165) + { 0, { 0, 0, 0}}, // ( 81, 165) + { 0, { 0, 0, 0}}, // ( 82, 165) + { 0, { 0, 0, 0}}, // ( 83, 165) + { 0, { 0, 0, 0}}, // ( 84, 165) + { 0, { 0, 0, 0}}, // ( 85, 165) + { 0, { 0, 0, 0}}, // ( 86, 165) + { 0, { 0, 0, 0}}, // ( 87, 165) + { 0, { 0, 0, 0}}, // ( 88, 165) + { 0, { 0, 0, 0}}, // ( 89, 165) + { 0, { 0, 0, 0}}, // ( 90, 165) + { 0, { 0, 0, 0}}, // ( 91, 165) + { 0, { 0, 0, 0}}, // ( 92, 165) + { 0, { 0, 0, 0}}, // ( 93, 165) + { 0, { 0, 0, 0}}, // ( 94, 165) + { 0, { 0, 0, 0}}, // ( 95, 165) + { 0, { 0, 0, 0}}, // ( 96, 165) + { 0, { 0, 0, 0}}, // ( 97, 165) + { 0, { 0, 0, 0}}, // ( 98, 165) + { 0, { 0, 0, 0}}, // ( 99, 165) + { 0, { 0, 0, 0}}, // (100, 165) + { 0, { 0, 0, 0}}, // (101, 165) + { 0, { 0, 0, 0}}, // (102, 165) + { 0, { 0, 0, 0}}, // (103, 165) + { 0, { 0, 0, 0}}, // (104, 165) + { 0, { 0, 0, 0}}, // (105, 165) + { 0, { 0, 0, 0}}, // (106, 165) + { 0, { 0, 0, 0}}, // (107, 165) + { 0, { 0, 0, 0}}, // (108, 165) + { 0, { 0, 0, 0}}, // (109, 165) + { 0, { 0, 0, 0}}, // (110, 165) + { 0, { 0, 0, 0}}, // (111, 165) + { 0, { 0, 0, 0}}, // (112, 165) + { 0, { 0, 0, 0}}, // (113, 165) + { 0, { 0, 0, 0}}, // (114, 165) + { 0, { 0, 0, 0}}, // (115, 165) + { 0, { 0, 0, 0}}, // (116, 165) + { 0, { 0, 0, 0}}, // (117, 165) + { 0, { 0, 0, 0}}, // (118, 165) + { 0, { 0, 0, 0}}, // (119, 165) + { 0, { 0, 0, 0}}, // (120, 165) + { 0, { 0, 0, 0}}, // (121, 165) + { 0, { 0, 0, 0}}, // (122, 165) + { 0, { 0, 0, 0}}, // (123, 165) + { 0, { 0, 0, 0}}, // (124, 165) + { 0, { 0, 0, 0}}, // (125, 165) + { 0, { 0, 0, 0}}, // (126, 165) + { 0, { 0, 0, 0}}, // (127, 165) + { 0, { 0, 0, 0}}, // (128, 165) + { 0, { 0, 0, 0}}, // (129, 165) + { 0, { 0, 0, 0}}, // (130, 165) + { 0, { 0, 0, 0}}, // (131, 165) + { 0, { 0, 0, 0}}, // (132, 165) + { 0, { 0, 0, 0}}, // (133, 165) + { 15, { 0, 0, 0}}, // (134, 165) + { 85, { 0, 0, 0}}, // (135, 165) + {128, { 0, 0, 0}}, // (136, 165) + {128, { 0, 0, 0}}, // (137, 165) + {128, { 0, 0, 0}}, // (138, 165) + {128, { 0, 0, 0}}, // (139, 165) + {128, { 0, 0, 0}}, // (140, 165) + {128, { 0, 0, 0}}, // (141, 165) + {128, { 0, 0, 0}}, // (142, 165) + {128, { 0, 0, 0}}, // (143, 165) + {128, { 0, 0, 0}}, // (144, 165) + {128, { 0, 0, 0}}, // (145, 165) + {128, { 0, 0, 0}}, // (146, 165) + {128, { 0, 0, 0}}, // (147, 165) + {128, { 0, 0, 0}}, // (148, 165) + {128, { 0, 0, 0}}, // (149, 165) + {128, { 0, 0, 0}}, // (150, 165) + {128, { 0, 0, 0}}, // (151, 165) + {128, { 0, 0, 0}}, // (152, 165) + {128, { 0, 0, 0}}, // (153, 165) + {128, { 0, 0, 0}}, // (154, 165) + {128, { 0, 0, 0}}, // (155, 165) + {128, { 0, 0, 0}}, // (156, 165) + {128, { 0, 0, 0}}, // (157, 165) + {128, { 0, 0, 0}}, // (158, 165) + {128, { 0, 0, 0}}, // (159, 165) + {128, { 0, 0, 0}}, // (160, 165) + {128, { 0, 0, 0}}, // (161, 165) + {128, { 0, 0, 0}}, // (162, 165) + {128, { 0, 0, 0}}, // (163, 165) + {128, { 0, 0, 0}}, // (164, 165) + {128, { 0, 0, 0}}, // (165, 165) + {128, { 0, 0, 0}}, // (166, 165) + {128, { 0, 0, 0}}, // (167, 165) + {128, { 0, 0, 0}}, // (168, 165) + {128, { 0, 0, 0}}, // (169, 165) + {128, { 0, 0, 0}}, // (170, 165) + {128, { 0, 0, 0}}, // (171, 165) + {128, { 0, 0, 0}}, // (172, 165) + {128, { 0, 0, 0}}, // (173, 165) + {128, { 0, 0, 0}}, // (174, 165) + {128, { 0, 0, 0}}, // (175, 165) + {128, { 0, 0, 0}}, // (176, 165) + {128, { 0, 0, 0}}, // (177, 165) + {128, { 0, 0, 0}}, // (178, 165) + {128, { 0, 0, 0}}, // (179, 165) + {128, { 0, 0, 0}}, // ( 0, 166) + {128, { 0, 0, 0}}, // ( 1, 166) + {128, { 0, 0, 0}}, // ( 2, 166) + {128, { 0, 0, 0}}, // ( 3, 166) + {128, { 0, 0, 0}}, // ( 4, 166) + {128, { 0, 0, 0}}, // ( 5, 166) + {128, { 0, 0, 0}}, // ( 6, 166) + {128, { 0, 0, 0}}, // ( 7, 166) + {128, { 0, 0, 0}}, // ( 8, 166) + {128, { 0, 0, 0}}, // ( 9, 166) + {128, { 0, 0, 0}}, // ( 10, 166) + {128, { 0, 0, 0}}, // ( 11, 166) + {128, { 0, 0, 0}}, // ( 12, 166) + {128, { 0, 0, 0}}, // ( 13, 166) + {128, { 0, 0, 0}}, // ( 14, 166) + {128, { 0, 0, 0}}, // ( 15, 166) + {128, { 0, 0, 0}}, // ( 16, 166) + {128, { 0, 0, 0}}, // ( 17, 166) + {128, { 0, 0, 0}}, // ( 18, 166) + {128, { 0, 0, 0}}, // ( 19, 166) + {128, { 0, 0, 0}}, // ( 20, 166) + {128, { 0, 0, 0}}, // ( 21, 166) + {128, { 0, 0, 0}}, // ( 22, 166) + {128, { 0, 0, 0}}, // ( 23, 166) + {128, { 0, 0, 0}}, // ( 24, 166) + {128, { 0, 0, 0}}, // ( 25, 166) + {128, { 0, 0, 0}}, // ( 26, 166) + {128, { 0, 0, 0}}, // ( 27, 166) + {128, { 0, 0, 0}}, // ( 28, 166) + {128, { 0, 0, 0}}, // ( 29, 166) + {128, { 0, 0, 0}}, // ( 30, 166) + {128, { 0, 0, 0}}, // ( 31, 166) + {128, { 0, 0, 0}}, // ( 32, 166) + {128, { 0, 0, 0}}, // ( 33, 166) + {128, { 0, 0, 0}}, // ( 34, 166) + {128, { 0, 0, 0}}, // ( 35, 166) + {128, { 0, 0, 0}}, // ( 36, 166) + {128, { 0, 0, 0}}, // ( 37, 166) + {128, { 0, 0, 0}}, // ( 38, 166) + {128, { 0, 0, 0}}, // ( 39, 166) + {128, { 0, 0, 0}}, // ( 40, 166) + {128, { 0, 0, 0}}, // ( 41, 166) + {128, { 0, 0, 0}}, // ( 42, 166) + {128, { 0, 0, 0}}, // ( 43, 166) + {128, { 0, 0, 0}}, // ( 44, 166) + {123, { 0, 0, 0}}, // ( 45, 166) + { 66, { 0, 0, 0}}, // ( 46, 166) + { 6, { 0, 0, 0}}, // ( 47, 166) + { 0, { 0, 0, 0}}, // ( 48, 166) + { 0, { 0, 0, 0}}, // ( 49, 166) + { 0, { 0, 0, 0}}, // ( 50, 166) + { 0, { 0, 0, 0}}, // ( 51, 166) + { 0, { 0, 0, 0}}, // ( 52, 166) + { 0, { 0, 0, 0}}, // ( 53, 166) + { 0, { 0, 0, 0}}, // ( 54, 166) + { 0, { 0, 0, 0}}, // ( 55, 166) + { 0, { 0, 0, 0}}, // ( 56, 166) + { 0, { 0, 0, 0}}, // ( 57, 166) + { 0, { 0, 0, 0}}, // ( 58, 166) + { 0, { 0, 0, 0}}, // ( 59, 166) + { 0, { 0, 0, 0}}, // ( 60, 166) + { 0, { 0, 0, 0}}, // ( 61, 166) + { 0, { 0, 0, 0}}, // ( 62, 166) + { 0, { 0, 0, 0}}, // ( 63, 166) + { 0, { 0, 0, 0}}, // ( 64, 166) + { 0, { 0, 0, 0}}, // ( 65, 166) + { 0, { 0, 0, 0}}, // ( 66, 166) + { 0, { 0, 0, 0}}, // ( 67, 166) + { 0, { 0, 0, 0}}, // ( 68, 166) + { 0, { 0, 0, 0}}, // ( 69, 166) + { 0, { 0, 0, 0}}, // ( 70, 166) + { 0, { 0, 0, 0}}, // ( 71, 166) + { 0, { 0, 0, 0}}, // ( 72, 166) + { 0, { 0, 0, 0}}, // ( 73, 166) + { 0, { 0, 0, 0}}, // ( 74, 166) + { 0, { 0, 0, 0}}, // ( 75, 166) + { 0, { 0, 0, 0}}, // ( 76, 166) + { 0, { 0, 0, 0}}, // ( 77, 166) + { 0, { 0, 0, 0}}, // ( 78, 166) + { 0, { 0, 0, 0}}, // ( 79, 166) + { 0, { 0, 0, 0}}, // ( 80, 166) + { 0, { 0, 0, 0}}, // ( 81, 166) + { 0, { 0, 0, 0}}, // ( 82, 166) + { 0, { 0, 0, 0}}, // ( 83, 166) + { 0, { 0, 0, 0}}, // ( 84, 166) + { 0, { 0, 0, 0}}, // ( 85, 166) + { 0, { 0, 0, 0}}, // ( 86, 166) + { 0, { 0, 0, 0}}, // ( 87, 166) + { 0, { 0, 0, 0}}, // ( 88, 166) + { 0, { 0, 0, 0}}, // ( 89, 166) + { 0, { 0, 0, 0}}, // ( 90, 166) + { 0, { 0, 0, 0}}, // ( 91, 166) + { 0, { 0, 0, 0}}, // ( 92, 166) + { 0, { 0, 0, 0}}, // ( 93, 166) + { 0, { 0, 0, 0}}, // ( 94, 166) + { 0, { 0, 0, 0}}, // ( 95, 166) + { 0, { 0, 0, 0}}, // ( 96, 166) + { 0, { 0, 0, 0}}, // ( 97, 166) + { 0, { 0, 0, 0}}, // ( 98, 166) + { 0, { 0, 0, 0}}, // ( 99, 166) + { 0, { 0, 0, 0}}, // (100, 166) + { 0, { 0, 0, 0}}, // (101, 166) + { 0, { 0, 0, 0}}, // (102, 166) + { 0, { 0, 0, 0}}, // (103, 166) + { 0, { 0, 0, 0}}, // (104, 166) + { 0, { 0, 0, 0}}, // (105, 166) + { 0, { 0, 0, 0}}, // (106, 166) + { 0, { 0, 0, 0}}, // (107, 166) + { 0, { 0, 0, 0}}, // (108, 166) + { 0, { 0, 0, 0}}, // (109, 166) + { 0, { 0, 0, 0}}, // (110, 166) + { 0, { 0, 0, 0}}, // (111, 166) + { 0, { 0, 0, 0}}, // (112, 166) + { 0, { 0, 0, 0}}, // (113, 166) + { 0, { 0, 0, 0}}, // (114, 166) + { 0, { 0, 0, 0}}, // (115, 166) + { 0, { 0, 0, 0}}, // (116, 166) + { 0, { 0, 0, 0}}, // (117, 166) + { 0, { 0, 0, 0}}, // (118, 166) + { 0, { 0, 0, 0}}, // (119, 166) + { 0, { 0, 0, 0}}, // (120, 166) + { 0, { 0, 0, 0}}, // (121, 166) + { 0, { 0, 0, 0}}, // (122, 166) + { 0, { 0, 0, 0}}, // (123, 166) + { 0, { 0, 0, 0}}, // (124, 166) + { 0, { 0, 0, 0}}, // (125, 166) + { 0, { 0, 0, 0}}, // (126, 166) + { 0, { 0, 0, 0}}, // (127, 166) + { 0, { 0, 0, 0}}, // (128, 166) + { 0, { 0, 0, 0}}, // (129, 166) + { 0, { 0, 0, 0}}, // (130, 166) + { 0, { 0, 0, 0}}, // (131, 166) + { 6, { 0, 0, 0}}, // (132, 166) + { 66, { 0, 0, 0}}, // (133, 166) + {123, { 0, 0, 0}}, // (134, 166) + {128, { 0, 0, 0}}, // (135, 166) + {128, { 0, 0, 0}}, // (136, 166) + {128, { 0, 0, 0}}, // (137, 166) + {128, { 0, 0, 0}}, // (138, 166) + {128, { 0, 0, 0}}, // (139, 166) + {128, { 0, 0, 0}}, // (140, 166) + {128, { 0, 0, 0}}, // (141, 166) + {128, { 0, 0, 0}}, // (142, 166) + {128, { 0, 0, 0}}, // (143, 166) + {128, { 0, 0, 0}}, // (144, 166) + {128, { 0, 0, 0}}, // (145, 166) + {128, { 0, 0, 0}}, // (146, 166) + {128, { 0, 0, 0}}, // (147, 166) + {128, { 0, 0, 0}}, // (148, 166) + {128, { 0, 0, 0}}, // (149, 166) + {128, { 0, 0, 0}}, // (150, 166) + {128, { 0, 0, 0}}, // (151, 166) + {128, { 0, 0, 0}}, // (152, 166) + {128, { 0, 0, 0}}, // (153, 166) + {128, { 0, 0, 0}}, // (154, 166) + {128, { 0, 0, 0}}, // (155, 166) + {128, { 0, 0, 0}}, // (156, 166) + {128, { 0, 0, 0}}, // (157, 166) + {128, { 0, 0, 0}}, // (158, 166) + {128, { 0, 0, 0}}, // (159, 166) + {128, { 0, 0, 0}}, // (160, 166) + {128, { 0, 0, 0}}, // (161, 166) + {128, { 0, 0, 0}}, // (162, 166) + {128, { 0, 0, 0}}, // (163, 166) + {128, { 0, 0, 0}}, // (164, 166) + {128, { 0, 0, 0}}, // (165, 166) + {128, { 0, 0, 0}}, // (166, 166) + {128, { 0, 0, 0}}, // (167, 166) + {128, { 0, 0, 0}}, // (168, 166) + {128, { 0, 0, 0}}, // (169, 166) + {128, { 0, 0, 0}}, // (170, 166) + {128, { 0, 0, 0}}, // (171, 166) + {128, { 0, 0, 0}}, // (172, 166) + {128, { 0, 0, 0}}, // (173, 166) + {128, { 0, 0, 0}}, // (174, 166) + {128, { 0, 0, 0}}, // (175, 166) + {128, { 0, 0, 0}}, // (176, 166) + {128, { 0, 0, 0}}, // (177, 166) + {128, { 0, 0, 0}}, // (178, 166) + {128, { 0, 0, 0}}, // (179, 166) + {128, { 0, 0, 0}}, // ( 0, 167) + {128, { 0, 0, 0}}, // ( 1, 167) + {128, { 0, 0, 0}}, // ( 2, 167) + {128, { 0, 0, 0}}, // ( 3, 167) + {128, { 0, 0, 0}}, // ( 4, 167) + {128, { 0, 0, 0}}, // ( 5, 167) + {128, { 0, 0, 0}}, // ( 6, 167) + {128, { 0, 0, 0}}, // ( 7, 167) + {128, { 0, 0, 0}}, // ( 8, 167) + {128, { 0, 0, 0}}, // ( 9, 167) + {128, { 0, 0, 0}}, // ( 10, 167) + {128, { 0, 0, 0}}, // ( 11, 167) + {128, { 0, 0, 0}}, // ( 12, 167) + {128, { 0, 0, 0}}, // ( 13, 167) + {128, { 0, 0, 0}}, // ( 14, 167) + {128, { 0, 0, 0}}, // ( 15, 167) + {128, { 0, 0, 0}}, // ( 16, 167) + {128, { 0, 0, 0}}, // ( 17, 167) + {128, { 0, 0, 0}}, // ( 18, 167) + {128, { 0, 0, 0}}, // ( 19, 167) + {128, { 0, 0, 0}}, // ( 20, 167) + {128, { 0, 0, 0}}, // ( 21, 167) + {128, { 0, 0, 0}}, // ( 22, 167) + {128, { 0, 0, 0}}, // ( 23, 167) + {128, { 0, 0, 0}}, // ( 24, 167) + {128, { 0, 0, 0}}, // ( 25, 167) + {128, { 0, 0, 0}}, // ( 26, 167) + {128, { 0, 0, 0}}, // ( 27, 167) + {128, { 0, 0, 0}}, // ( 28, 167) + {128, { 0, 0, 0}}, // ( 29, 167) + {128, { 0, 0, 0}}, // ( 30, 167) + {128, { 0, 0, 0}}, // ( 31, 167) + {128, { 0, 0, 0}}, // ( 32, 167) + {128, { 0, 0, 0}}, // ( 33, 167) + {128, { 0, 0, 0}}, // ( 34, 167) + {128, { 0, 0, 0}}, // ( 35, 167) + {128, { 0, 0, 0}}, // ( 36, 167) + {128, { 0, 0, 0}}, // ( 37, 167) + {128, { 0, 0, 0}}, // ( 38, 167) + {128, { 0, 0, 0}}, // ( 39, 167) + {128, { 0, 0, 0}}, // ( 40, 167) + {128, { 0, 0, 0}}, // ( 41, 167) + {128, { 0, 0, 0}}, // ( 42, 167) + {128, { 0, 0, 0}}, // ( 43, 167) + {128, { 0, 0, 0}}, // ( 44, 167) + {128, { 0, 0, 0}}, // ( 45, 167) + {128, { 0, 0, 0}}, // ( 46, 167) + {115, { 0, 0, 0}}, // ( 47, 167) + { 51, { 0, 0, 0}}, // ( 48, 167) + { 2, { 0, 0, 0}}, // ( 49, 167) + { 0, { 0, 0, 0}}, // ( 50, 167) + { 0, { 0, 0, 0}}, // ( 51, 167) + { 0, { 0, 0, 0}}, // ( 52, 167) + { 0, { 0, 0, 0}}, // ( 53, 167) + { 0, { 0, 0, 0}}, // ( 54, 167) + { 0, { 0, 0, 0}}, // ( 55, 167) + { 0, { 0, 0, 0}}, // ( 56, 167) + { 0, { 0, 0, 0}}, // ( 57, 167) + { 0, { 0, 0, 0}}, // ( 58, 167) + { 0, { 0, 0, 0}}, // ( 59, 167) + { 0, { 0, 0, 0}}, // ( 60, 167) + { 0, { 0, 0, 0}}, // ( 61, 167) + { 0, { 0, 0, 0}}, // ( 62, 167) + { 0, { 0, 0, 0}}, // ( 63, 167) + { 0, { 0, 0, 0}}, // ( 64, 167) + { 0, { 0, 0, 0}}, // ( 65, 167) + { 0, { 0, 0, 0}}, // ( 66, 167) + { 0, { 0, 0, 0}}, // ( 67, 167) + { 0, { 0, 0, 0}}, // ( 68, 167) + { 0, { 0, 0, 0}}, // ( 69, 167) + { 0, { 0, 0, 0}}, // ( 70, 167) + { 0, { 0, 0, 0}}, // ( 71, 167) + { 0, { 0, 0, 0}}, // ( 72, 167) + { 0, { 0, 0, 0}}, // ( 73, 167) + { 0, { 0, 0, 0}}, // ( 74, 167) + { 0, { 0, 0, 0}}, // ( 75, 167) + { 0, { 0, 0, 0}}, // ( 76, 167) + { 0, { 0, 0, 0}}, // ( 77, 167) + { 0, { 0, 0, 0}}, // ( 78, 167) + { 0, { 0, 0, 0}}, // ( 79, 167) + { 0, { 0, 0, 0}}, // ( 80, 167) + { 0, { 0, 0, 0}}, // ( 81, 167) + { 0, { 0, 0, 0}}, // ( 82, 167) + { 0, { 0, 0, 0}}, // ( 83, 167) + { 0, { 0, 0, 0}}, // ( 84, 167) + { 0, { 0, 0, 0}}, // ( 85, 167) + { 0, { 0, 0, 0}}, // ( 86, 167) + { 0, { 0, 0, 0}}, // ( 87, 167) + { 0, { 0, 0, 0}}, // ( 88, 167) + { 0, { 0, 0, 0}}, // ( 89, 167) + { 0, { 0, 0, 0}}, // ( 90, 167) + { 0, { 0, 0, 0}}, // ( 91, 167) + { 0, { 0, 0, 0}}, // ( 92, 167) + { 0, { 0, 0, 0}}, // ( 93, 167) + { 0, { 0, 0, 0}}, // ( 94, 167) + { 0, { 0, 0, 0}}, // ( 95, 167) + { 0, { 0, 0, 0}}, // ( 96, 167) + { 0, { 0, 0, 0}}, // ( 97, 167) + { 0, { 0, 0, 0}}, // ( 98, 167) + { 0, { 0, 0, 0}}, // ( 99, 167) + { 0, { 0, 0, 0}}, // (100, 167) + { 0, { 0, 0, 0}}, // (101, 167) + { 0, { 0, 0, 0}}, // (102, 167) + { 0, { 0, 0, 0}}, // (103, 167) + { 0, { 0, 0, 0}}, // (104, 167) + { 0, { 0, 0, 0}}, // (105, 167) + { 0, { 0, 0, 0}}, // (106, 167) + { 0, { 0, 0, 0}}, // (107, 167) + { 0, { 0, 0, 0}}, // (108, 167) + { 0, { 0, 0, 0}}, // (109, 167) + { 0, { 0, 0, 0}}, // (110, 167) + { 0, { 0, 0, 0}}, // (111, 167) + { 0, { 0, 0, 0}}, // (112, 167) + { 0, { 0, 0, 0}}, // (113, 167) + { 0, { 0, 0, 0}}, // (114, 167) + { 0, { 0, 0, 0}}, // (115, 167) + { 0, { 0, 0, 0}}, // (116, 167) + { 0, { 0, 0, 0}}, // (117, 167) + { 0, { 0, 0, 0}}, // (118, 167) + { 0, { 0, 0, 0}}, // (119, 167) + { 0, { 0, 0, 0}}, // (120, 167) + { 0, { 0, 0, 0}}, // (121, 167) + { 0, { 0, 0, 0}}, // (122, 167) + { 0, { 0, 0, 0}}, // (123, 167) + { 0, { 0, 0, 0}}, // (124, 167) + { 0, { 0, 0, 0}}, // (125, 167) + { 0, { 0, 0, 0}}, // (126, 167) + { 0, { 0, 0, 0}}, // (127, 167) + { 0, { 0, 0, 0}}, // (128, 167) + { 0, { 0, 0, 0}}, // (129, 167) + { 2, { 0, 0, 0}}, // (130, 167) + { 50, { 0, 0, 0}}, // (131, 167) + {115, { 0, 0, 0}}, // (132, 167) + {128, { 0, 0, 0}}, // (133, 167) + {128, { 0, 0, 0}}, // (134, 167) + {128, { 0, 0, 0}}, // (135, 167) + {128, { 0, 0, 0}}, // (136, 167) + {128, { 0, 0, 0}}, // (137, 167) + {128, { 0, 0, 0}}, // (138, 167) + {128, { 0, 0, 0}}, // (139, 167) + {128, { 0, 0, 0}}, // (140, 167) + {128, { 0, 0, 0}}, // (141, 167) + {128, { 0, 0, 0}}, // (142, 167) + {128, { 0, 0, 0}}, // (143, 167) + {128, { 0, 0, 0}}, // (144, 167) + {128, { 0, 0, 0}}, // (145, 167) + {128, { 0, 0, 0}}, // (146, 167) + {128, { 0, 0, 0}}, // (147, 167) + {128, { 0, 0, 0}}, // (148, 167) + {128, { 0, 0, 0}}, // (149, 167) + {128, { 0, 0, 0}}, // (150, 167) + {128, { 0, 0, 0}}, // (151, 167) + {128, { 0, 0, 0}}, // (152, 167) + {128, { 0, 0, 0}}, // (153, 167) + {128, { 0, 0, 0}}, // (154, 167) + {128, { 0, 0, 0}}, // (155, 167) + {128, { 0, 0, 0}}, // (156, 167) + {128, { 0, 0, 0}}, // (157, 167) + {128, { 0, 0, 0}}, // (158, 167) + {128, { 0, 0, 0}}, // (159, 167) + {128, { 0, 0, 0}}, // (160, 167) + {128, { 0, 0, 0}}, // (161, 167) + {128, { 0, 0, 0}}, // (162, 167) + {128, { 0, 0, 0}}, // (163, 167) + {128, { 0, 0, 0}}, // (164, 167) + {128, { 0, 0, 0}}, // (165, 167) + {128, { 0, 0, 0}}, // (166, 167) + {128, { 0, 0, 0}}, // (167, 167) + {128, { 0, 0, 0}}, // (168, 167) + {128, { 0, 0, 0}}, // (169, 167) + {128, { 0, 0, 0}}, // (170, 167) + {128, { 0, 0, 0}}, // (171, 167) + {128, { 0, 0, 0}}, // (172, 167) + {128, { 0, 0, 0}}, // (173, 167) + {128, { 0, 0, 0}}, // (174, 167) + {128, { 0, 0, 0}}, // (175, 167) + {128, { 0, 0, 0}}, // (176, 167) + {128, { 0, 0, 0}}, // (177, 167) + {128, { 0, 0, 0}}, // (178, 167) + {128, { 0, 0, 0}}, // (179, 167) + {128, { 0, 0, 0}}, // ( 0, 168) + {128, { 0, 0, 0}}, // ( 1, 168) + {128, { 0, 0, 0}}, // ( 2, 168) + {128, { 0, 0, 0}}, // ( 3, 168) + {128, { 0, 0, 0}}, // ( 4, 168) + {128, { 0, 0, 0}}, // ( 5, 168) + {128, { 0, 0, 0}}, // ( 6, 168) + {128, { 0, 0, 0}}, // ( 7, 168) + {128, { 0, 0, 0}}, // ( 8, 168) + {128, { 0, 0, 0}}, // ( 9, 168) + {128, { 0, 0, 0}}, // ( 10, 168) + {128, { 0, 0, 0}}, // ( 11, 168) + {128, { 0, 0, 0}}, // ( 12, 168) + {128, { 0, 0, 0}}, // ( 13, 168) + {128, { 0, 0, 0}}, // ( 14, 168) + {128, { 0, 0, 0}}, // ( 15, 168) + {128, { 0, 0, 0}}, // ( 16, 168) + {128, { 0, 0, 0}}, // ( 17, 168) + {128, { 0, 0, 0}}, // ( 18, 168) + {128, { 0, 0, 0}}, // ( 19, 168) + {128, { 0, 0, 0}}, // ( 20, 168) + {128, { 0, 0, 0}}, // ( 21, 168) + {128, { 0, 0, 0}}, // ( 22, 168) + {128, { 0, 0, 0}}, // ( 23, 168) + {128, { 0, 0, 0}}, // ( 24, 168) + {128, { 0, 0, 0}}, // ( 25, 168) + {128, { 0, 0, 0}}, // ( 26, 168) + {128, { 0, 0, 0}}, // ( 27, 168) + {128, { 0, 0, 0}}, // ( 28, 168) + {128, { 0, 0, 0}}, // ( 29, 168) + {128, { 0, 0, 0}}, // ( 30, 168) + {128, { 0, 0, 0}}, // ( 31, 168) + {128, { 0, 0, 0}}, // ( 32, 168) + {128, { 0, 0, 0}}, // ( 33, 168) + {128, { 0, 0, 0}}, // ( 34, 168) + {128, { 0, 0, 0}}, // ( 35, 168) + {128, { 0, 0, 0}}, // ( 36, 168) + {128, { 0, 0, 0}}, // ( 37, 168) + {128, { 0, 0, 0}}, // ( 38, 168) + {128, { 0, 0, 0}}, // ( 39, 168) + {128, { 0, 0, 0}}, // ( 40, 168) + {128, { 0, 0, 0}}, // ( 41, 168) + {128, { 0, 0, 0}}, // ( 42, 168) + {128, { 0, 0, 0}}, // ( 43, 168) + {128, { 0, 0, 0}}, // ( 44, 168) + {128, { 0, 0, 0}}, // ( 45, 168) + {128, { 0, 0, 0}}, // ( 46, 168) + {128, { 0, 0, 0}}, // ( 47, 168) + {128, { 0, 0, 0}}, // ( 48, 168) + {110, { 0, 0, 0}}, // ( 49, 168) + { 47, { 0, 0, 0}}, // ( 50, 168) + { 2, { 0, 0, 0}}, // ( 51, 168) + { 0, { 0, 0, 0}}, // ( 52, 168) + { 0, { 0, 0, 0}}, // ( 53, 168) + { 0, { 0, 0, 0}}, // ( 54, 168) + { 0, { 0, 0, 0}}, // ( 55, 168) + { 0, { 0, 0, 0}}, // ( 56, 168) + { 0, { 0, 0, 0}}, // ( 57, 168) + { 0, { 0, 0, 0}}, // ( 58, 168) + { 0, { 0, 0, 0}}, // ( 59, 168) + { 0, { 0, 0, 0}}, // ( 60, 168) + { 0, { 0, 0, 0}}, // ( 61, 168) + { 0, { 0, 0, 0}}, // ( 62, 168) + { 0, { 0, 0, 0}}, // ( 63, 168) + { 0, { 0, 0, 0}}, // ( 64, 168) + { 0, { 0, 0, 0}}, // ( 65, 168) + { 0, { 0, 0, 0}}, // ( 66, 168) + { 0, { 0, 0, 0}}, // ( 67, 168) + { 0, { 0, 0, 0}}, // ( 68, 168) + { 0, { 0, 0, 0}}, // ( 69, 168) + { 0, { 0, 0, 0}}, // ( 70, 168) + { 0, { 0, 0, 0}}, // ( 71, 168) + { 0, { 0, 0, 0}}, // ( 72, 168) + { 0, { 0, 0, 0}}, // ( 73, 168) + { 0, { 0, 0, 0}}, // ( 74, 168) + { 0, { 0, 0, 0}}, // ( 75, 168) + { 0, { 0, 0, 0}}, // ( 76, 168) + { 0, { 0, 0, 0}}, // ( 77, 168) + { 0, { 0, 0, 0}}, // ( 78, 168) + { 0, { 0, 0, 0}}, // ( 79, 168) + { 0, { 0, 0, 0}}, // ( 80, 168) + { 0, { 0, 0, 0}}, // ( 81, 168) + { 0, { 0, 0, 0}}, // ( 82, 168) + { 0, { 0, 0, 0}}, // ( 83, 168) + { 0, { 0, 0, 0}}, // ( 84, 168) + { 0, { 0, 0, 0}}, // ( 85, 168) + { 0, { 0, 0, 0}}, // ( 86, 168) + { 0, { 0, 0, 0}}, // ( 87, 168) + { 0, { 0, 0, 0}}, // ( 88, 168) + { 0, { 0, 0, 0}}, // ( 89, 168) + { 0, { 0, 0, 0}}, // ( 90, 168) + { 0, { 0, 0, 0}}, // ( 91, 168) + { 0, { 0, 0, 0}}, // ( 92, 168) + { 0, { 0, 0, 0}}, // ( 93, 168) + { 0, { 0, 0, 0}}, // ( 94, 168) + { 0, { 0, 0, 0}}, // ( 95, 168) + { 0, { 0, 0, 0}}, // ( 96, 168) + { 0, { 0, 0, 0}}, // ( 97, 168) + { 0, { 0, 0, 0}}, // ( 98, 168) + { 0, { 0, 0, 0}}, // ( 99, 168) + { 0, { 0, 0, 0}}, // (100, 168) + { 0, { 0, 0, 0}}, // (101, 168) + { 0, { 0, 0, 0}}, // (102, 168) + { 0, { 0, 0, 0}}, // (103, 168) + { 0, { 0, 0, 0}}, // (104, 168) + { 0, { 0, 0, 0}}, // (105, 168) + { 0, { 0, 0, 0}}, // (106, 168) + { 0, { 0, 0, 0}}, // (107, 168) + { 0, { 0, 0, 0}}, // (108, 168) + { 0, { 0, 0, 0}}, // (109, 168) + { 0, { 0, 0, 0}}, // (110, 168) + { 0, { 0, 0, 0}}, // (111, 168) + { 0, { 0, 0, 0}}, // (112, 168) + { 0, { 0, 0, 0}}, // (113, 168) + { 0, { 0, 0, 0}}, // (114, 168) + { 0, { 0, 0, 0}}, // (115, 168) + { 0, { 0, 0, 0}}, // (116, 168) + { 0, { 0, 0, 0}}, // (117, 168) + { 0, { 0, 0, 0}}, // (118, 168) + { 0, { 0, 0, 0}}, // (119, 168) + { 0, { 0, 0, 0}}, // (120, 168) + { 0, { 0, 0, 0}}, // (121, 168) + { 0, { 0, 0, 0}}, // (122, 168) + { 0, { 0, 0, 0}}, // (123, 168) + { 0, { 0, 0, 0}}, // (124, 168) + { 0, { 0, 0, 0}}, // (125, 168) + { 0, { 0, 0, 0}}, // (126, 168) + { 0, { 0, 0, 0}}, // (127, 168) + { 2, { 0, 0, 0}}, // (128, 168) + { 47, { 0, 0, 0}}, // (129, 168) + {110, { 0, 0, 0}}, // (130, 168) + {128, { 0, 0, 0}}, // (131, 168) + {128, { 0, 0, 0}}, // (132, 168) + {128, { 0, 0, 0}}, // (133, 168) + {128, { 0, 0, 0}}, // (134, 168) + {128, { 0, 0, 0}}, // (135, 168) + {128, { 0, 0, 0}}, // (136, 168) + {128, { 0, 0, 0}}, // (137, 168) + {128, { 0, 0, 0}}, // (138, 168) + {128, { 0, 0, 0}}, // (139, 168) + {128, { 0, 0, 0}}, // (140, 168) + {128, { 0, 0, 0}}, // (141, 168) + {128, { 0, 0, 0}}, // (142, 168) + {128, { 0, 0, 0}}, // (143, 168) + {128, { 0, 0, 0}}, // (144, 168) + {128, { 0, 0, 0}}, // (145, 168) + {128, { 0, 0, 0}}, // (146, 168) + {128, { 0, 0, 0}}, // (147, 168) + {128, { 0, 0, 0}}, // (148, 168) + {128, { 0, 0, 0}}, // (149, 168) + {128, { 0, 0, 0}}, // (150, 168) + {128, { 0, 0, 0}}, // (151, 168) + {128, { 0, 0, 0}}, // (152, 168) + {128, { 0, 0, 0}}, // (153, 168) + {128, { 0, 0, 0}}, // (154, 168) + {128, { 0, 0, 0}}, // (155, 168) + {128, { 0, 0, 0}}, // (156, 168) + {128, { 0, 0, 0}}, // (157, 168) + {128, { 0, 0, 0}}, // (158, 168) + {128, { 0, 0, 0}}, // (159, 168) + {128, { 0, 0, 0}}, // (160, 168) + {128, { 0, 0, 0}}, // (161, 168) + {128, { 0, 0, 0}}, // (162, 168) + {128, { 0, 0, 0}}, // (163, 168) + {128, { 0, 0, 0}}, // (164, 168) + {128, { 0, 0, 0}}, // (165, 168) + {128, { 0, 0, 0}}, // (166, 168) + {128, { 0, 0, 0}}, // (167, 168) + {128, { 0, 0, 0}}, // (168, 168) + {128, { 0, 0, 0}}, // (169, 168) + {128, { 0, 0, 0}}, // (170, 168) + {128, { 0, 0, 0}}, // (171, 168) + {128, { 0, 0, 0}}, // (172, 168) + {128, { 0, 0, 0}}, // (173, 168) + {128, { 0, 0, 0}}, // (174, 168) + {128, { 0, 0, 0}}, // (175, 168) + {128, { 0, 0, 0}}, // (176, 168) + {128, { 0, 0, 0}}, // (177, 168) + {128, { 0, 0, 0}}, // (178, 168) + {128, { 0, 0, 0}}, // (179, 168) + {128, { 0, 0, 0}}, // ( 0, 169) + {128, { 0, 0, 0}}, // ( 1, 169) + {128, { 0, 0, 0}}, // ( 2, 169) + {128, { 0, 0, 0}}, // ( 3, 169) + {128, { 0, 0, 0}}, // ( 4, 169) + {128, { 0, 0, 0}}, // ( 5, 169) + {128, { 0, 0, 0}}, // ( 6, 169) + {128, { 0, 0, 0}}, // ( 7, 169) + {128, { 0, 0, 0}}, // ( 8, 169) + {128, { 0, 0, 0}}, // ( 9, 169) + {128, { 0, 0, 0}}, // ( 10, 169) + {128, { 0, 0, 0}}, // ( 11, 169) + {128, { 0, 0, 0}}, // ( 12, 169) + {128, { 0, 0, 0}}, // ( 13, 169) + {128, { 0, 0, 0}}, // ( 14, 169) + {128, { 0, 0, 0}}, // ( 15, 169) + {128, { 0, 0, 0}}, // ( 16, 169) + {128, { 0, 0, 0}}, // ( 17, 169) + {128, { 0, 0, 0}}, // ( 18, 169) + {128, { 0, 0, 0}}, // ( 19, 169) + {128, { 0, 0, 0}}, // ( 20, 169) + {128, { 0, 0, 0}}, // ( 21, 169) + {128, { 0, 0, 0}}, // ( 22, 169) + {128, { 0, 0, 0}}, // ( 23, 169) + {128, { 0, 0, 0}}, // ( 24, 169) + {128, { 0, 0, 0}}, // ( 25, 169) + {128, { 0, 0, 0}}, // ( 26, 169) + {128, { 0, 0, 0}}, // ( 27, 169) + {128, { 0, 0, 0}}, // ( 28, 169) + {128, { 0, 0, 0}}, // ( 29, 169) + {128, { 0, 0, 0}}, // ( 30, 169) + {128, { 0, 0, 0}}, // ( 31, 169) + {128, { 0, 0, 0}}, // ( 32, 169) + {128, { 0, 0, 0}}, // ( 33, 169) + {128, { 0, 0, 0}}, // ( 34, 169) + {128, { 0, 0, 0}}, // ( 35, 169) + {128, { 0, 0, 0}}, // ( 36, 169) + {128, { 0, 0, 0}}, // ( 37, 169) + {128, { 0, 0, 0}}, // ( 38, 169) + {128, { 0, 0, 0}}, // ( 39, 169) + {128, { 0, 0, 0}}, // ( 40, 169) + {128, { 0, 0, 0}}, // ( 41, 169) + {128, { 0, 0, 0}}, // ( 42, 169) + {128, { 0, 0, 0}}, // ( 43, 169) + {128, { 0, 0, 0}}, // ( 44, 169) + {128, { 0, 0, 0}}, // ( 45, 169) + {128, { 0, 0, 0}}, // ( 46, 169) + {128, { 0, 0, 0}}, // ( 47, 169) + {128, { 0, 0, 0}}, // ( 48, 169) + {128, { 0, 0, 0}}, // ( 49, 169) + {128, { 0, 0, 0}}, // ( 50, 169) + {108, { 0, 0, 0}}, // ( 51, 169) + { 50, { 0, 0, 0}}, // ( 52, 169) + { 4, { 0, 0, 0}}, // ( 53, 169) + { 0, { 0, 0, 0}}, // ( 54, 169) + { 0, { 0, 0, 0}}, // ( 55, 169) + { 0, { 0, 0, 0}}, // ( 56, 169) + { 0, { 0, 0, 0}}, // ( 57, 169) + { 0, { 0, 0, 0}}, // ( 58, 169) + { 0, { 0, 0, 0}}, // ( 59, 169) + { 0, { 0, 0, 0}}, // ( 60, 169) + { 0, { 0, 0, 0}}, // ( 61, 169) + { 0, { 0, 0, 0}}, // ( 62, 169) + { 0, { 0, 0, 0}}, // ( 63, 169) + { 0, { 0, 0, 0}}, // ( 64, 169) + { 0, { 0, 0, 0}}, // ( 65, 169) + { 0, { 0, 0, 0}}, // ( 66, 169) + { 0, { 0, 0, 0}}, // ( 67, 169) + { 0, { 0, 0, 0}}, // ( 68, 169) + { 0, { 0, 0, 0}}, // ( 69, 169) + { 0, { 0, 0, 0}}, // ( 70, 169) + { 0, { 0, 0, 0}}, // ( 71, 169) + { 0, { 0, 0, 0}}, // ( 72, 169) + { 0, { 0, 0, 0}}, // ( 73, 169) + { 0, { 0, 0, 0}}, // ( 74, 169) + { 0, { 0, 0, 0}}, // ( 75, 169) + { 0, { 0, 0, 0}}, // ( 76, 169) + { 0, { 0, 0, 0}}, // ( 77, 169) + { 0, { 0, 0, 0}}, // ( 78, 169) + { 0, { 0, 0, 0}}, // ( 79, 169) + { 0, { 0, 0, 0}}, // ( 80, 169) + { 0, { 0, 0, 0}}, // ( 81, 169) + { 0, { 0, 0, 0}}, // ( 82, 169) + { 0, { 0, 0, 0}}, // ( 83, 169) + { 0, { 0, 0, 0}}, // ( 84, 169) + { 0, { 0, 0, 0}}, // ( 85, 169) + { 0, { 0, 0, 0}}, // ( 86, 169) + { 0, { 0, 0, 0}}, // ( 87, 169) + { 0, { 0, 0, 0}}, // ( 88, 169) + { 0, { 0, 0, 0}}, // ( 89, 169) + { 0, { 0, 0, 0}}, // ( 90, 169) + { 0, { 0, 0, 0}}, // ( 91, 169) + { 0, { 0, 0, 0}}, // ( 92, 169) + { 0, { 0, 0, 0}}, // ( 93, 169) + { 0, { 0, 0, 0}}, // ( 94, 169) + { 0, { 0, 0, 0}}, // ( 95, 169) + { 0, { 0, 0, 0}}, // ( 96, 169) + { 0, { 0, 0, 0}}, // ( 97, 169) + { 0, { 0, 0, 0}}, // ( 98, 169) + { 0, { 0, 0, 0}}, // ( 99, 169) + { 0, { 0, 0, 0}}, // (100, 169) + { 0, { 0, 0, 0}}, // (101, 169) + { 0, { 0, 0, 0}}, // (102, 169) + { 0, { 0, 0, 0}}, // (103, 169) + { 0, { 0, 0, 0}}, // (104, 169) + { 0, { 0, 0, 0}}, // (105, 169) + { 0, { 0, 0, 0}}, // (106, 169) + { 0, { 0, 0, 0}}, // (107, 169) + { 0, { 0, 0, 0}}, // (108, 169) + { 0, { 0, 0, 0}}, // (109, 169) + { 0, { 0, 0, 0}}, // (110, 169) + { 0, { 0, 0, 0}}, // (111, 169) + { 0, { 0, 0, 0}}, // (112, 169) + { 0, { 0, 0, 0}}, // (113, 169) + { 0, { 0, 0, 0}}, // (114, 169) + { 0, { 0, 0, 0}}, // (115, 169) + { 0, { 0, 0, 0}}, // (116, 169) + { 0, { 0, 0, 0}}, // (117, 169) + { 0, { 0, 0, 0}}, // (118, 169) + { 0, { 0, 0, 0}}, // (119, 169) + { 0, { 0, 0, 0}}, // (120, 169) + { 0, { 0, 0, 0}}, // (121, 169) + { 0, { 0, 0, 0}}, // (122, 169) + { 0, { 0, 0, 0}}, // (123, 169) + { 0, { 0, 0, 0}}, // (124, 169) + { 0, { 0, 0, 0}}, // (125, 169) + { 4, { 0, 0, 0}}, // (126, 169) + { 50, { 0, 0, 0}}, // (127, 169) + {108, { 0, 0, 0}}, // (128, 169) + {128, { 0, 0, 0}}, // (129, 169) + {128, { 0, 0, 0}}, // (130, 169) + {128, { 0, 0, 0}}, // (131, 169) + {128, { 0, 0, 0}}, // (132, 169) + {128, { 0, 0, 0}}, // (133, 169) + {128, { 0, 0, 0}}, // (134, 169) + {128, { 0, 0, 0}}, // (135, 169) + {128, { 0, 0, 0}}, // (136, 169) + {128, { 0, 0, 0}}, // (137, 169) + {128, { 0, 0, 0}}, // (138, 169) + {128, { 0, 0, 0}}, // (139, 169) + {128, { 0, 0, 0}}, // (140, 169) + {128, { 0, 0, 0}}, // (141, 169) + {128, { 0, 0, 0}}, // (142, 169) + {128, { 0, 0, 0}}, // (143, 169) + {128, { 0, 0, 0}}, // (144, 169) + {128, { 0, 0, 0}}, // (145, 169) + {128, { 0, 0, 0}}, // (146, 169) + {128, { 0, 0, 0}}, // (147, 169) + {128, { 0, 0, 0}}, // (148, 169) + {128, { 0, 0, 0}}, // (149, 169) + {128, { 0, 0, 0}}, // (150, 169) + {128, { 0, 0, 0}}, // (151, 169) + {128, { 0, 0, 0}}, // (152, 169) + {128, { 0, 0, 0}}, // (153, 169) + {128, { 0, 0, 0}}, // (154, 169) + {128, { 0, 0, 0}}, // (155, 169) + {128, { 0, 0, 0}}, // (156, 169) + {128, { 0, 0, 0}}, // (157, 169) + {128, { 0, 0, 0}}, // (158, 169) + {128, { 0, 0, 0}}, // (159, 169) + {128, { 0, 0, 0}}, // (160, 169) + {128, { 0, 0, 0}}, // (161, 169) + {128, { 0, 0, 0}}, // (162, 169) + {128, { 0, 0, 0}}, // (163, 169) + {128, { 0, 0, 0}}, // (164, 169) + {128, { 0, 0, 0}}, // (165, 169) + {128, { 0, 0, 0}}, // (166, 169) + {128, { 0, 0, 0}}, // (167, 169) + {128, { 0, 0, 0}}, // (168, 169) + {128, { 0, 0, 0}}, // (169, 169) + {128, { 0, 0, 0}}, // (170, 169) + {128, { 0, 0, 0}}, // (171, 169) + {128, { 0, 0, 0}}, // (172, 169) + {128, { 0, 0, 0}}, // (173, 169) + {128, { 0, 0, 0}}, // (174, 169) + {128, { 0, 0, 0}}, // (175, 169) + {128, { 0, 0, 0}}, // (176, 169) + {128, { 0, 0, 0}}, // (177, 169) + {128, { 0, 0, 0}}, // (178, 169) + {128, { 0, 0, 0}}, // (179, 169) + {128, { 0, 0, 0}}, // ( 0, 170) + {128, { 0, 0, 0}}, // ( 1, 170) + {128, { 0, 0, 0}}, // ( 2, 170) + {128, { 0, 0, 0}}, // ( 3, 170) + {128, { 0, 0, 0}}, // ( 4, 170) + {128, { 0, 0, 0}}, // ( 5, 170) + {128, { 0, 0, 0}}, // ( 6, 170) + {128, { 0, 0, 0}}, // ( 7, 170) + {128, { 0, 0, 0}}, // ( 8, 170) + {128, { 0, 0, 0}}, // ( 9, 170) + {128, { 0, 0, 0}}, // ( 10, 170) + {128, { 0, 0, 0}}, // ( 11, 170) + {128, { 0, 0, 0}}, // ( 12, 170) + {128, { 0, 0, 0}}, // ( 13, 170) + {128, { 0, 0, 0}}, // ( 14, 170) + {128, { 0, 0, 0}}, // ( 15, 170) + {128, { 0, 0, 0}}, // ( 16, 170) + {128, { 0, 0, 0}}, // ( 17, 170) + {128, { 0, 0, 0}}, // ( 18, 170) + {128, { 0, 0, 0}}, // ( 19, 170) + {128, { 0, 0, 0}}, // ( 20, 170) + {128, { 0, 0, 0}}, // ( 21, 170) + {128, { 0, 0, 0}}, // ( 22, 170) + {128, { 0, 0, 0}}, // ( 23, 170) + {128, { 0, 0, 0}}, // ( 24, 170) + {128, { 0, 0, 0}}, // ( 25, 170) + {128, { 0, 0, 0}}, // ( 26, 170) + {128, { 0, 0, 0}}, // ( 27, 170) + {128, { 0, 0, 0}}, // ( 28, 170) + {128, { 0, 0, 0}}, // ( 29, 170) + {128, { 0, 0, 0}}, // ( 30, 170) + {128, { 0, 0, 0}}, // ( 31, 170) + {128, { 0, 0, 0}}, // ( 32, 170) + {128, { 0, 0, 0}}, // ( 33, 170) + {128, { 0, 0, 0}}, // ( 34, 170) + {128, { 0, 0, 0}}, // ( 35, 170) + {128, { 0, 0, 0}}, // ( 36, 170) + {128, { 0, 0, 0}}, // ( 37, 170) + {128, { 0, 0, 0}}, // ( 38, 170) + {128, { 0, 0, 0}}, // ( 39, 170) + {128, { 0, 0, 0}}, // ( 40, 170) + {128, { 0, 0, 0}}, // ( 41, 170) + {128, { 0, 0, 0}}, // ( 42, 170) + {128, { 0, 0, 0}}, // ( 43, 170) + {128, { 0, 0, 0}}, // ( 44, 170) + {128, { 0, 0, 0}}, // ( 45, 170) + {128, { 0, 0, 0}}, // ( 46, 170) + {128, { 0, 0, 0}}, // ( 47, 170) + {128, { 0, 0, 0}}, // ( 48, 170) + {128, { 0, 0, 0}}, // ( 49, 170) + {128, { 0, 0, 0}}, // ( 50, 170) + {128, { 0, 0, 0}}, // ( 51, 170) + {128, { 0, 0, 0}}, // ( 52, 170) + {116, { 0, 0, 0}}, // ( 53, 170) + { 61, { 0, 0, 0}}, // ( 54, 170) + { 9, { 0, 0, 0}}, // ( 55, 170) + { 0, { 0, 0, 0}}, // ( 56, 170) + { 0, { 0, 0, 0}}, // ( 57, 170) + { 0, { 0, 0, 0}}, // ( 58, 170) + { 0, { 0, 0, 0}}, // ( 59, 170) + { 0, { 0, 0, 0}}, // ( 60, 170) + { 0, { 0, 0, 0}}, // ( 61, 170) + { 0, { 0, 0, 0}}, // ( 62, 170) + { 0, { 0, 0, 0}}, // ( 63, 170) + { 0, { 0, 0, 0}}, // ( 64, 170) + { 0, { 0, 0, 0}}, // ( 65, 170) + { 0, { 0, 0, 0}}, // ( 66, 170) + { 0, { 0, 0, 0}}, // ( 67, 170) + { 0, { 0, 0, 0}}, // ( 68, 170) + { 0, { 0, 0, 0}}, // ( 69, 170) + { 0, { 0, 0, 0}}, // ( 70, 170) + { 0, { 0, 0, 0}}, // ( 71, 170) + { 0, { 0, 0, 0}}, // ( 72, 170) + { 0, { 0, 0, 0}}, // ( 73, 170) + { 0, { 0, 0, 0}}, // ( 74, 170) + { 0, { 0, 0, 0}}, // ( 75, 170) + { 0, { 0, 0, 0}}, // ( 76, 170) + { 0, { 0, 0, 0}}, // ( 77, 170) + { 0, { 0, 0, 0}}, // ( 78, 170) + { 0, { 0, 0, 0}}, // ( 79, 170) + { 0, { 0, 0, 0}}, // ( 80, 170) + { 0, { 0, 0, 0}}, // ( 81, 170) + { 0, { 0, 0, 0}}, // ( 82, 170) + { 0, { 0, 0, 0}}, // ( 83, 170) + { 0, { 0, 0, 0}}, // ( 84, 170) + { 0, { 0, 0, 0}}, // ( 85, 170) + { 0, { 0, 0, 0}}, // ( 86, 170) + { 0, { 0, 0, 0}}, // ( 87, 170) + { 0, { 0, 0, 0}}, // ( 88, 170) + { 0, { 0, 0, 0}}, // ( 89, 170) + { 0, { 0, 0, 0}}, // ( 90, 170) + { 0, { 0, 0, 0}}, // ( 91, 170) + { 0, { 0, 0, 0}}, // ( 92, 170) + { 0, { 0, 0, 0}}, // ( 93, 170) + { 0, { 0, 0, 0}}, // ( 94, 170) + { 0, { 0, 0, 0}}, // ( 95, 170) + { 0, { 0, 0, 0}}, // ( 96, 170) + { 0, { 0, 0, 0}}, // ( 97, 170) + { 0, { 0, 0, 0}}, // ( 98, 170) + { 0, { 0, 0, 0}}, // ( 99, 170) + { 0, { 0, 0, 0}}, // (100, 170) + { 0, { 0, 0, 0}}, // (101, 170) + { 0, { 0, 0, 0}}, // (102, 170) + { 0, { 0, 0, 0}}, // (103, 170) + { 0, { 0, 0, 0}}, // (104, 170) + { 0, { 0, 0, 0}}, // (105, 170) + { 0, { 0, 0, 0}}, // (106, 170) + { 0, { 0, 0, 0}}, // (107, 170) + { 0, { 0, 0, 0}}, // (108, 170) + { 0, { 0, 0, 0}}, // (109, 170) + { 0, { 0, 0, 0}}, // (110, 170) + { 0, { 0, 0, 0}}, // (111, 170) + { 0, { 0, 0, 0}}, // (112, 170) + { 0, { 0, 0, 0}}, // (113, 170) + { 0, { 0, 0, 0}}, // (114, 170) + { 0, { 0, 0, 0}}, // (115, 170) + { 0, { 0, 0, 0}}, // (116, 170) + { 0, { 0, 0, 0}}, // (117, 170) + { 0, { 0, 0, 0}}, // (118, 170) + { 0, { 0, 0, 0}}, // (119, 170) + { 0, { 0, 0, 0}}, // (120, 170) + { 0, { 0, 0, 0}}, // (121, 170) + { 0, { 0, 0, 0}}, // (122, 170) + { 0, { 0, 0, 0}}, // (123, 170) + { 9, { 0, 0, 0}}, // (124, 170) + { 61, { 0, 0, 0}}, // (125, 170) + {116, { 0, 0, 0}}, // (126, 170) + {128, { 0, 0, 0}}, // (127, 170) + {128, { 0, 0, 0}}, // (128, 170) + {128, { 0, 0, 0}}, // (129, 170) + {128, { 0, 0, 0}}, // (130, 170) + {128, { 0, 0, 0}}, // (131, 170) + {128, { 0, 0, 0}}, // (132, 170) + {128, { 0, 0, 0}}, // (133, 170) + {128, { 0, 0, 0}}, // (134, 170) + {128, { 0, 0, 0}}, // (135, 170) + {128, { 0, 0, 0}}, // (136, 170) + {128, { 0, 0, 0}}, // (137, 170) + {128, { 0, 0, 0}}, // (138, 170) + {128, { 0, 0, 0}}, // (139, 170) + {128, { 0, 0, 0}}, // (140, 170) + {128, { 0, 0, 0}}, // (141, 170) + {128, { 0, 0, 0}}, // (142, 170) + {128, { 0, 0, 0}}, // (143, 170) + {128, { 0, 0, 0}}, // (144, 170) + {128, { 0, 0, 0}}, // (145, 170) + {128, { 0, 0, 0}}, // (146, 170) + {128, { 0, 0, 0}}, // (147, 170) + {128, { 0, 0, 0}}, // (148, 170) + {128, { 0, 0, 0}}, // (149, 170) + {128, { 0, 0, 0}}, // (150, 170) + {128, { 0, 0, 0}}, // (151, 170) + {128, { 0, 0, 0}}, // (152, 170) + {128, { 0, 0, 0}}, // (153, 170) + {128, { 0, 0, 0}}, // (154, 170) + {128, { 0, 0, 0}}, // (155, 170) + {128, { 0, 0, 0}}, // (156, 170) + {128, { 0, 0, 0}}, // (157, 170) + {128, { 0, 0, 0}}, // (158, 170) + {128, { 0, 0, 0}}, // (159, 170) + {128, { 0, 0, 0}}, // (160, 170) + {128, { 0, 0, 0}}, // (161, 170) + {128, { 0, 0, 0}}, // (162, 170) + {128, { 0, 0, 0}}, // (163, 170) + {128, { 0, 0, 0}}, // (164, 170) + {128, { 0, 0, 0}}, // (165, 170) + {128, { 0, 0, 0}}, // (166, 170) + {128, { 0, 0, 0}}, // (167, 170) + {128, { 0, 0, 0}}, // (168, 170) + {128, { 0, 0, 0}}, // (169, 170) + {128, { 0, 0, 0}}, // (170, 170) + {128, { 0, 0, 0}}, // (171, 170) + {128, { 0, 0, 0}}, // (172, 170) + {128, { 0, 0, 0}}, // (173, 170) + {128, { 0, 0, 0}}, // (174, 170) + {128, { 0, 0, 0}}, // (175, 170) + {128, { 0, 0, 0}}, // (176, 170) + {128, { 0, 0, 0}}, // (177, 170) + {128, { 0, 0, 0}}, // (178, 170) + {128, { 0, 0, 0}}, // (179, 170) + {128, { 0, 0, 0}}, // ( 0, 171) + {128, { 0, 0, 0}}, // ( 1, 171) + {128, { 0, 0, 0}}, // ( 2, 171) + {128, { 0, 0, 0}}, // ( 3, 171) + {128, { 0, 0, 0}}, // ( 4, 171) + {128, { 0, 0, 0}}, // ( 5, 171) + {128, { 0, 0, 0}}, // ( 6, 171) + {128, { 0, 0, 0}}, // ( 7, 171) + {128, { 0, 0, 0}}, // ( 8, 171) + {128, { 0, 0, 0}}, // ( 9, 171) + {128, { 0, 0, 0}}, // ( 10, 171) + {128, { 0, 0, 0}}, // ( 11, 171) + {128, { 0, 0, 0}}, // ( 12, 171) + {128, { 0, 0, 0}}, // ( 13, 171) + {128, { 0, 0, 0}}, // ( 14, 171) + {128, { 0, 0, 0}}, // ( 15, 171) + {128, { 0, 0, 0}}, // ( 16, 171) + {128, { 0, 0, 0}}, // ( 17, 171) + {128, { 0, 0, 0}}, // ( 18, 171) + {128, { 0, 0, 0}}, // ( 19, 171) + {128, { 0, 0, 0}}, // ( 20, 171) + {128, { 0, 0, 0}}, // ( 21, 171) + {128, { 0, 0, 0}}, // ( 22, 171) + {128, { 0, 0, 0}}, // ( 23, 171) + {128, { 0, 0, 0}}, // ( 24, 171) + {128, { 0, 0, 0}}, // ( 25, 171) + {128, { 0, 0, 0}}, // ( 26, 171) + {128, { 0, 0, 0}}, // ( 27, 171) + {128, { 0, 0, 0}}, // ( 28, 171) + {128, { 0, 0, 0}}, // ( 29, 171) + {128, { 0, 0, 0}}, // ( 30, 171) + {128, { 0, 0, 0}}, // ( 31, 171) + {128, { 0, 0, 0}}, // ( 32, 171) + {128, { 0, 0, 0}}, // ( 33, 171) + {128, { 0, 0, 0}}, // ( 34, 171) + {128, { 0, 0, 0}}, // ( 35, 171) + {128, { 0, 0, 0}}, // ( 36, 171) + {128, { 0, 0, 0}}, // ( 37, 171) + {128, { 0, 0, 0}}, // ( 38, 171) + {128, { 0, 0, 0}}, // ( 39, 171) + {128, { 0, 0, 0}}, // ( 40, 171) + {128, { 0, 0, 0}}, // ( 41, 171) + {128, { 0, 0, 0}}, // ( 42, 171) + {128, { 0, 0, 0}}, // ( 43, 171) + {128, { 0, 0, 0}}, // ( 44, 171) + {128, { 0, 0, 0}}, // ( 45, 171) + {128, { 0, 0, 0}}, // ( 46, 171) + {128, { 0, 0, 0}}, // ( 47, 171) + {128, { 0, 0, 0}}, // ( 48, 171) + {128, { 0, 0, 0}}, // ( 49, 171) + {128, { 0, 0, 0}}, // ( 50, 171) + {128, { 0, 0, 0}}, // ( 51, 171) + {128, { 0, 0, 0}}, // ( 52, 171) + {128, { 0, 0, 0}}, // ( 53, 171) + {128, { 0, 0, 0}}, // ( 54, 171) + {122, { 0, 0, 0}}, // ( 55, 171) + { 79, { 0, 0, 0}}, // ( 56, 171) + { 29, { 0, 0, 0}}, // ( 57, 171) + { 0, { 0, 0, 0}}, // ( 58, 171) + { 0, { 0, 0, 0}}, // ( 59, 171) + { 0, { 0, 0, 0}}, // ( 60, 171) + { 0, { 0, 0, 0}}, // ( 61, 171) + { 0, { 0, 0, 0}}, // ( 62, 171) + { 0, { 0, 0, 0}}, // ( 63, 171) + { 0, { 0, 0, 0}}, // ( 64, 171) + { 0, { 0, 0, 0}}, // ( 65, 171) + { 0, { 0, 0, 0}}, // ( 66, 171) + { 0, { 0, 0, 0}}, // ( 67, 171) + { 0, { 0, 0, 0}}, // ( 68, 171) + { 0, { 0, 0, 0}}, // ( 69, 171) + { 0, { 0, 0, 0}}, // ( 70, 171) + { 0, { 0, 0, 0}}, // ( 71, 171) + { 0, { 0, 0, 0}}, // ( 72, 171) + { 0, { 0, 0, 0}}, // ( 73, 171) + { 0, { 0, 0, 0}}, // ( 74, 171) + { 0, { 0, 0, 0}}, // ( 75, 171) + { 0, { 0, 0, 0}}, // ( 76, 171) + { 0, { 0, 0, 0}}, // ( 77, 171) + { 0, { 0, 0, 0}}, // ( 78, 171) + { 0, { 0, 0, 0}}, // ( 79, 171) + { 0, { 0, 0, 0}}, // ( 80, 171) + { 0, { 0, 0, 0}}, // ( 81, 171) + { 0, { 0, 0, 0}}, // ( 82, 171) + { 0, { 0, 0, 0}}, // ( 83, 171) + { 0, { 0, 0, 0}}, // ( 84, 171) + { 0, { 0, 0, 0}}, // ( 85, 171) + { 0, { 0, 0, 0}}, // ( 86, 171) + { 0, { 0, 0, 0}}, // ( 87, 171) + { 0, { 0, 0, 0}}, // ( 88, 171) + { 0, { 0, 0, 0}}, // ( 89, 171) + { 0, { 0, 0, 0}}, // ( 90, 171) + { 0, { 0, 0, 0}}, // ( 91, 171) + { 0, { 0, 0, 0}}, // ( 92, 171) + { 0, { 0, 0, 0}}, // ( 93, 171) + { 0, { 0, 0, 0}}, // ( 94, 171) + { 0, { 0, 0, 0}}, // ( 95, 171) + { 0, { 0, 0, 0}}, // ( 96, 171) + { 0, { 0, 0, 0}}, // ( 97, 171) + { 0, { 0, 0, 0}}, // ( 98, 171) + { 0, { 0, 0, 0}}, // ( 99, 171) + { 0, { 0, 0, 0}}, // (100, 171) + { 0, { 0, 0, 0}}, // (101, 171) + { 0, { 0, 0, 0}}, // (102, 171) + { 0, { 0, 0, 0}}, // (103, 171) + { 0, { 0, 0, 0}}, // (104, 171) + { 0, { 0, 0, 0}}, // (105, 171) + { 0, { 0, 0, 0}}, // (106, 171) + { 0, { 0, 0, 0}}, // (107, 171) + { 0, { 0, 0, 0}}, // (108, 171) + { 0, { 0, 0, 0}}, // (109, 171) + { 0, { 0, 0, 0}}, // (110, 171) + { 0, { 0, 0, 0}}, // (111, 171) + { 0, { 0, 0, 0}}, // (112, 171) + { 0, { 0, 0, 0}}, // (113, 171) + { 0, { 0, 0, 0}}, // (114, 171) + { 0, { 0, 0, 0}}, // (115, 171) + { 0, { 0, 0, 0}}, // (116, 171) + { 0, { 0, 0, 0}}, // (117, 171) + { 0, { 0, 0, 0}}, // (118, 171) + { 0, { 0, 0, 0}}, // (119, 171) + { 0, { 0, 0, 0}}, // (120, 171) + { 0, { 0, 0, 0}}, // (121, 171) + { 29, { 0, 0, 0}}, // (122, 171) + { 79, { 0, 0, 0}}, // (123, 171) + {122, { 0, 0, 0}}, // (124, 171) + {128, { 0, 0, 0}}, // (125, 171) + {128, { 0, 0, 0}}, // (126, 171) + {128, { 0, 0, 0}}, // (127, 171) + {128, { 0, 0, 0}}, // (128, 171) + {128, { 0, 0, 0}}, // (129, 171) + {128, { 0, 0, 0}}, // (130, 171) + {128, { 0, 0, 0}}, // (131, 171) + {128, { 0, 0, 0}}, // (132, 171) + {128, { 0, 0, 0}}, // (133, 171) + {128, { 0, 0, 0}}, // (134, 171) + {128, { 0, 0, 0}}, // (135, 171) + {128, { 0, 0, 0}}, // (136, 171) + {128, { 0, 0, 0}}, // (137, 171) + {128, { 0, 0, 0}}, // (138, 171) + {128, { 0, 0, 0}}, // (139, 171) + {128, { 0, 0, 0}}, // (140, 171) + {128, { 0, 0, 0}}, // (141, 171) + {128, { 0, 0, 0}}, // (142, 171) + {128, { 0, 0, 0}}, // (143, 171) + {128, { 0, 0, 0}}, // (144, 171) + {128, { 0, 0, 0}}, // (145, 171) + {128, { 0, 0, 0}}, // (146, 171) + {128, { 0, 0, 0}}, // (147, 171) + {128, { 0, 0, 0}}, // (148, 171) + {128, { 0, 0, 0}}, // (149, 171) + {128, { 0, 0, 0}}, // (150, 171) + {128, { 0, 0, 0}}, // (151, 171) + {128, { 0, 0, 0}}, // (152, 171) + {128, { 0, 0, 0}}, // (153, 171) + {128, { 0, 0, 0}}, // (154, 171) + {128, { 0, 0, 0}}, // (155, 171) + {128, { 0, 0, 0}}, // (156, 171) + {128, { 0, 0, 0}}, // (157, 171) + {128, { 0, 0, 0}}, // (158, 171) + {128, { 0, 0, 0}}, // (159, 171) + {128, { 0, 0, 0}}, // (160, 171) + {128, { 0, 0, 0}}, // (161, 171) + {128, { 0, 0, 0}}, // (162, 171) + {128, { 0, 0, 0}}, // (163, 171) + {128, { 0, 0, 0}}, // (164, 171) + {128, { 0, 0, 0}}, // (165, 171) + {128, { 0, 0, 0}}, // (166, 171) + {128, { 0, 0, 0}}, // (167, 171) + {128, { 0, 0, 0}}, // (168, 171) + {128, { 0, 0, 0}}, // (169, 171) + {128, { 0, 0, 0}}, // (170, 171) + {128, { 0, 0, 0}}, // (171, 171) + {128, { 0, 0, 0}}, // (172, 171) + {128, { 0, 0, 0}}, // (173, 171) + {128, { 0, 0, 0}}, // (174, 171) + {128, { 0, 0, 0}}, // (175, 171) + {128, { 0, 0, 0}}, // (176, 171) + {128, { 0, 0, 0}}, // (177, 171) + {128, { 0, 0, 0}}, // (178, 171) + {128, { 0, 0, 0}}, // (179, 171) + {128, { 0, 0, 0}}, // ( 0, 172) + {128, { 0, 0, 0}}, // ( 1, 172) + {128, { 0, 0, 0}}, // ( 2, 172) + {128, { 0, 0, 0}}, // ( 3, 172) + {128, { 0, 0, 0}}, // ( 4, 172) + {128, { 0, 0, 0}}, // ( 5, 172) + {128, { 0, 0, 0}}, // ( 6, 172) + {128, { 0, 0, 0}}, // ( 7, 172) + {128, { 0, 0, 0}}, // ( 8, 172) + {128, { 0, 0, 0}}, // ( 9, 172) + {128, { 0, 0, 0}}, // ( 10, 172) + {128, { 0, 0, 0}}, // ( 11, 172) + {128, { 0, 0, 0}}, // ( 12, 172) + {128, { 0, 0, 0}}, // ( 13, 172) + {128, { 0, 0, 0}}, // ( 14, 172) + {128, { 0, 0, 0}}, // ( 15, 172) + {128, { 0, 0, 0}}, // ( 16, 172) + {128, { 0, 0, 0}}, // ( 17, 172) + {128, { 0, 0, 0}}, // ( 18, 172) + {128, { 0, 0, 0}}, // ( 19, 172) + {128, { 0, 0, 0}}, // ( 20, 172) + {128, { 0, 0, 0}}, // ( 21, 172) + {128, { 0, 0, 0}}, // ( 22, 172) + {128, { 0, 0, 0}}, // ( 23, 172) + {128, { 0, 0, 0}}, // ( 24, 172) + {128, { 0, 0, 0}}, // ( 25, 172) + {128, { 0, 0, 0}}, // ( 26, 172) + {128, { 0, 0, 0}}, // ( 27, 172) + {128, { 0, 0, 0}}, // ( 28, 172) + {128, { 0, 0, 0}}, // ( 29, 172) + {128, { 0, 0, 0}}, // ( 30, 172) + {128, { 0, 0, 0}}, // ( 31, 172) + {128, { 0, 0, 0}}, // ( 32, 172) + {128, { 0, 0, 0}}, // ( 33, 172) + {128, { 0, 0, 0}}, // ( 34, 172) + {128, { 0, 0, 0}}, // ( 35, 172) + {128, { 0, 0, 0}}, // ( 36, 172) + {128, { 0, 0, 0}}, // ( 37, 172) + {128, { 0, 0, 0}}, // ( 38, 172) + {128, { 0, 0, 0}}, // ( 39, 172) + {128, { 0, 0, 0}}, // ( 40, 172) + {128, { 0, 0, 0}}, // ( 41, 172) + {128, { 0, 0, 0}}, // ( 42, 172) + {128, { 0, 0, 0}}, // ( 43, 172) + {128, { 0, 0, 0}}, // ( 44, 172) + {128, { 0, 0, 0}}, // ( 45, 172) + {128, { 0, 0, 0}}, // ( 46, 172) + {128, { 0, 0, 0}}, // ( 47, 172) + {128, { 0, 0, 0}}, // ( 48, 172) + {128, { 0, 0, 0}}, // ( 49, 172) + {128, { 0, 0, 0}}, // ( 50, 172) + {128, { 0, 0, 0}}, // ( 51, 172) + {128, { 0, 0, 0}}, // ( 52, 172) + {128, { 0, 0, 0}}, // ( 53, 172) + {128, { 0, 0, 0}}, // ( 54, 172) + {128, { 0, 0, 0}}, // ( 55, 172) + {128, { 0, 0, 0}}, // ( 56, 172) + {128, { 0, 0, 0}}, // ( 57, 172) + {105, { 0, 0, 0}}, // ( 58, 172) + { 55, { 0, 0, 0}}, // ( 59, 172) + { 11, { 0, 0, 0}}, // ( 60, 172) + { 0, { 0, 0, 0}}, // ( 61, 172) + { 0, { 0, 0, 0}}, // ( 62, 172) + { 0, { 0, 0, 0}}, // ( 63, 172) + { 0, { 0, 0, 0}}, // ( 64, 172) + { 0, { 0, 0, 0}}, // ( 65, 172) + { 0, { 0, 0, 0}}, // ( 66, 172) + { 0, { 0, 0, 0}}, // ( 67, 172) + { 0, { 0, 0, 0}}, // ( 68, 172) + { 0, { 0, 0, 0}}, // ( 69, 172) + { 0, { 0, 0, 0}}, // ( 70, 172) + { 0, { 0, 0, 0}}, // ( 71, 172) + { 0, { 0, 0, 0}}, // ( 72, 172) + { 0, { 0, 0, 0}}, // ( 73, 172) + { 0, { 0, 0, 0}}, // ( 74, 172) + { 0, { 0, 0, 0}}, // ( 75, 172) + { 0, { 0, 0, 0}}, // ( 76, 172) + { 0, { 0, 0, 0}}, // ( 77, 172) + { 0, { 0, 0, 0}}, // ( 78, 172) + { 0, { 0, 0, 0}}, // ( 79, 172) + { 0, { 0, 0, 0}}, // ( 80, 172) + { 0, { 0, 0, 0}}, // ( 81, 172) + { 0, { 0, 0, 0}}, // ( 82, 172) + { 0, { 0, 0, 0}}, // ( 83, 172) + { 0, { 0, 0, 0}}, // ( 84, 172) + { 0, { 0, 0, 0}}, // ( 85, 172) + { 0, { 0, 0, 0}}, // ( 86, 172) + { 0, { 0, 0, 0}}, // ( 87, 172) + { 0, { 0, 0, 0}}, // ( 88, 172) + { 0, { 0, 0, 0}}, // ( 89, 172) + { 0, { 0, 0, 0}}, // ( 90, 172) + { 0, { 0, 0, 0}}, // ( 91, 172) + { 0, { 0, 0, 0}}, // ( 92, 172) + { 0, { 0, 0, 0}}, // ( 93, 172) + { 0, { 0, 0, 0}}, // ( 94, 172) + { 0, { 0, 0, 0}}, // ( 95, 172) + { 0, { 0, 0, 0}}, // ( 96, 172) + { 0, { 0, 0, 0}}, // ( 97, 172) + { 0, { 0, 0, 0}}, // ( 98, 172) + { 0, { 0, 0, 0}}, // ( 99, 172) + { 0, { 0, 0, 0}}, // (100, 172) + { 0, { 0, 0, 0}}, // (101, 172) + { 0, { 0, 0, 0}}, // (102, 172) + { 0, { 0, 0, 0}}, // (103, 172) + { 0, { 0, 0, 0}}, // (104, 172) + { 0, { 0, 0, 0}}, // (105, 172) + { 0, { 0, 0, 0}}, // (106, 172) + { 0, { 0, 0, 0}}, // (107, 172) + { 0, { 0, 0, 0}}, // (108, 172) + { 0, { 0, 0, 0}}, // (109, 172) + { 0, { 0, 0, 0}}, // (110, 172) + { 0, { 0, 0, 0}}, // (111, 172) + { 0, { 0, 0, 0}}, // (112, 172) + { 0, { 0, 0, 0}}, // (113, 172) + { 0, { 0, 0, 0}}, // (114, 172) + { 0, { 0, 0, 0}}, // (115, 172) + { 0, { 0, 0, 0}}, // (116, 172) + { 0, { 0, 0, 0}}, // (117, 172) + { 0, { 0, 0, 0}}, // (118, 172) + { 11, { 0, 0, 0}}, // (119, 172) + { 55, { 0, 0, 0}}, // (120, 172) + {105, { 0, 0, 0}}, // (121, 172) + {128, { 0, 0, 0}}, // (122, 172) + {128, { 0, 0, 0}}, // (123, 172) + {128, { 0, 0, 0}}, // (124, 172) + {128, { 0, 0, 0}}, // (125, 172) + {128, { 0, 0, 0}}, // (126, 172) + {128, { 0, 0, 0}}, // (127, 172) + {128, { 0, 0, 0}}, // (128, 172) + {128, { 0, 0, 0}}, // (129, 172) + {128, { 0, 0, 0}}, // (130, 172) + {128, { 0, 0, 0}}, // (131, 172) + {128, { 0, 0, 0}}, // (132, 172) + {128, { 0, 0, 0}}, // (133, 172) + {128, { 0, 0, 0}}, // (134, 172) + {128, { 0, 0, 0}}, // (135, 172) + {128, { 0, 0, 0}}, // (136, 172) + {128, { 0, 0, 0}}, // (137, 172) + {128, { 0, 0, 0}}, // (138, 172) + {128, { 0, 0, 0}}, // (139, 172) + {128, { 0, 0, 0}}, // (140, 172) + {128, { 0, 0, 0}}, // (141, 172) + {128, { 0, 0, 0}}, // (142, 172) + {128, { 0, 0, 0}}, // (143, 172) + {128, { 0, 0, 0}}, // (144, 172) + {128, { 0, 0, 0}}, // (145, 172) + {128, { 0, 0, 0}}, // (146, 172) + {128, { 0, 0, 0}}, // (147, 172) + {128, { 0, 0, 0}}, // (148, 172) + {128, { 0, 0, 0}}, // (149, 172) + {128, { 0, 0, 0}}, // (150, 172) + {128, { 0, 0, 0}}, // (151, 172) + {128, { 0, 0, 0}}, // (152, 172) + {128, { 0, 0, 0}}, // (153, 172) + {128, { 0, 0, 0}}, // (154, 172) + {128, { 0, 0, 0}}, // (155, 172) + {128, { 0, 0, 0}}, // (156, 172) + {128, { 0, 0, 0}}, // (157, 172) + {128, { 0, 0, 0}}, // (158, 172) + {128, { 0, 0, 0}}, // (159, 172) + {128, { 0, 0, 0}}, // (160, 172) + {128, { 0, 0, 0}}, // (161, 172) + {128, { 0, 0, 0}}, // (162, 172) + {128, { 0, 0, 0}}, // (163, 172) + {128, { 0, 0, 0}}, // (164, 172) + {128, { 0, 0, 0}}, // (165, 172) + {128, { 0, 0, 0}}, // (166, 172) + {128, { 0, 0, 0}}, // (167, 172) + {128, { 0, 0, 0}}, // (168, 172) + {128, { 0, 0, 0}}, // (169, 172) + {128, { 0, 0, 0}}, // (170, 172) + {128, { 0, 0, 0}}, // (171, 172) + {128, { 0, 0, 0}}, // (172, 172) + {128, { 0, 0, 0}}, // (173, 172) + {128, { 0, 0, 0}}, // (174, 172) + {128, { 0, 0, 0}}, // (175, 172) + {128, { 0, 0, 0}}, // (176, 172) + {128, { 0, 0, 0}}, // (177, 172) + {128, { 0, 0, 0}}, // (178, 172) + {128, { 0, 0, 0}}, // (179, 172) + {128, { 0, 0, 0}}, // ( 0, 173) + {128, { 0, 0, 0}}, // ( 1, 173) + {128, { 0, 0, 0}}, // ( 2, 173) + {128, { 0, 0, 0}}, // ( 3, 173) + {128, { 0, 0, 0}}, // ( 4, 173) + {128, { 0, 0, 0}}, // ( 5, 173) + {128, { 0, 0, 0}}, // ( 6, 173) + {128, { 0, 0, 0}}, // ( 7, 173) + {128, { 0, 0, 0}}, // ( 8, 173) + {128, { 0, 0, 0}}, // ( 9, 173) + {128, { 0, 0, 0}}, // ( 10, 173) + {128, { 0, 0, 0}}, // ( 11, 173) + {128, { 0, 0, 0}}, // ( 12, 173) + {128, { 0, 0, 0}}, // ( 13, 173) + {128, { 0, 0, 0}}, // ( 14, 173) + {128, { 0, 0, 0}}, // ( 15, 173) + {128, { 0, 0, 0}}, // ( 16, 173) + {128, { 0, 0, 0}}, // ( 17, 173) + {128, { 0, 0, 0}}, // ( 18, 173) + {128, { 0, 0, 0}}, // ( 19, 173) + {128, { 0, 0, 0}}, // ( 20, 173) + {128, { 0, 0, 0}}, // ( 21, 173) + {128, { 0, 0, 0}}, // ( 22, 173) + {128, { 0, 0, 0}}, // ( 23, 173) + {128, { 0, 0, 0}}, // ( 24, 173) + {128, { 0, 0, 0}}, // ( 25, 173) + {128, { 0, 0, 0}}, // ( 26, 173) + {128, { 0, 0, 0}}, // ( 27, 173) + {128, { 0, 0, 0}}, // ( 28, 173) + {128, { 0, 0, 0}}, // ( 29, 173) + {128, { 0, 0, 0}}, // ( 30, 173) + {128, { 0, 0, 0}}, // ( 31, 173) + {128, { 0, 0, 0}}, // ( 32, 173) + {128, { 0, 0, 0}}, // ( 33, 173) + {128, { 0, 0, 0}}, // ( 34, 173) + {128, { 0, 0, 0}}, // ( 35, 173) + {128, { 0, 0, 0}}, // ( 36, 173) + {128, { 0, 0, 0}}, // ( 37, 173) + {128, { 0, 0, 0}}, // ( 38, 173) + {128, { 0, 0, 0}}, // ( 39, 173) + {128, { 0, 0, 0}}, // ( 40, 173) + {128, { 0, 0, 0}}, // ( 41, 173) + {128, { 0, 0, 0}}, // ( 42, 173) + {128, { 0, 0, 0}}, // ( 43, 173) + {128, { 0, 0, 0}}, // ( 44, 173) + {128, { 0, 0, 0}}, // ( 45, 173) + {128, { 0, 0, 0}}, // ( 46, 173) + {128, { 0, 0, 0}}, // ( 47, 173) + {128, { 0, 0, 0}}, // ( 48, 173) + {128, { 0, 0, 0}}, // ( 49, 173) + {128, { 0, 0, 0}}, // ( 50, 173) + {128, { 0, 0, 0}}, // ( 51, 173) + {128, { 0, 0, 0}}, // ( 52, 173) + {128, { 0, 0, 0}}, // ( 53, 173) + {128, { 0, 0, 0}}, // ( 54, 173) + {128, { 0, 0, 0}}, // ( 55, 173) + {128, { 0, 0, 0}}, // ( 56, 173) + {128, { 0, 0, 0}}, // ( 57, 173) + {128, { 0, 0, 0}}, // ( 58, 173) + {128, { 0, 0, 0}}, // ( 59, 173) + {126, { 0, 0, 0}}, // ( 60, 173) + { 92, { 0, 0, 0}}, // ( 61, 173) + { 50, { 0, 0, 0}}, // ( 62, 173) + { 10, { 0, 0, 0}}, // ( 63, 173) + { 0, { 0, 0, 0}}, // ( 64, 173) + { 0, { 0, 0, 0}}, // ( 65, 173) + { 0, { 0, 0, 0}}, // ( 66, 173) + { 0, { 0, 0, 0}}, // ( 67, 173) + { 0, { 0, 0, 0}}, // ( 68, 173) + { 0, { 0, 0, 0}}, // ( 69, 173) + { 0, { 0, 0, 0}}, // ( 70, 173) + { 0, { 0, 0, 0}}, // ( 71, 173) + { 0, { 0, 0, 0}}, // ( 72, 173) + { 0, { 0, 0, 0}}, // ( 73, 173) + { 0, { 0, 0, 0}}, // ( 74, 173) + { 0, { 0, 0, 0}}, // ( 75, 173) + { 0, { 0, 0, 0}}, // ( 76, 173) + { 0, { 0, 0, 0}}, // ( 77, 173) + { 0, { 0, 0, 0}}, // ( 78, 173) + { 0, { 0, 0, 0}}, // ( 79, 173) + { 0, { 0, 0, 0}}, // ( 80, 173) + { 0, { 0, 0, 0}}, // ( 81, 173) + { 0, { 0, 0, 0}}, // ( 82, 173) + { 0, { 0, 0, 0}}, // ( 83, 173) + { 0, { 0, 0, 0}}, // ( 84, 173) + { 0, { 0, 0, 0}}, // ( 85, 173) + { 0, { 0, 0, 0}}, // ( 86, 173) + { 0, { 0, 0, 0}}, // ( 87, 173) + { 0, { 0, 0, 0}}, // ( 88, 173) + { 0, { 0, 0, 0}}, // ( 89, 173) + { 0, { 0, 0, 0}}, // ( 90, 173) + { 0, { 0, 0, 0}}, // ( 91, 173) + { 0, { 0, 0, 0}}, // ( 92, 173) + { 0, { 0, 0, 0}}, // ( 93, 173) + { 0, { 0, 0, 0}}, // ( 94, 173) + { 0, { 0, 0, 0}}, // ( 95, 173) + { 0, { 0, 0, 0}}, // ( 96, 173) + { 0, { 0, 0, 0}}, // ( 97, 173) + { 0, { 0, 0, 0}}, // ( 98, 173) + { 0, { 0, 0, 0}}, // ( 99, 173) + { 0, { 0, 0, 0}}, // (100, 173) + { 0, { 0, 0, 0}}, // (101, 173) + { 0, { 0, 0, 0}}, // (102, 173) + { 0, { 0, 0, 0}}, // (103, 173) + { 0, { 0, 0, 0}}, // (104, 173) + { 0, { 0, 0, 0}}, // (105, 173) + { 0, { 0, 0, 0}}, // (106, 173) + { 0, { 0, 0, 0}}, // (107, 173) + { 0, { 0, 0, 0}}, // (108, 173) + { 0, { 0, 0, 0}}, // (109, 173) + { 0, { 0, 0, 0}}, // (110, 173) + { 0, { 0, 0, 0}}, // (111, 173) + { 0, { 0, 0, 0}}, // (112, 173) + { 0, { 0, 0, 0}}, // (113, 173) + { 0, { 0, 0, 0}}, // (114, 173) + { 0, { 0, 0, 0}}, // (115, 173) + { 10, { 0, 0, 0}}, // (116, 173) + { 50, { 0, 0, 0}}, // (117, 173) + { 92, { 0, 0, 0}}, // (118, 173) + {126, { 0, 0, 0}}, // (119, 173) + {128, { 0, 0, 0}}, // (120, 173) + {128, { 0, 0, 0}}, // (121, 173) + {128, { 0, 0, 0}}, // (122, 173) + {128, { 0, 0, 0}}, // (123, 173) + {128, { 0, 0, 0}}, // (124, 173) + {128, { 0, 0, 0}}, // (125, 173) + {128, { 0, 0, 0}}, // (126, 173) + {128, { 0, 0, 0}}, // (127, 173) + {128, { 0, 0, 0}}, // (128, 173) + {128, { 0, 0, 0}}, // (129, 173) + {128, { 0, 0, 0}}, // (130, 173) + {128, { 0, 0, 0}}, // (131, 173) + {128, { 0, 0, 0}}, // (132, 173) + {128, { 0, 0, 0}}, // (133, 173) + {128, { 0, 0, 0}}, // (134, 173) + {128, { 0, 0, 0}}, // (135, 173) + {128, { 0, 0, 0}}, // (136, 173) + {128, { 0, 0, 0}}, // (137, 173) + {128, { 0, 0, 0}}, // (138, 173) + {128, { 0, 0, 0}}, // (139, 173) + {128, { 0, 0, 0}}, // (140, 173) + {128, { 0, 0, 0}}, // (141, 173) + {128, { 0, 0, 0}}, // (142, 173) + {128, { 0, 0, 0}}, // (143, 173) + {128, { 0, 0, 0}}, // (144, 173) + {128, { 0, 0, 0}}, // (145, 173) + {128, { 0, 0, 0}}, // (146, 173) + {128, { 0, 0, 0}}, // (147, 173) + {128, { 0, 0, 0}}, // (148, 173) + {128, { 0, 0, 0}}, // (149, 173) + {128, { 0, 0, 0}}, // (150, 173) + {128, { 0, 0, 0}}, // (151, 173) + {128, { 0, 0, 0}}, // (152, 173) + {128, { 0, 0, 0}}, // (153, 173) + {128, { 0, 0, 0}}, // (154, 173) + {128, { 0, 0, 0}}, // (155, 173) + {128, { 0, 0, 0}}, // (156, 173) + {128, { 0, 0, 0}}, // (157, 173) + {128, { 0, 0, 0}}, // (158, 173) + {128, { 0, 0, 0}}, // (159, 173) + {128, { 0, 0, 0}}, // (160, 173) + {128, { 0, 0, 0}}, // (161, 173) + {128, { 0, 0, 0}}, // (162, 173) + {128, { 0, 0, 0}}, // (163, 173) + {128, { 0, 0, 0}}, // (164, 173) + {128, { 0, 0, 0}}, // (165, 173) + {128, { 0, 0, 0}}, // (166, 173) + {128, { 0, 0, 0}}, // (167, 173) + {128, { 0, 0, 0}}, // (168, 173) + {128, { 0, 0, 0}}, // (169, 173) + {128, { 0, 0, 0}}, // (170, 173) + {128, { 0, 0, 0}}, // (171, 173) + {128, { 0, 0, 0}}, // (172, 173) + {128, { 0, 0, 0}}, // (173, 173) + {128, { 0, 0, 0}}, // (174, 173) + {128, { 0, 0, 0}}, // (175, 173) + {128, { 0, 0, 0}}, // (176, 173) + {128, { 0, 0, 0}}, // (177, 173) + {128, { 0, 0, 0}}, // (178, 173) + {128, { 0, 0, 0}}, // (179, 173) + {128, { 0, 0, 0}}, // ( 0, 174) + {128, { 0, 0, 0}}, // ( 1, 174) + {128, { 0, 0, 0}}, // ( 2, 174) + {128, { 0, 0, 0}}, // ( 3, 174) + {128, { 0, 0, 0}}, // ( 4, 174) + {128, { 0, 0, 0}}, // ( 5, 174) + {128, { 0, 0, 0}}, // ( 6, 174) + {128, { 0, 0, 0}}, // ( 7, 174) + {128, { 0, 0, 0}}, // ( 8, 174) + {128, { 0, 0, 0}}, // ( 9, 174) + {128, { 0, 0, 0}}, // ( 10, 174) + {128, { 0, 0, 0}}, // ( 11, 174) + {128, { 0, 0, 0}}, // ( 12, 174) + {128, { 0, 0, 0}}, // ( 13, 174) + {128, { 0, 0, 0}}, // ( 14, 174) + {128, { 0, 0, 0}}, // ( 15, 174) + {128, { 0, 0, 0}}, // ( 16, 174) + {128, { 0, 0, 0}}, // ( 17, 174) + {128, { 0, 0, 0}}, // ( 18, 174) + {128, { 0, 0, 0}}, // ( 19, 174) + {128, { 0, 0, 0}}, // ( 20, 174) + {128, { 0, 0, 0}}, // ( 21, 174) + {128, { 0, 0, 0}}, // ( 22, 174) + {128, { 0, 0, 0}}, // ( 23, 174) + {128, { 0, 0, 0}}, // ( 24, 174) + {128, { 0, 0, 0}}, // ( 25, 174) + {128, { 0, 0, 0}}, // ( 26, 174) + {128, { 0, 0, 0}}, // ( 27, 174) + {128, { 0, 0, 0}}, // ( 28, 174) + {128, { 0, 0, 0}}, // ( 29, 174) + {128, { 0, 0, 0}}, // ( 30, 174) + {128, { 0, 0, 0}}, // ( 31, 174) + {128, { 0, 0, 0}}, // ( 32, 174) + {128, { 0, 0, 0}}, // ( 33, 174) + {128, { 0, 0, 0}}, // ( 34, 174) + {128, { 0, 0, 0}}, // ( 35, 174) + {128, { 0, 0, 0}}, // ( 36, 174) + {128, { 0, 0, 0}}, // ( 37, 174) + {128, { 0, 0, 0}}, // ( 38, 174) + {128, { 0, 0, 0}}, // ( 39, 174) + {128, { 0, 0, 0}}, // ( 40, 174) + {128, { 0, 0, 0}}, // ( 41, 174) + {128, { 0, 0, 0}}, // ( 42, 174) + {128, { 0, 0, 0}}, // ( 43, 174) + {128, { 0, 0, 0}}, // ( 44, 174) + {128, { 0, 0, 0}}, // ( 45, 174) + {128, { 0, 0, 0}}, // ( 46, 174) + {128, { 0, 0, 0}}, // ( 47, 174) + {128, { 0, 0, 0}}, // ( 48, 174) + {128, { 0, 0, 0}}, // ( 49, 174) + {128, { 0, 0, 0}}, // ( 50, 174) + {128, { 0, 0, 0}}, // ( 51, 174) + {128, { 0, 0, 0}}, // ( 52, 174) + {128, { 0, 0, 0}}, // ( 53, 174) + {128, { 0, 0, 0}}, // ( 54, 174) + {128, { 0, 0, 0}}, // ( 55, 174) + {128, { 0, 0, 0}}, // ( 56, 174) + {128, { 0, 0, 0}}, // ( 57, 174) + {128, { 0, 0, 0}}, // ( 58, 174) + {128, { 0, 0, 0}}, // ( 59, 174) + {128, { 0, 0, 0}}, // ( 60, 174) + {128, { 0, 0, 0}}, // ( 61, 174) + {128, { 0, 0, 0}}, // ( 62, 174) + {126, { 0, 0, 0}}, // ( 63, 174) + { 97, { 0, 0, 0}}, // ( 64, 174) + { 59, { 0, 0, 0}}, // ( 65, 174) + { 23, { 0, 0, 0}}, // ( 66, 174) + { 0, { 0, 0, 0}}, // ( 67, 174) + { 0, { 0, 0, 0}}, // ( 68, 174) + { 0, { 0, 0, 0}}, // ( 69, 174) + { 0, { 0, 0, 0}}, // ( 70, 174) + { 0, { 0, 0, 0}}, // ( 71, 174) + { 0, { 0, 0, 0}}, // ( 72, 174) + { 0, { 0, 0, 0}}, // ( 73, 174) + { 0, { 0, 0, 0}}, // ( 74, 174) + { 0, { 0, 0, 0}}, // ( 75, 174) + { 0, { 0, 0, 0}}, // ( 76, 174) + { 0, { 0, 0, 0}}, // ( 77, 174) + { 0, { 0, 0, 0}}, // ( 78, 174) + { 0, { 0, 0, 0}}, // ( 79, 174) + { 0, { 0, 0, 0}}, // ( 80, 174) + { 0, { 0, 0, 0}}, // ( 81, 174) + { 0, { 0, 0, 0}}, // ( 82, 174) + { 0, { 0, 0, 0}}, // ( 83, 174) + { 0, { 0, 0, 0}}, // ( 84, 174) + { 0, { 0, 0, 0}}, // ( 85, 174) + { 0, { 0, 0, 0}}, // ( 86, 174) + { 0, { 0, 0, 0}}, // ( 87, 174) + { 0, { 0, 0, 0}}, // ( 88, 174) + { 0, { 0, 0, 0}}, // ( 89, 174) + { 0, { 0, 0, 0}}, // ( 90, 174) + { 0, { 0, 0, 0}}, // ( 91, 174) + { 0, { 0, 0, 0}}, // ( 92, 174) + { 0, { 0, 0, 0}}, // ( 93, 174) + { 0, { 0, 0, 0}}, // ( 94, 174) + { 0, { 0, 0, 0}}, // ( 95, 174) + { 0, { 0, 0, 0}}, // ( 96, 174) + { 0, { 0, 0, 0}}, // ( 97, 174) + { 0, { 0, 0, 0}}, // ( 98, 174) + { 0, { 0, 0, 0}}, // ( 99, 174) + { 0, { 0, 0, 0}}, // (100, 174) + { 0, { 0, 0, 0}}, // (101, 174) + { 0, { 0, 0, 0}}, // (102, 174) + { 0, { 0, 0, 0}}, // (103, 174) + { 0, { 0, 0, 0}}, // (104, 174) + { 0, { 0, 0, 0}}, // (105, 174) + { 0, { 0, 0, 0}}, // (106, 174) + { 0, { 0, 0, 0}}, // (107, 174) + { 0, { 0, 0, 0}}, // (108, 174) + { 0, { 0, 0, 0}}, // (109, 174) + { 0, { 0, 0, 0}}, // (110, 174) + { 0, { 0, 0, 0}}, // (111, 174) + { 0, { 0, 0, 0}}, // (112, 174) + { 23, { 0, 0, 0}}, // (113, 174) + { 59, { 0, 0, 0}}, // (114, 174) + { 96, { 0, 0, 0}}, // (115, 174) + {126, { 0, 0, 0}}, // (116, 174) + {128, { 0, 0, 0}}, // (117, 174) + {128, { 0, 0, 0}}, // (118, 174) + {128, { 0, 0, 0}}, // (119, 174) + {128, { 0, 0, 0}}, // (120, 174) + {128, { 0, 0, 0}}, // (121, 174) + {128, { 0, 0, 0}}, // (122, 174) + {128, { 0, 0, 0}}, // (123, 174) + {128, { 0, 0, 0}}, // (124, 174) + {128, { 0, 0, 0}}, // (125, 174) + {128, { 0, 0, 0}}, // (126, 174) + {128, { 0, 0, 0}}, // (127, 174) + {128, { 0, 0, 0}}, // (128, 174) + {128, { 0, 0, 0}}, // (129, 174) + {128, { 0, 0, 0}}, // (130, 174) + {128, { 0, 0, 0}}, // (131, 174) + {128, { 0, 0, 0}}, // (132, 174) + {128, { 0, 0, 0}}, // (133, 174) + {128, { 0, 0, 0}}, // (134, 174) + {128, { 0, 0, 0}}, // (135, 174) + {128, { 0, 0, 0}}, // (136, 174) + {128, { 0, 0, 0}}, // (137, 174) + {128, { 0, 0, 0}}, // (138, 174) + {128, { 0, 0, 0}}, // (139, 174) + {128, { 0, 0, 0}}, // (140, 174) + {128, { 0, 0, 0}}, // (141, 174) + {128, { 0, 0, 0}}, // (142, 174) + {128, { 0, 0, 0}}, // (143, 174) + {128, { 0, 0, 0}}, // (144, 174) + {128, { 0, 0, 0}}, // (145, 174) + {128, { 0, 0, 0}}, // (146, 174) + {128, { 0, 0, 0}}, // (147, 174) + {128, { 0, 0, 0}}, // (148, 174) + {128, { 0, 0, 0}}, // (149, 174) + {128, { 0, 0, 0}}, // (150, 174) + {128, { 0, 0, 0}}, // (151, 174) + {128, { 0, 0, 0}}, // (152, 174) + {128, { 0, 0, 0}}, // (153, 174) + {128, { 0, 0, 0}}, // (154, 174) + {128, { 0, 0, 0}}, // (155, 174) + {128, { 0, 0, 0}}, // (156, 174) + {128, { 0, 0, 0}}, // (157, 174) + {128, { 0, 0, 0}}, // (158, 174) + {128, { 0, 0, 0}}, // (159, 174) + {128, { 0, 0, 0}}, // (160, 174) + {128, { 0, 0, 0}}, // (161, 174) + {128, { 0, 0, 0}}, // (162, 174) + {128, { 0, 0, 0}}, // (163, 174) + {128, { 0, 0, 0}}, // (164, 174) + {128, { 0, 0, 0}}, // (165, 174) + {128, { 0, 0, 0}}, // (166, 174) + {128, { 0, 0, 0}}, // (167, 174) + {128, { 0, 0, 0}}, // (168, 174) + {128, { 0, 0, 0}}, // (169, 174) + {128, { 0, 0, 0}}, // (170, 174) + {128, { 0, 0, 0}}, // (171, 174) + {128, { 0, 0, 0}}, // (172, 174) + {128, { 0, 0, 0}}, // (173, 174) + {128, { 0, 0, 0}}, // (174, 174) + {128, { 0, 0, 0}}, // (175, 174) + {128, { 0, 0, 0}}, // (176, 174) + {128, { 0, 0, 0}}, // (177, 174) + {128, { 0, 0, 0}}, // (178, 174) + {128, { 0, 0, 0}}, // (179, 174) + {128, { 0, 0, 0}}, // ( 0, 175) + {128, { 0, 0, 0}}, // ( 1, 175) + {128, { 0, 0, 0}}, // ( 2, 175) + {128, { 0, 0, 0}}, // ( 3, 175) + {128, { 0, 0, 0}}, // ( 4, 175) + {128, { 0, 0, 0}}, // ( 5, 175) + {128, { 0, 0, 0}}, // ( 6, 175) + {128, { 0, 0, 0}}, // ( 7, 175) + {128, { 0, 0, 0}}, // ( 8, 175) + {128, { 0, 0, 0}}, // ( 9, 175) + {128, { 0, 0, 0}}, // ( 10, 175) + {128, { 0, 0, 0}}, // ( 11, 175) + {128, { 0, 0, 0}}, // ( 12, 175) + {128, { 0, 0, 0}}, // ( 13, 175) + {128, { 0, 0, 0}}, // ( 14, 175) + {128, { 0, 0, 0}}, // ( 15, 175) + {128, { 0, 0, 0}}, // ( 16, 175) + {128, { 0, 0, 0}}, // ( 17, 175) + {128, { 0, 0, 0}}, // ( 18, 175) + {128, { 0, 0, 0}}, // ( 19, 175) + {128, { 0, 0, 0}}, // ( 20, 175) + {128, { 0, 0, 0}}, // ( 21, 175) + {128, { 0, 0, 0}}, // ( 22, 175) + {128, { 0, 0, 0}}, // ( 23, 175) + {128, { 0, 0, 0}}, // ( 24, 175) + {128, { 0, 0, 0}}, // ( 25, 175) + {128, { 0, 0, 0}}, // ( 26, 175) + {128, { 0, 0, 0}}, // ( 27, 175) + {128, { 0, 0, 0}}, // ( 28, 175) + {128, { 0, 0, 0}}, // ( 29, 175) + {128, { 0, 0, 0}}, // ( 30, 175) + {128, { 0, 0, 0}}, // ( 31, 175) + {128, { 0, 0, 0}}, // ( 32, 175) + {128, { 0, 0, 0}}, // ( 33, 175) + {128, { 0, 0, 0}}, // ( 34, 175) + {128, { 0, 0, 0}}, // ( 35, 175) + {128, { 0, 0, 0}}, // ( 36, 175) + {128, { 0, 0, 0}}, // ( 37, 175) + {128, { 0, 0, 0}}, // ( 38, 175) + {128, { 0, 0, 0}}, // ( 39, 175) + {128, { 0, 0, 0}}, // ( 40, 175) + {128, { 0, 0, 0}}, // ( 41, 175) + {128, { 0, 0, 0}}, // ( 42, 175) + {128, { 0, 0, 0}}, // ( 43, 175) + {128, { 0, 0, 0}}, // ( 44, 175) + {128, { 0, 0, 0}}, // ( 45, 175) + {128, { 0, 0, 0}}, // ( 46, 175) + {128, { 0, 0, 0}}, // ( 47, 175) + {128, { 0, 0, 0}}, // ( 48, 175) + {128, { 0, 0, 0}}, // ( 49, 175) + {128, { 0, 0, 0}}, // ( 50, 175) + {128, { 0, 0, 0}}, // ( 51, 175) + {128, { 0, 0, 0}}, // ( 52, 175) + {128, { 0, 0, 0}}, // ( 53, 175) + {128, { 0, 0, 0}}, // ( 54, 175) + {128, { 0, 0, 0}}, // ( 55, 175) + {128, { 0, 0, 0}}, // ( 56, 175) + {128, { 0, 0, 0}}, // ( 57, 175) + {128, { 0, 0, 0}}, // ( 58, 175) + {128, { 0, 0, 0}}, // ( 59, 175) + {128, { 0, 0, 0}}, // ( 60, 175) + {128, { 0, 0, 0}}, // ( 61, 175) + {128, { 0, 0, 0}}, // ( 62, 175) + {128, { 0, 0, 0}}, // ( 63, 175) + {128, { 0, 0, 0}}, // ( 64, 175) + {128, { 0, 0, 0}}, // ( 65, 175) + {128, { 0, 0, 0}}, // ( 66, 175) + {116, { 0, 0, 0}}, // ( 67, 175) + { 83, { 0, 0, 0}}, // ( 68, 175) + { 55, { 0, 0, 0}}, // ( 69, 175) + { 25, { 0, 0, 0}}, // ( 70, 175) + { 2, { 0, 0, 0}}, // ( 71, 175) + { 0, { 0, 0, 0}}, // ( 72, 175) + { 0, { 0, 0, 0}}, // ( 73, 175) + { 0, { 0, 0, 0}}, // ( 74, 175) + { 0, { 0, 0, 0}}, // ( 75, 175) + { 0, { 0, 0, 0}}, // ( 76, 175) + { 0, { 0, 0, 0}}, // ( 77, 175) + { 0, { 0, 0, 0}}, // ( 78, 175) + { 0, { 0, 0, 0}}, // ( 79, 175) + { 0, { 0, 0, 0}}, // ( 80, 175) + { 0, { 0, 0, 0}}, // ( 81, 175) + { 0, { 0, 0, 0}}, // ( 82, 175) + { 0, { 0, 0, 0}}, // ( 83, 175) + { 0, { 0, 0, 0}}, // ( 84, 175) + { 0, { 0, 0, 0}}, // ( 85, 175) + { 0, { 0, 0, 0}}, // ( 86, 175) + { 0, { 0, 0, 0}}, // ( 87, 175) + { 0, { 0, 0, 0}}, // ( 88, 175) + { 0, { 0, 0, 0}}, // ( 89, 175) + { 0, { 0, 0, 0}}, // ( 90, 175) + { 0, { 0, 0, 0}}, // ( 91, 175) + { 0, { 0, 0, 0}}, // ( 92, 175) + { 0, { 0, 0, 0}}, // ( 93, 175) + { 0, { 0, 0, 0}}, // ( 94, 175) + { 0, { 0, 0, 0}}, // ( 95, 175) + { 0, { 0, 0, 0}}, // ( 96, 175) + { 0, { 0, 0, 0}}, // ( 97, 175) + { 0, { 0, 0, 0}}, // ( 98, 175) + { 0, { 0, 0, 0}}, // ( 99, 175) + { 0, { 0, 0, 0}}, // (100, 175) + { 0, { 0, 0, 0}}, // (101, 175) + { 0, { 0, 0, 0}}, // (102, 175) + { 0, { 0, 0, 0}}, // (103, 175) + { 0, { 0, 0, 0}}, // (104, 175) + { 0, { 0, 0, 0}}, // (105, 175) + { 0, { 0, 0, 0}}, // (106, 175) + { 0, { 0, 0, 0}}, // (107, 175) + { 2, { 0, 0, 0}}, // (108, 175) + { 25, { 0, 0, 0}}, // (109, 175) + { 55, { 0, 0, 0}}, // (110, 175) + { 83, { 0, 0, 0}}, // (111, 175) + {116, { 0, 0, 0}}, // (112, 175) + {128, { 0, 0, 0}}, // (113, 175) + {128, { 0, 0, 0}}, // (114, 175) + {128, { 0, 0, 0}}, // (115, 175) + {128, { 0, 0, 0}}, // (116, 175) + {128, { 0, 0, 0}}, // (117, 175) + {128, { 0, 0, 0}}, // (118, 175) + {128, { 0, 0, 0}}, // (119, 175) + {128, { 0, 0, 0}}, // (120, 175) + {128, { 0, 0, 0}}, // (121, 175) + {128, { 0, 0, 0}}, // (122, 175) + {128, { 0, 0, 0}}, // (123, 175) + {128, { 0, 0, 0}}, // (124, 175) + {128, { 0, 0, 0}}, // (125, 175) + {128, { 0, 0, 0}}, // (126, 175) + {128, { 0, 0, 0}}, // (127, 175) + {128, { 0, 0, 0}}, // (128, 175) + {128, { 0, 0, 0}}, // (129, 175) + {128, { 0, 0, 0}}, // (130, 175) + {128, { 0, 0, 0}}, // (131, 175) + {128, { 0, 0, 0}}, // (132, 175) + {128, { 0, 0, 0}}, // (133, 175) + {128, { 0, 0, 0}}, // (134, 175) + {128, { 0, 0, 0}}, // (135, 175) + {128, { 0, 0, 0}}, // (136, 175) + {128, { 0, 0, 0}}, // (137, 175) + {128, { 0, 0, 0}}, // (138, 175) + {128, { 0, 0, 0}}, // (139, 175) + {128, { 0, 0, 0}}, // (140, 175) + {128, { 0, 0, 0}}, // (141, 175) + {128, { 0, 0, 0}}, // (142, 175) + {128, { 0, 0, 0}}, // (143, 175) + {128, { 0, 0, 0}}, // (144, 175) + {128, { 0, 0, 0}}, // (145, 175) + {128, { 0, 0, 0}}, // (146, 175) + {128, { 0, 0, 0}}, // (147, 175) + {128, { 0, 0, 0}}, // (148, 175) + {128, { 0, 0, 0}}, // (149, 175) + {128, { 0, 0, 0}}, // (150, 175) + {128, { 0, 0, 0}}, // (151, 175) + {128, { 0, 0, 0}}, // (152, 175) + {128, { 0, 0, 0}}, // (153, 175) + {128, { 0, 0, 0}}, // (154, 175) + {128, { 0, 0, 0}}, // (155, 175) + {128, { 0, 0, 0}}, // (156, 175) + {128, { 0, 0, 0}}, // (157, 175) + {128, { 0, 0, 0}}, // (158, 175) + {128, { 0, 0, 0}}, // (159, 175) + {128, { 0, 0, 0}}, // (160, 175) + {128, { 0, 0, 0}}, // (161, 175) + {128, { 0, 0, 0}}, // (162, 175) + {128, { 0, 0, 0}}, // (163, 175) + {128, { 0, 0, 0}}, // (164, 175) + {128, { 0, 0, 0}}, // (165, 175) + {128, { 0, 0, 0}}, // (166, 175) + {128, { 0, 0, 0}}, // (167, 175) + {128, { 0, 0, 0}}, // (168, 175) + {128, { 0, 0, 0}}, // (169, 175) + {128, { 0, 0, 0}}, // (170, 175) + {128, { 0, 0, 0}}, // (171, 175) + {128, { 0, 0, 0}}, // (172, 175) + {128, { 0, 0, 0}}, // (173, 175) + {128, { 0, 0, 0}}, // (174, 175) + {128, { 0, 0, 0}}, // (175, 175) + {128, { 0, 0, 0}}, // (176, 175) + {128, { 0, 0, 0}}, // (177, 175) + {128, { 0, 0, 0}}, // (178, 175) + {128, { 0, 0, 0}}, // (179, 175) + {128, { 0, 0, 0}}, // ( 0, 176) + {128, { 0, 0, 0}}, // ( 1, 176) + {128, { 0, 0, 0}}, // ( 2, 176) + {128, { 0, 0, 0}}, // ( 3, 176) + {128, { 0, 0, 0}}, // ( 4, 176) + {128, { 0, 0, 0}}, // ( 5, 176) + {128, { 0, 0, 0}}, // ( 6, 176) + {128, { 0, 0, 0}}, // ( 7, 176) + {128, { 0, 0, 0}}, // ( 8, 176) + {128, { 0, 0, 0}}, // ( 9, 176) + {128, { 0, 0, 0}}, // ( 10, 176) + {128, { 0, 0, 0}}, // ( 11, 176) + {128, { 0, 0, 0}}, // ( 12, 176) + {128, { 0, 0, 0}}, // ( 13, 176) + {128, { 0, 0, 0}}, // ( 14, 176) + {128, { 0, 0, 0}}, // ( 15, 176) + {128, { 0, 0, 0}}, // ( 16, 176) + {128, { 0, 0, 0}}, // ( 17, 176) + {128, { 0, 0, 0}}, // ( 18, 176) + {128, { 0, 0, 0}}, // ( 19, 176) + {128, { 0, 0, 0}}, // ( 20, 176) + {128, { 0, 0, 0}}, // ( 21, 176) + {128, { 0, 0, 0}}, // ( 22, 176) + {128, { 0, 0, 0}}, // ( 23, 176) + {128, { 0, 0, 0}}, // ( 24, 176) + {128, { 0, 0, 0}}, // ( 25, 176) + {128, { 0, 0, 0}}, // ( 26, 176) + {128, { 0, 0, 0}}, // ( 27, 176) + {128, { 0, 0, 0}}, // ( 28, 176) + {128, { 0, 0, 0}}, // ( 29, 176) + {128, { 0, 0, 0}}, // ( 30, 176) + {128, { 0, 0, 0}}, // ( 31, 176) + {128, { 0, 0, 0}}, // ( 32, 176) + {128, { 0, 0, 0}}, // ( 33, 176) + {128, { 0, 0, 0}}, // ( 34, 176) + {128, { 0, 0, 0}}, // ( 35, 176) + {128, { 0, 0, 0}}, // ( 36, 176) + {128, { 0, 0, 0}}, // ( 37, 176) + {128, { 0, 0, 0}}, // ( 38, 176) + {128, { 0, 0, 0}}, // ( 39, 176) + {128, { 0, 0, 0}}, // ( 40, 176) + {128, { 0, 0, 0}}, // ( 41, 176) + {128, { 0, 0, 0}}, // ( 42, 176) + {128, { 0, 0, 0}}, // ( 43, 176) + {128, { 0, 0, 0}}, // ( 44, 176) + {128, { 0, 0, 0}}, // ( 45, 176) + {128, { 0, 0, 0}}, // ( 46, 176) + {128, { 0, 0, 0}}, // ( 47, 176) + {128, { 0, 0, 0}}, // ( 48, 176) + {128, { 0, 0, 0}}, // ( 49, 176) + {128, { 0, 0, 0}}, // ( 50, 176) + {128, { 0, 0, 0}}, // ( 51, 176) + {128, { 0, 0, 0}}, // ( 52, 176) + {128, { 0, 0, 0}}, // ( 53, 176) + {128, { 0, 0, 0}}, // ( 54, 176) + {128, { 0, 0, 0}}, // ( 55, 176) + {128, { 0, 0, 0}}, // ( 56, 176) + {128, { 0, 0, 0}}, // ( 57, 176) + {128, { 0, 0, 0}}, // ( 58, 176) + {128, { 0, 0, 0}}, // ( 59, 176) + {128, { 0, 0, 0}}, // ( 60, 176) + {128, { 0, 0, 0}}, // ( 61, 176) + {128, { 0, 0, 0}}, // ( 62, 176) + {128, { 0, 0, 0}}, // ( 63, 176) + {128, { 0, 0, 0}}, // ( 64, 176) + {128, { 0, 0, 0}}, // ( 65, 176) + {128, { 0, 0, 0}}, // ( 66, 176) + {128, { 0, 0, 0}}, // ( 67, 176) + {128, { 0, 0, 0}}, // ( 68, 176) + {128, { 0, 0, 0}}, // ( 69, 176) + {128, { 0, 0, 0}}, // ( 70, 176) + {121, { 0, 0, 0}}, // ( 71, 176) + { 95, { 0, 0, 0}}, // ( 72, 176) + { 72, { 0, 0, 0}}, // ( 73, 176) + { 50, { 0, 0, 0}}, // ( 74, 176) + { 26, { 0, 0, 0}}, // ( 75, 176) + { 5, { 0, 0, 0}}, // ( 76, 176) + { 0, { 0, 0, 0}}, // ( 77, 176) + { 0, { 0, 0, 0}}, // ( 78, 176) + { 0, { 0, 0, 0}}, // ( 79, 176) + { 0, { 0, 0, 0}}, // ( 80, 176) + { 0, { 0, 0, 0}}, // ( 81, 176) + { 0, { 0, 0, 0}}, // ( 82, 176) + { 0, { 0, 0, 0}}, // ( 83, 176) + { 0, { 0, 0, 0}}, // ( 84, 176) + { 0, { 0, 0, 0}}, // ( 85, 176) + { 0, { 0, 0, 0}}, // ( 86, 176) + { 0, { 0, 0, 0}}, // ( 87, 176) + { 0, { 0, 0, 0}}, // ( 88, 176) + { 0, { 0, 0, 0}}, // ( 89, 176) + { 0, { 0, 0, 0}}, // ( 90, 176) + { 0, { 0, 0, 0}}, // ( 91, 176) + { 0, { 0, 0, 0}}, // ( 92, 176) + { 0, { 0, 0, 0}}, // ( 93, 176) + { 0, { 0, 0, 0}}, // ( 94, 176) + { 0, { 0, 0, 0}}, // ( 95, 176) + { 0, { 0, 0, 0}}, // ( 96, 176) + { 0, { 0, 0, 0}}, // ( 97, 176) + { 0, { 0, 0, 0}}, // ( 98, 176) + { 0, { 0, 0, 0}}, // ( 99, 176) + { 0, { 0, 0, 0}}, // (100, 176) + { 0, { 0, 0, 0}}, // (101, 176) + { 0, { 0, 0, 0}}, // (102, 176) + { 5, { 0, 0, 0}}, // (103, 176) + { 26, { 0, 0, 0}}, // (104, 176) + { 50, { 0, 0, 0}}, // (105, 176) + { 72, { 0, 0, 0}}, // (106, 176) + { 95, { 0, 0, 0}}, // (107, 176) + {121, { 0, 0, 0}}, // (108, 176) + {128, { 0, 0, 0}}, // (109, 176) + {128, { 0, 0, 0}}, // (110, 176) + {128, { 0, 0, 0}}, // (111, 176) + {128, { 0, 0, 0}}, // (112, 176) + {128, { 0, 0, 0}}, // (113, 176) + {128, { 0, 0, 0}}, // (114, 176) + {128, { 0, 0, 0}}, // (115, 176) + {128, { 0, 0, 0}}, // (116, 176) + {128, { 0, 0, 0}}, // (117, 176) + {128, { 0, 0, 0}}, // (118, 176) + {128, { 0, 0, 0}}, // (119, 176) + {128, { 0, 0, 0}}, // (120, 176) + {128, { 0, 0, 0}}, // (121, 176) + {128, { 0, 0, 0}}, // (122, 176) + {128, { 0, 0, 0}}, // (123, 176) + {128, { 0, 0, 0}}, // (124, 176) + {128, { 0, 0, 0}}, // (125, 176) + {128, { 0, 0, 0}}, // (126, 176) + {128, { 0, 0, 0}}, // (127, 176) + {128, { 0, 0, 0}}, // (128, 176) + {128, { 0, 0, 0}}, // (129, 176) + {128, { 0, 0, 0}}, // (130, 176) + {128, { 0, 0, 0}}, // (131, 176) + {128, { 0, 0, 0}}, // (132, 176) + {128, { 0, 0, 0}}, // (133, 176) + {128, { 0, 0, 0}}, // (134, 176) + {128, { 0, 0, 0}}, // (135, 176) + {128, { 0, 0, 0}}, // (136, 176) + {128, { 0, 0, 0}}, // (137, 176) + {128, { 0, 0, 0}}, // (138, 176) + {128, { 0, 0, 0}}, // (139, 176) + {128, { 0, 0, 0}}, // (140, 176) + {128, { 0, 0, 0}}, // (141, 176) + {128, { 0, 0, 0}}, // (142, 176) + {128, { 0, 0, 0}}, // (143, 176) + {128, { 0, 0, 0}}, // (144, 176) + {128, { 0, 0, 0}}, // (145, 176) + {128, { 0, 0, 0}}, // (146, 176) + {128, { 0, 0, 0}}, // (147, 176) + {128, { 0, 0, 0}}, // (148, 176) + {128, { 0, 0, 0}}, // (149, 176) + {128, { 0, 0, 0}}, // (150, 176) + {128, { 0, 0, 0}}, // (151, 176) + {128, { 0, 0, 0}}, // (152, 176) + {128, { 0, 0, 0}}, // (153, 176) + {128, { 0, 0, 0}}, // (154, 176) + {128, { 0, 0, 0}}, // (155, 176) + {128, { 0, 0, 0}}, // (156, 176) + {128, { 0, 0, 0}}, // (157, 176) + {128, { 0, 0, 0}}, // (158, 176) + {128, { 0, 0, 0}}, // (159, 176) + {128, { 0, 0, 0}}, // (160, 176) + {128, { 0, 0, 0}}, // (161, 176) + {128, { 0, 0, 0}}, // (162, 176) + {128, { 0, 0, 0}}, // (163, 176) + {128, { 0, 0, 0}}, // (164, 176) + {128, { 0, 0, 0}}, // (165, 176) + {128, { 0, 0, 0}}, // (166, 176) + {128, { 0, 0, 0}}, // (167, 176) + {128, { 0, 0, 0}}, // (168, 176) + {128, { 0, 0, 0}}, // (169, 176) + {128, { 0, 0, 0}}, // (170, 176) + {128, { 0, 0, 0}}, // (171, 176) + {128, { 0, 0, 0}}, // (172, 176) + {128, { 0, 0, 0}}, // (173, 176) + {128, { 0, 0, 0}}, // (174, 176) + {128, { 0, 0, 0}}, // (175, 176) + {128, { 0, 0, 0}}, // (176, 176) + {128, { 0, 0, 0}}, // (177, 176) + {128, { 0, 0, 0}}, // (178, 176) + {128, { 0, 0, 0}}, // (179, 176) + {128, { 0, 0, 0}}, // ( 0, 177) + {128, { 0, 0, 0}}, // ( 1, 177) + {128, { 0, 0, 0}}, // ( 2, 177) + {128, { 0, 0, 0}}, // ( 3, 177) + {128, { 0, 0, 0}}, // ( 4, 177) + {128, { 0, 0, 0}}, // ( 5, 177) + {128, { 0, 0, 0}}, // ( 6, 177) + {128, { 0, 0, 0}}, // ( 7, 177) + {128, { 0, 0, 0}}, // ( 8, 177) + {128, { 0, 0, 0}}, // ( 9, 177) + {128, { 0, 0, 0}}, // ( 10, 177) + {128, { 0, 0, 0}}, // ( 11, 177) + {128, { 0, 0, 0}}, // ( 12, 177) + {128, { 0, 0, 0}}, // ( 13, 177) + {128, { 0, 0, 0}}, // ( 14, 177) + {128, { 0, 0, 0}}, // ( 15, 177) + {128, { 0, 0, 0}}, // ( 16, 177) + {128, { 0, 0, 0}}, // ( 17, 177) + {128, { 0, 0, 0}}, // ( 18, 177) + {128, { 0, 0, 0}}, // ( 19, 177) + {128, { 0, 0, 0}}, // ( 20, 177) + {128, { 0, 0, 0}}, // ( 21, 177) + {128, { 0, 0, 0}}, // ( 22, 177) + {128, { 0, 0, 0}}, // ( 23, 177) + {128, { 0, 0, 0}}, // ( 24, 177) + {128, { 0, 0, 0}}, // ( 25, 177) + {128, { 0, 0, 0}}, // ( 26, 177) + {128, { 0, 0, 0}}, // ( 27, 177) + {128, { 0, 0, 0}}, // ( 28, 177) + {128, { 0, 0, 0}}, // ( 29, 177) + {128, { 0, 0, 0}}, // ( 30, 177) + {128, { 0, 0, 0}}, // ( 31, 177) + {128, { 0, 0, 0}}, // ( 32, 177) + {128, { 0, 0, 0}}, // ( 33, 177) + {128, { 0, 0, 0}}, // ( 34, 177) + {128, { 0, 0, 0}}, // ( 35, 177) + {128, { 0, 0, 0}}, // ( 36, 177) + {128, { 0, 0, 0}}, // ( 37, 177) + {128, { 0, 0, 0}}, // ( 38, 177) + {128, { 0, 0, 0}}, // ( 39, 177) + {128, { 0, 0, 0}}, // ( 40, 177) + {128, { 0, 0, 0}}, // ( 41, 177) + {128, { 0, 0, 0}}, // ( 42, 177) + {128, { 0, 0, 0}}, // ( 43, 177) + {128, { 0, 0, 0}}, // ( 44, 177) + {128, { 0, 0, 0}}, // ( 45, 177) + {128, { 0, 0, 0}}, // ( 46, 177) + {128, { 0, 0, 0}}, // ( 47, 177) + {128, { 0, 0, 0}}, // ( 48, 177) + {128, { 0, 0, 0}}, // ( 49, 177) + {128, { 0, 0, 0}}, // ( 50, 177) + {128, { 0, 0, 0}}, // ( 51, 177) + {128, { 0, 0, 0}}, // ( 52, 177) + {128, { 0, 0, 0}}, // ( 53, 177) + {128, { 0, 0, 0}}, // ( 54, 177) + {128, { 0, 0, 0}}, // ( 55, 177) + {128, { 0, 0, 0}}, // ( 56, 177) + {128, { 0, 0, 0}}, // ( 57, 177) + {128, { 0, 0, 0}}, // ( 58, 177) + {128, { 0, 0, 0}}, // ( 59, 177) + {128, { 0, 0, 0}}, // ( 60, 177) + {128, { 0, 0, 0}}, // ( 61, 177) + {128, { 0, 0, 0}}, // ( 62, 177) + {128, { 0, 0, 0}}, // ( 63, 177) + {128, { 0, 0, 0}}, // ( 64, 177) + {128, { 0, 0, 0}}, // ( 65, 177) + {128, { 0, 0, 0}}, // ( 66, 177) + {128, { 0, 0, 0}}, // ( 67, 177) + {128, { 0, 0, 0}}, // ( 68, 177) + {128, { 0, 0, 0}}, // ( 69, 177) + {128, { 0, 0, 0}}, // ( 70, 177) + {128, { 0, 0, 0}}, // ( 71, 177) + {128, { 0, 0, 0}}, // ( 72, 177) + {128, { 0, 0, 0}}, // ( 73, 177) + {128, { 0, 0, 0}}, // ( 74, 177) + {128, { 0, 0, 0}}, // ( 75, 177) + {127, { 0, 0, 0}}, // ( 76, 177) + {113, { 0, 0, 0}}, // ( 77, 177) + { 95, { 0, 0, 0}}, // ( 78, 177) + { 80, { 0, 0, 0}}, // ( 79, 177) + { 65, { 0, 0, 0}}, // ( 80, 177) + { 53, { 0, 0, 0}}, // ( 81, 177) + { 44, { 0, 0, 0}}, // ( 82, 177) + { 33, { 0, 0, 0}}, // ( 83, 177) + { 24, { 0, 0, 0}}, // ( 84, 177) + { 17, { 0, 0, 0}}, // ( 85, 177) + { 9, { 0, 0, 0}}, // ( 86, 177) + { 9, { 0, 0, 0}}, // ( 87, 177) + { 6, { 0, 0, 0}}, // ( 88, 177) + { 0, { 0, 0, 0}}, // ( 89, 177) + { 0, { 0, 0, 0}}, // ( 90, 177) + { 6, { 0, 0, 0}}, // ( 91, 177) + { 9, { 0, 0, 0}}, // ( 92, 177) + { 9, { 0, 0, 0}}, // ( 93, 177) + { 17, { 0, 0, 0}}, // ( 94, 177) + { 24, { 0, 0, 0}}, // ( 95, 177) + { 33, { 0, 0, 0}}, // ( 96, 177) + { 44, { 0, 0, 0}}, // ( 97, 177) + { 53, { 0, 0, 0}}, // ( 98, 177) + { 65, { 0, 0, 0}}, // ( 99, 177) + { 80, { 0, 0, 0}}, // (100, 177) + { 95, { 0, 0, 0}}, // (101, 177) + {113, { 0, 0, 0}}, // (102, 177) + {127, { 0, 0, 0}}, // (103, 177) + {128, { 0, 0, 0}}, // (104, 177) + {128, { 0, 0, 0}}, // (105, 177) + {128, { 0, 0, 0}}, // (106, 177) + {128, { 0, 0, 0}}, // (107, 177) + {128, { 0, 0, 0}}, // (108, 177) + {128, { 0, 0, 0}}, // (109, 177) + {128, { 0, 0, 0}}, // (110, 177) + {128, { 0, 0, 0}}, // (111, 177) + {128, { 0, 0, 0}}, // (112, 177) + {128, { 0, 0, 0}}, // (113, 177) + {128, { 0, 0, 0}}, // (114, 177) + {128, { 0, 0, 0}}, // (115, 177) + {128, { 0, 0, 0}}, // (116, 177) + {128, { 0, 0, 0}}, // (117, 177) + {128, { 0, 0, 0}}, // (118, 177) + {128, { 0, 0, 0}}, // (119, 177) + {128, { 0, 0, 0}}, // (120, 177) + {128, { 0, 0, 0}}, // (121, 177) + {128, { 0, 0, 0}}, // (122, 177) + {128, { 0, 0, 0}}, // (123, 177) + {128, { 0, 0, 0}}, // (124, 177) + {128, { 0, 0, 0}}, // (125, 177) + {128, { 0, 0, 0}}, // (126, 177) + {128, { 0, 0, 0}}, // (127, 177) + {128, { 0, 0, 0}}, // (128, 177) + {128, { 0, 0, 0}}, // (129, 177) + {128, { 0, 0, 0}}, // (130, 177) + {128, { 0, 0, 0}}, // (131, 177) + {128, { 0, 0, 0}}, // (132, 177) + {128, { 0, 0, 0}}, // (133, 177) + {128, { 0, 0, 0}}, // (134, 177) + {128, { 0, 0, 0}}, // (135, 177) + {128, { 0, 0, 0}}, // (136, 177) + {128, { 0, 0, 0}}, // (137, 177) + {128, { 0, 0, 0}}, // (138, 177) + {128, { 0, 0, 0}}, // (139, 177) + {128, { 0, 0, 0}}, // (140, 177) + {128, { 0, 0, 0}}, // (141, 177) + {128, { 0, 0, 0}}, // (142, 177) + {128, { 0, 0, 0}}, // (143, 177) + {128, { 0, 0, 0}}, // (144, 177) + {128, { 0, 0, 0}}, // (145, 177) + {128, { 0, 0, 0}}, // (146, 177) + {128, { 0, 0, 0}}, // (147, 177) + {128, { 0, 0, 0}}, // (148, 177) + {128, { 0, 0, 0}}, // (149, 177) + {128, { 0, 0, 0}}, // (150, 177) + {128, { 0, 0, 0}}, // (151, 177) + {128, { 0, 0, 0}}, // (152, 177) + {128, { 0, 0, 0}}, // (153, 177) + {128, { 0, 0, 0}}, // (154, 177) + {128, { 0, 0, 0}}, // (155, 177) + {128, { 0, 0, 0}}, // (156, 177) + {128, { 0, 0, 0}}, // (157, 177) + {128, { 0, 0, 0}}, // (158, 177) + {128, { 0, 0, 0}}, // (159, 177) + {128, { 0, 0, 0}}, // (160, 177) + {128, { 0, 0, 0}}, // (161, 177) + {128, { 0, 0, 0}}, // (162, 177) + {128, { 0, 0, 0}}, // (163, 177) + {128, { 0, 0, 0}}, // (164, 177) + {128, { 0, 0, 0}}, // (165, 177) + {128, { 0, 0, 0}}, // (166, 177) + {128, { 0, 0, 0}}, // (167, 177) + {128, { 0, 0, 0}}, // (168, 177) + {128, { 0, 0, 0}}, // (169, 177) + {128, { 0, 0, 0}}, // (170, 177) + {128, { 0, 0, 0}}, // (171, 177) + {128, { 0, 0, 0}}, // (172, 177) + {128, { 0, 0, 0}}, // (173, 177) + {128, { 0, 0, 0}}, // (174, 177) + {128, { 0, 0, 0}}, // (175, 177) + {128, { 0, 0, 0}}, // (176, 177) + {128, { 0, 0, 0}}, // (177, 177) + {128, { 0, 0, 0}}, // (178, 177) + {128, { 0, 0, 0}}, // (179, 177) + {128, { 0, 0, 0}}, // ( 0, 178) + {128, { 0, 0, 0}}, // ( 1, 178) + {128, { 0, 0, 0}}, // ( 2, 178) + {128, { 0, 0, 0}}, // ( 3, 178) + {128, { 0, 0, 0}}, // ( 4, 178) + {128, { 0, 0, 0}}, // ( 5, 178) + {128, { 0, 0, 0}}, // ( 6, 178) + {128, { 0, 0, 0}}, // ( 7, 178) + {128, { 0, 0, 0}}, // ( 8, 178) + {128, { 0, 0, 0}}, // ( 9, 178) + {128, { 0, 0, 0}}, // ( 10, 178) + {128, { 0, 0, 0}}, // ( 11, 178) + {128, { 0, 0, 0}}, // ( 12, 178) + {128, { 0, 0, 0}}, // ( 13, 178) + {128, { 0, 0, 0}}, // ( 14, 178) + {128, { 0, 0, 0}}, // ( 15, 178) + {128, { 0, 0, 0}}, // ( 16, 178) + {128, { 0, 0, 0}}, // ( 17, 178) + {128, { 0, 0, 0}}, // ( 18, 178) + {128, { 0, 0, 0}}, // ( 19, 178) + {128, { 0, 0, 0}}, // ( 20, 178) + {128, { 0, 0, 0}}, // ( 21, 178) + {128, { 0, 0, 0}}, // ( 22, 178) + {128, { 0, 0, 0}}, // ( 23, 178) + {128, { 0, 0, 0}}, // ( 24, 178) + {128, { 0, 0, 0}}, // ( 25, 178) + {128, { 0, 0, 0}}, // ( 26, 178) + {128, { 0, 0, 0}}, // ( 27, 178) + {128, { 0, 0, 0}}, // ( 28, 178) + {128, { 0, 0, 0}}, // ( 29, 178) + {128, { 0, 0, 0}}, // ( 30, 178) + {128, { 0, 0, 0}}, // ( 31, 178) + {128, { 0, 0, 0}}, // ( 32, 178) + {128, { 0, 0, 0}}, // ( 33, 178) + {128, { 0, 0, 0}}, // ( 34, 178) + {128, { 0, 0, 0}}, // ( 35, 178) + {128, { 0, 0, 0}}, // ( 36, 178) + {128, { 0, 0, 0}}, // ( 37, 178) + {128, { 0, 0, 0}}, // ( 38, 178) + {128, { 0, 0, 0}}, // ( 39, 178) + {128, { 0, 0, 0}}, // ( 40, 178) + {128, { 0, 0, 0}}, // ( 41, 178) + {128, { 0, 0, 0}}, // ( 42, 178) + {128, { 0, 0, 0}}, // ( 43, 178) + {128, { 0, 0, 0}}, // ( 44, 178) + {128, { 0, 0, 0}}, // ( 45, 178) + {128, { 0, 0, 0}}, // ( 46, 178) + {128, { 0, 0, 0}}, // ( 47, 178) + {128, { 0, 0, 0}}, // ( 48, 178) + {128, { 0, 0, 0}}, // ( 49, 178) + {128, { 0, 0, 0}}, // ( 50, 178) + {128, { 0, 0, 0}}, // ( 51, 178) + {128, { 0, 0, 0}}, // ( 52, 178) + {128, { 0, 0, 0}}, // ( 53, 178) + {128, { 0, 0, 0}}, // ( 54, 178) + {128, { 0, 0, 0}}, // ( 55, 178) + {128, { 0, 0, 0}}, // ( 56, 178) + {128, { 0, 0, 0}}, // ( 57, 178) + {128, { 0, 0, 0}}, // ( 58, 178) + {128, { 0, 0, 0}}, // ( 59, 178) + {128, { 0, 0, 0}}, // ( 60, 178) + {128, { 0, 0, 0}}, // ( 61, 178) + {128, { 0, 0, 0}}, // ( 62, 178) + {128, { 0, 0, 0}}, // ( 63, 178) + {128, { 0, 0, 0}}, // ( 64, 178) + {128, { 0, 0, 0}}, // ( 65, 178) + {128, { 0, 0, 0}}, // ( 66, 178) + {128, { 0, 0, 0}}, // ( 67, 178) + {128, { 0, 0, 0}}, // ( 68, 178) + {128, { 0, 0, 0}}, // ( 69, 178) + {128, { 0, 0, 0}}, // ( 70, 178) + {128, { 0, 0, 0}}, // ( 71, 178) + {128, { 0, 0, 0}}, // ( 72, 178) + {128, { 0, 0, 0}}, // ( 73, 178) + {128, { 0, 0, 0}}, // ( 74, 178) + {128, { 0, 0, 0}}, // ( 75, 178) + {128, { 0, 0, 0}}, // ( 76, 178) + {128, { 0, 0, 0}}, // ( 77, 178) + {128, { 0, 0, 0}}, // ( 78, 178) + {128, { 0, 0, 0}}, // ( 79, 178) + {128, { 0, 0, 0}}, // ( 80, 178) + {128, { 0, 0, 0}}, // ( 81, 178) + {128, { 0, 0, 0}}, // ( 82, 178) + {128, { 0, 0, 0}}, // ( 83, 178) + {128, { 0, 0, 0}}, // ( 84, 178) + {128, { 0, 0, 0}}, // ( 85, 178) + {128, { 0, 0, 0}}, // ( 86, 178) + {128, { 0, 0, 0}}, // ( 87, 178) + {128, { 0, 0, 0}}, // ( 88, 178) + {128, { 0, 0, 0}}, // ( 89, 178) + {128, { 0, 0, 0}}, // ( 90, 178) + {128, { 0, 0, 0}}, // ( 91, 178) + {128, { 0, 0, 0}}, // ( 92, 178) + {128, { 0, 0, 0}}, // ( 93, 178) + {128, { 0, 0, 0}}, // ( 94, 178) + {128, { 0, 0, 0}}, // ( 95, 178) + {128, { 0, 0, 0}}, // ( 96, 178) + {128, { 0, 0, 0}}, // ( 97, 178) + {128, { 0, 0, 0}}, // ( 98, 178) + {128, { 0, 0, 0}}, // ( 99, 178) + {128, { 0, 0, 0}}, // (100, 178) + {128, { 0, 0, 0}}, // (101, 178) + {128, { 0, 0, 0}}, // (102, 178) + {128, { 0, 0, 0}}, // (103, 178) + {128, { 0, 0, 0}}, // (104, 178) + {128, { 0, 0, 0}}, // (105, 178) + {128, { 0, 0, 0}}, // (106, 178) + {128, { 0, 0, 0}}, // (107, 178) + {128, { 0, 0, 0}}, // (108, 178) + {128, { 0, 0, 0}}, // (109, 178) + {128, { 0, 0, 0}}, // (110, 178) + {128, { 0, 0, 0}}, // (111, 178) + {128, { 0, 0, 0}}, // (112, 178) + {128, { 0, 0, 0}}, // (113, 178) + {128, { 0, 0, 0}}, // (114, 178) + {128, { 0, 0, 0}}, // (115, 178) + {128, { 0, 0, 0}}, // (116, 178) + {128, { 0, 0, 0}}, // (117, 178) + {128, { 0, 0, 0}}, // (118, 178) + {128, { 0, 0, 0}}, // (119, 178) + {128, { 0, 0, 0}}, // (120, 178) + {128, { 0, 0, 0}}, // (121, 178) + {128, { 0, 0, 0}}, // (122, 178) + {128, { 0, 0, 0}}, // (123, 178) + {128, { 0, 0, 0}}, // (124, 178) + {128, { 0, 0, 0}}, // (125, 178) + {128, { 0, 0, 0}}, // (126, 178) + {128, { 0, 0, 0}}, // (127, 178) + {128, { 0, 0, 0}}, // (128, 178) + {128, { 0, 0, 0}}, // (129, 178) + {128, { 0, 0, 0}}, // (130, 178) + {128, { 0, 0, 0}}, // (131, 178) + {128, { 0, 0, 0}}, // (132, 178) + {128, { 0, 0, 0}}, // (133, 178) + {128, { 0, 0, 0}}, // (134, 178) + {128, { 0, 0, 0}}, // (135, 178) + {128, { 0, 0, 0}}, // (136, 178) + {128, { 0, 0, 0}}, // (137, 178) + {128, { 0, 0, 0}}, // (138, 178) + {128, { 0, 0, 0}}, // (139, 178) + {128, { 0, 0, 0}}, // (140, 178) + {128, { 0, 0, 0}}, // (141, 178) + {128, { 0, 0, 0}}, // (142, 178) + {128, { 0, 0, 0}}, // (143, 178) + {128, { 0, 0, 0}}, // (144, 178) + {128, { 0, 0, 0}}, // (145, 178) + {128, { 0, 0, 0}}, // (146, 178) + {128, { 0, 0, 0}}, // (147, 178) + {128, { 0, 0, 0}}, // (148, 178) + {128, { 0, 0, 0}}, // (149, 178) + {128, { 0, 0, 0}}, // (150, 178) + {128, { 0, 0, 0}}, // (151, 178) + {128, { 0, 0, 0}}, // (152, 178) + {128, { 0, 0, 0}}, // (153, 178) + {128, { 0, 0, 0}}, // (154, 178) + {128, { 0, 0, 0}}, // (155, 178) + {128, { 0, 0, 0}}, // (156, 178) + {128, { 0, 0, 0}}, // (157, 178) + {128, { 0, 0, 0}}, // (158, 178) + {128, { 0, 0, 0}}, // (159, 178) + {128, { 0, 0, 0}}, // (160, 178) + {128, { 0, 0, 0}}, // (161, 178) + {128, { 0, 0, 0}}, // (162, 178) + {128, { 0, 0, 0}}, // (163, 178) + {128, { 0, 0, 0}}, // (164, 178) + {128, { 0, 0, 0}}, // (165, 178) + {128, { 0, 0, 0}}, // (166, 178) + {128, { 0, 0, 0}}, // (167, 178) + {128, { 0, 0, 0}}, // (168, 178) + {128, { 0, 0, 0}}, // (169, 178) + {128, { 0, 0, 0}}, // (170, 178) + {128, { 0, 0, 0}}, // (171, 178) + {128, { 0, 0, 0}}, // (172, 178) + {128, { 0, 0, 0}}, // (173, 178) + {128, { 0, 0, 0}}, // (174, 178) + {128, { 0, 0, 0}}, // (175, 178) + {128, { 0, 0, 0}}, // (176, 178) + {128, { 0, 0, 0}}, // (177, 178) + {128, { 0, 0, 0}}, // (178, 178) + {128, { 0, 0, 0}}, // (179, 178) + {128, { 0, 0, 0}}, // ( 0, 179) + {128, { 0, 0, 0}}, // ( 1, 179) + {128, { 0, 0, 0}}, // ( 2, 179) + {128, { 0, 0, 0}}, // ( 3, 179) + {128, { 0, 0, 0}}, // ( 4, 179) + {128, { 0, 0, 0}}, // ( 5, 179) + {128, { 0, 0, 0}}, // ( 6, 179) + {128, { 0, 0, 0}}, // ( 7, 179) + {128, { 0, 0, 0}}, // ( 8, 179) + {128, { 0, 0, 0}}, // ( 9, 179) + {128, { 0, 0, 0}}, // ( 10, 179) + {128, { 0, 0, 0}}, // ( 11, 179) + {128, { 0, 0, 0}}, // ( 12, 179) + {128, { 0, 0, 0}}, // ( 13, 179) + {128, { 0, 0, 0}}, // ( 14, 179) + {128, { 0, 0, 0}}, // ( 15, 179) + {128, { 0, 0, 0}}, // ( 16, 179) + {128, { 0, 0, 0}}, // ( 17, 179) + {128, { 0, 0, 0}}, // ( 18, 179) + {128, { 0, 0, 0}}, // ( 19, 179) + {128, { 0, 0, 0}}, // ( 20, 179) + {128, { 0, 0, 0}}, // ( 21, 179) + {128, { 0, 0, 0}}, // ( 22, 179) + {128, { 0, 0, 0}}, // ( 23, 179) + {128, { 0, 0, 0}}, // ( 24, 179) + {128, { 0, 0, 0}}, // ( 25, 179) + {128, { 0, 0, 0}}, // ( 26, 179) + {128, { 0, 0, 0}}, // ( 27, 179) + {128, { 0, 0, 0}}, // ( 28, 179) + {128, { 0, 0, 0}}, // ( 29, 179) + {128, { 0, 0, 0}}, // ( 30, 179) + {128, { 0, 0, 0}}, // ( 31, 179) + {128, { 0, 0, 0}}, // ( 32, 179) + {128, { 0, 0, 0}}, // ( 33, 179) + {128, { 0, 0, 0}}, // ( 34, 179) + {128, { 0, 0, 0}}, // ( 35, 179) + {128, { 0, 0, 0}}, // ( 36, 179) + {128, { 0, 0, 0}}, // ( 37, 179) + {128, { 0, 0, 0}}, // ( 38, 179) + {128, { 0, 0, 0}}, // ( 39, 179) + {128, { 0, 0, 0}}, // ( 40, 179) + {128, { 0, 0, 0}}, // ( 41, 179) + {128, { 0, 0, 0}}, // ( 42, 179) + {128, { 0, 0, 0}}, // ( 43, 179) + {128, { 0, 0, 0}}, // ( 44, 179) + {128, { 0, 0, 0}}, // ( 45, 179) + {128, { 0, 0, 0}}, // ( 46, 179) + {128, { 0, 0, 0}}, // ( 47, 179) + {128, { 0, 0, 0}}, // ( 48, 179) + {128, { 0, 0, 0}}, // ( 49, 179) + {128, { 0, 0, 0}}, // ( 50, 179) + {128, { 0, 0, 0}}, // ( 51, 179) + {128, { 0, 0, 0}}, // ( 52, 179) + {128, { 0, 0, 0}}, // ( 53, 179) + {128, { 0, 0, 0}}, // ( 54, 179) + {128, { 0, 0, 0}}, // ( 55, 179) + {128, { 0, 0, 0}}, // ( 56, 179) + {128, { 0, 0, 0}}, // ( 57, 179) + {128, { 0, 0, 0}}, // ( 58, 179) + {128, { 0, 0, 0}}, // ( 59, 179) + {128, { 0, 0, 0}}, // ( 60, 179) + {128, { 0, 0, 0}}, // ( 61, 179) + {128, { 0, 0, 0}}, // ( 62, 179) + {128, { 0, 0, 0}}, // ( 63, 179) + {128, { 0, 0, 0}}, // ( 64, 179) + {128, { 0, 0, 0}}, // ( 65, 179) + {128, { 0, 0, 0}}, // ( 66, 179) + {128, { 0, 0, 0}}, // ( 67, 179) + {128, { 0, 0, 0}}, // ( 68, 179) + {128, { 0, 0, 0}}, // ( 69, 179) + {128, { 0, 0, 0}}, // ( 70, 179) + {128, { 0, 0, 0}}, // ( 71, 179) + {128, { 0, 0, 0}}, // ( 72, 179) + {128, { 0, 0, 0}}, // ( 73, 179) + {128, { 0, 0, 0}}, // ( 74, 179) + {128, { 0, 0, 0}}, // ( 75, 179) + {128, { 0, 0, 0}}, // ( 76, 179) + {128, { 0, 0, 0}}, // ( 77, 179) + {128, { 0, 0, 0}}, // ( 78, 179) + {128, { 0, 0, 0}}, // ( 79, 179) + {128, { 0, 0, 0}}, // ( 80, 179) + {128, { 0, 0, 0}}, // ( 81, 179) + {128, { 0, 0, 0}}, // ( 82, 179) + {128, { 0, 0, 0}}, // ( 83, 179) + {128, { 0, 0, 0}}, // ( 84, 179) + {128, { 0, 0, 0}}, // ( 85, 179) + {128, { 0, 0, 0}}, // ( 86, 179) + {128, { 0, 0, 0}}, // ( 87, 179) + {128, { 0, 0, 0}}, // ( 88, 179) + {128, { 0, 0, 0}}, // ( 89, 179) + {128, { 0, 0, 0}}, // ( 90, 179) + {128, { 0, 0, 0}}, // ( 91, 179) + {128, { 0, 0, 0}}, // ( 92, 179) + {128, { 0, 0, 0}}, // ( 93, 179) + {128, { 0, 0, 0}}, // ( 94, 179) + {128, { 0, 0, 0}}, // ( 95, 179) + {128, { 0, 0, 0}}, // ( 96, 179) + {128, { 0, 0, 0}}, // ( 97, 179) + {128, { 0, 0, 0}}, // ( 98, 179) + {128, { 0, 0, 0}}, // ( 99, 179) + {128, { 0, 0, 0}}, // (100, 179) + {128, { 0, 0, 0}}, // (101, 179) + {128, { 0, 0, 0}}, // (102, 179) + {128, { 0, 0, 0}}, // (103, 179) + {128, { 0, 0, 0}}, // (104, 179) + {128, { 0, 0, 0}}, // (105, 179) + {128, { 0, 0, 0}}, // (106, 179) + {128, { 0, 0, 0}}, // (107, 179) + {128, { 0, 0, 0}}, // (108, 179) + {128, { 0, 0, 0}}, // (109, 179) + {128, { 0, 0, 0}}, // (110, 179) + {128, { 0, 0, 0}}, // (111, 179) + {128, { 0, 0, 0}}, // (112, 179) + {128, { 0, 0, 0}}, // (113, 179) + {128, { 0, 0, 0}}, // (114, 179) + {128, { 0, 0, 0}}, // (115, 179) + {128, { 0, 0, 0}}, // (116, 179) + {128, { 0, 0, 0}}, // (117, 179) + {128, { 0, 0, 0}}, // (118, 179) + {128, { 0, 0, 0}}, // (119, 179) + {128, { 0, 0, 0}}, // (120, 179) + {128, { 0, 0, 0}}, // (121, 179) + {128, { 0, 0, 0}}, // (122, 179) + {128, { 0, 0, 0}}, // (123, 179) + {128, { 0, 0, 0}}, // (124, 179) + {128, { 0, 0, 0}}, // (125, 179) + {128, { 0, 0, 0}}, // (126, 179) + {128, { 0, 0, 0}}, // (127, 179) + {128, { 0, 0, 0}}, // (128, 179) + {128, { 0, 0, 0}}, // (129, 179) + {128, { 0, 0, 0}}, // (130, 179) + {128, { 0, 0, 0}}, // (131, 179) + {128, { 0, 0, 0}}, // (132, 179) + {128, { 0, 0, 0}}, // (133, 179) + {128, { 0, 0, 0}}, // (134, 179) + {128, { 0, 0, 0}}, // (135, 179) + {128, { 0, 0, 0}}, // (136, 179) + {128, { 0, 0, 0}}, // (137, 179) + {128, { 0, 0, 0}}, // (138, 179) + {128, { 0, 0, 0}}, // (139, 179) + {128, { 0, 0, 0}}, // (140, 179) + {128, { 0, 0, 0}}, // (141, 179) + {128, { 0, 0, 0}}, // (142, 179) + {128, { 0, 0, 0}}, // (143, 179) + {128, { 0, 0, 0}}, // (144, 179) + {128, { 0, 0, 0}}, // (145, 179) + {128, { 0, 0, 0}}, // (146, 179) + {128, { 0, 0, 0}}, // (147, 179) + {128, { 0, 0, 0}}, // (148, 179) + {128, { 0, 0, 0}}, // (149, 179) + {128, { 0, 0, 0}}, // (150, 179) + {128, { 0, 0, 0}}, // (151, 179) + {128, { 0, 0, 0}}, // (152, 179) + {128, { 0, 0, 0}}, // (153, 179) + {128, { 0, 0, 0}}, // (154, 179) + {128, { 0, 0, 0}}, // (155, 179) + {128, { 0, 0, 0}}, // (156, 179) + {128, { 0, 0, 0}}, // (157, 179) + {128, { 0, 0, 0}}, // (158, 179) + {128, { 0, 0, 0}}, // (159, 179) + {128, { 0, 0, 0}}, // (160, 179) + {128, { 0, 0, 0}}, // (161, 179) + {128, { 0, 0, 0}}, // (162, 179) + {128, { 0, 0, 0}}, // (163, 179) + {128, { 0, 0, 0}}, // (164, 179) + {128, { 0, 0, 0}}, // (165, 179) + {128, { 0, 0, 0}}, // (166, 179) + {128, { 0, 0, 0}}, // (167, 179) + {128, { 0, 0, 0}}, // (168, 179) + {128, { 0, 0, 0}}, // (169, 179) + {128, { 0, 0, 0}}, // (170, 179) + {128, { 0, 0, 0}}, // (171, 179) + {128, { 0, 0, 0}}, // (172, 179) + {128, { 0, 0, 0}}, // (173, 179) + {128, { 0, 0, 0}}, // (174, 179) + {128, { 0, 0, 0}}, // (175, 179) + {128, { 0, 0, 0}}, // (176, 179) + {128, { 0, 0, 0}}, // (177, 179) + {128, { 0, 0, 0}}, // (178, 179) + {128, { 0, 0, 0}}, // (179, 179) +}; diff --git a/hw/gpio/Makefile.objs b/hw/gpio/Makefile.objs index 3cfc261f9b746..ba9adae836352 100644 --- a/hw/gpio/Makefile.objs +++ b/hw/gpio/Makefile.objs @@ -10,3 +10,4 @@ common-obj-$(CONFIG_IMX) += imx_gpio.o common-obj-$(CONFIG_RASPI) += bcm2835_gpio.o common-obj-$(CONFIG_NRF51_SOC) += nrf51_gpio.o common-obj-$(CONFIG_ASPEED_SOC) += aspeed_gpio.o +common-obj-$(CONFIG_STM32) += stm32_gpio.o stm32_afio.o stm32_exti.o diff --git a/hw/gpio/stm32_afio.c b/hw/gpio/stm32_afio.c new file mode 100644 index 0000000000000..6f2cc309a5450 --- /dev/null +++ b/hw/gpio/stm32_afio.c @@ -0,0 +1,308 @@ +/* + * STM32 Microcontroller AFIO (Alternate Function I/O) module + * + * Copyright (C) 2010 Andre Beckus + * + * Implementation based on ST Microelectronics "RM0008 Reference Manual Rev 10" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "hw/arm/stm32.h" +#include "qemu/bitops.h" +#include "hw/hw.h" +#include "hw/qdev-properties.h" +#include "qapi/error.h" + + + +/* DEFINITIONS */ + +#define AFIO_EVCR_OFFSET 0x00 + +#define AFIO_MAPR_OFFSET 0x04 +#define AFIO_MAPR_USART3_REMAP_START 4 +#define AFIO_MAPR_USART3_REMAP_MASK 0x00000030 +#define AFIO_MAPR_USART2_REMAP_BIT 3 +#define AFIO_MAPR_USART1_REMAP_BIT 2 + +#define AFIO_EXTICR_START 0x08 +#define AFIO_EXTICR_COUNT 4 + +#define AFIO_EXTICR1_OFFSET 0x08 +#define AFIO_EXTICR2_OFFSET 0x0c +#define AFIO_EXTICR3_OFFSET 0x10 +#define AFIO_EXTICR4_OFFSET 0x14 + +#define AFIO_EXTI_PER_CR 4 + +struct Stm32Afio { + /* Inherited */ + SysBusDevice busdev; + + /* Properties */ + void *stm32_rcc_prop; + void *stm32_exti_prop; + + /* Private */ + MemoryRegion iomem; + + Stm32Rcc *stm32_rcc; + + Stm32Gpio *gpio[STM32_GPIO_COUNT]; + Stm32Exti *exti; + + uint32_t + USART1_REMAP, + USART2_REMAP, + USART3_REMAP, + AFIO_MAPR, + AFIO_EXTICR[AFIO_EXTICR_COUNT]; +}; + +static void stm32_afio_instance_init(Object *obj); + + + + +/* REGISTER IMPLEMENTATION */ + +static uint32_t stm32_afio_AFIO_MAPR_read(Stm32Afio *s) +{ + return (s->USART1_REMAP << AFIO_MAPR_USART1_REMAP_BIT) | + (s->USART2_REMAP << AFIO_MAPR_USART2_REMAP_BIT) | + (s->USART3_REMAP << AFIO_MAPR_USART3_REMAP_START); +} + +static void stm32_afio_AFIO_MAPR_write(Stm32Afio *s, uint32_t new_value, + bool init) +{ + s->USART1_REMAP = extract32(s->AFIO_MAPR, AFIO_MAPR_USART1_REMAP_BIT, 1); + s->USART2_REMAP = extract32(s->AFIO_MAPR, AFIO_MAPR_USART2_REMAP_BIT, 1); + s->USART3_REMAP = (new_value & AFIO_MAPR_USART3_REMAP_MASK) >> AFIO_MAPR_USART3_REMAP_START; +} + +/* Write the External Interrupt Configuration Register. + * There are four of these registers, each of which configures + * four EXTI interrupt lines. Each line is represented by four bits, which + * indicate which GPIO the line is connected to. When the register is + * written, the changes are propagated to the EXTI module. + */ +static void stm32_afio_AFIO_EXTICR_write(Stm32Afio *s, unsigned index, + uint32_t new_value, bool init) +{ + int i; + unsigned exti_line; + unsigned start; + unsigned old_gpio_index, new_gpio_index; + + assert(index < AFIO_EXTICR_COUNT); + + /* Loop through the four EXTI lines controlled by this register. */ + for(i = 0; i < AFIO_EXTI_PER_CR; i++) { + /* For each line, notify the EXTI module. This shouldn't + * happen often, so we update all four, even if they all don't + * change. */ + exti_line = (index * AFIO_EXTI_PER_CR) + i; + start = i * 4; + + if(!init) { + old_gpio_index = (s->AFIO_EXTICR[index] >> start) & 0xf; + sysbus_connect_irq(SYS_BUS_DEVICE(s->gpio[old_gpio_index]), + exti_line, + NULL); + } + new_gpio_index = (new_value >> start) & 0xf; + sysbus_connect_irq(SYS_BUS_DEVICE(s->gpio[new_gpio_index]), + exti_line, + qdev_get_gpio_in(DEVICE(s->exti), exti_line)); + } + + s->AFIO_EXTICR[index] = new_value; +} + +static uint64_t stm32_afio_read(void *opaque, hwaddr offset, + unsigned size) +{ + Stm32Afio *s = (Stm32Afio *)opaque; + + stm32_rcc_check_periph_clk((Stm32Rcc *)s->stm32_rcc, STM32_AFIO_PERIPH); + + switch (offset) { + case AFIO_EVCR_OFFSET: + STM32_NOT_IMPL_REG(offset, size); + break; + case AFIO_MAPR_OFFSET: + return stm32_afio_AFIO_MAPR_read(s); + case AFIO_EXTICR1_OFFSET: + return s->AFIO_EXTICR[0]; + case AFIO_EXTICR2_OFFSET: + return s->AFIO_EXTICR[1]; + case AFIO_EXTICR3_OFFSET: + return s->AFIO_EXTICR[2]; + case AFIO_EXTICR4_OFFSET: + return s->AFIO_EXTICR[3]; + default: + STM32_BAD_REG(offset, size); + return 0; + } +} + +static void stm32_afio_write(void *opaque, hwaddr offset, + uint64_t value, unsigned size) +{ + Stm32Afio *s = (Stm32Afio *)opaque; + + stm32_rcc_check_periph_clk((Stm32Rcc *)s->stm32_rcc, STM32_AFIO_PERIPH); + + switch (offset) { + case AFIO_EVCR_OFFSET: + STM32_NOT_IMPL_REG(offset, size); + break; + case AFIO_MAPR_OFFSET: + stm32_afio_AFIO_MAPR_write(s, value, false); + break; + case AFIO_EXTICR1_OFFSET: + stm32_afio_AFIO_EXTICR_write(s, 0, value, false); + break; + case AFIO_EXTICR2_OFFSET: + stm32_afio_AFIO_EXTICR_write(s, 1, value, false); + break; + case AFIO_EXTICR3_OFFSET: + stm32_afio_AFIO_EXTICR_write(s, 2, value, false); + break; + case AFIO_EXTICR4_OFFSET: + stm32_afio_AFIO_EXTICR_write(s, 3, value, false); + break; + default: + STM32_BAD_REG(offset, size); + break; + } +} + +static const MemoryRegionOps stm32_afio_ops = { + .read = stm32_afio_read, + .write = stm32_afio_write, + .valid.min_access_size = 4, + .valid.max_access_size = 4, + .endianness = DEVICE_NATIVE_ENDIAN +}; + +static void stm32_afio_reset(DeviceState *dev) +{ + Stm32Afio *s = STM32_AFIO(dev); + + stm32_afio_AFIO_MAPR_write(s, 0x00000000, true); + stm32_afio_AFIO_EXTICR_write(s, 0, 0x00000000, true); + stm32_afio_AFIO_EXTICR_write(s, 1, 0x00000000, true); + stm32_afio_AFIO_EXTICR_write(s, 2, 0x00000000, true); + stm32_afio_AFIO_EXTICR_write(s, 3, 0x00000000, true); +} + + + + + + +/* PUBLIC FUNCTIONS */ + +uint32_t stm32_afio_get_periph_map(Stm32Afio *s, stm32_periph_t periph) +{ + switch(periph) { + case STM32_UART1: + return s->USART1_REMAP; + case STM32_UART2: + return s->USART2_REMAP; + case STM32_UART3: + return s->USART3_REMAP; + default: + hw_error("Invalid peripheral"); + break; + } +} + + + + +/* DEVICE INITIALIZATION */ + +static void stm32_afio_init(Object *obj) +{ + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + Stm32Afio *s = STM32_AFIO(obj); + + s->stm32_rcc = (Stm32Rcc *)s->stm32_rcc_prop; + + memory_region_init_io(&s->iomem, OBJECT(s), &stm32_afio_ops, s, + "afio", 0x03ff); + sysbus_init_mmio(dev, &s->iomem); + + stm32_afio_instance_init(obj); +} + +static Property stm32_afio_properties[] = { + DEFINE_PROP_PTR("stm32_rcc", Stm32Afio, stm32_rcc_prop), + DEFINE_PROP_END_OF_LIST() +}; + +static void add_gpio_link(Stm32Afio *s, int gpio_index, const char *link_name) +{ + object_property_add_link(OBJECT(s), link_name, TYPE_STM32_GPIO, + (Object **)&s->gpio[gpio_index], + object_property_allow_set_link, + OBJ_PROP_LINK_STRONG, &error_abort); +} + +void stm32_afio_instance_init(Object *obj) { + Stm32Afio *s = STM32_AFIO(obj); + + add_gpio_link(s, 0, "gpio[a]"); + add_gpio_link(s, 1, "gpio[b]"); + add_gpio_link(s, 2, "gpio[c]"); + add_gpio_link(s, 3, "gpio[d]"); + add_gpio_link(s, 4, "gpio[e]"); + add_gpio_link(s, 5, "gpio[f]"); + add_gpio_link(s, 6, "gpio[g]"); + + object_property_add_link(obj, "exti", TYPE_STM32_EXTI, + (Object **)&s->exti, + object_property_allow_set_link, + OBJ_PROP_LINK_STRONG, &error_abort); + +} + +static void stm32_afio_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); + + dc->reset = stm32_afio_reset; + device_class_set_props(dc, stm32_afio_properties); +} + +static TypeInfo stm32_afio_info = { + .name = TYPE_STM32_AFIO, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(Stm32Afio), + .instance_init = stm32_afio_init, + .class_init = stm32_afio_class_init +}; + +static void stm32_afio_register_types(void) +{ + type_register_static(&stm32_afio_info); +} + +type_init(stm32_afio_register_types) diff --git a/hw/gpio/stm32_exti.c b/hw/gpio/stm32_exti.c new file mode 100644 index 0000000000000..3ca752db16f12 --- /dev/null +++ b/hw/gpio/stm32_exti.c @@ -0,0 +1,333 @@ +/* + * STM32 Microcontroller EXTI (External Interrupt/Event Controller) module + * + * Copyright (C) 2010 Andre Beckus + * + * Implementation based on ST Microelectronics "RM0008 Reference Manual Rev 10" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "hw/arm/stm32.h" +#include "hw/arm/stm32f4xx.h" +#include "qemu/bitops.h" +#include "hw/irq.h" +#include "hw/hw.h" + + + + +/* DEFINITIONS*/ + +#define EXTI_IMR_OFFSET 0x00 + +#define EXTI_EMR_OFFSET 0x04 + +#define EXTI_RTSR_OFFSET 0x08 + +#define EXTI_FTSR_OFFSET 0x0c + +#define EXTI_SWIER_OFFSET 0x10 + +#define EXTI_PR_OFFSET 0x14 + +/* There are 20 lines for CL devices. Non-CL devices have only 19, but it + * doesn't hurt to handle the maximum possible. */ +#define EXTI_LINE_COUNT 20 + +/* The number of IRQ sources from the EXTI controller */ +#define EXTI_IRQ_COUNT 14 + + +struct Stm32Exti { + /* Inherited */ + SysBusDevice busdev; + + /* Private */ + MemoryRegion iomem; + + uint32_t + EXTI_IMR, + EXTI_RTSR, + EXTI_FTSR, + EXTI_SWIER, + EXTI_PR; + + qemu_irq irq[EXTI_IRQ_COUNT]; +}; + +static void stm32_exti_change_EXTI_PR_bit(Stm32Exti *s, unsigned pos, + unsigned new_bit_value); + + + +/* HELPER FUNCTIONS */ + +/* Call when the EXTI shouldbe tri */ +static void stm32_exti_trigger(Stm32Exti *s, int line) +{ + /* Make sure the interrupt for this EXTI line has been enabled. */ + if(s->EXTI_IMR & BIT(line)) { + /* Set the Pending flag for this line, which will trigger the interrupt + * (if the flag isn't already set). */ + stm32_exti_change_EXTI_PR_bit(s, line, 1); + } +} + +/* We will assume that this handler will only be called if the pin actually + * changed state. */ +static void stm32_exti_gpio_in_handler(void *opaque, int n, int level) +{ + Stm32Exti *s = (Stm32Exti *)opaque; + unsigned pin = n; + + assert(pin < STM32_GPIO_PIN_COUNT); + + /* Check the level - if it is rising, then trigger an interrupt if the + * corresponding Rising Trigger Selection Register flag is set. Otherwise, + * trigger if the Falling Trigger Selection Register flag is set. + */ + if((level && (s->EXTI_RTSR & BIT(pin))) || + (!level && (s->EXTI_FTSR & BIT(pin)))) { + stm32_exti_trigger(s, pin); + } +} + + + + +/* REGISTER IMPLEMENTATION */ + +/* Update a Trigger Selection Register (both the Rising and Falling TSR + * registers are handled by this routine). + */ +static void update_TSR_bit(Stm32Exti *s, uint32_t *tsr_register, unsigned pos, + unsigned new_bit_value) +{ + assert((new_bit_value == 0) || (new_bit_value == 1)); + assert(pos < EXTI_LINE_COUNT); + + if(new_bit_value != extract32(*tsr_register, pos, 1)) { + /* According to the documentation, the Pending register is cleared when + * the "sensitivity of the edge detector changes. Is this right??? */ + stm32_exti_change_EXTI_PR_bit(s, pos, 0); + } + *tsr_register = deposit32(*tsr_register, pos, 1, new_bit_value); +} + +/* Update the Pending Register. This will trigger an interrupt if a bit is + * set. + */ +static void stm32_exti_change_EXTI_PR_bit(Stm32Exti *s, unsigned pos, + unsigned new_bit_value) +{ + unsigned old_bit_value; + + assert((new_bit_value == 0) || (new_bit_value == 1)); + assert(pos < EXTI_LINE_COUNT); + + old_bit_value = extract32(s->EXTI_PR, pos, 1); + + /* Only continue if the PR bit is actually changing value. */ + if(new_bit_value != old_bit_value) { + /* If the bit is being reset, the corresponding Software Interrupt Event + * Register bit is automatically reset. + */ + if(!new_bit_value) { + s->EXTI_SWIER &= ~BIT(pos); + } + + /* Update the IRQ for this EXTI line. Some lines share the same + * NVIC IRQ. + */ + if(pos <= 4) { + /* EXTI0 - EXTI4 each have their own NVIC IRQ */ + qemu_set_irq(s->irq[pos], new_bit_value); + } else if(pos <= 9) { + /* EXTI5 - EXTI9 share an NVIC IRQ */ + qemu_set_irq(s->irq[5], new_bit_value); + } else if(pos <= 15) { + /* EXTI10 - EXTI15 share an NVIC IRQ */ + qemu_set_irq(s->irq[6], new_bit_value); + } else if(pos == 16) { + /* PVD IRQ */ + qemu_set_irq(s->irq[7], new_bit_value); + } else if(pos == 17) { + /* RTCAlarm IRQ */ + qemu_set_irq(s->irq[8], new_bit_value); + } else if(pos == 18) { + /* OTG_FS_WKUP IRQ */ + qemu_set_irq(s->irq[9], new_bit_value); + } else { + assert(false); + } + + /* Update the register. */ + s->EXTI_PR = deposit32(s->EXTI_PR, pos, 1, new_bit_value); + } +} + +static uint64_t stm32_exti_read(void *opaque, hwaddr offset, + unsigned size) +{ + Stm32Exti *s = (Stm32Exti *)opaque; + + assert(size == 4); + + switch (offset) { + case EXTI_IMR_OFFSET: + return s->EXTI_IMR; + case EXTI_EMR_OFFSET: + /* Do nothing, events are not implemented yet. */ + return 0; + case EXTI_RTSR_OFFSET: + return s->EXTI_RTSR; + case EXTI_FTSR_OFFSET: + return s->EXTI_FTSR; + case EXTI_SWIER_OFFSET: + return s->EXTI_SWIER; + case EXTI_PR_OFFSET: + return s->EXTI_PR; + default: + STM32_BAD_REG(offset, size); + return 0; + } +} + +static void stm32_exti_write(void *opaque, hwaddr offset, + uint64_t value, unsigned size) +{ + Stm32Exti *s = (Stm32Exti *)opaque; + int pos, bit_value; + + assert(size == 4); + + if(offset <= EXTI_EMR_OFFSET) { + switch (offset) { + case EXTI_IMR_OFFSET: + s->EXTI_IMR = value; + break; + case EXTI_EMR_OFFSET: + /* Do nothing, events are not implemented yet. + * But we don't want to throw an error. */ + break; + default: + STM32_BAD_REG(offset, size); + break; + } + } else { + /* These registers all contain one bit per EXTI line. We will loop + * through each line and then update each bit in the appropriate + * register. + */ + for(pos = 0; pos < EXTI_LINE_COUNT; pos++) { + bit_value = extract32(value, pos, 1); + + switch (offset) { + case EXTI_RTSR_OFFSET: + update_TSR_bit(s, &(s->EXTI_RTSR), pos, bit_value); + break; + case EXTI_FTSR_OFFSET: + update_TSR_bit(s, &(s->EXTI_FTSR), pos, bit_value); + break; + case EXTI_SWIER_OFFSET: + /* If the Software Interrupt Event Register is changed + * from 0 to 1, trigger an interrupt. Changing the + * bit to 0 does nothing. */ + if(bit_value == 1) { + if((s->EXTI_SWIER & BIT(pos)) == 0) { + s->EXTI_SWIER |= BIT(pos); + stm32_exti_trigger(s, pos); + } + } + break; + case EXTI_PR_OFFSET: + /* When a 1 is written to a PR bit, it actually clears the + * PR bit. */ + if(bit_value == 1) { + stm32_exti_change_EXTI_PR_bit(s, pos, 0); + } + break; + default: + STM32_BAD_REG(offset, size); + break; + } + } + } +} + +static const MemoryRegionOps stm32_exti_ops = { + .read = stm32_exti_read, + .write = stm32_exti_write, + .valid.min_access_size = 4, + .valid.max_access_size = 4, + .endianness = DEVICE_NATIVE_ENDIAN +}; + +static void stm32_exti_reset(DeviceState *dev) +{ + Stm32Exti *s = STM32_EXTI(dev); + + s->EXTI_IMR = 0x00000000; + s->EXTI_RTSR = 0x00000000; + s->EXTI_FTSR = 0x00000000; + s->EXTI_SWIER = 0x00000000; + s->EXTI_PR = 0x00000000; +} + + +/* DEVICE INITIALIZATION */ + +static void stm32_exti_init(Object *obj) +{ + int i; + + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + Stm32Exti *s = STM32_EXTI(dev); + + memory_region_init_io(&s->iomem, OBJECT(s), &stm32_exti_ops, s, + "exti", 0x03ff); + sysbus_init_mmio(dev, &s->iomem); + + for(i = 0; i < EXTI_IRQ_COUNT; i++) { + sysbus_init_irq(dev, &s->irq[i]); + } + + /* Create the handlers to handle GPIO input pin changes. */ + qdev_init_gpio_in(DEVICE(dev), stm32_exti_gpio_in_handler, STM32_GPIO_PIN_COUNT); +} + +static void stm32_exti_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); + + dc->reset = stm32_exti_reset; +} + +static TypeInfo stm32_exti_info = { + .name = TYPE_STM32_EXTI_ALT, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(Stm32Exti), + .instance_init = stm32_exti_init, + .class_init = stm32_exti_class_init +}; + +static void stm32_exti_register_types(void) +{ + type_register_static(&stm32_exti_info); +} + +type_init(stm32_exti_register_types) diff --git a/hw/gpio/stm32_gpio.c b/hw/gpio/stm32_gpio.c new file mode 100644 index 0000000000000..e20e73af3a87b --- /dev/null +++ b/hw/gpio/stm32_gpio.c @@ -0,0 +1,361 @@ +/* + * STM32 Microcontroller GPIO (General Purpose I/O) module + * + * Copyright (C) 2010 Andre Beckus + * + * Source code based on pl061.c + * Implementation based on ST Microelectronics "RM0008 Reference Manual Rev 10" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "hw/sysbus.h" +#include "hw/arm/stm32.h" +#include "qemu/bitops.h" +#include "hw/qdev-properties.h" +#include "hw/irq.h" +#include "hw/hw.h" + + + + +/* DEFINITIONS*/ + +#define GPIOx_CRL_OFFSET 0x00 +#define GPIOx_CRH_OFFSET 0x04 +#define GPIOx_IDR_OFFSET 0x08 +#define GPIOx_ODR_OFFSET 0x0c +#define GPIOx_BSRR_OFFSET 0x10 +#define GPIOx_BRR_OFFSET 0x14 +#define GPIOx_LCKR_OFFSET 0x18 + +struct Stm32Gpio { + /* Inherited */ + SysBusDevice busdev; + + /* Properties */ + stm32_periph_t periph; + void *stm32_rcc_prop; + + /* Private */ + MemoryRegion iomem; + + Stm32Rcc *stm32_rcc; + + + uint32_t GPIOx_CRy[2]; /* CRL = 0, CRH = 1 */ + uint32_t GPIOx_ODR; + + uint16_t in; + uint16_t dir_mask; /* input = 0, output = 1 */ + + /* IRQs used to communicate with the machine implementation. + * There is one IRQ for each pin. Note that for pins configured + * as inputs, the output IRQ state has no meaning. Perhaps + * the output should be updated to match the input in this case.... + */ + qemu_irq out_irq[STM32_GPIO_PIN_COUNT]; + + /* IRQs which relay input pin changes to other STM32 peripherals */ + qemu_irq in_irq[STM32_GPIO_PIN_COUNT]; +}; + + + +/* CALLBACKs */ + +/* Trigger fired when a GPIO input pin changes state (based + * on an external stimulus from the machine). + */ +static void stm32_gpio_in_trigger(void *opaque, int irq, int level) +{ + Stm32Gpio *s = opaque; + unsigned pin = irq; + + assert(pin < STM32_GPIO_PIN_COUNT); + + /* Update internal pin state. */ + s->in |= (level ? 1 : 0) << pin; + + /* Propagate the trigger to the input IRQs. */ + qemu_set_irq(s->in_irq[pin], level); +} + + + +/* HELPER FUNCTIONS */ + +/* Gets the four configuration bits for the pin from the CRL or CRH + * register. + */ +static uint8_t stm32_gpio_get_pin_config(Stm32Gpio *s, unsigned pin) { + /* Simplify extract logic by combining both 32 bit regiters into + * one 64 bit value. + */ + uint64_t cr_64 = ((uint64_t)s->GPIOx_CRy[1] << 32) | + s->GPIOx_CRy[0]; + return extract64(cr_64, pin * 4, 4); +} + + + + + +/* REGISTER IMPLEMENTATION */ + +/* Update the CRL or CRH Configuration Register */ +static void stm32_gpio_update_dir(Stm32Gpio *s, int cr_index) +{ + unsigned start_pin, pin, pin_dir; + + assert((cr_index == 0) || (cr_index == 1)); + + /* Update the direction mask */ + start_pin = cr_index * 8; + for(pin=start_pin; pin < start_pin + 8; pin++) { + pin_dir = stm32_gpio_get_mode_bits(s, pin); + /* If the mode is 0, the pin is input. Otherwise, it + * is output. + */ + s->dir_mask |= (pin_dir ? 1 : 0) << pin; + } +} + +/* Write the Output Data Register. + * Propagates the changes to the output IRQs. + * Perhaps we should also update the input to match the output for + * pins configured as outputs... */ +static void stm32_gpio_GPIOx_ODR_write(Stm32Gpio *s, uint32_t new_value) +{ + uint32_t old_value; + uint16_t changed, changed_out; + unsigned pin; + + old_value = s->GPIOx_ODR; + + /* Update register value. Per documentation, the upper 16 bits + * always read as 0. */ + s->GPIOx_ODR = new_value & 0x0000ffff; + + /* Get pins that changed value */ + changed = old_value ^ new_value; + + /* Get changed pins that are outputs - we will not touch input pins */ + changed_out = changed & s->dir_mask; + + if (changed_out) { + for (pin = 0; pin < STM32_GPIO_PIN_COUNT; pin++) { + /* If the value of this pin has changed, then update + * the output IRQ. + */ + if (changed_out & BIT(pin)) { + qemu_set_irq( + /* The "irq_intercept_out" command in the qtest + framework overwrites the out IRQ array in the + NamedGPIOList structure (via the + qemu_irq_intercept_out procedure). So we need + to reference this structure directly (rather than + use our local s->out_irq array) in order for + the unit tests to work. This is something of a hack, + but I don't have a solution yet. */ + s->busdev.parent_obj.gpios.lh_first->out[pin], + (s->GPIOx_ODR & BIT(pin)) ? 1 : 0); + } + } + } +} + +static uint64_t stm32_gpio_read(void *opaque, hwaddr offset, + unsigned size) +{ + Stm32Gpio *s = (Stm32Gpio *)opaque; + + assert(size == 4); + + switch (offset) { + case GPIOx_CRL_OFFSET: + return s->GPIOx_CRy[0]; + case GPIOx_CRH_OFFSET: + return s->GPIOx_CRy[1]; + case GPIOx_IDR_OFFSET: + return s->in; + case GPIOx_ODR_OFFSET: + return s->GPIOx_ODR; + case GPIOx_BSRR_OFFSET: + STM32_WARN_WO_REG(offset); + return 0; + case GPIOx_BRR_OFFSET: + STM32_WARN_WO_REG(offset); + return 0; + case GPIOx_LCKR_OFFSET: + /* Locking is not yet implemented */ + return 0; + default: + STM32_BAD_REG(offset, size); + return 0; + } +} + +static void stm32_gpio_write(void *opaque, hwaddr offset, + uint64_t value, unsigned size) +{ + uint32_t set_mask, reset_mask; + Stm32Gpio *s = (Stm32Gpio *)opaque; + + assert(size == 4); + + stm32_rcc_check_periph_clk((Stm32Rcc *)s->stm32_rcc, s->periph); + + switch (offset) { + case GPIOx_CRL_OFFSET: + s->GPIOx_CRy[0] = value; + stm32_gpio_update_dir(s, 0); + break; + case GPIOx_CRH_OFFSET: + s->GPIOx_CRy[1] = value; + stm32_gpio_update_dir(s, 1); + break; + case GPIOx_IDR_OFFSET: + STM32_WARN_RO_REG(offset); + break; + case GPIOx_ODR_OFFSET: + stm32_gpio_GPIOx_ODR_write(s, value); + break; + case GPIOx_BSRR_OFFSET: + /* Setting a bit sets or resets the corresponding bit in the output + * register. The lower 16 bits perform resets, and the upper 16 + * bits perform sets. Register is write-only and so does not need + * to store a value. Sets take priority over resets, so we do + * resets first. + */ + set_mask = value & 0x0000ffff; + reset_mask = ~(value >> 16) & 0x0000ffff; + stm32_gpio_GPIOx_ODR_write(s, + (s->GPIOx_ODR & reset_mask) | set_mask); + break; + case GPIOx_BRR_OFFSET: + /* Setting a bit resets the corresponding bit in the output + * register. Register is write-only and so does not need to store + * a value. */ + reset_mask = ~value & 0x0000ffff; + stm32_gpio_GPIOx_ODR_write(s, s->GPIOx_ODR & reset_mask); + break; + case GPIOx_LCKR_OFFSET: + /* Locking is not implemented */ + STM32_NOT_IMPL_REG(offset, size); + break; + default: + STM32_BAD_REG(offset, size); + break; + } +} + +static const MemoryRegionOps stm32_gpio_ops = { + .read = stm32_gpio_read, + .write = stm32_gpio_write, + .valid.min_access_size = 4, + .valid.max_access_size = 4, + .endianness = DEVICE_NATIVE_ENDIAN +}; + +static void stm32_gpio_reset(DeviceState *dev) +{ + int pin; + Stm32Gpio *s = STM32_GPIO(dev); + + s->GPIOx_CRy[0] = 0x44444444; + s->GPIOx_CRy[1] = 0x44444444; + s->GPIOx_ODR = 0; + s->dir_mask = 0; /* input = 0, output = 1 */ + + for(pin = 0; pin < STM32_GPIO_PIN_COUNT; pin++) { + qemu_irq_lower(s->out_irq[pin]); + } + + /* Leave input state as it is - only outputs and config are affected + * by the GPIO reset. */ +} + + + + + + +/* PUBLIC FUNCTIONS */ + +uint8_t stm32_gpio_get_config_bits(Stm32Gpio *s, unsigned pin) { + return (stm32_gpio_get_pin_config(s, pin) >> 2) & 0x3; +} + +uint8_t stm32_gpio_get_mode_bits(Stm32Gpio *s, unsigned pin) { + return stm32_gpio_get_pin_config(s, pin) & 0x3; +} + + + + + + +/* DEVICE INITIALIZATION */ + +static void stm32_gpio_init(Object *obj) +{ + unsigned pin; + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + Stm32Gpio *s = STM32_GPIO(obj); + + s->stm32_rcc = (Stm32Rcc *)s->stm32_rcc_prop; + + memory_region_init_io(&s->iomem, OBJECT(s), &stm32_gpio_ops, s, + "gpio", 0x03ff); + sysbus_init_mmio(dev, &s->iomem); + + qdev_init_gpio_in(DEVICE(dev), stm32_gpio_in_trigger, STM32_GPIO_PIN_COUNT); + qdev_init_gpio_out(DEVICE(dev), s->out_irq, STM32_GPIO_PIN_COUNT); + + for(pin = 0; pin < STM32_GPIO_PIN_COUNT; pin++) { + sysbus_init_irq(dev, &s->in_irq[pin]); + } +} + +static Property stm32_gpio_properties[] = { + DEFINE_PROP_PERIPH_T("periph", Stm32Gpio, periph, STM32_PERIPH_UNDEFINED), + DEFINE_PROP_PTR("stm32_rcc", Stm32Gpio, stm32_rcc_prop), + DEFINE_PROP_END_OF_LIST() +}; + +static void stm32_gpio_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); + + dc->reset = stm32_gpio_reset; + device_class_set_props(dc, stm32_gpio_properties); +} + +static TypeInfo stm32_gpio_info = { + .name = TYPE_STM32_GPIO, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(Stm32Gpio), + .instance_init = stm32_gpio_init, + .class_init = stm32_gpio_class_init +}; + +static void stm32_gpio_register_types(void) +{ + type_register_static(&stm32_gpio_info); +} + +type_init(stm32_gpio_register_types) diff --git a/hw/ssi/Makefile.objs b/hw/ssi/Makefile.objs index 07a85f1967a80..49480ed662242 100644 --- a/hw/ssi/Makefile.objs +++ b/hw/ssi/Makefile.objs @@ -8,3 +8,6 @@ common-obj-$(CONFIG_MSF2) += mss-spi.o common-obj-$(CONFIG_OMAP) += omap_spi.o common-obj-$(CONFIG_IMX) += imx_spi.o + +common-obj-y += stm32f2xx_spi_pbl.o +common-obj-y += stm32f412_qspi.o diff --git a/hw/ssi/stm32f2xx_spi_pbl.c b/hw/ssi/stm32f2xx_spi_pbl.c new file mode 100644 index 0000000000000..24aa3af63caeb --- /dev/null +++ b/hw/ssi/stm32f2xx_spi_pbl.c @@ -0,0 +1,224 @@ +/*- + * Copyright (c) 2013 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +/* + * QEMU model of the stm32f2xx SPI controller. + */ + +#include "qemu/osdep.h" +#include "qemu/log.h" +#include "hw/sysbus.h" +#include "hw/arm/stm32.h" +#include "hw/ssi/ssi.h" +#include "hw/qdev-properties.h" +#include "hw/hw.h" + +#define R_CR1 (0x00 / 4) +#define R_CR1_DFF (1 << 11) +#define R_CR1_LSBFIRST (1 << 7) +#define R_CR1_SPE (1 << 6) +#define R_CR2 (0x04 / 4) + +#define R_SR (0x08 / 4) +#define R_SR_RESET 0x0002 +#define R_SR_MASK 0x01FF +#define R_SR_OVR (1 << 6) +#define R_SR_TXE (1 << 1) +#define R_SR_RXNE (1 << 0) + +#define R_DR (0x0C / 4) +#define R_CRCPR (0x10 / 4) +#define R_CRCPR_RESET 0x0007 +#define R_RXCRCR (0x14 / 4) +#define R_TXCRCR (0x18 / 4) +#define R_I2SCFGR (0x1C / 4) +#define R_I2SPR (0x20 / 4) +#define R_I2SPR_RESET 0x0002 +#define R_MAX (0x24 / 4) + +typedef struct stm32f2xx_spi_s { + SysBusDevice busdev; + MemoryRegion iomem; + qemu_irq irq; + + SSIBus *spi; + + stm32_periph_t periph; + + int32_t rx; + int rx_full; + uint16_t regs[R_MAX]; +} Stm32Spi; + +static uint64_t +stm32f2xx_spi_read(void *arg, hwaddr offset, unsigned size) +{ + Stm32Spi *s = arg; + uint16_t r = UINT16_MAX; + + if (!(size == 1 || size == 2 || size == 4 || (offset & 0x3) != 0)) { + STM32_BAD_REG(offset, size); + } + offset >>= 2; + if (offset < R_MAX) { + r = s->regs[offset]; + } else { + stm32_hw_warn("Out of range SPI write, offset 0x%x", (unsigned)offset<<2); + } + switch (offset) { + case R_DR: + s->regs[R_SR] &= ~R_SR_RXNE; + } + return r; +} + +static uint8_t +bitswap(uint8_t val) +{ + return ((val * 0x0802LU & 0x22110LU) | (val * 0x8020LU & 0x88440LU)) * 0x10101LU >> 16; +} + +static void +stm32f2xx_spi_write(void *arg, hwaddr addr, uint64_t data, unsigned size) +{ + struct stm32f2xx_spi_s *s = (struct stm32f2xx_spi_s *)arg; + int offset = addr & 0x3; + + /* SPI registers are all at most 16 bits wide */ + data &= 0xFFFFF; + addr >>= 2; + + switch (size) { + case 1: + data = (s->regs[addr] & ~(0xff << (offset * 8))) | data << (offset * 8); + break; + case 2: + data = (s->regs[addr] & ~(0xffff << (offset * 8))) | data << (offset * 8); + break; + case 4: + break; + default: + abort(); + } + + switch (addr) { + case R_CR1: + if ((data & R_CR1_DFF) != s->regs[R_CR1] && (s->regs[R_CR1] & R_CR1_SPE) != 0) + qemu_log_mask(LOG_GUEST_ERROR, "cannot change DFF with SPE set\n"); + if (data & R_CR1_DFF) + qemu_log_mask(LOG_UNIMP, "f2xx DFF 16-bit mode not implemented\n"); + s->regs[R_CR1] = data; + break; + case R_DR: + s->regs[R_SR] &= ~R_SR_TXE; + if (s->regs[R_SR] & R_SR_RXNE) { + s->regs[R_SR] |= R_SR_OVR; + } + if (s->regs[R_CR1] & R_CR1_LSBFIRST) { + s->regs[R_DR] = bitswap(ssi_transfer(s->spi, bitswap(data))); + } else { + s->regs[R_DR] = ssi_transfer(s->spi, data); + } + + s->regs[R_SR] |= R_SR_RXNE; + s->regs[R_SR] |= R_SR_TXE; + break; + default: + if (addr < ARRAY_SIZE(s->regs)) { + s->regs[addr] = data; + } else { + STM32_BAD_REG(addr, size); + } + } +} + +static const MemoryRegionOps stm32f2xx_spi_ops = { + .read = stm32f2xx_spi_read, + .write = stm32f2xx_spi_write, + .endianness = DEVICE_NATIVE_ENDIAN +}; + +static void +stm32f2xx_spi_reset(DeviceState *dev) +{ + struct stm32f2xx_spi_s *s = STM32F2XX_SPI(dev); + + s->regs[R_SR] = R_SR_RESET; + switch (s->periph) { + case 0: + break; + case 1: + break; + default: + break; + } +} + +static void +stm32f2xx_spi_init(Object *obj) +{ + struct stm32f2xx_spi_s *s = STM32F2XX_SPI(obj); + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + + memory_region_init_io(&s->iomem, NULL, &stm32f2xx_spi_ops, s, "spi", 0x3ff); + sysbus_init_mmio(dev, &s->iomem); + sysbus_init_irq(dev, &s->irq); + s->spi = ssi_create_bus(DEVICE(dev), "ssi"); +} + + +static Property stm32f2xx_spi_properties[] = { + DEFINE_PROP_INT32("periph", struct stm32f2xx_spi_s, periph, -1), + DEFINE_PROP_END_OF_LIST() +}; + +static void +stm32f2xx_spi_class_init(ObjectClass *c, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(c); + + dc->reset = stm32f2xx_spi_reset; + + device_class_set_props(dc, stm32f2xx_spi_properties); +} + +static const TypeInfo stm32f2xx_spi_info = { + .name = TYPE_STM32F2XX_SPI, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(struct stm32f2xx_spi_s), + .instance_init = stm32f2xx_spi_init, + .class_init = stm32f2xx_spi_class_init +}; + +static void +stm32f2xx_spi_register_types(void) +{ + type_register_static(&stm32f2xx_spi_info); +} + +type_init(stm32f2xx_spi_register_types) + +/* + * + */ +/* + * Serial peripheral interface (SPI) RM0033 section 25 + */ diff --git a/hw/ssi/stm32f412_qspi.c b/hw/ssi/stm32f412_qspi.c new file mode 100644 index 0000000000000..de86a1d4144eb --- /dev/null +++ b/hw/ssi/stm32f412_qspi.c @@ -0,0 +1,347 @@ +#include "qemu/osdep.h" +#include "hw/sysbus.h" +#include "hw/arm/stm32.h" +#include "hw/irq.h" +#include "hw/qdev-properties.h" +#include "hw/ssi/ssi.h" + +#ifndef STM32F412_QSPI_ERR_DEBUG +#define STM32F412_QSPI_ERR_DEBUG 0 +#endif + +// The usleep() helps MacOS stdout from freezing when printing a lot +#define DB_PRINT_L(level, ...) do { \ + if (STM32F412_QSPI_ERR_DEBUG > (level)) { \ + fprintf(stderr, "%d: %s: ", level, __func__); \ + fprintf(stderr, ## __VA_ARGS__); \ + fprintf(stderr, "\n"); \ + usleep(1000); \ + } \ +} while (0); + +// Control +#define R_CR (0x00 / 4) +#define CR_MATCH_MODE_MASK (0x01 << 23) + +// Device configure +#define R_DCR (0x04 / 4) + +// Status +#define R_SR (0x08 / 4) +#define R_SR_TEF (1 << 0) +#define R_SR_TCF (1 << 1) +#define R_SR_FTF (1 << 2) +#define R_SR_SMF (1 << 3) +#define R_SR_TOF (1 << 4) +#define R_SR_BSY (1 << 5) + +// Flag clear +#define R_FCR (0x0c / 4) +#define R_FCR_CTOF (1 << 4) +#define R_FCR_CSMF (1 << 3) +#define R_FCR_CTCF (1 << 1) +#define R_FCR_CTEF (1 << 0) + +// Data length +#define R_DLR (0x10 / 4) + +// Communication config +#define R_CCR (0x14 / 4) +#define CCR_INSTR_MASK (0xff << 0) +#define CCR_IMODE_MASK (0x3 << 8) +#define CCR_ADMODE_MASK (0x3 << 10) +#define CCR_ADSIZE_MASK (0x3 << 12) +#define CCR_MODE_MASK (0x3 << 26) + +#define CCR_IMODE_NONE (0x0 << 8) +#define CCR_IMODE_ONELINE (0x1 << 8) +#define CCR_IMODE_TWOLINE (0x2 << 8) +#define CCR_IMODE_FOURLINE (0x3 << 8) + +#define CCR_ADMODE_NONE (0x0 << 10) +#define CCR_ADMODE_ONELINE (0x1 << 10) +#define CCR_ADMODE_TWOLINE (0x2 << 10) +#define CCR_ADMODE_FOURLINE (0x3 << 10) + +#define CCR_ADSIZE_8 (0x0 << 12) +#define CCR_ADSIZE_16 (0x1 << 12) +#define CCR_ADSIZE_24 (0x2 << 12) +#define CCR_ADSIZE_32 (0x3 << 12) + +#define CCR_MODE_INDIRECT_WRITE (0x00 << 26) +#define CCR_MODE_INDIRECT_READ (0x01 << 26) +#define CCR_MODE_AUTOMATIC_POLL (0x2 << 26) +#define CCR_MODE_MEMORY_MAPPED (0x3 << 26) + +// Address +#define R_AR (0x18 / 4) + +// Alternate bytes +#define R_ABR (0x1c / 4) + +// Data +#define R_DR (0x20 / 4) + +// Polling status mask +#define R_PSMKR (0x24 / 4) + +// Polling status match +#define R_PSMAR (0x28 / 4) + +// Polling interval +#define R_PIR (0x2c / 4) + +// Low power timeout +#define R_LPTR (0x30 / 4) + +#define R_MAX (0x34 / 4) + +typedef enum { + STATE_IDLE, + STATE_WRITE, + STATE_READ, + STATE_READ_WHOAMI, +} Stm32f412State; + +typedef enum { + CS_STATE_LOW = 0, + CS_STATE_HIGH = 1, +} CsState; + +typedef struct stm32f412_qspi_s { + SysBusDevice busdev; + MemoryRegion iomem; + qemu_irq irq; + + SSIBus *qspi; + + uint32_t regs[R_MAX]; + + qemu_irq cs_irq; + CsState cs_state; + + int64_t tx_remaining; +} Stm32f412Qspi; + +static uint32_t +stm32f412_auto_poll(Stm32f412Qspi *s, uint8_t reg) +{ + bool set; + + bool and_match = (s->regs[R_CR] & CR_MATCH_MODE_MASK) == 0; + uint32_t match = s->regs[R_PSMAR]; + uint32_t mask = s->regs[R_PSMKR]; + if (and_match) { + // All bits in match need to be set after mask + set = (reg & mask) == match; + } else { + // Any bits in match can be set after mask + set = ((reg & mask) & match) != 0; + } + DB_PRINT_L(1, "Auto Poll %s", set ? "Success" : "Fail"); + return set; +} + +static bool +stm32f412_in_CCR_mode(Stm32f412Qspi *s, uint32_t mode) +{ + return (s->regs[R_CCR] & CCR_MODE_MASK) == mode; +} + +static void +stm32f412_set_cs(Stm32f412Qspi *s, CsState state) +{ + if (s->cs_state != state) { + qemu_set_irq(s->cs_irq, state == CS_STATE_HIGH); + s->cs_state = state; + } +} + +static uint64_t +stm32f412_qspi_read(void *arg, hwaddr offset, unsigned size) +{ + Stm32f412Qspi *s = arg; + uint32_t r = UINT32_MAX; + + offset >>= 2; + + if (offset < R_MAX) { + switch (offset) { + case R_DR: + DB_PRINT_L(1, "Read %u of %"PRIi64" remaining", size, s->tx_remaining); + r = ssi_transfer(s->qspi, 0); + s->tx_remaining -= size; + break; + case R_SR: { + if (stm32f412_in_CCR_mode(s, CCR_MODE_AUTOMATIC_POLL)) { + DB_PRINT_L(2, "POLL STATUS REG. Command? %d", s->cs_state == CS_STATE_LOW); + stm32f412_set_cs(s, CS_STATE_LOW); + ssi_transfer(s->qspi, s->regs[R_CCR] & CCR_INSTR_MASK); + uint8_t reg = ssi_transfer(s->qspi, 0); + stm32f412_set_cs(s, CS_STATE_HIGH); + DB_PRINT_L(2, "REG: 0x%"PRIx8, reg); + if (stm32f412_auto_poll(s, reg)) { + // Success, set the SMF bit and exit auto poll mode + s->regs[R_SR] |= R_SR_SMF; + s->regs[R_CCR] &= ~CCR_MODE_AUTOMATIC_POLL; + } + } + r = s->regs[R_SR]; + break; + } + default: + r = s->regs[offset]; + break; + } + } else { + stm32_hw_warn("Out of range QSPI register 0x%x", (unsigned)offset); + } + + if (s->tx_remaining <= 0) { + stm32f412_set_cs(s, CS_STATE_HIGH); + s->regs[R_SR] &= ~R_SR_TCF; + s->regs[R_SR] &= ~R_SR_BSY; + } + + return r; +} + +static void +stm32f412_CCR_write(Stm32f412Qspi *s, uint32_t CCR, unsigned size) +{ + if ((CCR & CCR_ADMODE_MASK) != CCR_ADMODE_NONE) { + uint8_t addrsize = ((CCR & CCR_ADSIZE_MASK) >> 12) + 1; + DB_PRINT_L(1, "Adding %"PRIu8" for address", addrsize); + s->tx_remaining += addrsize; + } + if ((CCR & CCR_MODE_MASK) != CCR_MODE_AUTOMATIC_POLL) { + if ((CCR & CCR_IMODE_MASK) != CCR_IMODE_NONE) { + DB_PRINT_L(1, "Command 0x%x to tx %"PRIi64" B\n", CCR & CCR_INSTR_MASK, s->tx_remaining); + stm32f412_set_cs(s, CS_STATE_LOW); + ssi_transfer(s->qspi, CCR & CCR_INSTR_MASK); + } + } + s->regs[R_CCR] = CCR; +} + +static void +stm32f412_qspi_xfer(Stm32f412Qspi *s, uint32_t data, unsigned size) +{ + for (int i = 0; i < size; ++i) { + uint8_t val = (data >> (i*8)) & 0xff; + ssi_transfer(s->qspi, val); + } +} + +static void +stm32f412_qspi_write(void *arg, hwaddr addr, uint64_t data, unsigned size) +{ + Stm32f412Qspi *s = arg; + + addr >>= 2; + + switch (addr) { + case R_FCR: // Flag clear register + s->regs[R_SR] &= ~(data); + break; + case R_CCR: // Send command + stm32f412_CCR_write(s, data, size); + break; + case R_AR: // Send address + s->regs[R_AR] = data; + uint8_t addrsize = ((s->regs[R_CCR] & CCR_ADSIZE_MASK) >> 12) + 1; + stm32f412_qspi_xfer(s, data, addrsize); + s->tx_remaining -= addrsize; + break; + case R_DR: // Data register + DB_PRINT_L(2, "Write %u of %"PRIi64" remaining\n", size, s->tx_remaining); + s->regs[R_DR] = 0; + stm32f412_qspi_xfer(s, data, size); + s->tx_remaining -= size; + break; + case R_DLR: + s->tx_remaining = data + 1; + DB_PRINT_L(1, "Set DLR to %"PRIu64" + 1", data); + break; + case R_CR: + case R_DCR: + case R_SR: + case R_ABR: + case R_PSMKR: + case R_PSMAR: + case R_PIR: + case R_LPTR: + case R_MAX: + default: + s->regs[addr] = data; + break; + } + + if (s->tx_remaining <= 0) { + stm32f412_set_cs(s, CS_STATE_HIGH); + } + + s->regs[R_SR] |= R_SR_TCF; +} + +static const MemoryRegionOps stm32f412_qspi_ops = { + .read = stm32f412_qspi_read, + .write = stm32f412_qspi_write, + .endianness = DEVICE_NATIVE_ENDIAN +}; + +static void +stm32f412_qspi_reset(DeviceState *dev) +{ + struct stm32f412_qspi_s *s = STM32F412_QSPI(dev); + + //s->regs[R_SR] = R_SR_RESET; + s->cs_state = CS_STATE_HIGH; + s->tx_remaining = 0; +} + +static void +stm32f412_qspi_init(Object *obj) +{ + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + struct stm32f412_qspi_s *s = STM32F412_QSPI(dev); + + memory_region_init_io(&s->iomem, NULL, &stm32f412_qspi_ops, s, "qspi", 0x3ff); + sysbus_init_mmio(dev, &s->iomem); + sysbus_init_irq(dev, &s->irq); + s->qspi = ssi_create_bus(DEVICE(dev), "ssi"); + + s->cs_state = CS_STATE_HIGH; + s->tx_remaining = 0; + + qdev_init_gpio_out_named(DEVICE(dev), &s->cs_irq, "qspi-gpio-cs", 1); +} + +static Property stm32f412_qspi_properties[] = { + DEFINE_PROP_END_OF_LIST() +}; + +static void +stm32f412_qspi_class_init(ObjectClass *c, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(c); + + dc->reset = stm32f412_qspi_reset; + device_class_set_props(dc, stm32f412_qspi_properties); +} + +static const TypeInfo stm32f412_qspi_info = { + .name = TYPE_STM32F412_QSPI, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(struct stm32f412_qspi_s), + .instance_init = stm32f412_qspi_init, + .class_init = stm32f412_qspi_class_init +}; + +static void +stm32f412_qspi_register_types(void) +{ + type_register_static(&stm32f412_qspi_info); +} + +type_init(stm32f412_qspi_register_types) diff --git a/include/hw/arm/stm32.h b/include/hw/arm/stm32.h new file mode 100644 index 0000000000000..ebcd1da546f7a --- /dev/null +++ b/include/hw/arm/stm32.h @@ -0,0 +1,682 @@ +/* + * STM32 Microcontroller + * + * Copyright (C) 2010 Andre Beckus + * + * Implementation based on ST Microelectronics "RM0008 Reference Manual Rev 10" + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#ifndef STM32_H +#define STM32_H + +#include "qemu/timer.h" +#include "qemu-common.h" +#include "hw/sysbus.h" +#include "hw/arm/boot.h" +#include "qemu/log.h" +#include "chardev/char-fe.h" +#include "hw/qdev-properties.h" +#include "hw/core/cpu.h" +#include "qapi/error.h" + +#define qdev_prop_set_ptr(a, b, c) qdev_prop_set_uint64((a), (b), (uint64_t)(c)) +#define DEFINE_PROP_PTR(_n, _s, _f) \ + DEFINE_PROP(_n, _s, _f, qdev_prop_uint64, void*) + +#define TYPE_STM32_FLASH "stm32_flash" +#define STM32_FLASH(obj) \ + OBJECT_CHECK(Stm32Flash, (obj), TYPE_STM32_FLASH) + +#define TYPE_STM32_ADC "stm32f2xx_adc" +#define STM32_ADC(obj) \ + OBJECT_CHECK(stm32_adc, (obj), TYPE_STM32_ADC) + +#define TYPE_STM32F2XX_CRC "f2xx_crc" +#define STM32F2XX_CRC(obj) \ + OBJECT_CHECK(f2xx_crc, (obj), TYPE_STM32F2XX_CRC) + +#define TYPE_STM32F2XX_DMA "f2xx_dma" +#define STM32F2XX_DMA(obj) \ + OBJECT_CHECK(f2xx_dma, (obj), TYPE_STM32F2XX_DMA) + +#define TYPE_STM32F412_QSPI "stm32f412_qspi" +#define STM32F412_QSPI(obj) \ + OBJECT_CHECK(struct stm32f412_qspi_s, (obj), TYPE_STM32F412_QSPI) + +#define TYPE_STM32F2XX_SPI "stm32f2xx_spi" +#define STM32F2XX_SPI(obj) \ + OBJECT_CHECK(struct stm32f2xx_spi_s, (obj), TYPE_STM32F2XX_SPI) + +#define TYPE_STM32F7XX_LPTIM "f7xx_lptim" +#define STM32F7XX_LPTIM(obj) \ + OBJECT_CHECK(f7xx_lptim, (obj), TYPE_STM32F7XX_LPTIM) + +#define TYPE_STM32F2XX_FLASH "f2xx.flash" +#define STM32F2XX_FLASH(obj) \ + OBJECT_CHECK(f2xx_flash_t, (obj), TYPE_STM32F2XX_FLASH) + +#define TYPE_STM32F2XX_GPIO "stm32f2xx_gpio" +#define STM32F2XX_GPIO(obj) \ + OBJECT_CHECK(stm32f2xx_gpio, (obj), TYPE_STM32F2XX_GPIO) + +#define TYPE_STM32F2XX_RCC "stm32f2xx_rcc" +#define STM32F2XX_RCC(obj) \ + OBJECT_CHECK(Stm32f2xxRcc, (obj), TYPE_STM32F2XX_RCC) + +#define TYPE_STM32F2XX_TIM "f2xx_tim" +#define STM32F2XX_TIM(obj) \ + OBJECT_CHECK(f2xx_tim, (obj), TYPE_STM32F2XX_TIM) + +#define TYPE_STM32F1XX_RCC "stm32f1xx_rcc" +#define STM32F1XX_RCC(obj) \ + OBJECT_CHECK(Stm32f1xxRcc, (obj), TYPE_STM32F1XX_RCC) + +#define TYPE_STM32F2XX_SYSCFG "stm32f2xx_syscfg" +#define STM32F2XX_SYSCFG(obj) \ + OBJECT_CHECK(Stm32Syscfg, (obj), TYPE_STM32F2XX_SYSCFG) + +#define TYPE_STM32F2XX_SPI_PBL "stm32f2xx_spi_pbl" +#define STM32F2XX_SPI_PBL(obj) \ + OBJECT_CHECK(stm32f2xx_spi_s, (obj), TYPE_STM32F2XX_SPI_PBL) + +#define TYPE_STM32F2XX_RTC "f2xx_rtc" +#define STM32F2XX_RTC(obj) \ + OBJECT_CHECK(f2xx_rtc, (obj), TYPE_STM32F2XX_RTC) + +#define TYPE_STM32F2XX_DUMMY "f2xx_dummy" +#define STM32F2XX_DUMMY(obj) \ + OBJECT_CHECK(f2xx_dummy, (obj), TYPE_STM32F2XX_DUMMY) + +#define TYPE_STM32F2XX_PWR "f2xx_pwr" +#define STM32F2XX_PWR(obj) \ + OBJECT_CHECK(f2xx_pwr, (obj), TYPE_STM32F2XX_PWR) + +#define TYPE_STM32F2XX_I2C "f2xx_i2c" +#define STM32F2XX_I2C(obj) \ + OBJECT_CHECK(f2xx_i2c, (obj), TYPE_STM32F2XX_I2C) + +#define TYPE_STM32F7XX_I2C "stm32f7xx_i2c" +#define STM32F7XX_I2C(obj) \ + OBJECT_CHECK(stm32f7xx_i2c, (obj), TYPE_STM32F7XX_I2C) + +#define ENUM_STRING(x) [x] = #x +#define ARRAY_LENGTH(array) (sizeof((array))/sizeof((array)[0])) + +/* COMMON */ +#define BYTE_ACCESS_SIZE 1 +#define HALFWORD_ACCESS_SIZE 2 +#define WORD_ACCESS_SIZE 4 + +#define STM32_FLASH_ADDR_START (0x08000000) + +/* VALUE_BETWEEN is inclusive */ +#define VALUE_BETWEEN(value, start, end) ((value >= start) && (value <= end)) + +#define GET_BIT_MASK(position, value) ((value ? 1 : 0) << position) +#define GET_BIT_MASK_ONE(position) (1 << position) +#define GET_BIT_MASK_ZERO(position) (~(1 << position)) +#define GET_BIT_VALUE(value, position) \ + ((value & GET_BIT_MASK_ONE(position)) >> position) +#define IS_BIT_SET(value, position) ((value & GET_BIT_MASK_ONE(position)) != 0) +#define IS_BIT_RESET(value, position) ((value & GET_BIT_MASK_ONE(position)) ==0) +#define SET_BIT(var, position) var |= GET_BIT_MASK_ONE(position) +#define RESET_BIT(var, position) var &= GET_BIT_MASK_ZERO(position) + +/* Can be true, false, 0, or 1 */ +#define CHANGE_BIT(var, position, new_value) \ + var = new_value ? \ + (var | GET_BIT_MASK_ONE(position)) : \ + (var & GET_BIT_MASK_ZERO(position)) +#define CHANGE_BITS(var, start, mask, new_value) \ + var = (var & ~mask) | ((new_value << start) & mask) + +void stm32_hw_warn(const char *fmt, ...) + __attribute__ ((__format__ (__printf__, 1, 2))); + +#define stm32_unimp(x...) qemu_log_mask(LOG_UNIMP, x) + + + + +/* PERIPHERALS - COMMON */ +/* Indexes used for accessing a GPIO array */ +#define STM32_GPIOA_INDEX 0 +#define STM32_GPIOB_INDEX 1 +#define STM32_GPIOC_INDEX 2 +#define STM32_GPIOD_INDEX 3 +#define STM32_GPIOE_INDEX 4 +#define STM32_GPIOF_INDEX 5 +#define STM32_GPIOG_INDEX 6 +#define STM32_GPIOH_INDEX 7 +#define STM32_GPIOI_INDEX 8 + +/* Indexes used for accessing a UART array */ +#define STM32_UART1_INDEX 0 +#define STM32_UART2_INDEX 1 +#define STM32_UART3_INDEX 2 +#define STM32_UART4_INDEX 3 +#define STM32_UART5_INDEX 4 +#define STM32_UART6_INDEX 5 + +/* Used for uniquely identifying a peripheral */ +typedef int32_t stm32_periph_t; + +#define DEFINE_PROP_PERIPH_T DEFINE_PROP_INT32 +#define QDEV_PROP_SET_PERIPH_T qdev_prop_set_int32 + +enum { + STM32_PERIPH_UNDEFINED = -1, + STM32_RCC_PERIPH = 0, // 0 + STM32_GPIOA, // 1 + STM32_GPIOB, // 2 + STM32_GPIOC, // 3 + STM32_GPIOD, // 4 + STM32_GPIOE, // 5 + STM32_GPIOF, // 6 + STM32_GPIOG, // 7 + STM32_GPIOH, // 8 + STM32_GPIOI, // 9 + STM32_GPIOJ, // 10 + STM32_GPIOK, // 11 + STM32_SYSCFG, // 12 + STM32_AFIO_PERIPH, // 13 + STM32_UART1, // 14 + STM32_UART2, // 15 + STM32_UART3, // 16 + STM32_UART4, // 17 + STM32_UART5, // 18 + STM32_UART6, // 19 + STM32_UART7, // 20 + STM32_UART8, // 21 + STM32_ADC1, // 22 + STM32_ADC2, // 23 + STM32_ADC3, // 24 + STM32_DAC, // 25 + STM32_TIM1, // 26 + STM32_TIM2, // 27 + STM32_TIM3, // 28 + STM32_TIM4, // 29 + STM32_TIM5, + STM32_TIM6, + STM32_TIM7, + STM32_TIM8, + STM32_TIM9, + STM32_TIM10, + STM32_TIM11, + STM32_TIM12, + STM32_TIM13, + STM32_TIM14, + STM32_BKP, + STM32_PWR, + STM32_I2C1, + STM32_I2C2, + STM32_I2C3, + STM32_I2C4, + STM32_I2S2, + STM32_I2S3, + STM32_WWDG, + STM32_CAN1, + STM32_CAN2, + STM32_CAN, + STM32_USB, + STM32_SPI1, + STM32_SPI2, + STM32_SPI3, + STM32_EXTI_PERIPH, + STM32_SDIO, + STM32_FSMC, + STM32_RTC, + STM32_CRC, + STM32_DMA1, + STM32_DMA2, + STM32_DCMI_PERIPH, + STM32_CRYP_PERIPH, + STM32_HASH_PERIPH, + STM32_RNG_PERIPH, + STM32_QSPI, + STM32_LPTIM1, + + STM32_PERIPH_COUNT, +}; + +const char *stm32_periph_name(stm32_periph_t periph); + +/* Convert between a GPIO array index and stm32_periph_t, and vice-versa */ +#define STM32_GPIO_INDEX_FROM_PERIPH(gpio_periph) (gpio_periph - STM32_GPIOA) +#define STM32_GPIO_PERIPH_FROM_INDEX(gpio_index) (STM32_GPIOA + gpio_index) + + + + +/* REGISTER HELPERS */ +/* Macros used for converting a half-word into a word. + * Assume that memory alignment can be determined by looking at offset + * i.e. the base address should always be 4 byte aligned. + * Also assume that odd offsets will never occur + * i.e. all offsets must be 2 byte aligned. + */ +#define STM32_REG_READH_VALUE(offset, value32) \ + ((offset & 3) ? \ + (value32 & 0xffff0000) >> 16 : \ + value32 & 0x0000ffff) +#define STM32_REG_WRITEH_VALUE(offset, old_value32, new_value32) \ + ((offset & 3) ? \ + (old_value32 & 0x0000ffff) | ((new_value32 & 0x0000ffff) << 16) : \ + (old_value32 & 0xffff0000) | (new_value32 & 0x0000ffff) ) + +/* Error handlers */ +# define STM32_BAD_REG(offset, size) \ + hw_error("%s: Bad register 0x%x - size %u\n", __FUNCTION__, (int)offset, size) +# define STM32_WARN_RO_REG(offset) \ + qemu_log_mask(LOG_GUEST_ERROR, "%s: Read-only register 0x%x\n", \ + __FUNCTION__, (int)offset) +# define STM32_WARN_WO_REG(offset) \ + qemu_log_mask(LOG_GUEST_ERROR, "%s: Write-only register 0x%x\n", \ + __FUNCTION__, (int)offset) +# define STM32_NOT_IMPL_REG(offset, size) \ + hw_error("%s: Not implemented yet 0x%x - size %u\n", __FUNCTION__, (int)offset, size) + + + + +/* IRQs */ +#define STM32_PVD_IRQ 1 +#define STM32_TAMP_STAMP_IRQ 2 +#define STM32_RTC_WKUP_IRQ 3 +#define STM32_RCC_IRQ 5 +#define STM32_EXTI0_IRQ 6 +#define STM32_EXTI1_IRQ 7 +#define STM32_EXTI2_IRQ 8 +#define STM32_EXTI3_IRQ 9 +#define STM32_EXTI4_IRQ 10 + +#define STM32_DMA1_STREAM0_IRQ 11 +#define STM32_DMA1_STREAM1_IRQ 12 +#define STM32_DMA1_STREAM2_IRQ 13 +#define STM32_DMA1_STREAM3_IRQ 14 +#define STM32_DMA1_STREAM4_IRQ 15 +#define STM32_DMA1_STREAM5_IRQ 16 +#define STM32_DMA1_STREAM6_IRQ 17 + +#define STM32_EXTI9_5_IRQ 23 +#define STM32_TIM1_BRK_TIM9_IRQ 24 +#define STM32_TIM1_UP_TIM10_IRQ 25 +#define STM32_TIM1_TRG_COM_TIM11_IRQ 26 +#define STM32_TIM1_CC_IRQ 27 +#define STM32_TIM2_IRQ 28 +#define STM32_TIM3_IRQ 29 +#define STM32_TIM4_IRQ 30 + +#define STM32_I2C1_EV_IRQ 31 +#define STM32_I2C1_ER_IRQ 32 +#define STM32_I2C2_EV_IRQ 33 +#define STM32_I2C2_ER_IRQ 34 + +#define STM32_SPI1_IRQ 35 +#define STM32_SPI2_IRQ 36 + +#define STM32_UART1_IRQ 37 +#define STM32_UART2_IRQ 38 +#define STM32_UART3_IRQ 39 +#define STM32_EXTI15_10_IRQ 40 +#define STM32_RTCAlarm_IRQ 41 +#define STM32_OTG_FS_WKUP_IRQ 42 +#define STM32_TIM8_BRK_TIM12_IRQ 43 +#define STM32_TIM8_UP_TIM13_IRQ 44 +#define STM32_TIM8_TRG_COMM_TIM14_IRQ 45 + +#define STM32_DMA1_STREAM7_IRQ 47 + +#define STM32_TIM5_IRQ 50 +#define STM32_SPI3_IRQ 51 +#define STM32_UART4_IRQ 52 +#define STM32_UART5_IRQ 53 +#define STM32_TIM6_IRQ 54 +#define STM32_TIM7_IRQ 55 + +#define STM32_DMA2_STREAM0_IRQ 56 +#define STM32_DMA2_STREAM1_IRQ 57 +#define STM32_DMA2_STREAM2_IRQ 58 +#define STM32_DMA2_STREAM3_IRQ 59 +#define STM32_DMA2_STREAM4_IRQ 60 + +#define STM32_ETH_WKUP_IRQ 62 + +#define STM32_DMA2_STREAM5_IRQ 68 +#define STM32_DMA2_STREAM6_IRQ 69 +#define STM32_DMA2_STREAM7_IRQ 70 + +#define STM32_UART6_IRQ 71 + +#define STM32_I2C3_EV_IRQ 72 +#define STM32_I2C3_ER_IRQ 73 + +#define STM32_SPI4_IRQ 84 +#define STM32_SPI5_IRQ 85 +#define STM32_SPI6_IRQ 86 + +#define STM32_QSPI_IRQ 92 +#define STM32_LPTIM1_IRQ 93 + +#define STM32_I2C4_EV_IRQ 95 +#define STM32_I2C4_ER_IRQ 96 + +#define STM32_MAX_IRQ 127 + + + +/* EXTI */ +typedef struct Stm32Exti Stm32Exti; + +#define TYPE_STM32_EXTI "stm32-exti" +#define STM32_EXTI(obj) OBJECT_CHECK(Stm32Exti, (obj), TYPE_STM32_EXTI) + +#define TYPE_STM32_EXTI_ALT "stm32-exti-alt" +#define STM32_EXTI_ALT(obj) OBJECT_CHECK(Stm32Exti, (obj), TYPE_STM32_EXTI_ALT) + +/* Assigns the specified EXTI line to the specified GPIO. */ +void stm32_exti_set_gpio(Stm32Exti *s, unsigned exti_line, const uint8_t gpio_index); + +/* Unassigns the specified EXTI line from the specified GPIO. */ +void stm32_exti_reset_gpio(Stm32Exti *s, unsigned exti_line, const uint8_t gpio_index); + + + +/* RTC */ +// Set the value of one of the QEMU specific extra RTC backup registers. The idx value starts +// at 0 for the first extra register +void f2xx_rtc_set_extra_bkup_reg(void *opaque, uint32_t idx, uint32_t value); + + +/* GPIO */ +typedef struct Stm32Gpio Stm32Gpio; + +#define TYPE_STM32_GPIO "stm32-gpio" +#define STM32_GPIO(obj) OBJECT_CHECK(Stm32Gpio, (obj), TYPE_STM32_GPIO) + +#define STM32_GPIO_COUNT (STM32_GPIOG - STM32_GPIOA + 1) +#define STM32_GPIO_PIN_COUNT 16 + + +/* Sets the EXTI IRQ for the specified pin. When a change occurs + * on this pin, and interrupt will be generated on this IRQ. + */ +void stm32_gpio_set_exti_irq(Stm32Gpio *s, unsigned pin, qemu_irq in_irq); + +/* GPIO pin mode */ +#define STM32_GPIO_MODE_IN 0 +#define STM32_GPIO_MODE_OUT_10MHZ 1 +#define STM32_GPIO_MODE_OUT_2MHZ 2 +#define STM32_GPIO_MODE_OUT_50MHZ 3 +uint8_t stm32_gpio_get_mode_bits(Stm32Gpio *s, unsigned pin); + +/* GPIO pin config */ +#define STM32_GPIO_IN_ANALOG 0 +#define STM32_GPIO_IN_FLOAT 1 +#define STM32_GPIO_IN_PULLUPDOWN 2 +#define STM32_GPIO_OUT_PUSHPULL 0 +#define STM32_GPIO_OUT_OPENDRAIN 1 +#define STM32_GPIO_OUT_ALT_PUSHPULL 2 +#define STM32_GPIO_OUT_ALT_OPEN 3 +uint8_t stm32_gpio_get_config_bits(Stm32Gpio *s, unsigned pin); + + + + +/* GPIO - f2xx */ +typedef struct stm32f2xx_gpio stm32f2xx_gpio; +void f2xx_gpio_exti_set(stm32f2xx_gpio *, unsigned, qemu_irq); +void f2xx_gpio_wake_set(stm32f2xx_gpio *, unsigned, qemu_irq); + + + + +/* RCC */ +typedef struct Stm32Rcc Stm32Rcc; + +#define TYPE_STM32_RCC "stm32-rcc" +#define STM32_RCC(obj) OBJECT_CHECK(Stm32Rcc, (obj), TYPE_STM32_RCC) + +/* Checks if the specified peripheral clock is enabled. + * Generates a hardware error if not. + */ +void stm32_rcc_check_periph_clk(Stm32Rcc *s, stm32_periph_t periph); + +/* Sets the IRQ to be called when the specified peripheral clock changes + * frequency. */ +void stm32_rcc_set_periph_clk_irq( + Stm32Rcc *s, + stm32_periph_t periph, + qemu_irq periph_irq); + +/* Gets the frequency of the specified peripheral clock. */ +uint32_t stm32_rcc_get_periph_freq( + Stm32Rcc *s, + stm32_periph_t periph); + + + +/* TIM */ +typedef struct Stm32Timer Stm32Timer; +#define STM32_TIM_COUNT 14 + + +/* LPTIM */ +typedef struct Stm32F7xxLPTimer Stm32F7xxLPTimer; + + +/* UART */ +#define STM32_UART_COUNT 5 + +typedef struct Stm32Uart Stm32Uart; + +#define TYPE_STM32_UART "stm32-uart" +#define STM32_UART(obj) OBJECT_CHECK(Stm32Uart, (obj), TYPE_STM32_UART) + +/* Connects the character driver to the specified UART. The + * board's pin mapping should be passed in. This will be used to + * verify the correct mapping is configured by the software. + */ +void stm32_uart_connect(Stm32Uart *s, Chardev *chr, + uint32_t afio_board_map); + +/* Low level methods that let you connect a UART device to any other instance + * that has read/write handlers. These can be used in place of stm32_uart_connect + * if not connecting to a Chardev instance. */ +void stm32_uart_set_write_handler(Stm32Uart *s, void *obj, + int (*chr_write_handler)(void *chr_write_obj, const uint8_t *buf, int len)); +void stm32_uart_get_rcv_handlers(Stm32Uart *s, IOCanReadHandler **can_read, + IOReadHandler **read, IOEventHandler **event); + +void stm32_create_uart_dev( + Object *stm32_container, + stm32_periph_t periph, + int uart_num, + DeviceState *rcc_dev, + DeviceState **gpio_dev, + DeviceState *afio_dev, + hwaddr addr, + qemu_irq irq); + + +/* STM32F7xx UART */ +#define STM32F7XX_UART_COUNT 8 + +typedef struct Stm32F7xxUart Stm32F7xxUart; + +#define TYPE_STM32F7XX_UART "stm32f7xx-uart" +#define STM32F7XX_UART(obj) OBJECT_CHECK(Stm32F7xxUart, (obj), TYPE_STM32F7XX_UART) + +/* Connects the character driver to the specified UART. The + * board's pin mapping should be passed in. This will be used to + * verify the correct mapping is configured by the software. + */ +void stm32f7xx_uart_connect(Stm32F7xxUart *s, Chardev *chr, + uint32_t afio_board_map); + +/* Low level methods that let you connect a UART device to any other instance + * that has read/write handlers. These can be used in place of stm32_uart_connect + * if not connecting to a Chardev instance. */ +void stm32f7xx_uart_set_write_handler(Stm32F7xxUart *s, void *obj, + int (*chr_write_handler)(void *chr_write_obj, const uint8_t *buf, int len)); +void stm32f7xx_uart_get_rcv_handlers(Stm32F7xxUart *s, IOCanReadHandler **can_read, + IOReadHandler **read, IOEventHandler **event); + +void stm32f7xx_create_uart_dev( + Object *stm32_container, + stm32_periph_t periph, + int uart_num, + DeviceState *rcc_dev, + DeviceState **gpio_dev, + DeviceState *afio_dev, + hwaddr addr, + qemu_irq irq); + + +/* AFIO */ +#define TYPE_STM32_AFIO "stm32-afio" +#define STM32_AFIO(obj) OBJECT_CHECK(Stm32Afio, (obj), TYPE_STM32_AFIO) + +typedef struct Stm32Afio Stm32Afio; + +/* AFIO Peripheral Mapping */ +#define STM32_USART1_NO_REMAP 0 +#define STM32_USART1_REMAP 1 + +#define STM32_USART2_NO_REMAP 0 +#define STM32_USART2_REMAP 1 + +#define STM32_USART3_NO_REMAP 0 +#define STM32_USART3_PARTIAL_REMAP 1 +#define STM32_USART3_FULL_REMAP 3 + +/* Gets the pin mapping for the specified peripheral. Will return one + * of the mapping values defined above. */ +uint32_t stm32_afio_get_periph_map(Stm32Afio *s, int32_t periph_num); + +void stm32_afio_uart_check_tx_pin_callback(Stm32Uart *s); + + + + +/* STM32 PERIPHERALS - GENERAL */ +DeviceState *stm32_init_periph(DeviceState *dev, stm32_periph_t periph, + hwaddr addr, qemu_irq irq); + + +/* STM32 MICROCONTROLLER - GENERAL */ +typedef struct Stm32 Stm32; + +/* Initialize the STM32 microcontroller. Returns arrays + * of GPIOs and UARTs so that connections can be made. */ +void stm32f1xx_init( + ram_addr_t flash_size, + ram_addr_t ram_size, + const char *kernel_filename, + Stm32Gpio **stm32_gpio, + Stm32Uart **stm32_uart, + uint32_t osc_freq, + uint32_t osc32_freq); + +struct stm32f2xx; +void stm32f2xx_init( + ram_addr_t flash_size, + ram_addr_t ram_size, + const char *kernel_filename, + Stm32Gpio **stm32_gpio, + Stm32Uart **stm32_uart, + Stm32Timer **stm32_timer, + DeviceState **stm32_rtc, + uint32_t osc_freq, + uint32_t osc32_freq, + struct stm32f2xx *stm, + ARMCPU **cpu); + +struct stm32f4xx; +void stm32f4xx_init( + ram_addr_t flash_size, + ram_addr_t ram_size, + const char *kernel_filename, + Stm32Gpio **stm32_gpio, + const uint32_t *gpio_idr_masks, + Stm32Uart **stm32_uart, + Stm32Timer **stm32_timer, + DeviceState **stm32_rtc, + uint32_t osc_freq, + uint32_t osc32_freq, + struct stm32f4xx *stm, + ARMCPU **cpu); + +struct stm32f7xx; +void stm32f7xx_init( + ram_addr_t flash_size, + ram_addr_t ram_size, + const char *kernel_filename, + Stm32Gpio **stm32_gpio, + const uint32_t *gpio_idr_masks, + Stm32F7xxUart **stm32_uart, + Stm32Timer **stm32_timer, + Stm32F7xxLPTimer **lptimer, + DeviceState **stm32_rtc, + uint32_t osc_freq, + uint32_t osc32_freq, + struct stm32f7xx *stm, + ARMCPU **cpu); + +static inline DeviceState * +armv7m_translated_init(Object *parent, MemoryRegion *system_memory, + int flash_size, int sram_size, int num_irq, + const char *kernel_filename, + uint64_t (*translate_fn)(void *, uint64_t), + void *translate_opaque, + const char *cpu_model, + ARMCPU **cpu_device) { + + if (sram_size) { + + MemoryRegion *sram = g_new(MemoryRegion, 1); + memory_region_init_ram(sram, NULL, "armv7m.sram", sram_size, &error_fatal); + memory_region_add_subregion(system_memory, 0x20000000, sram); + } + + DeviceState *armv7m = qdev_create(NULL, "armv7m"); + qdev_prop_set_string(DEVICE(armv7m), "cpu-type", cpu_model); + qdev_prop_set_uint32(DEVICE(armv7m), "num-irq", num_irq); + qdev_prop_set_bit(DEVICE(armv7m), "enable-bitband", true); + object_property_set_link(OBJECT(armv7m), OBJECT(system_memory), + "memory", NULL); + qdev_init_nofail(DEVICE(armv7m)); + + + armv7m_load_kernel(ARM_CPU(first_cpu), kernel_filename, flash_size); + cpu_device = armv7m; + return armv7m; +} + +static inline DeviceState * +armv7m_init(Object *parent, MemoryRegion *system_memory, + int flash_size, int sram_size, int num_irq, + const char *kernel_filename, const char *cpu_model) +{ + ARMCPU *cpu; + return armv7m_translated_init(parent, system_memory, flash_size, sram_size, num_irq, + kernel_filename, NULL, NULL, cpu_model, &cpu); +} + +typedef struct f2xx_flash f2xx_flash_t; +f2xx_flash_t *f2xx_flash_register(BlockBackend *blk, hwaddr base, + hwaddr size); +#endif /* STM32_H */ diff --git a/include/hw/arm/stm32_clktree.h b/include/hw/arm/stm32_clktree.h new file mode 100644 index 0000000000000..7740cf15cd764 --- /dev/null +++ b/include/hw/arm/stm32_clktree.h @@ -0,0 +1,82 @@ +/* + * Basic Clock Tree Building Blocks + * + * Copyright (C) 2012 Andre Beckus + * + * Source code roughly based on omap_clk.c + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#ifndef STM32_CLKTREE_H +#define STM32_CLKTREE_H + +#include "qemu-common.h" + +#define CLKTREE_MAX_IRQ 16 +#define CLKTREE_MAX_OUTPUT 24 +#define CLKTREE_MAX_INPUT 24 + +/* Use this when calling clktree_create_clk and clktree_set_selected_input */ +#define CLKTREE_NO_INPUT -1 + +/* Use this when calling clktree_create_clk */ +#define CLKTREE_NO_MAX_FREQ UINT32_MAX + +typedef struct Clk *Clk; + +/* Check if the clock output is enabled. */ +bool clktree_is_enabled(Clk clk); + +/* Get the clock's output frequency. This will be 0 if: + * - No clock is selected as an input. + * - The clock output is not enabled. + * - The multiplier is set to 0. + */ +uint32_t clktree_get_output_freq(Clk clk); + +/* Add an IRQ to receive notifications when the clock frequency is updated. */ +void clktree_adduser(Clk clk, qemu_irq user); + +/* Create a source clock (e.g. oscillator) with the given frequency. */ +Clk clktree_create_src_clk( + const char *name, + uint32_t src_freq, + bool enabled); + +/* Create a clock. The vararg parameter specifies all of the source clocks + * (use NULL to indicate the end of the list). A warning will be generated if + * the output frequency of the clock ever exceeds max_output_freq. */ +Clk clktree_create_clk( + const char *name, + uint16_t multiplier, + uint16_t divisor, + bool enabled, + uint32_t max_output_freq, + int selected_input, + ...); + +/* Set the multiplier and divider scales. */ +void clktree_set_scale(Clk clk, uint16_t multiplier, uint16_t divisor); + +/* Enable or disable the clock output. */ +void clktree_set_enabled(Clk clk, bool enabled); + +/* Selects the specified input clock. selected_input should be 0 to select the + * first input clock passed in to clktree_create_clk, 1 for the second input + * clock, and so on. Pass in CLKTREE_NO_INPUT to not select any input + * (i.e. input frequency will be 0). */ +void clktree_set_selected_input(Clk clk, int selected_input); + +#endif /* STM32_CLKTREE_H */ diff --git a/include/hw/block/flash.h b/include/hw/block/flash.h index 2136a2d5e4cd2..ddfb9fcbb9012 100644 --- a/include/hw/block/flash.h +++ b/include/hw/block/flash.h @@ -47,6 +47,23 @@ PFlashCFI02 *pflash_cfi02_register(hwaddr base, uint16_t unlock_addr1, int be); + +/* pflash_jedec_424.c */ + +#define TYPE_CFI_PFLASH_JEDEC_424 "cfi.pflash.jedec-42.4" +#define CFI_PFLASH_JEDEC(obj) \ + OBJECT_CHECK(PFlashJedec424, (obj), TYPE_CFI_PFLASH_JEDEC_424) + +typedef struct PFlashJedec424 PFlashJedec424; + +PFlashJedec424 *pflash_jedec_424_register(hwaddr base, + DeviceState *qdev, const char *name, + hwaddr size, + BlockBackend *blk, + uint32_t sector_len, int nb_blocs, uint32_t bank_size, + int bank_width, uint16_t id0, uint16_t id1, + uint16_t id2, uint16_t id3, int be); + /* nand.c */ DeviceState *nand_init(BlockBackend *blk, int manf_id, int chip_id); void nand_setpins(DeviceState *dev, uint8_t cle, uint8_t ale, diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index 1405b8a990a18..198ee5a0d4ccf 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -144,6 +144,7 @@ typedef struct NamedGPIOList NamedGPIOList; struct NamedGPIOList { char *name; qemu_irq *in; + qemu_irq *out; int num_in; int num_out; QLIST_ENTRY(NamedGPIOList) node; diff --git a/pebble.py b/pebble.py new file mode 100755 index 0000000000000..b5760a996d428 --- /dev/null +++ b/pebble.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python + +import os +import argparse + + +#################################################################################################### +if __name__ == '__main__': + # Collect our command line arguments + parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parser.add_argument('--machine', choices=['bb2', 'snowy-bb', 's4-bb'], + default='bb2', help="Which machine to emulate ") + parser.add_argument('-S', '--start_in_monitor', action='store_true', + help="Start in the monitor. Enter 'cont' in the monitor to start emulation") + parser.add_argument('--vnc', action='store_true', + help="Use VNC on port 5900 for the display") + parser.add_argument('--vnc_ws', action='store_true', + help="Use VNC over websockets on port 4444 for the display") + parser.add_argument('-d', '--debug', + help=("Turn on extensive debug logging. Available ones are:" + "out_asm,in_asm,op,op_opt,int,exec,cpu,pcall,cpu_reset,ioport,unimp," + "guest_errors. Enter one or more comma separated.")) + args = parser.parse_args() + + + cmd_line = ( + "qemu-system-arm " + "-rtc base=localtime " + "-s " # Start gdb server + "-serial file:uart1.log " + "-serial tcp::12344,server,nowait " # Used for Pebble Protocol + "-serial tcp::12345,server,nowait " # Used for console + "-monitor stdio " + ) + cmd_line += "-machine pebble-%s " % (args.machine) + if args.machine in ('snowy-bb', 's4-bb'): + cmd_line += "-cpu cortex-m4 " + cmd_line += "-pflash ../test_images/qemu_micro_flash.bin " + cmd_line += "-pflash ../test_images/qemu_spi_flash.bin " + else: + cmd_line += "-cpu cortex-m3 " + cmd_line += "-pflash ../test_images/qemu_micro_flash.bin " + cmd_line += "-mtdblock ../test_images/qemu_spi_flash.bin " + + if args.start_in_monitor: + cmd_line += "-S " + if args.debug: + cmd_line += ("-d " + args.debug) + + if (args.vnc and args.vnc_ws): + raise RuntimeError("--vnc and --vnc_ws can not both be specified"); + if args.vnc: + cmd_line += "-vnc :0 " + if args.vnc_ws: + cmd_line += "-vnc :1,websocket=4444 " + + print "Executing command line: \n ", cmd_line + os.system(cmd_line) + + diff --git a/pebble_dbgserial.sh b/pebble_dbgserial.sh new file mode 100755 index 0000000000000..69faefc06fbb2 --- /dev/null +++ b/pebble_dbgserial.sh @@ -0,0 +1 @@ +python -m serial.tools.miniterm socket://:12345 230400 diff --git a/scripts/png_to_cstruct.py b/scripts/png_to_cstruct.py new file mode 100755 index 0000000000000..362ec9fd0655e --- /dev/null +++ b/scripts/png_to_cstruct.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python + +""" +Convert a PNG image into a C struct +""" + +import itertools +import math +import png + +_NoFill = object() +def unflatten(iterable, n, fill=_NoFill): + count = 0 + accumulator = [] + for item in iterable: + accumulator.append(item) + count += 1 + if count == n: + yield tuple(accumulator) + accumulator = [] + count = 0 + if accumulator and fill is not _NoFill: + accumulator += [fill] * (n-count) + yield tuple(accumulator) + +def rgb_triplets(row): + """Packs a flattened row of RGB pixel data into (r,g,b) tuples.""" + return unflatten(row, 3) + +def to_rgb222(row): + """Converts pixels from RGB888 to RGB222 format. + + The function takes an iterable of (r,g,b) tuples, each representing + a pixel. Each pixel is downsampled to RGB222 and packed into a + single byte. The format of the byte is 0bRrGgBb00. + """ + def downsample(value): + return (value >> 6) & 0x3 + + for r, g, b in row: + yield downsample(r) << 6 | downsample(g) << 4 | downsample(b) << 2 + +def png_to_bytes(png_reader, converter=to_rgb222): + width, height, image, _ = png_reader.asRGB8() + rows = [rgb_triplets(row) for row in image] + scanlines = [converter(row) for row in rows] + return height, width, scanlines + +def png_to_cstruct(png_reader, dst_name, var_name): + height, width, image = png_to_bytes(png_reader) + + print "// C struct format image converted from '%s' using png_to_cstruct.py" % args.src.name + print "static uint8_t *get_%s_image(int *width, int *height) {\n" % (var_name) + print " *width = %d;" % (width) + print " *height = %d;" % (height) + print " static uint8_t %s[%d] = {\n" % (var_name, width*height) + + for line in image: + print " ", + for i, pixel in enumerate(line): + if (i > 0) and (i % 12) == 0: + print "\n ", + print " 0x%02x," % pixel, + print "\n" + + print " };" + print " return %s;" % (var_name) + print "}" + + +if __name__=='__main__': + import argparse + import os.path + import re + + parser = argparse.ArgumentParser() + parser.add_argument('src', metavar='PNGFILE', type=argparse.FileType('rb'), + help='image file to convert') + args = parser.parse_args() + + # Attempt to strip ".png" suffix. Not terribly smart, but good enough. + dst_name = os.path.splitext(args.src.name)[0] + '.c' + + # Attempt to strip ".png" suffix. Not terribly smart, but good enough. + var_name = re.sub(r'[^a-zA-Z0-9_]', '_', + os.path.splitext(os.path.basename(args.src.name))[0]) + + reader = png.Reader(args.src) + png_to_cstruct(reader, dst_name, var_name) + diff --git a/ui/cocoa.m b/ui/cocoa.m index cb556e4e6689d..fb112cb662cc4 100644 --- a/ui/cocoa.m +++ b/ui/cocoa.m @@ -950,6 +950,9 @@ - (bool) handleEventLocked:(NSEvent *)event - (void) grabMouse { +#ifdef NO_MOUSE + return; +#endif COCOA_DEBUG("QemuCocoaView: grabMouse\n"); if (!isFullscreen) { @@ -968,6 +971,9 @@ - (void) grabMouse - (void) ungrabMouse { +#ifdef NO_MOUSE + return; +#endif COCOA_DEBUG("QemuCocoaView: ungrabMouse\n"); if (!isFullscreen) { @@ -1343,6 +1349,9 @@ - (void)changeDeviceMedia:(id)sender /* Verifies if the user really wants to quit */ - (BOOL)verifyQuit { +#ifdef SKIP_QUIT_PROMPT + return YES; +#else NSAlert *alert = [NSAlert new]; [alert autorelease]; [alert setMessageText: @"Are you sure you want to quit QEMU?"]; @@ -1353,6 +1362,7 @@ - (BOOL)verifyQuit } else { return NO; } +#endif } /* The action method for the About menu item */ diff --git a/ui/gtk.c b/ui/gtk.c index 030b251c6109e..f94fd123163a2 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1483,6 +1483,9 @@ static void gd_ungrab_keyboard(GtkDisplayState *s) static void gd_grab_pointer(VirtualConsole *vc, const char *reason) { +#ifdef NO_MOUSE + return; +#endif GdkDisplay *display = gtk_widget_get_display(vc->gfx.drawing_area); if (vc->s->ptr_owner) { @@ -1515,6 +1518,9 @@ static void gd_grab_pointer(VirtualConsole *vc, const char *reason) static void gd_ungrab_pointer(GtkDisplayState *s) { +#ifdef NO_MOUSE + return; +#endif VirtualConsole *vc = s->ptr_owner; GdkDisplay *display; diff --git a/ui/sdl2.c b/ui/sdl2.c index 3c9424eb42c3f..f70e7e55079a8 100644 --- a/ui/sdl2.c +++ b/ui/sdl2.c @@ -197,6 +197,9 @@ static void sdl_show_cursor(struct sdl2_console *scon) static void sdl_grab_start(struct sdl2_console *scon) { +#ifdef NO_MOUSE + return; +#endif QemuConsole *con = scon ? scon->dcl.con : NULL; if (!con || !qemu_console_is_graphic(con)) { @@ -225,6 +228,9 @@ static void sdl_grab_start(struct sdl2_console *scon) static void sdl_grab_end(struct sdl2_console *scon) { +#ifdef NO_MOUSE + return; +#endif SDL_SetWindowGrab(scon->real_window, SDL_FALSE); gui_grab = 0; sdl_show_cursor(scon);