diff options
Diffstat (limited to 'qemu/roms/u-boot/board/esd/pci405')
-rw-r--r-- | qemu/roms/u-boot/board/esd/pci405/Makefile | 9 | ||||
-rw-r--r-- | qemu/roms/u-boot/board/esd/pci405/cmd_pci405.c | 95 | ||||
-rw-r--r-- | qemu/roms/u-boot/board/esd/pci405/flash.c | 85 | ||||
-rw-r--r-- | qemu/roms/u-boot/board/esd/pci405/fpgadata.c | 1492 | ||||
-rw-r--r-- | qemu/roms/u-boot/board/esd/pci405/pci405.c | 366 | ||||
-rw-r--r-- | qemu/roms/u-boot/board/esd/pci405/pci405.h | 16 | ||||
-rw-r--r-- | qemu/roms/u-boot/board/esd/pci405/writeibm.S | 205 |
7 files changed, 2268 insertions, 0 deletions
diff --git a/qemu/roms/u-boot/board/esd/pci405/Makefile b/qemu/roms/u-boot/board/esd/pci405/Makefile new file mode 100644 index 000000000..9e659c796 --- /dev/null +++ b/qemu/roms/u-boot/board/esd/pci405/Makefile @@ -0,0 +1,9 @@ +# +# (C) Copyright 2000-2006 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y = pci405.o flash.o ../common/misc.o cmd_pci405.o +obj-y += writeibm.o diff --git a/qemu/roms/u-boot/board/esd/pci405/cmd_pci405.c b/qemu/roms/u-boot/board/esd/pci405/cmd_pci405.c new file mode 100644 index 000000000..55c20d02d --- /dev/null +++ b/qemu/roms/u-boot/board/esd/pci405/cmd_pci405.c @@ -0,0 +1,95 @@ +/* + * (C) Copyright 2002-2004 + * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <command.h> +#include <malloc.h> +#include <net.h> +#include <asm/io.h> +#include <pci.h> +#include <asm/4xx_pci.h> +#include <asm/processor.h> + +#include "pci405.h" + +#if defined(CONFIG_CMD_BSP) + +/* + * Command loadpci: wait for signal from host and boot image. + */ +int do_loadpci(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + unsigned int *ptr = 0; + int count = 0; + int count2 = 0; + int i; + char addr[16]; + char str[] = "\\|/-"; + char *local_args[2]; + + /* + * Mark sync address + */ + ptr = 0; + *ptr = 0xffffffff; + puts("\nWaiting for image from pci host -"); + + /* + * Wait for host to write the start address + */ + while (*ptr == 0xffffffff) { + count++; + if (!(count % 100)) { + count2++; + putc(0x08); /* backspace */ + putc(str[count2 % 4]); + } + + /* Abort if ctrl-c was pressed */ + if (ctrlc()) { + puts("\nAbort\n"); + return 0; + } + + udelay(1000); + } + + if (*ptr == PCI_RECONFIG_MAGIC) { + /* + * Save own pci configuration in PRAM + */ + memset((char *)PCI_REGS_ADDR, 0, PCI_REGS_LEN); + ptr = (unsigned int *)PCI_REGS_ADDR + 1; + for (i=0; i<0x40; i+=4) { + pci_read_config_dword(PCIDEVID_405GP, i, ptr++); + } + ptr = (unsigned int *)PCI_REGS_ADDR; + *ptr = crc32(0, (uchar *)PCI_REGS_ADDR+4, PCI_REGS_LEN-4); + + printf("\nStoring PCI Configuration Regs...\n"); + } else { + sprintf(addr, "%08x", *ptr); + + /* + * Boot image via bootm + */ + printf("\nBooting Image at addr 0x%s ...\n", addr); + setenv("loadaddr", addr); + + local_args[0] = argv[0]; + local_args[1] = NULL; + do_bootm (cmdtp, 0, 1, local_args); + } + + return 0; +} +U_BOOT_CMD( + loadpci, 1, 1, do_loadpci, + "Wait for pci-image and boot it", + "" +); +#endif diff --git a/qemu/roms/u-boot/board/esd/pci405/flash.c b/qemu/roms/u-boot/board/esd/pci405/flash.c new file mode 100644 index 000000000..113111d3a --- /dev/null +++ b/qemu/roms/u-boot/board/esd/pci405/flash.c @@ -0,0 +1,85 @@ +/* + * (C) Copyright 2001 + * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <asm/ppc4xx.h> +#include <asm/processor.h> + +/* + * include common flash code (for esd boards) + */ +#include "../common/flash.c" + +/*----------------------------------------------------------------------- + * Functions + */ +static ulong flash_get_size (vu_long * addr, flash_info_t * info); +static void flash_get_offsets (ulong base, flash_info_t * info); + +/*----------------------------------------------------------------------- + */ + +unsigned long flash_init (void) +{ + unsigned long size_b0; + int i; + uint pbcr; + unsigned long base_b0; + int size_val = 0; + + /* Init: no FLASHes known */ + for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) { + flash_info[i].flash_id = FLASH_UNKNOWN; + } + + /* Static FLASH Bank configuration here - FIXME XXX */ + + size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]); + + if (flash_info[0].flash_id == FLASH_UNKNOWN) { + printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n", + size_b0, size_b0<<20); + } + + /* Setup offsets */ + flash_get_offsets (-size_b0, &flash_info[0]); + + /* Re-do sizing to get full correct info */ + mtdcr(EBC0_CFGADDR, PB0CR); + pbcr = mfdcr(EBC0_CFGDATA); + mtdcr(EBC0_CFGADDR, PB0CR); + base_b0 = -size_b0; + switch (size_b0) { + case 1 << 20: + size_val = 0; + break; + case 2 << 20: + size_val = 1; + break; + case 4 << 20: + size_val = 2; + break; + case 8 << 20: + size_val = 3; + break; + case 16 << 20: + size_val = 4; + break; + } + pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17); + mtdcr(EBC0_CFGDATA, pbcr); + + /* Monitor protection ON by default */ + (void)flash_protect(FLAG_PROTECT_SET, + -monitor_flash_len, + 0xffffffff, + &flash_info[0]); + + flash_info[0].size = size_b0; + + return (size_b0); +} diff --git a/qemu/roms/u-boot/board/esd/pci405/fpgadata.c b/qemu/roms/u-boot/board/esd/pci405/fpgadata.c new file mode 100644 index 000000000..d145826f5 --- /dev/null +++ b/qemu/roms/u-boot/board/esd/pci405/fpgadata.c @@ -0,0 +1,1492 @@ +0x1f, 0x8b, 0x08, 0x08, 0xcd, 0x78, 0x61, 0x3f, +0x00, 0x03, 0x70, 0x63, 0x69, 0x34, 0x30, 0x35, +0x5f, 0x31, 0x5f, 0x30, 0x34, 0x2e, 0x62, 0x69, +0x74, 0x00, 0xed, 0x9c, 0x7f, 0x78, 0x14, 0xc7, +0x99, 0xe7, 0xdf, 0xae, 0xee, 0x11, 0x2d, 0xcd, +0x88, 0x69, 0x89, 0x11, 0x1e, 0x3b, 0x32, 0xdb, +0x1a, 0x09, 0x3c, 0xc1, 0x23, 0x69, 0x18, 0x61, +0x85, 0x60, 0x79, 0xd4, 0x8c, 0x04, 0x19, 0x1b, +0xd9, 0x4c, 0x6c, 0x27, 0x61, 0xf3, 0xf8, 0xc9, +0x8e, 0x1d, 0x92, 0x23, 0x59, 0x92, 0x47, 0x90, +0xdc, 0x2e, 0x49, 0x9c, 0x6c, 0x8d, 0x24, 0xd0, +0x00, 0xb2, 0x19, 0x30, 0x97, 0xb0, 0x59, 0xce, +0x3b, 0x60, 0x12, 0x0b, 0x9b, 0x64, 0x07, 0x61, +0x1b, 0x61, 0x88, 0xdd, 0x92, 0x85, 0x23, 0x40, +0x06, 0x85, 0xf5, 0x79, 0xb1, 0xcd, 0xe2, 0xc1, +0x91, 0xbd, 0xb2, 0x23, 0x63, 0x19, 0xb3, 0x8e, +0x00, 0x19, 0xdd, 0x5b, 0xdd, 0x3d, 0xdd, 0x2d, +0xe1, 0xfd, 0x71, 0xb7, 0xf7, 0xdc, 0xde, 0xf3, +0x9c, 0xdb, 0x7f, 0xb8, 0x50, 0xa9, 0xba, 0xab, +0xab, 0xde, 0xfa, 0xd4, 0xf7, 0x7d, 0xdf, 0x6a, +0x41, 0xbe, 0x7b, 0x54, 0xff, 0x0f, 0x80, 0xbb, +0x1f, 0xa4, 0xe6, 0xaf, 0x7f, 0x6b, 0x7e, 0xf0, +0x96, 0x3f, 0x9b, 0xf7, 0x67, 0xc1, 0xf9, 0x55, +0xdf, 0xfd, 0xfa, 0x0a, 0x78, 0x00, 0x0a, 0x42, +0xdf, 0x9b, 0x77, 0xcb, 0xf7, 0x57, 0xcf, 0x9b, +0x3f, 0x1f, 0xbe, 0x0e, 0xce, 0x50, 0x30, 0x58, +0x53, 0x1d, 0x5c, 0x50, 0x1d, 0xba, 0x05, 0x56, +0x40, 0xfe, 0xbc, 0x05, 0x0b, 0x83, 0xb7, 0x2c, +0x9c, 0x57, 0x03, 0xdf, 0x00, 0x88, 0x27, 0x27, +0xf0, 0x7a, 0xe2, 0xaf, 0xbf, 0xf4, 0xcd, 0x20, +0x50, 0x0e, 0x00, 0xa6, 0x05, 0xb9, 0x38, 0xfb, +0x7f, 0x5e, 0x90, 0x93, 0x39, 0xa0, 0xf5, 0x95, +0x41, 0x50, 0xd9, 0xbf, 0xc1, 0xa8, 0xcf, 0x0f, +0x82, 0x6c, 0xff, 0x37, 0x17, 0x04, 0x05, 0x62, +0xe0, 0xf9, 0x0e, 0x14, 0x4b, 0x30, 0xe5, 0xe2, +0x14, 0x81, 0xea, 0xa5, 0x7f, 0xad, 0x8e, 0x4c, +0xad, 0x62, 0xd7, 0xbf, 0xa3, 0xae, 0xf8, 0x13, +0xaa, 0x84, 0xff, 0x58, 0xdd, 0x84, 0x04, 0x71, +0xf0, 0x42, 0x1e, 0x70, 0xd4, 0x2c, 0xd4, 0xf7, +0xe9, 0x75, 0xaa, 0x63, 0x5c, 0x7e, 0xbd, 0x68, +0x46, 0x9f, 0xbb, 0x9f, 0x8c, 0xd3, 0x93, 0x05, +0x3e, 0xa5, 0x70, 0x8c, 0x0f, 0x42, 0xb3, 0xde, +0x23, 0xe9, 0x3d, 0xba, 0x59, 0x29, 0xff, 0x47, +0x67, 0x92, 0x5c, 0x8d, 0x6c, 0x96, 0x7d, 0x59, +0x31, 0x58, 0x20, 0x0b, 0x41, 0xad, 0x2e, 0xe9, +0x18, 0x96, 0x1f, 0x89, 0x77, 0xf6, 0x3b, 0x81, +0x74, 0xc0, 0x63, 0xa2, 0x4f, 0xc9, 0x0f, 0x92, +0x5d, 0x9c, 0xde, 0x4e, 0x2d, 0xe9, 0x74, 0x3c, +0x29, 0xcc, 0x55, 0x9d, 0x69, 0x18, 0x11, 0x9e, +0x04, 0xd6, 0x8e, 0x64, 0x84, 0xb8, 0xde, 0xa7, +0x92, 0x63, 0xf0, 0xba, 0xb0, 0x50, 0x75, 0xb7, +0xf1, 0x7b, 0xe1, 0x0f, 0x10, 0x6a, 0x2e, 0xcc, +0xf0, 0x54, 0xd0, 0xdb, 0x65, 0xb9, 0x27, 0x94, +0xd7, 0xe1, 0x73, 0x3d, 0xee, 0x97, 0x1b, 0x46, +0xe0, 0x1f, 0xe0, 0x79, 0xd5, 0x3d, 0xca, 0xaf, +0x05, 0xbd, 0x9d, 0x22, 0xed, 0x26, 0xc7, 0x21, +0xa4, 0xba, 0x93, 0xfc, 0x00, 0x1c, 0x87, 0xae, +0xd8, 0xf4, 0x0c, 0x2f, 0x09, 0xb2, 0x56, 0xd7, +0xef, 0xa8, 0xfb, 0xb6, 0x9b, 0x94, 0xab, 0xce, +0xa7, 0xc8, 0x55, 0x79, 0x33, 0xc8, 0xaa, 0x98, +0x21, 0x21, 0x9c, 0x3f, 0xed, 0x9e, 0x8e, 0x3b, +0xc9, 0x26, 0xfc, 0x91, 0x33, 0xd8, 0x32, 0x00, +0x8f, 0x80, 0x4c, 0x0b, 0x82, 0x64, 0x01, 0xce, +0x2c, 0xbb, 0xe2, 0xdc, 0xac, 0xb6, 0x76, 0x5a, +0x96, 0x75, 0xfe, 0x29, 0x39, 0x0b, 0x3f, 0xa3, +0xe5, 0x9d, 0xe2, 0x5a, 0xe2, 0x35, 0xda, 0x45, +0x45, 0x11, 0x5e, 0x68, 0x09, 0x1e, 0x75, 0xcf, +0xe7, 0x07, 0x92, 0xaf, 0xd3, 0xe0, 0xf0, 0x5d, +0x41, 0x67, 0xb1, 0x31, 0x6f, 0xca, 0x8d, 0xdd, +0xf4, 0x7d, 0x8e, 0x75, 0xaf, 0x61, 0x5c, 0x7e, +0x1f, 0x6e, 0xa3, 0xee, 0x0f, 0xf8, 0xc1, 0x3c, +0xbd, 0x9f, 0x9d, 0xdc, 0xb0, 0xe0, 0xfc, 0x76, +0x78, 0x60, 0x73, 0x95, 0x33, 0x90, 0xbe, 0x22, +0x97, 0x52, 0x57, 0x86, 0x7f, 0xd7, 0x18, 0xcf, +0x68, 0xd1, 0xc6, 0x64, 0xbb, 0x5c, 0x39, 0xe0, +0x8c, 0xb5, 0x94, 0xc2, 0x81, 0x95, 0x95, 0x54, +0x6c, 0x26, 0xa7, 0x8c, 0x71, 0xa1, 0xf0, 0xa8, +0xf2, 0xf8, 0xb6, 0xca, 0xec, 0xa6, 0xe1, 0xbc, +0x59, 0x70, 0x80, 0x56, 0xa7, 0xb1, 0x2f, 0x59, +0x30, 0xde, 0x4f, 0x3a, 0x91, 0x78, 0x0c, 0x56, +0xa9, 0xce, 0xd0, 0xcc, 0x26, 0xd8, 0x0f, 0x81, +0x14, 0x8e, 0xe7, 0x05, 0x63, 0x1e, 0x86, 0x4b, +0x0e, 0xb5, 0xbc, 0x0b, 0x61, 0xea, 0x4e, 0xf3, +0x7e, 0xb8, 0x0c, 0xf5, 0x89, 0x1d, 0x69, 0xfe, +0xb2, 0x71, 0xcf, 0x28, 0x8e, 0xe8, 0x69, 0x78, +0x10, 0x70, 0xac, 0xd3, 0x30, 0x06, 0x61, 0x52, +0xdf, 0xc6, 0x9f, 0x02, 0xbd, 0x9d, 0x28, 0x1d, +0x81, 0xa3, 0x10, 0x52, 0x2a, 0xbb, 0xf8, 0x21, +0xe1, 0x28, 0xd4, 0xad, 0x3c, 0x91, 0x2a, 0xef, +0x35, 0xee, 0x49, 0x85, 0x6f, 0x8a, 0xac, 0x4e, +0xdc, 0xe6, 0xeb, 0x53, 0x36, 0x40, 0x55, 0x5c, +0xfc, 0x29, 0xf6, 0x45, 0xb7, 0x75, 0xaf, 0xa3, +0x02, 0xb6, 0x80, 0x6f, 0x91, 0xb8, 0x2d, 0x6f, +0x08, 0x36, 0xc0, 0x77, 0x55, 0x48, 0x91, 0x17, +0x8d, 0x31, 0x13, 0x85, 0x42, 0x92, 0x50, 0xe4, +0x2f, 0x8a, 0x52, 0xde, 0x8b, 0x90, 0x50, 0x56, +0x2d, 0x12, 0x3d, 0xa4, 0x97, 0xd3, 0xc7, 0xac, +0xbb, 0x30, 0x4e, 0xfa, 0xb9, 0x10, 0xb8, 0x28, +0x9f, 0x25, 0xfd, 0x10, 0x86, 0x2a, 0xca, 0x9f, +0xe7, 0xf5, 0x79, 0xd8, 0x7e, 0xe3, 0x3f, 0xc3, +0x3b, 0xca, 0xb3, 0x31, 0x77, 0x6a, 0xc6, 0x5b, +0x70, 0x49, 0xa9, 0xc7, 0x02, 0xff, 0x76, 0x9e, +0x3e, 0x66, 0xdb, 0x1d, 0xaf, 0xc0, 0xab, 0x10, +0x56, 0x02, 0x29, 0x7e, 0x08, 0x2e, 0x49, 0xf5, +0x77, 0xb8, 0x07, 0xf9, 0x39, 0xc6, 0x78, 0x2e, +0x90, 0x7e, 0xff, 0x66, 0x52, 0xae, 0x12, 0x45, +0x8a, 0xdd, 0xeb, 0xf6, 0x54, 0x49, 0xce, 0x16, +0x32, 0xdd, 0x78, 0x07, 0xd1, 0xd1, 0xe7, 0xdc, +0x19, 0x0d, 0xdc, 0x1d, 0x95, 0x48, 0x9f, 0xb2, +0x8f, 0x0b, 0x64, 0x9d, 0x52, 0x4b, 0x8b, 0x61, +0x9f, 0xde, 0x92, 0x5f, 0x90, 0x3d, 0x10, 0x50, +0xc4, 0x54, 0xde, 0x08, 0x77, 0x10, 0xaa, 0x14, +0x67, 0x8a, 0xac, 0x37, 0xc6, 0x2c, 0x5d, 0xf4, +0xb6, 0xe7, 0x92, 0x10, 0x56, 0x5c, 0xf8, 0x3c, +0xe9, 0x12, 0x84, 0xb1, 0x2f, 0xce, 0x4e, 0xc3, +0xce, 0xfc, 0xdc, 0xe3, 0x70, 0x3d, 0x84, 0x17, +0xb9, 0xbb, 0xf8, 0x11, 0xc0, 0x3a, 0x65, 0x5a, +0x8a, 0xbf, 0xc3, 0x98, 0x23, 0xbf, 0x44, 0xd9, +0x10, 0x83, 0xbb, 0x85, 0x97, 0xe5, 0x31, 0xe8, +0x02, 0x57, 0x92, 0x3f, 0x96, 0x6b, 0xe7, 0x58, +0xa8, 0x6c, 0xe4, 0xaa, 0xa8, 0x73, 0x37, 0xff, +0x2d, 0xcf, 0xb3, 0xe0, 0xa3, 0xe2, 0x30, 0x39, +0x66, 0x2c, 0x51, 0xbf, 0x63, 0x19, 0xd7, 0x0a, +0x01, 0xb4, 0x4f, 0x52, 0x88, 0x73, 0x2b, 0x2b, +0x62, 0x37, 0xd6, 0xe9, 0xe3, 0x92, 0xe6, 0x4a, +0xe5, 0xf6, 0xda, 0xca, 0x7e, 0xe7, 0x18, 0xb9, +0x0f, 0x6d, 0xa2, 0x3c, 0xee, 0x6f, 0x6e, 0xe9, +0x37, 0xc6, 0xba, 0x53, 0x9c, 0x05, 0xff, 0x44, +0x7f, 0x7c, 0xd9, 0x3d, 0x7c, 0xdd, 0x2c, 0xf8, +0x50, 0x9d, 0x17, 0x77, 0xad, 0xe5, 0x8f, 0x19, +0xf6, 0x29, 0x16, 0xee, 0x26, 0x7f, 0xa8, 0x08, +0x9f, 0x76, 0xaf, 0xff, 0xc2, 0x5b, 0xe9, 0x2b, +0x2b, 0xeb, 0x14, 0x77, 0x86, 0xef, 0x35, 0xec, +0x53, 0x71, 0x5c, 0x90, 0x4e, 0xaa, 0x37, 0x0f, +0x09, 0xe3, 0x0d, 0x0b, 0x61, 0x82, 0xd6, 0xc7, +0x5d, 0x63, 0xbc, 0x64, 0x8c, 0x67, 0x67, 0x51, +0x86, 0x6c, 0xce, 0x94, 0xab, 0xe2, 0xb7, 0xf8, +0xe5, 0xd8, 0x97, 0xca, 0x95, 0xe2, 0xa8, 0x6f, +0xae, 0x31, 0x2e, 0xc5, 0x90, 0x8a, 0xff, 0x5d, +0xf1, 0xfd, 0x6a, 0xb4, 0xb9, 0xc5, 0x0b, 0x07, +0xa0, 0xb2, 0x49, 0x8c, 0x13, 0x81, 0xea, 0xef, +0x17, 0x97, 0xfa, 0x0b, 0x1e, 0x83, 0xb4, 0xda, +0x29, 0x10, 0x45, 0x44, 0xfb, 0x8c, 0x8b, 0x69, +0xe2, 0x6d, 0xd3, 0xe7, 0xa1, 0xb3, 0xe4, 0xd7, +0xe4, 0x7d, 0xa8, 0x51, 0x5d, 0xdb, 0xf8, 0x0a, +0x98, 0xe0, 0xea, 0xd4, 0x8e, 0x94, 0xb3, 0xaa, +0x4d, 0xbf, 0x67, 0x0a, 0xde, 0x83, 0xbf, 0x87, +0x9f, 0xa8, 0x38, 0xdd, 0x23, 0x70, 0x05, 0x66, +0x0d, 0x60, 0x21, 0x6b, 0xd8, 0x67, 0x42, 0x1a, +0x87, 0x93, 0x30, 0x4f, 0xed, 0x18, 0x69, 0xbd, +0x40, 0xeb, 0xd1, 0x18, 0x5d, 0x83, 0xbc, 0xdc, +0xa8, 0xd7, 0xad, 0x13, 0x16, 0x93, 0x4d, 0x42, +0x48, 0xf5, 0x27, 0x23, 0xbf, 0x87, 0x43, 0xe0, +0x8b, 0x8b, 0x29, 0x52, 0xa1, 0xe8, 0xf6, 0x49, +0x1d, 0x15, 0xf2, 0x26, 0xf0, 0xa9, 0xf8, 0xa3, +0x21, 0x7c, 0x07, 0x5f, 0xa3, 0xd8, 0x45, 0x64, +0x63, 0x3c, 0x45, 0x01, 0xa0, 0x35, 0x88, 0x78, +0x20, 0x64, 0x00, 0xeb, 0x1e, 0x68, 0xc2, 0x75, +0x44, 0x0c, 0xfb, 0xa4, 0x85, 0x71, 0xf1, 0xa4, +0xbf, 0x46, 0x15, 0xbb, 0x5a, 0xb3, 0x30, 0xa1, +0x74, 0x29, 0xae, 0x34, 0x2f, 0x13, 0x63, 0x1e, +0x6e, 0x1c, 0x13, 0xae, 0xc8, 0xb7, 0xaa, 0x6e, +0xe0, 0x47, 0x61, 0xc2, 0x1f, 0x5e, 0xee, 0xce, +0xf2, 0xc3, 0xd3, 0x0c, 0xd6, 0x39, 0xc6, 0xc9, +0x49, 0x39, 0x2c, 0xbb, 0x2f, 0xf0, 0x21, 0xe5, +0x64, 0x4b, 0x38, 0x1b, 0x18, 0xc3, 0x5f, 0xca, +0xf1, 0x73, 0x42, 0xd8, 0x1c, 0xac, 0x2a, 0x70, +0x7e, 0x44, 0xfc, 0x74, 0x13, 0xad, 0xca, 0xe2, +0xdc, 0x66, 0x4d, 0x7e, 0xbe, 0x84, 0xd8, 0x5c, +0x45, 0x9d, 0xf3, 0x5a, 0x28, 0x7d, 0x0c, 0x0d, +0x00, 0xfb, 0xf2, 0xa6, 0xc9, 0xcf, 0xbd, 0xf0, +0x24, 0x54, 0x25, 0x9d, 0x19, 0x5f, 0x27, 0x2b, +0x30, 0x9e, 0x8d, 0x9a, 0xfc, 0x1c, 0x41, 0x6c, +0xe2, 0xf3, 0x32, 0xce, 0x5f, 0xf8, 0xb0, 0xa0, +0x22, 0x5f, 0x54, 0x93, 0x9f, 0x87, 0xe1, 0x0d, +0xa8, 0x97, 0x91, 0x4b, 0x3f, 0x66, 0x05, 0xc6, +0xcf, 0x31, 0x93, 0x9f, 0x7b, 0x71, 0x88, 0x71, +0x18, 0x33, 0xb8, 0x8e, 0xae, 0x40, 0xb8, 0x67, +0x73, 0x86, 0x1f, 0x34, 0xf9, 0x59, 0x2a, 0xd4, +0xc3, 0x2e, 0x05, 0xa7, 0x7b, 0x04, 0xc7, 0x13, +0x8d, 0x31, 0x43, 0x2e, 0x98, 0xfc, 0x6c, 0x12, +0xf7, 0x0b, 0x15, 0x8a, 0x98, 0x51, 0xb2, 0x8c, +0x3d, 0xcc, 0x50, 0xc7, 0x8c, 0xf1, 0x94, 0x39, +0x44, 0xd5, 0xb6, 0x9b, 0x56, 0x46, 0x7f, 0x40, +0x5e, 0x81, 0x03, 0xe9, 0xca, 0xac, 0x73, 0x2d, +0xe9, 0x37, 0xf9, 0x39, 0x1d, 0x1f, 0x33, 0x7f, +0xcc, 0x15, 0xe4, 0x55, 0xf8, 0x30, 0x5d, 0x97, +0x75, 0x07, 0xf9, 0x53, 0x26, 0x3f, 0x0f, 0xc3, +0x44, 0xf4, 0xf3, 0x7d, 0xd5, 0xa3, 0x5a, 0x5f, +0xb4, 0x7e, 0x9a, 0xfc, 0x74, 0x0c, 0xc8, 0xc7, +0x69, 0xed, 0x76, 0xf7, 0xf3, 0x4b, 0xfd, 0xf4, +0x0a, 0xd4, 0x65, 0x27, 0xf1, 0x73, 0x07, 0xb4, +0x42, 0x59, 0xeb, 0xd2, 0xd5, 0xa4, 0x54, 0xf9, +0x19, 0x54, 0xa2, 0x31, 0xda, 0xf9, 0xa9, 0x3e, +0x4e, 0x59, 0x17, 0x8a, 0xbf, 0x5a, 0x76, 0x00, +0x0b, 0x76, 0x7e, 0x7a, 0x06, 0xb0, 0x9d, 0xff, +0x02, 0x76, 0xfd, 0x2e, 0xdc, 0x03, 0x02, 0xaa, +0xd7, 0xce, 0xcf, 0x4e, 0x62, 0xf0, 0xf3, 0xcf, +0x91, 0x9f, 0x61, 0x1a, 0x98, 0xc4, 0x4f, 0x61, +0x0c, 0x6a, 0x05, 0x37, 0x9d, 0x91, 0x96, 0xb5, +0xc5, 0x4d, 0x4d, 0x7e, 0x26, 0xa5, 0x3e, 0xc6, +0x25, 0xb4, 0x5d, 0xa2, 0xb3, 0x00, 0x6d, 0xf7, +0x4d, 0x93, 0x9f, 0x2b, 0xc4, 0x0d, 0xa4, 0x6a, +0x91, 0x33, 0x55, 0x3c, 0x04, 0x06, 0x5f, 0xec, +0xfc, 0xfc, 0x6b, 0xfd, 0x47, 0x66, 0x9d, 0xc5, +0x4f, 0x01, 0xb1, 0x19, 0x88, 0x2d, 0xf5, 0x2c, +0x39, 0x02, 0xfb, 0x10, 0x50, 0x4e, 0xc9, 0xce, +0x4f, 0x38, 0xcd, 0xba, 0x00, 0xb8, 0x44, 0x8c, +0xbe, 0x58, 0xfc, 0x64, 0xd8, 0xac, 0x52, 0xdc, +0xdb, 0x18, 0x23, 0xf5, 0xbe, 0xe4, 0xf8, 0xe9, +0x75, 0x5c, 0x4c, 0x5f, 0x82, 0xda, 0x98, 0x6b, +0x8b, 0x56, 0x57, 0xcf, 0xea, 0x5e, 0x34, 0xf9, +0x79, 0xce, 0x95, 0x91, 0x11, 0x47, 0xeb, 0x8a, +0xb3, 0xb4, 0x1b, 0xef, 0xb9, 0x94, 0x92, 0x13, +0x16, 0x3f, 0x61, 0x5f, 0x14, 0x6d, 0xa2, 0x98, +0xf4, 0x95, 0x99, 0x7d, 0x31, 0xee, 0x59, 0xb4, +0x5b, 0x3a, 0x88, 0x7b, 0x40, 0x32, 0x15, 0x62, +0xef, 0x30, 0x57, 0x7b, 0x87, 0x1c, 0x3f, 0x4b, +0xf0, 0x31, 0x42, 0x28, 0xe6, 0xd2, 0x78, 0x8d, +0xef, 0x87, 0xcf, 0x1b, 0x36, 0xec, 0xd3, 0xcf, +0xed, 0x86, 0x0f, 0x20, 0xbc, 0xa2, 0x3a, 0x65, +0xf5, 0xf3, 0x98, 0x61, 0x9f, 0x7e, 0x29, 0x0d, +0xfd, 0x10, 0x92, 0x02, 0x74, 0x46, 0x16, 0xfa, +0xf5, 0xf7, 0xb3, 0xf8, 0xe9, 0x27, 0x4f, 0xc0, +0xae, 0x84, 0x98, 0x2e, 0x1e, 0x86, 0xd7, 0x70, +0xe7, 0x70, 0xa6, 0x91, 0x91, 0x8a, 0x51, 0xd7, +0x84, 0x73, 0xeb, 0x63, 0xcb, 0x67, 0x00, 0x66, +0xe8, 0xf6, 0x69, 0xf1, 0x33, 0x0c, 0xed, 0xc1, +0xb2, 0x01, 0x71, 0x0d, 0xb9, 0x4a, 0x99, 0xbd, +0x38, 0x9b, 0xc9, 0xb0, 0xc9, 0xcf, 0x30, 0xfc, +0xb6, 0xf3, 0x7b, 0xef, 0xba, 0x7e, 0xc0, 0x5f, +0x95, 0xff, 0x81, 0xde, 0x96, 0x75, 0xaf, 0xe5, +0xdf, 0xcd, 0xf1, 0xf3, 0x46, 0x5c, 0x2b, 0xf1, +0x70, 0xbf, 0x7b, 0x1f, 0xff, 0x9e, 0x7a, 0x85, +0x4d, 0xb2, 0xc5, 0x4f, 0x70, 0x5c, 0xa5, 0x88, +0xcd, 0x21, 0xd7, 0x25, 0x7e, 0x16, 0x9c, 0xa4, +0xf5, 0x59, 0xf7, 0x18, 0x1a, 0x78, 0x8e, 0x9f, +0x0f, 0x2b, 0xed, 0x50, 0x39, 0x2c, 0xfe, 0x30, +0x52, 0x8a, 0x9d, 0xaa, 0xec, 0xc3, 0xe7, 0xbd, +0x9b, 0x5b, 0xb7, 0xd0, 0xb1, 0x08, 0xbb, 0xd0, +0x27, 0xd6, 0x90, 0x3a, 0x78, 0x5c, 0xef, 0x8b, +0x6a, 0xd8, 0xa7, 0xec, 0x19, 0x10, 0xd9, 0x1e, +0xe0, 0xc7, 0x3d, 0x80, 0x1a, 0x9b, 0x41, 0xbf, +0x90, 0xe3, 0xe7, 0x5e, 0x6d, 0x29, 0xbb, 0x46, +0xf9, 0x3a, 0xf2, 0x07, 0xbd, 0x2f, 0xef, 0x9a, +0x36, 0x3f, 0x02, 0x7f, 0xa3, 0xff, 0xe8, 0x3c, +0xae, 0x5b, 0xad, 0x90, 0xe3, 0x27, 0x87, 0xfc, +0x9c, 0xe0, 0xea, 0x7b, 0xdc, 0xcd, 0x33, 0xea, +0xe0, 0x0d, 0x4e, 0x5b, 0x63, 0xaa, 0xc1, 0xcf, +0x84, 0xb0, 0x4a, 0x3c, 0x04, 0x55, 0x3d, 0xb8, +0xcc, 0x03, 0xa8, 0xa5, 0xaa, 0xd8, 0x7a, 0xcf, +0xe6, 0xf8, 0xc9, 0x05, 0xf0, 0x56, 0x73, 0xd8, +0x8f, 0x5c, 0xb0, 0xc9, 0xa8, 0xb3, 0xf6, 0x77, +0xd8, 0xcf, 0xad, 0xea, 0xc7, 0xee, 0xb9, 0xa0, +0x55, 0x0a, 0xf4, 0x61, 0x21, 0x67, 0x9f, 0x50, +0xb8, 0x0a, 0x26, 0x84, 0x5b, 0x06, 0xdc, 0xa3, +0xce, 0x3a, 0xbc, 0x67, 0x78, 0x10, 0xfb, 0xa2, +0xf2, 0x39, 0x7e, 0xbe, 0x07, 0x13, 0xec, 0x47, +0xfb, 0xf8, 0x71, 0x78, 0x5f, 0xef, 0xcb, 0x70, +0x5e, 0x8e, 0x9f, 0x57, 0x61, 0x9c, 0xd6, 0xa8, +0x9b, 0xc6, 0xf8, 0xab, 0xf0, 0x47, 0x24, 0xbd, +0x6b, 0xd8, 0xd4, 0x9f, 0xaa, 0x74, 0x1e, 0xba, +0xc5, 0xf2, 0x51, 0x67, 0x26, 0x82, 0xef, 0x97, +0xa8, 0x92, 0xc5, 0x4e, 0x12, 0x34, 0xde, 0xaf, +0xdf, 0x31, 0x00, 0x87, 0x7c, 0xfe, 0x41, 0x67, +0x30, 0xaf, 0x83, 0x71, 0x89, 0x8a, 0x32, 0x09, +0xd9, 0xf8, 0x89, 0xdb, 0x02, 0x76, 0x3d, 0x8f, +0xf1, 0xac, 0x2a, 0x85, 0xfb, 0x51, 0xd0, 0xe2, +0xa7, 0x30, 0x46, 0xbb, 0x7a, 0xb0, 0x7b, 0x7b, +0xa5, 0x1f, 0x31, 0x7e, 0xa6, 0x79, 0x00, 0x93, +0x9f, 0xc2, 0x78, 0x8a, 0x75, 0xaf, 0x15, 0x07, +0x0f, 0x6e, 0x53, 0x91, 0xf3, 0x63, 0x46, 0xbb, +0x18, 0xf2, 0xf3, 0x55, 0x65, 0x21, 0x1b, 0x62, +0xb6, 0x57, 0x85, 0x06, 0x5d, 0xbb, 0xf8, 0x12, +0x93, 0x9f, 0x01, 0x61, 0x83, 0x50, 0x3d, 0x88, +0xfa, 0x93, 0x3d, 0xcf, 0xd7, 0x23, 0xfa, 0x5b, +0x72, 0xfa, 0x73, 0x18, 0xed, 0x73, 0x3b, 0x17, +0xe8, 0x75, 0xde, 0x42, 0x06, 0x38, 0xb6, 0xbf, +0xe7, 0xcb, 0xc5, 0x41, 0x63, 0xc8, 0x46, 0x91, +0x9f, 0x6d, 0x88, 0xcd, 0x4d, 0x6b, 0x51, 0x7f, +0x1e, 0xa0, 0x8f, 0xad, 0xfd, 0xec, 0x30, 0x1a, +0x87, 0x7e, 0x45, 0x45, 0x17, 0x9c, 0xca, 0x2e, +0x50, 0xdd, 0x0b, 0x50, 0xef, 0x7e, 0x08, 0xa1, +0x6c, 0xa1, 0xcc, 0x17, 0xe7, 0xe9, 0x75, 0xca, +0x8d, 0x3b, 0xe0, 0x6a, 0x10, 0xa7, 0xfb, 0x83, +0x69, 0xe3, 0x1a, 0x3f, 0xa7, 0xcb, 0xce, 0xc1, +0x3c, 0xbd, 0x2f, 0xc8, 0x4f, 0x38, 0x4e, 0xd7, +0x5c, 0x78, 0x30, 0xd3, 0x10, 0x60, 0x9c, 0xcf, +0xe2, 0xfb, 0xf5, 0x1a, 0xef, 0xd7, 0x5f, 0xb4, +0xc3, 0xd3, 0x2e, 0x96, 0xfd, 0x4e, 0x6c, 0x2e, +0x46, 0xfd, 0xc9, 0xf6, 0x9c, 0x38, 0x72, 0x3e, +0x67, 0x4b, 0x8f, 0x92, 0xf6, 0x64, 0xd9, 0x3b, +0xc9, 0xb5, 0xa1, 0x59, 0x22, 0xe3, 0xa7, 0x7f, +0x25, 0xb2, 0x5c, 0xbf, 0x67, 0x94, 0xf1, 0x53, +0xd0, 0x64, 0xb5, 0x4b, 0xdb, 0x03, 0x70, 0xac, +0x5f, 0x33, 0xf9, 0x99, 0x84, 0x63, 0xd0, 0x45, +0x5d, 0x69, 0xa7, 0xa6, 0x3f, 0xa9, 0x2b, 0xcb, +0x5f, 0xce, 0xb5, 0x03, 0x44, 0x15, 0x0d, 0x4b, +0xb8, 0x94, 0x35, 0x66, 0xc9, 0x8c, 0x9f, 0x39, +0xbe, 0x48, 0x43, 0xa8, 0xe7, 0xc3, 0xcd, 0xee, +0x9f, 0xa3, 0x2e, 0x30, 0x58, 0x40, 0x8c, 0xf1, +0x44, 0x7e, 0x02, 0xf2, 0x53, 0xd9, 0x84, 0xdb, +0xba, 0xce, 0x48, 0xa9, 0x40, 0xe6, 0x2c, 0x7e, +0x6e, 0xd0, 0xb1, 0x89, 0x75, 0x0a, 0x2b, 0xf8, +0xf2, 0x72, 0xf6, 0xd9, 0x88, 0xfc, 0x6c, 0x44, +0x54, 0x79, 0x88, 0xa0, 0xf3, 0x73, 0x7b, 0x1e, +0xb1, 0xf1, 0x53, 0x65, 0x9c, 0xa7, 0x4e, 0x19, +0xba, 0x75, 0xbe, 0x54, 0x4d, 0xcb, 0xf1, 0x93, +0xe1, 0xa8, 0x2e, 0xe6, 0x96, 0x74, 0x46, 0xc6, +0x50, 0x63, 0x9e, 0x37, 0xf5, 0xe7, 0x45, 0xbd, +0x7b, 0x83, 0x3a, 0xb3, 0x98, 0x58, 0x39, 0x6f, +0xf2, 0x13, 0x65, 0xa7, 0x5c, 0x05, 0x4e, 0x4d, +0x7f, 0x72, 0x55, 0x9e, 0xa5, 0x2a, 0xb2, 0x5c, +0x7f, 0xbf, 0x28, 0xe3, 0xa7, 0x18, 0x88, 0x39, +0x8b, 0xd3, 0x7d, 0xae, 0x7d, 0xf0, 0x1d, 0xc5, +0x19, 0x23, 0xa7, 0x8c, 0x71, 0xf1, 0x96, 0xec, +0xce, 0xa1, 0x9f, 0xf1, 0xb3, 0x3a, 0xee, 0x1c, +0x44, 0x7e, 0xea, 0x75, 0x69, 0xcf, 0xee, 0xd2, +0x4b, 0x85, 0xa8, 0x31, 0x91, 0x91, 0x22, 0x3e, +0x2f, 0xce, 0xf8, 0x69, 0xb4, 0x5b, 0x09, 0xd8, +0x2e, 0xa5, 0x75, 0x81, 0xb5, 0x9b, 0xc5, 0xc6, +0xec, 0xb5, 0x1c, 0x23, 0xa5, 0xb4, 0x38, 0x06, +0x21, 0x7c, 0xad, 0x06, 0x36, 0xd6, 0xb5, 0x38, +0x4b, 0xc8, 0x4f, 0xfd, 0xdd, 0xfd, 0x82, 0x1f, +0x9e, 0x15, 0x7c, 0x4f, 0x39, 0xb3, 0x91, 0x61, +0x09, 0xf5, 0x67, 0xba, 0x3f, 0x4d, 0x7a, 0x0d, +0x3b, 0xf3, 0x3b, 0xee, 0x62, 0xb2, 0x73, 0xd4, +0x39, 0x0f, 0x98, 0x26, 0xaa, 0x60, 0x73, 0xdb, +0x6b, 0xee, 0xef, 0xa5, 0x15, 0xcf, 0xa7, 0xcb, +0x5a, 0x9c, 0x71, 0x72, 0x06, 0x9e, 0xa7, 0x15, +0xbb, 0xc4, 0x15, 0xe6, 0xfe, 0xee, 0x47, 0xfd, +0xf9, 0xc7, 0xd4, 0x3c, 0x86, 0xcd, 0xb3, 0x70, +0x95, 0xde, 0x92, 0x65, 0xfa, 0xd3, 0xb0, 0x4f, +0xe4, 0xa7, 0xf4, 0x61, 0x71, 0x78, 0x2b, 0xee, +0xa9, 0x23, 0x68, 0x13, 0x0b, 0xe9, 0x24, 0xfd, +0xf9, 0x0a, 0x4c, 0xa4, 0x34, 0x7e, 0x86, 0xe1, +0x4a, 0x1a, 0xf5, 0x67, 0x3f, 0xef, 0x35, 0xde, +0xaf, 0xb3, 0x68, 0x1b, 0xb4, 0xd2, 0x4a, 0x15, +0x97, 0x2b, 0xda, 0x67, 0x22, 0x10, 0x10, 0xd5, +0x82, 0xb9, 0x46, 0x9d, 0x04, 0xdb, 0x14, 0x94, +0x9d, 0x70, 0x7b, 0x73, 0xde, 0x0e, 0x78, 0x06, +0xc7, 0xd3, 0x7f, 0x1a, 0x27, 0x59, 0xaf, 0x8b, +0x7b, 0xfa, 0x60, 0x93, 0x10, 0x80, 0x7c, 0x19, +0x7d, 0xd1, 0x2e, 0x08, 0xa0, 0x71, 0x91, 0xe2, +0x36, 0xbd, 0xae, 0xbb, 0xa4, 0x43, 0x98, 0x40, +0x3d, 0x5f, 0x89, 0xeb, 0x9d, 0xad, 0x07, 0xb6, +0xde, 0xfd, 0x34, 0x67, 0xf3, 0xb8, 0x94, 0xb9, +0x3a, 0xb8, 0x2b, 0x73, 0xf3, 0x2a, 0xac, 0x7b, +0x90, 0x89, 0x80, 0x61, 0xc3, 0x3e, 0x13, 0xa9, +0xf1, 0xc6, 0x93, 0x10, 0x1a, 0x2e, 0x1d, 0xc5, +0x5f, 0xb8, 0x8a, 0x6b, 0xac, 0x63, 0x94, 0xcf, +0x9a, 0xfa, 0x73, 0x15, 0xa2, 0xd1, 0x97, 0x10, +0x67, 0x22, 0x3f, 0x9f, 0xc5, 0xfd, 0x08, 0x17, +0x46, 0x36, 0x9e, 0xd3, 0x9f, 0x58, 0x27, 0xe0, +0xbe, 0xd9, 0x45, 0xf6, 0x0a, 0x87, 0x84, 0x2a, +0x45, 0x73, 0x4e, 0x0c, 0xfd, 0xd9, 0x88, 0xd8, +0x94, 0x65, 0xc5, 0x2b, 0x61, 0x3f, 0xf7, 0xcf, +0x0e, 0x80, 0x1f, 0x48, 0x6f, 0x42, 0x1f, 0x33, +0x9a, 0xbf, 0x0a, 0x4e, 0x06, 0x43, 0xe0, 0xdf, +0xc7, 0xef, 0x15, 0x2e, 0x97, 0x85, 0xff, 0x14, +0x37, 0xd0, 0xec, 0x7a, 0xbd, 0xdd, 0xce, 0x1b, +0xc7, 0xf3, 0xae, 0x04, 0xeb, 0xc1, 0x7d, 0x8a, +0x7f, 0x10, 0xae, 0x4a, 0x75, 0x37, 0xa0, 0x31, +0x0e, 0xdf, 0x94, 0xe3, 0xe7, 0x08, 0x9c, 0x9c, +0x8f, 0x36, 0x71, 0x10, 0xf9, 0x39, 0xae, 0xd6, +0xf7, 0xe3, 0x7e, 0x14, 0x14, 0x72, 0xfc, 0x9c, +0x88, 0x6c, 0x2e, 0xaa, 0xbe, 0xe8, 0xec, 0x22, +0x08, 0x52, 0xa8, 0xce, 0x3a, 0xbb, 0x49, 0x90, +0x98, 0xfc, 0x94, 0x5a, 0x67, 0x6b, 0x5b, 0xcd, +0x00, 0xec, 0x93, 0x91, 0xe5, 0x19, 0x3b, 0x3f, +0x05, 0x86, 0xfe, 0x4d, 0x19, 0xc6, 0x33, 0x89, +0xed, 0x01, 0x05, 0x41, 0x83, 0x13, 0x12, 0xea, +0xcf, 0xe3, 0xda, 0x56, 0x83, 0x75, 0x63, 0x69, +0x6d, 0xcf, 0x01, 0x53, 0x7f, 0xea, 0x43, 0xbc, +0x6c, 0x14, 0x39, 0x3f, 0x4e, 0x27, 0xe9, 0x4f, +0xc6, 0xcf, 0xe3, 0x24, 0x84, 0x72, 0xd5, 0x19, +0x40, 0xb1, 0xd2, 0xc5, 0xda, 0xd9, 0xf4, 0x27, +0x6c, 0x16, 0xca, 0x5f, 0x2e, 0xc8, 0x44, 0xd8, +0xe6, 0x53, 0xce, 0xf6, 0x9c, 0x8f, 0x2c, 0xfd, +0x79, 0x43, 0x2b, 0xc8, 0x7d, 0xb8, 0xbf, 0xbb, +0x84, 0x2e, 0xe6, 0xc8, 0x67, 0x22, 0x17, 0x0c, +0xdb, 0x65, 0xfc, 0x6c, 0xdf, 0x57, 0x36, 0x52, +0xb0, 0xd6, 0x37, 0x0b, 0x9e, 0x62, 0x8e, 0xfc, +0x5a, 0x32, 0x6e, 0xd4, 0x31, 0xfd, 0xf9, 0x82, +0x1c, 0x1c, 0x69, 0x3a, 0x34, 0xcd, 0x85, 0x36, +0x18, 0x54, 0xff, 0x0c, 0xf5, 0xa7, 0xc9, 0xcf, +0xc3, 0x70, 0x65, 0x85, 0x16, 0x5e, 0x38, 0x8c, +0x73, 0xab, 0xbd, 0x83, 0xc5, 0xcf, 0x97, 0x94, +0xe3, 0x50, 0x3b, 0xd2, 0x91, 0x99, 0x36, 0x22, +0x7d, 0x48, 0xbb, 0x8e, 0xa1, 0x4e, 0xb6, 0xf1, +0x33, 0xdd, 0x0e, 0xf2, 0x31, 0xb1, 0xf9, 0xcb, +0x67, 0xe0, 0x69, 0xb1, 0x8c, 0xed, 0xe1, 0x36, +0x7e, 0x42, 0xfb, 0xd6, 0xd9, 0x4c, 0x76, 0x9e, +0x15, 0x9e, 0x6f, 0x29, 0x1b, 0xd1, 0xb4, 0xb0, +0x7e, 0xcf, 0xa8, 0x67, 0x04, 0xfd, 0x15, 0x59, +0x4d, 0x06, 0x35, 0xbf, 0x83, 0x05, 0x23, 0x6c, +0xfc, 0xec, 0x44, 0x7e, 0xd6, 0xa2, 0xec, 0x44, +0x69, 0x72, 0x19, 0x42, 0xcc, 0x06, 0x27, 0xf1, +0x53, 0x47, 0x95, 0x06, 0x52, 0x4d, 0x7f, 0x1a, +0x63, 0x86, 0xfc, 0x14, 0x98, 0x8f, 0xee, 0x4e, +0x95, 0x6b, 0x7a, 0x9e, 0xb1, 0xa0, 0xd7, 0xe4, +0xe7, 0x37, 0x85, 0x0d, 0xc4, 0x87, 0x7c, 0x89, +0xd8, 0xf4, 0xa7, 0x7e, 0x21, 0x3f, 0xe9, 0x06, +0xf0, 0x45, 0x36, 0x7d, 0xa2, 0xfe, 0xac, 0x40, +0xfd, 0x29, 0x33, 0x7e, 0x22, 0xbc, 0x94, 0xa9, +0xfa, 0x93, 0xa8, 0x24, 0x04, 0x39, 0x96, 0x6b, +0xfa, 0xd3, 0xe4, 0xe7, 0x5b, 0xc2, 0x25, 0xe5, +0x39, 0x74, 0x95, 0x1b, 0x34, 0x46, 0x32, 0xff, +0xdd, 0xc6, 0xcf, 0xdd, 0x97, 0x3e, 0x3b, 0x5f, +0xd9, 0x9c, 0x9a, 0x81, 0x9c, 0x57, 0xc2, 0x91, +0xbd, 0x58, 0xc7, 0x99, 0xfa, 0x13, 0xba, 0x57, +0xf8, 0x90, 0x9f, 0x05, 0x32, 0x64, 0xe4, 0x85, +0x52, 0x94, 0x4e, 0xe2, 0xe7, 0x41, 0xb1, 0x22, +0xe6, 0x94, 0xb6, 0x0a, 0x12, 0x63, 0x39, 0xae, +0xe9, 0x53, 0x9c, 0x3e, 0xd6, 0x1a, 0x3f, 0x05, +0x1f, 0xeb, 0xde, 0x0a, 0xfc, 0xa5, 0xb9, 0xe8, +0xc8, 0x5b, 0xfc, 0x64, 0xfa, 0x13, 0x6a, 0xd9, +0x70, 0xe8, 0xfb, 0x8a, 0xcb, 0xc6, 0x4f, 0xd4, +0x9f, 0x3a, 0xc2, 0xcb, 0xb1, 0xa0, 0x2e, 0x9c, +0xc2, 0x4f, 0x18, 0x86, 0x85, 0x5a, 0x7c, 0x02, +0xc6, 0x94, 0x20, 0x37, 0x49, 0x7f, 0xce, 0x95, +0x37, 0x82, 0x6f, 0x4f, 0x12, 0xe7, 0x88, 0xf1, +0x93, 0xe9, 0x4f, 0x8b, 0x9f, 0x8d, 0xe8, 0xa2, +0xf9, 0x75, 0xfd, 0xb9, 0x1f, 0x9d, 0x60, 0xa6, +0x89, 0x4c, 0xfd, 0x39, 0x13, 0xda, 0xe5, 0xb2, +0x38, 0xee, 0xb7, 0x67, 0xd0, 0x3f, 0xd2, 0xec, +0xc5, 0xf2, 0xdf, 0x67, 0xc2, 0xef, 0x33, 0x9f, +0xcf, 0x8a, 0x3f, 0xe2, 0xcf, 0x4a, 0x7f, 0x4c, +0x6a, 0x20, 0xb5, 0xf8, 0xd9, 0x06, 0x57, 0xe4, +0xb0, 0xb8, 0x6c, 0x5f, 0x03, 0x02, 0xaa, 0x79, +0x92, 0xfe, 0x54, 0x1c, 0x1f, 0x29, 0x27, 0x93, +0xe1, 0x8b, 0xee, 0x4b, 0xfc, 0x55, 0x65, 0x22, +0x15, 0x1e, 0x42, 0xff, 0xfd, 0xb4, 0xc9, 0xcf, +0x9f, 0x42, 0x7b, 0x51, 0x65, 0xdc, 0xd9, 0xdc, +0xb0, 0x43, 0x39, 0x90, 0xae, 0x1e, 0x12, 0x51, +0x7f, 0x1a, 0x75, 0xc5, 0xd0, 0xd1, 0xd2, 0xae, +0xc9, 0xce, 0xe2, 0x33, 0xe2, 0x01, 0xb9, 0xba, +0x1f, 0xeb, 0x5e, 0x34, 0xf9, 0xc9, 0xf6, 0xf7, +0x00, 0x38, 0x83, 0xbe, 0x0e, 0x7d, 0x7f, 0x0f, +0x92, 0xdc, 0xda, 0xec, 0xc4, 0xb1, 0x3e, 0xc9, +0xf6, 0xcd, 0x51, 0x64, 0xf9, 0x84, 0xac, 0xf9, +0x9b, 0xe7, 0x0d, 0x9b, 0x4f, 0x81, 0x66, 0x7a, +0x0c, 0xef, 0x9a, 0xd6, 0x50, 0xab, 0x33, 0x16, +0x3f, 0xa5, 0x8b, 0x28, 0xa1, 0xea, 0x47, 0xb1, +0xdd, 0xb8, 0xc4, 0xb4, 0x14, 0x0a, 0xd8, 0xec, +0x0a, 0xbd, 0x6e, 0x0b, 0xee, 0xef, 0x28, 0xcb, +0xb6, 0x38, 0x35, 0xbe, 0xe8, 0xfe, 0x6d, 0x36, +0x66, 0xfa, 0xef, 0xcc, 0xe5, 0x25, 0xa8, 0xdd, +0x56, 0x69, 0x75, 0xc9, 0x8c, 0xc5, 0x4f, 0xf4, +0x8f, 0xf6, 0x93, 0x00, 0x71, 0xce, 0xcb, 0xc3, +0xb1, 0x96, 0x03, 0xfd, 0x62, 0xd0, 0x9c, 0x07, +0x5a, 0xb8, 0x2a, 0xfa, 0x3e, 0x84, 0xa3, 0xac, +0x9f, 0x12, 0xf6, 0xb3, 0x37, 0x90, 0x99, 0x91, +0x9d, 0xa3, 0xdf, 0x73, 0xd7, 0x8d, 0x23, 0xca, +0xf3, 0x50, 0x4f, 0xdc, 0x17, 0xca, 0x51, 0x2f, +0x49, 0x53, 0xf4, 0xe7, 0xbb, 0xae, 0xe3, 0xf7, +0x3f, 0x5d, 0xe6, 0x4a, 0xf2, 0x3e, 0xd4, 0xf3, +0xe8, 0xa7, 0x2e, 0x37, 0xfd, 0x77, 0x55, 0x7a, +0x1b, 0x1e, 0x6a, 0x08, 0xa5, 0x45, 0x28, 0xf0, +0xc1, 0x93, 0x89, 0xaa, 0xac, 0x73, 0x3b, 0x19, +0xcd, 0xcb, 0xf1, 0x73, 0x48, 0x68, 0x9d, 0xef, +0x03, 0xc4, 0x3b, 0x00, 0xd3, 0xec, 0x05, 0x12, +0xb9, 0x90, 0xe3, 0x67, 0xd1, 0x2f, 0x51, 0xa3, +0xa0, 0x5f, 0xd5, 0xd2, 0x52, 0x2e, 0x3e, 0xc9, +0x84, 0xf6, 0x56, 0x32, 0x6a, 0x8c, 0x19, 0x94, +0xf4, 0xb2, 0xf0, 0x65, 0x28, 0xd0, 0xc6, 0x13, +0x0d, 0xa4, 0x0f, 0xa7, 0x6c, 0xfe, 0xfb, 0x53, +0x79, 0x1f, 0x7b, 0x6f, 0x3d, 0xea, 0x56, 0xf9, +0x51, 0x32, 0xc1, 0xfc, 0xe2, 0xd3, 0x36, 0xff, +0x7d, 0x37, 0xfc, 0x1e, 0x9e, 0x15, 0xa7, 0xb7, +0xf1, 0xe7, 0xe4, 0x3f, 0xcc, 0xd7, 0xe6, 0x21, +0x65, 0xcc, 0xd1, 0x69, 0xa6, 0x89, 0x16, 0xc9, +0x59, 0x51, 0x24, 0xb2, 0x7c, 0x85, 0x6a, 0xe3, +0x19, 0x34, 0xf5, 0x67, 0x14, 0x76, 0x12, 0xb9, +0xb9, 0xc0, 0x89, 0x6b, 0xfa, 0x31, 0x35, 0x70, +0x2a, 0x2a, 0x91, 0x2e, 0xc3, 0x17, 0x45, 0x7e, +0x0e, 0xb6, 0x67, 0xca, 0xe4, 0xe4, 0x1d, 0x64, +0x26, 0xda, 0x4b, 0xe5, 0x88, 0xf7, 0x34, 0xa9, +0x13, 0xf4, 0x3a, 0xe4, 0x27, 0x7d, 0x87, 0x06, +0xcf, 0x4f, 0x2f, 0xe0, 0x7b, 0x07, 0x7f, 0x9f, +0xae, 0x1b, 0x09, 0x78, 0xf9, 0xad, 0x44, 0xaf, +0x53, 0x6e, 0xec, 0x50, 0xae, 0xa4, 0xff, 0x8a, +0xba, 0x53, 0xce, 0x41, 0x98, 0x90, 0xea, 0xfb, +0x70, 0x1d, 0x0d, 0x1a, 0x3a, 0xb9, 0xd3, 0xd1, +0x0f, 0x47, 0xe5, 0x50, 0xc4, 0x4d, 0xcb, 0x2b, +0xf2, 0x5f, 0x67, 0xfa, 0x33, 0x65, 0xe7, 0x27, +0xd9, 0x2c, 0x96, 0x29, 0x4b, 0xb3, 0x3e, 0x0f, +0xd7, 0x4e, 0x70, 0xa3, 0x8f, 0x91, 0x0b, 0x86, +0x5d, 0x53, 0xf8, 0x5b, 0xf8, 0x6f, 0x0c, 0xe1, +0x51, 0x12, 0x92, 0x7e, 0xc6, 0xfc, 0xf7, 0xe5, +0x36, 0x7e, 0x9e, 0x60, 0xa1, 0x5b, 0xd5, 0xe9, +0x9d, 0x5b, 0x40, 0x36, 0xe1, 0x58, 0xef, 0xb9, +0x9e, 0xbc, 0x06, 0x39, 0x7e, 0xfe, 0x1c, 0x5e, +0x13, 0xba, 0xda, 0xdc, 0x2b, 0xf9, 0x05, 0xe8, +0x1b, 0x86, 0x51, 0x88, 0xa2, 0xff, 0x6e, 0xc4, +0x0b, 0x90, 0x9f, 0xc3, 0x80, 0xfa, 0x33, 0xc1, +0x9f, 0x53, 0xc6, 0xe0, 0x27, 0x30, 0x9d, 0xf9, +0xef, 0xfa, 0xf3, 0x90, 0x9f, 0x70, 0x94, 0x2e, +0x64, 0x5a, 0x6a, 0x05, 0xbc, 0x23, 0xd7, 0x2a, +0xcb, 0x6c, 0xfc, 0x84, 0x15, 0x90, 0x50, 0x7d, +0xb7, 0x3b, 0x53, 0xfc, 0x62, 0xd8, 0x90, 0xf5, +0x4d, 0xf1, 0xdf, 0xc9, 0x86, 0xf8, 0xdc, 0x45, +0x9f, 0xd9, 0x8e, 0xec, 0xd9, 0x03, 0x73, 0x58, +0xdd, 0x09, 0xcb, 0x7f, 0xe7, 0x12, 0x11, 0xe4, +0xe7, 0x0e, 0xb2, 0x4a, 0xda, 0xc0, 0x3a, 0x2c, +0x91, 0x63, 0x0e, 0x7d, 0xda, 0xbb, 0x5d, 0x32, +0xba, 0xb5, 0x0b, 0x19, 0x36, 0xe3, 0xd2, 0x30, +0xea, 0x33, 0xbb, 0xff, 0x5e, 0x38, 0x0e, 0x1f, +0x2b, 0x61, 0x65, 0xd9, 0xe0, 0x8c, 0x97, 0x99, +0x10, 0x65, 0x62, 0xf3, 0x6d, 0x21, 0xc7, 0xcf, +0x97, 0xe1, 0xe3, 0x2c, 0x72, 0xfe, 0x5e, 0xde, +0x23, 0xfe, 0x23, 0xfa, 0xef, 0x1d, 0xe8, 0xdb, +0x9b, 0xfc, 0xc4, 0xf7, 0x4b, 0xef, 0xe2, 0x9c, +0x2c, 0xa6, 0xda, 0x49, 0xaa, 0x98, 0x31, 0x9e, +0x30, 0xec, 0x33, 0xba, 0xb8, 0x0f, 0xb6, 0xc4, +0xe3, 0x0a, 0x9a, 0x9e, 0x20, 0x3e, 0x82, 0xfc, +0xf4, 0xdb, 0xf8, 0x59, 0xb4, 0x9b, 0xee, 0x11, +0x7c, 0x8b, 0xb0, 0xee, 0x3d, 0x7c, 0x87, 0xef, +0x2a, 0xe2, 0x76, 0x93, 0x05, 0xe9, 0xa2, 0x7f, +0x82, 0x57, 0xa1, 0x2b, 0xee, 0x7e, 0x94, 0x73, +0x60, 0xa1, 0x4e, 0xe3, 0xa7, 0xd1, 0x97, 0x95, +0xdc, 0x2f, 0xe1, 0x1d, 0x40, 0xbf, 0x38, 0xc5, +0xff, 0x42, 0x34, 0x34, 0xfb, 0x29, 0x9b, 0xff, +0x9e, 0x95, 0xbb, 0xc0, 0xdd, 0x76, 0xb3, 0x0c, +0xc3, 0x72, 0x2d, 0xd3, 0xfa, 0xbd, 0x96, 0xff, +0x0e, 0x0f, 0x53, 0x1f, 0xfd, 0xcc, 0xf9, 0x19, +0xb8, 0x3b, 0x2e, 0x2e, 0xef, 0xdc, 0x34, 0xc9, +0x7f, 0x57, 0x1e, 0xeb, 0xa9, 0x50, 0x9d, 0xcf, +0x90, 0x24, 0xde, 0xa2, 0x82, 0x6e, 0x9a, 0xec, +0xbf, 0xb7, 0xe6, 0x7f, 0x43, 0x75, 0x8e, 0x16, +0x5c, 0x84, 0x9f, 0xd2, 0xd9, 0x09, 0xe4, 0x67, +0x56, 0xd0, 0xdb, 0xe9, 0xf1, 0xcf, 0xa7, 0x87, +0x96, 0xae, 0x75, 0xfe, 0x1c, 0xde, 0x46, 0xfd, +0x39, 0x6d, 0x2d, 0xff, 0xa6, 0xe5, 0xbf, 0x0b, +0x87, 0x60, 0x2e, 0xe3, 0x52, 0x1c, 0x46, 0x0d, +0xfd, 0x69, 0xd8, 0xa7, 0x82, 0xfe, 0xe6, 0xc7, +0xb4, 0x26, 0xeb, 0xfe, 0x01, 0x3f, 0x57, 0x39, +0x43, 0xeb, 0x57, 0x04, 0xc6, 0xf8, 0x41, 0x93, +0x9f, 0x8f, 0x76, 0xfe, 0x86, 0xca, 0xc3, 0xce, +0x1f, 0x92, 0x99, 0x74, 0xd7, 0xce, 0xca, 0x0a, +0xe4, 0xcb, 0xbb, 0x86, 0x2e, 0x90, 0x94, 0x1d, +0xf4, 0x69, 0x98, 0xdd, 0xef, 0xbc, 0x40, 0x96, +0xd3, 0x9f, 0x49, 0x95, 0xa2, 0xbf, 0x19, 0x17, +0x94, 0x5e, 0xb7, 0x52, 0x3a, 0x99, 0xda, 0xd7, +0x32, 0x67, 0x97, 0x13, 0x0a, 0x14, 0x48, 0xa3, +0xfe, 0x44, 0x47, 0xfe, 0x35, 0xa3, 0xee, 0x89, +0x92, 0x76, 0x38, 0x94, 0xfc, 0x28, 0xe3, 0x0e, +0xb6, 0xc6, 0x0b, 0x5e, 0x83, 0x3a, 0x08, 0x30, +0x46, 0xea, 0x7d, 0x61, 0xfc, 0xbc, 0x1c, 0x59, +0xe8, 0x71, 0x67, 0x5a, 0xd3, 0xca, 0x65, 0xb6, +0xa7, 0x5a, 0xfe, 0x7b, 0x22, 0xf5, 0x91, 0xf4, +0xcf, 0x52, 0x0d, 0xc3, 0x66, 0x08, 0xde, 0x97, +0x6b, 0x04, 0x2c, 0x98, 0x6c, 0x45, 0x7e, 0x26, +0x49, 0x6d, 0x45, 0xc1, 0xe1, 0x02, 0x50, 0x06, +0x1d, 0xbe, 0x20, 0xae, 0xf7, 0x61, 0xcb, 0x7f, +0xa7, 0x07, 0x15, 0x5f, 0x4b, 0xf4, 0x99, 0xe9, +0x32, 0x74, 0x82, 0xaf, 0x25, 0x69, 0xf9, 0xef, +0x05, 0x82, 0x8b, 0x52, 0xf9, 0x97, 0xde, 0x82, +0xae, 0x02, 0x59, 0x4e, 0x65, 0xe4, 0x94, 0x38, +0x9f, 0xf4, 0x1a, 0xf6, 0x49, 0x1f, 0x5a, 0x95, +0xbd, 0x1c, 0xec, 0xea, 0x77, 0x75, 0xf1, 0x38, +0x7f, 0x62, 0x68, 0xbb, 0xeb, 0x29, 0x3e, 0xdb, +0x9a, 0xf3, 0xdf, 0x47, 0xe8, 0xe5, 0xe0, 0x5c, +0xaf, 0x7b, 0xdf, 0x23, 0x83, 0xf2, 0x58, 0xd9, +0xe1, 0x36, 0xc6, 0xcf, 0x0a, 0xdd, 0x26, 0x7a, +0x8b, 0x26, 0xa4, 0x37, 0x3a, 0x6b, 0xc6, 0x02, +0x97, 0x51, 0xcf, 0x9f, 0x84, 0x9a, 0x81, 0x55, +0xef, 0x58, 0xfe, 0x3b, 0xbc, 0x4f, 0x5a, 0xd3, +0xe9, 0x61, 0x71, 0x61, 0x6f, 0x55, 0xf0, 0xef, +0xfa, 0xca, 0x87, 0xc5, 0x27, 0xd0, 0x0f, 0x37, +0xf8, 0x09, 0x0f, 0xb5, 0x3c, 0x36, 0x37, 0xbd, +0x5c, 0xac, 0x61, 0xb1, 0x84, 0xa8, 0xfc, 0x52, +0x81, 0xaf, 0xc0, 0xd4, 0x9f, 0x9e, 0xbd, 0x79, +0x9b, 0x38, 0x59, 0x11, 0x33, 0x92, 0x0b, 0x1e, +0x83, 0x5d, 0x6a, 0x81, 0xe5, 0xbf, 0x73, 0xc2, +0x5e, 0xe1, 0x34, 0x84, 0xd2, 0xae, 0xc3, 0x5c, +0x00, 0x1d, 0xc8, 0x2e, 0xb5, 0x2a, 0xdd, 0x90, +0xd3, 0x9f, 0x3d, 0xd2, 0xe1, 0xbc, 0x8b, 0x72, +0xf5, 0xee, 0xea, 0x71, 0xe7, 0x38, 0x79, 0x03, +0x9e, 0x57, 0x0b, 0xb3, 0x24, 0xc7, 0xcf, 0x66, +0xa9, 0x03, 0x5e, 0x25, 0x0b, 0x23, 0x81, 0x67, +0xf8, 0x40, 0x23, 0xb6, 0xeb, 0xb5, 0xf9, 0xef, +0xc3, 0x42, 0x80, 0xdb, 0xa0, 0xa0, 0x8c, 0x38, +0x5c, 0xf0, 0xab, 0xc8, 0xe6, 0x58, 0xfd, 0xef, +0x84, 0x27, 0xcc, 0xfc, 0x51, 0xbf, 0x20, 0x42, +0x6b, 0x81, 0x3c, 0x88, 0x4b, 0x6b, 0xba, 0xc0, +0x02, 0x4d, 0xb7, 0xa7, 0x8b, 0x73, 0xf9, 0xa3, +0x53, 0x52, 0x01, 0x69, 0x4f, 0x7d, 0x36, 0xeb, +0xfd, 0x16, 0x39, 0xab, 0xb4, 0xd3, 0x00, 0xae, +0x46, 0x74, 0x08, 0xf4, 0x76, 0x51, 0xc0, 0x76, +0x5c, 0xb0, 0xdf, 0x25, 0xb5, 0xb2, 0x18, 0x4b, +0xb0, 0x9f, 0xf9, 0xef, 0xb9, 0xf8, 0xa7, 0xa7, +0x5b, 0x78, 0x1f, 0xaa, 0x99, 0x4e, 0x3e, 0x8c, +0x9b, 0xe4, 0xe7, 0xd4, 0x65, 0xe8, 0x01, 0x1a, +0x1c, 0x14, 0x3d, 0x7b, 0x51, 0x0f, 0x86, 0x12, +0x55, 0x2d, 0xac, 0x9d, 0x1c, 0xea, 0x0f, 0xa4, +0xcd, 0xf8, 0x67, 0x3f, 0xec, 0x80, 0x57, 0xe0, +0x69, 0x5a, 0x28, 0xdf, 0x71, 0x18, 0x36, 0x07, +0x76, 0x1e, 0xf3, 0xa3, 0xff, 0x6e, 0xc6, 0x97, +0x1e, 0x85, 0xc7, 0x13, 0x72, 0x76, 0xe3, 0xf2, +0x99, 0xb3, 0xa4, 0xf6, 0xcc, 0xec, 0x11, 0xe7, +0x4a, 0x33, 0xfe, 0x19, 0xf5, 0x74, 0x08, 0x8f, +0x0c, 0xee, 0x1e, 0xcc, 0x0f, 0x92, 0x0e, 0xd2, +0x8a, 0x3e, 0x1e, 0xea, 0x97, 0x9c, 0x1f, 0xde, +0xef, 0xd9, 0x13, 0xc3, 0xe7, 0x51, 0x1c, 0x46, +0x3f, 0x1c, 0x73, 0xd4, 0x26, 0xaa, 0xb3, 0xb6, +0xf8, 0x67, 0x1a, 0x46, 0xc5, 0xc3, 0xbc, 0xae, +0xf9, 0x22, 0x0b, 0x39, 0x81, 0xda, 0xf2, 0x47, +0xbb, 0xe1, 0xa8, 0x14, 0x52, 0x6e, 0x4c, 0x91, +0x15, 0xe4, 0x28, 0xcd, 0x30, 0x4e, 0xf8, 0xcc, +0xf8, 0xe7, 0x4d, 0x64, 0x0f, 0xf8, 0x50, 0x96, +0x15, 0x20, 0x2c, 0x59, 0x60, 0x79, 0x2b, 0x91, +0x73, 0xfc, 0x14, 0x5c, 0xca, 0x43, 0x62, 0xb9, +0x72, 0x73, 0x73, 0x71, 0x1b, 0x8a, 0x84, 0xb9, +0x8a, 0x37, 0x05, 0x39, 0xff, 0x1d, 0x04, 0x07, +0xfc, 0x42, 0xd9, 0x19, 0x9b, 0xfb, 0x7d, 0xb2, +0x8e, 0x25, 0x92, 0x62, 0x0b, 0x3c, 0x91, 0x9c, +0xff, 0x7e, 0x1a, 0x92, 0x68, 0x4f, 0x21, 0xd8, +0xac, 0xf2, 0x69, 0x1c, 0xa0, 0x05, 0xd0, 0x48, +0x9d, 0x55, 0x56, 0xfc, 0x53, 0x3a, 0xa8, 0x84, +0x63, 0x85, 0xdb, 0x1a, 0x56, 0xc0, 0xa5, 0x48, +0x98, 0xf9, 0xef, 0x66, 0xfe, 0x08, 0xf5, 0xe0, +0x51, 0x12, 0x8a, 0xba, 0x52, 0x9b, 0x56, 0xc0, +0x51, 0x31, 0xa4, 0xb8, 0xb6, 0x98, 0xf1, 0x4f, +0xaf, 0xb8, 0x53, 0x3e, 0xbd, 0xa6, 0x16, 0xc4, +0x36, 0x92, 0xc6, 0xcd, 0xc6, 0xe7, 0x89, 0xaa, +0x66, 0xfc, 0x53, 0x69, 0xdc, 0x76, 0x6c, 0x9d, +0x6b, 0xe7, 0x57, 0xf3, 0xef, 0x6e, 0xb9, 0x57, +0x5e, 0x27, 0x96, 0x45, 0xc4, 0xbb, 0x23, 0xa7, +0x0c, 0xfb, 0xdc, 0x2e, 0x6c, 0x83, 0x5f, 0x35, +0xce, 0xbe, 0x57, 0x1c, 0x94, 0x9f, 0x82, 0x87, +0x48, 0xd9, 0x22, 0x71, 0xd0, 0x8a, 0x7f, 0xa2, +0x8f, 0xbe, 0x01, 0xba, 0x16, 0x15, 0x6e, 0xe5, +0xf0, 0x79, 0x5c, 0x48, 0x09, 0xa4, 0x1a, 0x72, +0xfc, 0xfc, 0xb6, 0xb4, 0xbb, 0x68, 0x0b, 0x62, +0xb3, 0x3a, 0xe5, 0x1c, 0x92, 0xdf, 0xe1, 0x9e, +0x43, 0x7e, 0x22, 0x27, 0xf4, 0x76, 0xc8, 0x4f, +0xbe, 0x1f, 0x6a, 0x85, 0xa6, 0xb6, 0x06, 0x99, +0xa8, 0xb8, 0x51, 0x34, 0xa9, 0xce, 0x82, 0x9c, +0xd6, 0x17, 0xe6, 0xc2, 0x1d, 0xd4, 0x97, 0xf1, +0x77, 0xf2, 0x7f, 0x2e, 0x6d, 0xa4, 0xbe, 0x74, +0xb4, 0x93, 0x14, 0xe4, 0xf6, 0x9c, 0x36, 0x17, +0x3c, 0x42, 0x2b, 0x2e, 0x88, 0xdd, 0xd3, 0x7f, +0xa5, 0xb4, 0x26, 0xfc, 0xe7, 0x56, 0x2e, 0xc0, +0x3a, 0x7d, 0x5c, 0x38, 0x28, 0x2d, 0x5b, 0x2f, +0xca, 0x54, 0x6c, 0x6e, 0x19, 0xe4, 0xd6, 0x8b, +0x65, 0xbd, 0xb0, 0xb6, 0xc5, 0x9f, 0x6b, 0x87, +0xee, 0xc4, 0x0b, 0xcc, 0x6d, 0xf7, 0x3b, 0x9f, +0x43, 0xdd, 0x73, 0x6b, 0xb6, 0x69, 0xd8, 0x39, +0xd7, 0xb0, 0x4f, 0xbf, 0x77, 0x2f, 0xf9, 0x91, +0xa6, 0xeb, 0xa6, 0xc5, 0x05, 0x2d, 0xfe, 0x99, +0x36, 0xf5, 0x67, 0xc4, 0xf5, 0x0c, 0xf7, 0x5e, +0xe2, 0xc0, 0x39, 0xd7, 0x69, 0x3e, 0x4c, 0x5e, +0xca, 0xd4, 0xac, 0xc2, 0x42, 0x2e, 0x7e, 0xd6, +0x09, 0xdb, 0xa0, 0x43, 0xbe, 0x45, 0xf5, 0x8f, +0x92, 0x3a, 0xe8, 0x90, 0xca, 0x1b, 0x71, 0x5c, +0x72, 0xf9, 0xa3, 0x0c, 0x3d, 0x0c, 0x8f, 0x93, +0x9d, 0x7d, 0xfe, 0x45, 0xe8, 0xdb, 0xb7, 0x97, +0x95, 0xdd, 0x2e, 0x46, 0xf1, 0x69, 0xfa, 0xfb, +0x29, 0xc2, 0x5e, 0xa9, 0x55, 0x98, 0xa3, 0x8a, +0x9f, 0xc7, 0xe5, 0xd3, 0x4a, 0x70, 0xe1, 0x03, +0x11, 0x8d, 0x79, 0xd8, 0x2e, 0x74, 0xba, 0xfe, +0x40, 0xba, 0x14, 0xcd, 0x6f, 0xc4, 0x75, 0x4b, +0x03, 0x19, 0x67, 0xee, 0x9e, 0x6d, 0xb8, 0x79, +0x5d, 0x80, 0x30, 0xe7, 0xce, 0x94, 0x67, 0x59, +0xec, 0xde, 0x1e, 0xff, 0x4c, 0xd0, 0xc3, 0x05, +0x88, 0x23, 0xc5, 0x15, 0xcf, 0x3f, 0x0c, 0xbf, +0x85, 0x9a, 0xb4, 0x6b, 0xd8, 0x09, 0x86, 0xff, +0xde, 0xe3, 0xa9, 0x44, 0x19, 0x31, 0xb7, 0x62, +0x6e, 0x86, 0xc8, 0xe4, 0x75, 0xce, 0x77, 0xd1, +0xff, 0x59, 0xd3, 0x3e, 0x29, 0xc8, 0x72, 0xbe, +0xa0, 0xe5, 0x8f, 0xf6, 0xb2, 0x3d, 0x3c, 0x85, +0x6c, 0x95, 0x73, 0x63, 0xa6, 0xd5, 0xfb, 0xd5, +0x82, 0x60, 0x41, 0x07, 0xc2, 0x5b, 0x0b, 0x88, +0xe5, 0xec, 0xb3, 0x05, 0x9a, 0xd8, 0x32, 0x57, +0x03, 0x94, 0x47, 0x47, 0x17, 0x17, 0x54, 0x47, +0x9a, 0x07, 0xc3, 0x3e, 0x13, 0x25, 0xe3, 0xc5, +0x9a, 0x9c, 0x1b, 0x2d, 0x7f, 0x10, 0xde, 0x67, +0x85, 0xac, 0x4d, 0x7f, 0x9e, 0x85, 0x37, 0xd4, +0x7d, 0x2b, 0x5c, 0x1f, 0xa2, 0xfe, 0x7c, 0x83, +0xab, 0xc9, 0xba, 0xa2, 0xe5, 0xf6, 0xf8, 0xe7, +0x26, 0xa6, 0x23, 0xf7, 0x11, 0x99, 0x6e, 0x6a, +0xf3, 0xb1, 0x7d, 0xda, 0x1e, 0xff, 0xdc, 0x2a, +0xfb, 0x92, 0x2b, 0xbb, 0x50, 0xf3, 0xa1, 0xdf, +0x81, 0x9d, 0x9b, 0x14, 0xff, 0xdc, 0x84, 0xfb, +0x6d, 0x32, 0x53, 0x20, 0xd3, 0x3d, 0xc5, 0x3e, +0x19, 0xe1, 0x65, 0xc6, 0x3f, 0x3d, 0xbb, 0x71, +0x2d, 0x85, 0x4e, 0xa1, 0x7c, 0x94, 0x59, 0x1c, +0x33, 0x1b, 0x00, 0x5e, 0x30, 0x9e, 0x77, 0x0e, +0x9e, 0x62, 0x9a, 0x3d, 0xb9, 0x79, 0x94, 0xbf, +0x00, 0x6f, 0xd0, 0xfa, 0x9e, 0x65, 0xbd, 0x66, +0xfc, 0x93, 0xe5, 0x8f, 0xd0, 0x3f, 0xa2, 0xae, +0x0c, 0x37, 0x0c, 0xbf, 0x17, 0xbb, 0x7a, 0xf1, +0x45, 0xb7, 0x19, 0xf6, 0xa9, 0x0a, 0x2e, 0xd8, +0x44, 0xe4, 0x6d, 0xe2, 0x1a, 0x72, 0x3c, 0x9e, +0xaf, 0xf8, 0x62, 0xe2, 0x3a, 0x5b, 0xfe, 0xbd, +0x29, 0xb2, 0x87, 0xf8, 0x15, 0x71, 0x7e, 0x4b, +0x2f, 0x94, 0xc7, 0x7c, 0x83, 0x49, 0x20, 0x19, +0xbd, 0x27, 0xd0, 0x8d, 0xfb, 0xfb, 0xe6, 0x54, +0xf9, 0x88, 0xf8, 0x43, 0xf2, 0x11, 0x6d, 0x4d, +0x97, 0x0d, 0x47, 0x5f, 0xb3, 0xc5, 0x3f, 0xa7, +0xa3, 0xb6, 0x59, 0x30, 0xec, 0x5a, 0xd0, 0x70, +0x82, 0x9e, 0xcb, 0x86, 0xf6, 0xb8, 0x44, 0x7e, +0x6b, 0xce, 0x7f, 0x2f, 0xdc, 0x3b, 0x78, 0xc5, +0x51, 0xdf, 0x53, 0x3d, 0xca, 0x0f, 0x28, 0x57, +0x83, 0xcf, 0x53, 0x1c, 0x4f, 0xcb, 0x7f, 0x1f, +0xc2, 0xa5, 0xac, 0xe5, 0xb9, 0x1a, 0x91, 0x9f, +0x17, 0x7a, 0x06, 0xa8, 0x4d, 0x7f, 0x6e, 0x83, +0x76, 0x28, 0x53, 0xc5, 0xe6, 0x3c, 0x8f, 0x70, +0x4a, 0xfa, 0xba, 0x2a, 0x2a, 0x93, 0xfc, 0xf7, +0x6d, 0xb4, 0x3c, 0xcb, 0x2d, 0x58, 0x12, 0x96, +0x7f, 0x91, 0x2c, 0x1f, 0xbd, 0x23, 0x3a, 0x29, +0xfe, 0xf9, 0x08, 0xa4, 0x87, 0xf6, 0x64, 0x48, +0x25, 0xec, 0x4b, 0xec, 0x1a, 0x2b, 0xf0, 0xd9, +0xfc, 0xf7, 0x8d, 0xf0, 0x68, 0xac, 0x3c, 0x9d, +0x9f, 0x75, 0xfe, 0x40, 0x7a, 0x97, 0x7e, 0x2f, +0x35, 0x3d, 0x6e, 0xf7, 0xdf, 0x15, 0x26, 0xf5, +0xa6, 0xa3, 0xde, 0x10, 0xbc, 0xe2, 0x73, 0x50, +0x49, 0x39, 0xd3, 0x7f, 0x8f, 0xa1, 0xec, 0x84, +0x2e, 0x25, 0x2f, 0xc5, 0xcf, 0x49, 0x1f, 0x57, +0xbb, 0x94, 0x8e, 0xad, 0x7c, 0x8b, 0x5d, 0x7f, +0x2a, 0x3e, 0xc5, 0x9f, 0xe2, 0xff, 0x0b, 0x1a, +0xb2, 0x96, 0xdf, 0x94, 0x8d, 0x71, 0xf1, 0xa2, +0x8f, 0xbe, 0x47, 0x94, 0x99, 0xcb, 0x5b, 0x09, +0x7b, 0x14, 0xad, 0x6e, 0xbd, 0xa5, 0x3f, 0x85, +0x0d, 0x88, 0x4d, 0x71, 0x1b, 0x59, 0x0c, 0x3b, +0x41, 0x5e, 0x8d, 0x3e, 0x33, 0xe1, 0xf4, 0x96, +0xdd, 0xa2, 0x8c, 0x6a, 0x58, 0xcb, 0xbf, 0xcb, +0x64, 0x18, 0x0b, 0x1d, 0xe9, 0xa2, 0x5f, 0xe7, +0xfc, 0xf7, 0x42, 0xd4, 0x98, 0x70, 0x9b, 0x72, +0xe7, 0x36, 0xfe, 0x22, 0xbc, 0xde, 0x58, 0xaf, +0x54, 0x5b, 0xf1, 0x4f, 0xaf, 0xe3, 0x22, 0x8f, +0x6e, 0x4a, 0xa3, 0xfb, 0xe7, 0x0d, 0x8d, 0xf0, +0x92, 0x7c, 0xeb, 0xa2, 0xa6, 0x41, 0x9b, 0xff, +0x9e, 0x85, 0xa4, 0xb8, 0x90, 0xc5, 0x3f, 0x83, +0xa8, 0xde, 0x7c, 0x2d, 0xa2, 0xe5, 0xbf, 0x2b, +0x8e, 0x3e, 0x71, 0x1d, 0x87, 0xbe, 0xe8, 0x97, +0x5b, 0x3c, 0x3b, 0x13, 0x5c, 0xfa, 0xf6, 0x02, +0x9b, 0xfe, 0xfc, 0xe2, 0x6e, 0x6e, 0x03, 0xdc, +0x1c, 0x75, 0x0e, 0x2e, 0xf1, 0xc8, 0x1b, 0xa6, +0x3d, 0x70, 0x7f, 0x81, 0xcd, 0x7f, 0xdf, 0xb6, +0x1e, 0x36, 0x7c, 0xa3, 0x2a, 0xee, 0x4e, 0xe5, +0xdf, 0x24, 0x6d, 0x50, 0x42, 0xb1, 0xaf, 0x6d, +0xb5, 0xc5, 0x3f, 0x1f, 0x97, 0x5e, 0x85, 0x85, +0x71, 0xfd, 0x9c, 0x40, 0xaa, 0x56, 0xa9, 0xdc, +0xda, 0x3a, 0xc9, 0x7f, 0x5f, 0x1c, 0x42, 0xb7, +0xfd, 0x9e, 0x0f, 0xe0, 0xb4, 0x58, 0xeb, 0x45, +0xfb, 0xdc, 0x98, 0xab, 0x13, 0x16, 0x0a, 0x1b, +0x13, 0xa8, 0x3f, 0xd3, 0xc5, 0x63, 0xf0, 0x4a, +0x23, 0x4f, 0xa3, 0x6f, 0x92, 0xdc, 0x11, 0x1c, +0x16, 0xff, 0x2c, 0xa7, 0x15, 0x2c, 0xe4, 0xd4, +0x5f, 0x4c, 0xa5, 0x39, 0x83, 0x20, 0x90, 0x16, +0x83, 0x9f, 0x65, 0xdc, 0xfc, 0x8a, 0xcd, 0x1b, +0xef, 0xa7, 0x4e, 0x85, 0x8c, 0x71, 0x8f, 0xc2, +0x6c, 0x35, 0x7a, 0x9a, 0x88, 0x66, 0xfc, 0x33, +0x2c, 0xbd, 0x4d, 0xff, 0x6b, 0xd6, 0xb9, 0x96, +0x7f, 0x05, 0x5e, 0xa2, 0x9f, 0x8b, 0xbb, 0x96, +0xf3, 0x1b, 0x73, 0xfe, 0xfb, 0x9d, 0xbb, 0xe1, +0x4d, 0x78, 0x96, 0xe2, 0xbe, 0x39, 0xc4, 0xe2, +0x9f, 0x8a, 0x5b, 0xb2, 0xf9, 0xef, 0x57, 0xe1, +0x1f, 0xe9, 0xfc, 0x2c, 0xba, 0xed, 0x0b, 0x95, +0xfe, 0x74, 0xcd, 0x90, 0xeb, 0xa0, 0xcd, 0x7f, +0x7f, 0x98, 0x6e, 0xd8, 0x25, 0xa7, 0xc5, 0x02, +0xdf, 0x0d, 0x0a, 0xed, 0xf2, 0x65, 0xa3, 0x0b, +0x4c, 0xff, 0x9d, 0xc2, 0x61, 0x65, 0x5b, 0xb0, +0x5c, 0x8d, 0xae, 0xc9, 0xab, 0x6d, 0xa3, 0xc1, +0x77, 0x9a, 0xc4, 0x25, 0xa6, 0xfe, 0x44, 0xff, +0x5d, 0xa4, 0x51, 0x1c, 0x7e, 0x20, 0x0e, 0xa0, +0x89, 0xb9, 0x8c, 0x9f, 0xa7, 0x4c, 0xff, 0xbd, +0x03, 0x5e, 0x5f, 0xb7, 0x6b, 0x6d, 0x20, 0xb3, +0xf4, 0xb3, 0xa4, 0x27, 0xbe, 0x70, 0x91, 0x6b, +0x07, 0x8e, 0x67, 0xce, 0xe6, 0xd1, 0x7f, 0x2f, +0x62, 0x3e, 0xc9, 0x8c, 0x61, 0x72, 0x59, 0x9e, +0x13, 0xdf, 0x9c, 0x34, 0x35, 0x26, 0x17, 0x1b, +0x87, 0xf3, 0xb0, 0xbf, 0xb1, 0x63, 0x94, 0x9f, +0x2f, 0x0f, 0xa4, 0xea, 0xa1, 0x63, 0x70, 0x46, +0x2e, 0xfe, 0xd9, 0x83, 0xfa, 0xb3, 0x05, 0x98, +0xef, 0x7b, 0x83, 0x00, 0xaf, 0x29, 0xbe, 0xfb, +0xc5, 0x0e, 0x2b, 0xfe, 0x89, 0xf2, 0x57, 0xdb, +0xfb, 0x83, 0xc4, 0x0f, 0xc9, 0xc6, 0x5f, 0x3f, +0x20, 0x76, 0x14, 0x9b, 0xfe, 0x3b, 0x5a, 0xdf, +0x06, 0xbf, 0x4c, 0xfc, 0x04, 0xeb, 0xb6, 0x06, +0xd3, 0x31, 0x7f, 0x9e, 0xe9, 0xbf, 0x2b, 0xe2, +0xaa, 0xce, 0xe1, 0xb2, 0x35, 0x5f, 0x74, 0xd5, +0xb6, 0xce, 0x56, 0xfb, 0x85, 0xf0, 0x72, 0x9c, +0x3f, 0xcb, 0x7f, 0x1f, 0x08, 0x8e, 0xf9, 0xeb, +0x0b, 0x96, 0xb5, 0x3c, 0x72, 0x84, 0x8e, 0xc7, +0xc3, 0xcb, 0x37, 0xf7, 0xd9, 0xf8, 0x79, 0x01, +0x50, 0xc6, 0xf7, 0x3f, 0x74, 0x61, 0x46, 0x80, +0x0e, 0xd0, 0x9a, 0xa0, 0x6b, 0xcc, 0xe6, 0xbf, +0x67, 0xdb, 0x0e, 0xfa, 0xab, 0x47, 0x9d, 0x1f, +0x9e, 0x3a, 0xac, 0x26, 0x65, 0xec, 0x70, 0x37, +0x19, 0xcd, 0xe9, 0x1e, 0x47, 0x3f, 0x7a, 0x2b, +0x81, 0x41, 0x96, 0xcb, 0xc2, 0x1d, 0x52, 0x66, +0xb1, 0x84, 0x0b, 0xd6, 0xf9, 0x25, 0x38, 0x28, +0x68, 0xa9, 0xaf, 0x0e, 0x42, 0x25, 0xd9, 0x9e, +0x7f, 0x97, 0x4a, 0xb2, 0xf4, 0x34, 0x6e, 0x35, +0x85, 0x99, 0xb2, 0x00, 0x1c, 0x8b, 0x6e, 0x15, +0x03, 0x99, 0x06, 0x5b, 0xfe, 0x5d, 0x1c, 0xdf, +0xf6, 0x27, 0xaa, 0xbb, 0x19, 0x39, 0x7f, 0x1b, +0xd4, 0x53, 0xf7, 0x28, 0xb1, 0xe2, 0x9f, 0x69, +0x0d, 0xb7, 0xae, 0xcc, 0xd7, 0x03, 0x70, 0x19, +0xf1, 0xd8, 0x91, 0xe1, 0xff, 0x87, 0x95, 0x3f, +0x82, 0x83, 0x50, 0xde, 0x23, 0xb2, 0x7d, 0xf3, +0x20, 0x02, 0xbf, 0xd0, 0x9e, 0x7f, 0x6f, 0x84, +0x0c, 0xdb, 0x6a, 0x50, 0xbb, 0x89, 0x5b, 0xd8, +0x98, 0x5a, 0xf9, 0xf7, 0x51, 0x6e, 0x26, 0x3c, +0x4f, 0xe5, 0x6c, 0x74, 0x2d, 0x79, 0xb4, 0xed, +0x99, 0xf4, 0xcd, 0x7e, 0x8e, 0xc5, 0x3f, 0xf5, +0x76, 0xc8, 0x4f, 0xb5, 0x8b, 0x0b, 0xf6, 0xa1, +0xbb, 0xf1, 0x30, 0xbd, 0x94, 0x5e, 0x38, 0x72, +0x26, 0x58, 0x6e, 0xcb, 0xbf, 0x0b, 0x07, 0xe0, +0x6a, 0xaf, 0x7b, 0xb4, 0xf5, 0xc1, 0xf8, 0x55, +0xa9, 0xb6, 0xe7, 0x4f, 0x6c, 0xf9, 0xf7, 0x92, +0x73, 0x28, 0xff, 0xc3, 0x3d, 0xee, 0xa7, 0xca, +0xdf, 0x73, 0x1c, 0xf7, 0x85, 0xa3, 0x6e, 0x2b, +0xff, 0xde, 0x7f, 0xfd, 0x0e, 0xf9, 0x19, 0xa8, +0x3c, 0xe6, 0x5c, 0x4d, 0x06, 0x7a, 0xda, 0xa5, +0xca, 0xbe, 0xa5, 0xcd, 0xbe, 0x0b, 0x66, 0x2e, +0xf2, 0x11, 0x38, 0x40, 0xbf, 0x33, 0xec, 0x5c, +0x5b, 0x7c, 0xb6, 0xad, 0x3d, 0x51, 0x19, 0x5f, +0x6a, 0xe5, 0xdf, 0xa3, 0xc2, 0x00, 0x1c, 0x12, +0x8d, 0x58, 0x73, 0xeb, 0x9a, 0x00, 0x4b, 0x20, +0x9e, 0x32, 0xf9, 0xf9, 0xa4, 0x96, 0x76, 0x67, +0xa1, 0x77, 0x38, 0xa6, 0x86, 0xbb, 0xdd, 0x93, +0xf2, 0xef, 0x34, 0x17, 0xff, 0x24, 0x53, 0xf2, +0xef, 0xa2, 0xa4, 0xa5, 0xe1, 0x98, 0x0b, 0xda, +0xa7, 0x07, 0xa4, 0x99, 0xff, 0x6e, 0xe6, 0xdf, +0x05, 0x1c, 0xc6, 0x98, 0x96, 0x5f, 0x61, 0x89, +0xa4, 0x29, 0xf9, 0xf7, 0x83, 0x40, 0xe2, 0x7a, +0x9d, 0x30, 0x25, 0xfe, 0xe9, 0x10, 0xf6, 0x35, +0xa6, 0x59, 0xfc, 0xf3, 0x88, 0x96, 0x88, 0x9f, +0x1c, 0xff, 0x94, 0xc6, 0x84, 0x10, 0xd5, 0xb4, +0x30, 0xcb, 0x4f, 0x6f, 0xb6, 0xe7, 0xdf, 0x8d, +0xb0, 0xe7, 0xb6, 0x86, 0xb7, 0xc8, 0x94, 0xfc, +0xfb, 0x76, 0x07, 0xea, 0x4f, 0x21, 0x7c, 0xc7, +0xe6, 0xd4, 0x63, 0x43, 0xe4, 0xa8, 0x1e, 0x1b, +0x7d, 0xdb, 0x96, 0x3f, 0x4a, 0xca, 0x55, 0x92, +0x13, 0xc8, 0x39, 0x48, 0xfa, 0xaa, 0xec, 0xf9, +0xf7, 0xa8, 0xa3, 0x6f, 0x77, 0x42, 0x5c, 0xa5, +0x38, 0xa5, 0xad, 0x47, 0xb0, 0xa0, 0xc5, 0x62, +0x4f, 0x99, 0xf9, 0xf7, 0x36, 0xd8, 0x10, 0x60, +0x5d, 0x7f, 0x80, 0x9d, 0xc1, 0xaa, 0xc2, 0x17, +0x8d, 0x98, 0xfa, 0xd3, 0xb3, 0x9b, 0x3d, 0x46, +0x59, 0xc6, 0xe2, 0xc2, 0xc6, 0xf3, 0x4c, 0xff, +0x1d, 0x7e, 0x19, 0xfd, 0x81, 0x80, 0x73, 0x9b, +0xe2, 0x87, 0xb8, 0x4b, 0x04, 0xe7, 0x36, 0xc5, +0xdb, 0xf4, 0xa7, 0xd4, 0xaf, 0x84, 0x89, 0x96, +0x1f, 0x1b, 0x9b, 0x92, 0x7f, 0x17, 0xfc, 0xd2, +0x46, 0xa8, 0x4a, 0x2d, 0x4d, 0x13, 0xbf, 0x70, +0xf9, 0x93, 0xf2, 0xef, 0x6c, 0x1d, 0x3d, 0x10, +0xc8, 0x9d, 0x0f, 0x39, 0x66, 0xe5, 0x8f, 0x8e, +0xb5, 0x57, 0x7c, 0x47, 0x59, 0xfa, 0x43, 0x96, +0xcf, 0x81, 0xca, 0x7e, 0x5b, 0xfe, 0x1d, 0xf9, +0x29, 0xff, 0x36, 0x7b, 0xdb, 0x39, 0xf7, 0x83, +0xfc, 0xac, 0xc4, 0x1f, 0x53, 0xb7, 0x8d, 0x4e, +0xca, 0xbf, 0xff, 0x2a, 0x75, 0x85, 0x84, 0xbf, +0x8a, 0x7e, 0xf1, 0x48, 0xd9, 0x1f, 0x82, 0xe1, +0xde, 0x49, 0xf1, 0xcf, 0xb3, 0xf4, 0xa4, 0x1a, +0x4e, 0x77, 0x1c, 0xe4, 0xaf, 0xca, 0x2c, 0x01, +0xe5, 0x62, 0xfe, 0x7b, 0x2e, 0xff, 0xde, 0x41, +0xff, 0x01, 0x2a, 0x2b, 0xfc, 0x6b, 0x23, 0x67, +0x8a, 0xf6, 0x77, 0xa6, 0xfb, 0xfc, 0x56, 0xfe, +0x5d, 0x82, 0xc3, 0xbf, 0x63, 0x26, 0x8b, 0x1a, +0xe5, 0x0c, 0x3c, 0x0f, 0xe5, 0xaa, 0x3d, 0xfe, +0x29, 0x9d, 0x80, 0x47, 0xd4, 0xc0, 0x22, 0x31, +0xe8, 0x1b, 0x80, 0xfd, 0xaa, 0x76, 0x98, 0xe0, +0xb4, 0x99, 0x7f, 0x3f, 0x2c, 0x9c, 0x14, 0xc3, +0xcc, 0x0f, 0x1f, 0x87, 0x89, 0x96, 0x1a, 0x2d, +0xfe, 0x69, 0xfa, 0xef, 0x23, 0xca, 0x15, 0x61, +0xfa, 0xa0, 0x3b, 0xc8, 0x72, 0xc2, 0x42, 0x38, +0x6b, 0xd3, 0x9f, 0x5b, 0x52, 0xe3, 0xfe, 0x89, +0xfc, 0x79, 0x32, 0xcb, 0xdb, 0xc3, 0x84, 0xa8, +0xe7, 0x8f, 0x4c, 0xff, 0x7d, 0x95, 0x74, 0x2b, +0xd4, 0xd6, 0x89, 0x2c, 0xff, 0x7e, 0xab, 0x16, +0xff, 0xf4, 0xe5, 0xec, 0x93, 0xe5, 0x8f, 0xf6, +0x83, 0x2f, 0x11, 0xcd, 0xf8, 0x02, 0x66, 0x6c, +0x34, 0xe7, 0xbf, 0x03, 0x4b, 0xbf, 0x56, 0x50, +0x96, 0x0b, 0x61, 0xe7, 0xac, 0xd8, 0x81, 0x81, +0x9c, 0x7d, 0xd2, 0xe4, 0x8f, 0x51, 0xbb, 0x21, +0xd1, 0x46, 0x9d, 0x75, 0x0a, 0x8b, 0xc9, 0x61, +0x3f, 0xb3, 0x66, 0xfe, 0x7d, 0x7c, 0xf7, 0x04, +0xf7, 0x79, 0x61, 0xf3, 0x07, 0x0d, 0xd7, 0xc6, +0x3f, 0x0b, 0x47, 0xe1, 0xb7, 0xf2, 0x3c, 0xb5, +0x29, 0x8a, 0x7a, 0xbe, 0x8f, 0xd6, 0xa8, 0x85, +0xb6, 0xf3, 0x4b, 0xb8, 0x8b, 0x6d, 0x5e, 0x59, +0x7e, 0x4a, 0x4c, 0x3a, 0xbf, 0x0b, 0x49, 0x8a, +0xe3, 0x62, 0xf1, 0x33, 0x09, 0xb4, 0x38, 0x51, +0xec, 0x5f, 0x2e, 0xd2, 0x3c, 0x17, 0x6c, 0x04, +0xb9, 0xc7, 0xce, 0xcf, 0xc6, 0xb4, 0xb8, 0x07, +0x70, 0x1b, 0x4a, 0xe6, 0xad, 0x82, 0x64, 0x4f, +0x3a, 0x2e, 0x66, 0x22, 0xa3, 0x96, 0xff, 0x4e, +0x8e, 0xd3, 0x85, 0x4a, 0x40, 0xe4, 0x03, 0xa0, +0xd2, 0x90, 0xfd, 0xfc, 0x52, 0x0f, 0xec, 0x10, +0xde, 0x48, 0x3d, 0xad, 0xb8, 0x55, 0x7e, 0x1c, +0x41, 0xa6, 0xf5, 0x73, 0xdc, 0xb0, 0xcf, 0x38, +0xec, 0x45, 0x7f, 0xb3, 0xab, 0x0f, 0xf5, 0xcb, +0x2a, 0xb8, 0x9c, 0x0c, 0xb5, 0x05, 0xac, 0xfc, +0xd1, 0xb0, 0x27, 0x50, 0xb1, 0x61, 0x90, 0x64, +0xc5, 0x87, 0x88, 0x0b, 0xba, 0x15, 0x5f, 0x5a, +0xb4, 0xf2, 0x47, 0xaa, 0xc0, 0x53, 0x94, 0xf1, +0x47, 0xfd, 0x37, 0x22, 0x7b, 0x10, 0xa4, 0x3d, +0x7e, 0x8b, 0x9f, 0x00, 0xc5, 0xea, 0xba, 0x44, +0x59, 0x56, 0x3c, 0x4d, 0x1e, 0xa5, 0x87, 0xdb, +0xd2, 0xa3, 0xe2, 0xda, 0x88, 0xc9, 0x4f, 0x20, +0xf4, 0x05, 0x1a, 0x54, 0x5c, 0x25, 0xfc, 0x09, +0xfa, 0x21, 0x3a, 0xf2, 0x8d, 0xb6, 0xf3, 0x4b, +0x9e, 0x14, 0x99, 0xc8, 0xd4, 0xc7, 0xd1, 0xcd, +0xac, 0x43, 0xe1, 0xc4, 0x38, 0xcf, 0x0f, 0x12, +0xbd, 0x9f, 0xa2, 0xf0, 0x50, 0xe6, 0x68, 0x3c, +0xb4, 0x1c, 0xfb, 0x79, 0x9e, 0x71, 0xa9, 0x7f, +0x95, 0xed, 0xfc, 0x92, 0xb2, 0x03, 0x5d, 0xde, +0x9d, 0x11, 0xbf, 0x82, 0x36, 0xd8, 0x0e, 0x81, +0x3e, 0xb4, 0x41, 0xbb, 0xff, 0xde, 0x8e, 0x2c, +0x17, 0x9b, 0xc8, 0xa3, 0xb0, 0x9e, 0x56, 0xda, +0xcf, 0x7f, 0x46, 0x3d, 0x0f, 0xa9, 0xad, 0xc2, +0xae, 0x3e, 0x7f, 0x05, 0x19, 0xe0, 0x5a, 0x06, +0x03, 0xcc, 0x00, 0x4c, 0xff, 0x5d, 0x78, 0x12, +0x4e, 0x40, 0x57, 0xda, 0x35, 0xc4, 0x77, 0xc2, +0x09, 0x29, 0xdc, 0x39, 0xe9, 0xfc, 0x12, 0xc5, +0x77, 0x7d, 0x8e, 0x9d, 0x49, 0xd4, 0xf8, 0x29, +0x57, 0xdb, 0xf8, 0x89, 0x7e, 0x6a, 0x0f, 0xf2, +0x33, 0xb0, 0x95, 0xe5, 0xb5, 0x53, 0xb5, 0x6a, +0xc0, 0xe2, 0xa7, 0x2a, 0x54, 0x44, 0x36, 0x28, +0xbb, 0x62, 0xe8, 0x6e, 0x0c, 0x09, 0xfb, 0x34, +0x47, 0xde, 0xe2, 0xa7, 0x30, 0x1b, 0x36, 0x88, +0xbe, 0x88, 0x76, 0xbe, 0xee, 0xa0, 0x52, 0xf1, +0xa6, 0x88, 0xec, 0xc9, 0xf9, 0xef, 0xe0, 0x41, +0x6c, 0xa6, 0x63, 0x28, 0x3b, 0xfb, 0x70, 0x03, +0x95, 0x63, 0x51, 0x8b, 0x9f, 0xa7, 0xbd, 0x2c, +0xf7, 0x11, 0x32, 0xf2, 0x2b, 0x2c, 0x3f, 0x4d, +0x1b, 0xec, 0xe7, 0x97, 0x3e, 0x56, 0xb4, 0xb4, +0x7b, 0x1f, 0x7c, 0xcc, 0x85, 0x63, 0xd5, 0xb6, +0xf3, 0x4b, 0x85, 0x17, 0xe1, 0x63, 0x75, 0xff, +0x37, 0x5c, 0x31, 0xe7, 0x7c, 0x38, 0x02, 0xe1, +0x48, 0xc0, 0xe2, 0xa7, 0x17, 0x3d, 0x96, 0xee, +0xf4, 0xae, 0xf9, 0x28, 0x3b, 0x65, 0x92, 0x64, +0x79, 0x5f, 0x8b, 0x9f, 0x71, 0x68, 0x8b, 0x1d, +0x8c, 0xcb, 0xd1, 0xe5, 0x12, 0x11, 0xa4, 0x9d, +0x10, 0x88, 0x88, 0x16, 0x3f, 0xbb, 0x95, 0xdd, +0x70, 0x50, 0xf6, 0x35, 0xb2, 0x63, 0x83, 0xb0, +0x47, 0xae, 0x6a, 0x14, 0x6d, 0xe7, 0x97, 0xda, +0x58, 0x8e, 0x28, 0x14, 0x0f, 0x78, 0xf9, 0x0a, +0x78, 0x27, 0x59, 0x15, 0x0d, 0x58, 0xfc, 0x8c, +0xc2, 0x6e, 0xe9, 0x12, 0x3c, 0x17, 0x77, 0xff, +0x35, 0x8e, 0xd9, 0xab, 0x22, 0xae, 0x77, 0x8b, +0x9f, 0x22, 0xba, 0x60, 0x63, 0x34, 0x48, 0x02, +0x2d, 0x3c, 0x3b, 0xc8, 0x34, 0x5f, 0x0a, 0x58, +0xfc, 0x14, 0x3d, 0x0b, 0x83, 0x1f, 0x41, 0x79, +0xda, 0xff, 0x6e, 0xb1, 0x57, 0x3c, 0x2b, 0xa2, +0x7d, 0x5a, 0xfc, 0x14, 0xd1, 0x77, 0xaa, 0xa1, +0xd9, 0xd1, 0xfc, 0x8a, 0x82, 0x24, 0xfe, 0xb3, +0xa2, 0x4b, 0xb4, 0xf8, 0x59, 0x06, 0xa5, 0xb0, +0x5f, 0x29, 0xeb, 0xcd, 0x6f, 0x26, 0x0b, 0xe0, +0xa7, 0xb4, 0xac, 0x45, 0xb4, 0xf1, 0x93, 0xce, +0x82, 0x3f, 0xd2, 0x4c, 0xb6, 0x70, 0x25, 0xff, +0x2c, 0xbc, 0x48, 0x6f, 0x91, 0x03, 0x36, 0x7e, +0x4a, 0x9d, 0xec, 0x8c, 0xa0, 0x3a, 0x3d, 0x83, +0x7b, 0x2a, 0xce, 0xfb, 0x6b, 0x76, 0x7e, 0x0a, +0x0f, 0x47, 0x5e, 0xa0, 0xdf, 0xcb, 0xba, 0x0e, +0x3a, 0x6f, 0x20, 0x27, 0xe8, 0xad, 0x69, 0x57, +0xb7, 0xc9, 0xcf, 0x3d, 0xd2, 0xc3, 0x89, 0x44, +0xba, 0x2c, 0x8a, 0xfe, 0x58, 0x81, 0xba, 0x1e, +0x2a, 0x7b, 0xb0, 0xf0, 0xae, 0xa9, 0x15, 0x77, +0xc0, 0xdf, 0xa2, 0x14, 0xba, 0x7d, 0xb4, 0xc5, +0x4b, 0xdb, 0x44, 0x3f, 0x45, 0x90, 0xe6, 0xf4, +0xa7, 0xe2, 0x49, 0xa2, 0x9f, 0xee, 0x83, 0x0d, +0x0b, 0x0a, 0x44, 0xa0, 0x34, 0x30, 0x24, 0x5a, +0xf9, 0xcd, 0xa4, 0xb0, 0x9b, 0xc5, 0x93, 0x95, +0x4a, 0x3f, 0xca, 0xbe, 0x5e, 0xba, 0x50, 0xb5, +0xc5, 0x3f, 0x29, 0xda, 0xe0, 0x3b, 0xb8, 0x57, +0x4d, 0x4f, 0x39, 0x87, 0xe1, 0xb2, 0xa0, 0xe5, +0x8f, 0xcc, 0xf3, 0x4b, 0xca, 0x53, 0xd2, 0xc7, +0x52, 0x4d, 0x63, 0x65, 0x96, 0xef, 0x86, 0xf1, +0x74, 0xcd, 0x9b, 0x01, 0x8b, 0x9f, 0x3d, 0xa8, +0x3d, 0x0f, 0x46, 0x7d, 0x77, 0x27, 0xbb, 0xf9, +0x95, 0x52, 0xf7, 0xb9, 0xda, 0xc1, 0x68, 0xc6, +0xb4, 0x4f, 0x2a, 0xcc, 0x81, 0x6e, 0xd0, 0xa4, +0x1e, 0x8a, 0x38, 0x90, 0x5f, 0xb6, 0xf1, 0x53, +0x04, 0x61, 0x67, 0x57, 0x34, 0x4d, 0x17, 0x04, +0x49, 0x54, 0xc9, 0x40, 0x05, 0xb2, 0xa0, 0x25, +0x17, 0xff, 0x54, 0xc4, 0x15, 0x74, 0x4c, 0x41, +0x7e, 0x76, 0x39, 0x3b, 0x51, 0x74, 0x84, 0xd4, +0x40, 0x17, 0x9f, 0xe5, 0xf4, 0x79, 0xa0, 0xd7, +0x8f, 0xc9, 0x57, 0x65, 0x5c, 0xe6, 0xdf, 0xe7, +0x3b, 0xd5, 0x71, 0xe3, 0xfc, 0x52, 0x2e, 0xc7, +0xee, 0xb8, 0xea, 0x99, 0x98, 0x59, 0xa3, 0x36, +0x1d, 0x2d, 0x0f, 0x7b, 0xaf, 0xe8, 0xe7, 0xc1, +0x46, 0x6d, 0xfe, 0xfb, 0xf3, 0xf1, 0xf2, 0xd3, +0x62, 0x31, 0xa9, 0xf2, 0x1e, 0xa2, 0x55, 0x2c, +0xff, 0x6e, 0xe9, 0x4f, 0xdc, 0x6a, 0x24, 0xf9, +0x54, 0x94, 0xf1, 0xd3, 0xd8, 0x37, 0x2d, 0xfd, +0xb9, 0x57, 0xda, 0x4f, 0xf4, 0x18, 0x84, 0xb6, +0x07, 0x38, 0x2d, 0xfd, 0x49, 0x8b, 0x98, 0xee, +0x09, 0xaa, 0xae, 0xb6, 0x56, 0x3d, 0xe7, 0x86, +0x73, 0xdb, 0x67, 0xe9, 0x4f, 0x89, 0xc5, 0x19, +0xaa, 0x2f, 0x2e, 0x7d, 0x10, 0x26, 0x3e, 0xe1, +0xfc, 0xa7, 0x23, 0xd4, 0x83, 0xdb, 0xba, 0xde, +0x0e, 0xb9, 0xfb, 0xb2, 0x4d, 0x7f, 0x3e, 0xcf, +0x97, 0xab, 0xc7, 0x59, 0x1e, 0xef, 0x50, 0xac, +0x4a, 0x9d, 0xa4, 0x3f, 0x9b, 0x38, 0x2d, 0x65, +0x9d, 0x2e, 0x6e, 0x12, 0x8d, 0xdc, 0x60, 0x8e, +0x9f, 0x59, 0x6e, 0x96, 0xba, 0x7f, 0x27, 0xcb, +0xd9, 0xe8, 0x67, 0xd6, 0xb3, 0xf9, 0x93, 0xf4, +0x67, 0x72, 0x7f, 0x2a, 0x38, 0xec, 0x5e, 0xc8, +0xdf, 0xe5, 0xf9, 0x30, 0x1d, 0xee, 0x73, 0xd9, +0xf8, 0xf9, 0xdf, 0x0f, 0x2b, 0xcf, 0x37, 0xd4, +0xf7, 0x6f, 0xde, 0x32, 0x6d, 0x9c, 0xe5, 0x8f, +0x26, 0x9f, 0xff, 0x3c, 0x5f, 0x7c, 0x5c, 0x0e, +0x0f, 0xba, 0xe6, 0xb2, 0x7e, 0xe2, 0xfe, 0x60, +0xd7, 0x9f, 0x5b, 0x0e, 0x43, 0xfb, 0x0a, 0xdc, +0xc3, 0xe3, 0x2d, 0xa5, 0x28, 0x60, 0xf5, 0xfc, +0xbb, 0x31, 0x2e, 0x09, 0xe4, 0x5c, 0x7b, 0x7a, +0xd5, 0x50, 0x74, 0x6c, 0x09, 0xeb, 0x8b, 0x76, +0x16, 0xc0, 0xe4, 0xe7, 0xb6, 0x01, 0xa9, 0x95, +0x6d, 0xa5, 0x0b, 0xb4, 0xb1, 0xd6, 0xf2, 0xef, +0x96, 0xfe, 0x64, 0xf9, 0xf7, 0x30, 0x75, 0x3d, +0xa1, 0x9d, 0x9f, 0xd7, 0xf3, 0xef, 0x96, 0xfe, +0xd4, 0xa4, 0x50, 0xb5, 0x9e, 0x13, 0x9e, 0xa2, +0x3f, 0x87, 0x28, 0x93, 0x7a, 0x4d, 0x99, 0x72, +0x76, 0x2e, 0xdd, 0xc8, 0xbf, 0xe7, 0xf4, 0xe7, +0x37, 0xb5, 0xd4, 0x3a, 0x63, 0xa4, 0x78, 0x30, +0xae, 0x9d, 0x51, 0x9a, 0xac, 0x3f, 0xab, 0x94, +0xce, 0x4f, 0xc8, 0xbf, 0x03, 0xb2, 0x60, 0x1f, +0xca, 0x4e, 0x51, 0xcb, 0xbf, 0x5f, 0x7b, 0xfe, +0x93, 0xf5, 0xc5, 0x65, 0xcf, 0xbf, 0x1b, 0xfc, +0x3c, 0x7d, 0xe3, 0x90, 0x74, 0x49, 0x61, 0x52, +0x0f, 0xfb, 0xf2, 0xc1, 0x35, 0xfa, 0x53, 0xba, +0x34, 0x37, 0x74, 0x87, 0x71, 0x1e, 0xb3, 0x4b, +0xd9, 0x6c, 0xf1, 0x73, 0xad, 0x94, 0xf5, 0x74, +0xc7, 0x7d, 0xde, 0xa4, 0x76, 0x7e, 0x09, 0x58, +0x22, 0xde, 0xe4, 0x27, 0x68, 0xe7, 0x97, 0xfc, +0x11, 0xd1, 0xfb, 0x62, 0x9f, 0x0b, 0xd7, 0xd1, +0x24, 0xfd, 0xc9, 0xf2, 0xef, 0xdc, 0xb7, 0x17, +0x89, 0xa9, 0x3c, 0xf6, 0x0e, 0xbe, 0x49, 0xe7, +0x3f, 0xb7, 0xe0, 0x63, 0xb8, 0x05, 0x8a, 0x2b, +0xd5, 0x30, 0x54, 0x7a, 0x89, 0x84, 0xec, 0xe7, +0x3f, 0x57, 0x72, 0x7b, 0xa5, 0x0f, 0xe0, 0x19, +0xa5, 0x3a, 0x35, 0xc3, 0x3c, 0xb3, 0x60, 0xd3, +0x9f, 0x2c, 0x57, 0xc7, 0x64, 0x75, 0xf6, 0x1a, +0xfd, 0xe9, 0xb8, 0x19, 0x9e, 0x75, 0x54, 0xd3, +0xa5, 0x69, 0xbe, 0x53, 0x7a, 0x36, 0x31, 0x45, +0x7f, 0xde, 0xd9, 0x53, 0x03, 0x2e, 0x9c, 0xd2, +0x25, 0xe8, 0x64, 0x78, 0xa6, 0x9c, 0xff, 0xd4, +0x64, 0xe7, 0xc0, 0xa6, 0x35, 0x84, 0x9d, 0x19, +0x9a, 0x72, 0xfe, 0xf3, 0x86, 0xe0, 0x3f, 0x0d, +0xdf, 0x36, 0xe2, 0xfe, 0x49, 0xeb, 0x59, 0x40, +0xfd, 0x39, 0xf9, 0xfc, 0x67, 0xa7, 0xf7, 0x8a, +0x1c, 0xee, 0xd7, 0xce, 0xf9, 0x5f, 0x8e, 0x4f, +0xca, 0xbf, 0xe3, 0x7a, 0x5f, 0x74, 0x32, 0x15, +0x66, 0xb2, 0x93, 0x25, 0x92, 0xb4, 0xf5, 0x6e, +0xe9, 0xcf, 0x87, 0x23, 0xad, 0xa9, 0xc0, 0x48, +0x32, 0x18, 0x19, 0x70, 0x3d, 0x95, 0xae, 0x1c, +0xb6, 0x9f, 0xff, 0xa4, 0x29, 0xda, 0x2e, 0xe3, +0xf2, 0xf9, 0x7e, 0xcb, 0x19, 0x38, 0x20, 0x6b, +0x5a, 0x38, 0xa7, 0x3f, 0x65, 0x8f, 0x0a, 0x2c, +0xad, 0x89, 0xcc, 0x1a, 0x60, 0x12, 0x8e, 0xbd, +0xc3, 0x69, 0xd3, 0x3e, 0x59, 0xfe, 0xbd, 0x5e, +0xc5, 0xe7, 0x8d, 0x88, 0xc6, 0x7a, 0x3f, 0x6f, +0xf2, 0x73, 0x48, 0x0f, 0xcf, 0x66, 0x66, 0x8c, +0xe4, 0x58, 0x90, 0xe3, 0xa7, 0x2a, 0x7d, 0x84, +0x08, 0xd8, 0x8f, 0xba, 0xd5, 0x59, 0x07, 0x86, +0x96, 0xca, 0x9a, 0xf6, 0xf9, 0x8d, 0x18, 0x3b, +0x1f, 0xa9, 0xe9, 0xcf, 0xee, 0x32, 0xc6, 0x17, +0x9b, 0xfe, 0xf4, 0xcb, 0x87, 0xf4, 0xd0, 0x26, +0x3a, 0xa5, 0x74, 0xca, 0xf9, 0x4f, 0x91, 0xee, +0x97, 0xe5, 0x01, 0xa6, 0x3f, 0xa5, 0x7d, 0xb2, +0xe6, 0xc7, 0x99, 0xfa, 0xb3, 0x30, 0xae, 0x4c, +0x04, 0x51, 0x1e, 0x7f, 0xc0, 0x57, 0xb2, 0xb5, +0xa2, 0x6e, 0xb6, 0xeb, 0x4f, 0x55, 0xbd, 0x12, +0xac, 0x3f, 0xed, 0xbe, 0xc0, 0x8f, 0xa7, 0xc7, +0x56, 0x86, 0x07, 0x27, 0xe5, 0xdf, 0xdf, 0xc6, +0xe9, 0xae, 0x89, 0xbb, 0xbb, 0xf9, 0x5a, 0x54, +0x52, 0x28, 0xaa, 0xec, 0xe7, 0x3f, 0x07, 0x44, +0xc6, 0x41, 0xed, 0x9c, 0xea, 0xdf, 0x30, 0x0e, +0xa6, 0x89, 0x6c, 0xe7, 0xa7, 0xbe, 0x94, 0x0d, +0x7e, 0xca, 0xc4, 0x67, 0x3f, 0xff, 0xd9, 0xe2, +0xeb, 0x33, 0xdb, 0x7d, 0x46, 0xb6, 0xc5, 0x3f, +0x7f, 0x0d, 0x57, 0x8e, 0x22, 0x07, 0x33, 0xce, +0x2a, 0x7d, 0xcc, 0xac, 0xfc, 0xd1, 0x39, 0xf8, +0x0d, 0xfc, 0x51, 0x1b, 0xaa, 0x86, 0xab, 0x54, +0x3b, 0x3f, 0x9f, 0x75, 0xda, 0xf9, 0x79, 0x1c, +0xba, 0x7a, 0x10, 0x9b, 0x23, 0x1e, 0xe6, 0x6f, +0xba, 0x76, 0x59, 0xdf, 0x1f, 0x09, 0x81, 0xb6, +0x4d, 0x12, 0x1b, 0x4f, 0xdf, 0x08, 0x3b, 0x33, +0xdb, 0x2f, 0x3e, 0x61, 0x8f, 0x7f, 0x92, 0x56, +0xd8, 0xcd, 0xc6, 0x93, 0x1d, 0x42, 0x0f, 0x28, +0xf9, 0xb2, 0xf9, 0xfd, 0x51, 0x86, 0x0b, 0xab, +0xed, 0x99, 0x9b, 0xb2, 0xe2, 0x0f, 0x7d, 0x67, +0x51, 0xfc, 0x55, 0x66, 0xf3, 0x87, 0xad, 0xef, +0x8f, 0xa2, 0xd3, 0x53, 0x2f, 0xd0, 0xda, 0xfe, +0xa6, 0xcf, 0x37, 0x9c, 0x27, 0x2f, 0xc8, 0x61, +0xb5, 0xd2, 0x96, 0x3f, 0xba, 0x71, 0xaf, 0x74, +0x05, 0x6e, 0x50, 0xab, 0xbb, 0x1a, 0xf4, 0x79, +0xd7, 0xce, 0x7f, 0xea, 0xfd, 0x44, 0x7e, 0xba, +0xd8, 0x77, 0x52, 0xae, 0xee, 0x72, 0x16, 0x2f, +0x0f, 0xb1, 0xd8, 0xbd, 0xc9, 0xcf, 0xa2, 0xc3, +0x9c, 0x1e, 0xff, 0x44, 0x7f, 0xec, 0xef, 0x18, +0x3f, 0xe3, 0xf6, 0xf3, 0xf3, 0xa4, 0x95, 0x3e, +0xc6, 0xce, 0x2f, 0x85, 0xe1, 0x67, 0x8c, 0x9f, +0xf6, 0xfc, 0x11, 0x76, 0x3d, 0x2b, 0xb3, 0x6d, +0x7d, 0xba, 0x82, 0x83, 0x3e, 0x84, 0x63, 0x6d, +0x9d, 0x9f, 0xef, 0x86, 0x13, 0xca, 0xbc, 0x74, +0x20, 0xed, 0xf4, 0xc2, 0x6b, 0xd0, 0xc5, 0x62, +0xb1, 0x36, 0x7e, 0x2a, 0x63, 0x92, 0x71, 0x7e, +0x69, 0x78, 0xaa, 0xff, 0xce, 0x50, 0xd5, 0xa5, +0x7d, 0x67, 0xa3, 0x7d, 0x6c, 0xe4, 0x62, 0xe7, +0x3f, 0xed, 0xfe, 0xfb, 0x03, 0x1a, 0x3f, 0xd9, +0x41, 0x0a, 0x2c, 0xf0, 0x71, 0x53, 0x7f, 0x56, +0x68, 0xc8, 0xd1, 0xea, 0x12, 0xec, 0x7b, 0x19, +0x89, 0x98, 0xe7, 0x3f, 0xc1, 0x81, 0xfc, 0xf4, +0xc5, 0xfc, 0x1e, 0xf2, 0x16, 0x61, 0x42, 0x14, +0x0b, 0x91, 0x1c, 0x3f, 0x45, 0xc6, 0x4f, 0x1f, +0x7a, 0x50, 0xcc, 0x7f, 0xe7, 0x42, 0x30, 0x40, +0x79, 0x2b, 0x7f, 0x84, 0x1a, 0x53, 0xa9, 0x64, +0x38, 0x7a, 0x59, 0x3f, 0x23, 0x3f, 0x68, 0x3b, +0x3f, 0xff, 0x16, 0x1c, 0x95, 0x6b, 0x95, 0xc0, +0x16, 0x9e, 0x1d, 0xb2, 0x7f, 0x30, 0xe6, 0xda, +0x66, 0xf9, 0xef, 0x90, 0xa5, 0x49, 0xa6, 0x35, +0x5a, 0x88, 0x4a, 0xbb, 0xa1, 0x0a, 0x44, 0x5b, +0xfe, 0xc8, 0xf1, 0xf2, 0xba, 0x75, 0x2b, 0x67, +0x47, 0xc4, 0xd8, 0xcc, 0x97, 0xdb, 0x9e, 0x86, +0x4a, 0x45, 0x8c, 0x59, 0xe7, 0xe7, 0x4b, 0x9e, +0x12, 0x1f, 0x52, 0xca, 0x14, 0x71, 0x30, 0x72, +0x11, 0x7e, 0x23, 0x54, 0x47, 0xed, 0xf9, 0x23, +0xcf, 0xee, 0xc8, 0x51, 0x5a, 0x1b, 0x77, 0x31, +0x4c, 0xb3, 0xf3, 0xf3, 0x36, 0xfd, 0xf9, 0x6d, +0xf8, 0x25, 0x7c, 0xa0, 0x84, 0xef, 0x76, 0xa7, +0x5a, 0xdf, 0x92, 0x2f, 0x89, 0xe1, 0xc8, 0xb5, +0xe7, 0xe7, 0xb5, 0xf8, 0x2e, 0x2b, 0x70, 0xae, +0x5e, 0x33, 0x7f, 0x84, 0xfe, 0xbb, 0xe3, 0x35, +0xf0, 0xa5, 0xc4, 0xdd, 0xe4, 0xb3, 0xc2, 0x46, +0xc5, 0x97, 0x2a, 0x1c, 0x36, 0xf3, 0x47, 0xfe, +0x75, 0xab, 0x84, 0x47, 0x40, 0x1e, 0xf4, 0xd7, +0xf9, 0xee, 0x24, 0xad, 0xaa, 0x6f, 0x50, 0xf4, +0x9b, 0xf9, 0xa3, 0xb2, 0xa2, 0xf9, 0xf0, 0x53, +0x0e, 0xed, 0xe5, 0x41, 0xf2, 0x35, 0x68, 0x57, +0xcb, 0x17, 0xe5, 0xaf, 0x34, 0xf3, 0x47, 0x7e, +0xef, 0x2c, 0xf8, 0x5b, 0xba, 0x1f, 0x39, 0xe8, +0xfc, 0x1a, 0x9c, 0xa4, 0xfb, 0xb2, 0xae, 0xe1, +0xf2, 0x5c, 0xfe, 0x48, 0x2c, 0x6a, 0x83, 0x77, +0x75, 0x1c, 0xed, 0xd5, 0x39, 0x9f, 0xb6, 0xf9, +0xef, 0xe7, 0x95, 0xe3, 0x28, 0x3b, 0xc5, 0x7e, +0x7e, 0x2e, 0x8b, 0xd7, 0xa5, 0x5d, 0xa7, 0xcb, +0xad, 0xef, 0x8f, 0x7e, 0x2a, 0xac, 0x4f, 0xa3, +0xcc, 0x8d, 0x90, 0x82, 0x6c, 0x1b, 0xca, 0x5f, +0x71, 0x30, 0x6f, 0xae, 0x69, 0x9f, 0xb8, 0xf7, +0x4b, 0x7b, 0xa8, 0xa8, 0xa0, 0x86, 0xc6, 0xba, +0x36, 0x71, 0xb9, 0x99, 0x3f, 0x8a, 0x7b, 0x5e, +0x54, 0x36, 0xaa, 0x28, 0xab, 0x81, 0xcc, 0x95, +0x58, 0x02, 0x07, 0xfd, 0x0e, 0xaf, 0xe9, 0xbf, +0x77, 0xc2, 0xd1, 0xe4, 0xc2, 0x78, 0x20, 0xe3, +0x9c, 0xc3, 0xf2, 0xc5, 0xc3, 0x68, 0xa8, 0xd6, +0x3d, 0x99, 0x5b, 0xf4, 0x1c, 0xfb, 0x3c, 0x6a, +0x28, 0xd7, 0x4f, 0xeb, 0xfc, 0xfc, 0x18, 0x1c, +0xf5, 0xd6, 0x34, 0xa2, 0xff, 0x7e, 0x11, 0x96, +0xe9, 0x2c, 0x90, 0x4d, 0xff, 0xe8, 0x7e, 0x39, +0xc9, 0x6c, 0x30, 0x43, 0xde, 0x56, 0x36, 0xb1, +0x3d, 0x5c, 0x26, 0x72, 0x2e, 0xff, 0x2e, 0x88, +0xcc, 0x64, 0x41, 0x3b, 0xf6, 0xd9, 0xc9, 0x62, +0x25, 0x29, 0x2b, 0x7f, 0x24, 0x71, 0x2d, 0x34, +0x98, 0xc6, 0xf9, 0xb8, 0xbb, 0xa7, 0x82, 0x9d, +0x13, 0xc0, 0xba, 0x5c, 0xfe, 0x48, 0x11, 0xbf, +0x45, 0x8e, 0x46, 0x83, 0x9c, 0x4b, 0xe0, 0x7b, +0x5a, 0xb2, 0x50, 0x47, 0x71, 0x6e, 0xe5, 0x1c, +0x3f, 0x4b, 0x06, 0x15, 0x44, 0x38, 0xe7, 0xee, +0x45, 0x69, 0x79, 0x06, 0xea, 0x81, 0x9d, 0xff, +0x34, 0xf9, 0x39, 0x9e, 0x1d, 0x4b, 0xe0, 0x36, +0x74, 0x94, 0xaf, 0xa3, 0x7f, 0x35, 0x59, 0x7f, +0x52, 0xe9, 0x63, 0x86, 0xf0, 0xac, 0x93, 0xfa, +0xc2, 0xca, 0x21, 0x59, 0xd3, 0x9f, 0xd6, 0xf7, +0x47, 0x03, 0x29, 0x6d, 0xab, 0x21, 0xec, 0xcc, +0x97, 0x1e, 0x9c, 0xb3, 0x7d, 0x7f, 0xc4, 0x3d, +0xcb, 0xe2, 0x9f, 0xc2, 0xb5, 0xfa, 0x13, 0x50, +0x7f, 0x8e, 0xe5, 0xe1, 0xdc, 0x6e, 0x77, 0x32, +0x08, 0x69, 0x93, 0xac, 0x4e, 0xd1, 0x9f, 0xee, +0xcb, 0xfc, 0x2a, 0x61, 0x82, 0xbb, 0x46, 0x7f, +0x8e, 0x21, 0xc6, 0x98, 0xfe, 0x24, 0xc7, 0x85, +0xf0, 0xe4, 0xf3, 0x9f, 0x75, 0xae, 0x67, 0x95, +0xe9, 0x88, 0xf7, 0x45, 0x3f, 0xc9, 0x7d, 0x73, +0x60, 0xd7, 0x9f, 0x99, 0x56, 0x0d, 0xef, 0x2e, +0xa1, 0x55, 0x98, 0xfa, 0xfd, 0xd1, 0xf2, 0xa7, +0x77, 0xe0, 0x36, 0x3b, 0x7c, 0xc7, 0xd7, 0xe4, +0x76, 0x3a, 0xe5, 0xfb, 0x23, 0x17, 0x7c, 0x98, +0xa9, 0x1b, 0x76, 0xef, 0x6b, 0x98, 0x0e, 0x2f, +0x40, 0x9d, 0x3a, 0xe9, 0xfb, 0xa3, 0xdf, 0xcc, +0x9b, 0x90, 0xc2, 0x7d, 0xd8, 0x85, 0xc3, 0xb9, +0x78, 0x88, 0xc5, 0xcf, 0x91, 0x36, 0x55, 0xc5, +0xfd, 0x61, 0xdb, 0xb4, 0x91, 0xa4, 0xf1, 0x7e, +0xd6, 0xf7, 0x47, 0x87, 0x93, 0xd3, 0x24, 0x26, +0x3b, 0xd7, 0x9f, 0x91, 0x0f, 0xe8, 0x7a, 0xc2, +0xe2, 0xe7, 0x73, 0xc9, 0x42, 0x15, 0xb1, 0xb9, +0x9c, 0x9c, 0xbd, 0xf7, 0x40, 0x5b, 0xa5, 0x5d, +0x7f, 0x6a, 0xdf, 0x1f, 0x51, 0x59, 0x8f, 0x7f, +0xe6, 0xb4, 0xbe, 0x5d, 0x7f, 0x52, 0x94, 0x9d, +0x7b, 0xf9, 0xe1, 0x5c, 0x20, 0xd4, 0xc6, 0xcf, +0x3c, 0x4d, 0x0a, 0x25, 0x5a, 0x55, 0x4d, 0x13, +0x15, 0x4e, 0xe6, 0xe7, 0x71, 0x12, 0xd6, 0x6d, +0xf7, 0xa8, 0xae, 0xb3, 0x6c, 0xdf, 0x1f, 0xc1, +0x06, 0xaa, 0x9d, 0x9f, 0x1f, 0x92, 0x19, 0x3f, +0x79, 0x7b, 0xfc, 0x53, 0x20, 0x9b, 0x64, 0xe3, +0xec, 0x79, 0xc2, 0xd0, 0x6e, 0x56, 0xfc, 0x13, +0x7f, 0xa4, 0x9d, 0x9f, 0xef, 0x23, 0xda, 0x41, +0xd0, 0xc9, 0xfa, 0xb3, 0x5f, 0x60, 0xfa, 0xac, +0x21, 0x2b, 0xf4, 0xa3, 0x4a, 0x99, 0xfa, 0xfd, +0x91, 0x26, 0xe7, 0xe4, 0xb7, 0x84, 0xa9, 0xdf, +0x1f, 0x95, 0xbc, 0x45, 0x7b, 0xd8, 0x8f, 0xb6, +0xf1, 0x43, 0xc2, 0xa5, 0xc6, 0xf0, 0xa4, 0xef, +0x8f, 0xbc, 0xe7, 0x90, 0x9f, 0x55, 0x80, 0xdb, +0x3a, 0x3a, 0xf2, 0x30, 0x87, 0x73, 0x4e, 0xfa, +0xfe, 0x48, 0xdd, 0xa9, 0x4b, 0xe0, 0x23, 0xec, +0x7c, 0xf2, 0x22, 0xfb, 0xf7, 0x47, 0xdc, 0x6e, +0xb2, 0x61, 0x63, 0x95, 0xf2, 0x19, 0x76, 0x80, +0xe6, 0xa0, 0x7e, 0x06, 0xcb, 0xe4, 0x27, 0x3b, +0x97, 0xa0, 0x75, 0x61, 0x06, 0x13, 0xa2, 0x2c, +0x10, 0x6a, 0x7d, 0x7f, 0x04, 0x6d, 0xf0, 0x23, +0x91, 0xd5, 0x35, 0x8c, 0x7c, 0xd2, 0xf7, 0x47, +0x63, 0x4a, 0x88, 0x9b, 0x8e, 0x7b, 0x95, 0x3c, +0xf5, 0xfb, 0x23, 0x76, 0x7e, 0x5e, 0x65, 0xc7, +0x3e, 0xf9, 0x27, 0xe9, 0x6b, 0x64, 0x6a, 0xfc, +0x93, 0xdb, 0x1f, 0x93, 0xd5, 0x82, 0x20, 0x79, +0x09, 0xf7, 0xf7, 0x55, 0x53, 0xe2, 0x9f, 0x83, +0x07, 0xe8, 0xfd, 0xaa, 0x73, 0x8d, 0xef, 0x39, +0xf8, 0x99, 0x3c, 0x49, 0x7f, 0xb2, 0xf3, 0xf3, +0xff, 0x9c, 0x9a, 0x97, 0x9d, 0xbe, 0x16, 0x75, +0xe4, 0x6f, 0x07, 0xa7, 0x7e, 0x7f, 0x44, 0xaf, +0x54, 0x84, 0x55, 0xe7, 0x3e, 0x16, 0x57, 0x54, +0xa6, 0x9c, 0xff, 0x9c, 0xf0, 0x9c, 0x48, 0xe1, +0x32, 0x7f, 0x90, 0xbf, 0xf5, 0xda, 0xef, 0x8f, +0x9e, 0xa3, 0xeb, 0x68, 0x80, 0x3d, 0xa6, 0x45, +0xd0, 0x0f, 0x7b, 0xda, 0xbe, 0x3f, 0xda, 0xa1, +0xb6, 0xb1, 0x1f, 0x8d, 0x92, 0x1d, 0xb4, 0x7d, +0xf2, 0xf7, 0x47, 0xec, 0xfc, 0x67, 0x42, 0xd1, +0x3e, 0xfb, 0x6b, 0xd3, 0x84, 0xe8, 0xa4, 0xef, +0x8f, 0x0e, 0x13, 0x2d, 0xbc, 0x3e, 0xca, 0x6b, +0x07, 0x41, 0x27, 0x7f, 0x7f, 0x34, 0x20, 0x5c, +0xee, 0xc7, 0x1f, 0x75, 0x17, 0xbf, 0xe5, 0x9a, +0xa2, 0x3f, 0x39, 0x69, 0x5c, 0x78, 0x09, 0x59, +0xb0, 0x6c, 0xb4, 0x21, 0x24, 0x4c, 0x40, 0xcd, +0x94, 0xef, 0x8f, 0x60, 0xa3, 0xbe, 0xcc, 0x7d, +0x54, 0xff, 0x50, 0xc7, 0xfa, 0xfe, 0xc8, 0x81, +0x75, 0x8a, 0x76, 0xe4, 0xdc, 0x4f, 0x0f, 0x09, +0xbe, 0x49, 0xfa, 0x13, 0x77, 0x37, 0x5a, 0x16, +0xe8, 0x5b, 0x1a, 0x2c, 0x06, 0xc5, 0x10, 0x7f, +0xe6, 0xf7, 0x47, 0xe2, 0x83, 0xb4, 0x3f, 0x18, +0x1e, 0xdc, 0x3c, 0xca, 0xfb, 0x53, 0x13, 0xa0, +0x9d, 0x2f, 0xb7, 0xbe, 0x3f, 0x1a, 0x89, 0xac, +0x9d, 0xc7, 0x96, 0xf9, 0x0c, 0xf5, 0xb4, 0xe1, +0x17, 0xe7, 0xf8, 0x09, 0x47, 0x16, 0x73, 0xcd, +0xca, 0x7d, 0xd2, 0xe7, 0x3c, 0x8e, 0x1e, 0x2c, +0x9c, 0x91, 0xae, 0x13, 0x0a, 0xd5, 0x79, 0xc6, +0x3d, 0x8f, 0x28, 0x79, 0xf3, 0xb8, 0xfb, 0x94, +0xaf, 0x48, 0x45, 0x7d, 0xd3, 0x56, 0x03, 0x2b, +0x94, 0xa8, 0xf3, 0x8c, 0xd8, 0x21, 0x25, 0x5c, +0x33, 0x8d, 0xca, 0xc5, 0xa2, 0xd0, 0xc2, 0xc9, +0x7a, 0xc1, 0xf8, 0x1c, 0x96, 0x0d, 0xcc, 0xce, +0x38, 0xb7, 0x1c, 0x66, 0x4a, 0x0e, 0x95, 0x8b, +0xc3, 0x72, 0xf8, 0x32, 0x38, 0xcc, 0xba, 0x23, +0x51, 0xc7, 0x5f, 0x2c, 0x12, 0xe9, 0x75, 0x72, +0x49, 0xbf, 0x63, 0x0d, 0xdc, 0x47, 0xef, 0x91, +0xad, 0x7b, 0x1e, 0xb9, 0x1b, 0xe2, 0x92, 0x08, +0x4b, 0x44, 0xf6, 0xa1, 0x3e, 0xa7, 0x7f, 0xa8, +0x6f, 0xf5, 0x45, 0x28, 0xe3, 0x44, 0x88, 0xc8, +0x12, 0x15, 0x64, 0xa3, 0x60, 0xd6, 0xdd, 0xc3, +0x29, 0x54, 0x91, 0xef, 0xf5, 0x97, 0xf0, 0x9c, +0x92, 0x88, 0xc9, 0x25, 0xfe, 0x12, 0x30, 0xfb, +0xe9, 0xe2, 0xae, 0x83, 0x2f, 0xa9, 0xd2, 0xf7, +0xa1, 0x14, 0x0b, 0x8a, 0x5a, 0xd2, 0x2c, 0xe0, +0xce, 0x9a, 0xeb, 0x27, 0x7c, 0x46, 0x66, 0xe3, +0x1e, 0x03, 0x36, 0xdd, 0x54, 0xc0, 0x79, 0x33, +0xfb, 0x19, 0x47, 0x9d, 0xba, 0x11, 0xe4, 0xb6, +0xa8, 0x4c, 0xbc, 0x5c, 0x0b, 0xc8, 0x54, 0xe4, +0xcc, 0x7e, 0xc6, 0xa6, 0xad, 0xe0, 0x5e, 0x85, +0xbb, 0x15, 0x4f, 0xca, 0xb1, 0x82, 0x8b, 0xc2, +0x5f, 0x28, 0x1e, 0x5b, 0x3f, 0xf3, 0xd7, 0xe0, +0x2b, 0xd7, 0x22, 0xac, 0xf0, 0xdd, 0x4f, 0xd3, +0x99, 0x58, 0x30, 0xeb, 0x22, 0x79, 0x72, 0xc2, +0x25, 0xf3, 0x62, 0xac, 0x37, 0x4f, 0xa2, 0x2e, +0x79, 0x91, 0x28, 0x59, 0xe3, 0x29, 0x2a, 0x41, +0xa6, 0x5e, 0x40, 0x97, 0x31, 0x80, 0x05, 0xd5, +0xec, 0xa7, 0x93, 0x0b, 0x26, 0x9a, 0x32, 0x33, +0x44, 0xe1, 0x38, 0x17, 0x52, 0x9b, 0x82, 0xf7, +0x88, 0x82, 0x6a, 0xf6, 0xb3, 0x61, 0x76, 0x73, +0x62, 0x79, 0xb0, 0x58, 0x2c, 0x69, 0x15, 0xe2, +0xea, 0xf2, 0xe0, 0x97, 0xc5, 0x12, 0x6a, 0xf6, +0x33, 0x02, 0x71, 0x7c, 0x4c, 0x44, 0xc4, 0xfe, +0x37, 0x27, 0x44, 0x7c, 0x30, 0x58, 0x7d, 0xb9, +0x5b, 0xa8, 0x48, 0x14, 0xca, 0x91, 0xa8, 0xb4, +0x15, 0x0b, 0x5e, 0xb9, 0x21, 0x5a, 0x64, 0xd5, +0xb1, 0xc1, 0x5f, 0x02, 0x31, 0x5a, 0x82, 0x05, +0x2e, 0x02, 0x45, 0xb4, 0x44, 0x31, 0xfb, 0x99, +0xc7, 0x2d, 0xa2, 0xf7, 0xc6, 0x4b, 0xbc, 0x8e, +0x3c, 0xee, 0x8b, 0x34, 0x16, 0xf7, 0x78, 0x1d, +0x60, 0xce, 0x7b, 0x31, 0x27, 0xd0, 0x7c, 0x59, +0x8a, 0x0a, 0xc5, 0x0e, 0x01, 0x27, 0x04, 0x0b, +0xd6, 0xbc, 0x37, 0xf2, 0x5f, 0xa4, 0x6d, 0xf1, +0x6f, 0x78, 0x5d, 0x4b, 0xc8, 0x17, 0x13, 0x2f, +0xc7, 0x6f, 0xf1, 0x16, 0x9a, 0xf7, 0x3c, 0xb2, +0x64, 0xda, 0xea, 0xc4, 0x99, 0xf8, 0x57, 0xbc, +0x25, 0xeb, 0x1d, 0xab, 0x13, 0xf7, 0xc5, 0xff, +0xd2, 0x5b, 0x62, 0xda, 0xe0, 0xe2, 0x25, 0xdc, +0x6a, 0xba, 0x3c, 0x7e, 0x9d, 0xb7, 0xf0, 0x45, +0x2c, 0x9c, 0x61, 0x05, 0xb5, 0xc8, 0xac, 0xcb, +0x9b, 0x47, 0x5d, 0xf1, 0x7b, 0xbc, 0x9e, 0x17, +0x67, 0xce, 0xa3, 0xa5, 0xf1, 0x06, 0x6c, 0x57, +0x94, 0x8b, 0x6d, 0x03, 0x0e, 0x7f, 0x93, 0x4c, +0xc4, 0xc5, 0x2d, 0x5c, 0x1c, 0x27, 0xf1, 0x3a, +0xb4, 0xcf, 0x5c, 0x8d, 0x90, 0xc7, 0x95, 0x25, +0x96, 0xc7, 0x67, 0x7a, 0x1d, 0xeb, 0xb9, 0x32, +0x1a, 0x8d, 0x7f, 0xd9, 0xeb, 0xa0, 0xb9, 0x75, +0xb4, 0x58, 0x11, 0x9a, 0xb9, 0x26, 0x98, 0x01, +0x92, 0xea, 0x68, 0x86, 0x26, 0xf8, 0x0a, 0x78, +0xcc, 0x7b, 0x2e, 0x26, 0x10, 0x4f, 0x8b, 0x38, +0x9e, 0xd0, 0x02, 0x71, 0x1c, 0x4f, 0xd4, 0x3a, +0xd4, 0xec, 0x4b, 0x44, 0x90, 0x77, 0x7a, 0xe5, +0x25, 0xfe, 0xa2, 0x16, 0x41, 0x4e, 0x48, 0x72, +0xc4, 0x5f, 0x64, 0xab, 0x2b, 0x53, 0x54, 0x4f, +0xf0, 0x4b, 0xae, 0x92, 0x08, 0xa7, 0xf4, 0xdc, +0x5b, 0xe6, 0x71, 0x95, 0x28, 0x66, 0x3f, 0x09, +0x17, 0xeb, 0xbf, 0x17, 0x4d, 0xd6, 0x11, 0xe1, +0x62, 0xf4, 0xde, 0x20, 0x16, 0x94, 0x5c, 0x5f, +0x70, 0xc5, 0xc7, 0x8b, 0x24, 0x10, 0x60, 0x91, +0x28, 0x28, 0xe0, 0x45, 0xfb, 0x34, 0x6b, 0x60, +0xf1, 0xdd, 0x11, 0x5f, 0x82, 0xca, 0xb2, 0x28, +0x12, 0x22, 0xeb, 0x05, 0x30, 0xfb, 0xa9, 0x2c, +0x63, 0xeb, 0xef, 0x2f, 0xa0, 0x84, 0x3a, 0x72, +0x85, 0x5c, 0x5f, 0x8e, 0x28, 0x8b, 0x9a, 0xd9, +0x09, 0x18, 0x5c, 0x92, 0x0e, 0xa6, 0x94, 0xaf, +0x83, 0x3b, 0xcd, 0x71, 0x01, 0x98, 0x13, 0xe7, +0x4a, 0x81, 0xe0, 0xbb, 0xcf, 0x94, 0xf1, 0xe1, +0x4b, 0xa0, 0x48, 0x35, 0xab, 0x24, 0x98, 0x0d, +0xf9, 0x40, 0x14, 0x78, 0x05, 0x2a, 0x58, 0xc1, +0xfc, 0x8b, 0x1d, 0x78, 0x55, 0x70, 0xf3, 0xee, +0x6f, 0x52, 0x8a, 0x25, 0xa1, 0x8f, 0x2b, 0x83, +0x68, 0xec, 0x1e, 0x49, 0xb0, 0xda, 0xf9, 0x1c, +0xdf, 0x3a, 0xf7, 0xd5, 0xe0, 0xcc, 0x8e, 0x92, +0xc7, 0xb9, 0x95, 0xea, 0xdd, 0xc1, 0x2f, 0x77, +0x94, 0x50, 0xdb, 0x3d, 0x6b, 0xf1, 0x56, 0x11, +0x05, 0x52, 0x78, 0x8b, 0x29, 0xf7, 0x14, 0x85, +0x60, 0x91, 0x57, 0x58, 0xc2, 0x15, 0x25, 0x95, +0x78, 0x91, 0xb7, 0x0d, 0x0b, 0xb6, 0x7e, 0xf6, +0x14, 0x89, 0xf7, 0x0a, 0x5f, 0xe2, 0x4b, 0x94, +0xfb, 0x63, 0x45, 0xf7, 0x0a, 0x25, 0xdc, 0x97, +0x14, 0xab, 0x5d, 0x59, 0x44, 0x54, 0x5a, 0x3c, +0xf2, 0xba, 0x28, 0x16, 0xee, 0x65, 0x05, 0xab, +0xae, 0x60, 0x31, 0xa1, 0xc0, 0x04, 0x68, 0x81, +0x83, 0x50, 0x25, 0x2d, 0xf9, 0xad, 0x3b, 0x82, +0x8b, 0xbf, 0x07, 0xda, 0x7a, 0x56, 0x07, 0x45, +0x2c, 0x70, 0xdb, 0xd4, 0x5b, 0x82, 0xa2, 0xed, +0x9e, 0x8e, 0x35, 0xdc, 0x7d, 0xf4, 0x2b, 0xf2, +0xf5, 0xfd, 0x5a, 0xe1, 0x2f, 0x91, 0x59, 0x66, +0x1d, 0x8f, 0x50, 0x91, 0x82, 0x82, 0x8b, 0x63, +0x85, 0xa2, 0x90, 0xe0, 0x2a, 0xb2, 0xee, 0x59, +0x3f, 0xb1, 0x6c, 0xe2, 0xef, 0x27, 0x2e, 0x4e, +0x7c, 0x6c, 0x16, 0xe0, 0xdf, 0x75, 0x85, 0xdf, +0x58, 0x76, 0xb5, 0xf7, 0xa5, 0xcc, 0xfe, 0x1f, +0x87, 0x5f, 0x77, 0xd6, 0xb2, 0xc2, 0x2a, 0xdb, +0x3d, 0xeb, 0x97, 0x4d, 0xcc, 0xa8, 0xe9, 0x1b, +0xf8, 0xb8, 0xbe, 0xae, 0xe9, 0x24, 0x2b, 0x7c, +0x60, 0xab, 0xf3, 0x46, 0xcf, 0x16, 0xcf, 0x6b, +0xeb, 0xf8, 0xc1, 0xad, 0xde, 0xe8, 0x8b, 0x33, +0x0e, 0x60, 0xc1, 0xaa, 0x9b, 0x06, 0xab, 0x95, +0x1d, 0xb1, 0x9b, 0x3c, 0xf9, 0x47, 0x48, 0xb3, +0x52, 0x2a, 0xdd, 0x24, 0xe4, 0x5b, 0xef, 0x20, +0x98, 0x9c, 0x77, 0xac, 0xe6, 0x74, 0xce, 0x9b, +0x75, 0x1a, 0xe7, 0xe3, 0xc5, 0x5e, 0x61, 0xbd, +0xc9, 0x79, 0xab, 0x5d, 0xfc, 0x7e, 0xed, 0xef, +0xa9, 0x08, 0x16, 0xaf, 0xad, 0x31, 0x13, 0xd6, +0x24, 0x4a, 0xd5, 0x2f, 0xc8, 0x45, 0xfd, 0xc2, +0x1a, 0xae, 0x94, 0x62, 0xc1, 0xba, 0x27, 0x00, +0xb6, 0x93, 0xf3, 0x44, 0xdb, 0x1f, 0x64, 0x31, +0x6b, 0x24, 0x61, 0x0e, 0x97, 0x4f, 0x23, 0xcd, +0xd2, 0xcf, 0x85, 0xd9, 0x9c, 0x48, 0x19, 0xe7, +0xcd, 0xba, 0x32, 0x58, 0x9a, 0x28, 0x4e, 0x37, +0x76, 0x16, 0x55, 0x09, 0x51, 0xaa, 0x15, 0xcc, +0xa7, 0xa9, 0x55, 0xb8, 0x66, 0x3d, 0xd4, 0x11, +0xe4, 0xee, 0x82, 0x7b, 0x70, 0xcd, 0x62, 0xc1, +0xd8, 0x52, 0xd9, 0x81, 0x5a, 0xe1, 0x16, 0x28, +0x52, 0x84, 0xe5, 0x9c, 0x07, 0xbe, 0x40, 0xd9, +0x82, 0xe2, 0x8c, 0x6d, 0x1a, 0xdb, 0x29, 0x44, +0x62, 0xa7, 0xde, 0xd8, 0x01, 0x32, 0x30, 0x0a, +0x56, 0x9d, 0xc0, 0x00, 0x88, 0xcb, 0x80, 0x62, +0x61, 0x3b, 0x5b, 0x0f, 0xd4, 0xa8, 0x93, 0x38, +0x05, 0x55, 0xc7, 0x76, 0x98, 0x03, 0xf9, 0x94, +0x3c, 0x80, 0xef, 0x80, 0x85, 0x16, 0xe3, 0x71, +0xca, 0xe2, 0xbb, 0xf3, 0xe2, 0xc8, 0xf9, 0x06, +0x51, 0xea, 0x15, 0x82, 0x7a, 0x21, 0xc7, 0x10, +0x05, 0x6f, 0x2f, 0x1b, 0x78, 0xc7, 0xe7, 0x18, +0x05, 0xa3, 0x1d, 0x38, 0x21, 0x48, 0xd9, 0xfe, +0x00, 0xbd, 0x10, 0xec, 0xd1, 0x0a, 0x66, 0xdd, +0xe2, 0x06, 0xa1, 0x19, 0x31, 0xbd, 0x44, 0x44, +0xbe, 0xc4, 0x7b, 0xb4, 0x02, 0xcd, 0xdd, 0x93, +0x63, 0x9c, 0x17, 0x91, 0x75, 0xc0, 0xf6, 0x29, +0x17, 0x2b, 0xe4, 0xc6, 0x2c, 0xc6, 0x21, 0x97, +0xcc, 0x76, 0xd8, 0x17, 0xd6, 0xce, 0xbc, 0xa7, +0x82, 0xef, 0xe1, 0x81, 0xc5, 0x6c, 0x6c, 0x70, +0x0b, 0x64, 0x85, 0x88, 0x71, 0xcf, 0x28, 0x4e, +0xca, 0x22, 0x2a, 0xc5, 0x05, 0xaf, 0x90, 0x2b, +0x98, 0xec, 0x89, 0x6a, 0xe7, 0x6c, 0x10, 0xef, +0xa2, 0x80, 0xee, 0x9b, 0x5e, 0x00, 0xf3, 0x9e, +0x8c, 0xf3, 0x0c, 0xef, 0xf9, 0x4b, 0x8c, 0x42, +0xa1, 0xc9, 0x3a, 0x6e, 0x89, 0xb0, 0x3a, 0x51, +0x1a, 0xff, 0x82, 0xb7, 0xe8, 0x45, 0x61, 0xf5, +0xba, 0x1d, 0xac, 0x60, 0xbe, 0x1f, 0x8e, 0xf2, +0x6a, 0xba, 0x23, 0x7e, 0x93, 0x37, 0xff, 0x45, +0xb2, 0x9a, 0xde, 0xc7, 0x0a, 0xb9, 0xba, 0x18, +0xe3, 0x3c, 0x6e, 0x0b, 0xb8, 0x3f, 0xbc, 0xe8, +0x60, 0x37, 0xc0, 0x42, 0xaf, 0x39, 0x9e, 0xc5, +0x50, 0x41, 0x6f, 0x97, 0x8b, 0xa3, 0xc2, 0x56, +0xae, 0x82, 0x36, 0xd9, 0xed, 0x53, 0xc1, 0x77, +0x28, 0xa3, 0xde, 0x78, 0x9e, 0x97, 0x5b, 0x0f, +0xf7, 0x27, 0xb4, 0x82, 0x69, 0x4b, 0x8b, 0xe3, +0x8e, 0x05, 0xdc, 0x2c, 0x34, 0x87, 0xa2, 0xac, +0xb0, 0x56, 0x2f, 0x98, 0x73, 0xc4, 0xdd, 0x0d, +0x2b, 0xe8, 0xf5, 0x72, 0x5e, 0x94, 0xdb, 0x8a, +0x05, 0xc3, 0x50, 0x73, 0xfd, 0x64, 0xe3, 0xc9, +0xf6, 0x00, 0xa9, 0x25, 0x57, 0xb0, 0xc6, 0x33, +0x02, 0x31, 0x44, 0x7f, 0xa3, 0x58, 0x44, 0x04, +0x85, 0x6a, 0x05, 0x30, 0xfb, 0x49, 0x20, 0x86, +0x7b, 0x80, 0xc3, 0xc5, 0x35, 0xe4, 0x0a, 0x8a, +0xd9, 0x4f, 0x51, 0x78, 0x00, 0x72, 0xba, 0x46, +0x2f, 0x58, 0xe3, 0x19, 0x21, 0x40, 0x0d, 0xce, +0x1b, 0x05, 0xf3, 0x9e, 0x9c, 0x52, 0x11, 0x77, +0x78, 0x61, 0x92, 0x7d, 0x9a, 0xfd, 0x54, 0x80, +0xfd, 0xa5, 0x85, 0x39, 0x4a, 0x7e, 0x8a, 0xac, +0x80, 0x52, 0xcd, 0x50, 0xcd, 0x7b, 0xc6, 0xe7, +0xf8, 0xb9, 0xe9, 0xd0, 0x40, 0xa5, 0xac, 0xb0, +0x80, 0xbb, 0x81, 0x15, 0x72, 0xef, 0x1e, 0xc3, +0xa5, 0x51, 0xa6, 0xb8, 0x62, 0xbc, 0x07, 0x8e, +0xd0, 0x79, 0x8a, 0x28, 0xf1, 0x82, 0xcd, 0x3e, +0x05, 0x98, 0xad, 0x14, 0x4a, 0xfc, 0xbd, 0xf0, +0x3b, 0x98, 0xbf, 0x48, 0xfb, 0xa5, 0x5e, 0xab, +0x9f, 0xc2, 0xfd, 0x3d, 0xde, 0xe0, 0x92, 0xd2, +0xa2, 0x56, 0x66, 0x9f, 0xc1, 0x25, 0x2e, 0x9b, +0x7d, 0x2a, 0x68, 0xea, 0xb6, 0xf5, 0x65, 0xe3, +0xbc, 0xc2, 0x45, 0x1b, 0x43, 0x0c, 0xef, 0x65, +0x45, 0x1d, 0x8d, 0x0f, 0x5c, 0xaf, 0x15, 0x6c, +0xf6, 0xa9, 0x4a, 0x3f, 0xf0, 0xcc, 0x5a, 0x5c, +0xb4, 0x45, 0x69, 0x8c, 0xc5, 0x3c, 0xc2, 0x62, +0xae, 0x48, 0xb1, 0xd6, 0x11, 0x1b, 0x7a, 0x22, +0x94, 0x25, 0xc4, 0xb8, 0xa2, 0x4f, 0x06, 0x98, +0x57, 0x0e, 0xef, 0x42, 0x01, 0x67, 0x14, 0xac, +0xf1, 0xbc, 0x93, 0xbf, 0x47, 0x79, 0x79, 0xf0, +0x96, 0xf9, 0x85, 0x66, 0xc1, 0xbc, 0x27, 0x17, +0xad, 0x58, 0x53, 0x58, 0x4a, 0xbe, 0x50, 0x56, +0xa4, 0x36, 0xae, 0xc9, 0xdf, 0x31, 0x99, 0x59, +0x33, 0x6c, 0x9c, 0xef, 0x29, 0x0a, 0x35, 0x36, +0x6d, 0xb1, 0x9e, 0xf7, 0xbf, 0xcb, 0xf9, 0x4a, +0x5b, 0xbb, 0xab, 0x53, 0x38, 0x5f, 0x63, 0xbf, +0xe7, 0x14, 0xce, 0xdf, 0xea, 0xbd, 0xeb, 0x8d, +0x47, 0x0e, 0x0c, 0xbd, 0x77, 0xe9, 0xd6, 0x9f, +0xdc, 0x75, 0x76, 0x06, 0x2b, 0x58, 0x75, 0xe8, +0xc3, 0xec, 0x04, 0xbf, 0x52, 0x50, 0xda, 0x6b, +0x14, 0x24, 0xab, 0x4e, 0x23, 0x1f, 0x8e, 0x9d, +0x64, 0x15, 0xac, 0x4b, 0x8b, 0x38, 0x31, 0x1a, +0x9a, 0x85, 0x6b, 0xda, 0x95, 0xaa, 0xd7, 0xb6, +0x63, 0xd9, 0x67, 0x48, 0xea, 0x21, 0x1f, 0xbd, +0x60, 0xd6, 0x4c, 0x99, 0x71, 0xa3, 0x60, 0xd4, +0x5d, 0xdb, 0xce, 0x56, 0x77, 0x4d, 0x4b, 0xeb, +0x4f, 0x86, 0x15, 0xb4, 0x87, 0x76, 0x42, 0xa7, +0x32, 0x57, 0x2a, 0x68, 0x23, 0x5a, 0xa1, 0xb4, +0xd7, 0x6c, 0xa7, 0xf5, 0x73, 0x12, 0x99, 0xac, +0x7b, 0x5e, 0xfb, 0x7e, 0x66, 0x9d, 0xc4, 0xfe, +0x3e, 0xda, 0x40, 0xee, 0xfd, 0x06, 0xe0, 0x7b, +0x50, 0xda, 0x6b, 0x5a, 0x8c, 0xfe, 0x27, 0x34, +0x14, 0x52, 0xaa, 0x1a, 0x05, 0xc9, 0xea, 0x0b, +0x11, 0x58, 0x0c, 0x96, 0x7d, 0x6f, 0x6d, 0x14, +0xec, 0x93, 0xab, 0x3d, 0x06, 0x72, 0xcf, 0xb3, +0xff, 0xd1, 0x33, 0x89, 0xf2, 0x41, 0x18, 0xc8, +0xfd, 0x4b, 0x2f, 0x18, 0xbe, 0xf6, 0xbf, 0x76, +0xd5, 0xd5, 0x5d, 0xfb, 0x33, 0xb7, 0xfb, 0xdf, +0x6c, 0xf6, 0x1f, 0xb8, 0xea, 0x27, 0x26, 0x26, +0xd4, 0x49, 0x85, 0xff, 0x37, 0xeb, 0x72, 0x36, +0x2f, 0x91, 0xff, 0xf3, 0x36, 0xff, 0x49, 0xed, +0xa6, 0xda, 0xae, 0x35, 0xb7, 0xff, 0x97, 0x6c, +0xde, 0x6e, 0xd7, 0xd6, 0x26, 0xfc, 0xbf, 0x6c, +0xf3, 0x80, 0xa6, 0xae, 0xbd, 0xdf, 0x54, 0x9b, +0xff, 0x17, 0xdb, 0xc1, 0x27, 0xbc, 0x9f, 0xed, +0xfa, 0x17, 0xde, 0x1c, 0x98, 0xcd, 0xc3, 0x35, +0xd7, 0xa7, 0x36, 0xff, 0x1f, 0xa8, 0xfb, 0x97, +0x2f, 0xf6, 0xb7, 0x1c, 0x89, 0xf6, 0xff, 0x45, +0xbf, 0xfd, 0xf7, 0xb6, 0xf9, 0xf4, 0xfa, 0xf4, +0xfa, 0xf4, 0xfa, 0xf4, 0xfa, 0xf4, 0xfa, 0xf4, +0xfa, 0xff, 0xe5, 0xd2, 0xf6, 0x49, 0xa2, 0xed, +0x93, 0xea, 0x7f, 0x76, 0x5f, 0x3e, 0xbd, 0x3e, +0xbd, 0x3e, 0xbd, 0x3e, 0xbd, 0x3e, 0xbd, 0x3e, +0xbd, 0xfe, 0x33, 0xae, 0x20, 0xfb, 0x73, 0x09, +0x50, 0xf9, 0x6b, 0xe3, 0xef, 0xff, 0xf3, 0x41, +0x50, 0xa6, 0xfd, 0xeb, 0xbf, 0xaf, 0xfd, 0x9e, +0x23, 0x08, 0x69, 0xce, 0x6a, 0xbf, 0x3b, 0x35, +0xb5, 0xaf, 0xff, 0x13, 0x87, 0x7b, 0xf6, 0xdd, +0xd4, 0x60, 0x00, 0x00, diff --git a/qemu/roms/u-boot/board/esd/pci405/pci405.c b/qemu/roms/u-boot/board/esd/pci405/pci405.c new file mode 100644 index 000000000..566f6f777 --- /dev/null +++ b/qemu/roms/u-boot/board/esd/pci405/pci405.c @@ -0,0 +1,366 @@ +/* + * (C) Copyright 2001-2004 + * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <asm/processor.h> +#include <command.h> +#include <malloc.h> +#include <pci.h> +#include <asm/4xx_pci.h> +#include <asm/io.h> + +#include "pci405.h" + +DECLARE_GLOBAL_DATA_PTR; + +/* Prototypes */ +unsigned long fpga_done_state(void); +unsigned long fpga_init_state(void); + +#if 0 +#define FPGA_DEBUG +#endif + +/* predefine these here */ +#define FPGA_DONE_STATE (fpga_done_state()) +#define FPGA_INIT_STATE (fpga_init_state()) + +/* fpga configuration data - generated by bin2cc */ +const unsigned char fpgadata[] = +{ +#include "fpgadata.c" +}; + +/* + * include common fpga code (for esd boards) + */ +#include "../common/fpga.c" + +#define FPGA_DONE_STATE_V11 (in_be32((void*)GPIO0_IR) & CONFIG_SYS_FPGA_DONE) +#define FPGA_DONE_STATE_V12 (in_be32((void*)GPIO0_IR) & CONFIG_SYS_FPGA_DONE_V12) + +#define FPGA_INIT_STATE_V11 (in_be32((void*)GPIO0_IR) & CONFIG_SYS_FPGA_INIT) +#define FPGA_INIT_STATE_V12 (in_be32((void*)GPIO0_IR) & CONFIG_SYS_FPGA_INIT_V12) + + +int board_revision(void) +{ + unsigned long CPC0_CR0Reg; + unsigned long value; + + /* + * Get version of PCI405 board from GPIO's + */ + + /* + * Setup GPIO pins (CS2/GPIO11 and CS3/GPIO12 as GPIO) + */ + CPC0_CR0Reg = mfdcr(CPC0_CR0); + mtdcr(CPC0_CR0, CPC0_CR0Reg | 0x03000000); + out_be32((void*)GPIO0_ODR, in_be32((void*)GPIO0_ODR) & ~0x00100200); + out_be32((void*)GPIO0_TCR, in_be32((void*)GPIO0_TCR) & ~0x00100200); + udelay(1000); /* wait some time before reading input */ + value = in_be32((void*)GPIO0_IR) & 0x00100200; /* get config bits */ + + /* + * Restore GPIO settings + */ + mtdcr(CPC0_CR0, CPC0_CR0Reg); + + switch (value) { + case 0x00100200: + /* CS2==1 && IRQ5==1 -> version 1.0 and 1.1 */ + return 1; + case 0x00000200: + /* CS2==0 && IRQ5==1 -> version 1.2 */ + return 2; + case 0x00000000: + /* CS2==0 && IRQ5==0 -> version 1.3 */ + return 3; +#if 0 /* not yet manufactured ! */ + case 0x00100000: + /* CS2==1 && IRQ5==0 -> version 1.4 */ + return 4; +#endif + default: + /* should not be reached! */ + return 0; + } +} + + +unsigned long fpga_done_state(void) +{ + if (gd->board_type < 2) { + return FPGA_DONE_STATE_V11; + } else { + return FPGA_DONE_STATE_V12; + } +} + + +unsigned long fpga_init_state(void) +{ + if (gd->board_type < 2) { + return FPGA_INIT_STATE_V11; + } else { + return FPGA_INIT_STATE_V12; + } +} + + +int board_early_init_f (void) +{ + unsigned long CPC0_CR0Reg; + + /* + * First pull fpga-prg pin low, to disable fpga logic (on version 1.2 board) + */ + out_be32((void*)GPIO0_ODR, 0x00000000); /* no open drain pins */ + out_be32((void*)GPIO0_TCR, CONFIG_SYS_FPGA_PRG); /* setup for output */ + out_be32((void*)GPIO0_OR, CONFIG_SYS_FPGA_PRG); /* set output pins to high */ + out_be32((void*)GPIO0_OR, 0); /* pull prg low */ + + /* + * IRQ 0-15 405GP internally generated; active high; level sensitive + * IRQ 16 405GP internally generated; active low; level sensitive + * IRQ 17-24 RESERVED + * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive + * IRQ 26 (EXT IRQ 1) CAN1; active low; level sensitive + * IRQ 27 (EXT IRQ 2) CAN2; active low; level sensitive + * IRQ 28 (EXT IRQ 3) CAN3; active low; level sensitive + * IRQ 29 (EXT IRQ 4) unused; active low; level sensitive + * IRQ 30 (EXT IRQ 5) FPGA Timestamp; active low; level sensitive + * IRQ 31 (EXT IRQ 6) PCI Reset; active low; level sensitive + */ + mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */ + mtdcr(UIC0ER, 0x00000000); /* disable all ints */ + mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/ + mtdcr(UIC0PR, 0xFFFFFF80); /* set int polarities */ + mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */ + mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority*/ + mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */ + + /* + * Setup GPIO pins (IRQ4/GPIO21 as GPIO) + */ + CPC0_CR0Reg = mfdcr(CPC0_CR0); + mtdcr(CPC0_CR0, CPC0_CR0Reg | 0x00008000); + + /* + * Setup GPIO pins (CS6+CS7 as GPIO) + */ + mtdcr(CPC0_CR0, CPC0_CR0Reg | 0x00300000); + + /* + * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 25 us + */ + mtebc (EBC0_CFG, 0xa8400000); /* ebc always driven */ + + return 0; +} + +int misc_init_r (void) +{ + unsigned char *dst; + ulong len = sizeof(fpgadata); + int status; + int index; + int i; + unsigned int *ptr; + unsigned int *magic; + + /* + * On PCI-405 the environment is saved in eeprom! + * FPGA can be gzip compressed (malloc) and booted this late. + */ + + dst = malloc(CONFIG_SYS_FPGA_MAX_SIZE); + if (gunzip (dst, CONFIG_SYS_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) { + printf ("GUNZIP ERROR - must RESET board to recover\n"); + do_reset (NULL, 0, 0, NULL); + } + + status = fpga_boot(dst, len); + if (status != 0) { + printf("\nFPGA: Booting failed "); + switch (status) { + case ERROR_FPGA_PRG_INIT_LOW: + printf("(Timeout: INIT not low after asserting PROGRAM*)\n "); + break; + case ERROR_FPGA_PRG_INIT_HIGH: + printf("(Timeout: INIT not high after deasserting PROGRAM*)\n "); + break; + case ERROR_FPGA_PRG_DONE: + printf("(Timeout: DONE not high after programming FPGA)\n "); + break; + } + + /* display infos on fpgaimage */ + index = 15; + for (i=0; i<4; i++) { + len = dst[index]; + printf("FPGA: %s\n", &(dst[index+1])); + index += len+3; + } + putc ('\n'); + /* delayed reboot */ + for (i=20; i>0; i--) { + printf("Rebooting in %2d seconds \r",i); + for (index=0;index<1000;index++) + udelay(1000); + } + putc ('\n'); + do_reset(NULL, 0, 0, NULL); + } + + puts("FPGA: "); + + /* display infos on fpgaimage */ + index = 15; + for (i=0; i<4; i++) { + len = dst[index]; + printf("%s ", &(dst[index+1])); + index += len+3; + } + putc ('\n'); + + /* + * Reset FPGA via FPGA_DATA pin + */ + SET_FPGA(FPGA_PRG | FPGA_CLK); + udelay(1000); /* wait 1ms */ + SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA); + udelay(1000); /* wait 1ms */ + + /* + * Check if magic for pci reconfig is written + */ + magic = (unsigned int *)0x00000004; + if (*magic == PCI_RECONFIG_MAGIC) { + /* + * Rewrite pci config regs (only after soft-reset with magic set) + */ + ptr = (unsigned int *)PCI_REGS_ADDR; + if (crc32(0, (uchar *)PCI_REGS_ADDR+4, PCI_REGS_LEN-4) == *ptr) { + puts("Restoring PCI Configurations Regs!\n"); + ptr = (unsigned int *)PCI_REGS_ADDR + 1; + for (i=0; i<0x40; i+=4) { + pci_write_config_dword(PCIDEVID_405GP, i, *ptr++); + } + } + mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */ + + *magic = 0; /* clear pci reconfig magic again */ + } + + /* + * Decrease PLB latency timeout and reduce priority of the PCI bridge master + */ +#define PCI0_BRDGOPT1 0x4a + pci_write_config_word(PCIDEVID_405GP, PCI0_BRDGOPT1, 0x3f20); + + /* + * Enable fairness and high bus utilization + */ + mtdcr(PLB0_ACR, 0x98000000); + + free(dst); + return (0); +} + + +/* + * Check Board Identity: + */ +int checkboard (void) +{ + char str[64]; + int i = getenv_f("serial#", str, sizeof(str)); + + puts ("Board: "); + + if (i == -1) { + puts ("### No HW ID - assuming PCI405"); + } else { + puts (str); + } + + gd->board_type = board_revision(); + printf(" (Rev 1.%ld", gd->board_type); + + if (gd->board_type >= 2) { + unsigned long CPC0_CR0Reg; + unsigned long value; + + /* + * Setup GPIO pins (Trace/GPIO1 to GPIO) + */ + CPC0_CR0Reg = mfdcr(CPC0_CR0); + mtdcr(CPC0_CR0, CPC0_CR0Reg & ~0x08000000); + out_be32((void*)GPIO0_ODR, in_be32((void*)GPIO0_ODR) & ~0x40000000); + out_be32((void*)GPIO0_TCR, in_be32((void*)GPIO0_TCR) & ~0x40000000); + udelay(1000); /* wait some time before reading input */ + value = in_be32((void*)GPIO0_IR) & 0x40000000; /* get config bits */ + if (value) { + puts(", 33 MHz PCI"); + } else { + puts(", 66 MHz PCI"); + } + } + + puts(")\n"); + + return 0; +} + +/* ------------------------------------------------------------------------- */ +#define UART1_MCR 0xef600404 +int wpeeprom(int wp) +{ + int wp_state = wp; + + if (wp == 1) { + out_8((void *)UART1_MCR, in_8((void *)UART1_MCR) & ~0x02); + } else if (wp == 0) { + out_8((void *)UART1_MCR, in_8((void *)UART1_MCR) | 0x02); + } else { + if (in_8((void *)UART1_MCR) & 0x02) { + wp_state = 0; + } else { + wp_state = 1; + } + } + return wp_state; +} + +int do_wpeeprom(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + int wp = -1; + if (argc >= 2) { + if (argv[1][0] == '1') { + wp = 1; + } else if (argv[1][0] == '0') { + wp = 0; + } + } + + wp = wpeeprom(wp); + printf("EEPROM write protection %s\n", wp ? "ENABLED" : "DISABLED"); + return 0; +} + +U_BOOT_CMD( + wpeeprom, 2, 1, do_wpeeprom, + "Check/Enable/Disable I2C EEPROM write protection", + "wpeeprom\n" + " - check I2C EEPROM write protection state\n" + "wpeeprom 1\n" + " - enable I2C EEPROM write protection\n" + "wpeeprom 0\n" + " - disable I2C EEPROM write protection" +); diff --git a/qemu/roms/u-boot/board/esd/pci405/pci405.h b/qemu/roms/u-boot/board/esd/pci405/pci405.h new file mode 100644 index 000000000..a62c9c2b0 --- /dev/null +++ b/qemu/roms/u-boot/board/esd/pci405/pci405.h @@ -0,0 +1,16 @@ +/* + * (C) Copyright 2003 + * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef _PCI405_H_ +#define _PCI405_H_ + +#define PCI_REGS_LEN 0x100 +#define PCI_REGS_ADDR ((unsigned long)0x01000000 - PCI_REGS_LEN) + +#define PCI_RECONFIG_MAGIC 0x07081967 + +#endif /* _PCI405_H_ */ diff --git a/qemu/roms/u-boot/board/esd/pci405/writeibm.S b/qemu/roms/u-boot/board/esd/pci405/writeibm.S new file mode 100644 index 000000000..03eaf97b7 --- /dev/null +++ b/qemu/roms/u-boot/board/esd/pci405/writeibm.S @@ -0,0 +1,205 @@ +/* + * SPDX-License-Identifier: GPL-2.0 IBM-pibs + */ +/*----------------------------------------------------------------------------- */ +/* Function: ext_bus_cntlr_init */ +/* Description: Initializes the External Bus Controller for the external */ +/* peripherals. IMPORTANT: For pass1 this code must run from */ +/* cache since you can not reliably change a peripheral banks */ +/* timing register (pbxap) while running code from that bank. */ +/* For ex., since we are running from ROM on bank 0, we can NOT */ +/* execute the code that modifies bank 0 timings from ROM, so */ +/* we run it from cache. */ +/* Bank 0 - Flash and SRAM */ +/* Bank 1 - NVRAM/RTC */ +/* Bank 2 - Keyboard/Mouse controller */ +/* Bank 3 - IR controller */ +/* Bank 4 - not used */ +/* Bank 5 - not used */ +/* Bank 6 - not used */ +/* Bank 7 - FPGA registers */ +/*----------------------------------------------------------------------------- */ +#include <asm/ppc4xx.h> + +#include <ppc_asm.tmpl> +#include <ppc_defs.h> + +#include <asm/cache.h> +#include <asm/mmu.h> + + + .globl write_without_sync +write_without_sync: + /* + * Write one values to host via pci busmastering + * ptr = 0xc0000000 -> 0x01000000 (PCI) + * *ptr = 0x01234567; + */ + addi r31,0,0 + lis r31,0xc000 + +start1: + lis r0,0x0123 + ori r0,r0,0x4567 + stw r0,0(r31) + + /* + * Read one value back + * ptr = (volatile unsigned long *)addr; + * val = *ptr; + */ + + lwz r0,0(r31) + + /* + * One pci config write + * ibmPciConfigWrite(0x2e, 2, 0x1234); + */ + /* subsystem id */ + + li r4,0x002C + oris r4,r4,0x8000 + lis r3,0xEEC0 + stwbrx r4,0,r3 + + li r5,0x1234 + ori r3,r3,0x4 + stwbrx r5,0,r3 + + b start1 + + blr /* never reached !!!! */ + + .globl write_with_sync +write_with_sync: + /* + * Write one values to host via pci busmastering + * ptr = 0xc0000000 -> 0x01000000 (PCI) + * *ptr = 0x01234567; + */ + addi r31,0,0 + lis r31,0xc000 + +start2: + lis r0,0x0123 + ori r0,r0,0x4567 + stw r0,0(r31) + + /* + * Read one value back + * ptr = (volatile unsigned long *)addr; + * val = *ptr; + */ + + lwz r0,0(r31) + + /* + * One pci config write + * ibmPciConfigWrite(0x2e, 2, 0x1234); + */ + /* subsystem id */ + + li r4,0x002C + oris r4,r4,0x8000 + lis r3,0xEEC0 + stwbrx r4,0,r3 + sync + + li r5,0x1234 + ori r3,r3,0x4 + stwbrx r5,0,r3 + sync + + b start2 + + blr /* never reached !!!! */ + + .globl write_with_less_sync +write_with_less_sync: + /* + * Write one values to host via pci busmastering + * ptr = 0xc0000000 -> 0x01000000 (PCI) + * *ptr = 0x01234567; + */ + addi r31,0,0 + lis r31,0xc000 + +start2b: + lis r0,0x0123 + ori r0,r0,0x4567 + stw r0,0(r31) + + /* + * Read one value back + * ptr = (volatile unsigned long *)addr; + * val = *ptr; + */ + + lwz r0,0(r31) + + /* + * One pci config write + * ibmPciConfigWrite(0x2e, 2, 0x1234); + */ + /* subsystem id */ + + li r4,0x002C + oris r4,r4,0x8000 + lis r3,0xEEC0 + stwbrx r4,0,r3 + sync + + li r5,0x1234 + ori r3,r3,0x4 + stwbrx r5,0,r3 +/* sync */ + + b start2b + + blr /* never reached !!!! */ + + .globl write_with_more_sync +write_with_more_sync: + /* + * Write one values to host via pci busmastering + * ptr = 0xc0000000 -> 0x01000000 (PCI) + * *ptr = 0x01234567; + */ + addi r31,0,0 + lis r31,0xc000 + +start3: + lis r0,0x0123 + ori r0,r0,0x4567 + stw r0,0(r31) + sync + + /* + * Read one value back + * ptr = (volatile unsigned long *)addr; + * val = *ptr; + */ + + lwz r0,0(r31) + sync + + /* + * One pci config write + * ibmPciConfigWrite(0x2e, 2, 0x1234); + */ + /* subsystem id (PCIC0_SBSYSVID)*/ + + li r4,0x002C + oris r4,r4,0x8000 + lis r3,0xEEC0 + stwbrx r4,0,r3 + sync + + li r5,0x1234 + ori r3,r3,0x4 + stwbrx r5,0,r3 + sync + + b start3 + + blr /* never reached !!!! */ |