diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/README.md b/lib/bosch/BHy1_driver_and_MCU_solution/README.md new file mode 100644 index 0000000000000000000000000000000000000000..3c6144ebc017aad312201af4972deedd44348fce --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/README.md @@ -0,0 +1,4 @@ +# BHy1 driver and MCU solution + +For additional inforomation please refer to Bosch Sensortec document “MCU Driver Porting Guide†for BHA250 and/or BHI160 within the section “Application notes†+https://www.bosch-sensortec.com/bst/support_tools/downloads/overview_downloads diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/doc/BHy MCU driver porting guide_v1.8.pdf b/lib/bosch/BHy1_driver_and_MCU_solution/doc/BHy MCU driver porting guide_v1.8.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2e18ac6227bf408b018f51325ca9b9ee5450f2e7 Binary files /dev/null and b/lib/bosch/BHy1_driver_and_MCU_solution/doc/BHy MCU driver porting guide_v1.8.pdf differ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy.h b/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy.h new file mode 100644 index 0000000000000000000000000000000000000000..413890100f2d90ac7c110bf9fd09ea499cb19146 --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy.h @@ -0,0 +1,3049 @@ +/** \mainpage +* +**************************************************************************** +* Copyright (C) 2015 - 2016 Bosch Sensortec GmbH +* +* File : bhy.h +* +* Date : 2016/01/22 +* +* Revision : 1.0.4 $ +* +* Usage: Sensor Driver file for BHY sensor +* +**************************************************************************** +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* +* Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* +* Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* +* Neither the name of the copyright holder nor the names of the +* contributors may be used to endorse or promote products derived from +* this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER +* OR CONTRIBUTORS BE LIABLE FOR ANY +* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +* OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, +* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE +* +* The information provided is believed to be accurate and reliable. +* The copyright holder assumes no responsibility +* for the consequences of use +* of such information nor for any infringement of patents or +* other rights of third parties which may result from its use. +* No license is granted by implication or otherwise under any patent or +* patent rights of the copyright holder. +* +**************************************************************************/ +/*! \file bhy.h + \brief BHY Sensor Driver Support Header File */ + +#ifndef __BHY_H__ +#define __BHY_H__ +/****************************************************************/ +/**\name DATA TYPES INCLUDES */ +/************************************************************/ +/*! +* @brief The following definition uses for define the data types +* +* @note While porting the API please consider the following +* @note Please check the version of C standard +* @note Are you using Linux platform +*/ + +/*! +* @brief For the Linux platform support +* Please use the types.h for your data types definitions +*/ +#ifdef __KERNEL__ + +#include <linux/types.h> +/* singed integer type*/ +typedef int8_t s8;/**< used for signed 8bit */ +typedef int16_t s16;/**< used for signed 16bit */ +typedef int32_t s32;/**< used for signed 32bit */ +typedef int64_t s64;/**< used for signed 64bit */ + +typedef u_int8_t u8;/**< used for unsigned 8bit */ +typedef u_int16_t u16;/**< used for unsigned 16bit */ +typedef u_int32_t u32;/**< used for unsigned 32bit */ +typedef u_int64_t u64;/**< used for unsigned 64bit */ + + + +#else /* ! __KERNEL__ */ +/********************************************************** +* These definition uses for define the C +* standard version data types +***********************************************************/ +# if !defined(__STDC_VERSION__) + +/************************************************ + * compiler is C11 C standard +************************************************/ +#if (__STDC_VERSION__ == 201112L) + +/************************************************/ +#include <stdint.h> +/************************************************/ + +/*unsigned integer types*/ +typedef uint8_t u8;/**< used for unsigned 8bit */ +typedef uint16_t u16;/**< used for unsigned 16bit */ +typedef uint32_t u32;/**< used for unsigned 32bit */ +typedef uint64_t u64;/**< used for unsigned 64bit */ + +/*signed integer types*/ +typedef int8_t s8;/**< used for signed 8bit */ +typedef int16_t s16;/**< used for signed 16bit */ +typedef int32_t s32;/**< used for signed 32bit */ +typedef int64_t s64;/**< used for signed 64bit */ +/************************************************ + * compiler is C99 C standard +************************************************/ + +#elif (__STDC_VERSION__ == 199901L) + +/* stdint.h is a C99 supported c library. +which is used to fixed the integer size*/ +/************************************************/ +#include <stdint.h> +/************************************************/ + +/*unsigned integer types*/ +typedef uint8_t u8;/**< used for unsigned 8bit */ +typedef uint16_t u16;/**< used for unsigned 16bit */ +typedef uint32_t u32;/**< used for unsigned 32bit */ +typedef uint64_t u64;/**< used for unsigned 64bit */ + +/*signed integer types*/ +typedef int8_t s8;/**< used for signed 8bit */ +typedef int16_t s16;/**< used for signed 16bit */ +typedef int32_t s32;/**< used for signed 32bit */ +typedef int64_t s64;/**< used for signed 64bit */ +/************************************************ + * compiler is C89 or other C standard +************************************************/ + +#else /* !defined(__STDC_VERSION__) */ +/*! +* @brief By default it is defined as 32 bit machine configuration +* define your data types based on your +* machine/compiler/controller configuration +*/ +#define MACHINE_32_BIT + +/*! @brief + * If your machine support 16 bit + * define the MACHINE_16_BIT + */ +#ifdef MACHINE_16_BIT +#include <limits.h> +/*signed integer types*/ +typedef signed char s8;/**< used for signed 8bit */ +typedef signed short int s16;/**< used for signed 16bit */ +typedef signed long int s32;/**< used for signed 32bit */ + +#if defined(LONG_MAX) && LONG_MAX == 0x7fffffffffffffffL +typedef long int s64;/**< used for signed 64bit */ +typedef unsigned long int u64;/**< used for unsigned 64bit */ +#elif defined(LLONG_MAX) && (LLONG_MAX == 0x7fffffffffffffffLL) +typedef long long int s64;/**< used for signed 64bit */ +typedef unsigned long long int u64;/**< used for unsigned 64bit */ +#else +#warning Either the correct data type for signed 64 bit integer \ +could not be found, or 64 bit integers are not supported in your environment. +#warning If 64 bit integers are supported on your platform, \ +please set s64 manually. +#endif + +/*unsigned integer types*/ +typedef unsigned char u8;/**< used for unsigned 8bit */ +typedef unsigned short int u16;/**< used for unsigned 16bit */ +typedef unsigned long int u32;/**< used for unsigned 32bit */ + +/* If your machine support 32 bit +define the MACHINE_32_BIT*/ +#elif defined MACHINE_32_BIT +/*signed integer types*/ +typedef signed char s8;/**< used for signed 8bit */ +typedef signed short int s16;/**< used for signed 16bit */ +typedef signed int s32;/**< used for signed 32bit */ + +/*unsigned integer types*/ +typedef unsigned char u8;/**< used for unsigned 8bit */ +typedef unsigned short int u16;/**< used for unsigned 16bit */ +typedef unsigned int u32;/**< used for unsigned 32bit */ + +/* If your machine support 64 bit +define the MACHINE_64_BIT*/ +#elif defined MACHINE_64_BIT +/*signed integer types*/ +typedef signed char s8;/**< used for signed 8bit */ +typedef signed short int s16;/**< used for signed 16bit */ +typedef signed int s32;/**< used for signed 32bit */ +typedef signed long int s64;/**< used for signed 64bit */ + +/*unsigned integer types*/ +typedef unsigned char u8;/**< used for unsigned 8bit */ +typedef unsigned short int u16;/**< used for unsigned 16bit */ +typedef unsigned int u32;/**< used for unsigned 32bit */ +typedef unsigned long int u64;/**< used for unsigned 64bit */ + +#else +#warning The data types defined above which not supported \ +define the data types manually +#endif +#endif + +/*** This else will execute for the compilers + * which are not supported the C standards + * Like C89/C99/C11***/ +#else +/*! +* @brief By default it is defined as 32 bit machine configuration +* define your data types based on your +* machine/compiler/controller configuration +*/ +#define MACHINE_32_BIT + +/* If your machine support 16 bit +define the MACHINE_16_BIT*/ +#ifdef MACHINE_16_BIT +#include <limits.h> +/*signed integer types*/ +typedef signed char s8;/**< used for signed 8bit */ +typedef signed short int s16;/**< used for signed 16bit */ +typedef signed long int s32;/**< used for signed 32bit */ + +#if defined(LONG_MAX) && LONG_MAX == 0x7fffffffffffffffL +typedef long int s64;/**< used for signed 64bit */ +typedef unsigned long int u64;/**< used for unsigned 64bit */ +#elif defined(LLONG_MAX) && (LLONG_MAX == 0x7fffffffffffffffLL) +typedef long long int s64;/**< used for signed 64bit */ +typedef unsigned long long int u64;/**< used for unsigned 64bit */ +#else +#warning Either the correct data type for signed 64 bit integer \ +could not be found, or 64 bit integers are not supported in your environment. +#warning If 64 bit integers are supported on your platform, \ +please set s64 manually. +#endif + +/*unsigned integer types*/ +typedef unsigned char u8;/**< used for unsigned 8bit */ +typedef unsigned short int u16;/**< used for unsigned 16bit */ +typedef unsigned long int u32;/**< used for unsigned 32bit */ + +/*! @brief If your machine support 32 bit +define the MACHINE_32_BIT*/ +#elif defined MACHINE_32_BIT +/*signed integer types*/ +typedef signed char s8;/**< used for signed 8bit */ +typedef signed short int s16;/**< used for signed 16bit */ +typedef signed int s32;/**< used for signed 32bit */ + +/*unsigned integer types*/ +typedef unsigned char u8;/**< used for unsigned 8bit */ +typedef unsigned short int u16;/**< used for unsigned 16bit */ +typedef unsigned int u32;/**< used for unsigned 32bit */ + +/* If your machine support 64 bit +define the MACHINE_64_BIT*/ +#elif defined MACHINE_64_BIT +/*signed integer types*/ +typedef signed char s8;/**< used for signed 8bit */ +typedef signed short int s16;/**< used for signed 16bit */ +typedef signed int s32;/**< used for signed 32bit */ +typedef signed long int s64;/**< used for signed 64bit */ + +/*unsigned integer types*/ +typedef unsigned char u8;/**< used for unsigned 8bit */ +typedef unsigned short int u16;/**< used for unsigned 16bit */ +typedef unsigned int u32;/**< used for unsigned 32bit */ +typedef unsigned long int u64;/**< used for unsigned 64bit */ + +#else +#warning The data types defined above which not supported \ +define the data types manually +#endif +#endif +#endif +/***************************************************************/ +/**\name BUS READ AND WRITE FUNCTION POINTERS */ +/***************************************************************/ +/*! + @brief Define the calling convention of YOUR bus communication routine. + @note This includes types of parameters. This example shows the + configuration for an SPI bus link. + + If your communication function looks like this: + + write_my_bus_xy(u8 device_addr, u8 register_addr, + u8 * data, u8 length); + + The BHY_WR_FUNC_PTR would equal: + + BHY_WR_FUNC_PTR s8 (* bus_write)(u8, + u8, u8 *, u8) + + Parameters can be mixed as needed refer to the + @ref BHY_BUS_WRITE_FUNC macro. + + +*/ +#define BHY_WR_FUNC_PTR s8 (*bus_write)(u8, u8,\ +u8 *, u16) +/**< link macro between API function calls and bus write function + @note The bus write function can change since this is a + system dependant issue. + + If the bus_write parameter calling order is like: reg_addr, + reg_data, wr_len it would be as it is here. + + If the parameters are differently ordered or your communication + function like I2C need to know the device address, + you can change this macro accordingly. + + + BHY_BUS_WRITE_FUNC(device_addr, reg_addr, reg_data, wr_len)\ + bus_write(device_addr, reg_addr, reg_data, wr_len) + + This macro lets all API functions call YOUR communication routine in a + way that equals your definition in the + @ref BHY_WR_FUNC_PTR definition. + +*/ +#define BHY_BUS_WRITE_FUNC(device_addr, reg_addr, reg_data, wr_len)\ +bus_write(device_addr, reg_addr, reg_data, wr_len) + +/**< Define the calling convention of YOUR bus communication routine. + @note This includes types of parameters. This example shows the + configuration for an SPI bus link. + + If your communication function looks like this: + + read_my_bus_xy(u8 device_addr, u8 register_addr, + u8 * data, u8 length); + + The BHY_RD_FUNC_PTR would equal: + + BHY_RD_FUNC_PTR s8 (* bus_read)(u8, + u8, u8 *, u8) + + Parameters can be mixed as needed refer to the + refer BHY_BUS_READ_FUNC macro. + +*/ +#define BHY_SPI_READ_MASK 0x80 /* for spi read transactions on SPI the + MSB has to be set */ +#define BHY_RD_FUNC_PTR s8 (*bus_read)(u8, u8, u8 *, u16) + +#define BHY_BRD_FUNC_PTR s8 (*burst_read)(u8, u8, u8 *, u32) + +/**< link macro between API function calls and bus read function + @note The bus write function can change since this is a + system dependant issue. + + If the bus_read parameter calling order is like: reg_addr, + reg_data, wr_len it would be as it is here. + + If the parameters are differently ordered or your communication + function like I2C need to know the device address, + you can change this macro accordingly. + + + BHY_BUS_READ_FUNC(device_addr, reg_addr, reg_data, wr_len)\ + bus_read(device_addr, reg_addr, reg_data, wr_len) + + This macro lets all API functions call YOUR communication routine in a + way that equals your definition in the + refer BHY_WR_FUNC_PTR definition. + + @note: this macro also includes the "MSB='1' + for reading BHY addresses. + +*/ +#define BHY_BUS_READ_FUNC(device_addr, reg_addr, reg_data, r_len)\ + bus_read(device_addr, reg_addr, reg_data, r_len) + +#define BHY_BURST_READ_FUNC(device_addr, register_addr, register_data, rd_len)\ + burst_read(device_addr, register_addr, register_data, rd_len) + + +#define BHY_MDELAY_DATA_TYPE u32 +/***************************************************************/ +/**\name I2C ADDRESS DEFINITIONS */ +/***************************************************************/ +#define BHY_I2C_ADDR1 (0x28) +#define BHY_I2C_ADDR2 (0x29) +/***************************************************************/ +/**\name CONSTANTS */ +/***************************************************************/ +#define BHY_INIT_VALUE (0) +#define BHY_GEN_READ_WRITE_LENGTH (1) +#define BHY_BYTES_REMAINING_LENGTH (2) +#define BHY_CRC_HOST_LENGTH (4) +#define BHY_PARAMETER_ACK_LENGTH (250) +#define BHY_READ_BUFFER_LENGTH (16) +#define BHY_PARAMETER_ACK_DELAY (50) +#define BHY_SIGNATURE_MEM_LEN (17) +/***************************************************************/ +/**\name BIT SHIFTING DEFINITION */ +/***************************************************************/ +#define BHY_SHIFT_BIT_POSITION_BY_01_BIT (1) +#define BHY_SHIFT_BIT_POSITION_BY_02_BITS (2) +#define BHY_SHIFT_BIT_POSITION_BY_03_BITS (3) +#define BHY_SHIFT_BIT_POSITION_BY_04_BITS (4) +#define BHY_SHIFT_BIT_POSITION_BY_05_BITS (5) +#define BHY_SHIFT_BIT_POSITION_BY_06_BITS (6) +#define BHY_SHIFT_BIT_POSITION_BY_07_BITS (7) +#define BHY_SHIFT_BIT_POSITION_BY_08_BITS (8) +#define BHY_SHIFT_BIT_POSITION_BY_16_BITS (16) +#define BHY_SHIFT_BIT_POSITION_BY_24_BITS (24) +/****************************************************/ +/**\name ARRAY SIZE DEFINITIONS */ +/***************************************************/ +#define BHY_BYTES_REMAINING_SIZE (2) +#define BHY_BYTES_REMAINING_LSB (0) +#define BHY_BYTES_REMAINING_MSB (1) + +#define BHY_CRC_HOST_SIZE (4) +#define BHY_CRC_HOST_LSB (0) +#define BHY_CRC_HOST_XLSB (1) +#define BHY_CRC_HOST_XXLSB (2) +#define BHY_CRC_HOST_MSB (3) +#define BHY_CRC_HOST_FILE_LSB (4) +#define BHY_CRC_HOST_FILE_XLSB (5) +#define BHY_CRC_HOST_FILE_XXLSB (6) +#define BHY_CRC_HOST_FILE_MSB (7) + +#define BHY_INDEX_LEN (19) + +#define BHY_WRITE_BUFFER_SIZE (8) +#define BHY_WRITE_BUFFER_1_REG (0) +#define BHY_WRITE_BUFFER_2_REG (1) +#define BHY_WRITE_BUFFER_3_REG (2) +#define BHY_WRITE_BUFFER_4_REG (3) +#define BHY_WRITE_BUFFER_5_REG (4) +#define BHY_WRITE_BUFFER_6_REG (5) +#define BHY_WRITE_BUFFER_7_REG (6) +#define BHY_WRITE_BUFFER_8_REG (7) + +#define BHY_READ_BUFFER_SIZE (16) +#define BHY_READ_BUFFER_1_REG (0) +#define BHY_READ_BUFFER_2_REG (1) +#define BHY_READ_BUFFER_3_REG (2) +#define BHY_READ_BUFFER_4_REG (3) +#define BHY_READ_BUFFER_5_REG (4) +#define BHY_READ_BUFFER_6_REG (5) +#define BHY_READ_BUFFER_7_REG (6) +#define BHY_READ_BUFFER_8_REG (7) +#define BHY_READ_BUFFER_9_REG (8) +#define BHY_READ_BUFFER_10_REG (9) +#define BHY_READ_BUFFER_11_REG (10) +#define BHY_READ_BUFFER_12_REG (11) +#define BHY_READ_BUFFER_13_REG (12) +#define BHY_READ_BUFFER_14_REG (13) +#define BHY_READ_BUFFER_15_REG (14) +#define BHY_READ_BUFFER_16_REG (15) + +#define BHY_FIFO_SENSOR_DATA_SIZE (100) +/****************************************************/ +/**\name ERROR CODES */ +/***************************************************/ + +#define BHY_NULL_PTR ((void *) 0) +#define BHY_NULL ((u8)0) +#define BHY_COMM_RES ((s8)-1) +#define BHY_OUT_OF_RANGE ((s8)-2) +#define BHY_SUCCESS ((u8)0) +#define BHY_ERROR ((s8)-3) +#define BHY_RAMPATCH_NOT_MATCH ((s8)-4) +#define BHY_RAMPATCH_NOT_SUPPORT ((s8)-5) +#define BHY_CRC_ERROR ((s8)-6) +#define BHY_PRODUCT_ID_ERROR ((s8)-7) + +/* Constants */ +#define BHY_DELAY_SETTLING_TIME (5) +#define BHY_FIFO_BUFFER_SIZE (50) +/*This refers BHY return type as s8 */ +#define BHY_RETURN_FUNCTION_TYPE s8 +/****************************************************/ +/**\name REGISTER DEFINITIONS */ +/***************************************************/ +/****************************************************/ +/**\name I2C REGISTER MAP DEFINITIONS */ +/***************************************************/ +/* i2c buffer read for sensor fifo data*/ +#define BHY_I2C_REG_BUFFER_ZERO_ADDR (0x00) +#define BHY_I2C_REG_BUFFER_END_ADDR (0x31) +#define BHY_I2C_REG_BUFFER_LENGTH ((BHY_I2C_REG_BUFFER_END_ADDR) - (BHY_I2C_REG_BUFFER_ZERO_ADDR) + 1) +/* fifo flush, chip control and status registers*/ +#define BHY_I2C_REG_FIFO_FLUSH_ADDR (0x32) +#define BHY_I2C_REG_CHIP_CONTROL_ADDR (0x34) +#define BHY_I2C_REG_HOST_STATUS_ADDR (0x35) +#define BHY_I2C_REG_INT_STATUS_ADDR (0x36) +#define BHY_I2C_REG_CHIP_STATUS_ADDR (0x37) +/* bytes remaining register*/ +#define BHY_I2C_REG_BYTES_REMAINING_LSB_ADDR (0x38) +#define BHY_I2C_REG_BYTES_REMAINING_MSB_ADDR (0x39) +#define BHY_I2C_REG_PARAMETER_ACKNOWLEDGE_ADDR (0x3A) +/* saved parameter */ +#define BHY_I2C_REG_PARAMETER_READ_BUFFER_ZERO (0x3B) + +#define BHY_I2C_REG_PARAMETER_PAGE_SELECT_ADDR (0x54) +/**< parameter page selection address*/ +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_ADDR (0x55) +/**< host interface control address*/ +/*! + * @brief parameter write buffer*/ +#define BHY_I2C_REG_PARAMETER_WRITE_BUFFER_ZERO (0x5C) +#define BHY_I2C_REG_PARAMETER_REQUEST_ADDR (0x64) +/**< used to select the respective parameter number*/ + +/* product and revision id */ +#define BHY_BHY_HOST_IRQ_TIMESTAMP_ADDR (0x6C) +/**< host IRQ time stamp address*/ +#define BHY_ROM_VERSION_ADDR (0x70) +/**< ROM version address*/ +#define BHY_RAM_VERSION_ADDR (0x72) +/**< RAM version address*/ +#define BHY_I2C_REG_PRODUCT_ID_ADDR (0x90) +/**< product id address*/ +#define BHY_I2C_REG_REVISION_ID_ADDR (0x91) +/**< revision id address*/ +#define BHY_I2C_REG_UPLOAD_0_ADDR (0x94) +#define BHY_I2C_REG_UPLOAD_1_ADDR (0x95) +/**< upload address for RAM patch*/ +#define BHY_I2C_REG_UPLOAD_DATA_ADDR (0x96) +/**< upload data address for RAM patch*/ +#define BHY_I2C_REG_CRC_HOST_ADDR (0x97) +/**< CRC register*/ +#define BHY_I2C_REG_RESET_REQUEST_ADDR (0x9B) +/**< reset register*/ +/****************************************************/ +/**\name ARRAY DEFINITIONS FOR IRQ TIME STAMP*/ +/**************************************************************/ +#define BHY_HOST_IRQ_TIMESTAMP_SIZE (4) +#define BHY_HOST_IRQ_TIMESTAMP_LSB_DATA (0) +#define BHY_HOST_IRQ_TIMESTAMP_XLSB_DATA (1) +#define BHY_HOST_IRQ_TIMESTAMP_XXLSB_DATA (2) +#define BHY_HOST_IRQ_TIMESTAMP_MSB_DATA (3) +/****************************************************/ +/**\name ARRAY DEFINITIONS FOR ROM VERSION*/ +/**************************************************************/ +#define BHY_ROM_VERSION_SIZE (2) +#define BHY_ROM_VERSION_LSB_DATA (0) +#define BHY_ROM_VERSION_MSB_DATA (1) + +#define BHY_RAM_VERSION_SIZE (2) +#define BHY_RAM_VERSION_LSB_DATA (0) +#define BHY_RAM_VERSION_MSB_DATA (1) +#define BHY_FIFO_DATA_BUFFER (200) + +#define BHY_ROM_VERSION_DI01 (u16)(0x2112) +//#define BHY_ROM_VERSION_DI02 (u16)(0x2112) //DI02 is not supported +#define BHY_ROM_VERSION_DI03 (u16)(0x2DAD) +/**************************************************************/ +/**\name STRUCTURE DEFINITIONS */ +/**************************************************************/ +/*! +* @brief BHY structure +* This structure holds all relevant information about BHY +*/ +struct bhy_t { +u8 product_id;/**< product id of BHY */ +u8 device_addr;/**< device address of BHY */ +BHY_WR_FUNC_PTR;/**< bus write function pointer +used to map the user bus write functions*/ +BHY_RD_FUNC_PTR;/**< bus read function pointer +used to map the user bus read functions*/ +BHY_BRD_FUNC_PTR;/**< burst read function pointer +used to map the user burst read functions*/ +void (*delay_msec)(BHY_MDELAY_DATA_TYPE);/**< delay function pointer */ +}; +/*! +* @brief BHY parameter read buffer +* structure holds all relevant information about +* the respective parameter bytes data +*/ +struct parameter_read_buffer_t { +u8 parameter_1;/**<parameter bytes 1*/ +u8 parameter_2;/**<parameter bytes 1*/ +u8 parameter_3;/**<parameter bytes 1*/ +u8 parameter_4;/**<parameter bytes 1*/ +u8 parameter_5;/**<parameter bytes 1*/ +u8 parameter_6;/**<parameter bytes 1*/ +u8 parameter_7;/**<parameter bytes 1*/ +u8 parameter_8;/**<parameter bytes 1*/ +u8 parameter_9;/**<parameter bytes 1*/ +u8 parameter_10;/**<parameter bytes 1*/ +u8 parameter_11;/**<parameter bytes 1*/ +u8 parameter_12;/**<parameter bytes 1*/ +u8 parameter_13;/**<parameter bytes 1*/ +u8 parameter_14;/**<parameter bytes 1*/ +u8 parameter_15;/**<parameter bytes 1*/ +u8 parameter_16;/**<parameter bytes 1*/ +}; +/*! +* @brief BHY load parameter bytes structure +* This structure holds all relevant information about BHY +* load parameter bytes +*/ +struct parameter_write_buffer_t { +u8 write_parameter_byte1;/**<parameter byte 1*/ +u8 write_parameter_byte2;/**<parameter byte 2*/ +u8 write_parameter_byte3;/**<parameter byte 3*/ +u8 write_parameter_byte4;/**<parameter byte 4*/ +u8 write_parameter_byte5;/**<parameter byte 5*/ +u8 write_parameter_byte6;/**<parameter byte 6*/ +u8 write_parameter_byte7;/**<parameter byte 7*/ +u8 write_parameter_byte8;/**<parameter byte 8*/ +}; +/*! +* @brief meta event interrupt structure +* This structure holds meta event +* interrupt details +*/ +struct meta_event_intr_t { +u8 meta_event1_intr;/**< Meta event1 interrupt */ +u8 meta_event2_intr;/**< Meta event2 interrupt */ +u8 meta_event3_intr;/**< Meta event3 interrupt */ +u8 meta_event4_intr;/**< Meta event4 interrupt */ +u8 meta_event5_intr;/**< Meta event5 interrupt */ +u8 meta_event6_intr;/**< Meta event6 interrupt */ +u8 meta_event7_intr;/**< Meta event7 interrupt */ +u8 meta_event8_intr;/**< Meta event8 interrupt */ +u8 meta_event9_intr;/**< Meta event9 interrupt */ +u8 meta_event10_intr;/**< Meta event10 interrupt */ +u8 meta_event11_intr;/**< Meta event11 interrupt */ +u8 meta_event12_intr;/**< Meta event12 interrupt */ +u8 meta_event13_intr;/**< Meta event13 interrupt */ +u8 meta_event14_intr;/**< Meta event14 interrupt */ +u8 meta_event15_intr;/**< Meta event15 interrupt */ +u8 meta_event16_intr;/**< Meta event16 interrupt */ +u8 meta_event17_intr;/**< Meta event17 interrupt */ +u8 meta_event18_intr;/**< Meta event18 interrupt */ +u8 meta_event19_intr;/**< Meta event19 interrupt */ +u8 meta_event20_intr;/**< Meta event20 interrupt */ +u8 meta_event21_intr;/**< Meta event21 interrupt */ +u8 meta_event22_intr;/**< Meta event22 interrupt */ +u8 meta_event23_intr;/**< Meta event23 interrupt */ +u8 meta_event24_intr;/**< Meta event24 interrupt */ +u8 meta_event25_intr;/**< Meta event25 interrupt */ +u8 meta_event26_intr;/**< Meta event26 interrupt */ +u8 meta_event27_intr;/**< Meta event27 interrupt */ +u8 meta_event28_intr;/**< Meta event28 interrupt */ +u8 meta_event29_intr;/**< Meta event29 interrupt */ +u8 meta_event30_intr;/**< Meta event30 interrupt */ +u8 meta_event31_intr;/**< Meta event31 interrupt */ +u8 meta_event32_intr;/**< Meta event32 interrupt */ +}; +/*! +* @brief meta event Event structure +* This structure holds meta event +* Event details +*/ +struct meta_event_event_t { +u8 meta_event1_event;/**< Meta event1 event */ +u8 meta_event2_event;/**< Meta event2 event */ +u8 meta_event3_event;/**< Meta event3 event */ +u8 meta_event4_event;/**< Meta event4 event */ +u8 meta_event5_event;/**< Meta event5 event */ +u8 meta_event6_event;/**< Meta event6 event */ +u8 meta_event7_event;/**< Meta event7 event */ +u8 meta_event8_event;/**< Meta event8 event */ +u8 meta_event9_event;/**< Meta event9 event */ +u8 meta_event10_event;/**< Meta event10 event */ +u8 meta_event11_event;/**< Meta event11 event */ +u8 meta_event12_event;/**< Meta event12 event */ +u8 meta_event13_event;/**< Meta event13 event */ +u8 meta_event14_event;/**< Meta event14 event */ +u8 meta_event15_event;/**< Meta event15 event */ +u8 meta_event16_event;/**< Meta event16 event */ +u8 meta_event17_event;/**< Meta event17 event */ +u8 meta_event18_event;/**< Meta event18 event */ +u8 meta_event19_event;/**< Meta event19 event */ +u8 meta_event20_event;/**< Meta event20 event */ +u8 meta_event21_event;/**< Meta event21 event */ +u8 meta_event22_event;/**< Meta event22 event */ +u8 meta_event23_event;/**< Meta event23 event */ +u8 meta_event24_event;/**< Meta event24 event */ +u8 meta_event25_event;/**< Meta event25 event */ +u8 meta_event26_event;/**< Meta event26 event */ +u8 meta_event27_event;/**< Meta event27 event */ +u8 meta_event28_event;/**< Meta event28 event */ +u8 meta_event29_event;/**< Meta event29 event */ +u8 meta_event30_event;/**< Meta event30 event */ +u8 meta_event31_event;/**< Meta event31 event */ +u8 meta_event32_event;/**< Meta event32 event */ +}; +/*! +* @brief sensor status bank structure +* This structure holds sensor status bank information +*/ +struct sensor_status_bank_t { +u8 data_available;/**<contains the status bank data available information*/ +u8 i2c_nack;/**<contains the status bank i2c NACK information*/ +u8 device_id_error;/**<contains the status bank device id error information*/ +u8 transient_error;/**<contains the status bank transient error information*/ +u8 data_lost;/**<contains the status bank data loss information*/ +u8 sensor_power_mode; +/**<contains the status bank sensor power mode information*/ +}; +/*! +* @brief physical sensor status +* This structure holds accel physical sensor status +*/ +struct accel_physical_status_t { +u16 accel_sample_rate;/**<contains the accel sampling rate information*/ +u16 accel_dynamic_range;/**<contains the accel dynamic range information*/ +u8 accel_flag;/**<contains the accel flag information*/ +}; +/*! +* @brief physical sensor status +* This structure holds gyro physical sensor status +*/ +struct gyro_physical_status_t { +u16 gyro_sample_rate;/**<contains the gyro sampling rate information*/ +u16 gyro_dynamic_range;/**<contains the gyro dynamic range information*/ +u8 gyro_flag;/**<contains the gyro flag information*/ +}; +/*! +* @brief physical sensor status +* This structure holds mag physical sensor status +*/ +struct mag_physical_status_t { +u16 mag_sample_rate;/**<contains the mag sampling rate information*/ +u16 mag_dynamic_range;/**<contains the mag dynamic range information*/ +u8 mag_flag;/**<contains the mag flag information*/ +}; +/*! +* @brief Sensor information +* This structure holds non wakeup sensor information +*/ +struct sensor_information_non_wakeup_t { +u8 non_wakeup_sensor_type;/**<contains the sensor type*/ +u8 non_wakeup_driver_id;/**<contains the driver id*/ +u8 non_wakeup_driver_version;/**<contains the driver version*/ +u8 non_wakeup_power;/**<contains the power example 0.1mA*/ +u16 non_wakeup_max_range; +/**<contains the maxim range of sensor data in SI units*/ +u16 non_wakeup_resolution; +/**<contains the no of bit resolution of underlying sensor*/ +u16 non_wakeup_max_rate;/**<contains the maximum rate in Hz*/ +u16 non_wakeup_fifo_reserved;/**< contains the fifo size*/ +u16 non_wakeup_fifo_max;/**< contains the entire fifo size*/ +u8 non_wakeup_event_size;/**< contains the no of bytes sensor data packet*/ +u8 non_wakeup_min_rate;/**<contains the minimum rate in Hz*/ +}; +/*! +* @brief Sensor information +* This structure holds wakeup sensor information +*/ +struct sensor_information_wakeup_t { +u8 wakeup_sensor_type;/**<contains the sensor type*/ +u8 wakeup_driver_id;/**<contains the driver id*/ +u8 wakeup_driver_version;/**<contains the driver version*/ +u8 wakeup_power;/**<contains the power example 0.1mA*/ +u16 wakeup_max_range; +/**<contains the maxim range of sensor data in SI units*/ +u16 wakeup_resolution; +/**<contains the no of bit resolution of underlying sensor*/ +u16 wakeup_max_rate;/**<contains the maximum rate in Hz*/ +u16 wakeup_fifo_reserved;/**< contains the fifo size*/ +u16 wakeup_fifo_max;/**< contains the entire fifo size*/ +u8 wakeup_event_size;/**< contains the no of bytes sensor data packet*/ +u8 wakeup_min_rate;/**<contains the minimum rate in Hz*/ +}; +/*! +* @brief Sensor configuration +* This structure holds non wakeup sensor configuration +*/ +struct sensor_configuration_non_wakeup_t { +u16 non_wakeup_sample_rate;/**<contains the sample rate information*/ +u16 non_wakeup_max_report_latency;/**<contains the maximum report latency*/ +u16 non_wakeup_change_sensitivity;/**<contains the sensitivity*/ +u16 non_wakeup_dynamic_range;/**<contains the dynamic range*/ +}; +/*! +* @brief Sensor configuration +* This structure holds wakeup sensor configuration +*/ +struct sensor_configuration_wakeup_t { +u16 wakeup_sample_rate;/**<contains the sample rate information*/ +u16 wakeup_max_report_latency;/**<contains the maximum report latency*/ +u16 wakeup_change_sensitivity;/**<contains the sensitivity*/ +u16 wakeup_dynamic_range;/**<contains the dynamic range*/ +}; +/*! +* @brief Sensor configuration +* This structure holds soft pass through informations +*/ +struct soft_pass_through_read_t { +u8 i2c_slave_address;/**< contain the value of I2C slave address*/ +u8 start_register;/**< contain the value of start register*/ +u8 read_length;/**< contain the value of read length*/ +u8 completion_status;/**< contain the value of completion status*/ +u8 reg_value_byte1;/**< contain the value of returned register value1*/ +u8 reg_value_byte2;/**< contain the value of returned register value2*/ +u8 reg_value_byte3;/**< contain the value of returned register value3*/ +u8 reg_value_byte4;/**< contain the value of returned register value4*/ +}; +/*! +* @brief Sensor configuration +* This structure holds write soft pass through informations +*/ +struct soft_pass_through_write_t { +u8 i2c_slave_address;/**< contain the value of I2C slave address*/ +u8 start_register;/**< contain the value of start register*/ +u8 write_length;/**< contain the value of read length*/ +u8 completion_status;/**< contain the value of completion status*/ +u8 reg_value_byte1;/**< contain the value of returned register value1*/ +u8 reg_value_byte2;/**< contain the value of returned register value2*/ +u8 reg_value_byte3;/**< contain the value of returned register value3*/ +u8 reg_value_byte4;/**< contain the value of returned register value4*/ +}; + + +/**************************************************************/ +/**\name COMMON STRUCTURE FOR DATA PROCESSING */ +/**************************************************************/ +/*! +* @brief used for x,y,z and accuracy status +* data processing +*/ +struct xyz_accuracy_t { +s16 x;/**<contains the +x axis data */ +s16 y;/**<contains the +y axis data */ +s16 z;/**<contains the +z axis data */ +u8 accuracy;/**<contains the +accuracy data */ +}; +/*! +* @brief used for x,y,z,w and radians status +* data processing +*/ +struct xyzw_radians_t { +s16 x;/**<contains the +x axis data */ +s16 y;/**<contains the +y axis data */ +s16 z;/**<contains the +z axis data */ +s16 w;/**<contains the +w axis data */ +s16 radians;/**<contains the +radians data */ +}; +/*! +* @brief used for only one data validation of unsigned integer +* like light,humidity,proximity,step counter +* activity and time stamp. +*/ +struct fifo_size_two_t { +u16 data_process;/**< value of unsigned processed data*/ +}; +/*! +* @brief used for processing the temperature data +*/ +struct process_temperature_t { +s16 temperature;/**< value of temperature data*/ +}; +/*! +* @brief used for processing the meta events +*/ +struct process_meta_event_t { +u8 event_number;/**< value of meta event number*/ +u8 sensor_type;/**< value of sensor type*/ +u8 event_spec;/**< value of event specific value*/ +}; +/*! +* @brief used for processing the uncalib +* mag and gyro data +*/ +struct uncalib_bias_t { +s16 uncalib_x;/**<contains the signed 16bit uncalib x data*/ +s16 uncalib_y;/**<contains the signed 16bit uncalib y data*/ +s16 uncalib_z;/**<contains the signed 16bit uncalib z data*/ +s16 bias_x;/**<contains the signed 16bit bias x data*/ +s16 bias_y;/**<contains the signed 16bit bias y data*/ +s16 bias_z;/**<contains the signed 16bit bias z data*/ +u8 accuracy;/**<contains the signed +16bit estimation accuracy data*/ +}; +/*! +* @brief used for processing the activity data +*/ +struct activity_t { +u8 bit_on;/**< value of activity bits on*/ +u8 bit_off;/**< value of activity bits off*/ +}; +/*! +* @brief barometer data +*/ +struct barometer_process_t { +u32 barometer;/**<contains the +24 bit unsigned barometer data*/ +}; +/*! +* @brief processing the one byte data +* like heart rate +*/ +struct heart_rate_data_process_t { +u8 data;/**<contains the +one byte data data*/ +}; +/*! +* @brief used to process BSX_A, BSX_B and BSX_C data +*/ +struct bsx_process_data_t { +s32 x;/**<contains the signed 32bit x data*/ +s32 y;/**<contains the signed 32bit y data*/ +s32 z;/**<contains the signed 32bit z data*/ +u32 timestamp;/**<contains the signed 32 bit time stamp data*/ +u8 vector;/**< contains the accuracy data*/ +}; +/**************************************************************/ +/**\name FIFO INDEX DEFINITION */ +/**************************************************************/ +#define BHY_SENSOR_ID_INDEX (1) + +/* rotational vector data */ +#define BHY_RVECTOR_X_LSB_DATA (0) +#define BHY_RVECTOR_X_MSB_DATA (1) +#define BHY_RVECTOR_Y_LSB_DATA (2) +#define BHY_RVECTOR_Y_MSB_DATA (3) +#define BHY_RVECTOR_Z_LSB_DATA (4) +#define BHY_RVECTOR_Z_MSB_DATA (5) +#define BHY_RVECTOR_W_LSB_DATA (6) +#define BHY_RVECTOR_W_MSB_DATA (7) +#define BHY_RVECTOR_ACCURACY_LSB_DATA (8) +#define BHY_RVECTOR_ACCURACY_MSB_DATA (9) +#define BHY_RVECTOR_LENGTH (10) + +/* barometer data */ +#define BHY_BAROMETER_LSB_DATA (0) +#define BHY_BAROMETER_XLSB_DATA (1) +#define BHY_BAROMETER_MSB_DATA (2) +#define BHY_BAROMETER_LENGTH (3) +#define BHY_TWO_BYTE_LENGTH (2) +#define BHY_STEP_AMBIENT_TEMPERATURE_MSB_DATA (1) +#define BHY_STEP_AMBIENT_TEMPERATURE_LSB_DATA (0) + + +/* activity*/ +#define BHY_ACTIVITY_BIT_ON (1) +#define BHY_ACTIVITY_BIT_OFF (0) +#define BHY_ACTIVITY_LENGTH (2) + + +/* BSX a */ +#define BHY_BSXA_X_LSB_DATA (0) +#define BHY_BSXA_X_XLSB_DATA (1) +#define BHY_BSXA_X_XXLSB_DATA (2) +#define BHY_BSXA_X_MSB_DATA (3) +#define BHY_BSXA_Y_LSB_DATA (4) +#define BHY_BSXA_Y_XLSB_DATA (5) +#define BHY_BSXA_Y_XXLSB_DATA (6) +#define BHY_BSXA_Y_MSB_DATA (7) +#define BHY_BSXA_Z_LSB_DATA (8) +#define BHY_BSXA_Z_XLSB_DATA (9) +#define BHY_BSXA_Z_XXLSB_DATA (10) +#define BHY_BSXA_Z_MSB_DATA (11) +#define BHY_BSXA_TIMESTAMP_LSB_DATA (12) +#define BHY_BSXA_TIMESTAMP_XLSB_DATA (13) +#define BHY_BSXA_TIMESTAMP_XXLSB_DATA (14) +#define BHY_BSXA_TIMESTAMP_MSB_DATA (15) +#define BHY_BSXA_VECTOR_DATA (16) +#define BHY_BSXA_LENGTH (17) + +/* meta event*/ +#define BHY_BHY_META_EVENT_NUMBER (0) +#define BHY_BHY_META_EVENT_SENSOR_TYPE (1) +#define BHY_BHY_META_EVENT_SPEC_VALUE (2) +#define BHY_BHY_META_EVENT_LENGTH (3) +/* RAM PATCH definitions*/ +/* accel data */ +#define BHY_X_LSB_DATA (0) +#define BHY_X_MSB_DATA (1) +#define BHY_Y_LSB_DATA (2) +#define BHY_Y_MSB_DATA (3) +#define BHY_Z_LSB_DATA (4) +#define BHY_Z_MSB_DATA (5) +#define BHY_VECTOR_DATA (6) +#define BHY_XYZ_VECTOR_LENGTH (7) +#define INCREMENT_INDEX (1) +#define DECREMENT_INDEX (1) + +#define BHY_TWO_LENGTH (2) +#define BHY_LSB_DATA (0) +#define BHY_MSB_DATA (1) +#define BHY_FALSE (0) +#define BHY_TRUE (1) + +/* rotational vector data */ +#define BHY_RVECTOR_X_LSB_DATA (0) +#define BHY_RVECTOR_X_MSB_DATA (1) +#define BHY_RVECTOR_Y_LSB_DATA (2) +#define BHY_RVECTOR_Y_MSB_DATA (3) +#define BHY_RVECTOR_Z_LSB_DATA (4) +#define BHY_RVECTOR_Z_MSB_DATA (5) +#define BHY_RVECTOR_W_LSB_DATA (6) +#define BHY_RVECTOR_W_MSB_DATA (7) +#define BHY_RVECTOR_ACCURACY_LSB_DATA (8) +#define BHY_RVECTOR_ACCURACY_MSB_DATA (9) +#define BHY_RVECTOR_LENGTH (10) + +/* uncalibration mag data*/ +#define BHY_UNCALIB_X_LSB_DATA (0) +#define BHY_UNCALIB_X_MSB_DATA (1) +#define BHY_UNCALIB_Y_LSB_DATA (2) +#define BHY_UNCALIB_Y_MSB_DATA (3) +#define BHY_UNCALIB_Z_LSB_DATA (4) +#define BHY_UNCALIB_Z_MSB_DATA (5) +#define BHY_BIAS_X_LSB_DATA (6) +#define BHY_BIAS_X_MSB_DATA (7) +#define BHY_BIAS_Y_LSB_DATA (8) +#define BHY_BIAS_Y_MSB_DATA (9) +#define BHY_BIAS_Z_LSB_DATA (10) +#define BHY_BIAS_Z_MSB_DATA (11) +#define BHY_UNCALIB_ACCURACY_DATA (12) +#define BHY_UNCALIB_LENGTH (13) +/**************************************************************/ +/**\name CONSTANT HEX DEFINITION */ +/**************************************************************/ +#define BHY_PARAMETER_ACK_CHECK (0x80) +#define BHY_MASK_LSB_DATA (0x00FF) +#define BHY_MASK_MSB_DATA (0xFF00) +#define BHY_SIC_MASK_MSB_DATA (0x000000FF) +#define BHY_SIC_MASK_LSB_DATA (0x0000FF00) +#define BHY_SIC_MASK_LSB1_DATA (0x00FF0000) +#define BHY_SIC_MASK_LSB2_DATA (0xFF000000) +#define BHY_MASK_META_EVENT (0xFF) + +/**************************************************************/ +/**\name PAGE SELECTION DEFINITION */ +/**************************************************************/ +#define BHY_PAGE_1 (0x01) +/**< page 1 system page*/ +#define BHY_PAGE_2 (0x02) +/**< page 2 system page*/ +#define BHY_PAGE_3 (0x03) +/**< page 3 sensor page*/ +#define BHY_PAGE_15 (0x0F) +/**< page 15 sensor page*/ +/**************************************************************/ +/**\name READ PARAMETER REQUEST */ +/**************************************************************/ +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_0 (0x00) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_1 (0x01) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_2 (0x02) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_3 (0x03) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_4 (0x04) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_5 (0x05) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_6 (0x06) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_7 (0x07) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_8 (0x08) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_9 (0x09) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_10 (0x0A) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_11 (0x0B) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_12 (0x0C) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_13 (0x0D) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_14 (0x0E) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_15 (0x0F) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_16 (0x10) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_17 (0x11) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_18 (0x12) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_19 (0x13) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_20 (0x14) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_21 (0x15) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_22 (0x16) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_23 (0x17) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_24 (0x18) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_25 (0x19) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_30 (0x1E) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_31 (0x1F) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_33 (0x21) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_34 (0x22) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_35 (0x23) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_36 (0x24) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_37 (0x25) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_38 (0x26) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_39 (0x27) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_40 (0x28) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_41 (0x29) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_42 (0x2A) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_43 (0x2B) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_44 (0x2C) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_45 (0x2D) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_46 (0x2E) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_47 (0x2F) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_48 (0x30) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_49 (0x31) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_50 (0x32) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_51 (0x33) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_52 (0x34) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_53 (0x35) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_54 (0x36) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_55 (0x37) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_56 (0x38) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_57 (0x39) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_63 (0x3F) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_64 (0x40) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_65 (0x41) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_66 (0x42) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_67 (0x43) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_68 (0x44) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_73 (0x49) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_74 (0x4A) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_75 (0x4B) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_76 (0x4C) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_77 (0x4D) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_78 (0x4E) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_79 (0x4F) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_80 (0x50) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_81 (0x51) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_82 (0x52) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_83 (0x53) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_84 (0x54) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_86 (0x56) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_87 (0x57) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_88 (0x58) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_89 (0x59) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_95 (0x5F) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_97 (0x61) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_98 (0x62) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_99 (0x63) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_100 (0x64) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_101 (0x65) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_102 (0x66) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_103 (0x67) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_104 (0x68) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_105 (0x69) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_106 (0x6A) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_107 (0x6B) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_108 (0x6C) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_109 (0x6D) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_110 (0x6E) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_111 (0x6F) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_112 (0x70) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_113 (0x71) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_114 (0x72) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_115 (0x73) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_116 (0x74) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_117 (0x75) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_118 (0x76) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_119 (0x77) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_120 (0x78) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_121 (0x79) +#define BHY_PARAMETER_REQUEST_READ_PARAMETER_127 (0x7F) +/**************************************************************/ +/**\name WRITE PARAMETER REQUEST */ +/**************************************************************/ +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_0 (0x80) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_1 (0x81) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_2 (0x82) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_3 (0x83) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_4 (0x84) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_5 (0x85) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_6 (0x86) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_7 (0x87) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_8 (0x88) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_9 (0x89) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_10 (0x8A) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_11 (0x8B) +/* non wakeup sensor configuration*/ +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_64 (0xC0) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_65 (0xC1) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_66 (0xC2) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_67 (0xC3) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_68 (0xC4) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_69 (0xC5) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_70 (0xC6) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_71 (0xC7) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_72 (0xC8) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_73 (0xC9) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_74 (0xCA) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_75 (0xCB) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_76 (0xCC) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_77 (0xCD) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_78 (0xCE) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_79 (0xCF) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_80 (0xD0) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_81 (0xD1) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_82 (0xD2) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_83 (0xD3) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_84 (0xD4) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_85 (0xD5) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_86 (0xD6) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_87 (0xD7) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_88 (0xD8) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_89 (0xD9) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_90 (0xDA) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_95 (0xDF) +/* wakeup sensor configuration*/ +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_97 (0xE1) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_98 (0xE2) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_99 (0xE3) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_100 (0xE4) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_101 (0xE5) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_102 (0xE6) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_103 (0xE7) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_104 (0xE8) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_105 (0xE9) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_106 (0xEA) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_107 (0xEB) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_108 (0xEC) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_109 (0xED) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_110 (0xEE) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_111 (0xEF) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_112 (0xF0) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_113 (0xF1) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_114 (0xF2) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_115 (0xF3) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_116 (0xF4) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_117 (0xF5) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_118 (0xF6) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_119 (0xF7) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_120 (0xF8) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_121 (0xF9) +#define BHY_PARAMETER_REQUEST_WRITE_PARAMETER_127 (0xFF) + +/****************************************************/ +/**\name DEFINITIONS FOR PARAM PAGE BHY_PAGE_2 ITEMS */ +/**************************************************************/ +#define PAGE2_SIC_MATRIX_0_1 1 /* X1, X2 */ +#define PAGE2_SIC_MATRIX_2_3 2 /* X3, Y1 */ +#define PAGE2_SIC_MATRIX_4_5 3 /* Y2, Y2 */ +#define PAGE2_SIC_MATRIX_6_7 4 /* Z1, Z2 */ +#define PAGE2_SIC_MATRIX_8 5 /* Z3, */ + +#define PAGE2_CUS_FIRMWARE_VERSION 125 /* return CUS SDK version information */ +#define PAGE2_BSX_VERSION 126 /* return BSX library version information */ + + +struct cus_version_t +{ + u8 minor; /**< minor version */ + u8 major; /**< major version */ + s16 base; /**< base version, same as ram_version */ +}; + +/**************************************************************/ +/**\name BIT MASK DEFINITION FOR META EVENTS */ +/**************************************************************/ +#define BHY_META_EVENT1_INTR_ENABLE (0x01) +#define BHY_META_EVENT1_EVENT_ENABLE (0x02) + +#define BHY_META_EVENT2_INTR_ENABLE (0x04) +#define BHY_META_EVENT2_EVENT_ENABLE (0x08) + +#define BHY_META_EVENT3_INTR_ENABLE (0x10) +#define BHY_META_EVENT3_EVENT_ENABLE (0x20) + +#define BHY_META_EVENT4_INTR_ENABLE (0x40) +#define BHY_META_EVENT4_EVENT_ENABLE (0x80) + +#define BHY_META_EVENT5_INTR_ENABLE (0x01) +#define BHY_META_EVENT5_EVENT_ENABLE (0x02) + +#define BHY_META_EVENT6_INTR_ENABLE (0x04) +#define BHY_META_EVENT6_EVENT_ENABLE (0x08) + +#define BHY_META_EVENT7_INTR_ENABLE (0x10) +#define BHY_META_EVENT7_EVENT_ENABLE (0x20) + +#define BHY_META_EVENT8_INTR_ENABLE (0x40) +#define BHY_META_EVENT8_EVENT_ENABLE (0x80) + +#define BHY_META_EVENT9_INTR_ENABLE (0x01) +#define BHY_META_EVENT9_EVENT_ENABLE (0x02) + +#define BHY_META_EVENT10_INTR_ENABLE (0x04) +#define BHY_META_EVENT10_EVENT_ENABLE (0x08) + +#define BHY_META_EVENT11_INTR_ENABLE (0x10) +#define BHY_META_EVENT11_EVENT_ENABLE (0x20) + +#define BHY_META_EVENT12_INTR_ENABLE (0x40) +#define BHY_META_EVENT12_EVENT_ENABLE (0x80) + +#define BHY_META_EVENT13_INTR_ENABLE (0x01) +#define BHY_META_EVENT13_EVENT_ENABLE (0x02) + +#define BHY_META_EVENT14_INTR_ENABLE (0x04) +#define BHY_META_EVENT14_EVENT_ENABLE (0x08) + +#define BHY_META_EVENT15_INTR_ENABLE (0x10) +#define BHY_META_EVENT15_EVENT_ENABLE (0x20) + +#define BHY_META_EVENT16_INTR_ENABLE (0x40) +#define BHY_META_EVENT16_EVENT_ENABLE (0x80) + +#define BHY_META_EVENT17_INTR_ENABLE (0x01) +#define BHY_META_EVENT17_EVENT_ENABLE (0x02) + +#define BHY_META_EVENT18_INTR_ENABLE (0x04) +#define BHY_META_EVENT18_EVENT_ENABLE (0x08) + +#define BHY_META_EVENT19_INTR_ENABLE (0x10) +#define BHY_META_EVENT19_EVENT_ENABLE (0x20) + +#define BHY_META_EVENT20_INTR_ENABLE (0x40) +#define BHY_META_EVENT20_EVENT_ENABLE (0x80) + +#define BHY_META_EVENT21_INTR_ENABLE (0x01) +#define BHY_META_EVENT21_EVENT_ENABLE (0x02) + +#define BHY_META_EVENT22_INTR_ENABLE (0x04) +#define BHY_META_EVENT22_EVENT_ENABLE (0x08) + +#define BHY_META_EVENT23_INTR_ENABLE (0x10) +#define BHY_META_EVENT23_EVENT_ENABLE (0x20) + +#define BHY_META_EVENT24_INTR_ENABLE (0x40) +#define BHY_META_EVENT24_EVENT_ENABLE (0x80) + +#define BHY_META_EVENT25_INTR_ENABLE (0x01) +#define BHY_META_EVENT25_EVENT_ENABLE (0x02) + +#define BHY_META_EVENT26_INTR_ENABLE (0x04) +#define BHY_META_EVENT26_EVENT_ENABLE (0x08) + +#define BHY_META_EVENT27_INTR_ENABLE (0x10) +#define BHY_META_EVENT27_EVENT_ENABLE (0x20) + +#define BHY_META_EVENT28_INTR_ENABLE (0x40) +#define BHY_META_EVENT28_EVENT_ENABLE (0x80) + +#define BHY_META_EVENT29_INTR_ENABLE (0x01) +#define BHY_META_EVENT29_EVENT_ENABLE (0x02) + +#define BHY_META_EVENT30_INTR_ENABLE (0x04) +#define BHY_META_EVENT30_EVENT_ENABLE (0x08) + +#define BHY_META_EVENT31_INTR_ENABLE (0x10) +#define BHY_META_EVENT31_EVENT_ENABLE (0x20) + +#define BHY_META_EVENT32_INTR_ENABLE (0x40) +#define BHY_META_EVENT32_EVENT_ENABLE (0x80) + +/**************************************************************/ +/**\name BIT MASK DEFINITION FOR SENSOR BANKS */ +/**************************************************************/ +#define BHY_SENSOR_BANK_STATUS_DATA_AVAILABLE (0x01) +#define BHY_SENSOR_BANK_STATUS_I2C_NACK (0x02) +#define BHY_SENSOR_BANK_STATUS_DEVICE_ID_ERROR (0x04) +#define BHY_SENSOR_BANK_STATUS_TRANSIENT_ERROR (0x08) +#define BHY_SENSOR_BANK_STATUS_DATA_LOST (0x10) +#define BHY_SENSOR_BANK_STATUS_POWER_MODE (0xE0) +#define BHY_POWER_MODE_SENSOR_NOT_PRESENT (0x00) +#define BHY_POWER_MODE_POWER_DOWN (0x01) +#define BHY_POWER_MODE_POWER_SUSPEND (0x02) +#define BHY_POWER_MODE_POWER_SELFTEST (0x03) +#define BHY_POWER_MODE_POWER_INTR_MOTION (0x04) +#define BHY_POWER_MODE_POWER_ONE_SHOT (0x05) +#define BHY_POWER_MODE_POWER_LOW_POWER (0x06) +#define BHY_POWER_MODE_POWER_ACTIVE (0x07) +#define BHY_SIGNATURE_1 (0) +#define BHY_SIGNATURE_2 (1) +#define BHY_SIG_FLAG_1_POS (2) +#define BHY_SIG_FLAG_2_POS (3) +#define BHY_SIGNATURE_LENGTH (16) +#define BHY_RAM_WRITE_LENGTH (4) +#define BHY_RAM_WRITE_LENGTH_API (32) +#define BHY_CHIP_CTRL_ENABLE_1 (0x02) +#define BHY_CHIP_CTRL_ENABLE_2 (0x01) +#define BHY_UPLOAD_DATA (0x00) +#define BHY_RESET_ENABLE (0x01) +#define BHY_INIT_READ_BYTES (19) +#define BHY_INIT_BYTE_MINUS_ONE (1) +#define BHY_CHECK_BYTE (3) +#define BHY_IMAGE_SIGNATURE1 (0x2A) +#define BHY_IMAGE_SIGNATURE2 (0x65) +#define BHY_GET_ROMVEREXP(bhy_sig_flag) ((bhy_sig_flag>>11)&0x03) +#define BHY_ROM_VER_ANY (0x00) +#define BHY_ROM_VER_DI01 (0x01) +#define BHY_ROM_VER_DI02 (0x02) +#define BHY_ROM_VER_DI03 (0x03) +/**************************************************************/ +/**\name META EVENT DEFINITION */ +/**************************************************************/ +#define BHY_META_EVENT_1 (1) +#define BHY_META_EVENT_2 (2) +#define BHY_META_EVENT_3 (3) +#define BHY_META_EVENT_4 (4) +#define BHY_META_EVENT_5 (5) +#define BHY_META_EVENT_6 (6) +#define BHY_META_EVENT_7 (7) +#define BHY_META_EVENT_8 (8) +#define BHY_META_EVENT_9 (9) +#define BHY_META_EVENT_10 (10) +#define BHY_META_EVENT_11 (11) +#define BHY_META_EVENT_12 (12) +#define BHY_META_EVENT_13 (13) +#define BHY_META_EVENT_14 (14) +#define BHY_META_EVENT_15 (15) +#define BHY_META_EVENT_16 (16) +#define BHY_META_EVENT_17 (17) +#define BHY_META_EVENT_18 (18) +#define BHY_META_EVENT_19 (19) +#define BHY_META_EVENT_20 (20) +#define BHY_META_EVENT_21 (21) +#define BHY_META_EVENT_22 (22) +#define BHY_META_EVENT_23 (23) +#define BHY_META_EVENT_24 (24) +#define BHY_META_EVENT_25 (25) +#define BHY_META_EVENT_26 (26) +#define BHY_META_EVENT_27 (27) +#define BHY_META_EVENT_28 (28) +#define BHY_META_EVENT_29 (29) +#define BHY_META_EVENT_30 (30) +#define BHY_META_EVENT_31 (31) +#define BHY_META_EVENT_32 (32) +/**************************************************************/ +/**\name SENSOR ID DEFINITION FOR NON WAKEUP*/ +/**************************************************************/ +#define BHY_NON_WAKEUP_ROTATION_VECTOR (11) +#define BHY_NON_WAKEUP_GAME_ROTATION_VECTOR (15) +#define BHY_NON_WAKEUP_GEOMAG_ROTATION_VECTOR (20) +#define BHY_NON_WAKEUP_ACCELR (1) +#define BHY_NON_WAKEUP_MAG (2) +#define BHY_NON_WAKEUP_ORIENTATION (3) +#define BHY_NON_WAKEUP_GYRO (4) +#define BHY_NON_WAKEUP_GRAVITY (9) +#define BHY_NON_WAKEUP_LINEAR_ACCEL (10) +#define BHY_NON_WAKEUP_LIGHT (5) +#define BHY_NON_WAKEUP_PROXIMITY (8) +#define BHY_NON_WAKEUP_HUMIDITY (12) +#define BHY_NON_WAKEUP_STEP_COUNTER (19) +#define BHY_NON_WAKEUP_TEMPERATURE (7) +#define BHY_NON_WAKEUP_AMBIENT_TEMPERATURE (13) +#define BHY_NON_WAKEUP_BAROMETER (6) +#define BHY_NON_WAKEUP_SIGNIFICANT_MOTION (17) +#define BHY_NON_WAKEUP_STEP_DETECTOR (18) +#define BHY_NON_WAKEUP_TILT_DETECTOR (22) +#define BHY_NON_WAKEUP_WAKE_GESTURE (23) +#define BHY_NON_WAKEUP_GLANCE_GESTURE (24) +#define BHY_NON_WAKEUP_PICKUP_GESTURE (25) +#define BHY_NON_WAKEUP_UNCALIB_MAG (14) +#define BHY_NON_WAKEUP_UNCALIB_GYRO (16) +#define BHY_NON_WAKEUP_HEART_RATE (21) +#define BHY_NON_WAKEUP_ACTIVITY (31) +#define BHY_NON_WAKEUP_BSX_C (249) +#define BHY_NON_WAKEUP_BSX_B (250) +#define BHY_NON_WAKEUP_BSX_A (251) +#define BHY_NON_WAKEUP_TIMESTAMP_LSW (252) +#define BHY_NON_WAKEUP_TIMESTAMP_MSW (253) +#define BHY_NON_WAKEUP_META_EVENTS (254) + +/**************************************************************/ +/**\name SENSOR ID DEFINITION FOR WAKEUP*/ +/**************************************************************/ +#define BHY_WAKEUP_ROTATION_VECTOR (43) +#define BHY_WAKEUP_GAME_ROTATION_VECTOR (47) +#define WAKEUP_GEOMAG_ROTATION_VECTOR (52) +#define BHY_WAKEUP_ACCEL (33) +#define BHY_WAKEUP_MAG (34) +#define BHY_WAKEUP_ORIENTATION (35) +#define BHY_WAKEUP_GYRO (36) +#define BHY_WAKEUP_GRAVITY (41) +#define BHY_WAKEUP_LINEAR_ACCEL (42) +#define BHY_WAKEUP_LIGHT (37) +#define BHY_WAKEUP_PROXIMITY (40) +#define BHY_WAKEUP_HUMIDITY (44) +#define BHY_WAKEUP_STEP_COUNTER (51) +#define BHY_WAKEUP_TEMPERATURE (39) +#define BHY_WAKEUP_AMBIENT_TEMPERATURE (45) +#define BHY_WAKEUP_BAROMETER (38) +#define BHY_WAKEUP_SIGNIFICANT_MOTION (49) +#define BHY_WAKEUP_STEP_DETECTOR (50) +#define BHY_WAKEUP_TILT_DETECTOR (54) +#define BHY_WAKEUP_WAKE_GESTURE (55) +#define BHY_WAKEUP_GLANCE_GESTURE (56) +#define BHY_WAKEUP_PICKUP_GESTURE (57) +#define BHY_WAKEUP_UNCALIB_MAG (46) +#define BHY_WAKEUP_UNCALIB_GYRO (48) +#define BHY_WAKEUP_HEART_RATE (53) +#define BHY_WAKEUP_ACTIVITY (63) +#define BHY_WAKEUP_TIMESTAMP_LSW (246) +#define BHY_WAKEUP_TIMESTAMP_MSW (247) +#define BHY_WAKEUP_META_EVENTS (248) +/**************************************************************/ +/**\name USER DATA REGISTERS DEFINITION START */ +/**************************************************************/ + +/**************************************************************/ +/**\name FIFO FLUSH LENGTH, POSITION AND MASK */ +/**************************************************************/ +#define BHY_I2C_REG_FIFO_FLUSH__POS (0) +#define BHY_I2C_REG_FIFO_FLUSH__MSK (0xFF) +#define BHY_I2C_REG_FIFO_FLUSH__LEN (8) +#define BHY_I2C_REG_FIFO_FLUSH__REG (BHY_I2C_REG_FIFO_FLUSH_ADDR) +/**************************************************************/ +/**\name CHIP CONTROL LENGTH, POSITION AND MASK */ +/**************************************************************/ +#define BHY_I2C_REG_CHIP_CONTROL__POS (0) +#define BHY_I2C_REG_CHIP_CONTROL__MSK (0xFF) +#define BHY_I2C_REG_CHIP_CONTROL__LEN (8) +#define BHY_I2C_REG_CHIP_CONTROL__REG \ +(BHY_I2C_REG_CHIP_CONTROL_ADDR) +/**************************************************************/ +/**\name HOST STATUS LENGTH, POSITION AND MASK */ +/**************************************************************/ +#define BHY_I2C_REG_HOST_STATUS__POS (0) +#define BHY_I2C_REG_HOST_STATUS__MSK (0xFF) +#define BHY_I2C_REG_HOST_STATUS__LEN (8) +#define BHY_I2C_REG_HOST_STATUS__REG (BHY_I2C_REG_HOST_STATUS_ADDR) + +#define BHY_I2C_REG_HOST_STATUS_ALGO_STANDBY__POS (1) +#define BHY_I2C_REG_HOST_STATUS_ALGO_STANDBY__MSK (0x02) +#define BHY_I2C_REG_HOST_STATUS_ALGO_STANDBY__LEN (1) +#define BHY_I2C_REG_HOST_STATUS_ALGO_STANDBY__REG \ +(BHY_I2C_REG_HOST_STATUS_ADDR) + +#define BHY_I2C_REG_BHY_HOST_INTERFACE_ID__POS (2) +#define BHY_I2C_REG_BHY_HOST_INTERFACE_ID__MSK (0x1C) +#define BHY_I2C_REG_BHY_HOST_INTERFACE_ID__LEN (3) +#define BHY_I2C_REG_BHY_HOST_INTERFACE_ID__REG \ +(BHY_I2C_REG_HOST_STATUS_ADDR) + +#define BHY_I2C_REG_BHY_HOST_STATUS_ALGO_ID__POS (5) +#define BHY_I2C_REG_BHY_HOST_STATUS_ALGO_ID__MSK (0xE0) +#define BHY_I2C_REG_BHY_HOST_STATUS_ALGO_ID__LEN (3) +#define BHY_I2C_REG_BHY_HOST_STATUS_ALGO_ID__REG \ +(BHY_I2C_REG_HOST_STATUS_ADDR) +/**************************************************************/ +/**\name INTERRUPT STATUS LENGTH, POSITION AND MASK */ +/**************************************************************/ +#define BHY_I2C_REG_INT_STATUS__POS (0) +#define BHY_I2C_REG_INT_STATUS__MSK (0xFF) +#define BHY_I2C_REG_INT_STATUS__LEN (8) +#define BHY_I2C_REG_INT_STATUS__REG (BHY_I2C_REG_INT_STATUS_ADDR) + +#define BHY_I2C_REG_BHY_INT_STATUS_HOST_INTR__POS (0) +#define BHY_I2C_REG_BHY_INT_STATUS_HOST_INTR__MSK (0x01) +#define BHY_I2C_REG_BHY_INT_STATUS_HOST_INTR__LEN (1) +#define BHY_I2C_REG_BHY_INT_STATUS_HOST_INTR__REG (BHY_I2C_REG_INT_STATUS_ADDR) + +#define BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_WM__POS (1) +#define BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_WM__MSK (0x02) +#define BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_WM__LEN (1) +#define BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_WM__REG \ +(BHY_I2C_REG_INT_STATUS_ADDR) + +#define BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_LATENCY__POS (2) +#define BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_LATENCY__MSK (0x04) +#define BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_LATENCY__LEN (1) +#define BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_LATENCY__REG \ +(BHY_I2C_REG_INT_STATUS_ADDR) + +#define BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_IMMEDIATE__POS (3) +#define BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_IMMEDIATE__MSK (0x08) +#define BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_IMMEDIATE__LEN (1) +#define BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_IMMEDIATE__REG \ +(BHY_I2C_REG_INT_STATUS_ADDR) + +#define BHY_I2C_REG_BHY_INT_STATUS_NON_WAKEUP_WM__POS (4) +#define BHY_I2C_REG_BHY_INT_STATUS_NON_WAKEUP_WM__MSK (0x10) +#define BHY_I2C_REG_BHY_INT_STATUS_NON_WAKEUP_WM__LEN (1) +#define BHY_I2C_REG_BHY_INT_STATUS_NON_WAKEUP_WM__REG \ +(BHY_I2C_REG_INT_STATUS_ADDR) + +#define BHY_I2C_REG_INT_STATUS_NON_WAKEUP_LATENCY__POS (5) +#define BHY_I2C_REG_INT_STATUS_NON_WAKEUP_LATENCY__MSK (0x20) +#define BHY_I2C_REG_INT_STATUS_NON_WAKEUP_LATENCY__LEN (1) +#define BHY_I2C_REG_INT_STATUS_NON_WAKEUP_LATENCY__REG \ +(BHY_I2C_REG_INT_STATUS_ADDR) + +#define BHY_I2C_REG_INT_STATUS_NON_WAKEUP_IMMEDIATE__POS (6) +#define BHY_I2C_REG_INT_STATUS_NON_WAKEUP_IMMEDIATE__MSK (0x40) +#define BHY_I2C_REG_INT_STATUS_NON_WAKEUP_IMMEDIATE__LEN (1) +#define BHY_I2C_REG_INT_STATUS_NON_WAKEUP_IMMEDIATE__REG \ +(BHY_I2C_REG_INT_STATUS_ADDR) +/**************************************************************/ +/**\name CHIP STATUS LENGTH, POSITION AND MASK */ +/**************************************************************/ +#define BHY_I2C_REG_CHIP_STATUS__POS (0) +#define BHY_I2C_REG_CHIP_STATUS__MSK (0xFF) +#define BHY_I2C_REG_CHIP_STATUS__LEN (8) +#define BHY_I2C_REG_CHIP_STATUS__REG (BHY_I2C_REG_CHIP_STATUS_ADDR) + +#define BHY_I2C_REG_CHIP_STATUS_EEPROM_DETECTED__POS (0) +#define BHY_I2C_REG_CHIP_STATUS_EEPROM_DETECTED__MSK (0x01) +#define BHY_I2C_REG_CHIP_STATUS_EEPROM_DETECTED__LEN (1) +#define BHY_I2C_REG_CHIP_STATUS_EEPROM_DETECTED__REG \ +(BHY_I2C_REG_CHIP_STATUS_ADDR) + +#define BHY_I2C_REG_CHIP_STATUS_EE_UPLOAD_DONE__POS (1) +#define BHY_I2C_REG_CHIP_STATUS_EE_UPLOAD_DONE__MSK (0x02) +#define BHY_I2C_REG_CHIP_STATUS_EE_UPLOAD_DONE__LEN (1) +#define BHY_I2C_REG_CHIP_STATUS_EE_UPLOAD_DONE__REG \ +(BHY_I2C_REG_CHIP_STATUS_ADDR) + +#define BHY_I2C_REG_CHIP_STATUS_EE_UPLOAD_ERROR__POS (2) +#define BHY_I2C_REG_CHIP_STATUS_EE_UPLOAD_ERROR__MSK (0x04) +#define BHY_I2C_REG_CHIP_STATUS_EE_UPLOAD_ERROR__LEN (1) +#define BHY_I2C_REG_CHIP_STATUS_EE_UPLOAD_ERROR__REG \ +(BHY_I2C_REG_CHIP_STATUS_ADDR) + +#define BHY_I2C_REG_CHIP_STATUS_FIRMWARE_IDLE__POS (3) +#define BHY_I2C_REG_CHIP_STATUS_FIRMWARE_IDLE__MSK (0x08) +#define BHY_I2C_REG_CHIP_STATUS_FIRMWARE_IDLE__LEN (1) +#define BHY_I2C_REG_CHIP_STATUS_FIRMWARE_IDLE__REG \ +(BHY_I2C_REG_CHIP_STATUS_ADDR) + +#define BHY_I2C_REG_CHIP_STATUS_NO_EEPROM__POS (4) +#define BHY_I2C_REG_CHIP_STATUS_NO_EEPROM__MSK (0x10) +#define BHY_I2C_REG_CHIP_STATUS_NO_EEPROM__LEN (1) +#define BHY_I2C_REG_CHIP_STATUS_NO_EEPROM__REG (BHY_I2C_REG_CHIP_STATUS_ADDR) + +/**************************************************************/ +/**\name PAGE SELECT LENGTH, POSITION AND MASK */ +/**************************************************************/ +#define BHY_I2C_REG_PARAMETER_PAGE_SELECT__POS (0) +#define BHY_I2C_REG_PARAMETER_PAGE_SELECT__MSK (0xFF) +#define BHY_I2C_REG_PARAMETER_PAGE_SELECT__LEN (8) +#define BHY_I2C_REG_PARAMETER_PAGE_SELECT__REG \ +(BHY_I2C_REG_PARAMETER_PAGE_SELECT_ADDR) + +#define BHY_I2C_REG_PARAMETER_PAGE_SELECT_PARAMETER_PAGE__POS (0) +#define BHY_I2C_REG_PARAMETER_PAGE_SELECT_PARAMETER_PAGE__MSK (0x0F) +#define BHY_I2C_REG_PARAMETER_PAGE_SELECT_PARAMETER_PAGE__LEN (4) +#define BHY_I2C_REG_PARAMETER_PAGE_SELECT_PARAMETER_PAGE__REG \ +(BHY_I2C_REG_PARAMETER_PAGE_SELECT_ADDR) + +#define BHY_I2C_REG_PARAMETER_PAGE_SELECT_PARAMETER_SIZE__POS (4) +#define BHY_I2C_REG_PARAMETER_PAGE_SELECT_PARAMETER_SIZE__MSK (0xF0) +#define BHY_I2C_REG_PARAMETER_PAGE_SELECT_PARAMETER_SIZE__LEN (4) +#define BHY_I2C_REG_PARAMETER_PAGE_SELECT_PARAMETER_SIZE__REG \ +(BHY_I2C_REG_PARAMETER_PAGE_SELECT_ADDR) +/**************************************************************/ +/**\name HOST INTERFACE SELECTION LENGTH, POSITION AND MASK */ +/**************************************************************/ +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL__POS (0) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL__MSK (0xFF) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL__LEN (8) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL__REG \ +(BHY_I2C_REG_HOST_INTERFACE_CONTROL_ADDR) + +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_ALGO_STABDY_REQUEST__POS (0) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_ALGO_STABDY_REQUEST__MSK (0x01) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_ALGO_STABDY_REQUEST__LEN (1) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_ALGO_STABDY_REQUEST__REG \ +(BHY_I2C_REG_HOST_INTERFACE_CONTROL_ADDR) + +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_ABORT_TRANSFER__POS (1) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_ABORT_TRANSFER__MSK (0x02) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_ABORT_TRANSFER__LEN (1) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_ABORT_TRANSFER__REG \ +(BHY_I2C_REG_HOST_INTERFACE_CONTROL_ADDR) + +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_TRANSFER_COUNT__POS (2) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_TRANSFER_COUNT__MSK (0x04) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_TRANSFER_COUNT__LEN (1) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_TRANSFER_COUNT__REG \ +(BHY_I2C_REG_HOST_INTERFACE_CONTROL_ADDR) + +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_WAKEUP_FIFO_DISABLE__POS (3) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_WAKEUP_FIFO_DISABLE__MSK (0x08) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_WAKEUP_FIFO_DISABLE__LEN (1) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_WAKEUP_FIFO_DISABLE__REG \ +(BHY_I2C_REG_HOST_INTERFACE_CONTROL_ADDR) + +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_NED_COORDINATE__POS (4) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_NED_COORDINATE__MSK (0x10) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_NED_COORDINATE__LEN (1) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_NED_COORDINATE__REG \ +(BHY_I2C_REG_HOST_INTERFACE_CONTROL_ADDR) + +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_AP_SUSPEND__POS (5) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_AP_SUSPEND__MSK (0x20) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_AP_SUSPEND__LEN (1) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_AP_SUSPEND__REG \ +(BHY_I2C_REG_HOST_INTERFACE_CONTROL_ADDR) + +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_SELFTEST__POS (6) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_SELFTEST__MSK (0x40) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_SELFTEST__LEN (1) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_SELFTEST__REG \ +(BHY_I2C_REG_HOST_INTERFACE_CONTROL_ADDR) + +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_NON_WAKEUP_FIFO_DISABLE__POS \ +(7) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_NON_WAKEUP_FIFO_DISABLE__MSK \ +(0x80) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_NON_WAKEUP_FIFO_DISABLE__LEN \ +(1) +#define BHY_I2C_REG_HOST_INTERFACE_CONTROL_NON_WAKEUP_FIFO_DISABLE__REG \ +(BHY_I2C_REG_HOST_INTERFACE_CONTROL_ADDR) +/**************************************************************/ +/**\name LOAD PARAMETER REQUEST SELECTION LENGTH, POSITION AND MASK */ +/**************************************************************/ +#define BHY_I2C_REG_LOAD_PARAMETER_REQUEST__POS (0) +#define BHY_I2C_REG_LOAD_PARAMETER_REQUEST__MSK (0xFF) +#define BHY_I2C_REG_LOAD_PARAMETER_REQUEST__LEN (8) +#define BHY_I2C_REG_LOAD_PARAMETER_REQUEST__REG \ +(BHY_I2C_REG_PARAMETER_REQUEST_ADDR) + +/**************************************************************/ +/**\name RESET REQUEST SELECTION LENGTH, POSITION AND MASK */ +/**************************************************************/ +#define BHY_I2C_REG_RESET_REQUEST__POS (0) +#define BHY_I2C_REG_RESET_REQUEST__MSK (0xFF) +#define BHY_I2C_REG_RESET_REQUEST__LEN (8) +#define BHY_I2C_REG_RESET_REQUEST__REG \ +(BHY_I2C_REG_RESET_REQUEST_ADDR) + +/**************************************************/ +/**\name BIT SLICE GET AND SET FUNCTIONS */ +/*************************************************/ +#define BHY_GET_BITSLICE(regvar, bitname)\ + ((regvar & bitname##__MSK) >> bitname##__POS) + + +#define BHY_SET_BITSLICE(regvar, bitname, val)\ + ((regvar & ~bitname##__MSK) | \ + ((val<<bitname##__POS)&bitname##__MSK)) + +/**************************************************************/ +/**\name USER SELECTION DEFINITIONS */ +/**************************************************************/ +#define BHY_HOST_STATUS_ALGO_STANDBY (0) +#define BHY_HOST_STATUS_ALGO_ID (1) +#define BHY_FIFO_SIZE_WAKEUP (0) +#define BHY_FIFO_SIZE_NON_WAKEUP (1) +#define BHY_HOST_IRQ_TIMESTAMP (0) +#define BHY_CURRENT_TIME_STAMP (1) +/**************************************************************/ +/**\name INTERRUPT STATUS SELECTION DEFINITIONS */ +/**************************************************************/ +#define BHY_INT_STATUS_HOST_INTR (0) +#define BHY_INT_STATUS_WAKEUP_WM (1) +#define BHY_INT_STATUS_WAKEUP_LATENCY (2) +#define BHY_INT_STATUS_WAKEUP_IMMEDIATE (3) +#define BHY_INT_STATUS_NON_WAKEUP_WM (4) +#define BHY_INT_STATUS_NON_WAKEUP_LATENCY (5) +#define BHY_INT_STATUS_NON_WAKEUP (6) +/**************************************************************/ +/**\name CHIP STATUS SELECTION DEFINITIONS */ +/**************************************************************/ +#define BHY_CHIP_STATUS_EEPROM_DETECTED (0) +#define BHY_CHIP_STATUS_EE_UPLOAD_DONE (1) +#define BHY_CHIP_STATUS_EE_UPLOAD_ERROR (2) +#define BHY_CHIP_STATUS_FIRMWARE_IDLE (3) +#define BHY_CHIP_STATUS_NO_EEPROM (4) +/**************************************************************/ +/**\name PARAMETER PAGE SELECTION SELECTION DEFINITIONS */ +/**************************************************************/ +#define BHY_PAGE_SELECT_PARAMETER_PAGE (0) +#define BHY_PAGE_SELECT_PARAMETER_SIZE (1) +/**************************************************************/ +/**\name HOST INTERFACE CONTROL SELECTION DEFINITIONS */ +/**************************************************************/ +#define BHY_HOST_ALGO_STANDBY_REQUEST (0) +#define BHY_HOST_ABORT_TRANSFER (1) +#define BHY_HOST_UPDATE_TRANSFER_COUNT (2) +#define BHY_HOST_WAKEUP_FIFO_DISABLE (3) +#define BHY_HOST_NED_COORDINATE (4) +#define BHY_HOST_AP_SUSPEND (5) +#define BHY_HOST_SELFTEST (6) +#define BHY_HOST_NON_WAKEUP_FIFO_DISABLE (7) +/**************************************************************/ +/**\name META EVENT SELECTION DEFINITIONS */ +/**************************************************************/ +#define BHY_META_EVENT_BYTE_0 (0) +#define BHY_META_EVENT_BYTE_1 (1) +#define BHY_META_EVENT_BYTE_2 (2) +#define BHY_META_EVENT_BYTE_3 (3) +#define BHY_META_EVENT_BYTE_4 (4) +#define BHY_META_EVENT_BYTE_5 (5) +#define BHY_META_EVENT_BYTE_6 (6) +#define BHY_META_EVENT_BYTE_7 (7) +/**************************************************************/ +/**\name META EVENT AND INTERRUPT SELECTION DEFINITIONS */ +/**************************************************************/ +#define BHY_META_INTR_ENABLE (0) +#define BHY_META_EVENT_ENABLE (1) +/**************************************************************/ +/**\name META EVENT BYTE-0 SELECTION */ +/**************************************************************/ +#define BHY_FLUSH_COMPLETE (0) +#define BHY_SAMPLE_RATE_CHANGE (1) +#define BHY_POWER_MODE (2) +#define BHY_META_ERROR (3) +/**************************************************************/ +/**\name META EVENT BYTE-2 SELECTION */ +/**************************************************************/ +#define BHY_SENSOR_ERROR (0) +#define BHY_FIFO_OVERFLOW (1) +/**************************************************************/ +/**\name META EVENT BYTE-3 SELECTION */ +/**************************************************************/ +#define BHY_DYNAMIC_RANGE (0) +#define BHY_FIFO_WM (1) +#define BHY_SELF_TEST_RESULT (2) +#define BHY_INITIALIZED (3) +/**************************************************************/ +/**************************************************************/ +/**\name FIFO WATER MARK SELECTION DEFINITIONS */ +/**************************************************************/ +#define BHY_FIFO_WATER_MARK_WAKEUP (0) +#define BHY_FIFO_WATER_MARK_NON_WAKEUP (1) +/**************************************************************/ +/**\name SENSOR STATUS BANK DEFINITIONS */ +/**************************************************************/ +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_1 (0) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_2 (1) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_3 (3) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_4 (4) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_5 (5) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_6 (6) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_7 (7) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_8 (8) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_9 (9) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_10 (10) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_11 (11) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_12 (12) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_13 (13) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_14 (14) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_15 (15) +#define BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_16 (16) + +/**************************************************************/ +/**\name SENSOR STATUS BANK POWER MODE DEFINITION */ +/**************************************************************/ + +#define BHY_SENSOR_NOT_PRESENT (0x00) +#define BHY_POWER_DOWN (0x01) +#define BHY_SUSPEND (0x02) +#define BHY_SELF_TEST (0x03) +#define BHY_INTR_MOTION (0x04) +#define BHY_ONE_SHOT (0x05) +#define BHY_LOW_POWER_ACTIVE (0x06) +#define BHY_ACTIVE (0x07) + +/**************************************************************/ +/**\name PRODUCT ID DEFINITION */ +/**************************************************************/ +#define PRODUCT_ID_7183 (0x83) + +/**************************************************************/ +/**\name FUNCTION DECLARATIONS */ +/**************************************************************/ +/*! + * @brief + * This function is used for initialize + * bus read and bus write functions + * and device address + * product id is read in the register 0x90 bit from 0 to 7 + * + * @param bhy : structure pointer + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * @note + * While changing the parameter of the bhy_t + * consider the following point: + * Changing the reference value of the parameter + * will changes the local copy or local reference + * make sure your changes will not + * affect the reference value of the parameter + * (Better case don't change the reference value of the parameter) + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_init(struct bhy_t *bhy); +/*! + * @brief + * This API write the data to + * the given register + * + * + * @param v_addr_u8 -> Address of the register + * @param v_data_u8 -> The data from the register + * @param v_len_u8 -> no of bytes to read + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + */ +BHY_RETURN_FUNCTION_TYPE bhy_write_reg(u8 v_addr_u8, +u8 *v_data_u8, u16 v_len_u16); +/*! + * @brief + * This API reads the data from + * the given register + * + * + * @param v_addr_u8 -> Address of the register + * @param v_data_u8 -> The data from the register + * @param v_len_u8 -> no of bytes to read + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + */ +BHY_RETURN_FUNCTION_TYPE bhy_read_reg(u8 v_addr_u8, +u8 *v_data_u8, u16 v_len_u16); +/*! + * @brief API used to get the FIFO flush from the register 0x32 + * bit 0 to 7 + * + * + * @param v_fifo_flush_u8 : The value of fifo flush + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_fifo_flush(u8 *v_fifo_flush_u8); +/*! + * @brief API used to set the FIFO flush from the register 0x32 + * bit 0 to 7 + * + * + * @param v_fifo_flush_u8 : The value of fifo flush + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_fifo_flush(u8 v_fifo_flush_u8); +/*! + * @brief API used to get the chip control from the register 0x34 + * bit 0 to 7 + * @note Chip control used to provide the control fundamental + * behaviour of the chip + * + * @param v_chipcontrol_u8 : The value of chip control + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_chip_control(u8 *v_chipcontrol_u8); +/*! + * @brief API used to set the chip control from the register 0x34 + * bit 0 to 7 + * @note Chip control used to provide the control fundamental + * behaviour of the chip + * + * @param v_chipcontrol_u8 : The value of chip control + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_chip_control(u8 v_chipcontrol_u8); +/*! + * @brief API used to get the host status from the register 0x35 + * bit 0 to 7 + * + * + * @param v_algo_standby_u8 : The value of algorithm standby duration + * @param v_algo_id_u8 : The value of algorithm id + * @param v_host_interface_id_u8 : The value of host interface id + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_host_status( +u8 *v_algo_standby_u8, u8 *v_algo_id_u8, +u8 *v_host_interface_id_u8); +/*! + * @brief API used to get the interrupt status from the register 0x36 + * bit 0 to 7 + * + * + * @param v_host_int_u8 : + * The value of host interrupt status + * @param v_wakeup_water_mark_u8 : + * The value of wakeup watermark status + * @param v_wakeup_latency_u8 : + * The value of wakeup latency status + * @param v_wakeup_immediate_u8 : + * The value of wakeup immediate status + * @param v_non_wakeup_water_mark_u8 : + * The value of non wakeup watermark status + * @param v_non_wakeup_latency_u8 : + * The value of non wakeup latency status + * @param v_non_wakeup_immediate_u8 : + * The value of non wakeup immediate + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_interrupt_status( +u8 *v_host_int_u8, +u8 *v_wakeup_water_mark_u8, u8 *v_wakeup_latency_u8, +u8 *v_wakeup_immediate_u8, u8 *v_non_wakeup_water_mark_u8, +u8 *v_non_wakeup_latency_u8, u8 *v_non_wakeup_immediate_u8); +/*! + * @brief API used to get the chip status from the register 0x37 + * bit 0 to 7 + * + * + * + * @param v_eeprom_detected_u8 : The value of eeprom + * detected status + * @param v_ee_upload_done_u8 : The value of ee_upload + * done status + * @param v_ee_upload_error_u8 : The value of ee_upload + * done error + * @param v_firmware_idle_u8 : The value of firmware error status + * @param v_no_eeprom_u8 : The value of no eeprom status + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_chip_status( +u8 *v_eeprom_detected_u8, +u8 *v_ee_upload_done_u8, u8 *v_ee_upload_error_u8, +u8 *v_firmware_idle_u8, u8 *v_no_eeprom_u8); +/*! + * @brief API used to get the bytes remaining from the register 0x38 + * and 0x39 bit 0 to 7 + * + * + * @param v_bytes_remaining_u16 : The value of bytes remaining + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * @note This indicates how many bytes are available in the FIFO buffer + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_read_bytes_remaining( +u16 *v_bytes_remaining_u16); +/*! + * @brief API used to get the parameter + * acknowledgement from the register 0x3A + * bit 0 to 7 + * + * + * @param v_parameter_acknowledge_u8: + * The value of parameter acknowledgement + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * @note + * + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_parameter_acknowledge( +u8 *v_parameter_acknowledge_u8); +/*! + * @brief API used to get the parameter + * page select from the register 0x54 + * bit 0 to 7 + * + * + * @param v_page_select_u8 : The value of parameter page selection + * page information | value + * ------------------------|---------- + * BHY_PAGE_SELECT_PARAMETER_PAGE | 0 + * BHY_PAGE_SELECT_PARAMETER_SIZE | 1 + * + * @param v_parameter_page_u8 : The value of page selection + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_parameter_page_select( +u8 v_page_select_u8, u8 *v_parameter_page_u8); +/*! + * @brief API used to set the parameter + * page select from the register 0x54 + * bit 0 to 7 + * + * + * @param v_page_select_u8 : The value of parameter page selection + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_parameter_page_select( +u8 v_page_select_u8); +/*! + * @brief API used to get the host interface control + * from the register 0x55 + * bit 0 to 7 + * + * + * + * @param v_algo_standby_req_u8 : The value of algorithm standby + * request + * @param v_abort_transfer_u8 : The value of abort transfer + * @param v_update_transfer_cnt_u8 : The value of update + * transfer count + * @param v_wakeup_fifo_intr_disable_u8 : + * The value of wakeup fifo host + * interrupt disable + * @param v_ned_coordinates_u8 : The value of NED coordinates + * @param v_ap_suspend_u8 : The value of AP suspended + * @param v_sensor_selftest_u8 : The value of sensor self test + * @param v_non_wakeup_fifo_intr_disable_u8: + * The value of non wakeup fifo host + * interrupt disable + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_host_interface_control( +u8 *v_algo_standby_req_u8, +u8 *v_abort_transfer_u8, u8 *v_update_transfer_cnt_u8, +u8 *v_wakeup_fifo_intr_disable_u8, u8 *v_ned_coordinates_u8, +u8 *v_ap_suspend_u8, u8 *v_sensor_selftest_u8, +u8 *v_non_wakeup_fifo_intr_disable_u8); +/*! + * @brief API used to set the host interface control + * from the register 0x55 + * bit 0 to 7 + * + * + * @param v_host_interface_select_u8 : The value of host interface selection + * host interface | value + * -----------------------------------|---------- + * BHY_HOST_ALGO_STANDBY_REQUEST | 0 + * BHY_HOST_ABORT_TRANSFER | 1 + * BHY_HOST_UPDATE_TRANSFER_COUNT | 2 + * BHY_HOST_WAKEUP_FIFO_DISABLE | 3 + * BHY_HOST_NED_COORDINATE | 4 + * BHY_HOST_AP_SUSPEND | 5 + * BHY_HOST_SELFTEST | 6 + * BHY_HOST_NON_WAKEUP_FIFO_DISABLE | 7 + * + * @param v_host_interface_status_u8 : The value of host interface + * Data | status + * -----------------| ----------- + * 0 | DISABLE + * 1 | ENABLE + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_host_interface_control( +u8 v_host_interface_select_u8, u8 v_host_interface_status_u8); +/*! + * @brief API used to get the parameter + * request from the register 0x64 + * bit 0 to 7 + * + * + * @param v_parameter_request_u8 : The value of parameter request + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_parameter_request( +u8 *v_parameter_request_u8); +/*! + * @brief API used to get the parameter + * request from the register 0x64 + * bit 0 to 7 + * + * + * @param v_parameter_request_u8 : The value of parameter request + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_parameter_request( +u8 v_parameter_request_u8); +/*! + * @brief API used to get the host IRQ time stamp + * request from the register 0x6C to 0x6F + * bit 0 to 7 + * + * + * @param v_host_irq_timestamp_u32 : The value of host irq time stamp + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_host_irq_timestamp( +u32 *v_host_irq_timestamp_u32); +/*! + * @brief API used to get the ROM version + * request from the register 0x70 to 0x71 + * bit 0 to 7 + * + * + * @param v_rom_version_u16 : The value ROM version + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_rom_version( +u16 *v_rom_version_u16); +/*! + * @brief API used to get the RAM version + * request from the register 0x72 to 0x73 + * bit 0 to 7 + * + * + * @param v_ram_version_u16 : The value RAM version + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_ram_version( +u16 *v_ram_version_u16); +/*! + * @brief API used to get the product id + * request from the register 0x90 + * bit 0 to 7 + * + * + * @param v_product_id_u8 : The value of product id + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_product_id(u8 *v_product_id_u8); +/*! + * @brief API used to get the revision id + * request from the register 0x91 + * bit 0 to 7 + * + * + * @param v_revision_id_u8 : The value of revision id + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_revision_id(u8 *v_revision_id_u8); +/*! + * @brief API used to get the CRC host + * request from the register 0x91 + * bit 0 to 7 + * + * + * @param v_crc_host_u32 : The value of CRC host + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_crc_host(u32 *v_crc_host_u32); +/*! + * @brief API used to set the reset + * request from the register 0x9B + * bit 0 to 7 + * + * + * @param v_reset_request_u8 : The value of parameter request + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_reset_request(u8 v_reset_request_u8); +/*! + * @brief API used to get the meta event control from + * system page-1 parameter 1 + * + * @param v_meta_event_u8 : The value of meta event selection + * meta event | value + * --------------------------|--------------- + * BHY_META_EVENT_1 | 1 + * BHY_META_EVENT_2 | 2 + * BHY_META_EVENT_3 | 3 + * BHY_META_EVENT_4 | 4 + * BHY_META_EVENT_5 | 5 + * BHY_META_EVENT_6 | 6 + * BHY_META_EVENT_7 | 7 + * BHY_META_EVENT_8 | 8 + * BHY_META_EVENT_9 | 9 + * BHY_META_EVENT_10 | 10 + * BHY_META_EVENT_11 | 11 + * BHY_META_EVENT_12 | 12 + * BHY_META_EVENT_13 | 13 + * BHY_META_EVENT_14 | 14 + * BHY_META_EVENT_15 | 15 + * BHY_META_EVENT_16 | 16 + * BHY_META_EVENT_17 | 17 + * BHY_META_EVENT_18 | 18 + * BHY_META_EVENT_19 | 19 + * BHY_META_EVENT_20 | 20 + * BHY_META_EVENT_21 | 21 + * BHY_META_EVENT_22 | 22 + * BHY_META_EVENT_23 | 23 + * BHY_META_EVENT_24 | 24 + * BHY_META_EVENT_25 | 25 + * BHY_META_EVENT_26 | 26 + * BHY_META_EVENT_27 | 27 + * BHY_META_EVENT_28 | 28 + * BHY_META_EVENT_29 | 29 + * BHY_META_EVENT_30 | 30 + * BHY_META_EVENT_31 | 31 + * BHY_META_EVENT_32 | 32 + * + * @param meta_intr : + * The value of meta event interrupt selection + * + * @param meta_event : + * The value of meta event event selection + * + * @param v_event_type_u8 : The value of + * interrupt or event selection + * value | Event + * -------------------------|---------------- + * BHY_META_EVENT_INTR_ENABLE | 0 + * BHY_META_EVENT_ENABLE | 1 + * + * @param v_meta_parameter_request_u8: The value of parameter request + * for wakeup or non wakeup fifo + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_meta_event( +u8 v_meta_event_u8, +u8 v_input_data_u8, u8 v_event_type_u8, +u8 v_meta_parameter_request_u8); +/*! + * @brief API used to get the meta event control from + * system page-1 parameter 1 + * + * @param v_meta_event_u8 : The value of meta event selection + * meta event | value + * --------------------------|--------------- + * BHY_META_EVENT_1 | 1 + * BHY_META_EVENT_2 | 2 + * BHY_META_EVENT_3 | 3 + * BHY_META_EVENT_4 | 4 + * BHY_META_EVENT_5 | 5 + * BHY_META_EVENT_6 | 6 + * BHY_META_EVENT_7 | 7 + * BHY_META_EVENT_8 | 8 + * BHY_META_EVENT_9 | 9 + * BHY_META_EVENT_10 | 10 + * BHY_META_EVENT_11 | 11 + * BHY_META_EVENT_12 | 12 + * BHY_META_EVENT_13 | 13 + * BHY_META_EVENT_14 | 14 + * BHY_META_EVENT_15 | 15 + * BHY_META_EVENT_16 | 16 + * BHY_META_EVENT_17 | 17 + * BHY_META_EVENT_18 | 18 + * BHY_META_EVENT_19 | 19 + * BHY_META_EVENT_20 | 20 + * BHY_META_EVENT_21 | 21 + * BHY_META_EVENT_22 | 22 + * BHY_META_EVENT_23 | 23 + * BHY_META_EVENT_24 | 24 + * BHY_META_EVENT_25 | 25 + * BHY_META_EVENT_26 | 26 + * BHY_META_EVENT_27 | 27 + * BHY_META_EVENT_28 | 28 + * BHY_META_EVENT_29 | 29 + * BHY_META_EVENT_30 | 30 + * BHY_META_EVENT_31 | 31 + * BHY_META_EVENT_32 | 32 + * + * @param meta_intr : + * The value of meta event interrupt selection + * + * @param meta_event : + * The value of meta event event selection + * + * @param v_event_type_u8 : The value of + * interrupt or event selection + * value | Event + * -------------------------|---------------- + * BHY_META_EVENT_INTR_ENABLE | 0 + * BHY_META_EVENT_ENABLE | 1 + * + * @param v_meta_parameter_request_u8: The value of parameter request + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_meta_event( +u8 v_meta_event_u8, u8 v_event_type_u8, +u8* meta_event_intr, +u8* meta_event_event, +u8 v_meta_parameter_request_u8); +/*! + * @brief API used to get the fifo water mark from + * system page-1 parameter 2 + * + * + * @param v_parameter_u8 : + * The value of fifo water mark wakeup or non-wakeup selection + * water mark | value + * --------------------------|--------------- + * FIFO_WM_WAKEUP | 0 + * FIFO_WM_NON_WAKEUP | 1 + * + * @param v_fifo_water_mark_u16: The value of fifo water mark + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_fifo_water_mark( +u8 v_parameter_u8, u16 *v_fifo_water_mark_u16); +/*! + * @brief API used to set the fifo water mark from + * system page-1 parameter 2 + * + * + * @param v_parameter_u8 : + * The value of fifo water mark wakeup or non-wakeup selection + * water mark | value + * --------------------------|--------------- + * FIFO_WM_WAKEUP | 0 + * FIFO_WM_NON_WAKEUP | 1 + * + * @param v_fifo_water_mark_u16: The value of fifo water mark + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_fifo_water_mark(u8 v_parameter_u8, +u16 v_fifo_water_mark_u16); +/*! + * @brief API used to get the fifo size from + * system page-1 parameter 2 + * @note wakeup - bytes from 2 and 3 + * @note non wakeup - bytes from 6 and 7 + * + * + * @param v_fifo_size_select_u8 : + * The value of fifo size mark wakeup or non-wakeup selection + * water mark | value + * --------------------------|--------------- + * BHY_FIFO_SIZE_WAKEUP | 0 + * BHY_FIFO_SIZE_NON_WAKEUP | 1 + * + * @param v_fifo_size_u16 : The value of fifo size + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_fifo_size( +u8 v_fifo_size_select_u8, u16 *v_fifo_size_u16); + +/*! + * @brief API used to get the sensor status bank from + * system page-1 parameter 3 to 6 + * @note Sensor status bank 0 : parameter 3 contains 1 to 16 sensor type + * @note Sensor status bank 1 : parameter 4 contains 17 to 32 sensor type + * @note Sensor status bank 2 : parameter 5 contains 33 to 48 sensor type + * @note Sensor status bank 3 : parameter 6 contains 49 to 64 sensor type + * + * + * @param v_sensor_type_u8 : + * The value of sensor status bank sensor type selection + * v_sensor_type_u8 | value + * -----------------------------------|--------------- + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_1 | 0 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_2 | 1 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_3 | 3 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_4 | 4 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_5 | 5 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_6 | 6 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_7 | 7 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_8 | 8 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_9 | 9 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_10 | 10 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_11 | 11 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_12 | 12 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_13 | 13 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_14 | 14 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_15 | 15 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_16 | 16 + * + * + * @param v_sensor_status_parameter_u8 : + * The value of sensor status bank parameter selection + * parameter | value + * -------------------------------|----------------- + * BHY_PARAMETER_REQUEST_READ_PARAMETER_3 | 0x03 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_4 | 0x04 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_5 | 0x05 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_6 | 0x06 + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_sensor_status_bank( +u8 v_sensor_status_parameter_u8, u8 v_sensor_type_u8); +/*! + * @brief API used to get the host IRQ time + * stamp and current time stamp from + * system page-1 parameter 30 + * Host IRQ time stamp bytes 0 to 3 + * Current time stamp bytes 4 to 7 + * + * + * @param v_time_stamp_selection_u8 : + * The value of Host IRQ or current time stamp selection + * time stamp | value + * --------------------------|--------------- + * BHY_HOST_IRQ_TIMESTAMP | 0 + * BHY_CURRENT_TIME_STAMP | 1 + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * @param v_time_stamp_u32 : + * The value of Host IRQ or current time stamp + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_time_stamp( +u8 v_time_stamp_selection_u8, u32 *v_time_stamp_u32); +/*! + * @brief API used to get the physical sensor status + * system page-1 parameter 31 + * @note Accel sample rate byte 0 and 1 + * @note Accel dynamic range byte 2 and 3 + * @note Accel flags byte 4 + * @note Gyro sample rate byte 5 and 6 + * @note Gyro dynamic range byte 7 and 8 + * @note Gyro flags byte 9 + * @note Mag sample rate byte 10 and 11 + * @note Mag dynamic range byte 12 and 13 + * @note Mag flags byte 14 + * + * @param accel_status : contains the accel physical status + * @param gyro_status : contains the gyro physical status + * @param mag_status : contains the mag physical status + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_physical_sensor_status( +struct accel_physical_status_t *accel_status, +struct gyro_physical_status_t *gyro_status, +struct mag_physical_status_t *mag_status); +/*! + * @brief API used to get the non wakeup sensor information, + * Sensor page-3 parameter 1 to 31 + * + * @param v_parameter_request_u8 : + * Value desired parameter to read non wakeup sensor information + * param_request | value + * -----------------------------------|------------ + * BHY_PARAMETER_REQUEST_READ_PARAMETER_1 | 0x01 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_2 | 0x02 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_3 | 0x03 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_4 | 0x04 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_5 | 0x05 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_6 | 0x06 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_7 | 0x87 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_8 | 0x88 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_9 | 0x89 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_10 | 0x8A + * BHY_PARAMETER_REQUEST_READ_PARAMETER_11 | 0x8B + * BHY_PARAMETER_REQUEST_READ_PARAMETER_12 | 0x8C + * BHY_PARAMETER_REQUEST_READ_PARAMETER_13 | 0x8D + * BHY_PARAMETER_REQUEST_READ_PARAMETER_14 | 0x8E + * BHY_PARAMETER_REQUEST_READ_PARAMETER_15 | 0x8F + * BHY_PARAMETER_REQUEST_READ_PARAMETER_16 | 0x90 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_17 | 0x91 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_18 | 0x92 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_19 | 0x93 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_20 | 0x94 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_21 | 0x95 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_22 | 0x96 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_23 | 0x97 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_24 | 0x98 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_25 | 0x99 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_31 | 0x9F + * + * @param sensor_information : + * holds the value of non wakeup sensor information + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_non_wakeup_sensor_information( +u8 v_parameter_request_u8, +struct sensor_information_non_wakeup_t *sensor_information); +/*! + * @brief API used to get the wakeup sensor information, + * Sensor page-3 parameter 32 to 63 + * + * @param v_parameter_request_u8 : + * Value desired parameter to read non wakeup sensor information + * param_request | value | Virtual sensor + * ----------------------------------|-------|---------------- + * BHY_PARAMETER_REQUEST_READ_PARAMETER_33 | 0xA1 | Accelerometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_34 | 0xA2 | Magnetometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_35 | 0xA3 | Orientation + * BHY_PARAMETER_REQUEST_READ_PARAMETER_36 | 0xA4 | Gyroscope + * BHY_PARAMETER_REQUEST_READ_PARAMETER_37 | 0xA5 | Light + * BHY_PARAMETER_REQUEST_READ_PARAMETER_38 | 0xA6 | Barometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_39 | 0xA7 | Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_40 | 0xA8 | Proximity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_41 | 0xA9 | Gravity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_42 | 0xAA | Liner accel + * BHY_PARAMETER_REQUEST_READ_PARAMETER_43 | 0xAB | Rotation vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_44 | 0xAC | Humidity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_45 | 0xAD | Ambient Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_46 | 0xAE | Uncalibrated Mag + * BHY_PARAMETER_REQUEST_READ_PARAMETER_47 | 0xAF | Game rotation Vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_48 | 0xB0 | Uncalibrated Gyro + * BHY_PARAMETER_REQUEST_READ_PARAMETER_49 | 0xB1 | Signification Motion + * BHY_PARAMETER_REQUEST_READ_PARAMETER_50 | 0xB2 | Step detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_51 | 0xB3 | Step Counter + * BHY_PARAMETER_REQUEST_READ_PARAMETER_52 | 0xB4 | Geomagnetic rotation + * BHY_PARAMETER_REQUEST_READ_PARAMETER_53 | 0xB5 | Heart Rate + * BHY_PARAMETER_REQUEST_READ_PARAMETER_54 | 0xB6 | Tilt Detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_55 | 0xB7 | Wakeup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_56 | 0xB8 | Glance Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_57 | 0xB9 | Pickup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_63 | 0xBF | Activity + * + * @param sensor_information : + * holds the value of non wakeup sensor information + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_wakeup_sensor_information( +u8 v_parameter_request_u8, +struct sensor_information_wakeup_t *sensor_information); +/*! + * @brief API used to set the sensor non wakeup configuration + * Sensor page-3 parameter 65 to 89 + * + * @param sensor_configuration : contains the non wakeup sensor configuration + * + * @param v_parameter_request_u8: value of selected parameter request + * param_request | value | Virtual sensor + * ----------------------------------|-------|---------------- + * BHY_PARAMETER_REQUEST_READ_PARAMETER_65 | 0xC1 | Accelerometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_66 | 0xC2 | Magnetometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_67 | 0xC3 | Orientation + * BHY_PARAMETER_REQUEST_READ_PARAMETER_68 | 0xC4 | Gyroscope + * BHY_PARAMETER_REQUEST_READ_PARAMETER_69 | 0xC5 | Light + * BHY_PARAMETER_REQUEST_READ_PARAMETER_70 | 0xC6 | Barometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_71 | 0xC7 | Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_72 | 0xC8 | Proximity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_73 | 0xC9 | Gravity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_74 | 0xCA | Liner accel + * BHY_PARAMETER_REQUEST_READ_PARAMETER_75 | 0xCB | Rotation vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_76 | 0xCC | Humidity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_77 | 0xCD | Ambient Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_78 | 0xCE | Uncalibrated Mag + * BHY_PARAMETER_REQUEST_READ_PARAMETER_79 | 0xCF | Game rotation Vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_80 | 0xD0 | Uncalibrated Gyro + * BHY_PARAMETER_REQUEST_READ_PARAMETER_81 | 0xD1 | Signification Motion + * BHY_PARAMETER_REQUEST_READ_PARAMETER_82 | 0xD2 | Step detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_83 | 0xD3 | Step Counter + * BHY_PARAMETER_REQUEST_READ_PARAMETER_84 | 0xD4 | Geomagnetic + * BHY_PARAMETER_REQUEST_READ_PARAMETER_85 | 0xD5 | Heart Rate + * BHY_PARAMETER_REQUEST_READ_PARAMETER_86 | 0xD6 | Tilt Detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_87 | 0xD7 | Wakeup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_88 | 0xD8 | Glance Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_89 | 0xD9 | Pickup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_95 | 0xDF | Activity + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_non_wakeup_sensor_configuration( +struct sensor_configuration_non_wakeup_t *sensor_configuration, +u8 v_parameter_request_u8); +/*! + * @brief API used to get the sensor non wakeup configuration + * Sensor page-3 parameter 65 to 89 + * + * @param v_sample_rate_u16 : contains the non wakeup sample rate data + * @param v_max_report_latency_u16: + * contains the non wakeup max report latency + * @param v_change_sensitivity_u16: contains the non wakeup sensitivity + * @param v_dynamic_range_u16: contains the non wakeup dynamic range + * + * @param v_parameter_request_u8: value of selected parameter request + * param_request | value | Virtual sensor + * ----------------------------------|-------|---------------- + * BHY_PARAMETER_REQUEST_READ_PARAMETER_65 | 0xC1 | Accelerometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_66 | 0xC2 | Magnetometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_67 | 0xC3 | Orientation + * BHY_PARAMETER_REQUEST_READ_PARAMETER_68 | 0xC4 | Gyroscope + * BHY_PARAMETER_REQUEST_READ_PARAMETER_69 | 0xC5 | Light + * BHY_PARAMETER_REQUEST_READ_PARAMETER_70 | 0xC6 | Barometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_71 | 0xC7 | Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_72 | 0xC8 | Proximity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_73 | 0xC9 | Gravity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_74 | 0xCA | Liner accel + * BHY_PARAMETER_REQUEST_READ_PARAMETER_75 | 0xCB | Rotation vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_76 | 0xCC | Humidity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_77 | 0xCD | Ambient Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_78 | 0xCE | Uncalibrated Mag + * BHY_PARAMETER_REQUEST_READ_PARAMETER_79 | 0xCF | Game rotation Vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_80 | 0xD0 | Uncalibrated Gyro + * BHY_PARAMETER_REQUEST_READ_PARAMETER_81 | 0xD1 | Signification Motion + * BHY_PARAMETER_REQUEST_READ_PARAMETER_82 | 0xD2 | Step detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_83 | 0xD3 | Step Counter + * BHY_PARAMETER_REQUEST_READ_PARAMETER_84 | 0xD4 | Geomagnetic + * BHY_PARAMETER_REQUEST_READ_PARAMETER_85 | 0xD5 | Heart Rate + * BHY_PARAMETER_REQUEST_READ_PARAMETER_86 | 0xD6 | Tilt Detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_87 | 0xD7 | Wakeup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_88 | 0xD8 | Glance Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_89 | 0xD9 | Pickup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_95 | 0xDF | Activity + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_non_wakeup_sensor_configuration( +u8 v_parameter_request_u8, u16 *v_sample_rate_u16, +u16 *v_max_report_latency_u16, +u16 *v_change_sensitivity_u16, u16 *v_dynamic_range_u16); +/*! + * @brief API used to set the sensor wakeup configuration + * Sensor page-3 parameter 65 to 89 + * + * @param sensor_configuration : contains the wakeup sensor configuration + * + * @param v_parameter_request_u8: value of selected parameter request + * param_request | value | Virtual sensor + * -----------------------------------|-------|---------------- + * BHY_PARAMETER_REQUEST_READ_PARAMETER_97 | 0xE1 | Accelerometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_98 | 0xE2 | Magnetometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_99 | 0xE3 | Orientation + * BHY_PARAMETER_REQUEST_READ_PARAMETER_100 | 0xE4 | Gyroscope + * BHY_PARAMETER_REQUEST_READ_PARAMETER_101 | 0xE5 | Light + * BHY_PARAMETER_REQUEST_READ_PARAMETER_102 | 0xE6 | Barometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_103 | 0xE7 | Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_104 | 0xE8 | Proximity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_105 | 0xE9 | Gravity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_106 | 0xEA | Liner accel + * BHY_PARAMETER_REQUEST_READ_PARAMETER_107 | 0xEB | Rotation vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_108 | 0xEC | Humidity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_109 | 0xED | Ambient Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_110 | 0xEE | Uncalibrated Mag + * BHY_PARAMETER_REQUEST_READ_PARAMETER_111 | 0xEF | Game rotation Vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_112 | 0xF0 | Uncalibrated Gyro + * BHY_PARAMETER_REQUEST_READ_PARAMETER_113 | 0xF1 | Signification Motion + * BHY_PARAMETER_REQUEST_READ_PARAMETER_114 | 0xF2 | Step detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_115 | 0xF3 | Step Counter + * BHY_PARAMETER_REQUEST_READ_PARAMETER_116 | 0xF4 | Geomagnetic + * BHY_PARAMETER_REQUEST_READ_PARAMETER_117 | 0xF5 | Heart Rate + * BHY_PARAMETER_REQUEST_READ_PARAMETER_118 | 0xF6 | Tilt Detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_119 | 0xF7 | Wakeup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_120 | 0xF8 | Glance Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_121 | 0xF9 | Pickup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_127 | 0xFF | Activity + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_wakeup_sensor_configuration( +struct sensor_configuration_wakeup_t *sensor_configuration, +u8 v_parameter_request_u8); +/*! + * @brief API used to get the sensor wakeup configuration + * Sensor page-3 parameter 65 to 89 + * + * @param v_sample_rate_u16 : contains the wakeup sample rate data + * @param v_max_report_latency_u16: contains the wakeup max report latency + * @param v_change_sensitivity_u16: contains the wakeup sensitivity + * @param v_dynamic_range_u16: contains the wakeup dynamic range + * + * @param v_parameter_request_u8: value of selected parameter request + * param_request | value | Virtual sensor + * -----------------------------------|-------|---------------- + * BHY_PARAMETER_REQUEST_READ_PARAMETER_97 | 0xE1 | Accelerometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_98 | 0xE2 | Magnetometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_99 | 0xE3 | Orientation + * BHY_PARAMETER_REQUEST_READ_PARAMETER_100 | 0xE4 | Gyroscope + * BHY_PARAMETER_REQUEST_READ_PARAMETER_101 | 0xE5 | Light + * BHY_PARAMETER_REQUEST_READ_PARAMETER_102 | 0xE6 | Barometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_103 | 0xE7 | Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_104 | 0xE8 | Proximity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_105 | 0xE9 | Gravity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_106 | 0xEA | Liner accel + * BHY_PARAMETER_REQUEST_READ_PARAMETER_107 | 0xEB | Rotation vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_108 | 0xEC | Humidity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_109 | 0xED | Ambient Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_110 | 0xEE | Uncalibrated Mag + * BHY_PARAMETER_REQUEST_READ_PARAMETER_111 | 0xEF | Game rotation Vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_112 | 0xF0 | Uncalibrated Gyro + * BHY_PARAMETER_REQUEST_READ_PARAMETER_113 | 0xF1 | Signification Motion + * BHY_PARAMETER_REQUEST_READ_PARAMETER_114 | 0xF2 | Step detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_115 | 0xF3 | Step Counter + * BHY_PARAMETER_REQUEST_READ_PARAMETER_116 | 0xF4 | Geomagnetic + * BHY_PARAMETER_REQUEST_READ_PARAMETER_117 | 0xF5 | Heart Rate + * BHY_PARAMETER_REQUEST_READ_PARAMETER_118 | 0xF6 | Tilt Detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_119 | 0xF7 | Wakeup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_120 | 0xF8 | Glance Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_121 | 0xF9 | Pickup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_127 | 0xFF | Activity + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_wakeup_sensor_configuration( +u8 v_parameter_request_u8, u16 *v_sample_rate_u16, +u16 *v_max_report_latency_u16, +u16 *v_change_sensitivity_u16, u16 *v_dynamic_range_u16); +/*! + * @brief API used to set the soft pass through + * Sensor page-15 parameter 0 to 7 + * + * @param soft_pass_through : + * contains the value of soft pass through + * + * @param v_parameter_request_u8: value of selected parameter request + * parameter | value + * ------------------------------------|-------------------- + * BHY_PARAMETER_REQUEST_WRITE_PARAMETER_1 | 0x01 + * BHY_PARAMETER_REQUEST_WRITE_PARAMETER_2 | 0x02 + * BHY_PARAMETER_REQUEST_WRITE_PARAMETER_3 | 0x03 + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_soft_pass_through( +struct soft_pass_through_write_t *soft_pass_through, +u8 v_parameter_request_u8); +/*! + * @brief API used to get the soft pass through + * Sensor page-15 parameter 0 to 7 + * + * @param soft_pass_through : + * contains the value of soft pass through + * + * @param v_parameter_request_u8: value of selected parameter request + * parameter | value + * ------------------------------------|-------------------- + * BHY_PARAMETER_REQUEST_WRITE_PARAMETER_1 | 0x01 + * BHY_PARAMETER_REQUEST_WRITE_PARAMETER_2 | 0x02 + * BHY_PARAMETER_REQUEST_WRITE_PARAMETER_3 | 0x03 + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_soft_pass_through( +struct soft_pass_through_read_t *soft_pass_through, +u8 v_parameter_request_u8); +/*! + * @brief API used to get the data from the parameter + * I2C page register from 0x3B to 0x4A + * + * + * @param v_page_select_u8 : This input value for set the desired page + * @param v_parameter_request_u8 : + * This input value for set the desired parameter + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_read_parameter_bytes( +u8 v_page_select_u8, u8 v_parameter_request_u8); +/*! + * @brief API used to set the data from the parameter + * I2C page register from 0x5C to 0x63 + * + * + * @param v_page_select_u8 : This input value for set the desired page + * @param v_parameter_request_u8 : + * This input value for set the desired parameter + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_write_parameter_bytes( +u8 v_page_select_u8, u8 v_parameter_request_u8); +/*! + * @brief API used to flash the ram patch. There is two versions, + * one that accepts constant input data + * + * + * @param memory : The value of data from the + * ram patch. + * @param v_file_length_u32 : Length of the patch data + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_initialize( +u8 *memory, u32 v_file_length_u32); +BHY_RETURN_FUNCTION_TYPE bhy_initialize_from_rom( +const u8 *memory, const u32 v_file_length_u32); + + +#endif diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_support.h b/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_support.h new file mode 100644 index 0000000000000000000000000000000000000000..0953c63495109f5a29209033cb3c2ddcf2c060b6 --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_support.h @@ -0,0 +1,106 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + * + * + * @file bhy_support.h + * + * @date 12/19/2016 + * + * @brief driver on MCU for bhy + * + * + */ + +#ifndef BHY_SUPPORT_H_ +#define BHY_SUPPORT_H_ + +/********************************************************************************/ +/* HEADER FILES */ +/********************************************************************************/ +#include "bhy.h" +#include "twi.h" + +/********************************************************************************/ +/* MACROS */ +/********************************************************************************/ +#define RETRY_NUM 3 + +/*! determines the I2C slave address of BHy +* The default I2C address of the BHy device is 0101000b (0x28). */ +/* 0x28 CONFLICTS ON ATMEL DEV KITS WITH THE ONBOARD EDBG!!!! */ +#define BHY_I2C_SLAVE_ADDRESS BHY_I2C_ADDR1 +/*! the delay required to wait for BHY chip to reset */ +#define BHY_RESET_DELAY_MS UINT32_C(50) + +/*! these two macros are defined for i2c read/write limitation of host */ +/*! users must modify these two macros according to their own IIC hardware design */ +#define I2C_ONCE_WRITE_MAX_COUNT (8) +#define I2C_ONCE_READ_MAX_COUNT (8) + +/********************************************************************************/ +/* FUNCTION DECLARATIONS */ +/********************************************************************************/ +/*! +* @brief Initializes BHY smart sensor and its required connections +* +*/ +int8_t bhy_initialize_support(void); + +/*! +* @brief Initiates a delay of the length of the argument in milliseconds +* +* @param[in] msec Delay length in terms of milliseconds +* +*/ +void bhy_delay_msec(uint32_t msec); + +/*! + * @brief provides a print function to the bhy driver on DD2.0 platform + */ +void bhy_printf (const u8 * string); + +/*! + * @brief provides the mcu reference code version + */ +uint8_t *bhy_get_version(void); + + +#endif /* BHY_SUPPORT_H_ */ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_uc_driver.h b/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_uc_driver.h new file mode 100644 index 0000000000000000000000000000000000000000..65c392af26cb81cdb3031b2b8cb9a68c6166a045 --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_uc_driver.h @@ -0,0 +1,250 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + * + * + * @file bhy_uc_driver.h + * + * @date 12/19/2016 + * + * @brief headfile of driver on MCU for bhy + * + * + */ + +#ifndef BHY_UC_DRIVER_H_ +#define BHY_UC_DRIVER_H_ + +#include "BHy_support.h" +#include "bhy_uc_driver_types.h" + +/****************************************************************************/ +/* Driver Functions */ +/****************************************************************************/ + + +/* initializes the driver, the API and loads the ram patch into the sensor */ +BHY_RETURN_FUNCTION_TYPE bhy_driver_init + (const uint8_t *bhy_fw_data); + +/* this function configures meta event */ +BHY_RETURN_FUNCTION_TYPE bhy_meta_event_set_config( bhy_meta_event_type_t meta_event_id, + bhy_meta_event_fifo_type_t fifo_sel, + uint8_t enable_state, uint8_t int_enable_state); + +/* this function gets configuration from specific meta event */ +BHY_RETURN_FUNCTION_TYPE bhy_meta_event_get_config( bhy_meta_event_type_t meta_event_id, + bhy_meta_event_fifo_type_t fifo_sel, + uint8_t* p_enable_state, uint8_t* p_int_enable_state); + +/***************************************************************************** + * Function : bhy_mapping_matrix_set + * Description : Set mapping matrix to a corresponding physical sensor. + * Input : index: physical sensor index. + * PHYSICAL_SENSOR_INDEX_ACC = 0, + * PHYSICAL_SENSOR_INDEX_MAG = 1, + * PHYSICAL_SENSOR_INDEX_GYRO = 2, + * p_mapping_matrix: pointer to a "int8_t mapping_matrix[9]". + * Output : None + * Return : +*****************************************************************************/ +BHY_RETURN_FUNCTION_TYPE bhy_mapping_matrix_set(bhy_physical_sensor_index_type_t index , int8_t *p_mapping_matrix); + +/***************************************************************************** + * Function : bhy_mapping_matrix_get + * Description : Get mapping matrix from a corresponding physical sensor. + * Input : index: physical sensor index. + * PHYSICAL_SENSOR_INDEX_ACC = 0, + * PHYSICAL_SENSOR_INDEX_MAG = 1, + * PHYSICAL_SENSOR_INDEX_GYRO = 2, + * Output : p_mapping_matrix: pointer to a "int8_t mapping_matrix[9]". + * Return : +*****************************************************************************/ +BHY_RETURN_FUNCTION_TYPE bhy_mapping_matrix_get(bhy_physical_sensor_index_type_t index , int8_t *p_mapping_matrix); + +/* This function uses the soft pass-through feature to perform single multi-*/ +/* byte transfers in order to write the data. parameters: */ +/* addr i2c address of the slave device */ +/* reg register address to write to */ +/* data pointer to the data buffer with data to write to the */ +/* slave */ +/* length number of bytes to write to the slave */ +/* increment_reg if true, the function will automatically increment the */ +/* register between successive 4-bytes transfers */ +BHY_RETURN_FUNCTION_TYPE bhy_soft_passthru_write(uint8_t addr, uint8_t reg, uint8_t *data, uint8_t length, uint8_t increment_reg); + +/* This function uses the soft pass-through feature to perform single multi-*/ +/* byte transfers in order to read the data. parameters: */ +/* addr i2c address of the slave device */ +/* reg register address to read from */ +/* data pointer to the data buffer where to place the data read */ +/* from the slave */ +/* length number of bytes to fread from the slave */ +/* increment_reg if true, the function will automatically increment the */ +/* register between successive 4-bytes transfers */ +BHY_RETURN_FUNCTION_TYPE bhy_soft_passthru_read(uint8_t addr, uint8_t reg, uint8_t *data, uint8_t length, uint8_t increment_reg); + +/***************************************************************************** + * Function : bhy_gp_register_write + * Description : Write data to specific GP register. + * Input : bhy_gp_register_type_t: GP register address. + * : p_data: pointer to receive buffer. + * Output : + * Return : +*****************************************************************************/ +BHY_RETURN_FUNCTION_TYPE bhy_gp_register_write(bhy_gp_register_type_t gp_reg, uint8_t data); + +/***************************************************************************** + * Function : bhy_gp_register_read + * Description : Read data from specific GP register. + * Input : bhy_gp_register_type_t: GP register address. + * Output : p_data: pointer to receive buffer. + * Return : +*****************************************************************************/ +BHY_RETURN_FUNCTION_TYPE bhy_gp_register_read(bhy_gp_register_type_t gp_reg, uint8_t *p_data); + +/* this functions enables the selected virtual sensor */ +BHY_RETURN_FUNCTION_TYPE bhy_enable_virtual_sensor + (bhy_virtual_sensor_t sensor_id, uint8_t wakeup_status, uint16_t sample_rate, + uint16_t max_report_latency_ms, uint8_t flush_sensor, uint16_t change_sensitivity, + uint16_t dynamic_range); + +/* this functions disables the selected virtual sensor */ +BHY_RETURN_FUNCTION_TYPE bhy_disable_virtual_sensor + (bhy_virtual_sensor_t sensor_id, uint8_t wakeup_status); + +/* retrieves the fifo data. it needs a buffer of at least 51 bytes to work */ +/* it outputs the data into the variable buffer. the number of bytes read */ +/* into bytes_read and the bytes remaining in the fifo into bytes_left. */ +/* Setting BST_APPLICATION_BOARD to 1 will limit the size to 51 bytes all */ +/* the time. Arguments : */ +/* buffer Pointer to the buffer to use for the fifo readout. */ +/* buffer_size Size of the buffer to work with. Needs to be 51 bytes+ */ +/* bytes_read Pointer to output the number of bytes actually read from*/ +/* the fifo. */ +/* bytes_left Pointer to output the number of bytes still in the fifo.*/ +/* This function automatically keeps track of the current */ +/* fifo readout progress. +*/ +BHY_RETURN_FUNCTION_TYPE bhy_read_fifo(uint8_t * buffer, uint16_t buffer_size, + uint16_t * bytes_read, uint16_t * bytes_left); + +/* This function parses the next fifo packet and return it into a generic */ +/* data structure while telling you what the data type is so you can */ +/* retrieve it. Here are the parameters: */ +/* fifo_buffer pointer to the fifo byte that is the start of a */ +/* packet. This pointer will be automatically */ +/* incremented so you can call this function in a loop */ +/* fifo_buffer_length pointer to the amount of data left in the */ +/* fifo_buffer. This data will be automatically */ +/* decremented so you can call this function in a loop */ +/* fifo_data_output buffer in which to place the data */ +/* fifo_data_type data type output */ +BHY_RETURN_FUNCTION_TYPE bhy_parse_next_fifo_packet + (uint8_t **fifo_buffer, uint16_t *fifo_buffer_length, + bhy_data_generic_t * fifo_data_output, bhy_data_type_t * fifo_data_type); + +/* This function will detect the timestamp packet accordingly and update */ +/* either the MSW or the LSW of the system timestamp. Arguments : */ +/* timestamp_packet The timestamp packet processed by the parse_next_ */ +/* fifo_packet, properly typecasted */ +/* system_timestamp Pointer to a 32bit variable holding the system */ +/* timestamp in 1/32000th seconds. it will wrap around */ +/* every 36 hours. */ +BHY_RETURN_FUNCTION_TYPE bhy_update_system_timestamp(bhy_data_scalar_u16_t *timestamp_packet, + uint32_t * system_timestamp); + +/* This function writes arbitrary data to an arbitrary parameter page. To be*/ +/* used carefully since it can override system configurations. Refer to the */ +/* datasheet for free to use parameter pages. Here are the arguments: */ +/* page Page number. Valid range 1 to 15. */ +/* parameter Parameter number. Valid range 0 to 127. */ +/* data Pointer to the data source to write to. */ +/* length Number of bytes to write. Valid range 1 to 8. */ +BHY_RETURN_FUNCTION_TYPE bhy_write_parameter_page(uint8_t page, uint8_t parameter, + uint8_t *data, uint8_t length); + +/* This function reads arbitrary data to an arbitrary parameter page. To be*/ +/* used carefully since it can override system configurations. Refer to the */ +/* datasheet for free to use parameter pages. Here are the arguments: */ +/* page Page number. Valid range 1 to 15. */ +/* parameter Parameter number. Valid range 0 to 127. */ +/* data Pointer to the data source to write to. */ +/* length Number of bytes to read. Valid range 1 to 16. */ +BHY_RETURN_FUNCTION_TYPE bhy_read_parameter_page(uint8_t page, uint8_t parameter, + uint8_t *data, uint8_t length); + +/* This function write a new SIC matrix to the BHy. Arguments are: */ +/* sic_matrix pointer to array of 9 floats with SIC matrix */ +BHY_RETURN_FUNCTION_TYPE bhy_set_sic_matrix(float * sic_matrix); + +/* This function reads out the current SIC matrix from BHy. Arguments are: */ +/* sic_matrix pointer to array of 9 floats with SIC matrix */ +BHY_RETURN_FUNCTION_TYPE bhy_get_sic_matrix(float * sic_matrix); + +/* This function outputs the debug data to function pointer. You need to */ +/* provide a function that takes as argument a zero-terminated string and */ +/* prints it */ +void bhy_print_debug_packet(bhy_data_debug_t *packet, void (*debug_print_ptr)(const uint8_t *)); + +BHY_RETURN_FUNCTION_TYPE bhy_sync_cus_evt_size(void); + +int8_t bhy_get_cus_evt_size(bhy_virtual_sensor_t sensor_id); + + +#if BHY_CALLBACK_MODE +/* These functions will install the callback and return an error code if */ +/* there is already a callback installed */ +BHY_RETURN_FUNCTION_TYPE bhy_install_sensor_callback (bhy_virtual_sensor_t sensor_id, uint8_t wakeup_status, void (*sensor_callback)(bhy_data_generic_t *, bhy_virtual_sensor_t)); +BHY_RETURN_FUNCTION_TYPE bhy_install_timestamp_callback(uint8_t wakeup_status, void (*timestamp_callback)(bhy_data_scalar_u16_t *)); +BHY_RETURN_FUNCTION_TYPE bhy_install_meta_event_callback(bhy_meta_event_type_t meta_event_id, void (*meta_event_callback)(bhy_data_meta_event_t *, bhy_meta_event_type_t)); + + +/* These functions will uninstall the callback and return an error code if */ +/* there was no callback installed */ +BHY_RETURN_FUNCTION_TYPE bhy_uninstall_sensor_callback (bhy_virtual_sensor_t sensor_id, uint8_t wakeup_status); +BHY_RETURN_FUNCTION_TYPE bhy_uninstall_timestamp_callback (uint8_t wakeup_status ); +BHY_RETURN_FUNCTION_TYPE bhy_uninstall_meta_event_callback (bhy_meta_event_type_t meta_event_id); + +#endif + +#endif /* BHY_UC_DRIVER_H_ */ + +/** @}*/ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_uc_driver_config.h b/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_uc_driver_config.h new file mode 100644 index 0000000000000000000000000000000000000000..d2a6267db23277cb47852ae70c1d799bae2cb20b --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_uc_driver_config.h @@ -0,0 +1,70 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + * + * @file bhy_uc_driver_config.h + * + * @date 12/15/2016 + * + * @brief header file of bhy_uc_driver.c + * + */ + + + + +#ifndef BHY_UC_DRIVER_CONFIG_H_ +#define BHY_UC_DRIVER_CONFIG_H_ + +/****************************************************************************/ +/* Driver configuration */ +/****************************************************************************/ +#define BHY_MCU_REFERENCE_VERSION "1.1.1.0" + +/* Enabling BHY_DEBUG will allow you print all the sensor raw data */ +//#define BHY_DEBUG + +/* Enabling BHY_CALLBACK_MODE will allow you to install callback function */ +/* that will be called from the bhy_parse_next_fifo_packet function. is uses*/ +/* ~250 bytes of ROM and ~350 bytes of RAM */ +#define BHY_CALLBACK_MODE 1 + + +#endif /* BHY_UC_DRIVER_CONFIG_H_ */ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_uc_driver_constants.h b/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_uc_driver_constants.h new file mode 100644 index 0000000000000000000000000000000000000000..0e86b4d0a55973e90f22bb8776f7503a0a32a6f3 --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_uc_driver_constants.h @@ -0,0 +1,139 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + * + * @file bhy_uc_driver_constants.h + * + * @date 12/15/2016 + * + * @brief header file of bhy_uc_driver.c + * + */ + + +#ifndef BHY_UC_DRIVER_CONSTANTS_H_ +#define BHY_UC_DRIVER_CONSTANTS_H_ + +#include "bhy_uc_driver_config.h" + +/****************************************************************************/ +/* Constants definitions */ +/****************************************************************************/ + +/* definition of all the known IDs. User can add their own IDs to the */ +/* bhy_parse_next_fifo_packet function. follow section 15 table 28 of the */ +/* BHI160 datasheet. */ +#define VS_ID_PADDING 0 +#define VS_ID_ACCELEROMETER 1 +#define VS_ID_MAGNETOMETER 2 +#define VS_ID_ORIENTATION 3 +#define VS_ID_GYROSCOPE 4 +#define VS_ID_LIGHT 5 +#define VS_ID_BAROMETER 6 +#define VS_ID_TEMPERATURE 7 +#define VS_ID_PROXIMITY 8 +#define VS_ID_GRAVITY 9 +#define VS_ID_LINEAR_ACCELERATION 10 +#define VS_ID_ROTATION_VECTOR 11 +#define VS_ID_HUMIDITY 12 +#define VS_ID_AMBIENT_TEMPERATURE 13 +#define VS_ID_UNCALIBRATED_MAGNETOMETER 14 +#define VS_ID_GAME_ROTATION_VECTOR 15 +#define VS_ID_UNCALIBRATED_GYROSCOPE 16 +#define VS_ID_SIGNIFICANT_MOTION 17 +#define VS_ID_STEP_DETECTOR 18 +#define VS_ID_STEP_COUNTER 19 +#define VS_ID_GEOMAGNETIC_ROTATION_VECTOR 20 +#define VS_ID_HEART_RATE 21 +#define VS_ID_TILT_DETECTOR 22 +#define VS_ID_WAKE_GESTURE 23 +#define VS_ID_GLANCE_GESTURE 24 +#define VS_ID_PICKUP_GESTURE 25 +#define VS_ID_CUS1 26 +#define VS_ID_CUS2 27 +#define VS_ID_CUS3 28 +#define VS_ID_CUS4 29 +#define VS_ID_CUS5 30 +#define VS_ID_ACTIVITY 31 + +#define VS_ID_ACCELEROMETER_WAKEUP (VS_ID_ACCELEROMETER+32) +#define VS_ID_MAGNETOMETER_WAKEUP (VS_ID_MAGNETOMETER+32) +#define VS_ID_ORIENTATION_WAKEUP (VS_ID_ORIENTATION+32) +#define VS_ID_GYROSCOPE_WAKEUP (VS_ID_GYROSCOPE+32) +#define VS_ID_LIGHT_WAKEUP (VS_ID_LIGHT+32) +#define VS_ID_BAROMETER_WAKEUP (VS_ID_BAROMETER+32) +#define VS_ID_TEMPERATURE_WAKEUP (VS_ID_TEMPERATURE+32) +#define VS_ID_PROXIMITY_WAKEUP (VS_ID_PROXIMITY+32) +#define VS_ID_GRAVITY_WAKEUP (VS_ID_GRAVITY+32) +#define VS_ID_LINEAR_ACCELERATION_WAKEUP (VS_ID_LINEAR_ACCELERATION+32) +#define VS_ID_ROTATION_VECTOR_WAKEUP (VS_ID_ROTATION_VECTOR+32) +#define VS_ID_HUMIDITY_WAKEUP (VS_ID_HUMIDITY+32) +#define VS_ID_AMBIENT_TEMPERATURE_WAKEUP (VS_ID_AMBIENT_TEMPERATURE+32) +#define VS_ID_UNCALIBRATED_MAGNETOMETER_WAKEUP (VS_ID_UNCALIBRATED_MAGNETOMETER+32) +#define VS_ID_GAME_ROTATION_VECTOR_WAKEUP (VS_ID_GAME_ROTATION_VECTOR+32) +#define VS_ID_UNCALIBRATED_GYROSCOPE_WAKEUP (VS_ID_UNCALIBRATED_GYROSCOPE+32) +#define VS_ID_SIGNIFICANT_MOTION_WAKEUP (VS_ID_SIGNIFICANT_MOTION+32) +#define VS_ID_STEP_DETECTOR_WAKEUP (VS_ID_STEP_DETECTOR+32) +#define VS_ID_STEP_COUNTER_WAKEUP (VS_ID_STEP_COUNTER+32) +#define VS_ID_GEOMAGNETIC_ROTATION_VECTOR_WAKEUP (VS_ID_GEOMAGNETIC_ROTATION_VECTOR+32) +#define VS_ID_HEART_RATE_WAKEUP (VS_ID_HEART_RATE+32) +#define VS_ID_TILT_DETECTOR_WAKEUP (VS_ID_TILT_DETECTOR+32) +#define VS_ID_WAKE_GESTURE_WAKEUP (VS_ID_WAKE_GESTURE+32) +#define VS_ID_GLANCE_GESTURE_WAKEUP (VS_ID_GLANCE_GESTURE+32) +#define VS_ID_PICKUP_GESTURE_WAKEUP (VS_ID_PICKUP_GESTURE+32) +#define VS_ID_CUS1_WAKEUP (VS_ID_CUS1+32) +#define VS_ID_CUS2_WAKEUP (VS_ID_CUS2+32) +#define VS_ID_CUS3_WAKEUP (VS_ID_CUS3+32) +#define VS_ID_CUS4_WAKEUP (VS_ID_CUS4+32) +#define VS_ID_CUS5_WAKEUP (VS_ID_CUS5+32) +#define VS_ID_ACTIVITY_WAKEUP (VS_ID_ACTIVITY+32) + +#define VS_ID_DEBUG 245 +#define VS_ID_TIMESTAMP_LSW_WAKEUP 246 +#define VS_ID_TIMESTAMP_MSW_WAKEUP 247 +#define VS_ID_META_EVENT_WAKEUP 248 +#define VS_ID_BSX_C 249 +#define VS_ID_BSX_B 250 +#define VS_ID_BSX_A 251 +#define VS_ID_TIMESTAMP_LSW 252 +#define VS_ID_TIMESTAMP_MSW 253 +#define VS_ID_META_EVENT 254 + +#endif /* BHY_UC_DRIVER_CONSTANTS_H_ */ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_uc_driver_types.h b/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_uc_driver_types.h new file mode 100644 index 0000000000000000000000000000000000000000..00e2acf2e7fdb72cec02a4b3eb7cb072eaa725b3 --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/driver/inc/bhy_uc_driver_types.h @@ -0,0 +1,318 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + * + * @file bhy_uc_driver_types.h + * + * @date 12/15/2016 + * + * @brief header file of bhy_uc_driver.c + * + */ + + +#ifndef BHY_UC_DRIVER_TYPES_H_ +#define BHY_UC_DRIVER_TYPES_H_ + +#include "bhy_uc_driver_constants.h" + +/****************************************************************************/ +/* MACRO */ +/****************************************************************************/ +/* system page */ +#define BHY_PAGE_SYSTEM 1 +#define BHY_PARAM_SYSTEM_META_EVENT_CTRL 1 +#define BHY_PARAM_SYSTEM_FIFO_CTRL 2 +#define BHY_PARAM_SYSTEM_STAUS_BANK_0 3 +#define BHY_PARAM_SYSTEM_STAUS_BANK_1 4 +#define BHY_PARAM_SYSTEM_STAUS_BANK_2 5 +#define BHY_PARAM_SYSTEM_STAUS_BANK_3 6 +#define BHY_PARAM_SYSTEM_CUSTOM_VERSION 24 +#define BHY_PARAM_SYSTEM_WAKE_UP_META_EVENT_CTRL 29 +#define BHY_PARAM_SYSTEM_HOST_IRQ_TIMESTAMP 30 +#define BHY_PARAM_SYSTEM_PHYSICAL_SENSOR_STATUS 31 +#define BHY_PARAM_SYSTEM_PHYSICAL_SENSOR_PRESENT 32 +#define BHY_PARAM_SYSTEM_PHYSICAL_SENSOR_DETAIL_0 32 +#define BHY_PARAM_SYSTEM_PHYSICAL_SENSOR_DETAIL_ACC 33 + +#define VS_NON_WAKEUP 0 +#define VS_WAKEUP 32 +#define VS_FLUSH_NONE 0x00 +#define VS_FLUSH_ALL 0xFF +#define VS_FLUSH_SINGLE 0x01 + +#define META_EVENT_1_INT_ENABLE_BIT (1<<0) +#define META_EVENT_1_ENABLE_BIT (1<<1) + +/****************************************************************************/ +/* ENUM */ +/****************************************************************************/ +/* follows section 9.4 table 14 of the BHI160 datasheet */ +typedef enum { + VS_TYPE_ACCELEROMETER = VS_ID_ACCELEROMETER, + VS_TYPE_GEOMAGNETIC_FIELD = VS_ID_MAGNETOMETER, + VS_TYPE_ORIENTATION = VS_ID_ORIENTATION, + VS_TYPE_GYROSCOPE = VS_ID_GYROSCOPE, + VS_TYPE_LIGHT = VS_ID_LIGHT, + VS_TYPE_PRESSURE = VS_ID_BAROMETER, + VS_TYPE_TEMPERATURE = VS_ID_TEMPERATURE, + VS_TYPE_PROXIMITY = VS_ID_PROXIMITY, + VS_TYPE_GRAVITY = VS_ID_GRAVITY, + VS_TYPE_LINEAR_ACCELERATION = VS_ID_LINEAR_ACCELERATION, + VS_TYPE_ROTATION_VECTOR = VS_ID_ROTATION_VECTOR, + VS_TYPE_RELATIVE_HUMIDITY = VS_ID_HUMIDITY, + VS_TYPE_AMBIENT_TEMPERATURE = VS_ID_AMBIENT_TEMPERATURE, + VS_TYPE_MAGNETIC_FIELD_UNCALIBRATED = VS_ID_UNCALIBRATED_MAGNETOMETER, + VS_TYPE_GAME_ROTATION_VECTOR = VS_ID_GAME_ROTATION_VECTOR, + VS_TYPE_GYROSCOPE_UNCALIBRATED = VS_ID_UNCALIBRATED_GYROSCOPE, + VS_TYPE_SIGNIFICANT_MOTION = VS_ID_SIGNIFICANT_MOTION, + VS_TYPE_STEP_DETECTOR = VS_ID_STEP_DETECTOR, + VS_TYPE_STEP_COUNTER = VS_ID_STEP_COUNTER, + VS_TYPE_GEOMAGNETIC_ROTATION_VECTOR = VS_ID_GEOMAGNETIC_ROTATION_VECTOR, + VS_TYPE_HEART_RATE = VS_ID_HEART_RATE, + VS_TYPE_TILT = VS_ID_TILT_DETECTOR, + VS_TYPE_WAKEUP = VS_ID_WAKE_GESTURE, + VS_TYPE_GLANCE = VS_ID_GLANCE_GESTURE, + VS_TYPE_PICKUP = VS_ID_PICKUP_GESTURE, + VS_TYPE_CUS1 = VS_ID_CUS1, + VS_TYPE_CUS2 = VS_ID_CUS2, + VS_TYPE_CUS3 = VS_ID_CUS3, + VS_TYPE_CUS4 = VS_ID_CUS4, + VS_TYPE_CUS5 = VS_ID_CUS5, + VS_TYPE_ACTIVITY_RECOGNITION = VS_ID_ACTIVITY +} bhy_virtual_sensor_t; + +typedef enum { + BHY_META_EVENT_TYPE_NOT_USED = 0, + BHY_META_EVENT_TYPE_FLUSH_COMPLETE = 1, + BHY_META_EVENT_TYPE_SAMPLE_RATE_CHANGED = 2, + BHY_META_EVENT_TYPE_POWER_MODE_CHANGED = 3, + BHY_META_EVENT_TYPE_ERROR = 4, + BHY_META_EVENT_TYPE_ALGORITHM = 5, + /* IDs 6-10 are reserved */ + BHY_META_EVENT_TYPE_SENSOR_ERROR = 11, + BHY_META_EVENT_TYPE_FIFO_OVERFLOW = 12, + BHY_META_EVENT_TYPE_DYNAMIC_RANGE_CHANGED = 13, + BHY_META_EVENT_TYPE_FIFO_WATERMARK = 14, + BHY_META_EVENT_TYPE_SELF_TEST_RESULTS = 15, + BHY_META_EVENT_TYPE_INITIALIZED = 16, + +} bhy_meta_event_type_t; + +typedef enum { + /* group 1 only read for host -s */ + BHY_GP_REG_20 = 0x4B, + BHY_GP_REG_21 = 0x4C, + BHY_GP_REG_22 = 0x4D, + BHY_GP_REG_23 = 0x4E, + BHY_GP_REG_24 = 0x4F, + /* group 1 only read for host -e */ + /* group 2 read & write for host -s */ + BHY_GP_REG_31 = 0x56, + BHY_GP_REG_32 = 0x57, + BHY_GP_REG_33 = 0x58, + BHY_GP_REG_34 = 0x59, + BHY_GP_REG_35 = 0x5A, + BHY_GP_REG_36 = 0x5B, + /* group 2 read & write for host -e */ + /* group 3 read & write for host -s */ + BHY_GP_REG_46 = 0x65, + BHY_GP_REG_47 = 0x66, + BHY_GP_REG_48 = 0x67, + BHY_GP_REG_49 = 0x68, + BHY_GP_REG_50 = 0x69, + BHY_GP_REG_51 = 0x6A, + BHY_GP_REG_52 = 0x6B, + /* group 3 read & write for host -e */ +} bhy_gp_register_type_t; + +/* follows section 15 of the BHI160 datasheet the order of this enumeration */ +/* is important, do not change it */ +typedef enum { + BHY_DATA_TYPE_PADDING = 0, + BHY_DATA_TYPE_QUATERNION = 1, + BHY_DATA_TYPE_VECTOR = 2, + BHY_DATA_TYPE_SCALAR_U8 = 3, + BHY_DATA_TYPE_SCALAR_U16 = 4, + BHY_DATA_TYPE_SCALAR_S16 = 5, + BHY_DATA_TYPE_SCALAR_U24 = 6, + BHY_DATA_TYPE_SENSOR_EVENT = 7, + BHY_DATA_TYPE_UNCALIB_VECTOR = 8, + BHY_DATA_TYPE_META_EVENT = 9, + BHY_DATA_TYPE_BSX = 10, + BHY_DATA_TYPE_DEBUG = 11, + BHY_DATA_TYPE_CUS1 = 12, + BHY_DATA_TYPE_CUS2 = 13, + BHY_DATA_TYPE_CUS3 = 14, + BHY_DATA_TYPE_CUS4 = 15, + BHY_DATA_TYPE_CUS5 = 16, +} bhy_data_type_t; + +typedef enum { + META_EVENT_IN_NON_WAKEUP_FIFO = 1, + META_EVENT_IN_WAKEUP_FIFO = 29, +} bhy_meta_event_fifo_type_t; + +typedef enum +{ + PHYSICAL_SENSOR_INDEX_ACC = 0, + PHYSICAL_SENSOR_INDEX_MAG, + PHYSICAL_SENSOR_INDEX_GYRO, + PHYSICAL_SENSOR_COUNT +} bhy_physical_sensor_index_type_t; + +/****************************************************************************/ +/* STRUCTRE DEFINITION */ +/****************************************************************************/ + +/* definition of structures of all the data types */ +typedef struct { + uint8_t sensor_id; +} bhy_data_padding_t; + +typedef struct { + uint8_t sensor_id; + int16_t x; + int16_t y; + int16_t z; + int16_t w; + int16_t estimated_accuracy; +} bhy_data_quaternion_t; + +typedef struct { + uint8_t sensor_id; + int16_t x; + int16_t y; + int16_t z; + uint8_t status; +} bhy_data_vector_t; + +typedef struct { + uint8_t sensor_id; + uint8_t data; +} bhy_data_scalar_u8_t; + +typedef struct { + uint8_t sensor_id; + uint16_t data; +} bhy_data_scalar_u16_t; + +typedef struct { + uint8_t sensor_id; + int16_t data; +} bhy_data_scalar_s16_t; + +typedef struct { + uint8_t sensor_id; + uint32_t data; +} bhy_data_scalar_u24_t; + +typedef struct { + uint8_t sensor_id; +} bhy_data_sensor_event_t; + +typedef struct { + uint8_t sensor_id; + int16_t x; + int16_t y; + int16_t z; + int16_t x_bias; + int16_t y_bias; + int16_t z_bias; + uint8_t status; +} bhy_data_uncalib_vector_t; + +typedef struct { + uint8_t meta_event_id; + bhy_meta_event_type_t event_number; + uint8_t sensor_type; + uint8_t event_specific; +} bhy_data_meta_event_t; + +typedef struct { + uint8_t sensor_id; + int32_t x; + int32_t y; + int32_t z; + uint32_t timestamp; +} bhy_data_bsx_t; + +typedef struct { + uint8_t sensor_id; + uint8_t data[13]; +} bhy_data_debug_t; + +typedef struct { + uint8_t sensor_id; + int16_t deltaX; + int16_t deltaY; + int16_t deltaZ; + int16_t confidencelevel; + uint16_t direction; + uint16_t stepCount; +} bhy_data_pdr_t; + +typedef struct { + uint8_t sensor_id; + uint8_t data[16]; +} bhy_data_custom_t; + + +/* definition of a generic structure that can contain any data type it */ +/* occupies in RAM the size of the largest data structure, which is 18 bytes*/ +/* as of 08/04/2015 */ +typedef union { + bhy_data_padding_t data_padding; + bhy_data_quaternion_t data_quaternion; + bhy_data_vector_t data_vector; + bhy_data_scalar_u8_t data_scalar_u8; + bhy_data_scalar_u16_t data_scalar_u16; + bhy_data_scalar_s16_t data_scalar_s16; + bhy_data_scalar_u24_t data_scalar_u24; + bhy_data_sensor_event_t data_sensor_event; + bhy_data_uncalib_vector_t data_uncalib_vector; + bhy_data_meta_event_t data_meta_event; + bhy_data_bsx_t data_bsx; + bhy_data_debug_t data_debug; + bhy_data_custom_t data_custom; + bhy_data_pdr_t data_pdr; +} bhy_data_generic_t; + +#endif /* BHY_UC_DRIVER_TYPES_H_ */ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/driver/src/bhy.c b/lib/bosch/BHy1_driver_and_MCU_solution/driver/src/bhy.c new file mode 100644 index 0000000000000000000000000000000000000000..50d8f767deffb9f7d48cef08ad93d42c436137ae --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/driver/src/bhy.c @@ -0,0 +1,4309 @@ +/* +**************************************************************************** +* Copyright (C) 2015 - 2016 Bosch Sensortec GmbH +* +* File : bhy.c +* +* Date : 2016/01/22 +* +* Revision : 1.0.4 $ +* +* Usage: Sensor Driver for BHY sensor +* +**************************************************************************** +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* +* Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* +* Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* +* Neither the name of the copyright holder nor the names of the +* contributors may be used to endorse or promote products derived from +* this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER +* OR CONTRIBUTORS BE LIABLE FOR ANY +* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +* OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, +* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE +* +* The information provided is believed to be accurate and reliable. +* The copyright holder assumes no responsibility +* for the consequences of use +* of such information nor for any infringement of patents or +* other rights of third parties which may result from its use. +* No license is granted by implication or otherwise under any patent or +* patent rights of the copyright holder. +* +**************************************************************************/ +/*! file <BHY > + brief <Sensor driver for BHY> */ +#include "bhy.h" +/* static structure for bhy */ +static struct bhy_t *p_bhy; +/* contain the saved parameters data*/ +static struct parameter_read_buffer_t read_buffer; +/* contain the load parameters data*/ +static struct parameter_write_buffer_t write_buffer; +/* Assign the sensor status bank*/ +struct sensor_status_bank_t sensor_status_bank; + +/*! + * @brief + * This function is used for initialize + * bus read and bus write functions + * and device address + * product id is read in the register 0x90 bit from 0 to 7 + * + * @param bhy : structure pointer + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * @note + * While changing the parameter of the bhy_t + * consider the following point: + * Changing the reference value of the parameter + * will changes the local copy or local reference + * make sure your changes will not + * affect the reference value of the parameter + * (Better case don't change the reference value of the parameter) + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_init(struct bhy_t *bhy) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + /* assign bhy ptr */ + p_bhy = bhy; + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_PRODUCT_ID_ADDR, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + /* read product Id */ + p_bhy->product_id = v_data_u8; + return com_rslt; +} +/*! + * @brief + * This API write the data to + * the given register + * + * + * @param v_addr_u8 -> Address of the register + * @param v_data_u8 -> The data from the register + * @param v_len_u8 -> no of bytes to read + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + */ +BHY_RETURN_FUNCTION_TYPE bhy_write_reg(u8 v_addr_u8, +u8 *v_data_u8, u16 v_len_u16) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + /* check the p_bhy structure as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* write data from register*/ + com_rslt = + p_bhy->BHY_BUS_WRITE_FUNC(p_bhy->device_addr, + v_addr_u8, v_data_u8, v_len_u16); + } + return com_rslt; +} +/*! + * @brief + * This API reads the data from + * the given register + * + * + * @param v_addr_u8 -> Address of the register + * @param v_data_u8 -> The data from the register + * @param v_len_u8 -> no of bytes to read + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + */ +BHY_RETURN_FUNCTION_TYPE bhy_read_reg(u8 v_addr_u8, +u8 *v_data_u8, u16 v_len_u16) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + /* check the p_bhy structure as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* Read data from register*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + v_addr_u8, v_data_u8, v_len_u16); + } + return com_rslt; +} +/*! + * @brief API used to get the FIFO flush from the register 0x32 + * bit 0 to 7 + * + * + * @param v_fifo_flush_u8 : The value of fifo flush + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_fifo_flush(u8 *v_fifo_flush_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_FIFO_FLUSH__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + *v_fifo_flush_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_FIFO_FLUSH); + } + return com_rslt; +} +/*! + * @brief API used to set the FIFO flush from the register 0x32 + * bit 0 to 7 + * + * + * @param v_fifo_flush_u8 : The value of fifo flush + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_fifo_flush(u8 v_fifo_flush_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_FIFO_FLUSH__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + if (BHY_SUCCESS == com_rslt) { + v_data_u8 = BHY_SET_BITSLICE(v_data_u8, + BHY_I2C_REG_FIFO_FLUSH, + v_fifo_flush_u8); + com_rslt += p_bhy->BHY_BUS_WRITE_FUNC + (p_bhy->device_addr, + BHY_I2C_REG_FIFO_FLUSH__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + } + } + return com_rslt; +} +/*! + * @brief API used to get the chip control from the register 0x34 + * bit 0 to 7 + * @note Chip control used to provide the control fundamental + * behaviour of the chip + * + * @param v_chipcontrol_u8 : The value of chip control + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_chip_control(u8 *v_chipcontrol_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + /* check the p_bhy structure as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* read the chip control status*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_CHIP_CONTROL__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + *v_chipcontrol_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_CHIP_CONTROL); + } + return com_rslt; +} +/*! + * @brief API used to set the chip control from the register 0x34 + * bit 0 to 7 + * @note Chip control used to provide the control fundamental + * behaviour of the chip + * + * @param v_chipcontrol_u8 : The value of chip control + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_chip_control(u8 v_chipcontrol_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + /* check the p_bhy structure as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_CHIP_CONTROL__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + if (BHY_SUCCESS == com_rslt) { + v_data_u8 = BHY_SET_BITSLICE(v_data_u8, + BHY_I2C_REG_CHIP_CONTROL, + v_chipcontrol_u8); + com_rslt += p_bhy->BHY_BUS_WRITE_FUNC + (p_bhy->device_addr, + BHY_I2C_REG_CHIP_CONTROL__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + } + } + return com_rslt; +} +/*! + * @brief API used to get the host status from the register 0x35 + * bit 0 to 7 + * + * + * @param v_algo_standby_u8 : The value of algorithm standby duration + * @param v_algo_id_u8 : The value of algorithm id + * @param v_host_interface_id_u8 : The value of host interface id + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_host_status( +u8 *v_algo_standby_u8, u8 *v_algo_id_u8, +u8 *v_host_interface_id_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* read the host status*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_HOST_STATUS__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + /* read the host algo status*/ + *v_algo_standby_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_STATUS_ALGO_STANDBY); + /* read the host algo id */ + *v_algo_id_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_BHY_HOST_STATUS_ALGO_ID); + /* host interface id */ + *v_host_interface_id_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_BHY_HOST_INTERFACE_ID); + } + return com_rslt; +} +/*! + * @brief API used to get the interrupt status from the register 0x36 + * bit 0 to 7 + * + * + * @param v_host_int_u8 : + * The value of host interrupt status + * @param v_wakeup_water_mark_u8 : + * The value of wakeup watermark status + * @param v_wakeup_latency_u8 : + * The value of wakeup latency status + * @param v_wakeup_immediate_u8 : + * The value of wakeup immediate status + * @param v_non_wakeup_water_mark_u8 : + * The value of non wakeup watermark status + * @param v_non_wakeup_latency_u8 : + * The value of non wakeup latency status + * @param v_non_wakeup_immediate_u8 : + * The value of non wakeup immediate + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_interrupt_status( +u8 *v_host_int_u8, +u8 *v_wakeup_water_mark_u8, u8 *v_wakeup_latency_u8, +u8 *v_wakeup_immediate_u8, u8 *v_non_wakeup_water_mark_u8, +u8 *v_non_wakeup_latency_u8, u8 *v_non_wakeup_immediate_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* read the interrupt status*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_INT_STATUS__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + /* read the host interrupt status*/ + *v_host_int_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_BHY_INT_STATUS_HOST_INTR); + /* read the wakeup watermark interrupt status*/ + *v_wakeup_water_mark_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_WM); + /* read the wakeup latency interrupt status*/ + *v_wakeup_latency_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_LATENCY); + /* read the wakeup immediate interrupt status*/ + *v_wakeup_immediate_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_BHY_INT_STATUS_WAKEUP_IMMEDIATE); + /* read the non wakeup watermark interrupt status*/ + *v_non_wakeup_water_mark_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_BHY_INT_STATUS_NON_WAKEUP_WM); + /* read the non wakeup latency interrupt status*/ + *v_non_wakeup_latency_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_INT_STATUS_NON_WAKEUP_LATENCY); + /* read the non wakeup immediate status*/ + *v_non_wakeup_immediate_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_INT_STATUS_NON_WAKEUP_IMMEDIATE); + } + return com_rslt; +} +/*! + * @brief API used to get the chip status from the register 0x37 + * bit 0 to 7 + * + * + * + * @param v_eeprom_detected_u8 : The value of eeprom + * detected status + * @param v_ee_upload_done_u8 : The value of ee_upload + * done status + * @param v_ee_upload_error_u8 : The value of ee_upload + * done error + * @param v_firmware_idle_u8 : The value of firmware error status + * @param v_no_eeprom_u8 : The value of no eeprom status + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_chip_status( +u8 *v_eeprom_detected_u8, +u8 *v_ee_upload_done_u8, u8 *v_ee_upload_error_u8, +u8 *v_firmware_idle_u8, u8 *v_no_eeprom_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* read the chip status*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_CHIP_STATUS__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + /* read eeprom detected status*/ + *v_eeprom_detected_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_CHIP_STATUS_EEPROM_DETECTED); + /* read eeprom upload done status*/ + *v_ee_upload_done_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_CHIP_STATUS_EE_UPLOAD_DONE); + /* read eeprom upload error status*/ + *v_ee_upload_error_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_CHIP_STATUS_EE_UPLOAD_ERROR); + /* read firmware idle status*/ + *v_firmware_idle_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_CHIP_STATUS_FIRMWARE_IDLE); + /* read no eeprom detected status*/ + *v_no_eeprom_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_CHIP_STATUS_NO_EEPROM); + } + return com_rslt; +} +/*! + * @brief API used to get the bytes remaining from the register 0x38 + * and 0x39 bit 0 to 7 + * + * + * @param v_bytes_remaining_u16 : The value of bytes remaining + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * @note This indicates how many bytes are available in the FIFO buffer + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_read_bytes_remaining(u16 *v_bytes_remaining_u16) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + /* Array contains the bytes reaming of FIFO lSB and MSB data + v_data_u8[LSB_ZERO] - LSB + v_data_u8[MSB_ONE] - MSB*/ + u8 v_data_u8[BHY_BYTES_REMAINING_SIZE] = {BHY_INIT_VALUE, + BHY_INIT_VALUE}; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* read bytes remaining data */ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_BYTES_REMAINING_LSB_ADDR, + v_data_u8, BHY_BYTES_REMAINING_LENGTH); + /* get the bytes remaining data*/ + *v_bytes_remaining_u16 = (u16) + ((v_data_u8[BHY_BYTES_REMAINING_MSB] + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (v_data_u8[BHY_BYTES_REMAINING_LSB])); + } + return com_rslt; +} +/*! + * @brief API used to get the parameter + * acknowledgement from the register 0x3A + * bit 0 to 7 + * + * + * @param v_parameter_acknowledge_u8: + * The value of parameter acknowledgement + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_parameter_acknowledge( +u8 *v_parameter_acknowledge_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* read the parameter acknowledgement*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_PARAMETER_ACKNOWLEDGE_ADDR, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + *v_parameter_acknowledge_u8 = v_data_u8; + } + return com_rslt; +} +/*! + * @brief API used to get the parameter + * page select from the register 0x54 + * bit 0 to 7 + * + * + * @param v_page_select_u8 : The value of parameter page selection + * page information | value + * ------------------------|---------- + * BHY_PAGE_SELECT_PARAMETER_PAGE | 0 + * BHY_PAGE_SELECT_PARAMETER_SIZE | 1 + * + * @param v_parameter_page_u8 : The value of page selection + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_parameter_page_select( +u8 v_page_select_u8, u8 *v_parameter_page_u8) +{ +/* variable used for return the status of communication result*/ +BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; +u8 v_data_u8 = BHY_INIT_VALUE; +/* check the p_bhy pointer as NULL*/ +if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* read the parameter page information*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_PARAMETER_PAGE_SELECT__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + switch (v_page_select_u8) { + case BHY_PAGE_SELECT_PARAMETER_PAGE: + *v_parameter_page_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_PARAMETER_PAGE_SELECT_PARAMETER_PAGE); + break; + case BHY_PAGE_SELECT_PARAMETER_SIZE: + *v_parameter_page_u8 + = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_PARAMETER_PAGE_SELECT_PARAMETER_SIZE); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + } +return com_rslt; +} +/*! + * @brief API used to set the parameter + * page select from the register 0x54 + * bit 0 to 7 + * + * + * @param v_page_select_u8 : The value of parameter page selection + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_parameter_page_select( +u8 v_page_select_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + v_data_u8 = v_page_select_u8; + /* read the parameter page information*/ + com_rslt = p_bhy->BHY_BUS_WRITE_FUNC + (p_bhy->device_addr, + BHY_I2C_REG_PARAMETER_PAGE_SELECT__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + } + return com_rslt; + } + +/*! + * @brief API used to get the host interface control + * from the register 0x55 + * bit 0 to 7 + * + * + * + * @param v_algo_standby_req_u8 : The value of algorithm standby + * request + * @param v_abort_transfer_u8 : The value of abort transfer + * @param v_update_transfer_cnt_u8 : The value of update + * transfer count + * @param v_wakeup_fifo_intr_disable_u8 : + * The value of wakeup fifo host + * interrupt disable + * @param v_ned_coordinates_u8 : The value of NED coordinates + * @param v_ap_suspend_u8 : The value of AP suspended + * @param v_sensor_selftest_u8 : The value of sensor self test + * @param v_non_wakeup_fifo_intr_disable_u8: + * The value of non wakeup fifo host + * interrupt disable + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_host_interface_control( +u8 *v_algo_standby_req_u8, +u8 *v_abort_transfer_u8, u8 *v_update_transfer_cnt_u8, +u8 *v_wakeup_fifo_intr_disable_u8, u8 *v_ned_coordinates_u8, +u8 *v_ap_suspend_u8, u8 *v_sensor_selftest_u8, +u8 *v_non_wakeup_fifo_intr_disable_u8) +{ +/* variable used for return the status of communication result*/ +BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; +u8 v_data_u8 = BHY_INIT_VALUE; +/* check the p_bhy pointer as NULL*/ +if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* read the host interrupt status*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_ADDR, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + /* read algorithm standby request status*/ + *v_algo_standby_req_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_ALGO_STABDY_REQUEST); + /* read host interrupt control status*/ + *v_abort_transfer_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_ABORT_TRANSFER); + /* read update transfer control status*/ + *v_update_transfer_cnt_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_TRANSFER_COUNT); + /* read wakeup fifo host interrupt disable status*/ + *v_wakeup_fifo_intr_disable_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_WAKEUP_FIFO_DISABLE); + /* read ned coordinates status*/ + *v_ned_coordinates_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_NED_COORDINATE); + /* read AP suspended status*/ + *v_ap_suspend_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_AP_SUSPEND); + /* read self test status*/ + *v_sensor_selftest_u8 = BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_SELFTEST); + /* read non wakeup fifo host interrupt disable status*/ + *v_non_wakeup_fifo_intr_disable_u8 = + BHY_GET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_NON_WAKEUP_FIFO_DISABLE); + } +return com_rslt; +} +/*! + * @brief API used to set the host interface control + * from the register 0x55 + * bit 0 to 7 + * + * + * @param v_host_interface_select_u8 : The value of host interface selection + * host interface | value + * -----------------------------------|---------- + * BHY_HOST_ALGO_STANDBY_REQUEST | 0 + * BHY_HOST_ABORT_TRANSFER | 1 + * BHY_HOST_UPDATE_TRANSFER_COUNT | 2 + * BHY_HOST_WAKEUP_FIFO_DISABLE | 3 + * BHY_HOST_NED_COORDINATE | 4 + * BHY_HOST_AP_SUSPEND | 5 + * BHY_HOST_SELFTEST | 6 + * BHY_HOST_NON_WAKEUP_FIFO_DISABLE | 7 + * + * @param v_host_interface_status_u8 : The value of host interface + * Data | status + * -----------------| ----------- + * 0 | DISABLE + * 1 | ENABLE + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_host_interface_control( +u8 v_host_interface_select_u8, u8 v_host_interface_status_u8) +{ +/* variable used for return the status of communication result*/ +BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; +u8 v_data_u8 = BHY_INIT_VALUE; +/* check the p_bhy pointer as NULL*/ +if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; +} else { +switch (v_host_interface_select_u8) { +case BHY_HOST_ALGO_STANDBY_REQUEST: + /* write algorithm standby request status*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_ALGO_STABDY_REQUEST__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + if (BHY_SUCCESS == com_rslt) { + v_data_u8 = BHY_SET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_ALGO_STABDY_REQUEST, + v_host_interface_status_u8); + com_rslt += p_bhy->BHY_BUS_WRITE_FUNC + (p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_ALGO_STABDY_REQUEST__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + } +break; +case BHY_HOST_ABORT_TRANSFER: + /* write host interrupt control status*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_ABORT_TRANSFER__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + if (BHY_SUCCESS == com_rslt) { + v_data_u8 = BHY_SET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_ABORT_TRANSFER, + v_host_interface_status_u8); + com_rslt += p_bhy->BHY_BUS_WRITE_FUNC + (p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_ABORT_TRANSFER__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + } +break; +case BHY_HOST_UPDATE_TRANSFER_COUNT: + /* write update transfer control status*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_TRANSFER_COUNT__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + if (BHY_SUCCESS == com_rslt) { + v_data_u8 = BHY_SET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_TRANSFER_COUNT, + v_host_interface_status_u8); + com_rslt += p_bhy->BHY_BUS_WRITE_FUNC + (p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_TRANSFER_COUNT__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + } +break; +case BHY_HOST_WAKEUP_FIFO_DISABLE: + /* write wakeup fifo host interrupt disable status*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_WAKEUP_FIFO_DISABLE__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + if (BHY_SUCCESS == com_rslt) { + v_data_u8 = BHY_SET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_WAKEUP_FIFO_DISABLE, + v_host_interface_status_u8); + com_rslt += p_bhy->BHY_BUS_WRITE_FUNC + (p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_WAKEUP_FIFO_DISABLE__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + } +break; +case BHY_HOST_NED_COORDINATE: + /* write ned coordinates status*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_NED_COORDINATE__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + if (BHY_SUCCESS == com_rslt) { + v_data_u8 = BHY_SET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_NED_COORDINATE, + v_host_interface_status_u8); + com_rslt += p_bhy->BHY_BUS_WRITE_FUNC + (p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_NED_COORDINATE__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + } +break; +case BHY_HOST_AP_SUSPEND: + /* write AP suspended status*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_AP_SUSPEND__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + if (BHY_SUCCESS == com_rslt) { + v_data_u8 = BHY_SET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_AP_SUSPEND, + v_host_interface_status_u8); + com_rslt += p_bhy->BHY_BUS_WRITE_FUNC + (p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_AP_SUSPEND__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + } +break; +case BHY_HOST_SELFTEST: + /* write self test status*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_SELFTEST__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + if (BHY_SUCCESS == com_rslt) { + v_data_u8 = BHY_SET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_SELFTEST, + v_host_interface_status_u8); + com_rslt += p_bhy->BHY_BUS_WRITE_FUNC + (p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_SELFTEST__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + } +break; +case BHY_HOST_NON_WAKEUP_FIFO_DISABLE: +/* write non wakeup fifo host interrupt disable status*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_NON_WAKEUP_FIFO_DISABLE__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + if (BHY_SUCCESS == com_rslt) { + v_data_u8 = BHY_SET_BITSLICE(v_data_u8, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_NON_WAKEUP_FIFO_DISABLE, + v_host_interface_status_u8); + com_rslt += p_bhy->BHY_BUS_WRITE_FUNC + (p_bhy->device_addr, + BHY_I2C_REG_HOST_INTERFACE_CONTROL_NON_WAKEUP_FIFO_DISABLE__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + } +break; +default: + com_rslt = BHY_OUT_OF_RANGE; +break; +} +} +return com_rslt; +} +/*! + * @brief API used to get the parameter + * request from the register 0x64 + * bit 0 to 7 + * + * + * @param v_parameter_request_u8 : The value of parameter request + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_parameter_request( +u8 *v_parameter_request_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* read the load parameter request rate*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_PARAMETER_REQUEST_ADDR, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + *v_parameter_request_u8 = v_data_u8; + } + return com_rslt; +} +/*! + * @brief API used to get the parameter + * request from the register 0x64 + * bit 0 to 7 + * + * + * @param v_parameter_request_u8 : The value of parameter request + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_parameter_request( +u8 v_parameter_request_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* write load parameter request*/ + v_data_u8 = v_parameter_request_u8; + com_rslt = p_bhy->BHY_BUS_WRITE_FUNC + (p_bhy->device_addr, + BHY_I2C_REG_LOAD_PARAMETER_REQUEST__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + } + return com_rslt; +} +/*! + * @brief API used to get the host IRQ time stamp + * request from the register 0x6C to 0x6F + * bit 0 to 7 + * + * + * @param v_host_irq_timestamp_u32 : The value of host irq time stamp + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_host_irq_timestamp( +u32 *v_host_irq_timestamp_u32) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8[BHY_HOST_IRQ_TIMESTAMP_SIZE] = {BHY_INIT_VALUE, + BHY_INIT_VALUE, BHY_INIT_VALUE, BHY_INIT_VALUE}; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* read the load parameter request rate*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_BHY_HOST_IRQ_TIMESTAMP_ADDR, + v_data_u8, BHY_HOST_IRQ_TIMESTAMP_SIZE); + *v_host_irq_timestamp_u32 = + (u32)((v_data_u8[BHY_HOST_IRQ_TIMESTAMP_MSB_DATA] + << BHY_SHIFT_BIT_POSITION_BY_24_BITS) + |(v_data_u8[BHY_HOST_IRQ_TIMESTAMP_XXLSB_DATA] + << BHY_SHIFT_BIT_POSITION_BY_16_BITS) + |(v_data_u8[BHY_HOST_IRQ_TIMESTAMP_XLSB_DATA] + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (v_data_u8[BHY_HOST_IRQ_TIMESTAMP_LSB_DATA])); + } + return com_rslt; +} +/*! + * @brief API used to get the ROM version + * request from the register 0x70 to 0x71 + * bit 0 to 7 + * + * + * @param v_rom_version_u16 : The value ROM version + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_rom_version(u16 *v_rom_version_u16) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8[BHY_ROM_VERSION_SIZE] = {BHY_INIT_VALUE, + BHY_INIT_VALUE}; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* read the load parameter request rate*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_ROM_VERSION_ADDR, + v_data_u8, BHY_ROM_VERSION_SIZE); + *v_rom_version_u16 = + (u16)((v_data_u8[BHY_ROM_VERSION_MSB_DATA] + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (v_data_u8[BHY_ROM_VERSION_LSB_DATA])); + } + return com_rslt; +} +/*! + * @brief API used to get the RAM version + * request from the register 0x72 to 0x73 + * bit 0 to 7 + * + * + * @param v_ram_version_u16 : The value RAM version + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_ram_version( +u16 *v_ram_version_u16) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8[BHY_RAM_VERSION_SIZE] = {BHY_INIT_VALUE, + BHY_INIT_VALUE}; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* read the load parameter request rate*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_RAM_VERSION_ADDR, + v_data_u8, BHY_RAM_VERSION_SIZE); + *v_ram_version_u16 = + (u16)((v_data_u8[BHY_RAM_VERSION_MSB_DATA] + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (v_data_u8[BHY_RAM_VERSION_LSB_DATA])); + } + return com_rslt; +} +/*! + * @brief API used to get the product id + * request from the register 0x90 + * bit 0 to 7 + * + * + * @param v_product_id_u8 : The value of product id + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_product_id(u8 *v_product_id_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* read the load parameter request rate*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_PRODUCT_ID_ADDR, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + *v_product_id_u8 = v_data_u8; + } + return com_rslt; +} +/*! + * @brief API used to get the revision id + * request from the register 0x91 + * bit 0 to 7 + * + * + * @param v_revision_id_u8 : The value of revision id + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_revision_id(u8 *v_revision_id_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* read the load parameter request rate*/ + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_REVISION_ID_ADDR, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + *v_revision_id_u8 = v_data_u8; + } + return com_rslt; +} +/*! + * @brief API used to get the CRC host + * request from the register 0x91 + * bit 0 to 7 + * + * + * @param v_crc_host_u32 : The value of CRC host + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_crc_host(u32 *v_crc_host_u32) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + /* Array contains the sensor time it is 32 bit data + a_data_u8[0] - crc HOST + a_data_u8[1] - crc HOST + a_data_u8[2] - crc HOST + a_data_u8[3] - crc HOST + */ + u8 a_data_u8[BHY_CRC_HOST_SIZE] = {BHY_INIT_VALUE, + BHY_INIT_VALUE, BHY_INIT_VALUE, BHY_INIT_VALUE}; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_CRC_HOST_ADDR, + a_data_u8, BHY_CRC_HOST_LENGTH); + *v_crc_host_u32 = (u32) + (((u32)a_data_u8[BHY_CRC_HOST_MSB] + << BHY_SHIFT_BIT_POSITION_BY_24_BITS) | + ((u32)a_data_u8[BHY_CRC_HOST_XXLSB] + << BHY_SHIFT_BIT_POSITION_BY_16_BITS) + |(a_data_u8[BHY_CRC_HOST_XLSB] + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (a_data_u8[BHY_CRC_HOST_LSB])); + } + return com_rslt; +} +/*! + * @brief API used to set the reset + * request from the register 0x9B + * bit 0 to 7 + * + * + * @param v_reset_request_u8 : The value of parameter request + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_reset_request(u8 v_reset_request_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + v_data_u8 = v_reset_request_u8; + /* write load parameter request*/ + com_rslt = p_bhy->BHY_BUS_WRITE_FUNC + (p_bhy->device_addr, + BHY_I2C_REG_RESET_REQUEST__REG, + &v_data_u8, BHY_GEN_READ_WRITE_LENGTH); + } + return com_rslt; +} +/*! + * @brief API used to flash the ram patch + * + * + * @param memory : The value of data from the + * ram patch. + * @param v_file_length_u32 : Length of the patch data + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_initialize(u8 *memory, u32 v_file_length_u32) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_upload_addr = BHY_UPLOAD_DATA; + u8 v_chip_control_u8 = BHY_CHIP_CTRL_ENABLE_1; + u32 v_crc_from_memory_u32 = BHY_INIT_VALUE; + u32 v_length_to_process_u32 = BHY_INIT_VALUE; + u32 v_crc_host_u32 = BHY_INIT_VALUE; + u32 write_data = BHY_INIT_VALUE; + u8 data_from_mem[BHY_SIGNATURE_MEM_LEN]; + u8 data_byte[BHY_RAM_WRITE_LENGTH]; + u32 read_index_u8 = BHY_INIT_VALUE; + s32 reverse_index_s32 = BHY_INIT_VALUE; + u32 bytes_to_write_u8 = BHY_RAM_WRITE_LENGTH; + u32 read_bytes_index = BHY_INIT_VALUE; + u32 write_index_u32 = BHY_INIT_VALUE; + u32 write_ram_index = BHY_INIT_VALUE; + u32 index_mem = BHY_INIT_VALUE; + u32 write_length = BHY_INIT_VALUE; + u32 data_to_process = BHY_INIT_VALUE; + u8 init_array_data = BHY_INIT_VALUE; + /* initialize the array*/ + for (init_array_data = 0; init_array_data < BHY_SIGNATURE_MEM_LEN; init_array_data++) + { + data_from_mem[init_array_data] = BHY_INIT_VALUE; + } + for (init_array_data = BHY_INIT_VALUE; init_array_data < BHY_RAM_WRITE_LENGTH; init_array_data++) + { + data_byte[init_array_data] = BHY_INIT_VALUE; + } + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) + { + com_rslt = BHY_NULL; + } + else + { + /* Assign the memory data into the local array*/ + for (read_index_u8 = BHY_INIT_VALUE; read_index_u8 <= BHY_SIGNATURE_LENGTH; read_index_u8++) + { + data_from_mem[read_index_u8] = *(memory+read_index_u8); + } + /* Verify the signature of the data*/ + if ((data_from_mem[BHY_SIGNATURE_1] == BHY_IMAGE_SIGNATURE1) + && (data_from_mem[BHY_SIGNATURE_2] == BHY_IMAGE_SIGNATURE2)) + { + com_rslt = BHY_SUCCESS; + } + else + { + com_rslt = BHY_ERROR; + } + /* read the CRC data from memory */ + v_crc_from_memory_u32 = (u32) + (((u32)data_from_mem[BHY_CRC_HOST_FILE_MSB] + << BHY_SHIFT_BIT_POSITION_BY_24_BITS) | + ((u32)data_from_mem[BHY_CRC_HOST_FILE_XXLSB] + << BHY_SHIFT_BIT_POSITION_BY_16_BITS) + |(data_from_mem[BHY_CRC_HOST_FILE_XLSB] + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (data_from_mem[BHY_CRC_HOST_FILE_LSB])); + /* Remove the first 16 bytes*/ + data_to_process = v_file_length_u32 - BHY_SIGNATURE_LENGTH; + /* data to write for length calculation*/ + v_length_to_process_u32 = (data_to_process / BHY_RAM_WRITE_LENGTH); + read_index_u8 = BHY_SIGNATURE_LENGTH; + read_bytes_index = BHY_INIT_READ_BYTES; + for (write_index_u32 = BHY_INIT_VALUE; write_index_u32 < v_length_to_process_u32;) + { + /* reverse the data*/ + if (read_index_u8 <= read_bytes_index && read_bytes_index <= data_to_process) + { + for (reverse_index_s32 = bytes_to_write_u8 - BHY_INIT_BYTE_MINUS_ONE; + reverse_index_s32 >= BHY_INIT_VALUE;) + { + data_byte[reverse_index_s32] = *(memory + read_index_u8); + read_index_u8++; + reverse_index_s32--; + } + } + /* write the data into the register*/ + read_bytes_index = read_bytes_index + BHY_RAM_WRITE_LENGTH; + reverse_index_s32 = BHY_INIT_VALUE; + + for (write_ram_index = BHY_INIT_VALUE; write_ram_index <= BHY_CHECK_BYTE;) + { + *(memory + index_mem) = data_byte[write_ram_index]; + index_mem++; + write_ram_index++; + } + write_index_u32++; + } + /* set the reset as 0x01*/ + com_rslt = bhy_set_reset_request(BHY_RESET_ENABLE); + com_rslt += bhy_write_reg(BHY_I2C_REG_CHIP_CONTROL_ADDR, + &v_chip_control_u8, BHY_GEN_READ_WRITE_LENGTH); + /* set the upload data*/ + com_rslt += bhy_write_reg(BHY_I2C_REG_UPLOAD_0_ADDR, + &v_upload_addr, BHY_GEN_READ_WRITE_LENGTH); + com_rslt += bhy_write_reg(BHY_I2C_REG_UPLOAD_1_ADDR, + &v_upload_addr, BHY_GEN_READ_WRITE_LENGTH); + /* write the chip control register as 0x02*/ + write_length = + data_to_process / BHY_RAM_WRITE_LENGTH_API; + read_index_u8 = BHY_INIT_VALUE; + /* write the memory of data */ + if (com_rslt == BHY_SUCCESS) { + for (read_index_u8 = BHY_INIT_VALUE; read_index_u8 < write_length; read_index_u8++) + { + com_rslt += bhy_write_reg(BHY_I2C_REG_UPLOAD_DATA_ADDR, \ + (u8 *)(memory + write_data), \ + BHY_RAM_WRITE_LENGTH_API); + write_data = write_data + BHY_RAM_WRITE_LENGTH_API; + } + } + /* Check the CRC success*/ + com_rslt = bhy_get_crc_host(&v_crc_host_u32); + if (v_crc_from_memory_u32 == v_crc_host_u32) + { + com_rslt = BHY_SUCCESS; + } + else + { + com_rslt = BHY_ERROR; + } + /* disable upload mode*/ + v_chip_control_u8 = BHY_CHIP_CTRL_ENABLE_2; + /* write the chip control register as 0x02*/ + com_rslt += bhy_write_reg(BHY_I2C_REG_CHIP_CONTROL_ADDR, &v_chip_control_u8, BHY_GEN_READ_WRITE_LENGTH); + } + return com_rslt; +} + +BHY_RETURN_FUNCTION_TYPE bhy_initialize_from_rom( const u8 *memory, const u32 v_file_length_u32) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_upload_addr = BHY_UPLOAD_DATA; + u8 v_chip_control_u8 = BHY_CHIP_CTRL_ENABLE_1; + u32 v_crc_from_memory_u32 = BHY_INIT_VALUE; + u32 v_crc_host_u32 = BHY_INIT_VALUE; + u32 write_data = BHY_INIT_VALUE; + u8 data_from_mem[BHY_SIGNATURE_MEM_LEN]; + u8 data_byte[BHY_RAM_WRITE_LENGTH_API]; + u32 read_index_u8 = BHY_INIT_VALUE; + u32 reverse_index_u32 = BHY_INIT_VALUE; + u32 reverse_block_index_u32 = BHY_INIT_VALUE; + u32 write_length = BHY_INIT_VALUE; + u32 data_to_process = BHY_INIT_VALUE; + u32 packet_length = BHY_INIT_VALUE;; + u16 signature_flag = 0; + u16 rom_version = 0; + u8 rom_ver_exp = 0; + u8 i = BHY_INIT_VALUE; + /* initialize the array*/ + for (i=0; i < BHY_SIGNATURE_MEM_LEN; i++) + { + data_from_mem[i] = BHY_INIT_VALUE; + } + for (i = BHY_INIT_VALUE; i < BHY_RAM_WRITE_LENGTH; i++) + { + data_byte[i] = BHY_INIT_VALUE; + } + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) + { + com_rslt = BHY_NULL; + } + else + { + /* Assign the memory data into the local array*/ + for (read_index_u8 = BHY_INIT_VALUE;read_index_u8 <= BHY_SIGNATURE_LENGTH; read_index_u8++) + { + data_from_mem[read_index_u8] = *(memory+read_index_u8); + } + /* Verify the signature of the data*/ + if ((data_from_mem[BHY_SIGNATURE_1] == BHY_IMAGE_SIGNATURE1) + && (data_from_mem[BHY_SIGNATURE_2] == BHY_IMAGE_SIGNATURE2)) + { + com_rslt = BHY_SUCCESS; + } + else + { + com_rslt = BHY_ERROR; + goto bhy_init_from_rom_return; + } + /* Verify the signature of the data*/ + signature_flag = data_from_mem[BHY_SIG_FLAG_1_POS] + ((u16)data_from_mem[BHY_SIG_FLAG_2_POS]<<8); + rom_ver_exp = BHY_GET_ROMVEREXP (signature_flag); + bhy_get_rom_version(&rom_version); + if(BHY_ROM_VER_DI01 == rom_ver_exp) + { + if(BHY_ROM_VERSION_DI01 == rom_version) + { + com_rslt = BHY_SUCCESS; + } + else + { + com_rslt = BHY_RAMPATCH_NOT_MATCH; + goto bhy_init_from_rom_return; + } + } + else if(BHY_ROM_VER_DI03 == rom_ver_exp) + { + if(BHY_ROM_VERSION_DI03 == rom_version) + { + com_rslt = BHY_SUCCESS; + } + else + { + com_rslt = BHY_RAMPATCH_NOT_MATCH; + goto bhy_init_from_rom_return; + } + } + else + { + com_rslt = BHY_RAMPATCH_NOT_SUPPORT; + goto bhy_init_from_rom_return; + } + /* read the CRC data from memory */ + v_crc_from_memory_u32 = (u32) + (((u32)data_from_mem[BHY_CRC_HOST_FILE_MSB] + << BHY_SHIFT_BIT_POSITION_BY_24_BITS) | + ((u32)data_from_mem[BHY_CRC_HOST_FILE_XXLSB] + << BHY_SHIFT_BIT_POSITION_BY_16_BITS) + |(data_from_mem[BHY_CRC_HOST_FILE_XLSB] + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (data_from_mem[BHY_CRC_HOST_FILE_LSB])); + /* Remove the first 16 bytes*/ + data_to_process = v_file_length_u32 - BHY_SIGNATURE_LENGTH; + + /* set the reset as 0x01*/ + com_rslt = bhy_set_reset_request(BHY_RESET_ENABLE); + com_rslt += bhy_write_reg(BHY_I2C_REG_CHIP_CONTROL_ADDR, &v_chip_control_u8, BHY_GEN_READ_WRITE_LENGTH); + /* set the upload data*/ + com_rslt += bhy_write_reg(BHY_I2C_REG_UPLOAD_0_ADDR, &v_upload_addr, BHY_GEN_READ_WRITE_LENGTH); + com_rslt += bhy_write_reg(BHY_I2C_REG_UPLOAD_1_ADDR, &v_upload_addr, BHY_GEN_READ_WRITE_LENGTH); + /* write the chip control register as 0x02*/ + write_length = data_to_process / BHY_RAM_WRITE_LENGTH_API; + read_index_u8 = BHY_INIT_VALUE; + + /* write the memory of data */ + /*skips first 16 bytes*/ + write_data += 16; + if (com_rslt == BHY_SUCCESS) + { + for (read_index_u8 = BHY_INIT_VALUE; read_index_u8 <= write_length; read_index_u8++) + { + packet_length = (read_index_u8 == write_length) ? + (data_to_process % BHY_RAM_WRITE_LENGTH_API) / BHY_RAM_WRITE_LENGTH : + BHY_RAM_WRITE_LENGTH_API / BHY_RAM_WRITE_LENGTH; + + /*reverse the data*/ + for (reverse_block_index_u32 = 1; reverse_block_index_u32 <=packet_length ;reverse_block_index_u32++) + { + for (reverse_index_u32 = 0; reverse_index_u32 <BHY_RAM_WRITE_LENGTH; reverse_index_u32++) + { + data_byte[reverse_index_u32+((reverse_block_index_u32-1)*BHY_RAM_WRITE_LENGTH)] = + *(memory + write_data + BHY_RAM_WRITE_LENGTH * reverse_block_index_u32 - (reverse_index_u32+1)); + } + } + + if(packet_length != 0) + com_rslt += bhy_write_reg(BHY_I2C_REG_UPLOAD_DATA_ADDR,data_byte,packet_length * BHY_RAM_WRITE_LENGTH); + + write_data = write_data + (packet_length * BHY_RAM_WRITE_LENGTH); + } + } + + /* Check the CRC success*/ + com_rslt = bhy_get_crc_host(&v_crc_host_u32); + if (v_crc_from_memory_u32 == v_crc_host_u32) + { + com_rslt = BHY_SUCCESS; + } + else + { + com_rslt = BHY_CRC_ERROR; + goto bhy_init_from_rom_return; + } + /* disable upload mode*/ + v_chip_control_u8 = BHY_CHIP_CTRL_ENABLE_2; + /* write the chip control register as 0x02*/ + com_rslt += bhy_write_reg(BHY_I2C_REG_CHIP_CONTROL_ADDR,&v_chip_control_u8, BHY_GEN_READ_WRITE_LENGTH); + } +bhy_init_from_rom_return: + return com_rslt; +} +/*! +* @brief API used assign the data of meta event byte 0 data +* +* @param v_meta_event_data_u8: The value of meta event byte0 +* +*/ +static void bhy_assign_meta_event_byte0(u8 v_meta_event_data_u8) +{ + write_buffer.write_parameter_byte1 = v_meta_event_data_u8; + write_buffer.write_parameter_byte2 = read_buffer.parameter_2; + write_buffer.write_parameter_byte3 = read_buffer.parameter_3; + write_buffer.write_parameter_byte4 = read_buffer.parameter_4; + write_buffer.write_parameter_byte5 = read_buffer.parameter_5; + write_buffer.write_parameter_byte6 = read_buffer.parameter_6; + write_buffer.write_parameter_byte7 = read_buffer.parameter_7; + write_buffer.write_parameter_byte8 = read_buffer.parameter_8; +} +/*! +* @brief API used assign the data of meta event byte 1 data +* +* @param v_meta_event_data_u8: The value of meta event byte1 +* +*/ +static void bhy_assign_meta_event_byte1(u8 v_meta_event_data_u8) +{ + write_buffer.write_parameter_byte1 = read_buffer.parameter_1; + write_buffer.write_parameter_byte2 = v_meta_event_data_u8; + write_buffer.write_parameter_byte3 = read_buffer.parameter_3; + write_buffer.write_parameter_byte4 = read_buffer.parameter_4; + write_buffer.write_parameter_byte5 = read_buffer.parameter_5; + write_buffer.write_parameter_byte6 = read_buffer.parameter_6; + write_buffer.write_parameter_byte7 = read_buffer.parameter_7; + write_buffer.write_parameter_byte8 = read_buffer.parameter_8; +} +/*! +* @brief API used assign the data of meta event byte 2 data +* +* @param v_meta_event_data_u8: The value of meta event byte2 +* +*/ +static void bhy_assign_meta_event_byte2(u8 v_meta_event_data_u8) +{ + write_buffer.write_parameter_byte1 = read_buffer.parameter_1; + write_buffer.write_parameter_byte2 = read_buffer.parameter_2; + write_buffer.write_parameter_byte3 = v_meta_event_data_u8; + write_buffer.write_parameter_byte4 = read_buffer.parameter_4; + write_buffer.write_parameter_byte5 = read_buffer.parameter_5; + write_buffer.write_parameter_byte6 = read_buffer.parameter_6; + write_buffer.write_parameter_byte7 = read_buffer.parameter_7; + write_buffer.write_parameter_byte8 = read_buffer.parameter_8; +} +/*! +* @brief API used assign the data of meta event byte 3 data +* +* @param v_meta_event_data_u8: The value of meta event byte3 +* +*/ +static void bhy_assign_meta_event_byte3(u8 v_meta_event_data_u8) +{ + write_buffer.write_parameter_byte1 = read_buffer.parameter_1; + write_buffer.write_parameter_byte2 = read_buffer.parameter_2; + write_buffer.write_parameter_byte3 = read_buffer.parameter_3; + write_buffer.write_parameter_byte4 = v_meta_event_data_u8; + write_buffer.write_parameter_byte5 = read_buffer.parameter_5; + write_buffer.write_parameter_byte6 = read_buffer.parameter_6; + write_buffer.write_parameter_byte7 = read_buffer.parameter_7; + write_buffer.write_parameter_byte8 = read_buffer.parameter_8; +} +/*! +* @brief API used assign the data of meta event byte 4 data +* +* @param v_meta_event_data_u8: The value of meta event byte4 +* +*/ +static void bhy_assign_meta_event_byte4(u8 v_meta_event_data_u8) +{ + write_buffer.write_parameter_byte1 = read_buffer.parameter_1; + write_buffer.write_parameter_byte2 = read_buffer.parameter_2; + write_buffer.write_parameter_byte3 = read_buffer.parameter_3; + write_buffer.write_parameter_byte4 = read_buffer.parameter_4; + write_buffer.write_parameter_byte5 = v_meta_event_data_u8; + write_buffer.write_parameter_byte6 = read_buffer.parameter_6; + write_buffer.write_parameter_byte7 = read_buffer.parameter_7; + write_buffer.write_parameter_byte8 = read_buffer.parameter_8; +} +/*! +* @brief API used assign the data of meta event byte 5 data +* +* @param v_meta_event_data_u8: The value of meta event byte5 +* +*/ +static void bhy_assign_meta_event_byte5(u8 v_meta_event_data_u8) +{ + write_buffer.write_parameter_byte1 = read_buffer.parameter_1; + write_buffer.write_parameter_byte2 = read_buffer.parameter_2; + write_buffer.write_parameter_byte3 = read_buffer.parameter_3; + write_buffer.write_parameter_byte4 = read_buffer.parameter_4; + write_buffer.write_parameter_byte5 = read_buffer.parameter_6; + write_buffer.write_parameter_byte6 = v_meta_event_data_u8; + write_buffer.write_parameter_byte7 = read_buffer.parameter_7; + write_buffer.write_parameter_byte8 = read_buffer.parameter_8; +} +/*! +* @brief API used assign the data of meta event byte 6 data +* +* @param v_meta_event_data_u8: The value of meta event byte6 +* +*/ +static void bhy_assign_meta_event_byte6(u8 v_meta_event_data_u8) +{ + write_buffer.write_parameter_byte1 = read_buffer.parameter_1; + write_buffer.write_parameter_byte2 = read_buffer.parameter_2; + write_buffer.write_parameter_byte3 = read_buffer.parameter_3; + write_buffer.write_parameter_byte4 = read_buffer.parameter_4; + write_buffer.write_parameter_byte5 = read_buffer.parameter_6; + write_buffer.write_parameter_byte6 = read_buffer.parameter_6; + write_buffer.write_parameter_byte7 = v_meta_event_data_u8; + write_buffer.write_parameter_byte8 = read_buffer.parameter_8; +} +/*! +* @brief API used assign the data of meta event byte 7 data +* +* @param v_meta_event_data_u8: The value of meta event byte7 +* +*/ +static void bhy_assign_meta_event_byte7(u8 v_meta_event_data_u8) +{ + write_buffer.write_parameter_byte1 = read_buffer.parameter_1; + write_buffer.write_parameter_byte2 = read_buffer.parameter_2; + write_buffer.write_parameter_byte3 = read_buffer.parameter_3; + write_buffer.write_parameter_byte4 = read_buffer.parameter_4; + write_buffer.write_parameter_byte5 = read_buffer.parameter_6; + write_buffer.write_parameter_byte6 = read_buffer.parameter_6; + write_buffer.write_parameter_byte7 = read_buffer.parameter_7; + write_buffer.write_parameter_byte8 = v_meta_event_data_u8; +} +/*! + * @brief API used to set the meta event for + * non wakeup FIFO control from + * system page-1 parameter 1 + * + * + * @param v_meta_event_u8 : The value of meta event selection + * meta event | value + * --------------------------|--------------- + * BHY_META_EVENT_1 | 1 + * BHY_META_EVENT_2 | 2 + * BHY_META_EVENT_3 | 3 + * BHY_META_EVENT_4 | 4 + * BHY_META_EVENT_5 | 5 + * BHY_META_EVENT_6 | 6 + * BHY_META_EVENT_7 | 7 + * BHY_META_EVENT_8 | 8 + * BHY_META_EVENT_9 | 9 + * BHY_META_EVENT_10 | 10 + * BHY_META_EVENT_11 | 11 + * BHY_META_EVENT_12 | 12 + * BHY_META_EVENT_13 | 13 + * BHY_META_EVENT_14 | 14 + * BHY_META_EVENT_15 | 15 + * BHY_META_EVENT_16 | 16 + * BHY_META_EVENT_17 | 17 + * BHY_META_EVENT_18 | 18 + * BHY_META_EVENT_19 | 19 + * BHY_META_EVENT_20 | 20 + * BHY_META_EVENT_21 | 21 + * BHY_META_EVENT_22 | 22 + * BHY_META_EVENT_23 | 23 + * BHY_META_EVENT_24 | 24 + * BHY_META_EVENT_25 | 25 + * BHY_META_EVENT_26 | 26 + * BHY_META_EVENT_27 | 27 + * BHY_META_EVENT_28 | 28 + * BHY_META_EVENT_29 | 29 + * BHY_META_EVENT_30 | 30 + * BHY_META_EVENT_31 | 31 + * BHY_META_EVENT_32 | 32 + + * + * @param v_event_type_u8 : The value of + * interrupt or event selection + * value | Event + * -------------------------|---------------- + * BHY_META_EVENT_INTR_ENABLE | 0 + * BHY_META_EVENT_ENABLE | 1 + * + * @param v_input_data_u8 : The value of meta event + * @note Value for write each event in a bit + * value | Event or Interrupt + * ---------------|---------------------- + * 0 | DISABLE EVENT + * 1 | ENABLE EVENT + * + * @param v_meta_parameter_request_u8: The value of parameter + * for wakeup or non wakeup fifo + * + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_meta_event( +u8 v_meta_event_u8, +u8 v_input_data_u8, u8 v_event_type_u8, +u8 v_meta_parameter_request_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_meta_bytes_u8 = BHY_INIT_VALUE; + /* read the stored meta events using saved parameter bytes*/ + com_rslt = bhy_read_parameter_bytes( + BHY_PAGE_1, v_meta_parameter_request_u8); + if (BHY_SUCCESS == com_rslt) { + /* switch for selecting the different meta events*/ + switch (v_meta_event_u8) { + /* case for meta event one*/ + case BHY_META_EVENT_1: + /* switch for selecting interrupt or event*/ + switch (v_event_type_u8) { + /* case for event enable*/ + case BHY_META_EVENT_ENABLE: + /* set the meta event 1, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_1 & (~(1 << 1)))|(v_input_data_u8 << 1)); + bhy_assign_meta_event_byte0(v_meta_bytes_u8); + break; + /* case for interrupt enable*/ + case BHY_META_INTR_ENABLE: + /* set the meta event 1, interrupt enable*/ + v_meta_bytes_u8 = (read_buffer.parameter_1&(~(1 << 0))| v_input_data_u8); + bhy_assign_meta_event_byte0(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + /* case for meta event 2*/ + case BHY_META_EVENT_2: + /* case for interrupt or event enable*/ + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 2, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_1 & (~(1 << 3)))|(v_input_data_u8 << 3)); + bhy_assign_meta_event_byte0(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 2, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_1 & (~(1 << 2)))|(v_input_data_u8 << 2)); + bhy_assign_meta_event_byte0(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + /* case for meta event 3*/ + case BHY_META_EVENT_3: + switch (v_event_type_u8) { + /* case for event or interrupt enable*/ + case BHY_META_EVENT_ENABLE: + /* set the meta event 3, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_1 & (~(1 << 5)))|(v_input_data_u8 << 5)); + bhy_assign_meta_event_byte0(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 3, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_1 & (~(1 << 4)))|(v_input_data_u8 << 4)); + bhy_assign_meta_event_byte0(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + /* case for meta event four*/ + case BHY_META_EVENT_4: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 4, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_1 & (~(1 << 7)))|(v_input_data_u8 << 7)); + bhy_assign_meta_event_byte0(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 4, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_1 & (~(1 << 6)))|(v_input_data_u8 << 6)); + bhy_assign_meta_event_byte0(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_5: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 5, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_2 & (~(1 << 1)))|(v_input_data_u8 << 1)); + bhy_assign_meta_event_byte1(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 5, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_2 & (~(1 << 0)))|(v_input_data_u8 << 0)); + bhy_assign_meta_event_byte1(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_6: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 6, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_2 & (~(1 << 3)))|(v_input_data_u8 << 3)); + bhy_assign_meta_event_byte1(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 6, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_2 & (~(1 << 2)))|(v_input_data_u8 << 2)); + bhy_assign_meta_event_byte1(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_7: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 7, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_2 & (~(1 << 5)))|(v_input_data_u8 << 5)); + bhy_assign_meta_event_byte1(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 7, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_2 & (~(1 << 4)))|(v_input_data_u8 << 4)); + bhy_assign_meta_event_byte1(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_8: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 8, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_2 & (~(1 << 7)))|(v_input_data_u8 << 7)); + bhy_assign_meta_event_byte1(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 8, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_2 & (~(1 << 6)))|(v_input_data_u8 << 6)); + bhy_assign_meta_event_byte1(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_9: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 9, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_3 & (~(1 << 1)))|(v_input_data_u8 << 1)); + bhy_assign_meta_event_byte2(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 9, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_3 & (~(1 << 0)))|(v_input_data_u8 << 0)); + bhy_assign_meta_event_byte2(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_10: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 10, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_3 & (~(1 << 3)))|(v_input_data_u8 << 3)); + bhy_assign_meta_event_byte2(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 10, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_3 & (~(1 << 2)))|(v_input_data_u8 << 2)); + bhy_assign_meta_event_byte2(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_11: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 11, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_3 & (~(1 << 5)))|(v_input_data_u8 << 5)); + bhy_assign_meta_event_byte2(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 11, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_3 & (~(1 << 4)))|(v_input_data_u8 << 4)); + bhy_assign_meta_event_byte2(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_12: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 12, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_3 & (~(1 << 7)))|(v_input_data_u8 << 7)); + bhy_assign_meta_event_byte2(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 12, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_3 & (~(1 << 6)))|(v_input_data_u8 << 6)); + bhy_assign_meta_event_byte2(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_13: + /* set the meta event 13, event enable*/ + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + v_meta_bytes_u8 = ((read_buffer.parameter_4 & (~(1 << 1)))|(v_input_data_u8 << 1)); + bhy_assign_meta_event_byte3(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 13, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_4 & (~(1 << 0)))|(v_input_data_u8 << 0)); + bhy_assign_meta_event_byte3(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_14: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 14, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_4 & (~(1 << 3)))|(v_input_data_u8 << 3)); + bhy_assign_meta_event_byte3(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 14, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_4 & (~(1 << 2)))|(v_input_data_u8 << 2)); + bhy_assign_meta_event_byte3(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_15: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 15, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_4 & (~(1 << 5)))|(v_input_data_u8 << 5)); + bhy_assign_meta_event_byte3(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 15, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_4 & (~(1 << 4)))|(v_input_data_u8 << 4)); + bhy_assign_meta_event_byte3(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_16: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 16, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_4 & (~(1 << 7)))|(v_input_data_u8 << 7)); + bhy_assign_meta_event_byte3(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 16, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_4 & (~(1 << 6)))|(v_input_data_u8 << 6)); + bhy_assign_meta_event_byte3(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_17: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 17, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_5 & (~(1 << 1)))|(v_input_data_u8 << 1)); + bhy_assign_meta_event_byte4(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 17, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_5 & (~(1 << 0)))|(v_input_data_u8 << 0)); + bhy_assign_meta_event_byte4(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_18: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 18, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_5 & (~(1 << 3)))|(v_input_data_u8 << 3)); + bhy_assign_meta_event_byte4(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 18, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_5 & (~(1 << 2)))|(v_input_data_u8 << 2)); + bhy_assign_meta_event_byte4(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_19: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 19, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_5 & (~(1 << 5)))|(v_input_data_u8 << 5)); + bhy_assign_meta_event_byte4(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 19, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_5 & (~(1 << 4)))|(v_input_data_u8 << 4)); + bhy_assign_meta_event_byte4(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_20: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 20, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_5 & (~(1 << 7)))|(v_input_data_u8 << 7)); + bhy_assign_meta_event_byte4(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 20, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_5 & (~(1 << 6)))|(v_input_data_u8 << 6)); + bhy_assign_meta_event_byte4(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_21: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 21, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_6 & (~(1 << 1)))|(v_input_data_u8 << 1)); + bhy_assign_meta_event_byte5(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 21, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_6 & (~(1 << 0)))|(v_input_data_u8 << 0)); + bhy_assign_meta_event_byte5(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_22: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 22, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_6 & (~(1 << 3)))|(v_input_data_u8 << 3)); + bhy_assign_meta_event_byte5(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 22, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_6 & (~(1 << 2)))|(v_input_data_u8 << 2)); + bhy_assign_meta_event_byte5(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_23: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 23, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_6 & (~(1 << 5)))|(v_input_data_u8 << 5)); + bhy_assign_meta_event_byte5(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 23, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_6 & (~(1 << 4)))|(v_input_data_u8 << 4)); + bhy_assign_meta_event_byte5(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_24: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 24, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_6 & (~(1 << 7)))|(v_input_data_u8 << 7)); + bhy_assign_meta_event_byte5(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 24, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_6 & (~(1 << 6)))|(v_input_data_u8 << 6)); + bhy_assign_meta_event_byte5(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_25: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 25, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_7 & (~(1 << 1)))|(v_input_data_u8 << 1)); + bhy_assign_meta_event_byte6(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 25, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_7 & (~(1 << 0)))|(v_input_data_u8 << 0)); + bhy_assign_meta_event_byte6(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_26: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 26, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_7 & (~(1 << 3)))|(v_input_data_u8 << 3)); + bhy_assign_meta_event_byte6(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 26, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_7 & (~(1 << 2)))|(v_input_data_u8 << 2)); + bhy_assign_meta_event_byte6(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_27: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 27, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_7 & (~(1 << 5)))|(v_input_data_u8 << 5)); + bhy_assign_meta_event_byte6(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 27, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_7 & (~(1 << 4)))|(v_input_data_u8 << 4)); + bhy_assign_meta_event_byte6(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_28: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 28, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_7 & (~(1 << 7)))|(v_input_data_u8 << 7)); + bhy_assign_meta_event_byte6(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 28, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_7 & (~(1 << 6)))|(v_input_data_u8 << 6)); + bhy_assign_meta_event_byte6(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_29: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 29, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_8 & (~(1 << 1)))|(v_input_data_u8 << 1)); + bhy_assign_meta_event_byte7(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 29, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_8 & (~(1 << 0)))|(v_input_data_u8 << 0)); + bhy_assign_meta_event_byte7(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_30: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 30, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_8 & (~(1 << 3)))|(v_input_data_u8 << 3)); + bhy_assign_meta_event_byte7(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 30, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_8 & (~(1 << 2)))|(v_input_data_u8 << 2)); + bhy_assign_meta_event_byte7(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_31: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 31, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_8 & (~(1 << 5)))|(v_input_data_u8 << 5)); + bhy_assign_meta_event_byte7(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 31, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_8 & (~(1 << 4)))|(v_input_data_u8 << 4)); + bhy_assign_meta_event_byte7(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_32: + switch (v_event_type_u8) { + case BHY_META_EVENT_ENABLE: + /* set the meta event 32, event enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_8 & (~(1 << 7)))|(v_input_data_u8 << 7)); + bhy_assign_meta_event_byte7(v_meta_bytes_u8); + break; + case BHY_META_INTR_ENABLE: + /* set the meta event 32, interrupt enable*/ + v_meta_bytes_u8 = ((read_buffer.parameter_8 & (~(1 << 6)))|(v_input_data_u8 << 6)); + bhy_assign_meta_event_byte7(v_meta_bytes_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + } + /* write the meta event values to the meta event bytes*/ + com_rslt += bhy_write_parameter_bytes( + BHY_PAGE_1, (v_meta_parameter_request_u8+0x80)); + return com_rslt; +} +/*! + * @brief API used to get the meta event control from + * system page-1 parameter 1 + * + * @param v_meta_event_u8 : The value of meta event selection + * meta event | value + * --------------------------|--------------- + * BHY_META_EVENT_1 | 1 + * BHY_META_EVENT_2 | 2 + * BHY_META_EVENT_3 | 3 + * BHY_META_EVENT_4 | 4 + * BHY_META_EVENT_5 | 5 + * BHY_META_EVENT_6 | 6 + * BHY_META_EVENT_7 | 7 + * BHY_META_EVENT_8 | 8 + * BHY_META_EVENT_9 | 9 + * BHY_META_EVENT_10 | 10 + * BHY_META_EVENT_11 | 11 + * BHY_META_EVENT_12 | 12 + * BHY_META_EVENT_13 | 13 + * BHY_META_EVENT_14 | 14 + * BHY_META_EVENT_15 | 15 + * BHY_META_EVENT_16 | 16 + * BHY_META_EVENT_17 | 17 + * BHY_META_EVENT_18 | 18 + * BHY_META_EVENT_19 | 19 + * BHY_META_EVENT_20 | 20 + * BHY_META_EVENT_21 | 21 + * BHY_META_EVENT_22 | 22 + * BHY_META_EVENT_23 | 23 + * BHY_META_EVENT_24 | 24 + * BHY_META_EVENT_25 | 25 + * BHY_META_EVENT_26 | 26 + * BHY_META_EVENT_27 | 27 + * BHY_META_EVENT_28 | 28 + * BHY_META_EVENT_29 | 29 + * BHY_META_EVENT_30 | 30 + * BHY_META_EVENT_31 | 31 + * BHY_META_EVENT_32 | 32 + * + * @param meta_intr : + * The value of meta event interrupt selection + * + * @param meta_event : + * The value of meta event event selection + * + * @param v_event_type_u8 : The value of + * interrupt or event selection + * value | Event + * -------------------------|---------------- + * BHY_META_EVENT_INTR_ENABLE | 0 + * BHY_META_EVENT_ENABLE | 1 + * + * @param v_meta_parameter_request_u8: The value of parameter request + * for wakeup or non wakeup fifo + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_meta_event( +u8 v_meta_event_u8, u8 v_event_type_u8, +u8* meta_event_intr, +u8* meta_event_event, +u8 v_meta_parameter_request_u8) +{ +/* variable used for return the status of communication result*/ +BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; +u8 v_meta_event_byte_0_u8 = BHY_INIT_VALUE; +u8 v_meta_event_byte_1_u8 = BHY_INIT_VALUE; +u8 v_meta_event_byte_2_u8 = BHY_INIT_VALUE; +u8 v_meta_event_byte_3_u8 = BHY_INIT_VALUE; +u8 v_meta_event_byte_4_u8 = BHY_INIT_VALUE; +u8 v_meta_event_byte_5_u8 = BHY_INIT_VALUE; +u8 v_meta_event_byte_6_u8 = BHY_INIT_VALUE; +u8 v_meta_event_byte_7_u8 = BHY_INIT_VALUE; +/* check the p_bhy pointer as NULL*/ +if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; +} else { + /* input as page 1 and parameter 1 for system page*/ + com_rslt = bhy_read_parameter_bytes( + BHY_PAGE_1, v_meta_parameter_request_u8); + v_meta_event_byte_0_u8 = read_buffer.parameter_1; + v_meta_event_byte_1_u8 = read_buffer.parameter_2; + v_meta_event_byte_2_u8 = read_buffer.parameter_3; + v_meta_event_byte_3_u8 = read_buffer.parameter_4; + v_meta_event_byte_4_u8 = read_buffer.parameter_5; + v_meta_event_byte_5_u8 = read_buffer.parameter_6; + v_meta_event_byte_6_u8 = read_buffer.parameter_7; + v_meta_event_byte_7_u8 = read_buffer.parameter_8; + switch (v_meta_event_u8) { + case BHY_META_EVENT_1: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + (v_meta_event_byte_0_u8 & + BHY_META_EVENT1_INTR_ENABLE); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_0_u8 & + BHY_META_EVENT1_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_01_BIT); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_2: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_0_u8 & + BHY_META_EVENT2_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_02_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_0_u8 & + BHY_META_EVENT2_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_03_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_3: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_0_u8 & + BHY_META_EVENT3_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_04_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_0_u8 & + BHY_META_EVENT3_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_05_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_4: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_0_u8 & + BHY_META_EVENT4_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_06_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_0_u8 & + BHY_META_EVENT4_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_07_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_5: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + (v_meta_event_byte_1_u8 & + BHY_META_EVENT5_INTR_ENABLE); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_1_u8 & + BHY_META_EVENT5_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_01_BIT); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_6: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_1_u8 & + BHY_META_EVENT6_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_02_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_1_u8 & + BHY_META_EVENT6_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_03_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_7: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_1_u8 & + BHY_META_EVENT7_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_04_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_1_u8 & + BHY_META_EVENT7_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_05_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_8: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_1_u8 & + BHY_META_EVENT8_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_06_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_1_u8 & + BHY_META_EVENT8_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_07_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_9: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + (v_meta_event_byte_2_u8 & + BHY_META_EVENT9_INTR_ENABLE); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_2_u8 & + BHY_META_EVENT9_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_01_BIT); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_10: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_2_u8 & + BHY_META_EVENT10_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_02_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_2_u8 & + BHY_META_EVENT10_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_03_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_11: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_2_u8 & + BHY_META_EVENT11_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_04_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_2_u8 & + BHY_META_EVENT11_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_05_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_12: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_2_u8 & + BHY_META_EVENT12_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_06_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_2_u8 & + BHY_META_EVENT12_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_07_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_13: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + (v_meta_event_byte_3_u8 & + BHY_META_EVENT13_INTR_ENABLE); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_3_u8 & + BHY_META_EVENT13_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_01_BIT); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_14: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_3_u8 & + BHY_META_EVENT14_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_02_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_3_u8 & + BHY_META_EVENT14_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_03_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_15: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_3_u8 & + BHY_META_EVENT15_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_04_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_3_u8 & + BHY_META_EVENT15_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_05_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_16: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_3_u8 & + BHY_META_EVENT16_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_06_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_3_u8 & + BHY_META_EVENT16_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_07_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_17: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + (v_meta_event_byte_4_u8 & + BHY_META_EVENT17_INTR_ENABLE); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_4_u8 & + BHY_META_EVENT17_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_01_BIT); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_18: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_4_u8 & + BHY_META_EVENT18_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_02_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_4_u8 & + BHY_META_EVENT18_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_03_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_19: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_4_u8 & + BHY_META_EVENT19_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_04_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_4_u8 & + BHY_META_EVENT19_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_05_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_20: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_4_u8 & + BHY_META_EVENT20_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_06_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_4_u8 & + BHY_META_EVENT20_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_07_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_21: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + (v_meta_event_byte_5_u8 & + BHY_META_EVENT21_INTR_ENABLE); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_5_u8 & + BHY_META_EVENT21_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_01_BIT); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_22: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_5_u8 & + BHY_META_EVENT22_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_02_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_5_u8 & + BHY_META_EVENT22_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_03_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_23: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_5_u8 & + BHY_META_EVENT23_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_04_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_5_u8 & + BHY_META_EVENT23_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_05_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_24: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_5_u8 & + BHY_META_EVENT24_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_06_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_5_u8 & + BHY_META_EVENT24_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_07_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_25: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + (v_meta_event_byte_6_u8 & + BHY_META_EVENT25_INTR_ENABLE); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_6_u8 & + BHY_META_EVENT25_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_01_BIT); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_26: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_6_u8 & + BHY_META_EVENT26_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_02_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_6_u8 & + BHY_META_EVENT26_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_03_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_27: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_6_u8 & + BHY_META_EVENT27_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_04_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_6_u8 & + BHY_META_EVENT27_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_05_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_28: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_6_u8 & + BHY_META_EVENT28_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_06_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_6_u8 & + BHY_META_EVENT28_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_07_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_29: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + (v_meta_event_byte_7_u8 & + BHY_META_EVENT29_INTR_ENABLE); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_7_u8 & + BHY_META_EVENT29_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_01_BIT); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_30: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_7_u8 & + BHY_META_EVENT30_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_02_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_7_u8 & + BHY_META_EVENT30_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_03_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_31: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_7_u8 & + BHY_META_EVENT31_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_04_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_7_u8 & + BHY_META_EVENT31_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_05_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + case BHY_META_EVENT_32: + switch (v_event_type_u8) { + case BHY_META_INTR_ENABLE: + *meta_event_intr = (u8) + ((v_meta_event_byte_7_u8 & + BHY_META_EVENT32_INTR_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_06_BITS); + break; + case BHY_META_EVENT_ENABLE: + *meta_event_event = (u8) + ((v_meta_event_byte_7_u8 & + BHY_META_EVENT32_EVENT_ENABLE) + >> BHY_SHIFT_BIT_POSITION_BY_07_BITS); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } +} +return com_rslt; +} +/*! + * @brief API used to get the fifo water mark from + * system page-1 parameter 2 + * + * + * @param v_parameter_u8 : + * The value of fifo water mark wakeup or non-wakeup selection + * water mark | value + * --------------------------|--------------- + * FIFO_WM_WAKEUP | 0 + * FIFO_WM_NON_WAKEUP | 1 + * + * @param v_fifo_water_mark_u16: The value of fifo water mark + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_fifo_water_mark(u8 v_parameter_u8, u16 *v_fifo_water_mark_u16) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_fifo_wm_wakeup_lsb_u8 = BHY_INIT_VALUE; + u8 v_fifo_wm_wakeup_msb_u8 = BHY_INIT_VALUE; + u8 v_fifo_wm_non_wakeup_lsb_u8 = BHY_INIT_VALUE; + u8 v_fifo_wm_non_wakeup_msb_u8 = BHY_INIT_VALUE; + /* input as page 1 and parameter 2 for system page*/ + com_rslt = bhy_read_parameter_bytes( BHY_PAGE_1, BHY_PARAMETER_REQUEST_READ_PARAMETER_2); + if (BHY_SUCCESS == com_rslt) + { + switch (v_parameter_u8) + { + case BHY_FIFO_WATER_MARK_WAKEUP: + /* fifo wakeup water mark*/ + v_fifo_wm_wakeup_lsb_u8 = read_buffer.parameter_1; + v_fifo_wm_wakeup_msb_u8 = read_buffer.parameter_2; + *v_fifo_water_mark_u16 = (u16)((v_fifo_wm_wakeup_msb_u8 << BHY_SHIFT_BIT_POSITION_BY_08_BITS)\ + |(v_fifo_wm_wakeup_lsb_u8)); + break; + case BHY_FIFO_WATER_MARK_NON_WAKEUP: + /* fifo non wakeup water mark*/ + v_fifo_wm_non_wakeup_lsb_u8 = read_buffer.parameter_5; + v_fifo_wm_non_wakeup_msb_u8 = read_buffer.parameter_6; + *v_fifo_water_mark_u16 = (u16)((v_fifo_wm_non_wakeup_msb_u8<< BHY_SHIFT_BIT_POSITION_BY_08_BITS)\ + |(v_fifo_wm_non_wakeup_lsb_u8)); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + } + return com_rslt; +} +/*! + * @brief API used to set the fifo water mark from + * system page-1 parameter 2 + * + * + * @param v_parameter_u8 : + * The value of fifo water mark wakeup or non-wakeup selection + * water mark | value + * --------------------------|--------------- + * FIFO_WM_WAKEUP | 0 + * FIFO_WM_NON_WAKEUP | 1 + * + * @param v_fifo_water_mark_u16: The value of fifo water mark + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_fifo_water_mark(u8 v_parameter_u8, u16 v_fifo_water_mark_u16) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_fifo_wm_lsb_u8 = BHY_INIT_VALUE; + u8 v_fifo_wm_msb_u8 = BHY_INIT_VALUE; + /* read the fifo water mark using saved parameter bytes*/ + com_rslt = bhy_read_parameter_bytes( BHY_PAGE_1, BHY_PARAMETER_REQUEST_READ_PARAMETER_2); + if (BHY_SUCCESS == com_rslt) + { + v_fifo_wm_lsb_u8 = (u8)(v_fifo_water_mark_u16 & BHY_MASK_LSB_DATA); + v_fifo_wm_msb_u8 = (u8)((v_fifo_water_mark_u16 & BHY_MASK_MSB_DATA)>> BHY_SHIFT_BIT_POSITION_BY_08_BITS); + switch (v_parameter_u8) + { + /* fifo wakeup water mark*/ + case BHY_FIFO_WATER_MARK_WAKEUP: + write_buffer.write_parameter_byte1 = v_fifo_wm_lsb_u8; + write_buffer.write_parameter_byte2 = v_fifo_wm_msb_u8; + write_buffer.write_parameter_byte5 = read_buffer.parameter_5; + write_buffer.write_parameter_byte6 = read_buffer.parameter_6; + break; + /* fifo non wakeup water mark*/ + case BHY_FIFO_WATER_MARK_NON_WAKEUP: + write_buffer.write_parameter_byte1 = read_buffer.parameter_1; + write_buffer.write_parameter_byte2 = read_buffer.parameter_2; + write_buffer.write_parameter_byte5 = v_fifo_wm_lsb_u8; + write_buffer.write_parameter_byte6 = v_fifo_wm_msb_u8; + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + } + com_rslt += bhy_write_parameter_bytes( + BHY_PAGE_1, BHY_PARAMETER_REQUEST_WRITE_PARAMETER_2); + return com_rslt; +} +/*! + * @brief API used to get the fifo size from + * system page-1 parameter 2 + * @note wakeup - bytes from 2 and 3 + * @note non wakeup - bytes from 6 and 7 + * + * + * @param v_fifo_size_select_u8 : + * The value of fifo size mark wakeup or non-wakeup selection + * water mark | value + * --------------------------|--------------- + * BHY_FIFO_SIZE_WAKEUP | 0 + * BHY_FIFO_SIZE_NON_WAKEUP | 1 + * + * @param v_fifo_size_u16 : The value of fifo size + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_fifo_size( +u8 v_fifo_size_select_u8, u16 *v_fifo_size_u16) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_fifo_size_wakeup_lsb_u8 = BHY_INIT_VALUE; + u8 v_fifo_size_wakeup_msb_u8 = BHY_INIT_VALUE; + u8 v_fifo_size_non_wakeup_lsb_u8 = BHY_INIT_VALUE; + u8 v_fifo_size_non_wakeup_msb_u8 = BHY_INIT_VALUE; + /* check the p_bhy pointer as NULL*/ + if (BHY_NULL_PTR == p_bhy) { + com_rslt = BHY_NULL; + } else { + /* input as page 1 and parameter 2 for system page*/ + com_rslt = bhy_read_parameter_bytes( + BHY_PAGE_1, BHY_PARAMETER_REQUEST_READ_PARAMETER_2); + if (BHY_SUCCESS == com_rslt) { + switch (v_fifo_size_select_u8) { + case BHY_FIFO_SIZE_WAKEUP: + /* fifo size in wakeup*/ + v_fifo_size_wakeup_lsb_u8 = + read_buffer.parameter_3; + v_fifo_size_wakeup_msb_u8 = + read_buffer.parameter_4; + *v_fifo_size_u16 = + (u16)((v_fifo_size_wakeup_msb_u8 + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + |(v_fifo_size_wakeup_lsb_u8)); + break; + case BHY_FIFO_SIZE_NON_WAKEUP: + /* fifo size in non wakeup*/ + v_fifo_size_non_wakeup_lsb_u8 = + read_buffer.parameter_7; + v_fifo_size_non_wakeup_msb_u8 = + read_buffer.parameter_8; + *v_fifo_size_u16 = + (u16)((v_fifo_size_non_wakeup_msb_u8 + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + |(v_fifo_size_non_wakeup_lsb_u8)); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + } + } + return com_rslt; +} +/*! + * @brief API used to assign the sensor status bank data + * + * + * @param v_sensor_status_u8 : + * The value for saved parameter data + * + * + * @return Nothing + * + * +*/ +static void bhy_assign_sensor_status_bank(u8 v_sensor_status_u8) +{ + /* Assign the sensor status bank*/ + /* data available*/ + sensor_status_bank.data_available = (u8) + (v_sensor_status_u8 + & BHY_SENSOR_BANK_STATUS_DATA_AVAILABLE); + /* i2c nack*/ + sensor_status_bank.i2c_nack = (u8) + ((v_sensor_status_u8 + & BHY_SENSOR_BANK_STATUS_I2C_NACK) + >> BHY_SHIFT_BIT_POSITION_BY_01_BIT); + /* device id error*/ + sensor_status_bank.device_id_error = (u8) + ((v_sensor_status_u8 + & BHY_SENSOR_BANK_STATUS_DEVICE_ID_ERROR) + >> BHY_SHIFT_BIT_POSITION_BY_02_BITS); + /* transient error*/ + sensor_status_bank.transient_error = (u8) + ((v_sensor_status_u8 + & BHY_SENSOR_BANK_STATUS_TRANSIENT_ERROR) + >> BHY_SHIFT_BIT_POSITION_BY_03_BITS); + /* data lost*/ + sensor_status_bank.data_lost = (u8) + ((v_sensor_status_u8 + & BHY_SENSOR_BANK_STATUS_DATA_LOST) + >> BHY_SHIFT_BIT_POSITION_BY_04_BITS); + /* sensor power mode*/ + sensor_status_bank.sensor_power_mode = (u8) + ((v_sensor_status_u8 + & BHY_SENSOR_BANK_STATUS_POWER_MODE) + >> BHY_SHIFT_BIT_POSITION_BY_05_BITS); + +} +/*! + * @brief API used to get the sensor status bank from + * system page-1 parameter 3 to 6 + * @note Sensor status bank 0 : parameter 3 contains 1 to 16 sensor type + * @note Sensor status bank 1 : parameter 4 contains 17 to 32 sensor type + * @note Sensor status bank 2 : parameter 5 contains 33 to 48 sensor type + * @note Sensor status bank 3 : parameter 6 contains 49 to 64 sensor type + * + * + * @param v_sensor_type_u8 : + * The value of sensor status bank sensor type selection + * v_sensor_type_u8 | value + * -----------------------------------|--------------- + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_1 | 0 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_2 | 1 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_3 | 3 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_4 | 4 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_5 | 5 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_6 | 6 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_7 | 7 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_8 | 8 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_9 | 9 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_10 | 10 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_11 | 11 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_12 | 12 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_13 | 13 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_14 | 14 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_15 | 15 + * BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_16 | 16 + * + * + * @param v_sensor_status_parameter_u8 : + * The value of sensor status bank parameter selection + * parameter | value + * -------------------------------|----------------- + * BHY_PARAMETER_REQUEST_READ_PARAMETER_3 | 0x03 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_4 | 0x04 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_5 | 0x05 + * BHY_PARAMETER_REQUEST_READ_PARAMETER_6 | 0x06 + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_sensor_status_bank( +u8 v_sensor_status_parameter_u8, u8 v_sensor_type_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_data_u8 = BHY_INIT_VALUE; + /* input as page 1 and parameter + 3(4 or 5 or 6)for system page*/ + com_rslt = bhy_read_parameter_bytes( + BHY_PAGE_1, v_sensor_status_parameter_u8); + if (BHY_SUCCESS == com_rslt) { + switch (v_sensor_type_u8) { + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_1: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_1; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_2: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_2; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_3: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_3; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_4: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_4; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_5: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_5; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_6: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_6; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_7: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_7; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_8: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_8; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_9: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_9; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_10: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_10; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_11: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_11; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_12: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_12; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_13: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_13; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_14: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_14; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_15: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_15; + bhy_assign_sensor_status_bank(v_data_u8); + break; + case BHY_SENSOR_STATUS_BANK_SENSOR_TYPE_16: + /* sensor status of data available*/ + v_data_u8 = read_buffer.parameter_16; + bhy_assign_sensor_status_bank(v_data_u8); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + } + return com_rslt; +} +/*! + * @brief API used to get the host IRQ time + * stamp and current time stamp from + * system page-1 parameter 30 + * Host IRQ time stamp bytes 0 to 3 + * Current time stamp bytes 4 to 7 + * + * + * @param v_time_stamp_selection_u8 : + * The value of Host IRQ or current time stamp selection + * time stamp | value + * --------------------------|--------------- + * BHY_HOST_IRQ_TIMESTAMP | 0 + * BHY_CURRENT_TIME_STAMP | 1 + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * @param v_time_stamp_u32 : + * The value of Host IRQ or current time stamp + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_time_stamp( +u8 v_time_stamp_selection_u8, u32 *v_time_stamp_u32) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u16 v_lsb_time_u16 = BHY_INIT_VALUE; + u16 v_msb_time_u16 = BHY_INIT_VALUE; + /* input as page 1 and parameter 30 for system page*/ + com_rslt = bhy_read_parameter_bytes( + BHY_PAGE_1, BHY_PARAMETER_REQUEST_READ_PARAMETER_30); + if (BHY_SUCCESS == com_rslt) { + switch (v_time_stamp_selection_u8) { + case BHY_HOST_IRQ_TIMESTAMP: + /* host IRQ time stamp*/ + /* IRQ time stamp lsb data*/ + v_lsb_time_u16 = (u16)((read_buffer.parameter_2 + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_1)); + /* IRQ time stamp msb data*/ + v_msb_time_u16 = (u16)((read_buffer.parameter_4 + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_3)); + /* return IRQ time stamp*/ + *v_time_stamp_u32 = (u32)(((u32)v_msb_time_u16 + << BHY_SHIFT_BIT_POSITION_BY_16_BITS) + | (v_lsb_time_u16)); + break; + case BHY_CURRENT_TIME_STAMP: + /* current time stamp*/ + /* current time stamp lsb data*/ + v_lsb_time_u16 = (u16)((read_buffer.parameter_6 + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_5)); + /* current time stamp msb data*/ + v_msb_time_u16 = (u16)((read_buffer.parameter_8 + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_7)); + /* return current time stamp*/ + *v_time_stamp_u32 = (u32)(((u32)v_msb_time_u16 + << BHY_SHIFT_BIT_POSITION_BY_16_BITS) + | (v_lsb_time_u16)); + break; + default: + com_rslt = BHY_OUT_OF_RANGE; + break; + } + } + return com_rslt; +} +/*! + * @brief API used to get the physical sensor status + * system page-1 parameter 31 + * @note Accel sample rate byte 0 and 1 + * @note Accel dynamic range byte 2 and 3 + * @note Accel flags byte 4 + * @note Gyro sample rate byte 5 and 6 + * @note Gyro dynamic range byte 7 and 8 + * @note Gyro flags byte 9 + * @note Mag sample rate byte 10 and 11 + * @note Mag dynamic range byte 12 and 13 + * @note Mag flags byte 14 + * + * @param accel_status : contains the accel physical status + * @param gyro_status : contains the gyro physical status + * @param mag_status : contains the mag physical status + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_physical_sensor_status( +struct accel_physical_status_t *accel_status, +struct gyro_physical_status_t *gyro_status, +struct mag_physical_status_t *mag_status) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + /* input as page 1 and parameter 31 for system page*/ + com_rslt = bhy_read_parameter_bytes( + BHY_PAGE_1, BHY_PARAMETER_REQUEST_READ_PARAMETER_31); + /* accel physical status*/ + /* accl sample rate*/ + accel_status->accel_sample_rate = (u16)((read_buffer.parameter_2 + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) | (read_buffer.parameter_1)); + /* accel dynamic range*/ + accel_status->accel_dynamic_range = (u16)((read_buffer.parameter_4 + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) | (read_buffer.parameter_3)); + /* accel flag*/ + accel_status->accel_flag = read_buffer.parameter_5; + /* gyro physical status*/ + /* gyro sample rate*/ + gyro_status->gyro_sample_rate = (u16)((read_buffer.parameter_7 + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) | (read_buffer.parameter_6)); + /* accel dynamic range*/ + gyro_status->gyro_dynamic_range = (u16)((read_buffer.parameter_9 + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) | (read_buffer.parameter_8)); + /* accel flag*/ + gyro_status->gyro_flag = (u8)(read_buffer.parameter_10); + /* mag physical status*/ + /* mag sample rate*/ + mag_status->mag_sample_rate = (u16)((read_buffer.parameter_12 + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) | (read_buffer.parameter_11)); + /* mag dynamic range*/ + mag_status->mag_dynamic_range = (u16)((read_buffer.parameter_14 + << BHY_SHIFT_BIT_POSITION_BY_08_BITS) | (read_buffer.parameter_13)); + /* accel flag*/ + mag_status->mag_flag = (u8)(read_buffer.parameter_15); + + return com_rslt; +} +/*! + * @brief API used to get the non wakeup sensor information, + * Sensor page-3 parameter 1 to 31 + * + * @param v_parameter_request_u8 : + * Value desired parameter to read non wakeup sensor information + * param_request | value | Virtual sensor + * ----------------------------------|-------|---------------- + * BHY_PARAMETER_REQUEST_READ_PARAMETER_1 | 0x01 | Accelerometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_2 | 0x02 | Magnetometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_3 | 0x03 | Orientation + * BHY_PARAMETER_REQUEST_READ_PARAMETER_4 | 0x04 | Gyroscope + * BHY_PARAMETER_REQUEST_READ_PARAMETER_5 | 0x05 | Light + * BHY_PARAMETER_REQUEST_READ_PARAMETER_6 | 0x06 | Barometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_7 | 0x87 | Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_8 | 0x88 | Proximity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_9 | 0x89 | Gravity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_10 | 0x8A | Liner accel + * BHY_PARAMETER_REQUEST_READ_PARAMETER_11 | 0x8B | Rotation vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_12 | 0x8C | Humidity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_13 | 0x8D | Ambient Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_14 | 0x8E | Uncalibrated Mag + * BHY_PARAMETER_REQUEST_READ_PARAMETER_15 | 0x8F | Game rotation Vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_16 | 0x90 | Uncalibrated Gyro + * BHY_PARAMETER_REQUEST_READ_PARAMETER_17 | 0x91 | Signification Motion + * BHY_PARAMETER_REQUEST_READ_PARAMETER_18 | 0x92 | Step detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_19 | 0x93 | Step Counter + * BHY_PARAMETER_REQUEST_READ_PARAMETER_20 | 0x94 | Geomagnetic + * BHY_PARAMETER_REQUEST_READ_PARAMETER_21 | 0x95 | Heart Rate + * BHY_PARAMETER_REQUEST_READ_PARAMETER_22 | 0x96 | Tilt Detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_23 | 0x97 | Wakeup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_24 | 0x98 | Glance Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_25 | 0x99 | Pickup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_31 | 0x9F | Activity + * + * @param sensor_information : + * holds the value of non wakeup sensor information + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_non_wakeup_sensor_information( +u8 v_parameter_request_u8, +struct sensor_information_non_wakeup_t *sensor_information) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + /* input as page 3 and parameter request for sensor page*/ + com_rslt = bhy_read_parameter_bytes( + BHY_PAGE_3, v_parameter_request_u8); + /* sensor type information */ + sensor_information->non_wakeup_sensor_type + = (u8)(read_buffer.parameter_1); + /* driver id information */ + sensor_information->non_wakeup_driver_id = + (u8)(read_buffer.parameter_2); + /* driver version information */ + sensor_information->non_wakeup_driver_version = + (u8)(read_buffer.parameter_3); + /* power information */ + sensor_information->non_wakeup_power = + (u8)(read_buffer.parameter_4); + /* maximum range information */ + sensor_information->non_wakeup_max_range = (u16) + ((read_buffer.parameter_6 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_5)); + /* resolution information */ + sensor_information->non_wakeup_resolution = (u16) + ((read_buffer.parameter_8 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_7)); + /* maximum rate information */ + sensor_information->non_wakeup_max_rate = (u16) + ((read_buffer.parameter_10 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_9)); + /* fifo reserved information */ + sensor_information->non_wakeup_fifo_reserved = (u16) + ((read_buffer.parameter_12 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_11)); + /* fifo max information */ + sensor_information->non_wakeup_fifo_max = (u16) + ((read_buffer.parameter_14 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_13)); + /* event size information */ + sensor_information->non_wakeup_event_size = read_buffer.parameter_15; + /* minimum rate information */ + sensor_information->non_wakeup_min_rate = read_buffer.parameter_16; + + return com_rslt; +} +/*! + * @brief API used to get the wakeup sensor information, + * Sensor page-3 parameter 32 to 63 + * + * @param v_parameter_request_u8 : + * Value desired parameter to read non wakeup sensor information + * param_request | value | Virtual sensor + * ----------------------------------|-------|---------------- + * BHY_PARAMETER_REQUEST_READ_PARAMETER_33 | 0xA1 | Accelerometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_34 | 0xA2 | Magnetometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_35 | 0xA3 | Orientation + * BHY_PARAMETER_REQUEST_READ_PARAMETER_36 | 0xA4 | Gyroscope + * BHY_PARAMETER_REQUEST_READ_PARAMETER_37 | 0xA5 | Light + * BHY_PARAMETER_REQUEST_READ_PARAMETER_38 | 0xA6 | Barometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_39 | 0xA7 | Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_40 | 0xA8 | Proximity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_41 | 0xA9 | Gravity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_42 | 0xAA | Liner accel + * BHY_PARAMETER_REQUEST_READ_PARAMETER_43 | 0xAB | Rotation vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_44 | 0xAC | Humidity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_45 | 0xAD | Ambient Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_46 | 0xAE | Uncalibrated Mag + * BHY_PARAMETER_REQUEST_READ_PARAMETER_47 | 0xAF | Game rotation Vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_48 | 0xB0 | Uncalibrated Gyro + * BHY_PARAMETER_REQUEST_READ_PARAMETER_49 | 0xB1 | Signification Motion + * BHY_PARAMETER_REQUEST_READ_PARAMETER_50 | 0xB2 | Step detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_51 | 0xB3 | Step Counter + * BHY_PARAMETER_REQUEST_READ_PARAMETER_52 | 0xB4 | Geomagnetic + * BHY_PARAMETER_REQUEST_READ_PARAMETER_53 | 0xB5 | Heart Rate + * BHY_PARAMETER_REQUEST_READ_PARAMETER_54 | 0xB6 | Tilt Detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_55 | 0xB7 | Wakeup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_56 | 0xB8 | Glance Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_57 | 0xB9 | Pickup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_63 | 0xBF | Activity + * + * @param sensor_information : + * holds the value of non wakeup sensor information + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_wakeup_sensor_information( +u8 v_parameter_request_u8, +struct sensor_information_wakeup_t *sensor_information) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + /* input as page 3 and parameter request for sensor page*/ + com_rslt = bhy_read_parameter_bytes( + BHY_PAGE_3, v_parameter_request_u8); + /* sensor type information */ + sensor_information->wakeup_sensor_type = + (u8)(read_buffer.parameter_1); + /* driver id information */ + sensor_information->wakeup_driver_id = + (u8)(read_buffer.parameter_2); + /* driver version information */ + sensor_information->wakeup_driver_version = + (u8)(read_buffer.parameter_3); + /* power information */ + sensor_information->wakeup_power = + (u8)(read_buffer.parameter_4); + /* maximum range information */ + sensor_information->wakeup_max_range = (u16) + ((read_buffer.parameter_6 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_5)); + /* resolution information */ + sensor_information->wakeup_resolution = (u16) + ((read_buffer.parameter_8 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_7)); + /* maximum rate information */ + sensor_information->wakeup_max_rate = (u16) + ((read_buffer.parameter_10 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_9)); + /* fifo reserved information */ + sensor_information->wakeup_fifo_reserved = (u16) + ((read_buffer.parameter_12 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_11)); + /* fifo max information */ + sensor_information->wakeup_fifo_max = (u16) + ((read_buffer.parameter_14 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_13)); + /* event size information */ + sensor_information->wakeup_event_size = read_buffer.parameter_15; + /* minimum rate information */ + sensor_information->wakeup_min_rate = read_buffer.parameter_16; + + return com_rslt; +} +/*! + * @brief API used to set the sensor non wakeup configuration + * Sensor page-3 parameter 65 to 89 + * + * @param sensor_configuration : contains the non wakeup sensor configuration + * + * @param v_parameter_request_u8: value of selected parameter request + * param_request | value | Virtual sensor + * ----------------------------------|-------|---------------- + * BHY_PARAMETER_REQUEST_READ_PARAMETER_65 | 0xC1 | Accelerometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_66 | 0xC2 | Magnetometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_67 | 0xC3 | Orientation + * BHY_PARAMETER_REQUEST_READ_PARAMETER_68 | 0xC4 | Gyroscope + * BHY_PARAMETER_REQUEST_READ_PARAMETER_69 | 0xC5 | Light + * BHY_PARAMETER_REQUEST_READ_PARAMETER_70 | 0xC6 | Barometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_71 | 0xC7 | Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_72 | 0xC8 | Proximity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_73 | 0xC9 | Gravity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_74 | 0xCA | Liner accel + * BHY_PARAMETER_REQUEST_READ_PARAMETER_75 | 0xCB | Rotation vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_76 | 0xCC | Humidity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_77 | 0xCD | Ambient Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_78 | 0xCE | Uncalibrated Mag + * BHY_PARAMETER_REQUEST_READ_PARAMETER_79 | 0xCF | Game rotation Vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_80 | 0xD0 | Uncalibrated Gyro + * BHY_PARAMETER_REQUEST_READ_PARAMETER_81 | 0xD1 | Signification Motion + * BHY_PARAMETER_REQUEST_READ_PARAMETER_82 | 0xD2 | Step detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_83 | 0xD3 | Step Counter + * BHY_PARAMETER_REQUEST_READ_PARAMETER_84 | 0xD4 | Geomagnetic + * BHY_PARAMETER_REQUEST_READ_PARAMETER_85 | 0xD5 | Heart Rate + * BHY_PARAMETER_REQUEST_READ_PARAMETER_86 | 0xD6 | Tilt Detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_87 | 0xD7 | Wakeup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_88 | 0xD8 | Glance Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_89 | 0xD9 | Pickup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_95 | 0xDF | Activity + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_non_wakeup_sensor_configuration( +struct sensor_configuration_non_wakeup_t *sensor_configuration, +u8 v_parameter_request_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + /* write sample rate*/ + write_buffer.write_parameter_byte1 = (u8)( + sensor_configuration->non_wakeup_sample_rate & BHY_MASK_LSB_DATA); + write_buffer.write_parameter_byte2 = (u8)( + (sensor_configuration->non_wakeup_sample_rate + & BHY_MASK_MSB_DATA) >> BHY_SHIFT_BIT_POSITION_BY_08_BITS); + /* write maximum report latency*/ + write_buffer.write_parameter_byte3 = (u8)( + sensor_configuration->non_wakeup_max_report_latency + & BHY_MASK_LSB_DATA); + write_buffer.write_parameter_byte4 = (u8)( + (sensor_configuration->non_wakeup_max_report_latency + & BHY_MASK_MSB_DATA) >> BHY_SHIFT_BIT_POSITION_BY_08_BITS); + /* write sensitivity*/ + write_buffer.write_parameter_byte5 = (u8)( + sensor_configuration->non_wakeup_change_sensitivity + & BHY_MASK_LSB_DATA); + write_buffer.write_parameter_byte6 = (u8)( + (sensor_configuration->non_wakeup_change_sensitivity + & BHY_MASK_MSB_DATA) >> BHY_SHIFT_BIT_POSITION_BY_08_BITS); + /* write dynamic range*/ + write_buffer.write_parameter_byte7 = (u8)( + sensor_configuration->non_wakeup_dynamic_range & BHY_MASK_LSB_DATA); + write_buffer.write_parameter_byte8 = (u8)( + (sensor_configuration->non_wakeup_dynamic_range + & BHY_MASK_MSB_DATA) >> BHY_SHIFT_BIT_POSITION_BY_08_BITS); + /* load the parameter of non wakeup sensor configuration*/ + com_rslt = bhy_write_parameter_bytes( + BHY_PAGE_3, v_parameter_request_u8); + + return com_rslt; +} +/*! + * @brief API used to get the sensor non wakeup configuration + * Sensor page-3 parameter 65 to 89 + * + * @param v_sample_rate_u16 : + * contains the non wakeup sample rate data + * @param v_max_report_latency_u16: + * contains the non wakeup max report latency + * @param v_change_sensitivity_u16: + * contains the non wakeup sensitivity + * @param v_dynamic_range_u16: + * contains the non wakeup dynamic range + * + * @param v_parameter_request_u8: value of selected parameter request + * param_request | value | Virtual sensor + * ----------------------------------|-------|---------------- + * BHY_PARAMETER_REQUEST_READ_PARAMETER_65 | 0xC1 | Accelerometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_66 | 0xC2 | Magnetometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_67 | 0xC3 | Orientation + * BHY_PARAMETER_REQUEST_READ_PARAMETER_68 | 0xC4 | Gyroscope + * BHY_PARAMETER_REQUEST_READ_PARAMETER_69 | 0xC5 | Light + * BHY_PARAMETER_REQUEST_READ_PARAMETER_70 | 0xC6 | Barometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_71 | 0xC7 | Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_72 | 0xC8 | Proximity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_73 | 0xC9 | Gravity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_74 | 0xCA | Liner accel + * BHY_PARAMETER_REQUEST_READ_PARAMETER_75 | 0xCB | Rotation vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_76 | 0xCC | Humidity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_77 | 0xCD | Ambient Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_78 | 0xCE | Uncalibrated Mag + * BHY_PARAMETER_REQUEST_READ_PARAMETER_79 | 0xCF | Game rotation Vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_80 | 0xD0 | Uncalibrated Gyro + * BHY_PARAMETER_REQUEST_READ_PARAMETER_81 | 0xD1 | Signification Motion + * BHY_PARAMETER_REQUEST_READ_PARAMETER_82 | 0xD2 | Step detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_83 | 0xD3 | Step Counter + * BHY_PARAMETER_REQUEST_READ_PARAMETER_84 | 0xD4 | Geomagnetic + * BHY_PARAMETER_REQUEST_READ_PARAMETER_85 | 0xD5 | Heart Rate + * BHY_PARAMETER_REQUEST_READ_PARAMETER_86 | 0xD6 | Tilt Detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_87 | 0xD7 | Wakeup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_88 | 0xD8 | Glance Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_89 | 0xD9 | Pickup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_95 | 0xDF | Activity + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_non_wakeup_sensor_configuration( +u8 v_parameter_request_u8, +u16 *v_sample_rate_u16, u16 *v_max_report_latency_u16, +u16 *v_change_sensitivity_u16, u16 *v_dynamic_range_u16) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + /* input as page 3 and parameter request for sensor page*/ + com_rslt = bhy_read_parameter_bytes( + BHY_PAGE_3, v_parameter_request_u8); + /* sample rate information */ + *v_sample_rate_u16 = (u16) + ((read_buffer.parameter_2 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_1)); + /* max report latency information */ + *v_max_report_latency_u16 = (u16) + ((read_buffer.parameter_4 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_3)); + /* sensitivity information */ + *v_change_sensitivity_u16 = (u16) + ((read_buffer.parameter_6 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_5)); + /* dynamic range information */ + *v_dynamic_range_u16 = (u16) + ((read_buffer.parameter_8 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_7)); + + return com_rslt; +} +/*! + * @brief API used to set the sensor wakeup configuration + * Sensor page-3 parameter 65 to 89 + * + * @param sensor_configuration : contains the wakeup sensor configuration + * + * @param v_parameter_request_u8: value of selected parameter request + * param_request | value | Virtual sensor + * -----------------------------------|-------|---------------- + * BHY_PARAMETER_REQUEST_READ_PARAMETER_97 | 0xE1 | Accelerometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_98 | 0xE2 | Magnetometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_99 | 0xE3 | Orientation + * BHY_PARAMETER_REQUEST_READ_PARAMETER_100 | 0xE4 | Gyroscope + * BHY_PARAMETER_REQUEST_READ_PARAMETER_101 | 0xE5 | Light + * BHY_PARAMETER_REQUEST_READ_PARAMETER_102 | 0xE6 | Barometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_103 | 0xE7 | Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_104 | 0xE8 | Proximity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_105 | 0xE9 | Gravity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_106 | 0xEA | Liner accel + * BHY_PARAMETER_REQUEST_READ_PARAMETER_107 | 0xEB | Rotation vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_108 | 0xEC | Humidity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_109 | 0xED | Ambient Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_110 | 0xEE | Uncalibrated Mag + * BHY_PARAMETER_REQUEST_READ_PARAMETER_111 | 0xEF | Game rotation Vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_112 | 0xF0 | Uncalibrated Gyro + * BHY_PARAMETER_REQUEST_READ_PARAMETER_113 | 0xF1 | Signification Motion + * BHY_PARAMETER_REQUEST_READ_PARAMETER_114 | 0xF2 | Step detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_115 | 0xF3 | Step Counter + * BHY_PARAMETER_REQUEST_READ_PARAMETER_116 | 0xF4 | Geomagnetic + * BHY_PARAMETER_REQUEST_READ_PARAMETER_117 | 0xF5 | Heart Rate + * BHY_PARAMETER_REQUEST_READ_PARAMETER_118 | 0xF6 | Tilt Detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_119 | 0xF7 | Wakeup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_120 | 0xF8 | Glance Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_121 | 0xF9 | Pickup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_127 | 0xFF | Activity + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_wakeup_sensor_configuration( +struct sensor_configuration_wakeup_t *sensor_configuration, +u8 v_parameter_request_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + /* write sample rate*/ + write_buffer.write_parameter_byte1 = (u8)( + sensor_configuration->wakeup_sample_rate & BHY_MASK_LSB_DATA); + write_buffer.write_parameter_byte2 = (u8)( + (sensor_configuration->wakeup_sample_rate + & BHY_MASK_MSB_DATA) >> BHY_SHIFT_BIT_POSITION_BY_08_BITS); + /* write maximum report latency*/ + write_buffer.write_parameter_byte3 = (u8)( + sensor_configuration->wakeup_max_report_latency & BHY_MASK_LSB_DATA); + write_buffer.write_parameter_byte4 = (u8)( + (sensor_configuration->wakeup_max_report_latency + & BHY_MASK_MSB_DATA) >> BHY_SHIFT_BIT_POSITION_BY_08_BITS); + /* write change sensitivity*/ + write_buffer.write_parameter_byte5 = (u8)( + sensor_configuration->wakeup_change_sensitivity & BHY_MASK_LSB_DATA); + write_buffer.write_parameter_byte6 = (u8)( + (sensor_configuration->wakeup_change_sensitivity + & BHY_MASK_MSB_DATA) >> BHY_SHIFT_BIT_POSITION_BY_08_BITS); + /* write dynamic range*/ + write_buffer.write_parameter_byte7 = (u8)( + sensor_configuration->wakeup_dynamic_range & BHY_MASK_LSB_DATA); + write_buffer.write_parameter_byte8 = (u8)( + (sensor_configuration->wakeup_dynamic_range + & BHY_MASK_MSB_DATA) >> BHY_SHIFT_BIT_POSITION_BY_08_BITS); + /* load the parameter of non wakeup sensor configuration*/ + com_rslt = bhy_write_parameter_bytes( + BHY_PAGE_3, v_parameter_request_u8); + + return com_rslt; +} +/*! + * @brief API used to get the sensor wakeup configuration + * Sensor page-3 parameter 65 to 89 + * + * @param v_sample_rate_u16 : contains the wakeup sample rate data + * @param v_max_report_latency_u16: contains the wakeup max report latency + * @param v_change_sensitivity_u16: contains the wakeup sensitivity + * @param v_dynamic_range_u16: contains the wakeup dynamic range + * + * @param v_parameter_request_u8: value of selected parameter request + * param_request | value | Virtual sensor + * -----------------------------------|-------|---------------- + * BHY_PARAMETER_REQUEST_READ_PARAMETER_97 | 0xE1 | Accelerometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_98 | 0xE2 | Magnetometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_99 | 0xE3 | Orientation + * BHY_PARAMETER_REQUEST_READ_PARAMETER_100 | 0xE4 | Gyroscope + * BHY_PARAMETER_REQUEST_READ_PARAMETER_101 | 0xE5 | Light + * BHY_PARAMETER_REQUEST_READ_PARAMETER_102 | 0xE6 | Barometer + * BHY_PARAMETER_REQUEST_READ_PARAMETER_103 | 0xE7 | Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_104 | 0xE8 | Proximity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_105 | 0xE9 | Gravity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_106 | 0xEA | Liner accel + * BHY_PARAMETER_REQUEST_READ_PARAMETER_107 | 0xEB | Rotation vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_108 | 0xEC | Humidity + * BHY_PARAMETER_REQUEST_READ_PARAMETER_109 | 0xED | Ambient Temperature + * BHY_PARAMETER_REQUEST_READ_PARAMETER_110 | 0xEE | Uncalibrated Mag + * BHY_PARAMETER_REQUEST_READ_PARAMETER_111 | 0xEF | Game rotation Vector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_112 | 0xF0 | Uncalibrated Gyro + * BHY_PARAMETER_REQUEST_READ_PARAMETER_113 | 0xF1 | Signification Motion + * BHY_PARAMETER_REQUEST_READ_PARAMETER_114 | 0xF2 | Step detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_115 | 0xF3 | Step Counter + * BHY_PARAMETER_REQUEST_READ_PARAMETER_116 | 0xF4 | Geomagnetic + * BHY_PARAMETER_REQUEST_READ_PARAMETER_117 | 0xF5 | Heart Rate + * BHY_PARAMETER_REQUEST_READ_PARAMETER_118 | 0xF6 | Tilt Detector + * BHY_PARAMETER_REQUEST_READ_PARAMETER_119 | 0xF7 | Wakeup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_120 | 0xF8 | Glance Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_121 | 0xF9 | Pickup Gesture + * BHY_PARAMETER_REQUEST_READ_PARAMETER_127 | 0xFF | Activity + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_wakeup_sensor_configuration( +u8 v_parameter_request_u8, +u16 *v_sample_rate_u16, u16 *v_max_report_latency_u16, +u16 *v_change_sensitivity_u16, u16 *v_dynamic_range_u16) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + /* input as page 3 and parameter request for sensor page*/ + com_rslt = bhy_read_parameter_bytes( + BHY_PAGE_3, v_parameter_request_u8); + /* sample rate information */ + *v_sample_rate_u16 = (u16) + ((read_buffer.parameter_2 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_1)); + /* max report latency information */ + *v_max_report_latency_u16 = (u16) + ((read_buffer.parameter_4 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_3)); + /* sensitivity information */ + *v_change_sensitivity_u16 = (u16) + ((read_buffer.parameter_6 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_5)); + /* dynamic range information */ + *v_dynamic_range_u16 = (u16) + ((read_buffer.parameter_8 << BHY_SHIFT_BIT_POSITION_BY_08_BITS) + | (read_buffer.parameter_7)); + + return com_rslt; +} +/*! + * @brief API used to get the soft pass through + * Sensor page-15 parameter 0 to 7 + * + * @param soft_pass_through : + * contains the value of soft pass through + * + * @param v_parameter_request_u8: value of selected parameter request + * parameter | value + * ------------------------------------|-------------------- + * BHY_PARAMETER_REQUEST_WRITE_PARAMETER_1 | 0x01 + * BHY_PARAMETER_REQUEST_WRITE_PARAMETER_2 | 0x02 + * BHY_PARAMETER_REQUEST_WRITE_PARAMETER_3 | 0x03 + * + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_get_soft_pass_through( +struct soft_pass_through_read_t *soft_pass_through, +u8 v_parameter_request_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + /* input as page 3 and parameter request for sensor page*/ + com_rslt = bhy_read_parameter_bytes( + BHY_PAGE_15, v_parameter_request_u8); + /* i2c slave address information */ + soft_pass_through->i2c_slave_address = + (u8)(read_buffer.parameter_1); + /* start register information */ + soft_pass_through->start_register = + (u8)(read_buffer.parameter_2); + /* read length information */ + soft_pass_through->read_length = + (u8)(read_buffer.parameter_3); + /* completion status information */ + soft_pass_through->completion_status = + (u8)(read_buffer.parameter_4); + /* return register value 1 information */ + soft_pass_through->reg_value_byte1 = + (u8)(read_buffer.parameter_5); + /* return register value 2 information */ + soft_pass_through->reg_value_byte2 = + (u8)(read_buffer.parameter_6); + /* return register value 3 information */ + soft_pass_through->reg_value_byte3 = + (u8)(read_buffer.parameter_7); + /* return register value 4 information */ + soft_pass_through->reg_value_byte4 = + (u8)(read_buffer.parameter_8); + + return com_rslt; +} +/*! + * @brief API used to set the soft pass through + * Sensor page-15 parameter 0 to 7 + * + * @param soft_pass_through : + * contains the value of soft pass through + * + * @param v_parameter_request_u8: value of selected parameter request + * parameter | value + * ------------------------------------|-------------------- + * BHY_PARAMETER_REQUEST_WRITE_PARAMETER_1 | 0x01 + * BHY_PARAMETER_REQUEST_WRITE_PARAMETER_2 | 0x02 + * BHY_PARAMETER_REQUEST_WRITE_PARAMETER_3 | 0x03 + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_set_soft_pass_through( +struct soft_pass_through_write_t *soft_pass_through, +u8 v_parameter_request_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + /* i2c slave address information */ + write_buffer.write_parameter_byte1 = + soft_pass_through->i2c_slave_address; + /* start register information */ + write_buffer.write_parameter_byte2 = + soft_pass_through->start_register; + /* write length information */ + write_buffer.write_parameter_byte3 = + soft_pass_through->write_length; + /* completion status information */ + write_buffer.write_parameter_byte4 = + soft_pass_through->completion_status; + /* return register value 1 information */ + write_buffer.write_parameter_byte5 = + soft_pass_through->reg_value_byte1; + /* return register value 2 information */ + write_buffer.write_parameter_byte6 = + soft_pass_through->reg_value_byte2; + /* return register value 3 information */ + write_buffer.write_parameter_byte7 = + soft_pass_through->reg_value_byte3; + /* return register value 4 information */ + write_buffer.write_parameter_byte8 = + soft_pass_through->reg_value_byte4; + /* load the parameter of soft + pass through sensor configuration*/ + com_rslt = bhy_write_parameter_bytes( + BHY_PAGE_15, v_parameter_request_u8); + return com_rslt; +} + +/*! + * @brief API used to get the data from the parameter + * I2C page register from 0x3B to 0x4A + * + * + * @param v_page_select_u8 : This input value for set the desired page + * @param v_parameter_request_u8 : + * This input value for set the desired parameter + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_read_parameter_bytes( +u8 v_page_select_u8, u8 v_parameter_request_u8) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_parameter_ack_u8 = BHY_INIT_VALUE; + u8 init_array_data = BHY_INIT_VALUE; + u8 a_read_data_u8[BHY_READ_BUFFER_SIZE]; + u8 v_parameter_ack_check_u8 = BHY_INIT_VALUE; + + for (; init_array_data < BHY_READ_BUFFER_SIZE; init_array_data++) + a_read_data_u8[init_array_data] = BHY_INIT_VALUE; + /* select the page*/ + com_rslt = bhy_set_parameter_page_select(v_page_select_u8); + /* select the parameter*/ + com_rslt += bhy_set_parameter_request(v_parameter_request_u8); + /* read the values*/ + for (v_parameter_ack_check_u8 = BHY_INIT_VALUE; + v_parameter_ack_check_u8 < BHY_PARAMETER_ACK_LENGTH; + v_parameter_ack_check_u8++) { + /* read acknowledgement*/ + com_rslt = bhy_get_parameter_acknowledge(&v_parameter_ack_u8); + if (v_parameter_ack_u8 == v_parameter_request_u8) { + break; + } else if (v_parameter_ack_u8 == BHY_PARAMETER_ACK_CHECK) { + p_bhy->delay_msec(BHY_PARAMETER_ACK_DELAY); + com_rslt = BHY_ERROR; + } else { + /* device not ready yet */ + p_bhy->delay_msec(1); + } + } + com_rslt = + p_bhy->BHY_BUS_READ_FUNC(p_bhy->device_addr, + BHY_I2C_REG_PARAMETER_READ_BUFFER_ZERO, + a_read_data_u8, BHY_READ_BUFFER_LENGTH); + read_buffer.parameter_1 = + a_read_data_u8[BHY_READ_BUFFER_1_REG]; + read_buffer.parameter_2 = + a_read_data_u8[BHY_READ_BUFFER_2_REG]; + read_buffer.parameter_3 = + a_read_data_u8[BHY_READ_BUFFER_3_REG]; + read_buffer.parameter_4 = + a_read_data_u8[BHY_READ_BUFFER_4_REG]; + read_buffer.parameter_5 = + a_read_data_u8[BHY_READ_BUFFER_5_REG]; + read_buffer.parameter_6 = + a_read_data_u8[BHY_READ_BUFFER_6_REG]; + read_buffer.parameter_7 = + a_read_data_u8[BHY_READ_BUFFER_7_REG]; + read_buffer.parameter_8 = + a_read_data_u8[BHY_READ_BUFFER_8_REG]; + read_buffer.parameter_9 = + a_read_data_u8[BHY_READ_BUFFER_9_REG]; + read_buffer.parameter_10 = + a_read_data_u8[BHY_READ_BUFFER_10_REG]; + read_buffer.parameter_11 = + a_read_data_u8[BHY_READ_BUFFER_11_REG]; + read_buffer.parameter_12 = + a_read_data_u8[BHY_READ_BUFFER_12_REG]; + read_buffer.parameter_13 = + a_read_data_u8[BHY_READ_BUFFER_13_REG]; + read_buffer.parameter_14 = + a_read_data_u8[BHY_READ_BUFFER_14_REG]; + read_buffer.parameter_15 = + a_read_data_u8[BHY_READ_BUFFER_15_REG]; + read_buffer.parameter_16 = + a_read_data_u8[BHY_READ_BUFFER_16_REG]; + + return com_rslt; +} +/*! + * @brief API used to set the data from the parameter + * I2C page register from 0x5C to 0x63 + * + * + * @param v_page_select_u8 : This input value for set the desired page + * @param v_parameter_request_u8 : + * This input value for set the desired parameter + * + * @return results of bus communication function + * @retval 0 -> Success + * @retval -1 -> Error + * + * +*/ +BHY_RETURN_FUNCTION_TYPE bhy_write_parameter_bytes( +u8 v_page_select_u8, u8 v_parameter_request_u8) +{ +/* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + u8 v_parameter_ack_u8 = BHY_INIT_VALUE; + u8 v_parameter_ack_check_u8 = BHY_INIT_VALUE; + u8 v_write_parameter_byte_u8[BHY_WRITE_BUFFER_SIZE]; + u8 init_array_data = BHY_INIT_VALUE; + + for (; init_array_data < BHY_WRITE_BUFFER_SIZE; init_array_data++) + v_write_parameter_byte_u8[init_array_data] = BHY_INIT_VALUE; + /* check the p_bhy structure as NULL*/ + if (p_bhy == BHY_NULL) { + return BHY_NULL; + } else { + /* Assign the load parameters*/ + v_write_parameter_byte_u8[BHY_WRITE_BUFFER_1_REG] + = write_buffer.write_parameter_byte1; + v_write_parameter_byte_u8[BHY_WRITE_BUFFER_2_REG] + = write_buffer.write_parameter_byte2; + v_write_parameter_byte_u8[BHY_WRITE_BUFFER_3_REG] + = write_buffer.write_parameter_byte3; + v_write_parameter_byte_u8[BHY_WRITE_BUFFER_4_REG] + = write_buffer.write_parameter_byte4; + v_write_parameter_byte_u8[BHY_WRITE_BUFFER_5_REG] + = write_buffer.write_parameter_byte5; + v_write_parameter_byte_u8[BHY_WRITE_BUFFER_6_REG] + = write_buffer.write_parameter_byte6; + v_write_parameter_byte_u8[BHY_WRITE_BUFFER_7_REG] + = write_buffer.write_parameter_byte7; + v_write_parameter_byte_u8[BHY_WRITE_BUFFER_8_REG] + = write_buffer.write_parameter_byte8; + /* write values to the load address*/ + com_rslt = p_bhy->BHY_BUS_WRITE_FUNC + (p_bhy->device_addr, + BHY_I2C_REG_PARAMETER_WRITE_BUFFER_ZERO, + &v_write_parameter_byte_u8[BHY_WRITE_BUFFER_1_REG], + BHY_WRITE_BUFFER_SIZE); + /* select the page*/ + com_rslt += bhy_set_parameter_page_select(v_page_select_u8); + /* select the parameter*/ + com_rslt += bhy_set_parameter_request(v_parameter_request_u8); + for (v_parameter_ack_check_u8 = BHY_INIT_VALUE; + v_parameter_ack_check_u8 < BHY_PARAMETER_ACK_LENGTH; + v_parameter_ack_check_u8++) { + /* read the acknowledgement*/ + com_rslt += bhy_get_parameter_acknowledge( + &v_parameter_ack_u8); + if (v_parameter_ack_u8 == v_parameter_request_u8) { + com_rslt += BHY_SUCCESS; + break; + } else if (v_parameter_ack_u8 + == BHY_PARAMETER_ACK_CHECK) { + p_bhy->delay_msec(BHY_PARAMETER_ACK_DELAY); + com_rslt += BHY_ERROR; + } else { + /* device not ready yet */ + p_bhy->delay_msec(1); + } + } + + } + return com_rslt; +} diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/driver/src/bhy_support.c b/lib/bosch/BHy1_driver_and_MCU_solution/driver/src/bhy_support.c new file mode 100644 index 0000000000000000000000000000000000000000..bca9c5ae323a082a82358b1646f7c6001e15c894 --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/driver/src/bhy_support.c @@ -0,0 +1,133 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + * + * + * @file bhy_support.c + * + * @date 12/19/2016 + * + * @brief driver on MCU for bhy + * + * + */ + + +/********************************************************************************/ +/* HEADER FILES */ +/********************************************************************************/ +#include "bhy_support.h" +#include "bhy_uc_driver_config.h" + +#include "FreeRTOS.h" +#include "task.h" + +/********************************************************************************/ +/* STATIC VARIABLES */ +/********************************************************************************/ +static struct bhy_t bhy; +static uint8_t *version = BHY_MCU_REFERENCE_VERSION; + +/********************************************************************************/ +/* EXTERN FUNCTION DECLARATIONS */ +/********************************************************************************/ +extern int8_t sensor_i2c_write(uint8_t addr, uint8_t reg, uint8_t *p_buf, uint16_t size); +extern int8_t sensor_i2c_read(uint8_t addr, uint8_t reg, uint8_t *p_buf, uint16_t size); +extern void trace_log(const char *fmt, ...); + +/********************************************************************************/ +/* FUNCTION DECLARATIONS */ +/********************************************************************************/ +/*! +* @brief Initializes BHY smart sensor and its required connections +* +*/ +int8_t bhy_initialize_support(void) +{ + uint8_t tmp_retry = RETRY_NUM; + + bhy.bus_write = &sensor_i2c_write; + bhy.bus_read = &sensor_i2c_read; + bhy.delay_msec = &bhy_delay_msec; + bhy.device_addr = BHY_I2C_SLAVE_ADDRESS; + + bhy_init(&bhy); + + bhy_set_reset_request(BHY_RESET_ENABLE);; + + while(tmp_retry--) + { + bhy_get_product_id(&bhy.product_id); + + if(PRODUCT_ID_7183 == bhy.product_id) + { + return BHY_SUCCESS; + } + + bhy_delay_msec(BHY_PARAMETER_ACK_DELAY); + } + + return BHY_PRODUCT_ID_ERROR; +} +/*! +* @brief Initiates a delay of the length of the argument in milliseconds +* +* @param[in] msec Delay length in terms of milliseconds +* +*/ +void bhy_delay_msec(uint32_t msec) +{ + vTaskDelay(msec); +} +/*! + * @brief provides a print function to the bhy driver on DD2.0 platform + */ +void bhy_printf(const u8 * string) +{ + trace_log("%s",string); +} +/*! + * @brief provides the mcu reference code version + */ +uint8_t * bhy_get_version(void) +{ + return (version); +} +/** @}*/ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/driver/src/bhy_uc_driver.c b/lib/bosch/BHy1_driver_and_MCU_solution/driver/src/bhy_uc_driver.c new file mode 100644 index 0000000000000000000000000000000000000000..ceeb534c685007069c6e981acb1739dbb8d6325b --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/driver/src/bhy_uc_driver.c @@ -0,0 +1,1630 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + * + * + * @file bhy_uc_driver.c + * + * @date 12/19/2016 + * + * @brief driver on MCU for bhy + * + * + */ + +/********************************************************************************/ +/* HEADER FILES */ +/********************************************************************************/ +#include "bhy_uc_driver.h" + +/********************************************************************************/ +/* MACROS */ +/********************************************************************************/ + +/* firmware download retry time */ +#define BHY_INIT_RETRY_COUNT 3 +/* these FIFO sizes are dependent on the type enumeration */ +/* do not change the order */ +#define BHY_DATA_SIZE_PADDING 1 +#define BHY_DATA_SIZE_QUATERNION 11 +#define BHY_DATA_SIZE_VECTOR 8 +#define BHY_DATA_SIZE_SCALAR_U8 2 +#define BHY_DATA_SIZE_SCALAR_U16 3 +#define BHY_DATA_SIZE_SCALAR_S16 3 +#define BHY_DATA_SIZE_SCALAR_U24 4 +#define BHY_DATA_SIZE_SENSOR_EVENT 1 +#define BHY_DATA_SIZE_UNCALIB_VECTOR 14 +#define BHY_DATA_SIZE_META_EVENT 4 +#define BHY_DATA_SIZE_BSX 17 +#define BHY_DATA_SIZE_DEBUG 14 + +/* set default custom sensor packet size to 1, same as padding */ +#define BHY_DATA_SIZE_CUS1 1 +#define BHY_DATA_SIZE_CUS2 1 +#define BHY_DATA_SIZE_CUS3 1 +#define BHY_DATA_SIZE_CUS4 1 +#define BHY_DATA_SIZE_CUS5 1 + +#define MAX_PAGE_NUM 15 +#define MAX_SENSOR_ID 0x20 +#define MAX_SENSOR_ID_NONWAKEUP 0x3F +#define MAX_WRITE_BYTES 8 +#define SENSOR_CALLBACK_LIST_NUM 64 +#define TIMESTAMP_CALLBACK_LIST_NUM 2 +#define METAEVENT_CALLBACK_LIST_NUM 32 +#define SENSOR_PARAMETER_WRITE 0xC0 +#define MAX_METAEVENT_ID 17 + +/********************************************************************************/ +/* GLOBAL VARIABLES */ +/********************************************************************************/ + +/* these FIFO sizes are dependent on the enumeration above */ +/* do not change the order */ +uint8_t _fifoSizes[] = { + BHY_DATA_SIZE_PADDING, + BHY_DATA_SIZE_QUATERNION, + BHY_DATA_SIZE_VECTOR, + BHY_DATA_SIZE_SCALAR_U8, + BHY_DATA_SIZE_SCALAR_U16, + BHY_DATA_SIZE_SCALAR_S16, + BHY_DATA_SIZE_SCALAR_U24, + BHY_DATA_SIZE_SENSOR_EVENT, + BHY_DATA_SIZE_UNCALIB_VECTOR, + BHY_DATA_SIZE_META_EVENT, + BHY_DATA_SIZE_BSX, + BHY_DATA_SIZE_DEBUG, + BHY_DATA_SIZE_CUS1, + BHY_DATA_SIZE_CUS2, + BHY_DATA_SIZE_CUS3, + BHY_DATA_SIZE_CUS4, + BHY_DATA_SIZE_CUS5, +}; + +#if BHY_CALLBACK_MODE +/* The callback feature is a type of software interrupt. */ +/* The driver keeps in RAM an array of function pointers */ +/* for every sensor ID, wakeup and non-wakeup, every meta */ +/* event, and both wakeup and non-wakeup timestamps. When */ +/* parsing the fifo within the bhy_parse_next_fifo_packet */ +/* function, it will jump into the callback if the pointer */ +/* is non-null. */ +/* to sort through the array, it use either the sensor_id */ +/* or the event id. */ + +static void (*sensor_callback_list[SENSOR_CALLBACK_LIST_NUM])(bhy_data_generic_t *, bhy_virtual_sensor_t) = {0}; +static void (*timestamp_callback_list[TIMESTAMP_CALLBACK_LIST_NUM])(bhy_data_scalar_u16_t *) = {0}; +static void (*meta_event_callback_list[METAEVENT_CALLBACK_LIST_NUM])(bhy_data_meta_event_t *, bhy_meta_event_type_t) = {0}; +#endif + +extern void trace_log(const char *fmt, ...); + +/********************************************************************************/ +/* FUNCTIONS */ +/********************************************************************************/ + +/*! + * @brief This function initializes the driver, the API and loads the ram patch into the sensor + * + * @param[in] bhy_fw_data pointer to the firmware of bhy + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_driver_init(const uint8_t *bhy_fw_data) +{ + uint32_t tmp_fw_len = 0; + int8_t init_retry_count = BHY_INIT_RETRY_COUNT; + BHY_RETURN_FUNCTION_TYPE result = BHY_SUCCESS; + + /* get fw lenght */ + tmp_fw_len = 16 + bhy_fw_data[12] + (256 * bhy_fw_data[13]); + + /* retry BHY_INIT_RETRY_COUNT times to avoid firmware download fail*/ + while (init_retry_count > 0) + { + bhy_initialize_support(); + + /* downloads the ram patch to the BHy */ + result += bhy_initialize_from_rom(bhy_fw_data, /*bhy_fw_len*/tmp_fw_len); + + if (result == BHY_SUCCESS) + { + break; + } + + init_retry_count--; + } + + return result; +} + +/*! + * @brief this function configures meta event + * + * @param[in] meta_event_id ID of meta event + * @param[in] fifo_sel to choose the FIFO + * @param[in] enable_state enable state of bhy + * @param[in] int_enable_state enable state of interrupt + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_meta_event_set_config(bhy_meta_event_type_t meta_event_id, + bhy_meta_event_fifo_type_t fifo_sel, + uint8_t enable_state, uint8_t int_enable_state) +{ + BHY_RETURN_FUNCTION_TYPE result = BHY_SUCCESS; + + result += bhy_set_meta_event(meta_event_id, enable_state, BHY_META_EVENT_ENABLE, fifo_sel); + result += bhy_set_meta_event(meta_event_id, int_enable_state, BHY_META_INTR_ENABLE, fifo_sel); + + return result; +} + +/*! + * @brief this function gets configuration from specific meta event + * + * @param[in] meta_event_id ID of meta event + * @param[in] fifo_sel to choose the FIFO + * @param[in] p_enable_state pointer of enable state of bhy + * @param[in] p_int_enable_state pointer of the enable state of interrupt + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_meta_event_get_config(bhy_meta_event_type_t meta_event_id, + bhy_meta_event_fifo_type_t fifo_sel, + uint8_t *p_enable_state, uint8_t *p_int_enable_state) +{ + BHY_RETURN_FUNCTION_TYPE result = BHY_SUCCESS; + + result += bhy_get_meta_event(meta_event_id, BHY_META_EVENT_ENABLE, p_int_enable_state, p_enable_state, fifo_sel); + result += bhy_get_meta_event(meta_event_id, BHY_META_INTR_ENABLE, p_int_enable_state, p_enable_state, fifo_sel); + + return result; +} + +/*! + * @brief this functions enables the selected virtual sensor + * + * @param[in] sensor_id sensor ID + * @param[in] wakeup_status status after wakeup + * @param[in] sample_rate sample rate + * @param[in] max_report_latency_ms max report latency,unit is millisecond + * @param[in] flush_sensor how to flush the fifo of sensor + * @param[in] change_sensitivity whether to change the sensitivity + * @param[in] dynamic_range dynamic range + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_enable_virtual_sensor(bhy_virtual_sensor_t sensor_id, uint8_t wakeup_status, + uint16_t sample_rate, uint16_t max_report_latency_ms, + uint8_t flush_sensor, uint16_t change_sensitivity, + uint16_t dynamic_range) +{ + BHY_RETURN_FUNCTION_TYPE result = BHY_SUCCESS; + union + { + struct sensor_configuration_wakeup_t sensor_configuration_wakeup; + struct sensor_configuration_non_wakeup_t sensor_configuration_non_wakeup; + } sensor_configuration; + + /* checks if sensor id is in range */ + if ((uint8_t)sensor_id >= MAX_SENSOR_ID) + { + return BHY_OUT_OF_RANGE; + } + + /*computes the sensor id */ + sensor_id += wakeup_status; + + /* flush the fifo if requested */ + switch (flush_sensor) + { + case VS_FLUSH_SINGLE: + result += bhy_set_fifo_flush(sensor_id); + break; + case VS_FLUSH_ALL: + result += bhy_set_fifo_flush(VS_FLUSH_ALL); + break; + case VS_FLUSH_NONE: + break; + default: + return BHY_OUT_OF_RANGE; + } + + /* computes the param page as sensor_id + 0xC0 (sensor parameter write)*/ + sensor_id += SENSOR_PARAMETER_WRITE; + + /*calls the right function */ + switch (wakeup_status) + { + case VS_NON_WAKEUP: + sensor_configuration.sensor_configuration_non_wakeup.non_wakeup_sample_rate = sample_rate; + sensor_configuration.sensor_configuration_non_wakeup.non_wakeup_max_report_latency = max_report_latency_ms; + sensor_configuration.sensor_configuration_non_wakeup.non_wakeup_change_sensitivity = change_sensitivity; + sensor_configuration.sensor_configuration_non_wakeup.non_wakeup_dynamic_range = dynamic_range; + result += bhy_set_non_wakeup_sensor_configuration( &sensor_configuration.sensor_configuration_non_wakeup, sensor_id); + return result; + case VS_WAKEUP: + sensor_configuration.sensor_configuration_wakeup.wakeup_sample_rate = sample_rate; + sensor_configuration.sensor_configuration_wakeup.wakeup_max_report_latency = max_report_latency_ms; + sensor_configuration.sensor_configuration_wakeup.wakeup_change_sensitivity = change_sensitivity; + sensor_configuration.sensor_configuration_wakeup.wakeup_dynamic_range = dynamic_range; + result += bhy_set_wakeup_sensor_configuration(&sensor_configuration.sensor_configuration_wakeup, sensor_id); + return result; + default: + return BHY_OUT_OF_RANGE; + } +} + +/*! + * @brief this functions disables the selected virtual sensor + * + * @param[in] sensor_id sensor ID + * @param[in] wakeup_status status of WAKEUP OR NONWAKEUP + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_disable_virtual_sensor(bhy_virtual_sensor_t sensor_id, uint8_t wakeup_status) +{ + union + { + struct sensor_configuration_wakeup_t sensor_configuration_wakeup; + struct sensor_configuration_non_wakeup_t sensor_configuration_non_wakeup; + } sensor_configuration; + + /* checks if sensor id is in range */ + if (sensor_id >= MAX_SENSOR_ID) + { + return BHY_OUT_OF_RANGE; + } + + /* computes the param page as */ + /* wakeup_status + sensor_id + 0xC0 (sensor parameter write) */ + sensor_id += wakeup_status + SENSOR_PARAMETER_WRITE; + + /*calls the right function */ + switch (wakeup_status) + { + case VS_NON_WAKEUP: + sensor_configuration.sensor_configuration_non_wakeup.non_wakeup_sample_rate = 0; + sensor_configuration.sensor_configuration_non_wakeup.non_wakeup_max_report_latency = 0; + sensor_configuration.sensor_configuration_non_wakeup.non_wakeup_change_sensitivity = 0; + sensor_configuration.sensor_configuration_non_wakeup.non_wakeup_dynamic_range = 0; + return bhy_set_non_wakeup_sensor_configuration(&sensor_configuration.sensor_configuration_non_wakeup, sensor_id); + + case VS_WAKEUP: + sensor_configuration.sensor_configuration_wakeup.wakeup_sample_rate = 0; + sensor_configuration.sensor_configuration_wakeup.wakeup_max_report_latency = 0; + sensor_configuration.sensor_configuration_wakeup.wakeup_change_sensitivity = 0; + sensor_configuration.sensor_configuration_wakeup.wakeup_dynamic_range = 0; + return bhy_set_wakeup_sensor_configuration(&sensor_configuration.sensor_configuration_wakeup, sensor_id); + + default: + return BHY_OUT_OF_RANGE; + } +} + +/*! + * @brief this functions retrieves the fifo data,it needs a buffer of at least (BHY_I2C_REG_BUFFER_LENGTH + 1) bytes to work. + * it outputs the data into the variable buffer. the number of bytes read. + * + * @param[in] buffer pointer of buffer + * @param[in] buffer_size size of the buffer in bytes + * @param[out] bytes_read the bytes in fifo which have been read + * @param[out] bytes_left the bytes left in fifo which have not been read + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_read_fifo(uint8_t *buffer, uint16_t buffer_size, uint16_t *bytes_read, uint16_t *bytes_left) +{ + BHY_RETURN_FUNCTION_TYPE result = BHY_SUCCESS; + static uint16_t current_index = 0; + static uint16_t current_transaction_size = 0; + + if (buffer_size <= BHY_I2C_REG_BUFFER_LENGTH) + { + return BHY_OUT_OF_RANGE; + } + + /* gets the number of bytes left in the fifo either from memory of from */ + /* the register */ + if (current_transaction_size == 0) + { + result = bhy_read_bytes_remaining(¤t_transaction_size); + } + + /* if there are bytes in the fifo to read */ + if (current_transaction_size) + { + /* calculates the number of bytes to read. either the number of */ + /* bytes left, or the buffer size, or just enough so the last page */ + /* does not get turned */ + if (buffer_size >= current_transaction_size - current_index) + { + *bytes_read = current_transaction_size - current_index; + } + else if (current_transaction_size - (current_index+buffer_size) <= BHY_I2C_REG_BUFFER_LENGTH) + { + *bytes_read = (current_transaction_size - (BHY_I2C_REG_BUFFER_LENGTH + 1)) - current_index; + } + else + { + *bytes_read = buffer_size; + } + + result += bhy_read_reg(current_index % BHY_I2C_REG_BUFFER_LENGTH, buffer, *bytes_read); + + current_index += *bytes_read; + + (*bytes_left) = current_transaction_size - current_index; + + if ((*bytes_left) == 0) + { + current_index = 0; + current_transaction_size = 0; + } + + } + else + { + (*bytes_read) = 0; + (*bytes_left) = 0; + return result; + } + + return result; +} + +/*! + * @brief this functions parse the packet in fifo and get the actual fifo data of sensors + * + * + * @param[in] fifo_buffer pointer of fifo + * @param[in] fifo_buffer_length size of the fifo + * @param[out] fifo_data_output the actual fifo data of sensors + * @param[out] fifo_data_type data type of fifo data + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_parse_next_fifo_packet (uint8_t **fifo_buffer, uint16_t *fifo_buffer_length, + bhy_data_generic_t * fifo_data_output, + bhy_data_type_t * fifo_data_type) +{ + uint16_t i = 0; + + if ((*fifo_buffer_length) == 0) + { + /* there are no more bytes in the fifo buffer to read */ + return BHY_SUCCESS; + } + + /* the first fifo byte should be a known virtual sensor ID */ + switch (**fifo_buffer) + { + case VS_ID_PADDING: + (*fifo_data_type) = BHY_DATA_TYPE_PADDING; + fifo_data_output->data_padding.sensor_id = (**fifo_buffer); + break; + + case VS_ID_ROTATION_VECTOR: + case VS_ID_ROTATION_VECTOR_WAKEUP: + case VS_ID_GAME_ROTATION_VECTOR: + case VS_ID_GAME_ROTATION_VECTOR_WAKEUP: + case VS_ID_GEOMAGNETIC_ROTATION_VECTOR: + case VS_ID_GEOMAGNETIC_ROTATION_VECTOR_WAKEUP: + if ((*fifo_buffer_length) < _fifoSizes[BHY_DATA_TYPE_QUATERNION]) + return BHY_OUT_OF_RANGE; + (*fifo_data_type) = BHY_DATA_TYPE_QUATERNION; + fifo_data_output->data_quaternion.sensor_id = (**fifo_buffer); + fifo_data_output->data_quaternion.x = + (int16_t)(((uint16_t)*((*fifo_buffer) + 1)) | ((uint16_t)*((*fifo_buffer) + 2) << 8)); + fifo_data_output->data_quaternion.y = + (int16_t)(((uint16_t)*((*fifo_buffer) + 3)) | ((uint16_t)*((*fifo_buffer) + 4) << 8)); + fifo_data_output->data_quaternion.z = + (int16_t)(((uint16_t)*((*fifo_buffer) + 5)) | ((uint16_t)*((*fifo_buffer) + 6) << 8)); + fifo_data_output->data_quaternion.w = + (int16_t)(((uint16_t)*((*fifo_buffer) + 7)) | ((uint16_t)*((*fifo_buffer) + 8) << 8)); + fifo_data_output->data_quaternion.estimated_accuracy = + (int16_t)(((uint16_t)*((*fifo_buffer) + 9)) | ((uint16_t)*((*fifo_buffer) + 10) << 8)); + break; + + case VS_ID_ACCELEROMETER: + case VS_ID_ACCELEROMETER_WAKEUP: + case VS_ID_MAGNETOMETER: + case VS_ID_MAGNETOMETER_WAKEUP: + case VS_ID_ORIENTATION: + case VS_ID_ORIENTATION_WAKEUP: + case VS_ID_GYROSCOPE: + case VS_ID_GYROSCOPE_WAKEUP: + case VS_ID_GRAVITY: + case VS_ID_GRAVITY_WAKEUP: + case VS_ID_LINEAR_ACCELERATION: + case VS_ID_LINEAR_ACCELERATION_WAKEUP: + if ((*fifo_buffer_length) < _fifoSizes[BHY_DATA_TYPE_VECTOR]) + { + return BHY_OUT_OF_RANGE; + } + + (*fifo_data_type) = BHY_DATA_TYPE_VECTOR; + fifo_data_output->data_vector.sensor_id = (**fifo_buffer); + fifo_data_output->data_vector.x = + (int16_t)(((uint16_t)*((*fifo_buffer) + 1)) | ((uint16_t)*((*fifo_buffer) + 2) << 8)); + fifo_data_output->data_vector.y = + (int16_t)(((uint16_t)*((*fifo_buffer) + 3)) | ((uint16_t)*((*fifo_buffer) + 4) << 8)); + fifo_data_output->data_vector.z = + (int16_t)(((uint16_t)*((*fifo_buffer) + 5)) | ((uint16_t)*((*fifo_buffer) + 6) << 8)); + fifo_data_output->data_vector.status = *((*fifo_buffer) + 7); + break; + + case VS_ID_HEART_RATE: + case VS_ID_HEART_RATE_WAKEUP: + if ((*fifo_buffer_length) < _fifoSizes[BHY_DATA_TYPE_SCALAR_U8]) + { + return BHY_OUT_OF_RANGE; + } + + (*fifo_data_type) = BHY_DATA_TYPE_SCALAR_U8; + fifo_data_output->data_scalar_u8.sensor_id = (**fifo_buffer); + fifo_data_output->data_scalar_u8.data = *((*fifo_buffer) + 1); + break; + + case VS_ID_LIGHT: + case VS_ID_LIGHT_WAKEUP: + case VS_ID_PROXIMITY: + case VS_ID_PROXIMITY_WAKEUP: + case VS_ID_HUMIDITY: + case VS_ID_HUMIDITY_WAKEUP: + case VS_ID_STEP_COUNTER: + case VS_ID_STEP_COUNTER_WAKEUP: + case VS_ID_ACTIVITY: + case VS_ID_ACTIVITY_WAKEUP: + case VS_ID_TIMESTAMP_LSW: + case VS_ID_TIMESTAMP_LSW_WAKEUP: + case VS_ID_TIMESTAMP_MSW: + case VS_ID_TIMESTAMP_MSW_WAKEUP: + if ((*fifo_buffer_length) < _fifoSizes[BHY_DATA_TYPE_SCALAR_U16]) + { + return BHY_OUT_OF_RANGE; + } + + (*fifo_data_type) = BHY_DATA_TYPE_SCALAR_U16; + fifo_data_output->data_scalar_u16.sensor_id = (**fifo_buffer); + fifo_data_output->data_scalar_u16.data = + (uint16_t)(((uint16_t)*((*fifo_buffer) + 1)) | ((uint16_t)*((*fifo_buffer) + 2) << 8)); + break; + + case VS_ID_TEMPERATURE: + case VS_ID_TEMPERATURE_WAKEUP: + case VS_ID_AMBIENT_TEMPERATURE: + case VS_ID_AMBIENT_TEMPERATURE_WAKEUP: + if ((*fifo_buffer_length) < _fifoSizes[BHY_DATA_TYPE_SCALAR_S16]) + { + return BHY_OUT_OF_RANGE; + } + + (*fifo_data_type) = BHY_DATA_TYPE_SCALAR_S16; + fifo_data_output->data_scalar_s16.sensor_id = (**fifo_buffer); + fifo_data_output->data_scalar_s16.data = + (int16_t)(((uint16_t)*(*fifo_buffer + 1)) | ((uint16_t)*(*fifo_buffer + 2) << 8)); + break; + + case VS_ID_BAROMETER: + case VS_ID_BAROMETER_WAKEUP: + if ((*fifo_buffer_length) < _fifoSizes[BHY_DATA_TYPE_SCALAR_U24]) + { + return BHY_OUT_OF_RANGE; + } + + (*fifo_data_type) = BHY_DATA_TYPE_SCALAR_U24; + fifo_data_output->data_scalar_u24.sensor_id = (**fifo_buffer); + fifo_data_output->data_scalar_u24.data = + (uint32_t)(((uint32_t)*((*fifo_buffer) + 1)) | ((uint32_t)*((*fifo_buffer) + 2) << 8) | + ((uint32_t)*((*fifo_buffer) + 3) << 16)); + break; + + case VS_ID_SIGNIFICANT_MOTION: + case VS_ID_SIGNIFICANT_MOTION_WAKEUP: + case VS_ID_STEP_DETECTOR: + case VS_ID_STEP_DETECTOR_WAKEUP: + case VS_ID_TILT_DETECTOR: + case VS_ID_TILT_DETECTOR_WAKEUP: + case VS_ID_WAKE_GESTURE: + case VS_ID_WAKE_GESTURE_WAKEUP: + case VS_ID_GLANCE_GESTURE: + case VS_ID_GLANCE_GESTURE_WAKEUP: + case VS_ID_PICKUP_GESTURE: + case VS_ID_PICKUP_GESTURE_WAKEUP: + (*fifo_data_type) = BHY_DATA_TYPE_SENSOR_EVENT; + fifo_data_output->data_sensor_event.sensor_id = (**fifo_buffer); + break; + + case VS_ID_UNCALIBRATED_MAGNETOMETER: + case VS_ID_UNCALIBRATED_MAGNETOMETER_WAKEUP: + case VS_ID_UNCALIBRATED_GYROSCOPE: + case VS_ID_UNCALIBRATED_GYROSCOPE_WAKEUP: + if ((*fifo_buffer_length) < _fifoSizes[BHY_DATA_TYPE_UNCALIB_VECTOR]) + { + return BHY_OUT_OF_RANGE; + } + + (*fifo_data_type) = BHY_DATA_TYPE_UNCALIB_VECTOR; + fifo_data_output->data_uncalib_vector.sensor_id = (**fifo_buffer); + fifo_data_output->data_uncalib_vector.x = + (int16_t)(((uint16_t)*((*fifo_buffer) + 1)) | ((uint16_t)*((*fifo_buffer) + 2) << 8)); + fifo_data_output->data_uncalib_vector.y = + (int16_t)(((uint16_t)*((*fifo_buffer) + 3)) | ((uint16_t)*((*fifo_buffer) + 4) << 8)); + fifo_data_output->data_uncalib_vector.z = + (int16_t)(((uint16_t)*((*fifo_buffer) + 5)) | ((uint16_t)*((*fifo_buffer) + 6) << 8)); + fifo_data_output->data_uncalib_vector.x_bias = + (int16_t)(((uint16_t)*((*fifo_buffer) + 7)) | ((uint16_t)*((*fifo_buffer) + 8) << 8)); + fifo_data_output->data_uncalib_vector.y_bias = + (int16_t)(((uint16_t)*((*fifo_buffer) + 9)) | ((uint16_t)*((*fifo_buffer) + 10) << 8)); + fifo_data_output->data_uncalib_vector.z_bias = + (int16_t)(((uint16_t)*((*fifo_buffer) + 11)) | ((uint16_t)*((*fifo_buffer) + 12) << 8)); + fifo_data_output->data_uncalib_vector.status = *((*fifo_buffer)+13); + break; + + case VS_ID_META_EVENT: + case VS_ID_META_EVENT_WAKEUP: + if ((*fifo_buffer_length) < _fifoSizes[BHY_DATA_TYPE_META_EVENT]) + { + return BHY_OUT_OF_RANGE; + } + + (*fifo_data_type) = BHY_DATA_TYPE_META_EVENT; + fifo_data_output->data_meta_event.meta_event_id = (**fifo_buffer); + fifo_data_output->data_meta_event.event_number = (bhy_meta_event_type_t)(*((*fifo_buffer) + 1)); + fifo_data_output->data_meta_event.sensor_type = *((*fifo_buffer) + 2); + fifo_data_output->data_meta_event.event_specific = *((*fifo_buffer) + 3); + break; + case VS_ID_DEBUG: + if ((*fifo_buffer_length) < _fifoSizes[BHY_DATA_TYPE_DEBUG]) + { + return BHY_OUT_OF_RANGE; + } + + (*fifo_data_type) = BHY_DATA_TYPE_DEBUG; + fifo_data_output->data_debug.sensor_id = (**fifo_buffer); + fifo_data_output->data_debug.data[0] = *((*fifo_buffer) + 1); + fifo_data_output->data_debug.data[1] = *((*fifo_buffer) + 2); + fifo_data_output->data_debug.data[2] = *((*fifo_buffer) + 3); + fifo_data_output->data_debug.data[3] = *((*fifo_buffer) + 4); + fifo_data_output->data_debug.data[4] = *((*fifo_buffer) + 5); + fifo_data_output->data_debug.data[5] = *((*fifo_buffer) + 6); + fifo_data_output->data_debug.data[6] = *((*fifo_buffer) + 7); + fifo_data_output->data_debug.data[7] = *((*fifo_buffer) + 8); + fifo_data_output->data_debug.data[8] = *((*fifo_buffer) + 9); + fifo_data_output->data_debug.data[9] = *((*fifo_buffer) + 10); + fifo_data_output->data_debug.data[10] = *((*fifo_buffer) + 11); + fifo_data_output->data_debug.data[11] = *((*fifo_buffer) + 12); + fifo_data_output->data_debug.data[12] = *((*fifo_buffer) + 13); + break; + case VS_ID_BSX_C: + case VS_ID_BSX_B: + case VS_ID_BSX_A: + if ((*fifo_buffer_length) < _fifoSizes[BHY_DATA_TYPE_BSX]) + { + return BHY_OUT_OF_RANGE; + } + + (*fifo_data_type) = BHY_DATA_TYPE_BSX; + fifo_data_output->data_bsx.sensor_id = (**fifo_buffer); + fifo_data_output->data_bsx.x = + (uint32_t)(((uint32_t)*((*fifo_buffer) + 1)) | ((uint32_t)*((*fifo_buffer) + 2) << 8) | + ((uint32_t)*((*fifo_buffer) + 3) << 16) | ((uint32_t)*((*fifo_buffer) + 4) << 24)); + fifo_data_output->data_bsx.y = + (uint32_t)(((uint32_t)*((*fifo_buffer) + 5)) | ((uint32_t)*((*fifo_buffer) + 6) << 8) | + ((uint32_t)*((*fifo_buffer) + 7) << 16) | ((uint32_t)*((*fifo_buffer) + 8) << 24)); + fifo_data_output->data_bsx.z = + (uint32_t)(((uint32_t)*((*fifo_buffer) + 9)) | ((uint32_t)*((*fifo_buffer) + 10) << 8) | + ((uint32_t)*((*fifo_buffer) + 11) << 16) | ((uint32_t)*((*fifo_buffer) + 12) << 24)); + fifo_data_output->data_bsx.timestamp = + (uint32_t)(((uint32_t)*((*fifo_buffer) + 13)) | ((uint32_t)*((*fifo_buffer) + 14) << 8) | + ((uint32_t)*((*fifo_buffer) + 15) << 16) | ((uint32_t)*((*fifo_buffer) + 16) << 24)); + break; + + case VS_ID_CUS1: + case VS_ID_CUS2: + case VS_ID_CUS3: + case VS_ID_CUS4: + case VS_ID_CUS5: + (*fifo_data_type) = BHY_DATA_TYPE_CUS1+ **fifo_buffer - VS_ID_CUS1; + + if ((*fifo_buffer_length) < _fifoSizes[*fifo_data_type]) + { + return BHY_OUT_OF_RANGE; + } + + fifo_data_output->data_pdr.sensor_id = (**fifo_buffer); + + for(i = 0; i < _fifoSizes[*fifo_data_type] - 1; i++) + fifo_data_output->data_custom.data[i] = *((*fifo_buffer) + i); + break; + + case VS_ID_CUS1_WAKEUP: + case VS_ID_CUS2_WAKEUP: + case VS_ID_CUS3_WAKEUP: + case VS_ID_CUS4_WAKEUP: + case VS_ID_CUS5_WAKEUP: + (*fifo_data_type) = BHY_DATA_TYPE_CUS1+ **fifo_buffer - VS_ID_CUS1_WAKEUP; + + if ((*fifo_buffer_length) < _fifoSizes[*fifo_data_type]) + { + return BHY_OUT_OF_RANGE; + } + + fifo_data_output->data_pdr.sensor_id = (**fifo_buffer); + + for(i = 0; i < _fifoSizes[*fifo_data_type]-1; i++) + fifo_data_output->data_custom.data[i] = *((*fifo_buffer) + i); + break; + + /* the VS sensor ID is unknown. Either the sync has been lost or the */ + /* ram patch implements a new sensor ID that this driver doesn't yet */ + /* support */ + default: + return BHY_OUT_OF_RANGE; + } + + +#if defined(BHY_DEBUG) + { + uint8_t *p_name = "UnDefined"; + const char *sensors[] = {"PAdding", "Acc", "Mag", "Orient", "Gyro", "Light", "Bar", "Temp" + ,"Prox", "Gravity", "Line Acc", "R Vector", "Humidity", "A temp", "un Mag", "GR Vector" + ,"Un Gyro","SigMotion","StepDet", "StepCnt", "GeoR Vector", "HeartRate", "TiltDect","WGesture" + ,"Glance", "PickUp", "Cus1", "Cus2", "Cus3", "Cus4", "Cus5", "Activity" + }; + + if((uint8_t)**fifo_buffer <= VS_ID_ACTIVITY) + { + p_name = sensors[(uint8_t)**fifo_buffer]; + } + else if((uint8_t)**fifo_buffer <= VS_ID_ACTIVITY_WAKEUP) + { + p_name = sensors[(uint8_t)**fifo_buffer - 32]; + } + else + { + switch(**fifo_buffer) + { + case VS_ID_DEBUG: + p_name = "DString"; + break; + case VS_ID_TIMESTAMP_LSW_WAKEUP: + case VS_ID_TIMESTAMP_LSW: + p_name = "LSW"; + break; + case VS_ID_TIMESTAMP_MSW_WAKEUP: + case VS_ID_TIMESTAMP_MSW: + p_name = "MSW"; + break; + case VS_ID_META_EVENT_WAKEUP: + case VS_ID_META_EVENT: + p_name = "Meta Evt"; + break; + case VS_ID_BSX_A: + p_name = "BSX A"; + break; + case VS_ID_BSX_B: + p_name = "BSX B"; + break; + case VS_ID_BSX_C: + p_name = "BSX C"; + break; + default: + p_name = "UnKnown"; + break; + } + } + + trace_log("[Sample](%12s):(%02d)", p_name, _fifoSizes[*fifo_data_type]); + for(i = 0; i < _fifoSizes[*fifo_data_type]; i++) + trace_log(" %02x", *((*fifo_buffer) + i)); + trace_log("\n"); + } +#endif + + +#if BHY_CALLBACK_MODE + if((**fifo_buffer) < 0x40) + { + if (sensor_callback_list[(**fifo_buffer)] != 0) + { + sensor_callback_list[(**fifo_buffer)](fifo_data_output, (bhy_virtual_sensor_t)(**fifo_buffer)); + } + } + else if ((**fifo_buffer) == VS_ID_TIMESTAMP_LSW ||(**fifo_buffer) == VS_ID_TIMESTAMP_MSW) + { + if (timestamp_callback_list[0] != 0) + { + timestamp_callback_list[0](&fifo_data_output->data_scalar_u16); + } + } + else if ((**fifo_buffer) == VS_ID_TIMESTAMP_LSW_WAKEUP ||(**fifo_buffer) == VS_ID_TIMESTAMP_MSW_WAKEUP) + { + if (timestamp_callback_list[1] != 0) + { + timestamp_callback_list[1](&fifo_data_output->data_scalar_u16); + } + } + else if ((**fifo_buffer) == VS_ID_META_EVENT ||(**fifo_buffer) == VS_ID_META_EVENT_WAKEUP) + { + if (meta_event_callback_list[fifo_data_output->data_meta_event.event_number] != 0) + { + meta_event_callback_list[fifo_data_output->data_meta_event.event_number](&fifo_data_output->data_meta_event, + fifo_data_output->data_meta_event.event_number); + } + } +#endif + + + (*fifo_buffer) += _fifoSizes[*fifo_data_type]; + (*fifo_buffer_length) -= _fifoSizes[*fifo_data_type]; + + return BHY_SUCCESS; +}; + +/*! + * @brief This function will detect the timestamp packet accordingly and update + * either the MSW or the LSW of the system timestamp + * + * system_timestamp is only valid after LSW comes. + * + * @param[in] timestamp_packet timestamp of packets + * @param[in/out] system_timestamp timestamp of system + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_update_system_timestamp(bhy_data_scalar_u16_t *timestamp_packet, + uint32_t *system_timestamp) +{ + static uint32_t timestamp_wakeup = 0; + static uint32_t timestamp_nonwakeup = 0; + + switch (timestamp_packet->sensor_id) + { + case VS_ID_TIMESTAMP_LSW: + timestamp_nonwakeup = (timestamp_nonwakeup & 0xFFFF0000) | (uint32_t)timestamp_packet->data; + *system_timestamp = timestamp_nonwakeup; + break; + case VS_ID_TIMESTAMP_LSW_WAKEUP: + timestamp_wakeup = (timestamp_wakeup & 0xFFFF0000) | (uint32_t)timestamp_packet->data; + *system_timestamp = timestamp_wakeup; + break;; + + case VS_ID_TIMESTAMP_MSW: + timestamp_nonwakeup = (timestamp_nonwakeup & 0x0000FFFF) | ((uint32_t)timestamp_packet->data << 16); + break; + case VS_ID_TIMESTAMP_MSW_WAKEUP: + timestamp_wakeup = (timestamp_wakeup & 0x0000FFFF) | ((uint32_t)timestamp_packet->data << 16); + break; + default: + return BHY_OUT_OF_RANGE; + } +} + +/*! + * @brief This function writes arbitrary data to an arbitrary parameter page + * + * @param[in] page select the page of parameter + * @param[in] parameter select the parameter + * @param[in] data data to be written to parameter + * @param[in] length length of data + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_write_parameter_page(uint8_t page, uint8_t parameter, uint8_t *data, uint8_t length) +{ + /* variable used for return the status of communication result */ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + + uint8_t v_parameter_ack = BHY_INIT_VALUE; + uint8_t v_parameter_ack_check = BHY_INIT_VALUE; + + /* write values to the load address*/ + if (length > MAX_WRITE_BYTES) + { + length = MAX_WRITE_BYTES; + } + else if (length == 0) + { + return BHY_SUCCESS; + } + + com_rslt = bhy_write_reg(BHY_I2C_REG_PARAMETER_WRITE_BUFFER_ZERO, data, length); + + /* select the page*/ + if (page > MAX_PAGE_NUM) + { + page = MAX_PAGE_NUM; + } + else if (page == 0) + { + return BHY_SUCCESS; + } + + page = ((length & 0x07) << 4) | page; + com_rslt += bhy_write_reg(BHY_I2C_REG_PARAMETER_PAGE_SELECT__REG, &page, 1); + + /* select the parameter*/ + parameter |= 0x80; + com_rslt += bhy_set_parameter_request(parameter); + for (v_parameter_ack_check = BHY_INIT_VALUE; + v_parameter_ack_check < BHY_PARAMETER_ACK_LENGTH; + v_parameter_ack_check++) + { + /* read the acknowledgment*/ + com_rslt += bhy_get_parameter_acknowledge(&v_parameter_ack); + if (v_parameter_ack == parameter) + { + com_rslt += BHY_SUCCESS; + break; + } + else if (v_parameter_ack == BHY_PARAMETER_ACK_CHECK) + { + bhy_delay_msec(BHY_PARAMETER_ACK_DELAY); + com_rslt += BHY_ERROR; + } + else + { + /* device not ready yet */ + bhy_delay_msec(1); + } + } + return com_rslt; +} + +/*! + * @brief This function reads arbitrary data from an arbitrary parameter page + * + * @param[in] page select the page of parameter + * @param[in] parameter select the parameter + * @param[out] data data to be read from parameter + * @param[in] length length of data + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_read_parameter_page(uint8_t page, uint8_t parameter, uint8_t *data, uint8_t length) +{ + /* variable used for return the status of communication result*/ + BHY_RETURN_FUNCTION_TYPE com_rslt = BHY_COMM_RES; + + uint8_t v_parameter_ack = BHY_INIT_VALUE; + uint8_t v_parameter_ack_check = BHY_INIT_VALUE; + + if (length > 16) + { + length = 16; + } + else if (length == 0) + { + return BHY_SUCCESS; + } + + /* select the page*/ + if (page > 15) + { + page = 15; + } + else if (page == 0) + { + return BHY_SUCCESS; + } + + page = ((length & 0x0F) << 4) | page; + com_rslt = bhy_write_reg(BHY_I2C_REG_PARAMETER_PAGE_SELECT__REG, &page, 1); + + /* select the parameter*/ + parameter &= 0x7F; + com_rslt += bhy_set_parameter_request(parameter); + for (v_parameter_ack_check = BHY_INIT_VALUE; + v_parameter_ack_check < BHY_PARAMETER_ACK_LENGTH; + v_parameter_ack_check++) + { + /* read the acknowledgment*/ + com_rslt += bhy_get_parameter_acknowledge(&v_parameter_ack); + if (v_parameter_ack == parameter) + { + com_rslt += BHY_SUCCESS; + break; + } + else if(v_parameter_ack == BHY_PARAMETER_ACK_CHECK) + { + bhy_delay_msec(BHY_PARAMETER_ACK_DELAY); + com_rslt += BHY_ERROR; + } + else + { + /* device not ready yet */ + bhy_delay_msec(1); + } + } + /* read values to the load address*/ + com_rslt += bhy_read_reg(BHY_I2C_REG_PARAMETER_READ_BUFFER_ZERO, data, length); + + return com_rslt; +} + +/*! + * @brief This function set mapping matrix to a corresponding physical sensor. + * + * @param[in] index physical sensor index + * @param[in] mapping_matrix pointer to a int8_t mapping_matrix[9] + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_mapping_matrix_set(bhy_physical_sensor_index_type_t index ,int8_t *mapping_matrix) +{ + uint8_t data[8] = { 0, }; + int32_t i; + int32_t handle; + BHY_RETURN_FUNCTION_TYPE ret = BHY_SUCCESS; + + switch (index) + { + case PHYSICAL_SENSOR_INDEX_ACC: + handle = VS_ID_ACCELEROMETER; + break; + case PHYSICAL_SENSOR_INDEX_MAG: + handle = VS_ID_UNCALIBRATED_MAGNETOMETER; + break; + case PHYSICAL_SENSOR_INDEX_GYRO: + handle = VS_ID_UNCALIBRATED_GYROSCOPE; + break; + default: + return BHY_ERROR; + } + + for (i = 0; i < 5; ++i) + { + switch (mapping_matrix[2 * i]) + { + case 0: + data[i] = 0; + break; + case 1: + data[i] = 1; + break; + case -1: + data[i] = 0xF; + break; + default: + return BHY_ERROR; + } + + if (i == 4) + { + break; + } + + switch (mapping_matrix[2 * i + 1]) + { + case 0: + break; + case 1: + data[i] |= 0x10; + break; + case -1: + data[i] |= 0xF0; + break; + default: + return BHY_ERROR; + } + } + + /* mutex_lock(&client_data->mutex_bus_op); */ + ret = bhy_write_parameter_page(BHY_PAGE_SYSTEM, BHY_PARAM_SYSTEM_PHYSICAL_SENSOR_DETAIL_0 + handle, data, sizeof(data)); + + /* mutex_unlock(&client_data->mutex_bus_op); */ + if (ret < 0) + { + return ret; + } + + return 0; +} + +/*! + * @brief This function get mapping matrix from a corresponding physical sensor. + * + * @param[in] index physical sensor index + * @param[in] mapping_matrix pointer to a int8_t mapping_matrix[9] + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_mapping_matrix_get(bhy_physical_sensor_index_type_t index , int8_t* mapping_matrix) +{ + int32_t i, j; + BHY_RETURN_FUNCTION_TYPE ret = BHY_SUCCESS; + uint8_t data[16]; + uint8_t map[32]; + uint8_t handle[3] = + { + VS_ID_ACCELEROMETER, + VS_ID_UNCALIBRATED_MAGNETOMETER, + VS_ID_UNCALIBRATED_GYROSCOPE, + }; + uint8_t param; + + /* Check sensor existance */ + ret = bhy_read_parameter_page(BHY_PAGE_SYSTEM, BHY_PARAM_SYSTEM_PHYSICAL_SENSOR_PRESENT, + data, sizeof(data)); + if (ret < 0) + { + return ret; + } + + for (i = 0; i < 4; ++i) + { + for (j = 0; j < 8; ++j) + { + if (data[i] & (1 << j)) + { + map[i * 8 + j] = 1; + } + else + { + map[i * 8 + j] = 0; + } + } + } + + if (!map[handle[index]]) + { + return BHY_ERROR; + } + + param = BHY_PARAM_SYSTEM_PHYSICAL_SENSOR_DETAIL_0 + handle[index]; + ret = bhy_read_parameter_page(BHY_PAGE_SYSTEM,param, data, sizeof(data)); + if (ret < 0) + { + return ret; + } + + mapping_matrix[0] = ((data[11] & 0x0F) == 0x0F) ? (-1) : (data[11] & 0x0F); + mapping_matrix[1] = (((data[11] >> 4) & 0x0F) == 0x0F) ? (-1) : ((data[11] >> 4) & 0x0F); + mapping_matrix[2] = (data[12] & 0x0F) == 0x0F ? (-1) : (data[12] & 0x0F); + mapping_matrix[3] = (((data[12] >> 4) & 0x0F) == 0x0F) ? (-1) : ((data[12] >> 4) & 0x0F); + mapping_matrix[4] = (data[13] & 0x0F) == 0x0F ? (-1) : (data[13] & 0x0F); + mapping_matrix[5] = (((data[13] >> 4) & 0x0F) == 0x0F) ? (-1) : ((data[13] >> 4) & 0x0F); + mapping_matrix[6] = (data[14] & 0x0F) == 0x0F ? (-1) : (data[14] & 0x0F); + mapping_matrix[7] = (((data[14] >> 4) & 0x0F) == 0x0F) ? (-1) : ((data[14] >> 4) & 0x0F); + mapping_matrix[8] = (data[15] & 0x0F) == 0x0F ? (-1) : (data[15] & 0x0F); + + return ret; +} + +/*! + * @brief Soft pass-through parameter write function. + * + * @param[in] addr physical sensor index + * @param[in] reg register address to be written + * @param[in] data pointer to data to be written + * @param[in] length + * @param[in] increment_reg if true, the function will automatically increment the register between successive 4-bytes transfers + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_soft_passthru_write(uint8_t addr, uint8_t reg, uint8_t *data, uint8_t length, uint8_t increment_reg) +{ + /* follows data structures in page table 26 and 27 of datasheet */ + uint8_t temp_data[8]; + BHY_RETURN_FUNCTION_TYPE ret = BHY_SUCCESS; + + while (length) + { + temp_data[0] = addr; + temp_data[1] = reg; + temp_data[2] = (length > 4) ? 4 : length; + length -= temp_data[2]; + if (increment_reg) + { + reg += temp_data[2]; + } + temp_data[3] = 0x00; + temp_data[4] = *(data++); + temp_data[5] = (temp_data[2] >= 2) ? *(data++) : 0x00; + temp_data[6] = (temp_data[2] >= 3) ? *(data++) : 0x00; + temp_data[7] = (temp_data[2] >= 4) ? *(data++) : 0x00; + + ret = bhy_write_parameter_page(15, 2, temp_data, 8); + + /* wait until transaction is over */ + do + { + ret = bhy_read_parameter_page(15, 2, temp_data, 8); + } while (temp_data[3] == 0x00); + } + return ret; +} + +/*! + * @brief Soft pass-through parameter read function. + * + * @param[in] addr physical sensor index + * @param[in] reg register address to be written + * @param[out] data pointer to data to be written + * @param[in] length + * @param[in] increment_reg if true, the function will automatically increment the register between successive 4-bytes transfers + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_soft_passthru_read(uint8_t addr, uint8_t reg, uint8_t *data, uint8_t length, uint8_t increment_reg) +{ + /* follows data structures in page table 26 and 27 of datasheet */ + uint8_t temp_data[8]; + BHY_RETURN_FUNCTION_TYPE ret = BHY_SUCCESS; + + while (length) + { + temp_data[0] = addr; + temp_data[1] = reg; + temp_data[2] = (length > 4) ? 4 : length; + length -= temp_data[2]; + if (increment_reg) + { + reg += temp_data[2]; + } + temp_data[3] = 0x00; + temp_data[4] = 0x00; + temp_data[5] = 0x00; + temp_data[6] = 0x00; + temp_data[7] = 0x00; + + ret = bhy_write_parameter_page(15, 1, temp_data, 8); + + /* wait until transaction is over */ + do + { + ret = bhy_read_parameter_page(15, 1, temp_data, 8); + } while (temp_data[3] == 0x00); + + if (temp_data[3] == 0x01) + { + *(data++) = temp_data[4]; + if (temp_data[2] >= 2) + { + *(data++) = temp_data[5]; + } + + if (temp_data[2] >= 3) + { + *(data++) = temp_data[6]; + } + + if (temp_data[2] >= 4) + { + *(data++) = temp_data[7]; + } + } + } + + return ret; +} + +/*! + * @brief Write data to specific GP register. + * + * @param[in] gp_reg GP register address + * @param[in] data data to be written to GP register + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_gp_register_write(bhy_gp_register_type_t gp_reg, uint8_t data) +{ + BHY_RETURN_FUNCTION_TYPE ret = BHY_SUCCESS; + + if((gp_reg >= BHY_GP_REG_20) && (gp_reg <= BHY_GP_REG_24)) + { + /* GP register 20~24 are read only */ + ret = BHY_ERROR; + } + else + { + ret += bhy_write_reg(gp_reg, &data, 1); + } + + return ret; +} + +/*! + * @brief Write data to specific GP register. + * + * @param[in] gp_reg GP register address + * @param[in] data pointer to receive buffer + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_gp_register_read(bhy_gp_register_type_t gp_reg, uint8_t *data) +{ + BHY_RETURN_FUNCTION_TYPE ret = BHY_SUCCESS; + + ret += bhy_read_reg(gp_reg, data, 1); + + return ret; +} + +/*! + * @brief This function reads out the current SIC matrix from BHy + * + * @param[in] sic_matrix pointer to SIC matrix + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_get_sic_matrix(float * sic_matrix) +{ + BHY_RETURN_FUNCTION_TYPE return_val; + + return_val = bhy_read_parameter_page(BHY_PAGE_2, PAGE2_SIC_MATRIX_0_1, (uint8_t *)(&sic_matrix[0]), 8); + + if (BHY_SUCCESS == return_val) + { + return_val = bhy_read_parameter_page(BHY_PAGE_2, PAGE2_SIC_MATRIX_2_3, (uint8_t *)(&sic_matrix[2]), 8); + } + + if (BHY_SUCCESS == return_val) + { + return_val = bhy_read_parameter_page(BHY_PAGE_2, PAGE2_SIC_MATRIX_4_5, (uint8_t *)(&sic_matrix[4]), 8); + } + + if (BHY_SUCCESS == return_val) + { + return_val = bhy_read_parameter_page(BHY_PAGE_2, PAGE2_SIC_MATRIX_6_7, (uint8_t *)(&sic_matrix[6]), 8); + } + + if (BHY_SUCCESS == return_val) + { + return_val = bhy_read_parameter_page(BHY_PAGE_2, PAGE2_SIC_MATRIX_8, (uint8_t *)(&sic_matrix[8]), 4); + } + + return return_val; +} + +/*! + * @brief This function get all the custom sensor data length according reading information from hub. + * + * @param[in] none + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_sync_cus_evt_size(void) +{ + struct sensor_information_wakeup_t sensor_info_wakeup; + uint8_t i = 0; + + for(i = 0; i < 5; i++) + { + bhy_get_wakeup_sensor_information(VS_ID_CUS1 + i, &sensor_info_wakeup); + + if(sensor_info_wakeup.wakeup_sensor_type == (VS_TYPE_CUS1 + i)) + { + _fifoSizes[BHY_DATA_TYPE_CUS1+i] = sensor_info_wakeup.wakeup_event_size; + } + } + + return BHY_SUCCESS; +} + +/*! + * @brief This function get the specific custom sensor data length according reading information from hub. + * + * @param[in] sensor_id pointer to sensor_id + * + * @retval result of data length + */ +int8_t bhy_get_cus_evt_size(bhy_virtual_sensor_t sensor_id) +{ + if(sensor_id >= VS_TYPE_CUS1 && sensor_id <= VS_TYPE_CUS5) + { + return _fifoSizes[BHY_DATA_TYPE_CUS1 + sensor_id - VS_TYPE_CUS1]; + } + + return BHY_ERROR; +} + +/*! + * @brief This function write a new SIC matrix to the BHy + * + * @param[in] sic_matrix pointer to SIC matrix + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_set_sic_matrix(float *sic_matrix) +{ + BHY_RETURN_FUNCTION_TYPE return_val; + + return_val = bhy_write_parameter_page(BHY_PAGE_2, PAGE2_SIC_MATRIX_0_1, (uint8_t *)(&sic_matrix[0]), 8); + + if (BHY_SUCCESS == return_val) + { + return_val = bhy_write_parameter_page(BHY_PAGE_2,PAGE2_SIC_MATRIX_2_3, (uint8_t *)(&sic_matrix[2]), 8); + } + + if (BHY_SUCCESS == return_val) + { + return_val = bhy_write_parameter_page(BHY_PAGE_2,PAGE2_SIC_MATRIX_4_5, (uint8_t *)(&sic_matrix[4]), 8); + } + + if (BHY_SUCCESS == return_val) + { + return_val = bhy_write_parameter_page(BHY_PAGE_2,PAGE2_SIC_MATRIX_6_7, (uint8_t *)(&sic_matrix[6]), 8); + } + + if (BHY_SUCCESS == return_val) + { + return_val = bhy_write_parameter_page(BHY_PAGE_2,PAGE2_SIC_MATRIX_8, (uint8_t *)(&sic_matrix[8]), 4); + } + + return return_val; +} + +/*! + * @brief This function outputs the debug data to function pointer + * You need to provide a function that takes as argument a zero-terminated string and prints it + * + * @param[in] packet debug message + * @param[in] debug_print_ptr print function + * + * @retval result of execution + */ +void bhy_print_debug_packet(bhy_data_debug_t *packet, void (*debug_print_ptr)(const uint8_t *)) +{ + uint8_t len; + uint8_t tempstr[25]; + uint8_t i=0; + + len = packet->data[0] & 0x3F; + if (packet->data[0] & 0x40) + { + /* Binary data */ + while (i < len) + { + tempstr[i*2] = (packet->data[i+1] & 0xF0) > 0x90 ? + ((packet->data[i+1] & 0xF0)>>4) - 0x0A + 'A' : + ((packet->data[i+1] & 0xF0)>>4) + '0' ; + tempstr[i*2+1] = (packet->data[i+1] & 0x0F) > 0x09 ? + (packet->data[i+1] & 0x0F) - 0x0A + 'A' : + (packet->data[i+1] & 0x0F) + '0' ; + ++i; + } + tempstr[i*2] = '\0'; + } + else + { + while (i < len) + { + tempstr[i] = packet->data[i+1]; + ++i; + } + tempstr[i] = '\0'; + } + + debug_print_ptr(tempstr); +} + +#if BHY_CALLBACK_MODE +/*! + * @brief configure callback function for sensor + * + * @param[in] sensor_id sensor ID + * @param[in] wakeup_status status of WAKEUP OR NONWAKEUP + * @param[in] sensor_callback callback function to be configured + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_install_sensor_callback (bhy_virtual_sensor_t sensor_id, uint8_t wakeup_status, + void (*sensor_callback)(bhy_data_generic_t *, bhy_virtual_sensor_t)) +{ + if ((uint8_t)sensor_id > MAX_SENSOR_ID_NONWAKEUP) + { + /* Invalid sensor ID */ + return BHY_OUT_OF_RANGE; + } + + if ((wakeup_status != VS_WAKEUP) && (wakeup_status != VS_NON_WAKEUP)) + { + /* Invalid wakeup state */ + return BHY_OUT_OF_RANGE; + } + + sensor_id = (bhy_virtual_sensor_t)((sensor_id & 0x1F) + wakeup_status); + + if (sensor_callback_list[sensor_id] != 0) + { + /* There is already a callback installed */ + return BHY_OUT_OF_RANGE; + } + else + { + sensor_callback_list[sensor_id] = sensor_callback; + return BHY_SUCCESS; + } +} + +/*! + * @brief uninstall callback function for sensor + * + * + * @param[in] sensor_id sensor ID + * @param[in] wakeup_status status of WAKEUP OR NONWAKEUP + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_uninstall_sensor_callback(bhy_virtual_sensor_t sensor_id, uint8_t wakeup_status) +{ + if ((uint8_t)sensor_id > MAX_SENSOR_ID_NONWAKEUP) + { + /* Invalid sensor ID */ + return BHY_OUT_OF_RANGE; + } + + if ((wakeup_status != VS_WAKEUP) && (wakeup_status != VS_NON_WAKEUP)) + { + /* Invalid wakeup state */ + return BHY_OUT_OF_RANGE; + } + + sensor_id = (bhy_virtual_sensor_t)((sensor_id & 0x1F) + wakeup_status); + if (sensor_callback_list[sensor_id] == 0) + { + /* There are no callback installed */ + return BHY_OUT_OF_RANGE; + } + else + { + sensor_callback_list[sensor_id] = 0; + return BHY_SUCCESS; + } +} + +/*! + * @brief install callback function for timestamp + * + * + * @param[in] wakeup_status status of WAKEUP OR NONWAKEUP + * @param[in] sensor_callback callback function to be configured + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_install_timestamp_callback (uint8_t wakeup_status, void (*timestamp_callback)(bhy_data_scalar_u16_t *)) +{ + if ((wakeup_status != VS_WAKEUP) && (wakeup_status != VS_NON_WAKEUP)) + { + /* Invalid wakeup state */ + return BHY_OUT_OF_RANGE; + } + if (timestamp_callback_list[wakeup_status == VS_WAKEUP] != 0) + { + /* There is already a callback installed */ + return BHY_OUT_OF_RANGE; + } + else + { + timestamp_callback_list[wakeup_status == VS_WAKEUP] = timestamp_callback; + return BHY_SUCCESS; + } +} + +/*! + * @brief uninstall callback function for timestamp + * + * @param[in] wakeup_status status of WAKEUP OR NONWAKEUP + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_uninstall_timestamp_callback (uint8_t wakeup_status) +{ + if ((wakeup_status != VS_WAKEUP) && (wakeup_status != VS_NON_WAKEUP)) + { + /* Invalid wakeup state */ + return BHY_OUT_OF_RANGE; + } + if (timestamp_callback_list[wakeup_status == VS_WAKEUP] == 0) + { + /* There are no callback installed */ + return BHY_OUT_OF_RANGE; + } + else + { + timestamp_callback_list[wakeup_status == VS_WAKEUP] = 0; + return BHY_SUCCESS; + } +} + +/*! + * @brief install callback function for meta event + * + * + * @param[in] meta_event_id meta event ID + * @param[in] meta_event_callback callback function to be configured + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_install_meta_event_callback (bhy_meta_event_type_t meta_event_id, + void (*meta_event_callback)(bhy_data_meta_event_t *, + bhy_meta_event_type_t)) +{ + if (meta_event_id > MAX_METAEVENT_ID) + { + /* Invalid meta event ID */ + return BHY_OUT_OF_RANGE; + } + else if (meta_event_callback_list[meta_event_id] != 0) + { + /* There is already a callback installed */ + return BHY_OUT_OF_RANGE; + } + else + { + meta_event_callback_list[meta_event_id] = meta_event_callback; + return BHY_SUCCESS; + } +} + +/*! + * @brief uninstall callback function for meta event + * + * + * @param[in] meta_event_id meta event ID + * + * @retval result of execution + */ +BHY_RETURN_FUNCTION_TYPE bhy_uninstall_meta_event_callback (bhy_meta_event_type_t meta_event_id) +{ + if (meta_event_id > MAX_METAEVENT_ID) + { + /* Invalid meta event ID */ + return BHY_OUT_OF_RANGE; + } + else if (meta_event_callback_list[meta_event_id] == 0) + { + /* There is no callback installed */ + return BHY_OUT_OF_RANGE; + } + else + { + meta_event_callback_list[meta_event_id] = 0; + return BHY_SUCCESS; + } +} +#endif + +/** @}*/ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/examples/accelerometer_remapping_example.c b/lib/bosch/BHy1_driver_and_MCU_solution/examples/accelerometer_remapping_example.c new file mode 100644 index 0000000000000000000000000000000000000000..7b21dde4565a79cddb575e2bf5753b35947626f3 --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/examples/accelerometer_remapping_example.c @@ -0,0 +1,249 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + */ + + +/********************************************************************************/ +/* HEADER FILES */ +/********************************************************************************/ +#include <stdint.h> +#include <string.h> +#include <stdarg.h> + +#include "asf.h" +#include "task.h" +#include "arm_math.h" +#include "demo-tasks.h" + +#include "bhy_support.h" +#include "bhy_uc_driver.h" +#include ".\firmware\Bosch_PCB_7183_di03_BMI160-7183_di03.2.1.11696_170103.h" + + + +/********************************************************************************/ +/* MACROS */ +/********************************************************************************/ +/* should be greater or equal to 69 bytes, page size (50) + maximum packet size(18) + 1 */ +#define FIFO_SIZE 300 +#define MAX_PACKET_LENGTH 18 +#define TICKS_IN_ONE_SECOND 32000.0F + +/********************************************************************************/ +/* GLOBAL VARIABLES */ +/********************************************************************************/ + + + +/********************************************************************************/ +/* STATIC VARIABLES */ +/********************************************************************************/ +/* system timestamp */ +uint32_t bhy_timestamp = 0; + +uint8_t fifo[FIFO_SIZE]; + + +/********************************************************************************/ +/* FUNCTIONS */ +/********************************************************************************/ + +/*! + * @brief This function is time stamp callback function that process data in fifo. + * + * @param[in] new_timestamp + */ +static void timestamp_callback(bhy_data_scalar_u16_t *new_timestamp) +{ + /* updates the system timestamp */ + bhy_update_system_timestamp(new_timestamp, &bhy_timestamp); +} + +/*! + * @brief This function is callback function for acquring sensor datas + * + * @param[in] sensor_data + * @param[in] sensor_id + */ +static void sensors_callback_acc(bhy_data_generic_t * sensor_data, bhy_virtual_sensor_t sensor_id) +{ + float time_stamp = 0; + uint8_t sensor_type = 0; + int16_t x_raw = 0; + int16_t y_raw = 0; + int16_t z_raw = 0; + float x_data = 0; + float y_data = 0; + float z_data = 0; + + /* Since a timestamp is always sent before every new data, and that the callbacks */ + /* are called while the parsing is done, then the system timestamp is always equal */ + /* to the sample timestamp. (in callback mode only) */ + time_stamp = (float)(bhy_timestamp) / TICKS_IN_ONE_SECOND; + + DEBUG("sensor_id = %d\n", sensor_id); + + switch(sensor_id) + { + case VS_ID_ACCELEROMETER: + case VS_ID_ACCELEROMETER_WAKEUP: + x_raw = sensor_data->data_vector.x; + y_raw = sensor_data->data_vector.y; + z_raw = sensor_data->data_vector.z; + /* The resolution is 15bit ,the default range is 4g, actual acceleration equals: raw_data/(exp(2,15) == 32768) */ + x_data = (float)x_raw / 32768.0f * 4.0f; + y_data = (float)y_raw / 32768.0f * 4.0f; + z_data = (float)z_raw / 32768.0f * 4.0f; + + DEBUG("Time:%6.3fs acc %f %f %f\n", time_stamp, x_data, y_data, z_data); + break; + + default: + DEBUG("unknown id = %d\n", sensor_id); + break; + } +} +/*! + * @brief This function is used to run bhy hub + */ +void demo_sensor(void) +{ + int8_t ret; + + /* BHY Variable*/ + uint8_t *fifoptr = NULL; + uint8_t bytes_left_in_fifo = 0; + uint16_t bytes_remaining = 0; + uint16_t bytes_read = 0; + bhy_data_generic_t fifo_packet; + bhy_data_type_t packet_type; + BHY_RETURN_FUNCTION_TYPE result; + int8_t bhy_mapping_matrix_init[3*3] = {0}; + int8_t bhy_mapping_matrix_config[3*3] = {0,1,0,-1,0,0,0,0,1}; + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //struct cus_version_t bhy_cus_version; + + /* init the bhy chip */ + if(bhy_driver_init(&bhy1_fw)) + { + DEBUG("Fail to init bhy\n"); + } + + /* wait for the bhy trigger the interrupt pin go down and up again */ + while (ioport_get_pin_level(BHY_INT)); + + while (!ioport_get_pin_level(BHY_INT)); + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //bhy_read_parameter_page(BHY_PAGE_2, PAGE2_CUS_FIRMWARE_VERSION, (uint8_t*)&bhy_cus_version, sizeof(struct cus_version_t)); + //DEBUG("cus version base:%d major:%d minor:%d\n", bhy_cus_version.base, bhy_cus_version.major, bhy_cus_version.minor); + + /* config mapping matrix, for customer platform, this remapping matrix need to be changed */ + /* according to 'Application Note Axes remapping of BHA250(B) /BHI160(B)' document. */ + bhy_mapping_matrix_get(PHYSICAL_SENSOR_INDEX_ACC, bhy_mapping_matrix_init); + bhy_mapping_matrix_set(PHYSICAL_SENSOR_INDEX_ACC, bhy_mapping_matrix_config); + bhy_mapping_matrix_get(PHYSICAL_SENSOR_INDEX_ACC, bhy_mapping_matrix_init); + + /* install time stamp callback */ + bhy_install_timestamp_callback(VS_WAKEUP, timestamp_callback); + bhy_install_timestamp_callback(VS_NON_WAKEUP, timestamp_callback); + + + /* install the callback function for parse fifo data */ + if(bhy_install_sensor_callback(VS_TYPE_ACCELEROMETER, VS_WAKEUP, sensors_callback_acc)) + { + DEBUG("Fail to install sensor callback\n"); + } + + /* enables the virtual sensor */ + if(bhy_enable_virtual_sensor(VS_TYPE_ACCELEROMETER, VS_WAKEUP, 10, 0, VS_FLUSH_NONE, 0, 0)) + { + DEBUG("Fail to enable sensor id=%d\n", VS_TYPE_ACCELEROMETER); + } + + /* continuously read and parse the fifo */ + while(1) + { + /* wait until the interrupt fires */ + /* unless we already know there are bytes remaining in the fifo */ + while (!ioport_get_pin_level(BHY_INT) && !bytes_remaining) + { + } + + bhy_read_fifo(fifo + bytes_left_in_fifo, FIFO_SIZE - bytes_left_in_fifo, &bytes_read, &bytes_remaining); + bytes_read += bytes_left_in_fifo; + fifoptr = fifo; + packet_type = BHY_DATA_TYPE_PADDING; + + do + { + /* this function will call callbacks that are registered */ + result = bhy_parse_next_fifo_packet(&fifoptr, &bytes_read, &fifo_packet, &packet_type); + + /* prints all the debug packets */ + if (packet_type == BHY_DATA_TYPE_DEBUG) + { + bhy_print_debug_packet(&fifo_packet.data_debug, bhy_printf); + } + + /* the logic here is that if doing a partial parsing of the fifo, then we should not parse */ + /* the last 18 bytes (max length of a packet) so that we don't try to parse an incomplete */ + /* packet */ + } while ((result == BHY_SUCCESS) && (bytes_read > (bytes_remaining ? MAX_PACKET_LENGTH : 0))); + + bytes_left_in_fifo = 0; + + if (bytes_remaining) + { + /* shifts the remaining bytes to the beginning of the buffer */ + while (bytes_left_in_fifo < bytes_read) + { + fifo[bytes_left_in_fifo++] = *(fifoptr++); + } + } + } +} +/** @}*/ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/examples/activity_recognition_example.c b/lib/bosch/BHy1_driver_and_MCU_solution/examples/activity_recognition_example.c new file mode 100644 index 0000000000000000000000000000000000000000..ca0880b612dcefec0bc715408f00d32f02f5d443 --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/examples/activity_recognition_example.c @@ -0,0 +1,224 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + */ + + +/********************************************************************************/ +/* HEADER FILES */ +/********************************************************************************/ +#include <stdint.h> +#include <string.h> +#include <stdarg.h> + +#include "asf.h" +#include "task.h" +#include "arm_math.h" +#include "demo-tasks.h" + +#include "bhy_support.h" +#include "bhy_uc_driver.h" +#include ".\firmware\Bosch_PCB_7183_di03_BMI160-7183_di03.2.1.11696_170103.h" + + + +/********************************************************************************/ +/* MACROS */ +/********************************************************************************/ +/* should be greater or equal to 69 bytes, page size (50) + maximum packet size(18) + 1 */ +#define FIFO_SIZE 300 +#define MAX_PACKET_LENGTH 18 +#define TICKS_IN_ONE_SECOND 32000.0F + +/********************************************************************************/ +/* GLOBAL VARIABLES */ +/********************************************************************************/ + + + +/********************************************************************************/ +/* STATIC VARIABLES */ +/********************************************************************************/ +/* system timestamp */ +static uint32_t bhy_system_timestamp = 0; + +uint8_t fifo[FIFO_SIZE]; + + +/********************************************************************************/ +/* FUNCTIONS */ +/********************************************************************************/ + +/*! + * @brief This function is callback function for acquring sensor datas + * + * @param[in] sensor_data + * @param[in] sensor_id + */ +static void sensors_callback(bhy_data_generic_t * sensor_data, bhy_virtual_sensor_t sensor_id) +{ + /* Since a timestamp is always sent before every new data, and that the callbacks */ + /* are called while the parsing is done, then the system timestamp is always equal */ + /* to the sample timestamp. (in callback mode only) */ + float time_stamp = (float)(bhy_system_timestamp) / TICKS_IN_ONE_SECOND; + + DEBUG("sensor_id %d\n", sensor_id); + + switch(sensor_id) + { + case VS_ID_ACTIVITY: + case VS_ID_ACTIVITY_WAKEUP: + DEBUG("activity recognized %f\n", time_stamp); + break; + + default: + DEBUG("unknown id = %d\n", sensor_id); + break; + } + + /* activity recognition is not time critical, so let's wait a little bit */ + delay_ms(200); +} + +/*! + * @brief This function is time stamp callback function that process data in fifo. + * + * @param[in] new_timestamp + */ +static void timestamp_callback(bhy_data_scalar_u16_t *new_timestamp) +{ + /* updates the system timestamp */ + bhy_update_system_timestamp(new_timestamp, &bhy_system_timestamp); +} + + +/*! + * @brief This function is used to run bhy hub + */ +void demo_sensor(void) +{ + int8_t ret; + + /* BHY Variable*/ + uint8_t *fifoptr = NULL; + uint8_t bytes_left_in_fifo = 0; + uint16_t bytes_remaining = 0; + uint16_t bytes_read = 0; + bhy_data_generic_t fifo_packet; + bhy_data_type_t packet_type; + BHY_RETURN_FUNCTION_TYPE result; + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //struct cus_version_t bhy_cus_version; + + + + /* init the bhy chip */ + if(bhy_driver_init(&bhy1_fw)) + { + DEBUG("Fail to init bhy\n"); + } + + /* wait for the bhy trigger the interrupt pin go down and up again */ + while (ioport_get_pin_level(BHY_INT)); + + while (!ioport_get_pin_level(BHY_INT)); + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //bhy_read_parameter_page(BHY_PAGE_2, PAGE2_CUS_FIRMWARE_VERSION, (uint8_t*)&bhy_cus_version, sizeof(struct cus_version_t)); + //DEBUG("cus version base:%d major:%d minor:%d\n", bhy_cus_version.base, bhy_cus_version.major, bhy_cus_version.minor); + + /* enables the activity recognition and assigns the callback */ + bhy_enable_virtual_sensor(VS_TYPE_ACTIVITY_RECOGNITION, VS_NON_WAKEUP, 1, 0, VS_FLUSH_NONE, 0, 0); + + bhy_install_sensor_callback(VS_TYPE_ACTIVITY_RECOGNITION, VS_NON_WAKEUP, sensors_callback); + bhy_install_timestamp_callback(VS_NON_WAKEUP, timestamp_callback); + + DEBUG("%s", "System is now monitoring activity, press SW1 \n"); + + /* wait for the push-button to be pressed */ + while(gpio_pin_is_high(GPIO_PUSH_BUTTON_1)); + + DEBUG("%s", "Here is what has been recorded \n"); + + /* continuously read and parse the fifo after the push of the button*/ + while (true) + { + bhy_read_fifo(fifo+bytes_left_in_fifo, FIFO_SIZE - bytes_left_in_fifo, &bytes_read, &bytes_remaining); + bytes_read += bytes_left_in_fifo; + fifoptr = fifo; + packet_type = BHY_DATA_TYPE_PADDING; + + if (bytes_read) + { + do + { + /* this function will call callbacks that are registered */ + result = bhy_parse_next_fifo_packet(&fifoptr, &bytes_read, &fifo_packet, &packet_type); + /* the logic here is that if doing a partial parsing of the fifo, then we should not parse */ + /* the last 18 bytes (max length of a packet) so that we don't try to parse an incomplete */ + /* packet */ + } while ((result == BHY_SUCCESS) && (bytes_read > (bytes_remaining ? MAX_PACKET_LENGTH : 0))); + + bytes_left_in_fifo = 0; + + if (bytes_remaining) + { + /* shifts the remaining bytes to the beginning of the buffer */ + while (bytes_left_in_fifo < bytes_read) + { + fifo[bytes_left_in_fifo++] = *(fifoptr++); + } + } + } + else + { + /* activity recognition is not time critical, so let's wait a little bit */ + delay_ms(100); + } + } + + return BHY_SUCCESS; +} +/** @}*/ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/examples/bmp280_example.c b/lib/bosch/BHy1_driver_and_MCU_solution/examples/bmp280_example.c new file mode 100644 index 0000000000000000000000000000000000000000..5f1940379b4104c063e9b439e2afb9945152b7a8 --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/examples/bmp280_example.c @@ -0,0 +1,278 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + */ + + +/********************************************************************************/ +/* HEADER FILES */ +/********************************************************************************/ +#include <stdint.h> +#include <string.h> +#include <stdarg.h> + +#include "asf.h" +#include "task.h" +#include "arm_math.h" +#include "demo-tasks.h" + +#include "bhy_support.h" +#include "bhy_uc_driver.h" +#include ".\firmware\Bosch_PCB_7183_di01_BMI160_BMP280-7183_di01.2.1.10836.h" + + + +/********************************************************************************/ +/* MACROS */ +/********************************************************************************/ +/* ctrl_meas osrs_t[2:0] */ +#define BMP280_OSRS_T_POS (5) +#define BMP280_OSRS_T_SKIPPED (0x00) +#define BMP280_OSRS_T_1X (0x01) +#define BMP280_OSRS_T_2X (0x02) +#define BMP280_OSRS_T_4X (0x03) +#define BMP280_OSRS_T_8X (0x04) +#define BMP280_OSRS_T_16X (0x05) + +/* ctrl_meas osrs_p[2:0] */ +#define BMP280_OSRS_P_POS (2) +#define BMP280_OSRS_P_SKIPPED (0x00) +#define BMP280_OSRS_P_1X (0x01) +#define BMP280_OSRS_P_2X (0x02) +#define BMP280_OSRS_P_4X (0x03) +#define BMP280_OSRS_P_8X (0x04) +#define BMP280_OSRS_P_16X (0x05) + +/* ctrl_meas mode[1:0] Sensor Specific constants */ +#define BMP280_MODE_POS (0) +#define BMP280_SLEEP_MODE (0x00) +#define BMP280_FORCED_MODE (0x01) +#define BMP280_NORMAL_MODE (0x03) + +/* config t_sb[2:0] standby duration */ +#define BMP280_STANDBYTIME_POS (5) +#define BMP280_STANDBYTIME_0_5_MS (0x00) +#define BMP280_STANDBYTIME_63_MS (0x01) +#define BMP280_STANDBYTIME_125_MS (0x02) +#define BMP280_STANDBYTIME_250_MS (0x03) +#define BMP280_STANDBYTIME_500_MS (0x04) +#define BMP280_STANDBYTIME_1000_MS (0x05) +#define BMP280_STANDBYTIME_2000_MS (0x06) +#define BMP280_STANDBYTIME_4000_MS (0x07) + +/* config filter[2:0] Filter coefficient */ +#define BMP280_FILTER_COEFF_POS (2) +#define BMP280_FILTER_COEFF_OFF (0x00) +#define BMP280_FILTER_COEFF_2 (0x01) +#define BMP280_FILTER_COEFF_4 (0x02) +#define BMP280_FILTER_COEFF_8 (0x03) +#define BMP280_FILTER_COEFF_16 (0x04) + + +#define BMP280_REG_CTRL_MEAS_VAL(osrs_t, osrs_p, mode) ((osrs_t << BMP280_OSRS_T_POS) | (osrs_p << BMP280_OSRS_P_POS) | (mode << BMP280_MODE_POS)) +#define BMP280_REG_CONFIG_VAL(standby, filter) ((standby << BMP280_STANDBYTIME_POS) | (filter << BMP280_FILTER_COEFF_POS)) + + +/* recommended 6 usecase settings.for applications. Detail BMP280 see datasheet Table 15 + * + * !!! Please consult Bosch engineer for fine tuning these BMP parameters. !!! + */ +#define USECASE1_LOWPOWER_CTRL_MEAS BMP280_REG_CTRL_MEAS_VAL(BMP280_OSRS_T_2X, BMP280_OSRS_P_16X, BMP280_NORMAL_MODE) //0x57 +#define USECASE1_LOWPOWER_CONFIG BMP280_REG_CONFIG_VAL(BMP280_STANDBYTIME_63_MS, BMP280_FILTER_COEFF_4) //0x28 + +#define USECASE2_DYNAMIC_CTRL_MEAS BMP280_REG_CTRL_MEAS_VAL(BMP280_OSRS_T_1X, BMP280_OSRS_P_4X, BMP280_NORMAL_MODE) //0x2f +#define USECASE2_DYNAMIC_CONFIG BMP280_REG_CONFIG_VAL(BMP280_STANDBYTIME_0_5_MS, BMP280_FILTER_COEFF_16) //0x10 + +#define USECASE3_LOWPOWER_FORCED_CTRL_MEAS BMP280_REG_CTRL_MEAS_VAL(BMP280_OSRS_T_1X, BMP280_OSRS_P_1X, BMP280_FORCED_MODE) //0x25 +#define USECASE3_LOWPOWER_FORCED_CONFIG BMP280_REG_CONFIG_VAL(BMP280_STANDBYTIME_1000_MS, BMP280_FILTER_COEFF_OFF) //0xa0 + +#define USECASE4_CHANGE_DETECTION_CTRL_MEAS BMP280_REG_CTRL_MEAS_VAL(BMP280_OSRS_T_1X, BMP280_OSRS_P_4X, BMP280_NORMAL_MODE) //0x2f +#define USECASE4_CHANGE_DETECTION_CONFIG BMP280_REG_CONFIG_VAL(BMP280_STANDBYTIME_125_MS, BMP280_FILTER_COEFF_4) //0x48 + +#define USECASE5_DROP_DETECTION_CTRL_MEAS BMP280_REG_CTRL_MEAS_VAL(BMP280_OSRS_T_1X, BMP280_OSRS_P_2X, BMP280_NORMAL_MODE) //0x2b +#define USECASE5_DROP_DETECTION_CONFIG BMP280_REG_CONFIG_VAL(BMP280_STANDBYTIME_0_5_MS, BMP280_FILTER_COEFF_OFF) //0x00 + +#define USECASE6_INDOOR_NAVIGATION_CTRL_MEAS BMP280_REG_CTRL_MEAS_VAL(BMP280_OSRS_T_2X, BMP280_OSRS_P_16X, BMP280_NORMAL_MODE) //0x57 +#define USECASE6_INDOOR_NAVIGATION_CONFIG BMP280_REG_CONFIG_VAL(BMP280_STANDBYTIME_0_5_MS, BMP280_FILTER_COEFF_16) //0x10 + + + +/* should be greater or equal to 69 bytes, page size (50) + maximum packet size(18) + 1 */ +#define FIFO_SIZE 300 +#define MAX_PACKET_LENGTH 18 + +#define BMP280_PARAM_PAGE 2 +#define BMP280_PARAM_ITEM 18 + +/********************************************************************************/ +/* GLOBAL VARIABLES */ +/********************************************************************************/ + + + +/********************************************************************************/ +/* STATIC VARIABLES */ +/********************************************************************************/ +static uint8_t fifo[FIFO_SIZE]; +static uint8_t bmp_settings[2]; + + +/********************************************************************************/ +/* FUNCTIONS */ +/********************************************************************************/ + +/*! + * @brief This function is callback function for acquring sensor datas + * + * @param[in] sensor_data + * @param[in] sensor_id + */ +static void sensors_callback_pressure(bhy_data_generic_t * sensor_data, bhy_virtual_sensor_t sensor_id) +{ + if(sensor_id == VS_ID_BAROMETER_WAKEUP) + { + /* 1/128Pa Detail see BHI datasheet */ + DEBUG("pressure[%d] data: 0x%x %dPa\n", sensor_data->data_scalar_u24.sensor_id,\ + sensor_data->data_scalar_u24.data, sensor_data->data_scalar_u24.data/128); + } +} + +/*! + * @brief This function is used to run bhy hub + */ +void demo_sensor(void) +{ + int8_t ret; + + /* BHY Variable*/ + uint8_t *fifoptr = NULL; + uint8_t bytes_left_in_fifo = 0; + uint16_t bytes_remaining = 0; + uint16_t bytes_read = 0; + bhy_data_generic_t fifo_packet; + bhy_data_type_t packet_type; + BHY_RETURN_FUNCTION_TYPE result; + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //struct cus_version_t bhy_cus_version; + + + /* init the bhy chip */ + if(bhy_driver_init(&bhy1_fw)) + { + DEBUG("Fail to init bhy\n"); + } + + /* wait for the bhy trigger the interrupt pin go down and up again */ + while (ioport_get_pin_level(BHY_INT)); + + while (!ioport_get_pin_level(BHY_INT)); + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //bhy_read_parameter_page(BHY_PAGE_2, PAGE2_CUS_FIRMWARE_VERSION, (uint8_t*)&bhy_cus_version, sizeof(struct cus_version_t)); + //DEBUG("cus version base:%d major:%d minor:%d\n", bhy_cus_version.base, bhy_cus_version.major, bhy_cus_version.minor); + + /* recommended 6 usecase settings.for applications. Detail BMP280 see datasheet Table 15 + * + * !!! Please consult Bosch engineer for fine tuning these BMP parameters. !!! + */ + bmp_settings[0] = USECASE1_LOWPOWER_CTRL_MEAS; + bmp_settings[1] = USECASE1_LOWPOWER_CONFIG; + bhy_write_parameter_page(BMP280_PARAM_PAGE, BMP280_PARAM_ITEM, &bmp_settings[0], 2); + + + /* install the callback function for parse fifo data */ + if(bhy_install_sensor_callback(VS_TYPE_PRESSURE, VS_WAKEUP, sensors_callback_pressure)) + { + DEBUG("Fail to install sensor callback\n"); + } + + /* enables the virtual sensor */ + if(bhy_enable_virtual_sensor(VS_TYPE_PRESSURE, VS_WAKEUP, 20, 0, VS_FLUSH_NONE, 0, 0)) + { + DEBUG("Fail to enable sensor id=%d\n", VS_TYPE_PRESSURE); + } + + while(1) + { + /* wait until the interrupt fires */ + /* unless we already know there are bytes remaining in the fifo */ + while (!ioport_get_pin_level(BHY_INT) && !bytes_remaining) + { + } + + bhy_read_fifo(fifo + bytes_left_in_fifo, FIFO_SIZE - bytes_left_in_fifo, &bytes_read, &bytes_remaining); + bytes_read += bytes_left_in_fifo; + fifoptr = fifo; + packet_type = BHY_DATA_TYPE_PADDING; + + do + { + /* this function will call callbacks that are registered */ + result = bhy_parse_next_fifo_packet(&fifoptr, &bytes_read, &fifo_packet, &packet_type); + + /* prints all the debug packets */ + if (packet_type == BHY_DATA_TYPE_DEBUG) + { + bhy_print_debug_packet(&fifo_packet.data_debug, bhy_printf); + } + + /* the logic here is that if doing a partial parsing of the fifo, then we should not parse */ + /* the last 18 bytes (max length of a packet) so that we don't try to parse an incomplete */ + /* packet */ + } while ((result == BHY_SUCCESS) && (bytes_read > (bytes_remaining ? MAX_PACKET_LENGTH : 0))); + + bytes_left_in_fifo = 0; + + if (bytes_remaining) + { + /* shifts the remaining bytes to the beginning of the buffer */ + while (bytes_left_in_fifo < bytes_read) + { + fifo[bytes_left_in_fifo++] = *(fifoptr++); + } + } + } +} +/** @}*/ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/examples/calib_profile_example.c b/lib/bosch/BHy1_driver_and_MCU_solution/examples/calib_profile_example.c new file mode 100644 index 0000000000000000000000000000000000000000..07d85396898232b9449ed7c3b9d93200074d238f --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/examples/calib_profile_example.c @@ -0,0 +1,393 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + */ + + +/********************************************************************************/ +/* HEADER FILES */ +/********************************************************************************/ +#include <stdint.h> +#include <string.h> +#include <stdarg.h> + +#include "asf.h" +#include "task.h" +#include "arm_math.h" +#include "demo-tasks.h" + +#include "bhy_support.h" +#include "bhy_uc_driver.h" +#include ".\firmware\Bosch_PCB_7183_di03_BMI160_BMM150-7183_di03.2.1.11696_170103.h" + + + +/********************************************************************************/ +/* MACROS */ +/********************************************************************************/ +/* should be greater or equal to 69 bytes, page size (50) + maximum packet size(18) + 1 */ +#define FIFO_SIZE 300 +#define ROTATION_VECTOR_SAMPLE_RATE 100 +#define MAX_PACKET_LENGTH 18 +#define OUT_BUFFER_SIZE 60 + + +#define BHY_PARAM_OFFSET_ACC_GET 6 +#define BHY_PARAM_OFFSET_MAG_GET 7 +#define BHY_PARAM_OFFSET_GYRO_GET 8 + +#define BHY_PARAM_OFFSET_ACC_SET 15 +#define BHY_PARAM_OFFSET_MAG_SET 16 +#define BHY_PARAM_OFFSET_GYRO_SET 17 + +/*! +* @brief Sensor configuration +* This structure holds calib profile informations +*/ +typedef struct +{ + s16 x_offset; /** 3-axis offset */ + s16 y_offset; /** 3-axis offset */ + s16 z_offset; /** 3-axis offset */ + s16 radius; /** radius */ +}ts_calibparam; + +/*! +* struct ts_calibparam +* brief calibration parameters +*/ +typedef struct +{ + ts_calibparam calibParam; + uint8_t accuracy; +}ts_calibprofile; + + + +/********************************************************************************/ +/* GLOBAL VARIABLES */ +/********************************************************************************/ + + + +/********************************************************************************/ +/* STATIC VARIABLES */ +/********************************************************************************/ +char out_buffer[OUT_BUFFER_SIZE] = " W: 0.999 X: 0.999 Y: 0.999 Z: 0.999 \r"; + +uint8_t fifo[FIFO_SIZE]; + +ts_calibprofile calib_profile[3]; + + +/********************************************************************************/ +/* FUNCTIONS */ +/********************************************************************************/ + +/*! + * @brief This function is callback function for acquring sensor datas + * + * @param[in] sensor_data + * @param[in] sensor_id + */ +static void sensors_callback_calib_profile(bhy_data_generic_t * sensor_data, bhy_virtual_sensor_t sensor_id) +{ + float temp; + uint8_t index; + + temp = sensor_data->data_quaternion.w / 16384.0f; /* change the data unit by dividing 16384 */ + out_buffer[3] = temp < 0 ? '-' : ' '; + temp = temp < 0 ? -temp : temp; + out_buffer[4] = floor(temp) + '0'; + + for (index = 6; index <= 8; index++) + { + temp = (temp - floor(temp)) * 10; + out_buffer[index] = floor(temp) + '0'; + } + + temp = sensor_data->data_quaternion.x / 16384.0f; + out_buffer[13] = temp < 0 ? '-' : ' '; + temp = temp < 0 ? -temp : temp; + out_buffer[14] = floor(temp) + '0'; + + for (index = 16; index <= 18; index++) + { + temp = (temp - floor(temp)) * 10; + out_buffer[index] = floor(temp) + '0'; + } + + temp = sensor_data->data_quaternion.y / 16384.0f; + out_buffer[23] = temp < 0 ? '-' : ' '; + temp = temp < 0 ? -temp : temp; + out_buffer[24] = floor(temp) + '0'; + + for (index = 26; index <= 28; index++) + { + temp = (temp - floor(temp)) * 10; + out_buffer[index] = floor(temp) + '0'; + } + + temp = sensor_data->data_quaternion.z / 16384.0f; + out_buffer[33] = temp < 0 ? '-' : ' '; + temp = temp < 0 ? -temp : temp; + out_buffer[34] = floor(temp) + '0'; + + for (index = 36; index <= 38; index++) + { + temp = (temp - floor(temp)) * 10; + out_buffer[index] = floor(temp) + '0'; + } + + + DEBUG("x=%d, y=%d, z=%d, w=%d\n", + sensor_data->data_quaternion.x, + sensor_data->data_quaternion.y, + sensor_data->data_quaternion.z, + sensor_data->data_quaternion.w + ); +} +/*! + * @brief This function is used to run bhy hub + */ +void demo_sensor(void) +{ + int8_t ret; + + /* BHY Variable*/ + uint8_t *fifoptr = NULL; + uint8_t bytes_left_in_fifo = 0; + uint16_t bytes_remaining = 0; + uint16_t bytes_read = 0; + bhy_data_generic_t fifo_packet; + bhy_data_type_t packet_type; + BHY_RETURN_FUNCTION_TYPE result; + uint32_t count = 0; + uint32_t i; + /* the remapping matrix for BHA or BHI here should be configured according to its placement on customer's PCB. */ + /* for details, please check 'Application Notes Axes remapping of BHA250(B)/BHI160(B)' document. */ + int8_t bhy_mapping_matrix_config[3*3] = {0,1,0,-1,0,0,0,0,1}; + /* the remapping matrix for Magnetometer should be configured according to its placement on customer's PCB. */ + /* for details, please check 'Application Notes Axes remapping of BHA250(B)/BHI160(B)' document. */ + int8_t mag_mapping_matrix_config[3*3] = {0,1,0,1,0,0,0,0,-1}; + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //struct cus_version_t bhy_cus_version; + + + /* init the bhy chip */ + if(bhy_driver_init(&bhy1_fw)) + { + DEBUG("Fail to init bhy\n"); + } + + /* wait for the bhy trigger the interrupt pin go down and up again */ + while (ioport_get_pin_level(BHY_INT)); + + while (!ioport_get_pin_level(BHY_INT)); + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //bhy_read_parameter_page(BHY_PAGE_2, PAGE2_CUS_FIRMWARE_VERSION, (uint8_t*)&bhy_cus_version, sizeof(struct cus_version_t)); + //DEBUG("cus version base:%d major:%d minor:%d\n", bhy_cus_version.base, bhy_cus_version.major, bhy_cus_version.minor); + + /* the remapping matrix for BHI and Magmetometer should be configured here to make sure rotation vector is */ + /* calculated in a correct coordinates system. */ + bhy_mapping_matrix_set(PHYSICAL_SENSOR_INDEX_ACC, bhy_mapping_matrix_config); + bhy_mapping_matrix_set(PHYSICAL_SENSOR_INDEX_MAG, mag_mapping_matrix_config); + bhy_mapping_matrix_set(PHYSICAL_SENSOR_INDEX_GYRO, bhy_mapping_matrix_config); + + /* install the callback function for parse fifo data */ + if(bhy_install_sensor_callback(VS_TYPE_ROTATION_VECTOR, VS_WAKEUP, sensors_callback_calib_profile)) + { + DEBUG("Fail to install sensor callback\n"); + } + + +do_calibrate: + + /* first time run rotation vector, do calibrate actions for a while */ + DEBUG("Presss button1 and do calibrate with BSX running...\n"); + while(gpio_pin_is_high(GPIO_PUSH_BUTTON_1)); + + + /* enables the virtual sensor */ + if(bhy_enable_virtual_sensor(VS_TYPE_ROTATION_VECTOR, VS_WAKEUP, ROTATION_VECTOR_SAMPLE_RATE, 0, VS_FLUSH_NONE, 0, 0)) + { + DEBUG("Fail to enable sensor id=%d\n", VS_TYPE_ROTATION_VECTOR); + } + + while(count++ < 1500) + { + /* wait until the interrupt fires */ + /* unless we already know there are bytes remaining in the fifo */ + while (!ioport_get_pin_level(BHY_INT) && !bytes_remaining) + { + } + + bhy_read_fifo(fifo + bytes_left_in_fifo, FIFO_SIZE - bytes_left_in_fifo, &bytes_read, &bytes_remaining); + bytes_read += bytes_left_in_fifo; + fifoptr = fifo; + packet_type = BHY_DATA_TYPE_PADDING; + + do + { + /* this function will call callbacks that are registered */ + result = bhy_parse_next_fifo_packet(&fifoptr, &bytes_read, &fifo_packet, &packet_type); + + /* prints all the debug packets */ + if (packet_type == BHY_DATA_TYPE_DEBUG) + { + bhy_print_debug_packet(&fifo_packet.data_debug, bhy_printf); + } + + /* the logic here is that if doing a partial parsing of the fifo, then we should not parse */ + /* the last 18 bytes (max length of a packet) so that we don't try to parse an incomplete */ + /* packet */ + } while ((result == BHY_SUCCESS) && (bytes_read > (bytes_remaining ? MAX_PACKET_LENGTH : 0))); + + bytes_left_in_fifo = 0; + + if (bytes_remaining) + { + /* shifts the remaining bytes to the beginning of the buffer */ + while (bytes_left_in_fifo < bytes_read) + { + fifo[bytes_left_in_fifo++] = *(fifoptr++); + } + } + } + count = 0; + + /* disable the rotation vector sensor */ + if(bhy_disable_virtual_sensor(VS_TYPE_ROTATION_VECTOR, VS_WAKEUP)) + { + DEBUG("Fail to disable sensor\n"); + } + + /* get the calibrate profile(acc mag gyro) from bhy and save to the host side. */ + for(i = 0; i < 3; i++) + { + if(bhy_read_parameter_page(BHY_PAGE_2, BHY_PARAM_OFFSET_ACC_GET+i, &calib_profile[i], sizeof(ts_calibprofile))) + { + DEBUG("calibrate profile %d loaded. 0x%d, x=0x%x, y=0x%x, z=0x%x,r=0x%d\n", + i, + calib_profile[i].accuracy, + calib_profile[i].calibParam.x_offset, + calib_profile[i].calibParam.y_offset, + calib_profile[i].calibParam.z_offset, + calib_profile[i].calibParam.radius); + } + else + { + DEBUG("calibrate read failed on %d, re-do calibrate..\n", i); + goto do_calibrate; + } + + /* set the valid profile(accuracy=3) to bhy */ + if(calib_profile[i].accuracy != 3) + { + DEBUG("calibrate accuracy failed on %d, re-do calibrate..\n", i); + goto do_calibrate; + } + } + DEBUG("profile save to host side success\n"); + + + DEBUG("enable the rotation vector sensor again with set calibrate profile(acc mag gyro) in advance\n"); + for(i = 0; i < 3; i++) + { + if(calib_profile[i].accuracy != 3 + || bhy_write_parameter_page(BHY_PAGE_2, BHY_PARAM_OFFSET_ACC_SET+i, &calib_profile[i].calibParam, sizeof(ts_calibparam))) + { + DEBUG("calibrate set failed on %d ...\n", i); + } + } + + if(bhy_enable_virtual_sensor(VS_TYPE_ROTATION_VECTOR, VS_WAKEUP, ROTATION_VECTOR_SAMPLE_RATE, 0, VS_FLUSH_NONE, 0, 0)) + { + DEBUG("Fail to enable sensor\n"); + } + + while(1) + { + /* wait until the interrupt fires */ + /* unless we already know there are bytes remaining in the fifo */ + while (!ioport_get_pin_level(BHY_INT) && !bytes_remaining) + { + } + + bhy_read_fifo(fifo + bytes_left_in_fifo, FIFO_SIZE - bytes_left_in_fifo, &bytes_read, &bytes_remaining); + bytes_read += bytes_left_in_fifo; + fifoptr = fifo; + packet_type = BHY_DATA_TYPE_PADDING; + + do + { + /* this function will call callbacks that are registered */ + result = bhy_parse_next_fifo_packet(&fifoptr, &bytes_read, &fifo_packet, &packet_type); + + /* prints all the debug packets */ + if (packet_type == BHY_DATA_TYPE_DEBUG) + { + bhy_print_debug_packet(&fifo_packet.data_debug, bhy_printf); + } + + /* the logic here is that if doing a partial parsing of the fifo, then we should not parse */ + /* the last 18 bytes (max length of a packet) so that we don't try to parse an incomplete */ + /* packet */ + } while ((result == BHY_SUCCESS) && (bytes_read > (bytes_remaining ? MAX_PACKET_LENGTH : 0))); + + bytes_left_in_fifo = 0; + + if (bytes_remaining) + { + /* shifts the remaining bytes to the beginning of the buffer */ + while (bytes_left_in_fifo < bytes_read) + { + fifo[bytes_left_in_fifo++] = *(fifoptr++); + } + } + } +} +/** @}*/ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/examples/custom_sensor_example.c b/lib/bosch/BHy1_driver_and_MCU_solution/examples/custom_sensor_example.c new file mode 100644 index 0000000000000000000000000000000000000000..06ec757e8d1113f1a91a680bb1f041ad33ea38a1 --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/examples/custom_sensor_example.c @@ -0,0 +1,304 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + */ + + +/********************************************************************************/ +/* HEADER FILES */ +/********************************************************************************/ +#include <stdint.h> +#include <string.h> +#include <stdarg.h> + +#include "asf.h" +#include "task.h" +#include "demo-tasks.h" + +#include "bhy.h" +#include "bhy_support.h" +#include "bhy_uc_driver.h" +#include ".\firmware\Bosch_PCB_7183_di03_BMA2x2_Cus-7183_di03.2.1.11703.h" + + + +/********************************************************************************/ +/* MACROS */ +/********************************************************************************/ +/* should be greater or equal to 69 bytes, page size (50) + maximum packet size(18) + 1 */ +#define FIFO_SIZE 300 +#define MAX_PACKET_LENGTH 18 +#define TICKS_IN_ONE_SECOND 32000.0F + +/********************************************************************************/ +/* GLOBAL VARIABLES */ +/********************************************************************************/ + + + +/********************************************************************************/ +/* STATIC VARIABLES */ +/********************************************************************************/ +uint8_t fifo[FIFO_SIZE]; + +static uint32_t bhy_system_timestamp = 0; +static uint32_t bhy_system_timestamp_previous = 0; + +struct accel_physical_status_t phy_acc; +struct gyro_physical_status_t phy_gyro; +struct mag_physical_status_t phy_mag; +uint8_t physical_sensor_present_bitmap[8]; + +/********************************************************************************/ +/* FUNCTIONS */ +/********************************************************************************/ +/*! + * @brief This function is callback function for get meta event + * + * @param[in] event_data + * @param[in] event_type + */ +static void meta_event_callback(bhy_data_meta_event_t *event_data, bhy_meta_event_type_t event_type) +{ + switch(event_type) + { + case BHY_META_EVENT_TYPE_INITIALIZED: + DEBUG("initialize success!\n"); + break; + + case BHY_META_EVENT_TYPE_SELF_TEST_RESULTS: + if(event_data->event_specific == BHY_SUCCESS) + DEBUG("self test result success! sensor_type=%d \n", event_data->sensor_type); + else + DEBUG("self test result fail! sensor_type=%d \n", event_data->sensor_type); + break; + default: + DEBUG("unknown meta event\n"); + break; + } +} + +/*! + * @brief This function is callback function for acquring sensor datas + * + * @param[in] sensor_data + * @param[in] sensor_id + */ +static void sensors_callback(bhy_data_generic_t * sensor_data, bhy_virtual_sensor_t sensor_id) +{ + uint16_t i = 0; + + switch(sensor_id) + { + case VS_ID_CUS1: + case VS_ID_CUS1_WAKEUP: + DEBUG("Cus1 id = %d len = %d ", sensor_id, bhy_get_cus_evt_size(VS_ID_CUS1)); + for(i = 0; i < (bhy_get_cus_evt_size(VS_ID_CUS1) - 1); i++) + { + DEBUG("%2x ", sensor_data->data_custom.data[i]); + } + DEBUG("\n"); + break; + default: + DEBUG("unknown id = %d\n", sensor_id); + break; + } +} + +/*! + * @brief This function is used to run bhy hub + */ +void demo_sensor(void) +{ + /* BHY Variable*/ + uint8_t *fifoptr = NULL; + uint8_t bytes_left_in_fifo = 0; + uint16_t bytes_remaining = 0; + uint16_t bytes_read = 0; + uint32_t i = 0; + bhy_data_generic_t fifo_packet; + bhy_data_type_t packet_type; + BHY_RETURN_FUNCTION_TYPE result; + struct sensor_information_non_wakeup_t sensor_info_non_wakeup; + struct sensor_information_wakeup_t sensor_info_wakeup; + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //struct cus_version_t bhy_cus_version; + + /* If custom sensor is related to IMU sensor, then the remapping matrix for BHA or BHI here should + /* be configured according to its placement on customer's PCB. */ + /* for details, please check 'Application Notes Axes remapping of BHA250(B)/BHI160(B)' document. */ + /* for how to configure remapping matrix, please check example of 'acceleromete_remapping_example.c'. */ + + bhy_install_meta_event_callback(BHY_META_EVENT_TYPE_INITIALIZED, meta_event_callback); + bhy_install_meta_event_callback(BHY_META_EVENT_TYPE_SELF_TEST_RESULTS, meta_event_callback); + bhy_install_sensor_callback(VS_ID_CUS1, VS_WAKEUP, sensors_callback); + + /* init the bhy chip */ + if(bhy_driver_init(&bhy1_fw)) + { + DEBUG("Fail to init bhy\n"); + } + + /* wait for the bhy trigger the interrupt pin go down and up again */ + while (ioport_get_pin_level(BHY_INT)); + while (!ioport_get_pin_level(BHY_INT)); + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //bhy_read_parameter_page(BHY_PAGE_2, PAGE2_CUS_FIRMWARE_VERSION, (uint8_t*)&bhy_cus_version, sizeof(struct cus_version_t)); + //DEBUG("cus version base:%d major:%d minor:%d\n", bhy_cus_version.base, bhy_cus_version.major, bhy_cus_version.minor); + + + /* get physical sensor present from sensor hub */ + bhy_read_parameter_page(BHY_PAGE_1, BHY_PARAM_SYSTEM_PHYSICAL_SENSOR_PRESENT, &physical_sensor_present_bitmap[0], 8); + DEBUG("Physical Sensor Present:\n"); + for(i = 0; i < 8; i++) + DEBUG("bitmap[%d] = 0x%x\n", i, physical_sensor_present_bitmap[i]); + DEBUG(""); + + + /* get physical sensor status from sensor hub */ + bhy_get_physical_sensor_status(&phy_acc, &phy_gyro, &phy_mag); + + /* Physical Sensor Status: + Flags[bit 0]: interrupt enable + Flags[bits 5-7]: Sensor Power Mode values: + 0: Sensor Not Present + 1: Power Down + 2: Suspend + 3: Self-Test + 4: Interrupt Motion + 5: One Shot + 6: Low Power Active + 7: Active + */ + DEBUG("Physical Sensor Status:\n"); + DEBUG("Acc : sample rate %d, range %d, int %d pwr %d\n",\ + phy_acc.accel_sample_rate, phy_acc.accel_dynamic_range, phy_acc.accel_flag & 0x01, (phy_acc.accel_flag & 0xE0) >> 5); + DEBUG("Gyro: sample rate %d, range %d, int %d pwr %d\n", \ + phy_gyro.gyro_sample_rate, phy_gyro.gyro_dynamic_range, phy_gyro.gyro_flag & 0x01, (phy_gyro.gyro_flag & 0xE0) >> 5); + DEBUG("Mag : sample rate %d, range %d, int %d pwr %d\n", \ + phy_mag.mag_sample_rate, phy_mag.mag_dynamic_range, phy_mag.mag_flag & 0x01, (phy_mag.mag_flag & 0xE0) >> 5); + DEBUG(""); + + + /* read custom sensor event size from hub for later fifo parse */ + bhy_sync_cus_evt_size(); + + DEBUG("cus evt size = %d %d %d %d %d\n", bhy_get_cus_evt_size(VS_ID_CUS1), bhy_get_cus_evt_size(VS_ID_CUS2), \ + bhy_get_cus_evt_size(VS_ID_CUS3), bhy_get_cus_evt_size(VS_ID_CUS4), \ + bhy_get_cus_evt_size(VS_ID_CUS5)); + + + /* get virtual sensor information from sensor hub */ + DEBUG("Supported Virtual Sensor Information:\n"); + for(i = 1; i < 32; i++) + { + bhy_get_wakeup_sensor_information(i, &sensor_info_wakeup); + + if(sensor_info_wakeup.wakeup_sensor_type == i) + DEBUG("id=%2d\n", i); + } + + for(i = 33; i < 64; i++) + { + bhy_get_non_wakeup_sensor_information(i, &sensor_info_non_wakeup); + + if(sensor_info_non_wakeup.non_wakeup_sensor_type == i) + DEBUG("id=%2d\n", i); + } + DEBUG(""); + + + /* enables the virtual sensor */ + bhy_enable_virtual_sensor(VS_ID_CUS1, VS_WAKEUP, 5, 0, VS_FLUSH_NONE, 0, 0); + + while(1) + { + /* wait until the interrupt fires */ + /* unless we already know there are bytes remaining in the fifo */ + while (!ioport_get_pin_level(BHY_INT) && !bytes_remaining); + + bhy_read_fifo(fifo + bytes_left_in_fifo, FIFO_SIZE - bytes_left_in_fifo, &bytes_read, &bytes_remaining); + + bytes_read += bytes_left_in_fifo; + fifoptr = fifo; + packet_type = BHY_DATA_TYPE_PADDING; + + do + { + /* this function will call callbacks that are registered */ + result = bhy_parse_next_fifo_packet(&fifoptr, &bytes_read, &fifo_packet, &packet_type); + + /* prints all the debug packets */ + if (packet_type == BHY_DATA_TYPE_PADDING) + { + /* padding data only added at the end of each FIFO dump, discard it. */ + DEBUG(">Padding\n"); + } + else if (packet_type == BHY_DATA_TYPE_DEBUG) + { + trace_log(">DebugString :"); + bhy_print_debug_packet(&fifo_packet.data_debug, bhy_printf); + trace_log("\n"); + } + + /* the logic here is that if doing a partial parsing of the fifo, then we should not parse */ + /* the last 18 bytes (max length of a packet) so that we don't try to parse an incomplete */ + /* packet */ + } while ((result == BHY_SUCCESS) && (bytes_read > (bytes_remaining ? MAX_PACKET_LENGTH : 0))); + + bytes_left_in_fifo = 0; + + if (bytes_remaining) + { + /* shifts the remaining bytes to the beginning of the buffer */ + while (bytes_left_in_fifo < bytes_read) + { + fifo[bytes_left_in_fifo++] = *(fifoptr++); + } + } + } +} +/** @}*/ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/examples/fifo_watermark_example.c b/lib/bosch/BHy1_driver_and_MCU_solution/examples/fifo_watermark_example.c new file mode 100644 index 0000000000000000000000000000000000000000..70060fd03800b66f527b4814bbdee033beadd790 --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/examples/fifo_watermark_example.c @@ -0,0 +1,157 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + */ + + +/********************************************************************************/ +/* HEADER FILES */ +/********************************************************************************/ +#include <stdint.h> +#include <string.h> +#include <stdarg.h> + +#include "asf.h" +#include "task.h" +#include "arm_math.h" +#include "demo-tasks.h" + +#include "bhy_support.h" +#include "bhy_uc_driver.h" +#include ".\firmware\Bosch_PCB_7183_di03_BMI160-7183_di03.2.1.11696_170103.h" + + + +/********************************************************************************/ +/* MACROS */ +/********************************************************************************/ +/* should be greater or equal to 69 bytes, page size (50) + maximum packet size(18) + 1 */ +#define FIFO_SIZE 250 +#define WATERMARK 800 // user can configurate the watermark by themselves as requirement +#define FIFO_SAMPLE_RATE 100 +#define MAX_PACKET_LENGTH 18 +#define REPORT_LATENCY_MS 1000 + +/********************************************************************************/ +/* GLOBAL VARIABLES */ +/********************************************************************************/ + + + +/********************************************************************************/ +/* STATIC VARIABLES */ +/********************************************************************************/ +uint8_t fifo[FIFO_SIZE]; + + +/********************************************************************************/ +/* FUNCTIONS */ +/********************************************************************************/ +/*! + * @brief This function is used to run bhy hub + */ +void demo_sensor(void) +{ + int8_t ret; + + /* BHY Variable*/ + uint8_t *fifoptr = NULL; + uint8_t bytes_left_in_fifo = 0; + uint16_t bytes_remaining = 0; + uint16_t bytes_read = 0; + uint16_t wake_fifo_length = 0; + bhy_data_generic_t fifo_packet; + bhy_data_type_t packet_type; + BHY_RETURN_FUNCTION_TYPE result; + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //struct cus_version_t bhy_cus_version; + + + /* init the bhy chip */ + if(bhy_driver_init(&bhy1_fw)) + { + DEBUG("Fail to init bhy\n"); + } + + /* wait for the bhy trigger the interrupt pin go down and up again */ + while (ioport_get_pin_level(BHY_INT)); + + while (!ioport_get_pin_level(BHY_INT)); + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //bhy_read_parameter_page(BHY_PAGE_2, PAGE2_CUS_FIRMWARE_VERSION, (uint8_t*)&bhy_cus_version, sizeof(struct cus_version_t)); + //DEBUG("cus version base:%d major:%d minor:%d\n", bhy_cus_version.base, bhy_cus_version.major, bhy_cus_version.minor); + + /* empty the fifo for a first time. the interrupt does not contain sensor data */ + bhy_read_fifo(fifo, FIFO_SIZE, &bytes_read, &bytes_remaining); + + /* Sets the watermark level */ + bhy_set_fifo_water_mark(BHY_FIFO_WATER_MARK_NON_WAKEUP, WATERMARK); + + /* Enables a streaming sensor. The goal here is to generate data */ + /* in the fifo, not to read the sensor values. */ + bhy_enable_virtual_sensor(VS_TYPE_ROTATION_VECTOR, VS_NON_WAKEUP, FIFO_SAMPLE_RATE, REPORT_LATENCY_MS, VS_FLUSH_NONE, 0, 0); + + /* continuously read and parse the fifo */ + while (true) + { + /* wait until the interrupt fires */ + while (!ioport_get_pin_level(BHY_INT)); + + bhy_read_fifo(fifo, FIFO_SIZE, &bytes_read, &bytes_remaining); + + DEBUG("bytes_read=%d, bytes_remaining=%d\n", bytes_read, bytes_remaining); + + /*read data until no data left in Fifo*/ + /*just demo for watermark level effect, does not parse fifo data*/ + while(bytes_remaining > 0) + { + bhy_read_fifo(fifo, FIFO_SIZE, &bytes_read, &bytes_remaining); + } + } + + return BHY_SUCCESS; +} +/** @}*/ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di01_BMI160-7183_di01.2.1.10836_170103.h b/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di01_BMI160-7183_di01.2.1.10836_170103.h new file mode 100644 index 0000000000000000000000000000000000000000..fceea74172782df52dfc9c000c7e020f5471735b --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di01_BMI160-7183_di01.2.1.10836_170103.h @@ -0,0 +1,2181 @@ +unsigned char bhy1_fw[] = { + 0x2a, 0x65, 0x00, 0x0a, 0xeb, 0x67, 0x50, 0xc7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x66, 0x00, 0x00, 0x64, 0x8c, 0x7f, 0x00, 0x24, 0x8c, 0x7f, 0x00, + 0x3c, 0x8c, 0x7f, 0x00, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0x7c, 0x96, 0x60, 0x00, + 0x7c, 0x96, 0x60, 0x00, 0x7c, 0x96, 0x60, 0x00, 0x7c, 0x96, 0x60, 0x00, + 0x7c, 0x96, 0x60, 0x00, 0x7c, 0x96, 0x60, 0x00, 0x7c, 0x96, 0x60, 0x00, + 0x7c, 0x96, 0x60, 0x00, 0xa8, 0x5b, 0x60, 0x00, 0xa4, 0x71, 0x60, 0x00, + 0x0c, 0x75, 0x60, 0x00, 0x68, 0xa9, 0x7f, 0x00, 0x30, 0x8c, 0x7f, 0x00, + 0x30, 0x8c, 0x7f, 0x00, 0x30, 0x8c, 0x7f, 0x00, 0x30, 0x8c, 0x7f, 0x00, + 0x78, 0x6c, 0x60, 0x00, 0x78, 0x6c, 0x60, 0x00, 0x78, 0x6c, 0x60, 0x00, + 0x78, 0x6c, 0x60, 0x00, 0x78, 0x6c, 0x60, 0x00, 0x78, 0x6c, 0x60, 0x00, + 0xd5, 0x01, 0x8f, 0x0d, 0x09, 0x04, 0x4f, 0x0d, 0xb1, 0x03, 0x4f, 0x0d, + 0xcd, 0x03, 0x4f, 0x0d, 0x99, 0x03, 0x4f, 0x0d, 0xb5, 0x03, 0x4f, 0x0d, + 0x4d, 0x03, 0x4f, 0x0d, 0xe9, 0x00, 0x8f, 0x0d, 0xc1, 0x04, 0x4f, 0x0d, + 0xe5, 0x01, 0x8f, 0x0d, 0x7d, 0x00, 0x8f, 0x0d, 0x3d, 0x00, 0x8f, 0x0d, + 0x21, 0x00, 0x8f, 0x0d, 0x7d, 0x06, 0x4f, 0x0d, 0xe5, 0x03, 0x4f, 0x0d, + 0xc9, 0x06, 0x4f, 0x0d, 0x5d, 0x03, 0x4f, 0x0d, 0xe1, 0x04, 0x4f, 0x0d, + 0x39, 0x05, 0x4f, 0x0d, 0x35, 0x03, 0x4f, 0x0d, 0x25, 0x03, 0x4f, 0x0d, + 0xfd, 0x03, 0x4f, 0x0d, 0x01, 0x07, 0x0f, 0x0e, 0x39, 0x06, 0x0f, 0x0e, + 0x8d, 0x07, 0x0f, 0x0e, 0xa1, 0x07, 0x0f, 0x0e, 0x99, 0x06, 0x0f, 0x0e, + 0x9d, 0x06, 0x0f, 0x0e, 0xa1, 0x06, 0x0f, 0x0e, 0x15, 0x06, 0x0f, 0x0e, + 0x65, 0x06, 0x0f, 0x0e, 0x71, 0x06, 0x0f, 0x0e, 0x65, 0x06, 0x0f, 0x0e, + 0x71, 0x06, 0x0f, 0x0e, 0x3d, 0x07, 0x0f, 0x0e, 0xb5, 0x06, 0xcf, 0x0b, + 0xbd, 0x06, 0xcf, 0x0b, 0xc5, 0x06, 0xcf, 0x0b, 0xe1, 0x06, 0xcf, 0x0b, + 0x11, 0x06, 0xcf, 0x0b, 0x31, 0x07, 0xcf, 0x0b, 0xd9, 0x05, 0xcf, 0x0b, + 0xe5, 0x05, 0xcf, 0x0b, 0x21, 0x06, 0xcf, 0x0b, 0xed, 0x05, 0xcf, 0x0b, + 0xf1, 0x05, 0xcf, 0x0b, 0x0d, 0x06, 0xcf, 0x0b, 0x31, 0x06, 0x8f, 0x0f, + 0x21, 0x06, 0x8f, 0x0f, 0x11, 0x06, 0x8f, 0x0f, 0x31, 0x04, 0x8f, 0x0f, + 0x4d, 0x04, 0x8f, 0x0f, 0xf1, 0x07, 0x0f, 0x0c, 0x15, 0x04, 0x0f, 0x0c, + 0x69, 0x03, 0x0f, 0x0c, 0x0d, 0x05, 0x0f, 0x0c, 0x8d, 0x04, 0x0f, 0x0c, + 0x31, 0x03, 0x0f, 0x0c, 0xe5, 0x06, 0x0f, 0x0c, 0x35, 0x02, 0x0f, 0x0c, + 0xf9, 0x02, 0x0f, 0x0c, 0xe5, 0x00, 0x0f, 0x0c, 0x99, 0x03, 0x0f, 0x0c, + 0xfd, 0x00, 0x0f, 0x0c, 0x41, 0x02, 0x0f, 0x0c, 0xb9, 0x02, 0x0f, 0x0c, + 0xa5, 0x07, 0x0f, 0x0c, 0xa9, 0x00, 0x0f, 0x0c, 0x51, 0x02, 0x0f, 0x0c, + 0x21, 0x05, 0x0f, 0x0c, 0x79, 0x01, 0x0f, 0x0c, 0xfd, 0x00, 0x0f, 0x0c, + 0x0d, 0x01, 0x0f, 0x0c, 0x15, 0x01, 0x0f, 0x0c, 0x8d, 0x06, 0x0f, 0x0c, + 0xb9, 0x02, 0x8f, 0x0d, 0x6d, 0x02, 0x8f, 0x0d, 0x3d, 0x02, 0x8f, 0x0d, + 0x01, 0x03, 0x8f, 0x0d, 0x41, 0x02, 0x8f, 0x0d, 0xb5, 0x05, 0x8f, 0x0d, + 0xc5, 0x05, 0x8f, 0x0d, 0x29, 0x04, 0x8f, 0x0d, 0xfd, 0x03, 0x8f, 0x0d, + 0x5d, 0x04, 0x8f, 0x0d, 0x8d, 0x03, 0x8f, 0x0d, 0x29, 0x04, 0x8f, 0x0d, + 0x7d, 0x03, 0x8f, 0x0d, 0x35, 0x04, 0x8f, 0x0d, 0x6d, 0x05, 0x8f, 0x0e, + 0x91, 0x04, 0x8f, 0x0e, 0xc9, 0x02, 0xc0, 0x00, 0x89, 0x03, 0x8f, 0x0e, + 0x49, 0x06, 0x8f, 0x0e, 0xad, 0x03, 0x8f, 0x0e, 0xd9, 0x02, 0x8f, 0x0e, + 0xb5, 0x01, 0xcf, 0x0e, 0xad, 0x06, 0x8f, 0x0e, 0x55, 0x03, 0x8f, 0x0e, + 0x19, 0x04, 0x8f, 0x0e, 0x79, 0x03, 0x8f, 0x0e, 0x61, 0x06, 0x8f, 0x0e, + 0xc9, 0x06, 0x8f, 0x0e, 0x51, 0x03, 0x8f, 0x0e, 0xbd, 0x03, 0x8f, 0x0e, + 0xe1, 0x00, 0xcf, 0x0e, 0xbd, 0x03, 0xc0, 0x00, 0xc9, 0x03, 0xc0, 0x00, + 0xd5, 0x03, 0xc0, 0x00, 0x5d, 0x02, 0xcf, 0x0e, 0x49, 0x02, 0xcf, 0x0e, + 0xa5, 0x04, 0xcf, 0x0e, 0x31, 0x02, 0xcf, 0x0e, 0xd9, 0x03, 0xc0, 0x00, + 0xf1, 0x04, 0xcf, 0x0e, 0x15, 0x05, 0xc0, 0x00, 0x81, 0x05, 0xc0, 0x00, + 0x1d, 0x03, 0xcf, 0x0e, 0xd5, 0x01, 0x0f, 0x0f, 0x69, 0x00, 0x0f, 0x0f, + 0x29, 0x03, 0x0f, 0x0f, 0x45, 0x03, 0x0f, 0x0f, 0x85, 0x00, 0x0f, 0x0f, + 0x81, 0x07, 0xc0, 0x00, 0x8d, 0x07, 0xc0, 0x00, 0x61, 0x00, 0x00, 0x01, + 0x91, 0x03, 0x0f, 0x0f, 0x59, 0x03, 0x0f, 0x0f, 0x7d, 0x00, 0x0f, 0x0f, + 0x65, 0x07, 0xcf, 0x0a, 0xf1, 0x06, 0xcf, 0x0a, 0x21, 0x07, 0xcf, 0x0a, + 0xa1, 0x06, 0xcf, 0x0a, 0xcd, 0x06, 0xcf, 0x0a, 0x61, 0x06, 0xcf, 0x0a, + 0xad, 0x06, 0xcf, 0x0a, 0x79, 0x06, 0xcf, 0x0a, 0x05, 0x02, 0x0f, 0x0b, + 0x21, 0x01, 0x0f, 0x0b, 0xf5, 0x00, 0x0f, 0x0b, 0xc9, 0x00, 0x0f, 0x0b, + 0x01, 0x01, 0x0f, 0x0b, 0x2d, 0x03, 0x0f, 0x0b, 0xad, 0x01, 0x0f, 0x0b, + 0x1d, 0x01, 0x0f, 0x0b, 0xed, 0x07, 0xcf, 0x0a, 0x11, 0x00, 0x0f, 0x0b, + 0x1d, 0x00, 0x0f, 0x0b, 0x01, 0x03, 0x0f, 0x0b, 0x2d, 0x00, 0x0f, 0x0b, + 0x41, 0x00, 0x0f, 0x0b, 0x55, 0x00, 0x0f, 0x0b, 0xe1, 0x07, 0xcf, 0x0a, + 0x6d, 0x00, 0x0f, 0x0b, 0x1d, 0x05, 0x0f, 0x0b, 0xed, 0x04, 0x0f, 0x0b, + 0x9d, 0x05, 0x0f, 0x0b, 0xf9, 0x05, 0x0f, 0x0b, 0x29, 0x05, 0x0f, 0x0b, + 0x41, 0x05, 0x0f, 0x0b, 0xa9, 0x00, 0x8f, 0x0e, 0x31, 0x00, 0x8f, 0x0e, + 0xb9, 0x06, 0x4f, 0x0e, 0xe1, 0x06, 0x4f, 0x0e, 0x05, 0x07, 0x4f, 0x0e, + 0x5d, 0x07, 0x4f, 0x0e, 0xc9, 0x07, 0x4f, 0x0e, 0xf5, 0x07, 0x4f, 0x0e, + 0x79, 0x06, 0x4f, 0x0e, 0x01, 0x07, 0x4f, 0x0e, 0x8d, 0x06, 0x4f, 0x0e, + 0xd9, 0x06, 0x4f, 0x0e, 0x45, 0x01, 0x8f, 0x0e, 0x01, 0x07, 0x4f, 0x0e, + 0x11, 0x07, 0x4f, 0x0e, 0x95, 0x06, 0x4f, 0x0e, 0xa1, 0x06, 0x4f, 0x0e, + 0x19, 0x07, 0x4f, 0x0e, 0x3d, 0x07, 0x4f, 0x0e, 0xf9, 0x05, 0x0f, 0x0e, + 0xcd, 0x00, 0x4f, 0x0e, 0x79, 0x06, 0x0f, 0x0e, 0x59, 0x06, 0x0f, 0x0e, + 0x85, 0x05, 0x0f, 0x0e, 0x29, 0x06, 0x0f, 0x0e, 0x59, 0x06, 0x0f, 0x0e, + 0x5d, 0x06, 0x0f, 0x0e, 0x35, 0x06, 0x0f, 0x0e, 0xb5, 0x03, 0x8f, 0x0f, + 0x69, 0x01, 0x4f, 0x0c, 0x51, 0x01, 0x4f, 0x0c, 0x85, 0x00, 0x4f, 0x0c, + 0x8d, 0x02, 0x4f, 0x0c, 0x75, 0x01, 0x4f, 0x0c, 0xcd, 0x01, 0x4f, 0x0c, + 0xb9, 0x02, 0x4f, 0x0c, 0x9d, 0x01, 0x4f, 0x0c, 0xe5, 0x00, 0x4f, 0x0c, + 0xd1, 0x00, 0x4f, 0x0c, 0xed, 0x00, 0x4f, 0x0c, 0xd1, 0x00, 0x4f, 0x0c, + 0xdd, 0x00, 0x4f, 0x0c, 0xf9, 0x00, 0x4f, 0x0c, 0xe5, 0x00, 0x4f, 0x0c, + 0xe9, 0x00, 0x4f, 0x0c, 0xf5, 0x00, 0x4f, 0x0c, 0x01, 0x01, 0x4f, 0x0c, + 0xf5, 0x00, 0x4f, 0x0c, 0x31, 0x00, 0x4f, 0x0c, 0x99, 0x00, 0x4f, 0x0c, + 0x85, 0x01, 0x0f, 0x0e, 0x51, 0x06, 0x8f, 0x0d, 0x99, 0x06, 0x8f, 0x0d, + 0xb1, 0x06, 0x8f, 0x0d, 0x61, 0x07, 0x8f, 0x0d, 0x6d, 0x07, 0x8f, 0x0d, + 0x49, 0x07, 0x8f, 0x0d, 0x35, 0x07, 0x8f, 0x0d, 0x71, 0x06, 0x8f, 0x0d, + 0x51, 0x04, 0xcf, 0x0d, 0x89, 0x00, 0x0f, 0x0e, 0x79, 0x01, 0xcf, 0x0d, + 0x69, 0x03, 0xcf, 0x0d, 0x9d, 0x02, 0xcf, 0x0d, 0xe5, 0x01, 0xcf, 0x0d, + 0x79, 0x02, 0xcf, 0x0d, 0x99, 0x01, 0xcf, 0x0d, 0x11, 0x04, 0x8f, 0x0d, + 0x3d, 0x05, 0x8f, 0x0d, 0x81, 0x06, 0x8f, 0x0d, 0x89, 0x06, 0x8f, 0x0d, + 0x3d, 0x07, 0xcf, 0x0d, 0x31, 0x04, 0xcf, 0x0d, 0xd9, 0x06, 0x8f, 0x0d, + 0x25, 0x06, 0x8f, 0x0d, 0xfd, 0x03, 0xcf, 0x0d, 0xd9, 0x05, 0x8f, 0x0d, + 0x65, 0x07, 0x8f, 0x0d, 0x89, 0x03, 0x8f, 0x0d, 0xf1, 0x05, 0x8f, 0x0d, + 0x3d, 0x00, 0x4f, 0x0e, 0xa5, 0x00, 0x4f, 0x0e, 0x1d, 0x00, 0x4f, 0x0e, + 0xe1, 0x07, 0x0f, 0x0e, 0x05, 0x00, 0x4f, 0x0e, 0x09, 0x00, 0x4f, 0x0e, + 0xe9, 0x02, 0x4f, 0x0e, 0xc5, 0x03, 0x4f, 0x0e, 0xed, 0x04, 0x4f, 0x0e, + 0x45, 0x02, 0x4f, 0x0e, 0xbd, 0x02, 0x4f, 0x0e, 0x35, 0x03, 0x4f, 0x0e, + 0x45, 0x03, 0x4f, 0x0e, 0x25, 0x03, 0x4f, 0x0e, 0x15, 0x03, 0x4f, 0x0e, + 0x41, 0x03, 0x4f, 0x0e, 0xe1, 0x05, 0x0f, 0x0b, 0x71, 0x05, 0x0f, 0x0b, + 0x05, 0x06, 0x0f, 0x0b, 0x95, 0x05, 0x0f, 0x0b, 0xa9, 0x06, 0x0f, 0x0b, + 0xd9, 0x06, 0x0f, 0x0b, 0xf9, 0x07, 0x0f, 0x0b, 0x55, 0x00, 0x4f, 0x0b, + 0x85, 0x06, 0x0f, 0x0b, 0x6d, 0x06, 0x0f, 0x0b, 0x11, 0x06, 0x0f, 0x0b, + 0x39, 0x06, 0x0f, 0x0b, 0xe5, 0x06, 0x0f, 0x0b, 0x05, 0x00, 0x4f, 0x0b, + 0x09, 0x01, 0x4f, 0x0b, 0x99, 0x01, 0x4f, 0x0b, 0xb1, 0x01, 0x4f, 0x0b, + 0x89, 0x02, 0x4f, 0x0b, 0xf5, 0x02, 0x4f, 0x0b, 0x1d, 0x03, 0x4f, 0x0b, + 0x41, 0x01, 0x4f, 0x0b, 0xe1, 0x01, 0x4f, 0x0b, 0xf9, 0x01, 0x4f, 0x0b, + 0x11, 0x02, 0x4f, 0x0b, 0x29, 0x02, 0x4f, 0x0b, 0x69, 0x00, 0x4f, 0x0b, + 0x01, 0x01, 0x4f, 0x0b, 0x21, 0x00, 0x4f, 0x0b, 0xed, 0x06, 0x0f, 0x0b, + 0xd9, 0x05, 0x4f, 0x0c, 0x31, 0x04, 0x8f, 0x0c, 0x1d, 0x06, 0x4f, 0x0c, + 0x75, 0x01, 0x4f, 0x0c, 0xb1, 0x04, 0x4f, 0x0c, 0x25, 0x05, 0x4f, 0x0c, + 0xd5, 0x02, 0x4f, 0x0c, 0x9d, 0x06, 0xc0, 0x00, 0xc9, 0x07, 0x4f, 0x0c, + 0x8d, 0x07, 0x4f, 0x0c, 0x89, 0x02, 0x4f, 0x0c, 0x95, 0x02, 0x4f, 0x0c, + 0x8d, 0x02, 0x00, 0x01, 0xed, 0x06, 0x4f, 0x0c, 0x2d, 0x02, 0x4f, 0x0c, + 0x65, 0x02, 0x4f, 0x0c, 0xb5, 0x02, 0x00, 0x01, 0x65, 0x05, 0x4f, 0x0c, + 0x25, 0x01, 0x4f, 0x0c, 0x49, 0x04, 0x4f, 0x0c, 0x55, 0x04, 0x4f, 0x0c, + 0x6d, 0x05, 0x4f, 0x0c, 0x89, 0x03, 0x4f, 0x0c, 0x5d, 0x03, 0x4f, 0x0c, + 0xa9, 0x03, 0x4f, 0x0c, 0x69, 0x03, 0x4f, 0x0c, 0x8d, 0x03, 0x4f, 0x0c, + 0x5d, 0x01, 0x4f, 0x0c, 0x2d, 0x06, 0x4f, 0x0c, 0xe5, 0x01, 0x4f, 0x0c, + 0xd5, 0x01, 0x4f, 0x0c, 0xc9, 0x03, 0x4f, 0x0c, 0x9d, 0x03, 0x4f, 0x0c, + 0xe9, 0x03, 0x4f, 0x0c, 0xf9, 0x03, 0x4f, 0x0c, 0xa5, 0x03, 0x4f, 0x0c, + 0xc9, 0x03, 0x4f, 0x0c, 0xdd, 0x02, 0x4f, 0x0c, 0xf1, 0x05, 0x4f, 0x0c, + 0xf1, 0x02, 0x4f, 0x0c, 0x01, 0x03, 0x4f, 0x0c, 0xa1, 0x07, 0x8f, 0x0c, + 0x49, 0x06, 0x4f, 0x0c, 0x01, 0x01, 0x4f, 0x0c, 0x91, 0x01, 0x4f, 0x0c, + 0x09, 0x06, 0x4f, 0x0c, 0x19, 0x02, 0x4f, 0x0c, 0x51, 0x02, 0x4f, 0x0c, + 0x65, 0x01, 0x4f, 0x0c, 0x45, 0x01, 0x4f, 0x0c, 0x15, 0x05, 0x8f, 0x0c, + 0x91, 0x03, 0xcf, 0x0c, 0x19, 0x05, 0xcf, 0x0c, 0x55, 0x05, 0xcf, 0x0c, + 0xa1, 0x06, 0xcf, 0x0c, 0xdd, 0x05, 0xcf, 0x0c, 0xdd, 0x01, 0xcf, 0x0c, + 0xe5, 0x02, 0xcf, 0x0c, 0xed, 0x01, 0xcf, 0x0c, 0x01, 0x06, 0xcf, 0x0c, + 0x0d, 0x06, 0x40, 0x00, 0x39, 0x04, 0xcf, 0x0b, 0xd9, 0x03, 0xcf, 0x0b, + 0xe1, 0x03, 0xcf, 0x0b, 0xc9, 0x03, 0xcf, 0x0b, 0xdd, 0x04, 0xcf, 0x07, + 0x45, 0x03, 0x0f, 0x0d, 0xa1, 0x01, 0x4f, 0x0f, 0x55, 0x02, 0x4f, 0x0f, + 0x19, 0x05, 0x00, 0x01, 0x4d, 0x07, 0x0f, 0x0f, 0xfd, 0x07, 0x0f, 0x0f, + 0x41, 0x01, 0xcf, 0x0b, 0xb9, 0x01, 0xcf, 0x07, 0x79, 0x01, 0x4f, 0x0f, + 0xd5, 0x02, 0xcf, 0x08, 0x51, 0x05, 0x00, 0x01, 0xe1, 0x03, 0xcf, 0x08, + 0xdd, 0x05, 0x00, 0x01, 0x91, 0x04, 0x8f, 0x08, 0xbd, 0x01, 0xcf, 0x08, + 0x19, 0x02, 0xcf, 0x08, 0x59, 0x07, 0x8f, 0x08, 0x79, 0x07, 0x8f, 0x08, + 0x99, 0x07, 0x8f, 0x08, 0xf5, 0x00, 0xcf, 0x08, 0x19, 0x01, 0xcf, 0x08, + 0x3d, 0x01, 0xcf, 0x08, 0x3d, 0x04, 0xcf, 0x08, 0x5d, 0x01, 0xcf, 0x08, + 0x15, 0x02, 0xcf, 0x08, 0xa1, 0x07, 0x8f, 0x08, 0xdd, 0x07, 0x8f, 0x08, + 0x15, 0x00, 0xcf, 0x08, 0xa9, 0x01, 0xcf, 0x08, 0x81, 0x04, 0x8f, 0x08, + 0x49, 0x00, 0xcf, 0x08, 0x19, 0x03, 0xcf, 0x08, 0xb9, 0x07, 0x00, 0x01, + 0x05, 0x00, 0x40, 0x01, 0xa9, 0x07, 0x8f, 0x09, 0xb5, 0x00, 0xcf, 0x0a, + 0xc9, 0x00, 0xcf, 0x0a, 0xe5, 0x04, 0x4f, 0x0a, 0x31, 0x04, 0x4f, 0x0a, + 0x09, 0x06, 0x4f, 0x0a, 0x0d, 0x06, 0x8f, 0x09, 0x31, 0x05, 0xcf, 0x09, + 0xe5, 0x05, 0xcf, 0x09, 0xb9, 0x04, 0xcf, 0x09, 0xa5, 0x04, 0xcf, 0x09, + 0xe9, 0x02, 0x0f, 0x0a, 0x8d, 0x02, 0x0f, 0x0a, 0x81, 0x04, 0x0f, 0x0a, + 0x65, 0x01, 0x0f, 0x0a, 0x6d, 0x00, 0x0f, 0x0a, 0x09, 0x00, 0xcf, 0x0a, + 0xe9, 0x00, 0x0f, 0x0a, 0x09, 0x00, 0x0f, 0x0a, 0x29, 0x00, 0xcf, 0x0a, + 0x2d, 0x01, 0x0f, 0x0a, 0xc9, 0x07, 0x8f, 0x0a, 0x85, 0x00, 0x0f, 0x0a, + 0x09, 0x04, 0x0f, 0x0a, 0xdd, 0x03, 0x0f, 0x0a, 0xe9, 0x02, 0x8f, 0x09, + 0xf1, 0x02, 0x0f, 0x0a, 0x99, 0x04, 0x0f, 0x0a, 0xcd, 0x01, 0x40, 0x01, + 0xb5, 0x07, 0x8f, 0x09, 0xa9, 0x07, 0x8f, 0x09, 0xb9, 0x07, 0x8f, 0x09, + 0x81, 0x06, 0xcf, 0x09, 0x15, 0x07, 0x8f, 0x09, 0xa1, 0x06, 0xcf, 0x09, + 0x39, 0x07, 0xcf, 0x09, 0x1d, 0x00, 0xcf, 0x0a, 0xdd, 0x02, 0x0f, 0x0a, + 0x4d, 0x00, 0xcf, 0x09, 0x75, 0x07, 0x8f, 0x09, 0x0d, 0x06, 0xcf, 0x09, + 0xf5, 0x01, 0x40, 0x01, 0xa9, 0x05, 0x0f, 0x0a, 0x99, 0x06, 0x0f, 0x0a, + 0x71, 0x01, 0x0f, 0x0a, 0x71, 0x07, 0x0f, 0x0a, 0xf5, 0x06, 0x0f, 0x0a, + 0x81, 0x01, 0x0f, 0x0a, 0xf1, 0x07, 0x0f, 0x0a, 0xd5, 0x06, 0x0f, 0x0a, + 0x19, 0x04, 0x8f, 0x09, 0x35, 0x06, 0x8f, 0x09, 0x4d, 0x04, 0x8f, 0x09, + 0xb5, 0x07, 0x4f, 0x0a, 0xb5, 0x04, 0x8f, 0x09, 0x79, 0x04, 0x8f, 0x09, + 0xe5, 0x04, 0x8f, 0x09, 0x35, 0x02, 0x8f, 0x09, 0xf5, 0x04, 0x8f, 0x09, + 0x95, 0x05, 0x8f, 0x09, 0x1d, 0x06, 0x8f, 0x09, 0xf1, 0x05, 0x8f, 0x09, + 0x35, 0x05, 0x8f, 0x09, 0x79, 0x05, 0x8f, 0x09, 0xad, 0x05, 0x8f, 0x09, + 0xb9, 0x06, 0x8f, 0x09, 0xd9, 0x06, 0x8f, 0x09, 0x25, 0x00, 0x8f, 0x0a, + 0x99, 0x01, 0x0f, 0x0a, 0x2d, 0x01, 0xcf, 0x09, 0xa5, 0x00, 0x8f, 0x0a, + 0x71, 0x03, 0xcf, 0x09, 0xe1, 0x04, 0x8f, 0x0a, 0x65, 0x03, 0x8f, 0x0a, + 0xd5, 0x06, 0xcf, 0x09, 0xb5, 0x01, 0x8f, 0x0a, 0xfd, 0x04, 0xcf, 0x09, + 0xf5, 0x05, 0x8f, 0x0a, 0x45, 0x00, 0x8f, 0x0a, 0xb1, 0x03, 0xcf, 0x09, + 0x09, 0x01, 0xcf, 0x09, 0x09, 0x00, 0xcf, 0x09, 0x55, 0x03, 0xcf, 0x09, + 0xe9, 0x03, 0x0f, 0x0a, 0x89, 0x04, 0x0f, 0x0a, 0x79, 0x00, 0xcf, 0x09, + 0x9d, 0x00, 0xcf, 0x09, 0xd9, 0x00, 0xcf, 0x09, 0x01, 0x07, 0xcf, 0x09, + 0x61, 0x02, 0xcf, 0x09, 0x3d, 0x00, 0xcf, 0x09, 0xa1, 0x06, 0xcf, 0x09, + 0xb9, 0x00, 0xcf, 0x09, 0xad, 0x00, 0xcf, 0x09, 0x0d, 0x01, 0xcf, 0x09, + 0xc5, 0x01, 0x8f, 0x09, 0x41, 0x06, 0x8f, 0x0a, 0xf5, 0x07, 0x8f, 0x09, + 0x5d, 0x00, 0xcf, 0x09, 0x6d, 0x01, 0x8f, 0x09, 0xc1, 0x02, 0xcf, 0x09, + 0xf5, 0x02, 0x40, 0x01, 0xe5, 0x04, 0xcf, 0x09, 0x31, 0x01, 0x8f, 0x09, + 0xed, 0x02, 0x40, 0x01, 0xa1, 0x04, 0x40, 0x01, 0xa1, 0x04, 0xcf, 0x09, + 0x21, 0x00, 0xcf, 0x06, 0xe1, 0x01, 0xcf, 0x07, 0x8d, 0x02, 0xcf, 0x0b, + 0x5d, 0x07, 0x40, 0x01, 0xa1, 0x00, 0x80, 0x00, 0x3d, 0x02, 0x0f, 0x07, + 0xb9, 0x02, 0x0f, 0x07, 0xfd, 0x02, 0x0f, 0x07, 0x71, 0x01, 0x80, 0x01, + 0x95, 0x06, 0x8f, 0x07, 0xa5, 0x01, 0x80, 0x01, 0x39, 0x03, 0x8f, 0x07, + 0x3d, 0x05, 0x4f, 0x0d, 0xf5, 0x01, 0xcf, 0x07, 0x59, 0x03, 0x4f, 0x0f, + 0x31, 0x04, 0x0f, 0x08, 0x75, 0x04, 0x0f, 0x08, 0x35, 0x03, 0x80, 0x01, + 0x35, 0x04, 0x80, 0x01, 0xe5, 0x03, 0x4f, 0x08, 0x81, 0x04, 0x80, 0x01, + 0xe1, 0x06, 0x0f, 0x08, 0x71, 0x05, 0x80, 0x01, 0xf9, 0x05, 0x80, 0x01, + 0x29, 0x06, 0x80, 0x01, 0x79, 0x06, 0x80, 0x01, 0x49, 0x07, 0x80, 0x01, + 0x81, 0x07, 0x80, 0x01, 0xad, 0x07, 0x80, 0x01, 0x1d, 0x00, 0xc0, 0x01, + 0x75, 0x04, 0x4f, 0x0f, 0x7d, 0x05, 0x4f, 0x0f, 0x91, 0x05, 0x4f, 0x0f, + 0xf1, 0x00, 0x0f, 0x0d, 0xb1, 0x06, 0x4f, 0x07, 0xcd, 0x00, 0xcf, 0x0a, + 0x01, 0x07, 0x8f, 0x0a, 0x05, 0x07, 0x8f, 0x0a, 0xf1, 0x06, 0x8f, 0x0a, + 0x05, 0x07, 0x8f, 0x0a, 0x7d, 0x07, 0x8f, 0x0a, 0xdd, 0x06, 0x8f, 0x0a, + 0x69, 0x07, 0x8f, 0x0a, 0x7d, 0x07, 0x8f, 0x0a, 0x01, 0x07, 0x8f, 0x0a, + 0xa1, 0x05, 0xcf, 0x0a, 0x8d, 0x05, 0xcf, 0x0a, 0xa1, 0x05, 0xcf, 0x0a, + 0x0d, 0x06, 0xcf, 0x0a, 0x79, 0x05, 0xcf, 0x0a, 0xf9, 0x05, 0xcf, 0x0a, + 0xa1, 0x05, 0xcf, 0x0a, 0x41, 0x05, 0xcf, 0x0a, 0x2d, 0x06, 0xcf, 0x0a, + 0x39, 0x06, 0xcf, 0x0a, 0x2d, 0x06, 0xcf, 0x0a, 0x09, 0x06, 0xcf, 0x0a, + 0x0d, 0x06, 0xcf, 0x0a, 0x31, 0x06, 0xcf, 0x0a, 0xc5, 0x07, 0x80, 0x01, + 0xb1, 0x07, 0xcf, 0x06, 0x35, 0x06, 0x4f, 0x07, 0x55, 0x00, 0xc0, 0x01, + 0x69, 0x00, 0xc0, 0x01, 0x9d, 0x00, 0xc0, 0x01, 0x51, 0x07, 0xcf, 0x06, + 0x39, 0x02, 0xcf, 0x06, 0x9d, 0x07, 0xcf, 0x06, 0xed, 0x00, 0xc0, 0x01, + 0x6d, 0x04, 0xc0, 0x01, 0x99, 0x06, 0xc0, 0x01, 0x9d, 0x06, 0x8f, 0x07, + 0x21, 0x00, 0x0f, 0x08, 0x59, 0x04, 0xcf, 0x06, 0x41, 0x02, 0x0f, 0x07, + 0x3d, 0x06, 0x8f, 0x07, 0x65, 0x07, 0xc0, 0x01, 0x75, 0x07, 0xc0, 0x01, + 0x85, 0x07, 0xc0, 0x01, 0x95, 0x07, 0xc0, 0x01, 0xa5, 0x07, 0xc0, 0x01, + 0xb5, 0x07, 0xc0, 0x01, 0xc9, 0x07, 0xc0, 0x01, 0x15, 0x00, 0x00, 0x02, + 0xf9, 0x06, 0x4f, 0x07, 0x11, 0x04, 0x8f, 0x06, 0x35, 0x04, 0x8f, 0x06, + 0x9d, 0x03, 0x8f, 0x06, 0x2d, 0x07, 0x4f, 0x07, 0x05, 0x05, 0x4f, 0x0f, + 0xf5, 0x07, 0xcf, 0x0a, 0x5d, 0x03, 0x4f, 0x0f, 0x0d, 0x01, 0x8f, 0x0d, + 0x51, 0x01, 0x0f, 0x0d, 0xad, 0x04, 0x00, 0x02, 0x15, 0x05, 0x4f, 0x0f, + 0xc1, 0x01, 0x4f, 0x0b, 0xb9, 0x00, 0x4f, 0x0b, 0x3d, 0x01, 0x4f, 0x0b, + 0x59, 0x07, 0x0f, 0x0b, 0x89, 0x07, 0x0f, 0x0b, 0x15, 0x00, 0x4f, 0x0b, + 0x85, 0x02, 0x4f, 0x0f, 0x91, 0x04, 0xcf, 0x06, 0xc1, 0x02, 0x40, 0x02, + 0xcd, 0x02, 0x40, 0x02, 0xd9, 0x02, 0x40, 0x02, 0xe5, 0x02, 0x40, 0x02, + 0xf1, 0x02, 0x40, 0x02, 0xfd, 0x02, 0x40, 0x02, 0x05, 0x03, 0x40, 0x02, + 0x0d, 0x03, 0x40, 0x02, 0x5d, 0x03, 0x40, 0x02, 0x69, 0x03, 0x40, 0x02, + 0x71, 0x03, 0x40, 0x02, 0x79, 0x03, 0x40, 0x02, 0x81, 0x03, 0x40, 0x02, + 0x89, 0x03, 0x40, 0x02, 0x91, 0x03, 0x40, 0x02, 0x4d, 0x03, 0xcf, 0x07, + 0x49, 0x06, 0x8f, 0x07, 0x6d, 0x01, 0xcf, 0x07, 0x51, 0x00, 0x8f, 0x0b, + 0x71, 0x07, 0x4f, 0x0b, 0xfd, 0x00, 0x8f, 0x0b, 0x65, 0x01, 0x8f, 0x0b, + 0x05, 0x04, 0x4f, 0x0b, 0xe5, 0x02, 0x4f, 0x0b, 0x75, 0x05, 0x4f, 0x0b, + 0x21, 0x06, 0x4f, 0x0b, 0x9d, 0x01, 0x8f, 0x0b, 0x19, 0x05, 0x4f, 0x0b, + 0xa1, 0x01, 0x4f, 0x0b, 0x21, 0x02, 0x4f, 0x0b, 0xbd, 0x06, 0x4f, 0x0b, + 0x01, 0x04, 0x4f, 0x0b, 0xc9, 0x03, 0x4f, 0x0b, 0x99, 0x00, 0x8f, 0x0b, + 0x65, 0x04, 0x8f, 0x07, 0x09, 0x05, 0xcf, 0x07, 0x31, 0x05, 0xcf, 0x07, + 0x1d, 0x02, 0xcf, 0x06, 0x8d, 0x03, 0x8f, 0x07, 0xe9, 0x07, 0xcf, 0x06, + 0x69, 0x02, 0x8f, 0x07, 0x6d, 0x06, 0xcf, 0x06, 0x0d, 0x05, 0x8f, 0x07, + 0xc1, 0x01, 0x8f, 0x0f, 0xc9, 0x01, 0x8f, 0x0f, 0xcd, 0x01, 0x8f, 0x0f, + 0xd5, 0x01, 0x8f, 0x0f, 0xd9, 0x01, 0x8f, 0x0f, 0xe1, 0x01, 0x8f, 0x0f, + 0x65, 0x02, 0x8f, 0x0f, 0x89, 0x02, 0x8f, 0x0f, 0x05, 0x07, 0xcf, 0x06, + 0x69, 0x06, 0xcf, 0x06, 0x59, 0x02, 0x0f, 0x07, 0x71, 0x02, 0x0f, 0x07, + 0xdd, 0x00, 0x0f, 0x07, 0x09, 0x04, 0x4f, 0x07, 0xbd, 0x06, 0xcf, 0x06, + 0x09, 0x05, 0xcf, 0x0c, 0x15, 0x05, 0xcf, 0x0c, 0xf5, 0x05, 0x40, 0x02, + 0x1d, 0x05, 0xcf, 0x0c, 0x19, 0x06, 0x40, 0x02, 0x5d, 0x06, 0xcf, 0x0c, + 0x1d, 0x06, 0xcf, 0x0e, 0x6d, 0x02, 0x0f, 0x0f, 0x61, 0x05, 0x8f, 0x06, + 0xa5, 0x00, 0xcf, 0x06, 0x2d, 0x02, 0xcf, 0x06, 0x71, 0x02, 0xcf, 0x06, + 0x89, 0x01, 0x80, 0x02, 0x25, 0x01, 0x4f, 0x0f, 0x0d, 0x01, 0x4f, 0x0f, + 0xc5, 0x02, 0x80, 0x02, 0x99, 0x03, 0x80, 0x02, 0x09, 0x03, 0x8f, 0x0f, + 0xd5, 0x07, 0x8f, 0x07, 0xcd, 0x04, 0x8f, 0x07, 0xb9, 0x07, 0x4f, 0x08, + 0x9d, 0x01, 0x8f, 0x09, 0x79, 0x01, 0xcf, 0x09, 0x65, 0x02, 0x40, 0x01, + 0x69, 0x07, 0xcf, 0x06, 0xe5, 0x07, 0xcf, 0x06, 0x29, 0x00, 0x0f, 0x07, + 0xc5, 0x03, 0x8f, 0x07, 0x31, 0x07, 0x8f, 0x07, 0x71, 0x01, 0x0f, 0x08, + 0xa5, 0x01, 0x0f, 0x08, 0x35, 0x04, 0x4f, 0x07, 0xa9, 0x05, 0x80, 0x01, + 0xed, 0x05, 0x80, 0x01, 0xa9, 0x01, 0xcf, 0x06, 0x8d, 0x05, 0xcf, 0x06, + 0x35, 0x06, 0x80, 0x01, 0x49, 0x06, 0x80, 0x01, 0x7d, 0x06, 0x80, 0x01, + 0x1d, 0x00, 0xcf, 0x06, 0x81, 0x05, 0xcf, 0x06, 0x55, 0x02, 0xc0, 0x01, + 0x89, 0x04, 0x8f, 0x07, 0x95, 0x05, 0x8f, 0x07, 0x31, 0x00, 0x0f, 0x07, + 0x2d, 0x04, 0x8f, 0x07, 0xd1, 0x05, 0xc0, 0x01, 0x1d, 0x06, 0xc0, 0x01, + 0x01, 0x05, 0x4f, 0x07, 0x19, 0x02, 0x8f, 0x06, 0x3d, 0x02, 0x8f, 0x06, + 0xa5, 0x01, 0x8f, 0x06, 0x1d, 0x07, 0x8f, 0x07, 0xd5, 0x05, 0x8f, 0x07, + 0xcd, 0x06, 0xc0, 0x01, 0xfd, 0x02, 0x8f, 0x07, 0x5d, 0x03, 0x00, 0x02, + 0xbd, 0x01, 0xcf, 0x07, 0xb9, 0x04, 0x8f, 0x07, 0xdd, 0x07, 0x8f, 0x07, + 0x69, 0x07, 0x8f, 0x07, 0xb9, 0x03, 0xcf, 0x07, 0xe1, 0x03, 0xcf, 0x07, + 0xcd, 0x00, 0xcf, 0x06, 0x3d, 0x02, 0x8f, 0x07, 0x99, 0x06, 0xcf, 0x06, + 0x19, 0x01, 0x8f, 0x07, 0x1d, 0x05, 0xcf, 0x06, 0xf9, 0x04, 0x8f, 0x07, + 0xa5, 0x03, 0x8f, 0x07, 0xb5, 0x03, 0x8f, 0x07, 0x35, 0x05, 0xcf, 0x06, + 0x25, 0x01, 0x0f, 0x07, 0x3d, 0x01, 0x0f, 0x07, 0x49, 0x04, 0x8f, 0x07, + 0x8d, 0x05, 0xcf, 0x06, 0x71, 0x04, 0x40, 0x02, 0x21, 0x01, 0xcf, 0x06, + 0x69, 0x03, 0x8f, 0x07, 0x51, 0x00, 0x80, 0x02, 0xf9, 0x03, 0x4f, 0x07, + 0x00, 0x00, 0x00, 0x00, 0xab, 0x26, 0x0a, 0x74, 0x7f, 0x00, 0x98, 0x80, + 0xe0, 0x7e, 0xe0, 0x78, 0xab, 0x26, 0xe0, 0x7c, 0x00, 0x00, 0x40, 0x00, + 0x6f, 0x24, 0x3f, 0x00, 0xab, 0x26, 0xe0, 0x7c, 0x00, 0x00, 0x4f, 0x00, + 0x6f, 0x24, 0x3f, 0x00, 0xe1, 0xc0, 0xaa, 0x20, 0x10, 0x00, 0xd3, 0x70, + 0x01, 0x00, 0x02, 0x39, 0xe8, 0x07, 0xc2, 0xff, 0xc3, 0x40, 0x7f, 0x00, + 0x60, 0x8c, 0xab, 0x20, 0x10, 0x00, 0xc1, 0xc0, 0x2f, 0x38, 0x01, 0x00, + 0x6f, 0x24, 0x3f, 0x00, 0xe0, 0x78, 0xe0, 0x78, 0xc3, 0x40, 0x7f, 0x00, + 0x00, 0x80, 0x6b, 0x20, 0x40, 0x09, 0x2c, 0x70, 0x4c, 0x70, 0x6c, 0x70, + 0x8c, 0x70, 0xac, 0x70, 0xcc, 0x70, 0xec, 0x70, 0x0d, 0x70, 0x2d, 0x70, + 0x4d, 0x70, 0x6d, 0x70, 0x8d, 0x70, 0xad, 0x70, 0xcd, 0x70, 0xed, 0x70, + 0x0e, 0x70, 0x2e, 0x70, 0x4e, 0x70, 0x6e, 0x70, 0x8e, 0x70, 0xae, 0x70, + 0xce, 0x70, 0xee, 0x70, 0x0f, 0x70, 0x2f, 0x70, 0x0c, 0x70, 0x4a, 0x25, + 0x00, 0x30, 0x4a, 0x26, 0x00, 0x30, 0xdb, 0x44, 0x80, 0x00, 0x10, 0x12, + 0xdb, 0x42, 0x80, 0x00, 0x10, 0x13, 0x0a, 0x22, 0x80, 0x8f, 0x7f, 0x00, + 0x18, 0x8c, 0xe2, 0x20, 0x82, 0x00, 0x6f, 0x70, 0x22, 0x20, 0x80, 0x0f, + 0x7f, 0x00, 0x54, 0xaa, 0x55, 0x06, 0x8f, 0x04, 0x88, 0xca, 0x7f, 0x00, + 0x3d, 0x01, 0x00, 0x00, 0xe8, 0xc2, 0x08, 0x45, 0x02, 0x81, 0x43, 0x85, + 0x00, 0x30, 0x83, 0x0f, 0x4c, 0x3d, 0xd0, 0xcc, 0x00, 0x32, 0x80, 0x0f, + 0x73, 0x3f, 0x33, 0x33, 0x01, 0x30, 0xcc, 0x00, 0x83, 0xa5, 0xc0, 0x81, + 0x41, 0x85, 0x02, 0x85, 0x61, 0x81, 0xc1, 0xa5, 0xe1, 0x81, 0x02, 0x33, + 0x03, 0x00, 0x02, 0x36, 0x82, 0x10, 0x01, 0x34, 0x80, 0x1f, 0x7a, 0xc4, + 0x00, 0x00, 0xc3, 0x41, 0xcb, 0x42, 0x78, 0xf1, 0xbf, 0xb8, 0xbf, 0xbb, + 0xbf, 0xba, 0xe2, 0xa5, 0x7e, 0x0e, 0x6f, 0x05, 0x01, 0x32, 0xd0, 0x00, + 0x43, 0xf6, 0xe0, 0x8d, 0x08, 0xf0, 0xed, 0x70, 0x28, 0x4d, 0x2c, 0x70, + 0x4c, 0x76, 0x2a, 0x0c, 0x6f, 0x06, 0xe0, 0xad, 0x2d, 0x0f, 0xb0, 0x10, + 0xcd, 0x70, 0x4b, 0x0f, 0x51, 0x10, 0x11, 0x8d, 0xc3, 0x41, 0xf4, 0x41, + 0x5d, 0xbb, 0xe1, 0x68, 0x02, 0x40, 0x4e, 0x0e, 0x6f, 0x05, 0xf1, 0xad, + 0x64, 0x00, 0x0c, 0x00, 0x14, 0x8d, 0x04, 0x71, 0x14, 0xad, 0x12, 0x1d, + 0x03, 0x10, 0x3c, 0xf0, 0x13, 0x8d, 0x04, 0x71, 0x13, 0xad, 0x0f, 0x78, + 0x83, 0x08, 0xf4, 0x02, 0x02, 0x40, 0x15, 0x8d, 0x8f, 0x08, 0xb4, 0x01, + 0xc0, 0xad, 0x28, 0x4d, 0x2c, 0x70, 0xde, 0x0b, 0x6f, 0x06, 0x4c, 0x76, + 0x42, 0xf0, 0x85, 0x0f, 0x11, 0x10, 0x10, 0x8d, 0xc3, 0x41, 0xf4, 0x41, + 0x5d, 0xbb, 0xe1, 0x68, 0xef, 0x78, 0xb2, 0xe0, 0xca, 0x27, 0xad, 0x1c, + 0x02, 0x40, 0xfe, 0x0d, 0x6f, 0x05, 0xf0, 0xad, 0x64, 0x00, 0x2c, 0x00, + 0xef, 0x78, 0x39, 0x08, 0xb1, 0x0c, 0xcd, 0x70, 0x00, 0x1d, 0x43, 0x10, + 0xd0, 0xad, 0x2a, 0xf0, 0x12, 0x8d, 0x04, 0x71, 0x12, 0xad, 0x0f, 0x78, + 0x19, 0x08, 0x94, 0x01, 0x14, 0x8d, 0x1d, 0x08, 0xf4, 0x02, 0xcd, 0x70, + 0x00, 0x1d, 0x83, 0x10, 0xd1, 0xad, 0xd4, 0xad, 0xd2, 0xad, 0x1a, 0xf0, + 0xef, 0x78, 0xe5, 0xe0, 0x96, 0xf7, 0xcd, 0x70, 0x28, 0x4d, 0x2c, 0x70, + 0x4c, 0x76, 0x76, 0x0b, 0x6f, 0x06, 0xc0, 0xad, 0x0e, 0xf0, 0xc3, 0x41, + 0xf4, 0x41, 0x5d, 0xbb, 0xa6, 0x0d, 0x4f, 0x05, 0xc8, 0xf6, 0x15, 0x8d, + 0x04, 0x71, 0x15, 0xad, 0x04, 0xf0, 0xd3, 0xad, 0xd5, 0xad, 0x81, 0xde, + 0xc1, 0x40, 0xc8, 0xc6, 0x6c, 0x70, 0x44, 0x68, 0x2c, 0x70, 0x60, 0xa8, + 0x24, 0x71, 0x01, 0x09, 0xb2, 0x00, 0x04, 0x1a, 0xd0, 0x00, 0x6a, 0xb0, + 0x64, 0xa0, 0xe0, 0x7f, 0x63, 0xa0, 0xe0, 0x78, 0xe9, 0x01, 0x00, 0x00, + 0xf4, 0xc2, 0x08, 0x46, 0x02, 0x81, 0x28, 0x45, 0x24, 0x86, 0x00, 0x30, + 0x82, 0x0f, 0xcc, 0x3d, 0xd0, 0xcc, 0x00, 0x31, 0x80, 0x0f, 0x66, 0x3f, + 0x66, 0x66, 0x01, 0x30, 0x94, 0x00, 0x10, 0x1e, 0x00, 0x15, 0x00, 0x85, + 0x0c, 0x16, 0x08, 0x10, 0xe2, 0x85, 0x61, 0x86, 0x42, 0x86, 0x21, 0x85, + 0x01, 0xa6, 0x81, 0x85, 0x02, 0x31, 0x81, 0x00, 0x82, 0xa6, 0x82, 0x85, + 0x02, 0x30, 0xc0, 0x00, 0x83, 0xa6, 0x80, 0x8e, 0x04, 0x15, 0x12, 0x10, + 0x00, 0x15, 0x13, 0x10, 0xbf, 0xb9, 0xbf, 0xb8, 0x01, 0x30, 0x41, 0x00, + 0x02, 0x37, 0x00, 0x12, 0xbf, 0xb8, 0x01, 0x31, 0x00, 0x00, 0x50, 0x22, + 0xd5, 0x27, 0x50, 0x23, 0xd6, 0x27, 0x91, 0x40, 0x2e, 0x70, 0x06, 0xec, + 0xc3, 0x41, 0x0e, 0x43, 0xa1, 0xc2, 0x05, 0xf0, 0xc3, 0x41, 0x0e, 0x42, + 0xa1, 0xc2, 0xf6, 0x0c, 0x4f, 0x05, 0x02, 0x36, 0x40, 0x25, 0xbf, 0xb8, + 0xc3, 0x41, 0x4b, 0x43, 0x78, 0xf1, 0xe6, 0x0c, 0x6f, 0x05, 0xca, 0x21, + 0x69, 0x20, 0xed, 0x74, 0x9b, 0xf6, 0x02, 0x85, 0xad, 0x70, 0xd6, 0x0c, + 0x6f, 0x05, 0xa1, 0x41, 0x95, 0xf6, 0xc2, 0x40, 0xca, 0x0c, 0x6f, 0x05, + 0xa2, 0x41, 0xca, 0xf6, 0x62, 0x40, 0xc2, 0x0c, 0x6f, 0x05, 0xa1, 0x41, + 0xed, 0x72, 0x4b, 0xf6, 0xed, 0x73, 0x09, 0xf0, 0x42, 0x40, 0xb2, 0x0c, + 0x6f, 0x05, 0xa1, 0x41, 0xed, 0x70, 0x43, 0xf6, 0xed, 0x71, 0x00, 0x3c, + 0x80, 0x2f, 0x7a, 0x44, 0x00, 0x00, 0xc3, 0x41, 0x80, 0x3f, 0x00, 0x00, + 0x10, 0x43, 0x96, 0x0c, 0x6f, 0x05, 0x30, 0x42, 0x0a, 0xf6, 0xad, 0x70, + 0x62, 0x40, 0x8a, 0x0c, 0x6f, 0x05, 0xa1, 0x41, 0x0a, 0x22, 0xc0, 0x24, + 0x42, 0xf6, 0xb1, 0x42, 0x0a, 0x6f, 0x31, 0x08, 0xb5, 0x00, 0xad, 0x70, + 0xc3, 0x41, 0x7a, 0x3f, 0x48, 0xe1, 0x6e, 0x0c, 0x6f, 0x05, 0x42, 0x40, + 0x4a, 0x00, 0x2a, 0x00, 0x42, 0x40, 0xc3, 0x41, 0xae, 0x3e, 0x7b, 0x14, + 0x5a, 0x0c, 0x4f, 0x05, 0xdd, 0xf6, 0xc3, 0x41, 0x4b, 0x43, 0x78, 0xf1, + 0xa2, 0x40, 0x15, 0xf0, 0x98, 0xef, 0xc3, 0x41, 0x7a, 0x3f, 0x48, 0xe1, + 0x42, 0x0c, 0x6f, 0x05, 0x42, 0x40, 0x51, 0xf6, 0xc3, 0x41, 0xae, 0x3e, + 0x7b, 0x14, 0x36, 0x0c, 0x6f, 0x05, 0x42, 0x40, 0xc9, 0xf6, 0xc3, 0x41, + 0x4b, 0x43, 0x78, 0xf1, 0xc2, 0x40, 0x26, 0x0c, 0x4f, 0x05, 0xad, 0x71, + 0x82, 0xf6, 0xad, 0x70, 0x2b, 0x08, 0x51, 0x20, 0x14, 0x8e, 0x04, 0x71, + 0x14, 0xae, 0x0f, 0x78, 0x43, 0x08, 0xf4, 0x02, 0x6c, 0x70, 0x16, 0x8e, + 0x69, 0x08, 0xf4, 0x02, 0x2c, 0x4e, 0x60, 0xae, 0x77, 0xae, 0x76, 0xae, + 0x75, 0xae, 0x74, 0xae, 0x18, 0x1e, 0x43, 0x10, 0x31, 0xf0, 0x63, 0x08, + 0x11, 0x20, 0x2f, 0x09, 0x10, 0x20, 0x04, 0xed, 0x18, 0x8e, 0x13, 0xe8, + 0x15, 0x8e, 0x04, 0x71, 0x15, 0xae, 0x0d, 0x78, 0x4b, 0x08, 0x12, 0x04, + 0x15, 0x1e, 0xc3, 0x13, 0x17, 0x1e, 0x43, 0x10, 0x1f, 0xf0, 0x3f, 0x09, + 0x10, 0x20, 0x16, 0x8e, 0x04, 0x71, 0x16, 0xae, 0x19, 0xf0, 0x15, 0x8e, + 0x04, 0x77, 0x2f, 0x26, 0x05, 0xf0, 0x2a, 0x00, 0x23, 0x00, 0x15, 0xae, + 0x15, 0x1e, 0x03, 0x10, 0x17, 0x8e, 0x0f, 0xe8, 0x17, 0x1e, 0x03, 0x10, + 0x0b, 0xed, 0x00, 0x1e, 0x43, 0x10, 0x09, 0xf0, 0x2c, 0x70, 0x4c, 0x75, + 0x5a, 0x09, 0x6f, 0x06, 0x60, 0xae, 0x81, 0xd8, 0x82, 0xed, 0x0c, 0x70, + 0xd4, 0xc6, 0xe0, 0x78, 0x6c, 0x70, 0x44, 0x68, 0x2c, 0x70, 0x60, 0xa8, + 0x24, 0x71, 0x01, 0x09, 0xf2, 0x00, 0x04, 0x1a, 0xd0, 0x00, 0x78, 0xa8, + 0x65, 0xa0, 0xe0, 0x7f, 0x64, 0xa0, 0xe0, 0x78, 0x41, 0x03, 0x00, 0x00, + 0xf0, 0xc3, 0xaf, 0xc1, 0x30, 0x41, 0x08, 0x45, 0xdc, 0x48, 0x4a, 0x22, + 0x00, 0x00, 0x4a, 0x24, 0x00, 0x71, 0x8b, 0xc0, 0xa8, 0x20, 0x80, 0x01, + 0x04, 0x11, 0x03, 0x04, 0x04, 0x18, 0xd0, 0x00, 0x87, 0xc4, 0x4a, 0x24, + 0x00, 0x71, 0x0c, 0x70, 0xa8, 0x20, 0x40, 0x02, 0x15, 0x25, 0x01, 0x10, + 0x2f, 0x81, 0x15, 0x24, 0x03, 0x10, 0x04, 0x71, 0x20, 0xa3, 0x84, 0xc3, + 0x15, 0x25, 0x80, 0x10, 0x02, 0x80, 0x15, 0x23, 0x81, 0x00, 0x44, 0x71, + 0xf5, 0x0a, 0xf2, 0x80, 0x00, 0xa1, 0x1c, 0x14, 0x10, 0x30, 0xed, 0x70, + 0x50, 0x20, 0xfe, 0xa7, 0x1e, 0xf2, 0x7f, 0xde, 0x17, 0xbe, 0x02, 0x40, + 0x0a, 0x0b, 0x6f, 0x05, 0x0a, 0x21, 0x80, 0x03, 0x16, 0xf2, 0x4a, 0x24, + 0x00, 0x71, 0x8b, 0xc0, 0xa8, 0x20, 0xc0, 0x01, 0x20, 0x80, 0x00, 0x39, + 0x01, 0x04, 0x04, 0x18, 0x50, 0x00, 0x88, 0xc0, 0x2c, 0x70, 0x40, 0x80, + 0x24, 0x71, 0x00, 0x3a, 0x02, 0x04, 0xfb, 0x09, 0xf2, 0x80, 0x04, 0x18, + 0x90, 0x00, 0x47, 0xc6, 0x05, 0xc1, 0x04, 0xc2, 0x06, 0xc0, 0x42, 0xc1, + 0x41, 0xc2, 0x43, 0xc0, 0x80, 0xc3, 0x81, 0xc1, 0x80, 0xc0, 0x41, 0x80, + 0xe5, 0x71, 0xff, 0x0f, 0xf2, 0x90, 0x04, 0x18, 0x90, 0x00, 0x8d, 0x70, + 0x43, 0xc4, 0x08, 0x11, 0x0b, 0x20, 0x4a, 0x24, 0x00, 0x71, 0x8b, 0xc2, + 0xa8, 0x20, 0xc0, 0x02, 0x04, 0x12, 0x00, 0x04, 0xc0, 0x83, 0x00, 0x33, + 0x00, 0x10, 0x01, 0x36, 0x00, 0x10, 0x04, 0x1b, 0x10, 0x00, 0x88, 0xc3, + 0x81, 0xc2, 0x04, 0x13, 0x0e, 0x04, 0x00, 0xc0, 0xe0, 0x82, 0x00, 0x30, + 0x80, 0x03, 0x02, 0x37, 0x00, 0x10, 0x85, 0x71, 0xef, 0x0c, 0xf2, 0x90, + 0x04, 0x1a, 0x10, 0x00, 0x41, 0x81, 0x60, 0x81, 0x22, 0x81, 0x00, 0xc0, + 0x45, 0xc2, 0x44, 0xc3, 0x46, 0xc1, 0x05, 0xa5, 0x40, 0x25, 0x02, 0x12, + 0x0c, 0x70, 0x84, 0xc1, 0x04, 0x11, 0x03, 0x04, 0x04, 0x71, 0xfd, 0x08, + 0xf2, 0x80, 0x04, 0x1a, 0xd0, 0x00, 0x18, 0x8d, 0x21, 0x68, 0x38, 0xad, + 0xe4, 0x8d, 0x30, 0x40, 0x04, 0xef, 0x19, 0x8d, 0x04, 0x71, 0x19, 0xad, + 0xc7, 0x85, 0x05, 0x85, 0xc1, 0x41, 0x10, 0x42, 0x36, 0x0a, 0x6f, 0x05, + 0xd1, 0x41, 0x4a, 0x00, 0x2c, 0x00, 0x42, 0x40, 0x09, 0x85, 0x01, 0x30, + 0x81, 0x0f, 0xfe, 0x43, 0xd6, 0xed, 0x42, 0x40, 0x1e, 0x0a, 0x6f, 0x05, + 0x30, 0x41, 0xca, 0x21, 0x8b, 0x24, 0x1c, 0x1d, 0x40, 0x14, 0x28, 0x15, + 0x80, 0x10, 0xcd, 0x70, 0xb8, 0xe8, 0x54, 0x15, 0x80, 0x10, 0x2f, 0x21, + 0x07, 0x04, 0x13, 0x08, 0x44, 0x00, 0xc5, 0x0f, 0x10, 0x10, 0x55, 0x15, + 0x82, 0x10, 0xbd, 0x0a, 0x45, 0x00, 0x28, 0x1d, 0x43, 0x10, 0x18, 0xad, + 0x85, 0xf0, 0xea, 0x09, 0x6f, 0x05, 0x28, 0x85, 0x76, 0x00, 0x2a, 0x00, + 0x2f, 0x21, 0x07, 0x04, 0x09, 0x85, 0x01, 0x30, 0x8e, 0x0f, 0xfe, 0xc3, + 0xd6, 0xed, 0x42, 0x40, 0xce, 0x09, 0x6f, 0x05, 0xc1, 0x41, 0xca, 0x26, + 0x89, 0x14, 0xc8, 0xa5, 0x28, 0x15, 0x80, 0x10, 0x8d, 0x08, 0x31, 0x00, + 0xcd, 0x70, 0x54, 0x15, 0x80, 0x10, 0x2f, 0x21, 0x07, 0x04, 0x11, 0x08, + 0x44, 0x00, 0x3a, 0xef, 0x55, 0x15, 0x82, 0x10, 0x6d, 0x0a, 0x45, 0x00, + 0x28, 0x1d, 0x83, 0x10, 0x18, 0xad, 0x5f, 0xf0, 0xbb, 0x08, 0xb1, 0x00, + 0x2f, 0x22, 0x07, 0x04, 0x54, 0x15, 0x81, 0x10, 0xaf, 0x09, 0x85, 0x00, + 0x56, 0x15, 0x80, 0x10, 0x38, 0x60, 0x0f, 0x78, 0xa3, 0x08, 0x82, 0x00, + 0x29, 0x15, 0x80, 0x10, 0x04, 0x71, 0x29, 0x1d, 0x02, 0x10, 0x28, 0x1d, + 0x43, 0x10, 0x38, 0xad, 0x47, 0xf0, 0x54, 0x15, 0x80, 0x10, 0x0d, 0x08, + 0x45, 0x00, 0x28, 0x15, 0x82, 0x10, 0x33, 0xea, 0x56, 0x15, 0x82, 0x10, + 0x58, 0x60, 0x0f, 0x78, 0x10, 0x71, 0x60, 0x00, 0x2c, 0x00, 0x0c, 0x70, + 0x29, 0x15, 0x81, 0x10, 0x23, 0xe9, 0x47, 0x09, 0x15, 0x01, 0x2a, 0xef, + 0x04, 0xad, 0x19, 0xad, 0xcd, 0x72, 0x1f, 0xf0, 0x28, 0x1d, 0x82, 0x13, + 0xd8, 0xad, 0x2b, 0xf0, 0x53, 0x08, 0x71, 0x00, 0x2f, 0x22, 0x07, 0x04, + 0x54, 0x15, 0x81, 0x10, 0x47, 0x09, 0x85, 0x00, 0x56, 0x15, 0x80, 0x10, + 0x38, 0x60, 0x0f, 0x78, 0x3b, 0x08, 0x82, 0x00, 0x29, 0x15, 0x80, 0x10, + 0x04, 0x71, 0x29, 0x1d, 0x02, 0x10, 0x28, 0x1d, 0x83, 0x10, 0x38, 0xad, + 0x13, 0xf0, 0xcd, 0x73, 0x04, 0xad, 0xed, 0x70, 0x0a, 0xf0, 0xed, 0x70, + 0x18, 0xad, 0xe4, 0xad, 0xcd, 0x70, 0x0b, 0xf0, 0xed, 0x71, 0xe4, 0xad, + 0x19, 0xad, 0xcd, 0x71, 0x29, 0x1d, 0x02, 0x10, 0x18, 0xad, 0x28, 0x1d, + 0x02, 0x10, 0x09, 0x85, 0x00, 0x32, 0x81, 0x2f, 0x23, 0x3c, 0x00, 0xd7, + 0x00, 0x30, 0x80, 0x0f, 0x7d, 0x3f, 0xa4, 0x70, 0x01, 0x31, 0x13, 0x00, + 0x02, 0x31, 0xc0, 0x24, 0xd3, 0x42, 0x75, 0x3f, 0x8f, 0xc2, 0x00, 0x30, + 0x80, 0x04, 0xd3, 0x40, 0xf4, 0x42, 0x5d, 0xbb, 0x01, 0x33, 0x00, 0x20, + 0x01, 0x33, 0x01, 0x24, 0x10, 0x44, 0x30, 0x41, 0xaa, 0x08, 0x6f, 0x05, + 0x24, 0x1d, 0xc0, 0x14, 0xca, 0x21, 0x09, 0x25, 0x1c, 0x1d, 0x40, 0x14, + 0x08, 0x85, 0x4f, 0x20, 0xd0, 0x27, 0x02, 0x33, 0x00, 0x20, 0x00, 0x30, + 0x80, 0x04, 0x01, 0x33, 0x01, 0x24, 0x02, 0x33, 0x00, 0x20, 0x10, 0x41, + 0x82, 0x08, 0x6f, 0x05, 0x30, 0x40, 0xca, 0x20, 0x4b, 0x24, 0x20, 0x1d, + 0x00, 0x14, 0x8c, 0xef, 0x57, 0x15, 0x81, 0x10, 0x19, 0x8d, 0x11, 0x09, + 0x25, 0x00, 0x0c, 0x70, 0x04, 0xad, 0x19, 0xad, 0x28, 0x1d, 0x02, 0x10, + 0x2c, 0x70, 0x4c, 0x71, 0x08, 0xee, 0x38, 0xad, 0x0d, 0x0e, 0xb1, 0x10, + 0x28, 0x1d, 0x42, 0x10, 0x81, 0xd9, 0x4c, 0x70, 0x00, 0x85, 0x8c, 0x20, + 0x83, 0x8f, 0xb9, 0x20, 0x83, 0x0f, 0x3c, 0x76, 0x05, 0x20, 0xbe, 0x80, + 0x8a, 0x20, 0xbe, 0x00, 0xdd, 0x70, 0x0f, 0x78, 0xd0, 0xc7, 0xe0, 0x78, + 0x6c, 0x70, 0x40, 0x20, 0x02, 0x02, 0x2c, 0x70, 0x60, 0xa0, 0x64, 0xa8, + 0x24, 0x71, 0x01, 0x09, 0xf2, 0x00, 0x04, 0x1a, 0xd0, 0x00, 0xc3, 0x41, + 0x7a, 0x44, 0x00, 0x00, 0x65, 0xa0, 0x78, 0xa8, 0x79, 0xa8, 0x27, 0xa0, + 0x9f, 0xb9, 0xcb, 0x44, 0x7f, 0x00, 0x28, 0xe1, 0x28, 0xa0, 0x4a, 0x24, + 0x00, 0x71, 0x40, 0x20, 0x02, 0x0b, 0x81, 0x41, 0x24, 0x18, 0xc0, 0x00, + 0x29, 0x18, 0xc2, 0x00, 0x28, 0x18, 0xc2, 0x00, 0xa8, 0x20, 0x80, 0x01, + 0x04, 0x11, 0x03, 0x04, 0x04, 0x1a, 0xd0, 0x00, 0x40, 0x20, 0x03, 0x0f, + 0x4a, 0x24, 0x00, 0x71, 0x40, 0x24, 0x01, 0x14, 0xa8, 0x20, 0x80, 0x01, + 0x04, 0x11, 0x02, 0x04, 0x04, 0x1b, 0x90, 0x00, 0x8a, 0x21, 0x06, 0x04, + 0x4c, 0x18, 0x44, 0x00, 0x3c, 0xd9, 0x4e, 0x18, 0x05, 0x05, 0x50, 0x18, + 0x44, 0x00, 0x8a, 0x21, 0x07, 0x0d, 0x52, 0x18, 0x44, 0x00, 0x64, 0xd9, + 0x57, 0x18, 0x42, 0x00, 0x50, 0xd9, 0x56, 0x18, 0x03, 0x03, 0x55, 0x18, + 0x03, 0x01, 0xe0, 0x7f, 0x54, 0x18, 0x42, 0x00, 0xec, 0xc2, 0x08, 0x46, + 0xed, 0x70, 0xcb, 0x45, 0x80, 0x00, 0x20, 0x1b, 0xd3, 0x41, 0x80, 0x00, + 0xa4, 0x21, 0x2f, 0x26, 0x48, 0xf0, 0x12, 0xf2, 0x00, 0x19, 0x40, 0x20, + 0x4a, 0x24, 0x40, 0x74, 0x4a, 0x21, 0x00, 0x00, 0xa8, 0x20, 0xc0, 0x01, + 0x30, 0x78, 0x14, 0x25, 0x00, 0x10, 0x24, 0x71, 0xe0, 0xb0, 0xe0, 0x78, + 0xaf, 0x04, 0x00, 0x00, 0x01, 0x9e, 0xa1, 0xe0, 0x0c, 0x70, 0x86, 0xf6, + 0x22, 0x9d, 0xf2, 0x08, 0x6f, 0x0f, 0x0c, 0x71, 0x02, 0xb5, 0x01, 0x9e, + 0xa7, 0xe0, 0x0c, 0x70, 0x85, 0xf6, 0x23, 0x9d, 0xde, 0x08, 0x6f, 0x0f, + 0x0c, 0x71, 0x03, 0xb5, 0x01, 0x9e, 0xad, 0xe0, 0x0c, 0x70, 0x86, 0xf6, + 0x24, 0x9d, 0xce, 0x08, 0x6f, 0x0f, 0x0c, 0x71, 0x04, 0xb5, 0x02, 0x9e, + 0xa1, 0xe0, 0x0c, 0x70, 0x85, 0xf6, 0x25, 0x9d, 0xba, 0x08, 0x6f, 0x0f, + 0x0c, 0x71, 0x05, 0xb5, 0x03, 0x9e, 0x0e, 0x70, 0xa1, 0xe0, 0x0c, 0x70, + 0x85, 0xf6, 0x26, 0x9d, 0xa6, 0x08, 0x6f, 0x0f, 0x0c, 0x71, 0x06, 0xb5, + 0x03, 0x9e, 0x11, 0x08, 0xf2, 0x09, 0x0c, 0x71, 0x96, 0x08, 0x6f, 0x0f, + 0x27, 0x9d, 0x10, 0x40, 0x0e, 0x1d, 0x04, 0x14, 0x04, 0x9e, 0x4e, 0x70, + 0xad, 0xe0, 0x0c, 0x70, 0x85, 0xf6, 0x28, 0x9d, 0x7e, 0x08, 0x6f, 0x0f, + 0x0c, 0x71, 0x08, 0xb5, 0x00, 0x96, 0x8d, 0xe8, 0x01, 0x96, 0x8b, 0xe8, + 0x02, 0x96, 0x89, 0xe8, 0x03, 0x96, 0x87, 0xe8, 0x09, 0x9d, 0x66, 0x08, + 0x6f, 0x0f, 0x2c, 0x71, 0x10, 0x42, 0x12, 0x1d, 0x84, 0x14, 0x0a, 0x95, + 0x1b, 0x78, 0x0a, 0xb5, 0x23, 0x9e, 0x0b, 0x09, 0xd2, 0x09, 0x08, 0xe0, + 0x0a, 0xb5, 0x2b, 0x95, 0x3b, 0x79, 0x2b, 0xb5, 0x44, 0x9e, 0x0b, 0x0a, + 0xd2, 0x09, 0x24, 0x72, 0x2b, 0xb5, 0x4c, 0x9d, 0x0e, 0x70, 0x90, 0xe2, + 0x6c, 0x70, 0x52, 0x00, 0x2b, 0x00, 0x4c, 0x70, 0x6c, 0x70, 0x2f, 0x26, + 0x08, 0xf0, 0x0e, 0xf2, 0x6c, 0x70, 0x70, 0x7a, 0x44, 0x20, 0x43, 0x00, + 0x04, 0x20, 0x80, 0x0f, 0x00, 0x00, 0xfe, 0xff, 0x5b, 0x63, 0x2f, 0x20, + 0x02, 0x80, 0xf7, 0xf5, 0x4c, 0x70, 0x2f, 0x26, 0x48, 0xf0, 0x0e, 0xf2, + 0x4c, 0x70, 0x50, 0x78, 0x44, 0x21, 0x42, 0x00, 0x1a, 0x62, 0x04, 0x21, + 0x80, 0x0f, 0x00, 0x00, 0xfe, 0xff, 0x2f, 0x21, 0x02, 0x80, 0xf7, 0xf5, + 0x0b, 0x0a, 0xd2, 0x23, 0x50, 0x7a, 0x5d, 0x78, 0x1a, 0x62, 0x00, 0x95, + 0x87, 0xe0, 0x5e, 0x03, 0x0d, 0x00, 0x25, 0x20, 0x00, 0x00, 0x09, 0xf0, + 0x0d, 0xf0, 0x13, 0xf0, 0x20, 0xf0, 0x2f, 0xf0, 0x3b, 0xf0, 0x46, 0xf0, + 0x51, 0xf0, 0x00, 0x9e, 0xb9, 0x08, 0x72, 0x08, 0x2c, 0x71, 0x20, 0xb5, + 0x5e, 0xf0, 0x00, 0x9e, 0xbd, 0x08, 0x13, 0x03, 0x27, 0x02, 0x20, 0x00, + 0xe0, 0xb5, 0x00, 0x9e, 0xcd, 0x08, 0x52, 0x08, 0x00, 0x1d, 0x45, 0x10, + 0x2f, 0x20, 0x08, 0x04, 0x2c, 0x72, 0x4c, 0x72, 0x9e, 0x09, 0x2f, 0x0f, + 0x10, 0x40, 0x75, 0x02, 0x20, 0x00, 0x20, 0x95, 0x01, 0x9e, 0xa6, 0xe0, + 0x10, 0x01, 0x29, 0x00, 0x6c, 0x72, 0x05, 0x9e, 0xac, 0xe0, 0xfe, 0x00, + 0x2c, 0x00, 0x2c, 0x76, 0x20, 0xb5, 0xd5, 0x02, 0x20, 0x00, 0x02, 0x1d, + 0xc5, 0x10, 0x00, 0x9e, 0xa1, 0x08, 0x52, 0x08, 0x00, 0x1d, 0x45, 0x10, + 0x2f, 0x20, 0x08, 0x04, 0x2c, 0x74, 0x4c, 0x72, 0x62, 0x09, 0x2f, 0x0f, + 0x10, 0x40, 0x20, 0x95, 0x4b, 0xf0, 0x00, 0x9e, 0xa1, 0x08, 0xd2, 0x09, + 0x0e, 0x9d, 0xdf, 0x08, 0xb3, 0x07, 0x07, 0xd9, 0x11, 0x02, 0x20, 0x00, + 0x00, 0x1d, 0x45, 0x10, 0x30, 0x9d, 0x3e, 0x0f, 0x2f, 0x0f, 0x0c, 0x71, + 0x10, 0xb5, 0xec, 0xb5, 0x80, 0x9e, 0x91, 0x0c, 0x92, 0x16, 0x5d, 0x02, + 0x20, 0x00, 0x00, 0x1d, 0x45, 0x10, 0x05, 0x9e, 0x93, 0x08, 0xf2, 0x09, + 0x0c, 0x70, 0x2c, 0x76, 0x4c, 0x71, 0x00, 0x1d, 0x85, 0x11, 0x1a, 0x09, + 0x2f, 0x0f, 0x02, 0x1d, 0x45, 0x11, 0xbe, 0xf0, 0x05, 0x9e, 0xa1, 0x08, + 0x72, 0x0b, 0x2c, 0x76, 0x20, 0xb5, 0xe1, 0xb5, 0x75, 0x02, 0x00, 0x00, + 0x05, 0x9e, 0xa7, 0xe0, 0x76, 0x02, 0x2b, 0x00, 0x0c, 0x70, 0x2c, 0x76, + 0x4c, 0x71, 0x00, 0x1d, 0x85, 0x11, 0xee, 0x08, 0x2f, 0x0f, 0x02, 0x1d, + 0x45, 0x10, 0xab, 0xf0, 0x05, 0x9e, 0xf3, 0x08, 0x72, 0x00, 0x2c, 0x76, + 0x20, 0xb5, 0x02, 0x1d, 0x85, 0x10, 0xd8, 0xf0, 0x05, 0x9e, 0x73, 0x08, + 0xf2, 0x09, 0x2c, 0x76, 0x20, 0xb5, 0x02, 0x1d, 0x05, 0x11, 0x4c, 0x71, + 0xc2, 0x08, 0x2f, 0x0f, 0x02, 0x40, 0x3b, 0x02, 0x20, 0x00, 0xed, 0xb5, + 0x05, 0x9e, 0x7d, 0x08, 0x72, 0x0b, 0x2c, 0x76, 0x20, 0xb5, 0x02, 0x1d, + 0x45, 0x11, 0xbf, 0xf0, 0x64, 0x9e, 0x7b, 0x0b, 0xf2, 0x09, 0x21, 0x95, + 0x34, 0x75, 0xe3, 0xf4, 0x00, 0x1d, 0x45, 0x11, 0xe0, 0xf0, 0x24, 0x9e, + 0x91, 0x09, 0x52, 0x08, 0x00, 0x1d, 0x45, 0x11, 0x7d, 0xf0, 0x02, 0x9e, + 0xa0, 0xe0, 0x02, 0x02, 0x2a, 0x00, 0x6c, 0x70, 0x0c, 0x70, 0x2c, 0x73, + 0x4c, 0x72, 0x60, 0xb5, 0xe3, 0xf0, 0x20, 0xb5, 0xef, 0xb5, 0xa3, 0xf0, + 0x02, 0x9d, 0x9d, 0x08, 0xf2, 0x00, 0x2c, 0x72, 0x20, 0xb5, 0x30, 0x40, + 0xea, 0xf0, 0x50, 0x78, 0x7d, 0x08, 0xb4, 0x03, 0x70, 0x78, 0x79, 0x08, + 0x95, 0x00, 0x0d, 0x9d, 0xe3, 0xe0, 0x70, 0x00, 0x29, 0x00, 0x4a, 0x20, + 0x80, 0x23, 0x8e, 0xe0, 0xdc, 0x06, 0xe9, 0xff, 0x00, 0x1d, 0x45, 0x11, + 0x10, 0x40, 0x6a, 0xf1, 0x04, 0x9d, 0x77, 0x08, 0x52, 0x01, 0x00, 0x1d, + 0x85, 0x10, 0x0e, 0x74, 0x7a, 0xf0, 0x02, 0x16, 0x48, 0x11, 0x78, 0x21, + 0x8b, 0x00, 0x7f, 0x20, 0x02, 0x18, 0x0b, 0x22, 0xc0, 0x82, 0x34, 0xf4, + 0x42, 0x9d, 0x65, 0x0a, 0xd3, 0x00, 0x45, 0x9d, 0x9d, 0x0a, 0xd2, 0x00, + 0xa0, 0xb9, 0x34, 0x72, 0x99, 0xf4, 0x00, 0x1d, 0xc5, 0x10, 0x98, 0xf0, + 0x00, 0x9e, 0x38, 0x60, 0x4f, 0x08, 0xf3, 0x00, 0x0c, 0x70, 0x2c, 0x75, + 0x4c, 0x72, 0xe0, 0xb5, 0x2b, 0xf0, 0x05, 0x9d, 0x67, 0x08, 0xf2, 0x00, + 0x70, 0x78, 0x00, 0x1d, 0xc5, 0x10, 0x20, 0xf1, 0x03, 0x9d, 0x8a, 0xe0, + 0x9a, 0xf6, 0x4a, 0x20, 0x40, 0x22, 0x00, 0x1d, 0x85, 0x10, 0x36, 0xf1, + 0x05, 0x9d, 0x71, 0x08, 0xf2, 0x00, 0x2c, 0x73, 0x20, 0xb5, 0x0e, 0x72, + 0x9c, 0xf0, 0x02, 0x9e, 0x75, 0x08, 0xf2, 0x09, 0x70, 0x78, 0x00, 0x1d, + 0xc5, 0x10, 0x40, 0xf0, 0x00, 0x1d, 0x85, 0x10, 0x6e, 0xf0, 0x0f, 0x9d, + 0x8c, 0x20, 0x42, 0x8d, 0x26, 0x01, 0x2b, 0x00, 0x0c, 0x70, 0x2c, 0x75, + 0x4c, 0x72, 0x00, 0x1d, 0x45, 0x10, 0x9e, 0x0f, 0xcf, 0x0e, 0xee, 0xb5, + 0x00, 0x95, 0x14, 0x71, 0x87, 0xf2, 0x0c, 0x70, 0x2c, 0x71, 0x4c, 0x72, + 0x81, 0xf0, 0x6b, 0x08, 0xd4, 0x02, 0x00, 0x1d, 0x05, 0x11, 0x0d, 0x9d, + 0xed, 0xb5, 0x49, 0x20, 0x50, 0x02, 0x38, 0xf0, 0x46, 0x9d, 0x71, 0x0a, + 0xf2, 0x00, 0x9b, 0x63, 0x97, 0x09, 0x11, 0x01, 0x00, 0x1d, 0x05, 0x11, + 0xed, 0xb5, 0x48, 0xf0, 0x70, 0x78, 0xbd, 0x08, 0x34, 0x03, 0x2c, 0x74, + 0x20, 0xb5, 0x0d, 0x9d, 0xed, 0xb5, 0x49, 0x20, 0x50, 0x02, 0x62, 0xf0, + 0xcb, 0x08, 0xd4, 0x02, 0x0e, 0x9d, 0xc7, 0x08, 0xb3, 0x02, 0x4a, 0x20, + 0x40, 0x22, 0x00, 0x1d, 0x05, 0x11, 0xed, 0xb5, 0x2c, 0x75, 0x4c, 0x72, + 0x36, 0x0f, 0xef, 0x0e, 0x02, 0x40, 0xee, 0xb5, 0x20, 0x95, 0x87, 0xe1, + 0xca, 0x21, 0x61, 0x00, 0x4c, 0x71, 0x02, 0x40, 0x4d, 0xf0, 0x04, 0x9e, + 0x13, 0x08, 0xd3, 0x09, 0x41, 0x9e, 0x02, 0x9e, 0x23, 0x9e, 0x58, 0x60, + 0x38, 0x60, 0x8f, 0x08, 0x53, 0x06, 0xe0, 0xb5, 0x65, 0x05, 0xcf, 0xff, + 0x42, 0x9e, 0x06, 0x16, 0x4b, 0x11, 0x01, 0x73, 0xc5, 0x9e, 0x7a, 0x62, + 0x00, 0x23, 0x8b, 0x10, 0x61, 0x76, 0x1f, 0x0e, 0xd2, 0x14, 0x0d, 0xe9, + 0x6b, 0x08, 0x32, 0x01, 0x0c, 0x70, 0xea, 0x0e, 0xef, 0x0e, 0x4c, 0x72, + 0x01, 0x95, 0x91, 0x08, 0x51, 0x01, 0xee, 0xb5, 0x47, 0xf0, 0xe0, 0xb5, + 0x0c, 0x70, 0x2c, 0x76, 0x4c, 0x72, 0xd2, 0x0e, 0xef, 0x0e, 0xf0, 0xb5, + 0x21, 0x95, 0x00, 0x95, 0x43, 0x08, 0x40, 0x00, 0x09, 0x09, 0x51, 0x01, + 0xee, 0xb5, 0x05, 0xf0, 0x07, 0x09, 0x11, 0x01, 0xed, 0xb5, 0x0c, 0x70, + 0x4c, 0x72, 0xb2, 0x0e, 0xcf, 0x0e, 0x20, 0x95, 0x0c, 0x70, 0x10, 0xf0, + 0x50, 0x78, 0x0d, 0x08, 0x15, 0x03, 0x08, 0x9d, 0x1b, 0x08, 0xd2, 0x02, + 0x2c, 0x75, 0x20, 0xb5, 0x0e, 0x9d, 0xee, 0xb5, 0x49, 0x20, 0x50, 0x03, + 0x2f, 0x20, 0x08, 0x04, 0x4c, 0x71, 0x8a, 0x0e, 0xcf, 0x0e, 0x26, 0x40, + 0x2d, 0x9d, 0x41, 0x68, 0x0c, 0x71, 0x7a, 0x0c, 0x2f, 0x0f, 0x00, 0x19, + 0x80, 0x20, 0x0d, 0xb5, 0x2e, 0x9d, 0x6e, 0x0c, 0x2f, 0x0f, 0x0c, 0x71, + 0x0e, 0xb5, 0x2f, 0x9d, 0x62, 0x0c, 0x2f, 0x0f, 0x0c, 0x71, 0x0f, 0xb5, + 0x2c, 0x9d, 0x5a, 0x0c, 0x2f, 0x0f, 0x0c, 0x71, 0x0c, 0xb5, 0xcc, 0xc6, + 0x07, 0x08, 0x11, 0x01, 0xed, 0xb5, 0xe1, 0xb5, 0xba, 0xf1, 0xe0, 0x78, + 0xea, 0xc2, 0x45, 0x90, 0x28, 0x47, 0x48, 0x43, 0x8c, 0x22, 0x04, 0x80, + 0x85, 0xf7, 0x24, 0x90, 0x8c, 0x21, 0xc3, 0x8f, 0x13, 0xf7, 0x40, 0x80, + 0x6c, 0x70, 0x1b, 0x0a, 0xf2, 0x02, 0x3f, 0xdd, 0x24, 0x90, 0x35, 0xdd, + 0xe3, 0xe1, 0x87, 0xf7, 0x06, 0x90, 0xf9, 0xe0, 0xa0, 0x00, 0x26, 0x00, + 0x23, 0xdd, 0x2c, 0x70, 0x4c, 0x70, 0xcd, 0x70, 0xac, 0xf0, 0x63, 0x90, + 0x8c, 0x23, 0x50, 0x85, 0x4a, 0x00, 0x0d, 0x00, 0x46, 0x90, 0xe4, 0xe2, + 0xa0, 0x00, 0x2d, 0x00, 0x08, 0xde, 0x25, 0xdd, 0x8c, 0x21, 0xc2, 0x85, + 0x99, 0xf7, 0x80, 0x80, 0x8c, 0x24, 0x02, 0x9e, 0xfa, 0x00, 0x29, 0x00, + 0xc8, 0xe2, 0xa2, 0x90, 0x8c, 0x25, 0x08, 0x9b, 0x34, 0x01, 0x2d, 0x00, + 0xb1, 0x40, 0xe2, 0xe3, 0xb2, 0x01, 0x2d, 0x00, 0x8c, 0x20, 0x81, 0xa8, + 0x56, 0x02, 0x2d, 0x00, 0xb9, 0xe3, 0x82, 0x02, 0x26, 0x00, 0x0d, 0xdd, + 0x2d, 0xde, 0x05, 0x03, 0x00, 0x00, 0x80, 0x80, 0x8c, 0x24, 0x97, 0x9e, + 0x7c, 0x00, 0x29, 0x00, 0xa2, 0x90, 0x2c, 0x71, 0x8b, 0x0d, 0x85, 0x1f, + 0x00, 0x00, 0x24, 0x10, 0x06, 0x90, 0xcd, 0x73, 0xc2, 0xe0, 0xd2, 0x00, + 0x2d, 0x00, 0x37, 0xda, 0xd3, 0x73, 0x00, 0x00, 0x7c, 0x0d, 0x2e, 0x01, + 0x2d, 0x00, 0x36, 0xda, 0x0b, 0xda, 0x8c, 0x25, 0x19, 0x94, 0x98, 0x01, + 0x26, 0x00, 0xcd, 0x72, 0x0c, 0xdb, 0x5d, 0x02, 0x20, 0x00, 0xcd, 0x75, + 0x51, 0x0a, 0xb3, 0x09, 0x2c, 0xde, 0x8c, 0x20, 0x82, 0x8c, 0x7c, 0x00, + 0x2d, 0x00, 0x28, 0xdd, 0x8f, 0xe2, 0x5c, 0x02, 0x2b, 0x00, 0x22, 0xde, + 0x17, 0xdd, 0x37, 0xf0, 0x20, 0x80, 0xcd, 0x76, 0x37, 0xdd, 0x8d, 0xe1, + 0x8c, 0xf6, 0x8c, 0x21, 0x02, 0x8b, 0x8a, 0x00, 0x29, 0x00, 0x39, 0xde, + 0x02, 0x90, 0xad, 0x72, 0x8c, 0x20, 0xc3, 0x8f, 0x02, 0xf7, 0x26, 0xde, + 0x81, 0x02, 0x00, 0x00, 0x3d, 0x0d, 0x85, 0x1f, 0x00, 0x00, 0xbd, 0x13, + 0x6c, 0x72, 0x35, 0xda, 0xad, 0x70, 0x40, 0xf0, 0xad, 0x75, 0x2a, 0xde, + 0x19, 0xf0, 0x3b, 0xda, 0x71, 0x0d, 0x85, 0x1f, 0x00, 0x00, 0x5d, 0x28, + 0xb9, 0x0d, 0x85, 0x1f, 0x00, 0x00, 0xec, 0x13, 0x8c, 0x23, 0x15, 0x9a, + 0x4c, 0x01, 0x26, 0x00, 0xcd, 0x73, 0x34, 0xdb, 0x07, 0xda, 0xad, 0x70, + 0x2c, 0x70, 0x26, 0xf0, 0x3c, 0xd9, 0x6c, 0x73, 0xad, 0x70, 0x74, 0xf1, + 0x13, 0xdd, 0x3b, 0x02, 0x00, 0x00, 0x98, 0x00, 0x2d, 0x00, 0x0a, 0xde, + 0x6c, 0x75, 0xad, 0x72, 0xbd, 0x0b, 0x84, 0x1f, 0x00, 0x00, 0xfe, 0x09, + 0x22, 0x90, 0x2f, 0x20, 0xc2, 0x02, 0xb1, 0x08, 0x45, 0x00, 0x27, 0xdb, + 0x54, 0xf0, 0xad, 0x70, 0x6c, 0x71, 0x2c, 0x70, 0x0a, 0xf0, 0x8c, 0x23, + 0x89, 0x86, 0x8a, 0x00, 0x26, 0x00, 0x2f, 0xde, 0xad, 0x70, 0x6c, 0x70, + 0x2c, 0x70, 0x4c, 0x76, 0xff, 0x01, 0x00, 0x00, 0xad, 0x70, 0x6c, 0x71, + 0x2c, 0x72, 0x4f, 0xf1, 0x30, 0xde, 0xad, 0x72, 0x7b, 0x0b, 0x84, 0x1f, + 0x00, 0x00, 0x3c, 0x0c, 0x12, 0x0b, 0x2f, 0x05, 0x61, 0x40, 0xc3, 0x43, + 0x46, 0x40, 0x00, 0x80, 0x0e, 0x0b, 0xef, 0x04, 0x4c, 0x70, 0x40, 0x28, + 0x82, 0x21, 0x10, 0x41, 0x40, 0x40, 0xfa, 0x0a, 0x2f, 0x05, 0x30, 0x40, + 0x00, 0x42, 0x20, 0x43, 0x22, 0x40, 0x86, 0x0c, 0x6f, 0x05, 0x02, 0x41, + 0x46, 0x00, 0x2c, 0x00, 0x29, 0xdb, 0x0a, 0xde, 0x20, 0xf0, 0xad, 0x70, + 0x6c, 0x76, 0xf6, 0xf0, 0xad, 0x70, 0x3b, 0xdb, 0x4c, 0x72, 0x27, 0xf1, + 0x6c, 0x71, 0xb9, 0x0b, 0x85, 0x1f, 0x00, 0x00, 0x8e, 0x08, 0x1f, 0xde, + 0x8c, 0x24, 0x43, 0x9b, 0x24, 0x01, 0x2b, 0x00, 0x4c, 0x72, 0x16, 0xde, + 0xad, 0x71, 0x2c, 0x70, 0xc3, 0xf0, 0x02, 0x90, 0x8c, 0x20, 0xce, 0x80, + 0xb2, 0x00, 0x26, 0x00, 0x2d, 0xda, 0x0e, 0xde, 0x57, 0xf0, 0x6c, 0x70, + 0x2c, 0x70, 0x4c, 0x72, 0xb7, 0xf0, 0x8c, 0x20, 0x03, 0xa7, 0xae, 0x00, + 0x2d, 0x00, 0x0d, 0xde, 0x9c, 0xe4, 0x5c, 0x01, 0x2b, 0x00, 0x27, 0xdd, + 0x10, 0xdd, 0xc7, 0xe2, 0x89, 0xf7, 0x8c, 0x21, 0x07, 0x83, 0x4a, 0x01, + 0x2d, 0x00, 0x11, 0xde, 0x14, 0xde, 0x8c, 0x20, 0x02, 0xa0, 0x40, 0x01, + 0x05, 0x00, 0x1f, 0xde, 0x0a, 0xdd, 0x9c, 0xf0, 0x8d, 0x08, 0x75, 0x0d, + 0x8c, 0x24, 0x43, 0x92, 0xa8, 0x00, 0x29, 0x00, 0x2f, 0x20, 0xc2, 0x02, + 0x3c, 0x26, 0xc1, 0x72, 0x00, 0x00, 0xfd, 0x09, 0x3c, 0x20, 0x40, 0x03, + 0x0b, 0x79, 0x71, 0xf4, 0x2d, 0xde, 0xdf, 0x0d, 0x85, 0x1f, 0x00, 0x00, + 0x3c, 0x0c, 0xad, 0x71, 0x0b, 0xdb, 0x85, 0xf0, 0x06, 0x90, 0xcc, 0xe0, + 0x68, 0x00, 0x2d, 0x00, 0x35, 0xda, 0x9b, 0x0b, 0x85, 0x0f, 0x00, 0x00, + 0x50, 0x16, 0x8c, 0x24, 0x8b, 0x90, 0xc2, 0x00, 0x2a, 0x00, 0x0e, 0xda, + 0x2f, 0xdb, 0x95, 0xf0, 0x8c, 0x24, 0x44, 0x9e, 0x4c, 0x00, 0x29, 0x00, + 0x09, 0xde, 0x02, 0x90, 0x26, 0xda, 0x8c, 0x20, 0xcd, 0x8f, 0x89, 0xf7, + 0x2a, 0xde, 0xad, 0x71, 0x2c, 0x70, 0x08, 0xda, 0x67, 0xf0, 0x2a, 0xde, + 0x11, 0xda, 0xad, 0x70, 0x6c, 0x70, 0x2c, 0x70, 0x61, 0xf0, 0xad, 0x74, + 0x06, 0xf0, 0x8c, 0x23, 0x02, 0x8b, 0x58, 0x00, 0x26, 0x00, 0xad, 0x72, + 0x34, 0xde, 0x56, 0xf0, 0x8c, 0x24, 0x43, 0x9d, 0x5c, 0x00, 0x2a, 0x00, + 0x31, 0xde, 0xad, 0x71, 0x6c, 0x72, 0x50, 0xf1, 0x08, 0xdb, 0x6d, 0xf0, + 0xad, 0x71, 0x6c, 0x76, 0x2c, 0x70, 0x09, 0xda, 0x49, 0xf0, 0x10, 0xde, + 0x1c, 0xdd, 0x44, 0xf0, 0x8c, 0x24, 0xc9, 0x9f, 0x5c, 0x00, 0x09, 0x00, + 0x8f, 0x0d, 0x85, 0x1f, 0x00, 0x00, 0xf8, 0x09, 0xd3, 0x73, 0x00, 0x00, + 0x32, 0x09, 0xa4, 0x00, 0x26, 0x00, 0x1d, 0xdb, 0xad, 0x72, 0x2c, 0x70, + 0x35, 0xf0, 0x0c, 0xdb, 0x33, 0xda, 0x51, 0xf0, 0xc3, 0xe2, 0x40, 0x00, + 0x26, 0x00, 0x07, 0xde, 0x07, 0xdd, 0x6c, 0x70, 0x2c, 0x70, 0x4c, 0x70, + 0x13, 0xde, 0x29, 0xf0, 0x8c, 0x24, 0x85, 0x9f, 0x5b, 0xf6, 0x07, 0xdb, + 0x2e, 0xda, 0xad, 0x71, 0x2c, 0x70, 0xcd, 0x73, 0x1f, 0xf0, 0x0a, 0xde, + 0x29, 0xdb, 0xad, 0x71, 0x19, 0xf0, 0x49, 0x0d, 0xe5, 0x10, 0x15, 0xdb, + 0x27, 0xda, 0x35, 0xf0, 0x12, 0xdb, 0x1e, 0xda, 0xad, 0x72, 0x32, 0xf0, + 0x8c, 0x21, 0x5f, 0x8c, 0x5c, 0xf7, 0xad, 0x75, 0x27, 0xde, 0x4c, 0x71, + 0xa8, 0xf1, 0x8c, 0x24, 0x49, 0x9a, 0x59, 0xf6, 0x1f, 0xdb, 0x0f, 0xda, + 0x23, 0xf0, 0x0d, 0xdd, 0x6c, 0x70, 0x2c, 0x70, 0x4c, 0x70, 0xa0, 0xb7, + 0x61, 0xb7, 0x22, 0xb7, 0x43, 0xb7, 0xc4, 0xb7, 0xca, 0xc6, 0xa9, 0x05, + 0xef, 0xff, 0x2d, 0xdb, 0x13, 0xda, 0x28, 0xdb, 0xad, 0x70, 0x15, 0xf0, + 0x1e, 0xda, 0x08, 0xdd, 0x8e, 0xf1, 0x1b, 0x0b, 0x85, 0x0f, 0x00, 0x00, + 0xbd, 0x0e, 0x14, 0xdb, 0x26, 0xda, 0x09, 0xf0, 0xcd, 0x71, 0x33, 0xda, + 0x83, 0x05, 0xef, 0xff, 0x6c, 0x75, 0x13, 0xda, 0x28, 0xdb, 0xad, 0x70, + 0x2c, 0x70, 0x6b, 0x04, 0xcf, 0xff, 0xe0, 0x78, 0xe6, 0xc3, 0xcb, 0x46, + 0x80, 0x00, 0x38, 0x3b, 0x01, 0x1e, 0x03, 0x10, 0x80, 0x8e, 0x9d, 0x0c, + 0x30, 0x10, 0xa4, 0xc1, 0x95, 0x0a, 0x10, 0x00, 0x91, 0x0b, 0x15, 0x01, + 0x40, 0x80, 0xc3, 0x43, 0xcc, 0x3d, 0xcd, 0xcc, 0xcb, 0x45, 0x80, 0x00, + 0xe8, 0x3a, 0x00, 0x32, 0xc2, 0x00, 0x40, 0xa5, 0x41, 0x80, 0x00, 0x32, + 0xc2, 0x00, 0x41, 0xa5, 0x02, 0x80, 0xc3, 0x42, 0x79, 0x3d, 0x23, 0xdb, + 0x00, 0x30, 0xc0, 0x00, 0x02, 0xa5, 0x00, 0x81, 0x00, 0x30, 0x80, 0x00, + 0xbf, 0xb8, 0x40, 0xc0, 0x01, 0x81, 0x00, 0x30, 0x80, 0x00, 0xbf, 0xb8, + 0x41, 0xc0, 0x62, 0x81, 0x80, 0xc0, 0x2c, 0x70, 0x00, 0x33, 0x83, 0x00, + 0x4c, 0x73, 0xbf, 0xbb, 0xda, 0x0c, 0x6f, 0x0a, 0x42, 0xc3, 0x42, 0x08, + 0x20, 0x00, 0x40, 0x24, 0xc1, 0x33, 0x0f, 0x14, 0x82, 0x30, 0xbc, 0x4d, + 0xaa, 0x09, 0x20, 0x00, 0xa1, 0x40, 0xc3, 0x43, 0x80, 0x00, 0x11, 0x13, + 0x24, 0x85, 0x45, 0x85, 0xe0, 0x8b, 0x86, 0x85, 0x01, 0xae, 0x1c, 0x4d, + 0x2c, 0xa5, 0x4d, 0xa5, 0xe2, 0xae, 0x41, 0x8b, 0x20, 0x80, 0x8e, 0xa5, + 0x4c, 0xab, 0xc6, 0x08, 0xef, 0x0a, 0x2b, 0xa5, 0x0c, 0x70, 0xc6, 0xc7, + 0xe8, 0xc2, 0xcb, 0x45, 0x80, 0x00, 0xe4, 0x3a, 0xc0, 0x85, 0x30, 0x40, + 0x08, 0x47, 0x80, 0x26, 0x0c, 0x1b, 0x42, 0x86, 0x00, 0x41, 0x12, 0x0e, + 0xef, 0x04, 0x40, 0x40, 0x54, 0xf6, 0x00, 0x86, 0x06, 0x0e, 0xef, 0x04, + 0xe1, 0x41, 0x53, 0xf6, 0x01, 0x86, 0xfe, 0x0d, 0xef, 0x04, 0xe1, 0x41, + 0x40, 0x00, 0x0a, 0x00, 0x00, 0x18, 0x03, 0x21, 0x00, 0x85, 0x80, 0x20, + 0x0d, 0x02, 0x00, 0x90, 0x14, 0xa5, 0x0f, 0xf0, 0x00, 0x18, 0x43, 0x20, + 0x03, 0xf0, 0x00, 0x18, 0x83, 0x20, 0x13, 0x85, 0x54, 0x85, 0x29, 0x68, + 0x09, 0x6a, 0x33, 0xa5, 0x0d, 0x08, 0x32, 0x00, 0x14, 0xa5, 0x00, 0x18, + 0x03, 0x21, 0x06, 0xf0, 0x09, 0x09, 0x12, 0x00, 0x00, 0x18, 0xc3, 0x20, + 0x0c, 0x70, 0xc8, 0xc6, 0x00, 0x18, 0xc3, 0x20, 0x00, 0x85, 0x80, 0x20, + 0x8d, 0x01, 0x20, 0x90, 0x14, 0x85, 0x33, 0xa5, 0x04, 0x77, 0xec, 0xf1, + 0xc3, 0x41, 0x80, 0x00, 0x11, 0x13, 0x20, 0x89, 0x20, 0xa8, 0xe0, 0x7f, + 0x0c, 0x70, 0xe0, 0x78, 0xc3, 0x41, 0x80, 0x00, 0x1c, 0x13, 0x20, 0x89, + 0x20, 0xa8, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, 0xc3, 0x41, 0x80, 0x00, + 0xa8, 0x3e, 0x40, 0x81, 0x00, 0x43, 0x40, 0xa0, 0x01, 0x81, 0x01, 0xa3, + 0x22, 0x81, 0x0c, 0x70, 0xe0, 0x7f, 0x22, 0xa3, 0xe8, 0xc3, 0xa6, 0xc1, + 0xd3, 0x40, 0x80, 0x00, 0x3c, 0x3b, 0x2c, 0x70, 0xc3, 0x43, 0x80, 0x00, + 0xec, 0x3e, 0xcb, 0x46, 0x80, 0x00, 0x98, 0x3e, 0x7f, 0xdc, 0x00, 0x18, + 0x00, 0x20, 0x20, 0xb3, 0x2c, 0xab, 0x22, 0xa3, 0x22, 0xb3, 0x23, 0xb3, + 0x04, 0x1e, 0x52, 0x10, 0xcb, 0x47, 0x80, 0x00, 0xf8, 0x12, 0x17, 0xbc, + 0x18, 0xda, 0xc1, 0x40, 0x8a, 0xa6, 0x28, 0x45, 0x21, 0xa7, 0xee, 0x0a, + 0xef, 0x05, 0x8b, 0xa6, 0x0c, 0x71, 0xc3, 0x41, 0x00, 0x00, 0x30, 0x75, + 0xa4, 0xb7, 0xa5, 0xb7, 0x0e, 0x1f, 0x05, 0x13, 0x0c, 0xaf, 0x10, 0xaf, + 0x25, 0xa7, 0x4a, 0x24, 0xc0, 0x70, 0x54, 0x26, 0x00, 0x18, 0xa8, 0x20, + 0x40, 0x01, 0x04, 0x18, 0x11, 0x00, 0x4a, 0x24, 0x80, 0x72, 0xc3, 0x40, + 0x80, 0x00, 0x70, 0x3e, 0xad, 0x70, 0xa8, 0x20, 0x40, 0x01, 0x04, 0x18, + 0x50, 0x03, 0x82, 0x0f, 0xaf, 0x0a, 0x38, 0x4e, 0x3f, 0xda, 0x18, 0xba, + 0x70, 0x86, 0x91, 0x86, 0xf2, 0x86, 0xad, 0xa6, 0xae, 0xa6, 0xaf, 0xa6, + 0x40, 0xc2, 0x41, 0xc2, 0x06, 0x42, 0xcb, 0x45, 0x34, 0x3f, 0xf4, 0xfd, + 0x40, 0x20, 0x00, 0x21, 0x80, 0xc1, 0x55, 0x22, 0xc2, 0x0e, 0x42, 0xc5, + 0x43, 0xc3, 0x44, 0xc4, 0x32, 0x0b, 0x20, 0x00, 0x45, 0xc7, 0x0c, 0x70, + 0xc8, 0xc7, 0xe0, 0x78, 0xe2, 0xc2, 0x80, 0x80, 0xc3, 0x43, 0x80, 0x00, + 0x9c, 0x3e, 0x80, 0xa3, 0x81, 0x80, 0x81, 0xa3, 0x02, 0x80, 0xcb, 0x44, + 0x80, 0x00, 0xf8, 0x12, 0xb0, 0x8c, 0x02, 0xa3, 0x00, 0x81, 0x06, 0xa3, + 0x01, 0x81, 0x07, 0xa3, 0x02, 0x81, 0x08, 0xa3, 0x03, 0x81, 0x58, 0xac, + 0x0b, 0x0d, 0x71, 0x10, 0x09, 0xa3, 0xbe, 0x09, 0x00, 0x00, 0xcb, 0x45, + 0x80, 0x00, 0xf4, 0x3e, 0x02, 0x8d, 0x04, 0xe8, 0x5a, 0x0e, 0xcf, 0x0d, + 0x01, 0x8d, 0x04, 0xe8, 0x42, 0x08, 0x00, 0x00, 0x20, 0x8d, 0xc3, 0x40, + 0x80, 0x00, 0x3c, 0x3b, 0x17, 0x09, 0xb0, 0x01, 0xad, 0x70, 0x19, 0x09, + 0x90, 0x00, 0x1d, 0x09, 0x10, 0x01, 0x8f, 0xe9, 0xe2, 0x08, 0x00, 0x01, + 0x0b, 0xf0, 0xba, 0x0e, 0xc0, 0x00, 0x09, 0xf0, 0x72, 0x0f, 0xc0, 0x00, + 0xad, 0x71, 0x05, 0xf0, 0x92, 0x08, 0x00, 0x01, 0xad, 0x71, 0xf6, 0x08, + 0x00, 0x00, 0xa1, 0x40, 0xc2, 0xc6, 0xe0, 0x78, 0xf1, 0xc0, 0x2c, 0x70, + 0xc3, 0x40, 0x80, 0x00, 0xf4, 0x3e, 0x20, 0xa8, 0x43, 0x88, 0xc3, 0x43, + 0x80, 0x00, 0xfc, 0x12, 0x21, 0xa8, 0x20, 0xa3, 0x06, 0xea, 0xc3, 0x40, + 0x80, 0x00, 0x3c, 0x3b, 0x42, 0x09, 0x00, 0x01, 0xd1, 0xc0, 0xe0, 0x7f, + 0x0c, 0x70, 0xe0, 0x78, 0xf1, 0xc0, 0xa3, 0xc1, 0xc3, 0x40, 0x80, 0x00, + 0x3c, 0x3b, 0x04, 0x10, 0x01, 0x04, 0x54, 0x21, 0x82, 0x0b, 0x4a, 0x24, + 0xc0, 0x70, 0x80, 0xc1, 0xa8, 0x20, 0x80, 0x01, 0x1c, 0x12, 0x03, 0x04, + 0x04, 0x19, 0xd0, 0x00, 0x5a, 0x0e, 0x2f, 0x0e, 0x80, 0xc1, 0xc3, 0x40, + 0x80, 0x00, 0xf4, 0x3e, 0x20, 0x88, 0x0b, 0x09, 0x11, 0x01, 0x00, 0x18, + 0x83, 0x00, 0xa3, 0xc0, 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, + 0xe8, 0xc3, 0xa6, 0xc1, 0x40, 0x80, 0xcb, 0x45, 0x80, 0x00, 0xa8, 0x3e, + 0xcb, 0x47, 0x80, 0x00, 0x3c, 0x3b, 0x40, 0xa5, 0x61, 0x80, 0x40, 0x27, + 0x10, 0x11, 0x80, 0xc1, 0x61, 0xa5, 0x82, 0x80, 0x82, 0xa5, 0xc3, 0x80, + 0x02, 0x40, 0x40, 0xc2, 0x41, 0xc3, 0x42, 0xc4, 0x02, 0x0b, 0x2f, 0x0e, + 0xc7, 0xa5, 0x02, 0x40, 0x5a, 0x0b, 0x20, 0x00, 0xc1, 0x41, 0x00, 0x87, + 0x56, 0x20, 0x80, 0x0e, 0x4a, 0x24, 0xc0, 0x70, 0x83, 0xc1, 0xa8, 0x20, + 0xc0, 0x01, 0x1c, 0x10, 0x02, 0x04, 0x04, 0x19, 0x90, 0x00, 0x83, 0xc1, + 0xb2, 0x0d, 0x2f, 0x0e, 0x02, 0x40, 0xc3, 0x43, 0x80, 0x00, 0xf4, 0x3e, + 0x00, 0x8b, 0x88, 0xe8, 0x00, 0xc2, 0x01, 0xc1, 0x02, 0xc0, 0x4a, 0xa5, + 0x2b, 0xa5, 0x0c, 0xa5, 0x0c, 0x70, 0x04, 0x1b, 0x43, 0x00, 0xc8, 0xc7, + 0xe8, 0xc3, 0xa1, 0xc1, 0xc3, 0x40, 0x80, 0x00, 0x3c, 0x3b, 0x04, 0x10, + 0x0e, 0x04, 0x56, 0x0d, 0x2f, 0x0e, 0x80, 0xc1, 0xcb, 0x45, 0x80, 0x00, + 0xf8, 0x12, 0xfb, 0x8d, 0x97, 0xef, 0x00, 0xc0, 0x23, 0x86, 0x1e, 0x0b, + 0xef, 0x04, 0x10, 0x40, 0x43, 0xf6, 0x0c, 0x73, 0x10, 0xf0, 0x22, 0x86, + 0x0e, 0x0b, 0xef, 0x04, 0x02, 0x40, 0x44, 0xf6, 0x0c, 0x72, 0x0a, 0xf0, + 0x21, 0x86, 0x02, 0x0b, 0xef, 0x04, 0x02, 0x40, 0x43, 0xf6, 0x0c, 0x71, + 0x02, 0xf0, 0x0c, 0x70, 0x3c, 0x8d, 0x19, 0x09, 0x71, 0x00, 0x19, 0xad, + 0x2c, 0x8d, 0x1a, 0xad, 0x0a, 0xe9, 0x15, 0x08, 0xd1, 0x00, 0x1c, 0x1d, + 0x03, 0x10, 0x0b, 0xf0, 0x07, 0xef, 0x1a, 0x1d, 0x03, 0x10, 0x07, 0xf0, + 0x1c, 0x1d, 0x43, 0x10, 0x03, 0xf0, 0x1a, 0x1d, 0xc3, 0x10, 0x0c, 0x70, + 0xc8, 0xc7, 0xe0, 0x78, 0xe2, 0xc3, 0xa6, 0xc1, 0xcb, 0x45, 0x80, 0x00, + 0x40, 0x3b, 0x83, 0xc1, 0x1e, 0x0a, 0x2f, 0x0e, 0xa1, 0x40, 0x80, 0xc1, + 0x3a, 0x0a, 0x2f, 0x0e, 0xa1, 0x40, 0x01, 0xc0, 0x00, 0xc1, 0x02, 0xc2, + 0x00, 0x30, 0x03, 0x00, 0x00, 0x31, 0x40, 0x00, 0x00, 0x32, 0x81, 0x00, + 0x01, 0x30, 0xc0, 0x00, 0x01, 0x30, 0x4b, 0x80, 0x22, 0xf2, 0xc3, 0x40, + 0x80, 0x00, 0x9c, 0x3e, 0x04, 0xc1, 0x41, 0x80, 0x03, 0xc3, 0x80, 0x80, + 0x02, 0x32, 0x42, 0x00, 0x22, 0x80, 0x05, 0xc5, 0x02, 0x34, 0xc0, 0x10, + 0x02, 0x31, 0x41, 0x03, 0x00, 0x32, 0x82, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x31, 0x41, 0x00, 0x01, 0x30, 0x80, 0x00, 0x01, 0x30, 0x40, 0x00, + 0x00, 0x38, 0xc0, 0x02, 0x02, 0x36, 0x01, 0x70, 0x80, 0x3f, 0x00, 0x00, + 0xbf, 0xb9, 0x05, 0xf0, 0xc3, 0x41, 0xc8, 0x42, 0x00, 0x00, 0xc3, 0x42, + 0x80, 0x00, 0x18, 0x13, 0x0c, 0x70, 0x20, 0xa2, 0xc2, 0xc7, 0xe0, 0x78, + 0xea, 0xc3, 0xa1, 0xc1, 0xcb, 0x46, 0x80, 0x00, 0xf8, 0x12, 0x10, 0x8e, + 0xad, 0x70, 0xd3, 0x41, 0x80, 0x00, 0x18, 0x13, 0x11, 0xe8, 0x00, 0x11, + 0x0f, 0x20, 0xc3, 0x41, 0x96, 0x43, 0x00, 0x00, 0x16, 0x0a, 0xef, 0x04, + 0xe1, 0x40, 0x1b, 0x8e, 0xad, 0x70, 0xca, 0x25, 0x69, 0x10, 0x1b, 0xe8, + 0x3f, 0xd9, 0x18, 0xb9, 0x19, 0xf0, 0xcb, 0x47, 0x80, 0x00, 0x3c, 0x3b, + 0xc3, 0x41, 0x80, 0x00, 0x9c, 0x3e, 0x80, 0xc2, 0x04, 0x6f, 0x4e, 0x0d, + 0xef, 0x0d, 0x30, 0x40, 0x00, 0xc1, 0x30, 0x18, 0x40, 0x20, 0x00, 0x87, + 0xe2, 0x09, 0xef, 0x04, 0x00, 0x80, 0xca, 0x25, 0x6b, 0x10, 0xa1, 0x40, + 0x09, 0xf0, 0x7f, 0xd9, 0x17, 0xb9, 0xd2, 0x09, 0xef, 0x04, 0xe1, 0x40, + 0x0c, 0x70, 0xca, 0x20, 0x69, 0x00, 0x05, 0xed, 0x0e, 0x1e, 0x05, 0x10, + 0x0c, 0xf0, 0x27, 0x96, 0x24, 0x71, 0x27, 0xb6, 0x30, 0x79, 0x11, 0x09, + 0x54, 0x03, 0x0e, 0x1e, 0x05, 0x13, 0x04, 0x19, 0x03, 0x20, 0x04, 0xf0, + 0x04, 0x19, 0x43, 0x20, 0x1b, 0xae, 0xa1, 0x40, 0xca, 0xc7, 0xe0, 0x78, + 0xc3, 0x40, 0x80, 0x00, 0x20, 0x13, 0x40, 0x80, 0x0c, 0x70, 0xe0, 0x7f, + 0x40, 0xa1, 0xe0, 0x78, 0xe6, 0xc3, 0xa9, 0xc1, 0x40, 0x20, 0x0c, 0x03, + 0x48, 0x45, 0x08, 0x46, 0x20, 0x40, 0x4c, 0x76, 0x6c, 0x71, 0x4a, 0x0c, + 0x6f, 0x0a, 0x81, 0x41, 0x55, 0x26, 0x41, 0x1b, 0x4c, 0x76, 0x6c, 0x76, + 0x3a, 0x0c, 0x6f, 0x0a, 0xa1, 0x40, 0xcc, 0x4e, 0x4c, 0x76, 0x6c, 0x76, + 0x2e, 0x0c, 0x6f, 0x0a, 0xa1, 0x40, 0x8a, 0x20, 0x0c, 0x03, 0x2c, 0x73, + 0x4c, 0x71, 0x6c, 0x70, 0x7e, 0x0c, 0x6f, 0x0a, 0xd8, 0x60, 0x8a, 0x20, + 0x0c, 0x06, 0x2c, 0x73, 0x4c, 0x71, 0x6c, 0x70, 0x6e, 0x0c, 0x6f, 0x0a, + 0xd8, 0x60, 0x8a, 0x20, 0x07, 0x0b, 0x2c, 0x76, 0x4c, 0x76, 0x6c, 0x70, + 0x5e, 0x0c, 0x6f, 0x0a, 0xd8, 0x60, 0x8a, 0x20, 0x0b, 0x01, 0x1f, 0x66, + 0x2c, 0x73, 0x4c, 0x76, 0x6c, 0x70, 0x4e, 0x0c, 0x6f, 0x0a, 0xe1, 0x40, + 0x80, 0xc0, 0xa2, 0x0b, 0x6f, 0x0a, 0x2c, 0x73, 0x8c, 0x73, 0x80, 0xc0, + 0x4c, 0x70, 0x6c, 0x70, 0x80, 0x45, 0xcc, 0x76, 0xee, 0x0b, 0x6f, 0x0a, + 0xe1, 0x41, 0x6c, 0x73, 0x80, 0xc0, 0x4c, 0x70, 0x60, 0x44, 0x60, 0x45, + 0xcc, 0x76, 0xde, 0x0b, 0x6f, 0x0a, 0xe1, 0x41, 0x2c, 0x76, 0x4c, 0x71, + 0x6c, 0x76, 0x1e, 0x0d, 0x6f, 0x0a, 0xa1, 0x40, 0xc9, 0x1e, 0x18, 0x10, + 0x2c, 0x76, 0x4c, 0x71, 0x6c, 0x73, 0x0e, 0x0d, 0x6f, 0x0a, 0xa1, 0x40, + 0xca, 0x1e, 0x18, 0x10, 0xc3, 0x41, 0x80, 0x00, 0x20, 0x13, 0xc6, 0x08, + 0x20, 0x00, 0xc1, 0x40, 0x80, 0x26, 0x0c, 0x1b, 0x0c, 0x70, 0x00, 0x1e, + 0x43, 0x10, 0xc6, 0xc7, 0xe8, 0xc2, 0x08, 0x47, 0x8a, 0x24, 0x05, 0x11, + 0x6c, 0x76, 0xfc, 0x64, 0x30, 0x40, 0x40, 0x41, 0x55, 0x20, 0x40, 0x0b, + 0x60, 0x44, 0xda, 0x0a, 0x6f, 0x0a, 0x81, 0x42, 0x8a, 0x21, 0x07, 0x05, + 0x3d, 0x67, 0x1c, 0x4f, 0x4c, 0x71, 0x6c, 0x76, 0x5a, 0x0b, 0x6f, 0x0a, + 0xa1, 0x41, 0x8a, 0x26, 0x0b, 0x11, 0x8c, 0x73, 0xfe, 0x66, 0x4c, 0x70, + 0x6c, 0x70, 0x80, 0x45, 0xcc, 0x76, 0x02, 0x40, 0x5e, 0x0b, 0x6f, 0x0a, + 0xc1, 0x41, 0x8a, 0x20, 0x0c, 0x06, 0x1a, 0x67, 0x6c, 0x73, 0x8c, 0x76, + 0xac, 0x71, 0xc1, 0x40, 0x26, 0x0a, 0x6f, 0x0a, 0xa1, 0x41, 0xc3, 0x41, + 0x80, 0x00, 0x20, 0x13, 0x52, 0x08, 0x20, 0x00, 0xe1, 0x40, 0x0c, 0x70, + 0xc8, 0xc6, 0xe0, 0x78, 0x55, 0x20, 0x42, 0x0b, 0x24, 0xe0, 0x4a, 0x24, + 0xc0, 0x78, 0xa8, 0x20, 0xc0, 0x01, 0x04, 0x10, 0x01, 0x04, 0x04, 0x1a, + 0x50, 0x00, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, 0xe2, 0xc0, 0x00, 0x31, + 0x83, 0x0f, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x31, 0x8d, 0x0f, + 0x34, 0x3f, 0xf4, 0xfd, 0xcb, 0x44, 0x80, 0x00, 0x20, 0x13, 0x63, 0xa2, + 0x64, 0xa2, 0xa5, 0xa2, 0x0c, 0x70, 0x20, 0xa4, 0xc2, 0xc4, 0xe0, 0x78, + 0xe2, 0xc2, 0x63, 0x80, 0x44, 0x80, 0x05, 0x80, 0x00, 0x33, 0xc3, 0x00, + 0x28, 0x45, 0x00, 0x32, 0x8c, 0x00, 0x00, 0x30, 0x02, 0x00, 0x01, 0x33, + 0x00, 0x03, 0x76, 0x0c, 0xef, 0x04, 0x01, 0x30, 0x80, 0x00, 0x00, 0xa5, + 0x0c, 0x70, 0xc2, 0xc6, 0xfa, 0xc2, 0xfc, 0x1c, 0xc8, 0xb6, 0x82, 0x24, + 0x02, 0x32, 0xd3, 0x41, 0x80, 0x00, 0x9c, 0x35, 0x08, 0x11, 0x8c, 0x20, + 0x48, 0x45, 0x30, 0x46, 0x10, 0x43, 0x4c, 0x1c, 0xc0, 0x31, 0x44, 0x1c, + 0x80, 0x31, 0x50, 0x1c, 0x00, 0x31, 0x4d, 0xc3, 0x83, 0xec, 0x08, 0x19, + 0x42, 0x21, 0xd3, 0x40, 0x80, 0x00, 0x90, 0x1b, 0x00, 0x10, 0x81, 0x20, + 0x0c, 0x70, 0xcb, 0x46, 0x80, 0x00, 0x34, 0x36, 0x48, 0xc0, 0x47, 0xc0, + 0x46, 0xc0, 0xf3, 0x09, 0x30, 0x00, 0x45, 0xc0, 0x08, 0x13, 0x08, 0x20, + 0x04, 0x13, 0x0b, 0x20, 0x00, 0x13, 0x0c, 0x20, 0xc3, 0x40, 0x83, 0x3a, + 0x6f, 0x12, 0x55, 0x21, 0x4f, 0x29, 0x62, 0x86, 0x41, 0x86, 0x20, 0x86, + 0x00, 0x34, 0x05, 0x10, 0x40, 0x24, 0x09, 0x35, 0x00, 0x33, 0x06, 0x10, + 0x8c, 0x70, 0x00, 0x30, 0x07, 0x10, 0x00, 0x87, 0x26, 0x0a, 0xaf, 0x0a, + 0x00, 0x1c, 0x40, 0x32, 0x02, 0x86, 0x0e, 0x43, 0x1e, 0x41, 0xd3, 0x45, + 0x80, 0x3f, 0x00, 0x00, 0x06, 0xc2, 0x1c, 0x14, 0x0b, 0x30, 0x10, 0x10, + 0x0c, 0x20, 0x52, 0xc0, 0x02, 0x35, 0xc0, 0x20, 0x08, 0x10, 0x14, 0x20, + 0x00, 0x33, 0x48, 0x00, 0x50, 0x25, 0xd8, 0x25, 0x00, 0x30, 0x82, 0x00, + 0x04, 0x16, 0x1b, 0x10, 0x00, 0x33, 0x01, 0x03, 0x00, 0x16, 0x19, 0x10, + 0x00, 0x30, 0xc0, 0x02, 0x00, 0x17, 0x17, 0x10, 0x01, 0x31, 0x00, 0x00, + 0x01, 0x30, 0x92, 0x10, 0x00, 0x30, 0x01, 0x06, 0x0c, 0x18, 0x80, 0x24, + 0x10, 0x18, 0x00, 0x20, 0x00, 0x34, 0x40, 0x20, 0x1a, 0x0e, 0xaf, 0x04, + 0x40, 0xc7, 0x4a, 0x0e, 0x0f, 0x05, 0x6a, 0x0d, 0x8f, 0x04, 0x4f, 0x20, + 0xc1, 0x37, 0x00, 0x32, 0x41, 0x20, 0x08, 0x47, 0x00, 0x31, 0x01, 0x05, + 0xfe, 0x0d, 0xaf, 0x04, 0x20, 0x40, 0x2e, 0x0e, 0x0f, 0x05, 0x4e, 0x0d, + 0x8f, 0x04, 0x00, 0x37, 0xc2, 0x13, 0x10, 0x42, 0x00, 0x30, 0x01, 0x00, + 0x02, 0x35, 0x80, 0x20, 0x52, 0x0b, 0xef, 0x04, 0x02, 0x30, 0x40, 0x00, + 0x48, 0x14, 0x07, 0x30, 0x6c, 0x70, 0xe1, 0x41, 0x42, 0x42, 0x0a, 0x24, + 0xc0, 0x05, 0x0a, 0x25, 0x40, 0x06, 0x0a, 0x0f, 0x6f, 0x0a, 0x0a, 0x26, + 0xc0, 0x06, 0xcb, 0x47, 0x80, 0x00, 0x90, 0x36, 0x14, 0x8f, 0x14, 0x70, + 0xb8, 0x02, 0x01, 0x00, 0xc8, 0x14, 0x00, 0x30, 0x14, 0x70, 0x87, 0xf2, + 0x00, 0x85, 0xc3, 0x42, 0x79, 0x3d, 0x23, 0xdb, 0x00, 0x30, 0x99, 0x00, + 0x08, 0x1c, 0x40, 0x36, 0x01, 0x85, 0x00, 0x30, 0x95, 0x00, 0x10, 0x8f, + 0x0c, 0x1c, 0x40, 0x35, 0x22, 0x85, 0x00, 0x31, 0x94, 0x00, 0x13, 0x08, + 0xb0, 0x00, 0x10, 0x1c, 0x00, 0x35, 0x0c, 0x17, 0x17, 0x10, 0x14, 0x71, + 0x10, 0xf0, 0x2a, 0x09, 0xef, 0x04, 0xcc, 0x14, 0x00, 0x30, 0x00, 0x30, + 0x8d, 0x0f, 0x86, 0x35, 0xbd, 0x37, 0x22, 0x87, 0xa1, 0x40, 0x4a, 0x0e, + 0xaf, 0x04, 0x30, 0x47, 0xca, 0x27, 0x4b, 0x23, 0x40, 0x26, 0x18, 0x17, + 0x6a, 0x86, 0x49, 0x86, 0x28, 0x86, 0x07, 0x40, 0x54, 0x24, 0x12, 0x3f, + 0xcb, 0x45, 0x19, 0x3f, 0x9a, 0x99, 0x0a, 0x24, 0x40, 0x06, 0x0a, 0x25, + 0x40, 0x05, 0x0a, 0x26, 0x00, 0x05, 0x0a, 0x27, 0xc0, 0x05, 0x04, 0x1c, + 0x80, 0x34, 0x7e, 0x0d, 0xaf, 0x0a, 0x40, 0xc5, 0x9e, 0xc1, 0x10, 0xda, + 0xde, 0x0b, 0xaf, 0x05, 0x03, 0x40, 0x6a, 0x86, 0x49, 0x86, 0x28, 0x86, + 0x07, 0x40, 0x7e, 0x0b, 0xaf, 0x0a, 0x0a, 0x24, 0x00, 0x06, 0x55, 0x21, + 0x54, 0x29, 0x62, 0x86, 0x41, 0x86, 0x20, 0x86, 0x86, 0x40, 0x10, 0x14, + 0x06, 0x30, 0x0c, 0x14, 0x05, 0x30, 0x08, 0x14, 0x04, 0x30, 0x0a, 0x27, + 0xc0, 0x05, 0x04, 0x1c, 0x80, 0x34, 0x3e, 0x0d, 0xaf, 0x0a, 0x40, 0xc5, + 0x9e, 0xc1, 0x10, 0xda, 0x9e, 0x0b, 0xaf, 0x05, 0x82, 0x40, 0x00, 0x11, + 0x01, 0x21, 0x4a, 0x08, 0x6f, 0x0b, 0x82, 0xc0, 0x02, 0x19, 0x02, 0x20, + 0x02, 0xc1, 0x00, 0x97, 0xbf, 0xb9, 0x2f, 0x38, 0x03, 0x00, 0xa6, 0x0d, + 0xaf, 0x04, 0x10, 0x42, 0xad, 0x71, 0x10, 0xf6, 0x03, 0xc0, 0x42, 0x41, + 0x9e, 0x0d, 0xaf, 0x04, 0xbf, 0xb8, 0x0a, 0xf6, 0x04, 0xc0, 0x42, 0x41, + 0x92, 0x0d, 0xaf, 0x04, 0xbf, 0xb8, 0xad, 0x70, 0xca, 0x25, 0x69, 0x10, + 0xb5, 0xaf, 0xc4, 0x14, 0x0d, 0x30, 0x14, 0xc0, 0x51, 0x08, 0x51, 0x00, + 0x0d, 0xc0, 0xa6, 0xe8, 0x13, 0xc0, 0x24, 0xe8, 0x18, 0x10, 0x80, 0x20, + 0x20, 0xe8, 0x12, 0x1f, 0x43, 0x10, 0x66, 0x40, 0xcb, 0x44, 0x83, 0x3a, + 0x6f, 0x12, 0x82, 0xc2, 0x00, 0x30, 0x00, 0x03, 0x4e, 0xc0, 0x6e, 0x40, + 0x00, 0x30, 0x01, 0x03, 0x9a, 0xc0, 0x4f, 0xc1, 0x76, 0x43, 0x8e, 0xc1, + 0x00, 0x33, 0x0c, 0x03, 0xc3, 0x43, 0x80, 0x00, 0x98, 0x34, 0xe6, 0x0a, + 0xaf, 0x0b, 0x50, 0xc4, 0x55, 0x21, 0x40, 0x29, 0x9a, 0xc1, 0x0a, 0x0b, + 0xaf, 0x05, 0x10, 0xda, 0x55, 0x21, 0x50, 0x29, 0x06, 0x40, 0x40, 0x26, + 0x12, 0x13, 0x41, 0x86, 0x62, 0x86, 0x00, 0x1a, 0x00, 0x20, 0x20, 0x86, + 0x45, 0xa6, 0x66, 0xa6, 0xb5, 0x70, 0x24, 0xa6, 0x8c, 0xf2, 0x94, 0x8f, + 0x95, 0x72, 0x8a, 0xf4, 0xd6, 0x43, 0x04, 0x16, 0x0b, 0x20, 0xc6, 0x42, + 0xc3, 0x40, 0xcc, 0x3d, 0xcd, 0xcc, 0x3c, 0x8f, 0x00, 0x33, 0x14, 0x00, + 0x40, 0x26, 0x0d, 0x17, 0x00, 0x33, 0x13, 0x10, 0x9e, 0xc4, 0x29, 0x09, + 0xb1, 0x00, 0x00, 0x32, 0x15, 0x00, 0x6a, 0x86, 0x49, 0x86, 0x28, 0x86, + 0x00, 0x85, 0x8c, 0x70, 0x0a, 0x25, 0x40, 0x05, 0x0a, 0x26, 0xc0, 0x04, + 0x0a, 0x27, 0x00, 0x05, 0x96, 0x0f, 0x6f, 0x0a, 0x40, 0xc4, 0x17, 0xf0, + 0x40, 0x26, 0x16, 0x1b, 0x6e, 0x86, 0x4d, 0x86, 0x2c, 0x86, 0xc6, 0x40, + 0x8c, 0x70, 0x0a, 0x25, 0x40, 0x05, 0x0a, 0x26, 0xc0, 0x04, 0x0a, 0x27, + 0x00, 0x05, 0x76, 0x0f, 0x6f, 0x0a, 0x40, 0xc4, 0x10, 0xda, 0xc2, 0x40, + 0x76, 0x0a, 0xaf, 0x05, 0xa1, 0x41, 0x75, 0x8f, 0x0d, 0xc2, 0xc3, 0x41, + 0x80, 0x00, 0x98, 0x34, 0x9e, 0xc0, 0x5a, 0x0a, 0x6f, 0x0d, 0x30, 0x46, + 0x16, 0x8f, 0xcb, 0x45, 0x80, 0x00, 0x6d, 0x35, 0x69, 0x08, 0x71, 0x00, + 0x07, 0x6d, 0x2c, 0x70, 0x40, 0x24, 0x05, 0x39, 0x54, 0x24, 0x86, 0x3a, + 0xa2, 0x42, 0x62, 0x43, 0x9e, 0x0a, 0x6f, 0x0b, 0x0a, 0x24, 0x00, 0x05, + 0x0e, 0x0b, 0x6f, 0x0b, 0x15, 0xc0, 0x11, 0xc0, 0x41, 0x08, 0xd1, 0x00, + 0x20, 0x8d, 0x01, 0x8d, 0x05, 0x20, 0x7e, 0x80, 0x1a, 0xf4, 0x30, 0x14, + 0x05, 0x30, 0x2c, 0x14, 0x04, 0x30, 0x0a, 0xc3, 0x09, 0xc2, 0x15, 0xc1, + 0x96, 0xc0, 0x40, 0x24, 0x06, 0x32, 0x8a, 0x0b, 0xaf, 0x0b, 0x0a, 0x27, + 0x80, 0x05, 0x55, 0x21, 0x40, 0x29, 0x96, 0xc1, 0x02, 0x0a, 0xaf, 0x05, + 0x10, 0xda, 0x02, 0x8d, 0x86, 0xe8, 0x02, 0x1d, 0x43, 0x10, 0x04, 0xf0, + 0x13, 0x1f, 0x03, 0x10, 0x62, 0x86, 0x41, 0x86, 0x20, 0x86, 0x06, 0x40, + 0x92, 0x09, 0xaf, 0x0a, 0x0a, 0x24, 0x00, 0x04, 0x07, 0x6d, 0xb2, 0x0d, + 0x2f, 0x0b, 0x02, 0x41, 0x62, 0x86, 0x41, 0x86, 0x20, 0x86, 0x06, 0x40, + 0x7a, 0x09, 0xaf, 0x0a, 0x0a, 0x24, 0x00, 0x04, 0x66, 0x86, 0x45, 0x86, + 0x24, 0x86, 0x46, 0x40, 0x6a, 0x09, 0xaf, 0x0a, 0x0a, 0x24, 0x80, 0x04, + 0x0c, 0x70, 0x80, 0x24, 0x02, 0x32, 0x04, 0x14, 0x1b, 0x34, 0xda, 0xc6, + 0xf1, 0xc0, 0xa2, 0xc1, 0xcb, 0x44, 0x80, 0x00, 0xe4, 0x35, 0x58, 0x14, + 0x07, 0x10, 0x54, 0x14, 0x06, 0x10, 0x50, 0x14, 0x05, 0x10, 0x4c, 0x14, + 0x04, 0x10, 0x63, 0x84, 0x42, 0x84, 0x21, 0x84, 0x80, 0x84, 0x41, 0xc0, + 0x00, 0x1c, 0x41, 0x30, 0x3a, 0x0d, 0x6f, 0x0a, 0x81, 0x40, 0xa2, 0xc0, + 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, 0xec, 0xc2, 0xd3, 0x40, + 0x80, 0x00, 0xa0, 0x36, 0xcb, 0x47, 0x80, 0x00, 0x70, 0x36, 0xd3, 0x41, + 0x83, 0x3a, 0x6f, 0x12, 0xc3, 0x41, 0xcc, 0x3d, 0xcd, 0xcc, 0xc3, 0x40, + 0x79, 0x3d, 0x23, 0xdb, 0xcb, 0x45, 0x80, 0x00, 0xd0, 0x35, 0x04, 0x18, + 0x83, 0x20, 0x1c, 0x1f, 0x40, 0x14, 0x26, 0xa7, 0x05, 0xa7, 0x54, 0x25, + 0x00, 0x1c, 0xfe, 0x0d, 0x6f, 0x0a, 0x06, 0x18, 0x43, 0x20, 0xf6, 0x0d, + 0x6f, 0x0a, 0x55, 0x25, 0x00, 0x18, 0xee, 0x0d, 0x6f, 0x0a, 0x55, 0x25, + 0x00, 0x19, 0xe6, 0x0d, 0x6f, 0x0a, 0x54, 0x25, 0x00, 0x1e, 0x26, 0x0e, + 0x0f, 0x0b, 0xcd, 0x70, 0x64, 0xda, 0xc3, 0x41, 0x49, 0xc0, 0xf9, 0x0f, + 0xc3, 0x40, 0x56, 0x3d, 0x50, 0x77, 0x05, 0x18, 0x82, 0x23, 0x50, 0xb7, + 0x08, 0x18, 0x83, 0x22, 0xc1, 0xa7, 0x22, 0xa7, 0xc3, 0xa7, 0x04, 0xa7, + 0xd1, 0xb7, 0x09, 0x18, 0x43, 0x21, 0x0a, 0x18, 0x82, 0x23, 0x4a, 0x24, + 0x80, 0x72, 0x7f, 0xd9, 0xd3, 0x42, 0x80, 0x00, 0x98, 0x34, 0x17, 0xb9, + 0x56, 0x22, 0x80, 0x28, 0xa8, 0x20, 0x00, 0x01, 0x04, 0x18, 0x50, 0x00, + 0x42, 0x40, 0x22, 0x0e, 0x2f, 0x0d, 0xc0, 0xad, 0xcb, 0x45, 0x80, 0x00, + 0xf4, 0x25, 0x21, 0x85, 0x40, 0x85, 0x63, 0x85, 0x10, 0x15, 0x04, 0x10, + 0xc6, 0x0f, 0x2f, 0x0b, 0x0c, 0x70, 0xde, 0x0f, 0x2f, 0x0b, 0x10, 0x95, + 0x06, 0x85, 0x25, 0x85, 0xe6, 0x0f, 0x2f, 0x0b, 0x47, 0x85, 0xa2, 0x0c, + 0x2f, 0x0b, 0x55, 0x22, 0xc0, 0x2d, 0xcb, 0x45, 0x80, 0x00, 0xd0, 0x25, + 0xea, 0x0f, 0x2f, 0x0b, 0x00, 0x85, 0xfa, 0x0f, 0x2f, 0x0b, 0x01, 0x85, + 0x06, 0x08, 0x6f, 0x0b, 0x02, 0x85, 0x16, 0x08, 0x6f, 0x0b, 0x06, 0x95, + 0x07, 0x95, 0x22, 0x08, 0x6f, 0x0b, 0x2f, 0x38, 0x03, 0x00, 0xcb, 0x45, + 0x80, 0x00, 0xe0, 0x25, 0x26, 0x08, 0x6f, 0x0b, 0x00, 0x85, 0x36, 0x08, + 0x6f, 0x0b, 0x01, 0x85, 0x42, 0x08, 0x6f, 0x0b, 0x02, 0x85, 0x52, 0x08, + 0x6f, 0x0b, 0x08, 0x95, 0x09, 0x95, 0x5e, 0x08, 0x6f, 0x0b, 0x2f, 0x38, + 0x03, 0x00, 0x6a, 0x08, 0x6f, 0x0b, 0x03, 0x85, 0xc3, 0x40, 0xc0, 0x40, + 0x00, 0x00, 0x0b, 0x18, 0x82, 0x23, 0x00, 0xa7, 0x6a, 0x08, 0x6f, 0x0b, + 0x00, 0x18, 0x43, 0x20, 0x72, 0x08, 0x4f, 0x0b, 0xc3, 0x41, 0x80, 0x00, + 0x90, 0x1b, 0xc3, 0x42, 0x7a, 0x3f, 0x48, 0xe1, 0xc0, 0xa9, 0x41, 0xa1, + 0x08, 0x19, 0x40, 0x04, 0xc3, 0xa1, 0xc4, 0xa1, 0xc5, 0xa1, 0x0c, 0x70, + 0x18, 0x19, 0x43, 0x00, 0xcc, 0xc6, 0xe0, 0x78, 0xe8, 0xc2, 0xe1, 0xc4, + 0xfc, 0x1c, 0xc8, 0xb2, 0xfc, 0x1c, 0x88, 0xb2, 0xfc, 0x1c, 0x48, 0xb2, + 0xfc, 0x1c, 0x08, 0xb2, 0xfc, 0x1c, 0xc8, 0xb1, 0xfc, 0x1c, 0x88, 0xb1, + 0xfc, 0x1c, 0x48, 0xb1, 0xfc, 0x1c, 0x08, 0xb1, 0xe1, 0xc3, 0xe1, 0xc2, + 0xe1, 0xc1, 0xe1, 0xc0, 0x6a, 0x25, 0xc0, 0x10, 0xe1, 0xc5, 0x6a, 0x25, + 0x80, 0x10, 0xe1, 0xc5, 0xfc, 0x1c, 0x08, 0xbf, 0xaa, 0x20, 0xa1, 0x07, + 0x04, 0x71, 0xc2, 0x0e, 0xaf, 0x05, 0x10, 0x78, 0x2f, 0x27, 0x7f, 0x03, + 0x6f, 0x23, 0x3f, 0x00, 0xab, 0x26, 0xe1, 0x7c, 0x00, 0x00, 0x00, 0x08, + 0x8a, 0x0e, 0x40, 0x01, 0x2f, 0x26, 0x7f, 0x03, 0x00, 0x16, 0x80, 0x70, + 0x80, 0x00, 0x8c, 0x1e, 0x20, 0xe8, 0x00, 0x16, 0x0d, 0x70, 0x80, 0x00, + 0x84, 0x1e, 0x34, 0x68, 0xed, 0x70, 0x00, 0x25, 0x50, 0x10, 0x00, 0x95, + 0x25, 0x08, 0xbe, 0x00, 0x50, 0x20, 0x81, 0x00, 0x15, 0x08, 0xfe, 0x00, + 0x20, 0xb5, 0xed, 0x7e, 0x52, 0x09, 0xef, 0x05, 0xc1, 0x40, 0x5e, 0x0f, + 0xaf, 0x05, 0xc1, 0x40, 0x42, 0x85, 0x23, 0x85, 0x60, 0x7a, 0x0c, 0x70, + 0x10, 0xe5, 0xdb, 0x0d, 0x24, 0x94, 0xe5, 0x71, 0xc1, 0xc5, 0x0a, 0x24, + 0x40, 0x73, 0xc1, 0xc5, 0x6b, 0x25, 0x80, 0x10, 0xc1, 0xc5, 0x6b, 0x25, + 0xc0, 0x10, 0xc1, 0xc0, 0xc1, 0xc1, 0xc1, 0xc2, 0xc1, 0xc3, 0x04, 0x14, + 0x04, 0x34, 0x04, 0x14, 0x05, 0x34, 0x04, 0x14, 0x06, 0x34, 0x04, 0x14, + 0x07, 0x34, 0x04, 0x14, 0x08, 0x34, 0x04, 0x14, 0x09, 0x34, 0x04, 0x14, + 0x0a, 0x34, 0x04, 0x14, 0x0b, 0x34, 0xc1, 0xc4, 0xc8, 0xc2, 0x6f, 0x24, + 0x3f, 0x00, 0xe0, 0x78, 0xf1, 0xc0, 0xc3, 0x40, 0x80, 0x00, 0x40, 0x13, + 0xc3, 0x42, 0x80, 0x00, 0xac, 0x1b, 0x2c, 0x70, 0xfa, 0x0e, 0x6f, 0x05, + 0x02, 0x7a, 0x12, 0x08, 0x00, 0x00, 0x1e, 0x08, 0x00, 0x01, 0xd1, 0xc0, + 0xe0, 0x7e, 0xe0, 0x78, 0xe8, 0xc3, 0xa1, 0xc1, 0xc3, 0x40, 0x7f, 0x00, + 0x74, 0xe0, 0x32, 0xe8, 0xcb, 0x46, 0x7f, 0x00, 0xd4, 0xde, 0xd2, 0x08, + 0xef, 0x03, 0xc1, 0x40, 0xab, 0xe8, 0x03, 0x8e, 0x0f, 0x08, 0xf4, 0x00, + 0xe4, 0x6e, 0xa0, 0x87, 0x40, 0x26, 0x0f, 0x12, 0x10, 0xf0, 0xcb, 0x45, + 0x60, 0x00, 0x7c, 0x23, 0x19, 0x00, 0x00, 0x00, 0x80, 0xc3, 0x02, 0x40, + 0xc1, 0x41, 0x60, 0x7d, 0x81, 0x42, 0x03, 0x6e, 0x6c, 0x20, 0x40, 0x00, + 0x1f, 0x67, 0x08, 0xe7, 0xc1, 0x87, 0x80, 0x87, 0xd5, 0x70, 0x0c, 0xf2, + 0x40, 0x27, 0x10, 0x12, 0x30, 0xf6, 0xd3, 0x7a, 0x2c, 0x70, 0x8e, 0x0e, + 0x6f, 0x05, 0x81, 0x40, 0x0a, 0x47, 0xf4, 0xf1, 0x04, 0xec, 0x04, 0x6f, + 0xe4, 0x68, 0xf0, 0xf1, 0x0c, 0x70, 0xc8, 0xc7, 0xe4, 0xc3, 0xa5, 0xc1, + 0x00, 0x16, 0xc1, 0x70, 0x80, 0x00, 0xe4, 0x1f, 0x3d, 0x09, 0x33, 0x00, + 0x08, 0x45, 0x80, 0xc0, 0x80, 0xc6, 0xa4, 0x5a, 0x40, 0x24, 0xc0, 0x34, + 0xa3, 0x5a, 0x13, 0x14, 0x80, 0x30, 0x4a, 0x21, 0x00, 0x00, 0x2f, 0x38, + 0x03, 0x00, 0x43, 0xc0, 0x00, 0x86, 0x24, 0x71, 0x00, 0x38, 0x80, 0x0f, + 0x20, 0x3c, 0x12, 0xac, 0xf5, 0x09, 0xf2, 0x80, 0x04, 0x1e, 0x10, 0x10, + 0x48, 0x85, 0xfa, 0xd8, 0x80, 0xc1, 0xce, 0x5a, 0x46, 0x0d, 0x6f, 0x08, + 0xa1, 0x40, 0xc4, 0xc7, 0xc3, 0x40, 0x80, 0x00, 0x5c, 0x3f, 0x04, 0x18, + 0x90, 0x0f, 0x80, 0x00, 0xf0, 0x13, 0x04, 0x18, 0x90, 0x0f, 0x80, 0x00, + 0x1c, 0x15, 0xc3, 0x43, 0x80, 0x00, 0x8c, 0x21, 0xc3, 0x42, 0x80, 0x00, + 0x90, 0x21, 0xc3, 0x41, 0x80, 0x00, 0x94, 0x21, 0x00, 0x1b, 0x80, 0x0f, + 0x80, 0x00, 0x74, 0x17, 0x00, 0x1a, 0x80, 0x0f, 0x80, 0x00, 0xa0, 0x18, + 0x00, 0x19, 0x80, 0x0f, 0x80, 0x00, 0xcc, 0x19, 0x00, 0x18, 0x80, 0x0f, + 0x80, 0x00, 0x48, 0x16, 0x00, 0x1e, 0x45, 0x70, 0x80, 0x00, 0x88, 0x21, + 0xe9, 0x01, 0x0f, 0x0e, 0xe6, 0xc3, 0xa1, 0xc1, 0xcb, 0x46, 0x80, 0x00, + 0xb4, 0x1f, 0x40, 0x86, 0x28, 0x45, 0x08, 0x47, 0x81, 0x0a, 0x60, 0x00, + 0x03, 0x1c, 0x03, 0x30, 0x8c, 0x25, 0x02, 0x90, 0x06, 0xf2, 0x8c, 0x25, + 0xc3, 0x9f, 0x06, 0xf4, 0x11, 0xd9, 0x05, 0xf0, 0x12, 0xd9, 0x03, 0xf0, + 0x10, 0xd9, 0xe1, 0x40, 0x4e, 0x0f, 0x6f, 0x07, 0x03, 0x1c, 0x42, 0x30, + 0x0c, 0x74, 0xa2, 0x5a, 0x8c, 0x25, 0x02, 0x90, 0x07, 0xf4, 0xb7, 0xd8, + 0x40, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0x0f, 0xf0, 0x40, 0xd9, + 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0xe1, 0x40, 0xbf, 0x5a, 0x03, 0x14, + 0x80, 0x30, 0x40, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0xc3, 0xb8, 0x6c, 0x71, + 0x85, 0xb8, 0x03, 0x1c, 0x02, 0x30, 0xe1, 0x40, 0xc1, 0x5a, 0x0c, 0x71, + 0xa2, 0x5a, 0x6c, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0xe1, 0x40, + 0x03, 0x1c, 0x03, 0x30, 0xc1, 0x5a, 0x8c, 0x25, 0x02, 0x90, 0x04, 0xf4, + 0x0c, 0x71, 0xa2, 0x5a, 0xa0, 0xa6, 0xc6, 0xc7, 0xe6, 0xc3, 0xa1, 0xc1, + 0xcb, 0x45, 0x80, 0x00, 0xd8, 0x12, 0x20, 0x85, 0x08, 0x47, 0xcd, 0x70, + 0x2e, 0xe9, 0x2c, 0x70, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0xe1, 0x40, + 0xbf, 0x5a, 0x22, 0xde, 0xa6, 0xe8, 0x03, 0x14, 0x80, 0x30, 0x21, 0xde, + 0x6c, 0x20, 0x80, 0x00, 0x8c, 0x20, 0x03, 0x84, 0x1e, 0xf4, 0xb6, 0xd9, + 0xb6, 0x0e, 0x6f, 0x07, 0xe1, 0x40, 0x0c, 0x73, 0xa2, 0x5a, 0xcd, 0x70, + 0x7f, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0xe1, 0x40, 0x03, 0x1c, + 0x82, 0x33, 0xc1, 0x5a, 0x0c, 0x71, 0xa2, 0x5a, 0x36, 0x0d, 0xaf, 0x07, + 0xe1, 0x40, 0x2c, 0x70, 0x12, 0x0f, 0xef, 0xff, 0xe1, 0x40, 0x2c, 0x70, + 0x9e, 0x0d, 0xaf, 0x07, 0xe1, 0x40, 0xc0, 0xa5, 0xc1, 0x40, 0xc6, 0xc7, + 0xf6, 0xc3, 0xa1, 0xc1, 0xad, 0x70, 0xb6, 0xd9, 0x10, 0x43, 0x03, 0x1c, + 0x42, 0x33, 0x6e, 0x0e, 0x6f, 0x07, 0x00, 0x1c, 0x44, 0x33, 0x08, 0x47, + 0x3c, 0xd8, 0xa2, 0x5a, 0x11, 0xd9, 0x5e, 0x0e, 0x6f, 0x07, 0x62, 0x40, + 0x08, 0x46, 0x3c, 0xd8, 0xa2, 0x5a, 0x08, 0xd9, 0xce, 0x0b, 0xaf, 0x07, + 0x62, 0x40, 0x10, 0x44, 0x0c, 0xd9, 0x0a, 0x0b, 0xaf, 0x07, 0x62, 0x40, + 0xfa, 0x66, 0x2c, 0x71, 0x4e, 0x20, 0x16, 0x00, 0x12, 0xdf, 0x4a, 0x22, + 0xc0, 0x28, 0xd3, 0x41, 0x80, 0x00, 0xd8, 0x12, 0xcd, 0x70, 0x00, 0x22, + 0x10, 0x05, 0xab, 0x21, 0x61, 0x0a, 0x1d, 0x4d, 0x03, 0x1c, 0x02, 0x30, + 0x6d, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0x62, 0x40, 0xc1, 0x5a, + 0x32, 0xd8, 0xa2, 0x5a, 0xef, 0x79, 0x80, 0xc2, 0x6c, 0x72, 0x62, 0x40, + 0x30, 0x47, 0xbf, 0x5a, 0x19, 0x4d, 0x00, 0x14, 0x94, 0x30, 0x01, 0x14, + 0xd5, 0x30, 0x03, 0x1c, 0x02, 0x30, 0x6d, 0xd9, 0x40, 0x24, 0xc2, 0x30, + 0x6c, 0x71, 0x62, 0x40, 0xc1, 0x5a, 0x32, 0xd8, 0xa2, 0x5a, 0x80, 0xc2, + 0x6c, 0x72, 0x62, 0x40, 0xe2, 0x41, 0xbf, 0x5a, 0x20, 0xc2, 0x01, 0x14, + 0xc1, 0x30, 0x60, 0xd8, 0x6b, 0x08, 0xa1, 0x25, 0x00, 0x19, 0x80, 0x24, + 0x40, 0x2d, 0x00, 0x22, 0x08, 0xb9, 0x05, 0x20, 0x00, 0x05, 0x45, 0x79, + 0x10, 0x49, 0x11, 0x78, 0x13, 0x0d, 0xb1, 0x10, 0x10, 0x78, 0x8c, 0x20, + 0x19, 0x8a, 0x8c, 0xf7, 0x82, 0xbe, 0xcf, 0x7e, 0x08, 0xf0, 0x11, 0x08, + 0x84, 0x0f, 0x00, 0x00, 0xce, 0x0c, 0xcf, 0x78, 0x0f, 0x20, 0x4e, 0x03, + 0x0c, 0x71, 0xa5, 0x71, 0xe5, 0x72, 0x73, 0x0d, 0xf2, 0x90, 0xab, 0x20, + 0x61, 0x0a, 0xb6, 0xd9, 0x86, 0x0d, 0x6f, 0x07, 0x62, 0x40, 0x3c, 0xd8, + 0xa2, 0x5a, 0x1b, 0x0e, 0x3e, 0x10, 0x61, 0xd8, 0xcf, 0x79, 0x13, 0x09, + 0x7e, 0x00, 0x62, 0xd8, 0xe2, 0xb9, 0x64, 0xd9, 0x0c, 0x72, 0xca, 0x20, + 0x41, 0x00, 0xd6, 0xc7, 0xe6, 0xc3, 0xa1, 0xc1, 0xad, 0x70, 0xb6, 0xd9, + 0x08, 0x47, 0x5a, 0x0d, 0x6f, 0x07, 0x03, 0x1c, 0x42, 0x33, 0x32, 0xd8, + 0xa2, 0x5a, 0xcd, 0x71, 0x15, 0xd9, 0xe1, 0x40, 0x46, 0x0d, 0x6f, 0x07, + 0xab, 0x26, 0x61, 0x1a, 0x32, 0xd8, 0xa2, 0x5a, 0x0c, 0x75, 0xab, 0x26, + 0x61, 0x1a, 0xa2, 0x5a, 0x2c, 0x73, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, + 0xe1, 0x40, 0xbf, 0x5a, 0x03, 0x14, 0x80, 0x30, 0x44, 0x20, 0x00, 0x03, + 0x0b, 0x08, 0x10, 0x01, 0xa5, 0x71, 0xe1, 0x0d, 0x52, 0x91, 0x2c, 0x71, + 0xde, 0x08, 0xaf, 0x07, 0xe1, 0x40, 0x32, 0xd8, 0xa2, 0x5a, 0xcd, 0x71, + 0x0c, 0x75, 0xab, 0x26, 0x61, 0x1a, 0xa2, 0x5a, 0x40, 0x24, 0xc1, 0x30, + 0xe6, 0x0f, 0x6f, 0x07, 0xe1, 0x40, 0x03, 0x14, 0x80, 0x30, 0x0d, 0x08, + 0x70, 0x00, 0xa5, 0x71, 0xe5, 0x0d, 0x52, 0x91, 0xb6, 0xd9, 0xe6, 0x0c, + 0x6f, 0x07, 0xe1, 0x40, 0x32, 0xd8, 0xa2, 0x5a, 0x03, 0x14, 0x81, 0x30, + 0x23, 0xdb, 0x60, 0xda, 0x0c, 0x72, 0x34, 0x70, 0xca, 0x20, 0x81, 0x00, + 0x00, 0x1e, 0xc0, 0x70, 0x80, 0x00, 0xd8, 0x12, 0xc6, 0xc7, 0xe0, 0x78, + 0xe2, 0xc2, 0xca, 0x08, 0xaf, 0x07, 0x28, 0x45, 0x03, 0xed, 0x0c, 0x71, + 0xa2, 0x5a, 0x0c, 0x70, 0xc2, 0xc6, 0xe0, 0x78, 0xe4, 0xc3, 0xa1, 0xc1, + 0x08, 0x45, 0x04, 0x88, 0x2c, 0x70, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, + 0xbf, 0x5a, 0x22, 0xde, 0x92, 0xe8, 0x03, 0x14, 0x80, 0x30, 0x21, 0xde, + 0x6c, 0x20, 0x80, 0x00, 0x8c, 0x20, 0x03, 0x84, 0x0a, 0xf4, 0x9e, 0x0d, + 0xef, 0xff, 0x04, 0x8d, 0x86, 0xe8, 0x0c, 0x70, 0x0e, 0x08, 0x20, 0x00, + 0xa1, 0x41, 0xcd, 0x70, 0xc1, 0x40, 0xc4, 0xc7, 0xec, 0xc2, 0x28, 0x45, + 0x3a, 0x0d, 0xaf, 0x05, 0x08, 0x47, 0x12, 0x0d, 0xaf, 0x05, 0x10, 0x40, + 0x08, 0x46, 0x11, 0xd8, 0xc1, 0x41, 0x02, 0x42, 0xb1, 0x5a, 0x10, 0x42, + 0x12, 0xd8, 0xc1, 0x41, 0x02, 0x42, 0xb1, 0x5a, 0x10, 0x41, 0x13, 0xd8, + 0xc1, 0x41, 0x02, 0x42, 0xb1, 0x5a, 0x31, 0x0f, 0xb4, 0x10, 0x08, 0x46, + 0xcb, 0x46, 0x80, 0x00, 0xc8, 0x1f, 0x61, 0x0f, 0x30, 0x14, 0x8c, 0x27, + 0x02, 0x90, 0x38, 0xf2, 0x8c, 0x27, 0xc3, 0x9f, 0x49, 0xf4, 0x04, 0x8d, + 0x00, 0x16, 0x10, 0x10, 0xa2, 0x0c, 0xef, 0xff, 0xff, 0xd9, 0xb8, 0x20, + 0x02, 0x20, 0x34, 0xf0, 0x16, 0x0a, 0xaf, 0x07, 0x42, 0x40, 0x0d, 0xe8, + 0x0e, 0x0a, 0xaf, 0x07, 0x22, 0x40, 0x09, 0xe8, 0x06, 0x0a, 0xaf, 0x07, + 0xc1, 0x40, 0x05, 0xe8, 0x04, 0x8d, 0x2c, 0x70, 0x03, 0xf0, 0x04, 0x8d, + 0x80, 0xd9, 0x76, 0x0c, 0xcf, 0xff, 0x72, 0x15, 0x81, 0x10, 0x0c, 0x70, + 0xc3, 0x42, 0x80, 0x00, 0xc8, 0x1f, 0xc6, 0xb9, 0x72, 0x1d, 0x42, 0x10, + 0xe0, 0xa2, 0x0b, 0xf0, 0x5e, 0x0d, 0xef, 0xff, 0x04, 0x8d, 0x00, 0x41, + 0xa1, 0x40, 0xd0, 0x5a, 0x0c, 0x70, 0x00, 0x1e, 0x01, 0x14, 0xa1, 0x41, + 0xd5, 0x5a, 0x17, 0xf0, 0x04, 0x8d, 0x00, 0x16, 0x10, 0x10, 0x3e, 0x0c, + 0xef, 0xff, 0x80, 0xd9, 0xb8, 0x20, 0xc3, 0x2f, 0x0c, 0x70, 0xa1, 0x41, + 0xe0, 0xa6, 0xd5, 0x5a, 0x13, 0x08, 0x30, 0x20, 0xa1, 0x41, 0xc3, 0x40, + 0x80, 0x00, 0xdc, 0x12, 0x49, 0x85, 0x60, 0x7a, 0x00, 0x80, 0xc3, 0x40, + 0x80, 0x00, 0xc8, 0x1f, 0x00, 0x80, 0xcc, 0xc6, 0xea, 0xc3, 0xa1, 0xc1, + 0x08, 0x46, 0xc3, 0x40, 0x80, 0x00, 0xdc, 0x12, 0xad, 0x70, 0x28, 0x47, + 0xc0, 0xa0, 0x03, 0x1c, 0x42, 0x33, 0x4a, 0x24, 0x00, 0x71, 0xd3, 0x40, + 0x7f, 0x00, 0xd0, 0xe0, 0x0a, 0x21, 0x00, 0x24, 0xa8, 0x20, 0xc0, 0x02, + 0x04, 0x11, 0x00, 0x25, 0xc1, 0x41, 0xf2, 0x0b, 0x6f, 0x04, 0x2f, 0x38, + 0x03, 0x00, 0x43, 0xf6, 0xa5, 0x71, 0x8a, 0x09, 0xaf, 0x07, 0xe1, 0x40, + 0x8c, 0x20, 0x02, 0x80, 0x0c, 0x71, 0x1d, 0xf2, 0x7a, 0x09, 0xaf, 0x07, + 0xe1, 0x40, 0x8c, 0x20, 0xc3, 0x8f, 0x16, 0xf4, 0x15, 0x20, 0x43, 0x23, + 0x04, 0x8f, 0xc2, 0x8b, 0x40, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, + 0xbf, 0x5a, 0x53, 0x26, 0xc0, 0x10, 0x85, 0xb8, 0x03, 0x1c, 0x02, 0x30, + 0x04, 0x8f, 0x40, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0xc1, 0x5a, + 0xa1, 0x40, 0x15, 0x20, 0x01, 0x20, 0x20, 0x91, 0xcb, 0x45, 0x80, 0x00, + 0xd0, 0x1f, 0x0c, 0x70, 0x2f, 0x39, 0x43, 0x00, 0x20, 0xa5, 0xe1, 0x41, + 0xd7, 0x5a, 0x00, 0x85, 0xca, 0xc7, 0xe0, 0x78, 0xe4, 0xc3, 0xa1, 0xc1, + 0x08, 0x45, 0x08, 0x88, 0x21, 0x08, 0x71, 0x0c, 0x28, 0x46, 0x00, 0x16, + 0x00, 0x70, 0x80, 0x00, 0x80, 0x20, 0xba, 0x09, 0x6f, 0x08, 0x80, 0xc1, + 0x02, 0x14, 0x80, 0x30, 0x09, 0x08, 0x51, 0x00, 0x11, 0x85, 0xc3, 0x80, + 0xa1, 0x40, 0x82, 0x0a, 0xef, 0x07, 0xc1, 0x41, 0xc4, 0xc7, 0xe0, 0x78, + 0xe8, 0xc2, 0x28, 0x45, 0x7a, 0x0b, 0xaf, 0x05, 0x10, 0x40, 0x9a, 0x0b, + 0xaf, 0x05, 0x08, 0x47, 0x08, 0x46, 0x40, 0xd8, 0xe1, 0x41, 0xc1, 0x42, + 0xb6, 0x5a, 0x27, 0x08, 0x21, 0x04, 0x17, 0xd8, 0xe1, 0x41, 0xc1, 0x42, + 0xb6, 0x5a, 0x0d, 0xe8, 0x0d, 0x88, 0x0b, 0xe8, 0xc8, 0xd9, 0xc3, 0x40, + 0x48, 0x43, 0x00, 0x00, 0x00, 0x1e, 0x40, 0x70, 0x80, 0x00, 0x78, 0x20, + 0x00, 0xa5, 0xc8, 0xc6, 0xe6, 0xc2, 0x26, 0x0b, 0x8f, 0x05, 0x3a, 0x0b, + 0xaf, 0x05, 0x08, 0x47, 0x56, 0x0b, 0xaf, 0x05, 0x08, 0x46, 0x3a, 0x0b, + 0xaf, 0x05, 0x08, 0x45, 0x00, 0x42, 0x10, 0xd8, 0xe1, 0x41, 0xb1, 0x5a, + 0x05, 0xe8, 0x20, 0x80, 0x83, 0xe9, 0x0d, 0x18, 0x03, 0x00, 0x17, 0xd8, + 0xc1, 0x41, 0xa1, 0x42, 0xb6, 0x5a, 0x0b, 0xe8, 0x0d, 0x88, 0x09, 0xe8, + 0x40, 0xd8, 0xc1, 0x41, 0xa1, 0x42, 0xb6, 0x5a, 0x03, 0xe8, 0x0d, 0x18, + 0x43, 0x00, 0xc6, 0xc6, 0xe4, 0xc3, 0xa1, 0xc1, 0x08, 0x45, 0xcd, 0x70, + 0x03, 0x1c, 0x82, 0x33, 0xc3, 0x40, 0x80, 0x00, 0xb0, 0x2a, 0xc0, 0xad, + 0x17, 0x88, 0x12, 0xe8, 0xc3, 0x40, 0x80, 0x00, 0xf4, 0x2b, 0x00, 0x88, + 0x1d, 0x08, 0x90, 0x00, 0x15, 0x08, 0x71, 0x00, 0xa1, 0x40, 0x9e, 0x09, + 0x4f, 0x0c, 0x3e, 0x0a, 0x6f, 0x0c, 0x40, 0x24, 0xc0, 0x30, 0x0e, 0xf0, + 0xc0, 0xad, 0x0b, 0xf0, 0xc3, 0x40, 0x80, 0x00, 0x1d, 0x13, 0x20, 0x88, + 0x40, 0x24, 0xc0, 0x30, 0xaa, 0x0f, 0x2f, 0x0d, 0x20, 0xad, 0x0c, 0x70, + 0x03, 0x14, 0x81, 0x30, 0x02, 0xe9, 0xc0, 0xad, 0xc4, 0xc7, 0xe0, 0x78, + 0xe2, 0xc2, 0x1e, 0x08, 0x6f, 0x08, 0x08, 0x45, 0x2a, 0xd9, 0x23, 0xb5, + 0xc2, 0xc6, 0xe0, 0x78, 0xfa, 0xc2, 0xfc, 0x1c, 0xc8, 0xb6, 0xad, 0xc1, + 0x20, 0x10, 0x13, 0x00, 0x08, 0x45, 0xd4, 0x5a, 0xcb, 0x47, 0x80, 0x00, + 0x84, 0x12, 0x2c, 0x87, 0x79, 0x20, 0x00, 0x00, 0x04, 0x71, 0x0d, 0x09, + 0x00, 0x00, 0x32, 0x08, 0x6f, 0x08, 0x0c, 0xa7, 0x4a, 0x0a, 0x8f, 0x05, + 0x6a, 0x0a, 0xaf, 0x05, 0x18, 0x43, 0x18, 0x41, 0x36, 0xd8, 0xab, 0x20, + 0xa0, 0x0d, 0xa1, 0x40, 0xb3, 0x5a, 0xc3, 0x41, 0x74, 0x49, 0x00, 0x24, + 0x1e, 0x0a, 0x6f, 0x04, 0x00, 0x39, 0x00, 0x00, 0x2d, 0x87, 0xd3, 0x42, + 0x7f, 0x00, 0xc0, 0xe0, 0xcd, 0x70, 0x38, 0x60, 0x40, 0x24, 0x18, 0x31, + 0xad, 0x70, 0x40, 0x22, 0x17, 0x23, 0x0d, 0xa7, 0x01, 0x17, 0x80, 0x24, + 0x63, 0x41, 0x23, 0x42, 0xb1, 0x5a, 0x10, 0x44, 0x2a, 0xe8, 0x20, 0x14, + 0x01, 0x20, 0x60, 0x79, 0x82, 0x40, 0xc0, 0xe0, 0x48, 0x00, 0x25, 0x00, + 0x40, 0x24, 0xc0, 0x30, 0xd3, 0x40, 0x80, 0x00, 0xf8, 0x1a, 0x15, 0x20, + 0x50, 0x23, 0xf0, 0x22, 0x41, 0x23, 0x44, 0x14, 0x15, 0x20, 0x0c, 0x10, + 0x16, 0x20, 0x60, 0x79, 0x00, 0x10, 0x11, 0x20, 0xf6, 0x0f, 0xaf, 0x07, + 0x03, 0x14, 0x80, 0x30, 0xba, 0x09, 0x4f, 0x04, 0xc3, 0x43, 0x0f, 0x00, + 0x40, 0x42, 0x17, 0xe8, 0x1f, 0x08, 0x90, 0x01, 0x23, 0x08, 0x11, 0x03, + 0xc3, 0x43, 0x01, 0x00, 0x80, 0x38, 0x0f, 0xf0, 0x14, 0x6d, 0x03, 0x70, + 0xc3, 0xa0, 0xc2, 0xa0, 0xc1, 0xa0, 0xc0, 0xa0, 0x27, 0xf0, 0xc3, 0x43, + 0x02, 0x00, 0x00, 0x71, 0x03, 0xf0, 0x05, 0x2b, 0x03, 0x00, 0x6f, 0x26, + 0x3f, 0x04, 0x6f, 0x23, 0x3f, 0x00, 0x34, 0x6d, 0x81, 0xc0, 0x3a, 0x60, + 0xa6, 0x40, 0x4c, 0x14, 0x0b, 0x20, 0xae, 0x41, 0x08, 0x15, 0x0c, 0x20, + 0x6f, 0x26, 0xff, 0x05, 0x00, 0xa2, 0x0d, 0x87, 0x21, 0xa2, 0x11, 0x0e, + 0xe1, 0x22, 0x82, 0xa2, 0x02, 0x20, 0x41, 0x04, 0x0b, 0x09, 0xc4, 0x00, + 0x10, 0x41, 0x00, 0x18, 0x00, 0x20, 0x0c, 0x18, 0xc0, 0x22, 0x0c, 0x1a, + 0x40, 0x04, 0xa5, 0x71, 0xb5, 0x73, 0x44, 0x07, 0xc5, 0xff, 0xcb, 0x45, + 0x80, 0x00, 0xe4, 0x1f, 0x00, 0x8d, 0x11, 0x08, 0x3e, 0x00, 0x81, 0xc1, + 0xfb, 0xd8, 0x62, 0x42, 0xce, 0x5a, 0x00, 0x8d, 0x0f, 0x08, 0x7e, 0x00, + 0x85, 0xc1, 0xfa, 0xd8, 0x62, 0x42, 0xce, 0x5a, 0x00, 0x8d, 0x0f, 0x08, + 0xbe, 0x00, 0xf9, 0xd8, 0x89, 0xc1, 0x62, 0x42, 0xce, 0x5a, 0x3a, 0xd9, + 0x81, 0xc0, 0x42, 0x08, 0x2f, 0x09, 0xab, 0x21, 0xa0, 0x0d, 0x16, 0x0a, + 0x0f, 0x09, 0x22, 0x08, 0x6f, 0x08, 0x40, 0x24, 0x80, 0x30, 0x02, 0x14, + 0x80, 0x30, 0x14, 0xe8, 0x0a, 0x09, 0x8f, 0x05, 0x2a, 0x09, 0xaf, 0x05, + 0x08, 0x45, 0x00, 0x42, 0x41, 0xd8, 0xa1, 0x41, 0xb6, 0x5a, 0x08, 0xe8, + 0x0d, 0x18, 0x43, 0x00, 0x1d, 0x18, 0x43, 0x00, 0xdb, 0x5a, 0x04, 0xf0, + 0x57, 0xd8, 0xcd, 0x5a, 0x3b, 0xd9, 0x0c, 0x70, 0xab, 0x21, 0xa0, 0x0d, + 0xad, 0xc0, 0x04, 0x14, 0x1b, 0x34, 0xda, 0xc6, 0xe2, 0xc2, 0xc2, 0x08, + 0xcf, 0x07, 0x08, 0x45, 0x0f, 0xd8, 0xc3, 0x41, 0x7f, 0x00, 0xcc, 0xd1, + 0xcc, 0x5a, 0x0f, 0xd8, 0xc3, 0x41, 0x7f, 0x00, 0x1c, 0xd1, 0xcb, 0x5a, + 0xc3, 0x41, 0x7f, 0x00, 0xb4, 0xd0, 0x04, 0xe9, 0x0c, 0x72, 0xcc, 0x5a, + 0xc3, 0x41, 0x7f, 0x00, 0x04, 0xd0, 0x04, 0xe9, 0x0c, 0x72, 0xcb, 0x5a, + 0xa1, 0x40, 0xc2, 0xc6, 0xe0, 0x7f, 0x0c, 0x71, 0xe8, 0xc3, 0xa4, 0xc1, + 0xc3, 0x41, 0x80, 0x00, 0x4a, 0x12, 0x40, 0x89, 0x83, 0xc1, 0x08, 0x45, + 0xf0, 0x26, 0x82, 0x70, 0x80, 0x00, 0x38, 0x20, 0xaa, 0x0e, 0x2f, 0x08, + 0x40, 0x40, 0x23, 0xc0, 0x4f, 0x08, 0x71, 0x00, 0x80, 0xc0, 0x9e, 0x08, + 0x8f, 0x08, 0x22, 0xc0, 0x43, 0x08, 0xd1, 0x00, 0x00, 0x14, 0x40, 0x31, + 0x80, 0x20, 0xc7, 0x0c, 0x8c, 0x20, 0x8f, 0x89, 0x19, 0xf7, 0x02, 0x14, + 0x40, 0x31, 0x80, 0x20, 0xc7, 0x0c, 0x8c, 0x20, 0x8f, 0x89, 0x13, 0xf7, + 0x04, 0x14, 0x40, 0x31, 0x80, 0x20, 0xc7, 0x0c, 0x8c, 0x20, 0x8f, 0x89, + 0x0b, 0xf7, 0x00, 0xc3, 0x01, 0xc2, 0x08, 0x14, 0x01, 0x31, 0xc3, 0x40, + 0x80, 0x00, 0x40, 0x13, 0x41, 0xa0, 0x60, 0xa0, 0x24, 0xb0, 0x0d, 0x14, + 0x80, 0x30, 0x27, 0x08, 0x71, 0x00, 0x80, 0xc0, 0x32, 0x0b, 0x4f, 0x08, + 0x22, 0xc0, 0x1b, 0x08, 0xd1, 0x00, 0x00, 0xc3, 0x01, 0xc2, 0x08, 0x14, + 0x01, 0x31, 0xc3, 0x40, 0x80, 0x00, 0x4c, 0x13, 0x41, 0xa0, 0x60, 0xa0, + 0x24, 0xb0, 0x0e, 0x14, 0x80, 0x30, 0x27, 0x08, 0x71, 0x00, 0x80, 0xc0, + 0x7e, 0x0b, 0x8f, 0x08, 0x22, 0xc0, 0x1b, 0x08, 0xd1, 0x00, 0x00, 0xc3, + 0x01, 0xc2, 0x08, 0x14, 0x01, 0x31, 0xc3, 0x40, 0x80, 0x00, 0x58, 0x13, + 0x41, 0xa0, 0x60, 0xa0, 0x24, 0xb0, 0xc3, 0x40, 0x7f, 0x00, 0xbc, 0xb4, + 0x07, 0xe8, 0xa1, 0x40, 0x22, 0x20, 0x80, 0x0f, 0x7f, 0x00, 0xbc, 0xb4, + 0x04, 0xf0, 0x9a, 0x0b, 0xef, 0x08, 0xa1, 0x40, 0xcb, 0x46, 0x80, 0x00, + 0x30, 0x12, 0x10, 0x40, 0x00, 0x8e, 0xb1, 0x08, 0x30, 0x00, 0x83, 0xc1, + 0xda, 0x0d, 0x2f, 0x08, 0x00, 0x85, 0x23, 0xc1, 0x35, 0x09, 0x71, 0x00, + 0x10, 0x40, 0x00, 0x16, 0xc0, 0x10, 0x2d, 0x08, 0x3e, 0x00, 0x84, 0x20, + 0x83, 0x0f, 0xc3, 0x41, 0x80, 0x00, 0x40, 0x13, 0x44, 0x91, 0x00, 0xae, + 0x08, 0x1c, 0x84, 0x30, 0x41, 0x81, 0x22, 0xc0, 0x20, 0x81, 0x41, 0xc2, + 0x0d, 0x08, 0xf1, 0x00, 0x40, 0xc1, 0x46, 0x0f, 0x6f, 0x08, 0x80, 0xc0, + 0x0d, 0x14, 0x80, 0x30, 0x33, 0x08, 0x51, 0x00, 0x00, 0x16, 0xc0, 0x10, + 0x2b, 0x08, 0x7e, 0x00, 0x84, 0x20, 0x43, 0x0f, 0xc3, 0x41, 0x80, 0x00, + 0x4c, 0x13, 0x44, 0x91, 0x00, 0xae, 0x08, 0x1c, 0x84, 0x30, 0x41, 0x81, + 0x22, 0xc0, 0x20, 0x81, 0x41, 0xc2, 0x0f, 0x08, 0xf1, 0x00, 0x40, 0xc1, + 0xa6, 0x0c, 0x6f, 0x08, 0x80, 0xc0, 0x0e, 0x14, 0x80, 0x30, 0x35, 0x08, + 0x51, 0x00, 0x00, 0x16, 0xc0, 0x10, 0x2d, 0x08, 0xbe, 0x00, 0x84, 0x20, + 0xc3, 0x0e, 0xc3, 0x41, 0x80, 0x00, 0x58, 0x13, 0x44, 0x91, 0x00, 0xae, + 0x08, 0x1c, 0x84, 0x30, 0x41, 0x81, 0x22, 0xc0, 0x20, 0x81, 0x41, 0xc2, + 0x0d, 0x08, 0xf1, 0x00, 0x40, 0xc1, 0x4e, 0x0a, 0xaf, 0x08, 0x80, 0xc0, + 0x02, 0x40, 0xc8, 0xc7, 0xe2, 0xc2, 0xd6, 0x0a, 0xef, 0x08, 0x08, 0x45, + 0x20, 0x85, 0x08, 0x45, 0x11, 0x09, 0x80, 0x0f, 0x1e, 0x00, 0x55, 0x28, + 0x0d, 0x09, 0x81, 0x0f, 0x0e, 0x00, 0x15, 0x28, 0xce, 0x0a, 0x4f, 0xff, + 0xa1, 0x40, 0xc2, 0xc6, 0xc3, 0x41, 0x80, 0x00, 0xc0, 0x20, 0xc3, 0x42, + 0x98, 0x00, 0x7f, 0x96, 0x01, 0x19, 0x03, 0x01, 0x41, 0xa1, 0x0c, 0x70, + 0xe0, 0x7f, 0x00, 0x19, 0x03, 0x00, 0xe0, 0x78, 0xec, 0xc2, 0xba, 0x0e, + 0x6f, 0x05, 0x10, 0x40, 0xd6, 0x0e, 0x6f, 0x05, 0x08, 0x45, 0x10, 0x41, + 0xcd, 0x70, 0x1b, 0xe8, 0x40, 0x25, 0x52, 0x13, 0x15, 0xe5, 0xed, 0x70, + 0x78, 0x12, 0x80, 0x24, 0x0d, 0xe8, 0x00, 0x8d, 0x17, 0x08, 0xdf, 0x00, + 0x0b, 0x15, 0x01, 0x10, 0x06, 0xe9, 0x60, 0x79, 0x42, 0x25, 0x40, 0x15, + 0xc0, 0xe0, 0x03, 0xf2, 0xe5, 0x71, 0xc5, 0x71, 0xe1, 0x0e, 0x64, 0x94, + 0x54, 0x25, 0x0d, 0x1f, 0x02, 0xf0, 0xed, 0x70, 0xcb, 0x45, 0x80, 0x00, + 0x38, 0x12, 0x01, 0x85, 0x21, 0x68, 0x21, 0xa5, 0x06, 0x10, 0x00, 0x21, + 0x5f, 0x20, 0xc0, 0x00, 0x09, 0x08, 0x43, 0x00, 0x04, 0x1d, 0x01, 0x10, + 0x8f, 0xef, 0xc6, 0x5a, 0x8d, 0xe8, 0x06, 0x40, 0x6c, 0x70, 0x0f, 0xe8, + 0x4a, 0x22, 0x00, 0x00, 0x2d, 0x88, 0x00, 0x80, 0x45, 0x79, 0x79, 0x21, + 0x02, 0x00, 0xfc, 0xe8, 0x05, 0xe9, 0x00, 0x1d, 0x43, 0x10, 0x0c, 0x70, + 0xcc, 0xc6, 0x02, 0x40, 0x60, 0xad, 0xda, 0x5a, 0xfb, 0xf1, 0xe0, 0x78, + 0xf4, 0xc2, 0x88, 0x45, 0x70, 0x42, 0x50, 0x45, 0x30, 0x41, 0x10, 0x44, + 0x2f, 0x27, 0xbf, 0x03, 0x6f, 0x23, 0x3f, 0x00, 0xa9, 0x5a, 0xa2, 0x40, + 0x42, 0x41, 0xbe, 0x5a, 0x00, 0x16, 0x81, 0x70, 0x80, 0x00, 0xa4, 0x1e, + 0x34, 0x70, 0x0e, 0xf4, 0xa5, 0x78, 0x52, 0x20, 0x3e, 0x80, 0x0a, 0xf2, + 0x6f, 0x26, 0x3f, 0x04, 0x6f, 0x23, 0x3f, 0x00, 0xaa, 0x5a, 0x2f, 0x26, + 0xbf, 0x03, 0x9e, 0xf0, 0x78, 0xda, 0x82, 0x40, 0x22, 0x41, 0x2f, 0x26, + 0xbf, 0x03, 0x7e, 0x0b, 0x8f, 0x05, 0x34, 0xda, 0xa2, 0x40, 0x76, 0x0b, + 0xaf, 0x05, 0x42, 0x41, 0x82, 0x40, 0x22, 0x41, 0xa2, 0x42, 0x42, 0x43, + 0xa8, 0x5a, 0x8a, 0x23, 0x01, 0x2e, 0xbb, 0x09, 0x30, 0x20, 0xed, 0x70, + 0xcd, 0x70, 0x1a, 0x26, 0xcd, 0x14, 0x82, 0x75, 0xa1, 0x40, 0xa7, 0x5a, + 0x36, 0x85, 0x0e, 0x0e, 0xaf, 0x03, 0x10, 0x40, 0x27, 0xf2, 0xa1, 0x40, + 0x50, 0x20, 0xfe, 0xa7, 0x25, 0xf2, 0xdd, 0x5a, 0x16, 0x85, 0x50, 0x20, + 0xfe, 0x87, 0x0a, 0xf2, 0xc1, 0x40, 0x9a, 0x20, 0x01, 0x0e, 0x82, 0x70, + 0x2c, 0x80, 0x04, 0xe9, 0x60, 0x79, 0xa1, 0x40, 0xd1, 0x46, 0x9a, 0x26, + 0x01, 0x2e, 0x58, 0x1d, 0x00, 0x14, 0x02, 0x40, 0x00, 0x26, 0x16, 0x25, + 0x24, 0x16, 0x02, 0x20, 0x60, 0x7a, 0xa1, 0x41, 0xba, 0x09, 0x20, 0x01, + 0xa1, 0x40, 0x2c, 0x16, 0x01, 0x20, 0x0c, 0xe9, 0x60, 0x79, 0xa1, 0x40, + 0x08, 0xf0, 0x2c, 0x71, 0x03, 0xf0, 0xd9, 0x5a, 0x2c, 0x70, 0x4e, 0x09, + 0x20, 0x00, 0xa1, 0x40, 0x50, 0x20, 0xfe, 0xa7, 0x1a, 0xf2, 0xd1, 0x40, + 0x9a, 0x20, 0x01, 0x2e, 0xa1, 0x40, 0x00, 0x20, 0x10, 0x25, 0xdd, 0x5a, + 0xa1, 0x40, 0xa6, 0x5a, 0x10, 0x46, 0x5c, 0x10, 0x00, 0x21, 0xd6, 0x70, + 0xca, 0x26, 0x61, 0x20, 0x15, 0x08, 0xa0, 0x05, 0x2f, 0x20, 0x88, 0x05, + 0x3c, 0x10, 0x02, 0x20, 0x60, 0x7a, 0xa1, 0x41, 0x5c, 0x18, 0x84, 0x25, + 0xa1, 0x40, 0xbd, 0x5a, 0xc5, 0x71, 0x57, 0x0e, 0x44, 0x94, 0x5b, 0x0a, + 0x10, 0x20, 0x5a, 0x27, 0x0d, 0x1d, 0xa2, 0x75, 0x15, 0x8d, 0xc1, 0xb8, + 0x45, 0x08, 0x51, 0x00, 0x03, 0x95, 0x20, 0xe8, 0x2c, 0x71, 0xee, 0x08, + 0x20, 0x00, 0xa1, 0x40, 0x0d, 0x8d, 0x18, 0xe8, 0xc2, 0x0a, 0x6f, 0x05, + 0x05, 0x15, 0xc0, 0x10, 0x94, 0xe8, 0x96, 0x0c, 0x20, 0x01, 0x05, 0x15, + 0xc0, 0x10, 0xff, 0xd8, 0xad, 0x5a, 0x00, 0x42, 0x2c, 0x73, 0x9a, 0x0b, + 0xaf, 0x05, 0xa1, 0x40, 0x2c, 0x72, 0x4c, 0x70, 0x8e, 0x0b, 0xaf, 0x05, + 0xa1, 0x40, 0x04, 0xf0, 0xa1, 0x40, 0xda, 0x5a, 0xe5, 0x71, 0xb3, 0x0f, + 0x84, 0x94, 0xaa, 0x5a, 0x0c, 0x70, 0xd4, 0xc6, 0xf1, 0xc0, 0xc3, 0x42, + 0x80, 0x00, 0x6c, 0x12, 0x21, 0x82, 0x20, 0x81, 0x1b, 0x09, 0x80, 0x0f, + 0xa5, 0x5a, 0x6b, 0xb6, 0x28, 0x8a, 0x89, 0xe9, 0x2c, 0x71, 0x14, 0x70, + 0x27, 0xd8, 0x28, 0xaa, 0x05, 0xf2, 0x27, 0xd8, 0xcd, 0x5a, 0xd1, 0xc0, + 0xe0, 0x7e, 0xab, 0x20, 0xe0, 0x0c, 0xab, 0x21, 0x61, 0x0a, 0xff, 0xf1, + 0x42, 0x20, 0x03, 0x05, 0x0c, 0x70, 0x74, 0x74, 0xe0, 0x20, 0xcd, 0x07, + 0x40, 0x8a, 0x0c, 0x71, 0xc3, 0x41, 0x80, 0x00, 0x50, 0x12, 0x25, 0x20, + 0xc0, 0x00, 0x06, 0xf0, 0x06, 0xf0, 0x08, 0xf0, 0x08, 0xf0, 0x0a, 0xf0, + 0xe0, 0x7f, 0x40, 0xa9, 0xe0, 0x7f, 0x41, 0xa9, 0xe0, 0x7f, 0x42, 0xa9, + 0xe0, 0x7f, 0x50, 0xa9, 0xe0, 0x7f, 0x51, 0xa9, 0x42, 0x20, 0x03, 0x05, + 0x0c, 0x70, 0x74, 0x74, 0xe0, 0x20, 0xcd, 0x07, 0x0c, 0x71, 0xc3, 0x42, + 0x80, 0x00, 0x50, 0x12, 0x25, 0x20, 0xc0, 0x00, 0x05, 0xf0, 0x07, 0xf0, + 0x07, 0xf0, 0x09, 0xf0, 0x09, 0xf0, 0x40, 0x8a, 0x08, 0xf0, 0x41, 0x8a, + 0x06, 0xf0, 0x42, 0x8a, 0x04, 0xf0, 0x50, 0x8a, 0x02, 0xf0, 0x51, 0x8a, + 0xe0, 0x7f, 0x40, 0xa9, 0xf4, 0xc3, 0x08, 0x45, 0x72, 0x0c, 0x6f, 0x05, + 0x30, 0x40, 0x02, 0xb8, 0x04, 0x73, 0x6c, 0x20, 0x40, 0x00, 0x02, 0x24, + 0x0f, 0x30, 0x3e, 0x0b, 0x2f, 0x05, 0xf9, 0x44, 0x0a, 0xed, 0xf1, 0x41, + 0x0a, 0x26, 0x40, 0x13, 0xc1, 0x40, 0xb3, 0x5a, 0x04, 0x19, 0x10, 0x20, + 0xc0, 0x86, 0xfc, 0xee, 0x15, 0x8d, 0xc1, 0xb8, 0x97, 0x08, 0x71, 0x00, + 0xa1, 0x40, 0x0d, 0x8d, 0x9b, 0x08, 0x30, 0x00, 0x4e, 0x70, 0x1d, 0x1d, + 0x43, 0x10, 0x03, 0x95, 0x2f, 0x3a, 0x03, 0x20, 0x04, 0x8d, 0xc1, 0xb8, + 0x8f, 0x08, 0x91, 0x00, 0xa1, 0x40, 0xa7, 0x5a, 0x10, 0x43, 0x50, 0x20, + 0xfe, 0x87, 0x49, 0xf2, 0x3f, 0xde, 0x18, 0xbe, 0x0a, 0x21, 0x80, 0x24, + 0x00, 0x31, 0x80, 0x23, 0x62, 0x41, 0x0a, 0x22, 0x40, 0x24, 0x7e, 0x0b, + 0x2f, 0x04, 0x10, 0x41, 0x98, 0xf6, 0x7e, 0x0b, 0x2f, 0x04, 0x42, 0x40, + 0x1d, 0x78, 0x2f, 0x38, 0x03, 0x00, 0xe2, 0x0b, 0xaf, 0x03, 0x22, 0x41, + 0x0e, 0xf4, 0x04, 0x8d, 0x41, 0x28, 0x81, 0x80, 0xea, 0xf3, 0x1d, 0x8d, + 0x1b, 0x78, 0xd1, 0x09, 0x03, 0x80, 0x06, 0xf0, 0x3b, 0x78, 0x0a, 0x22, + 0x40, 0x24, 0x1d, 0xad, 0x00, 0x32, 0x80, 0x23, 0x62, 0x41, 0x42, 0x0b, + 0x2f, 0x04, 0x10, 0x41, 0x3a, 0x00, 0x0b, 0x00, 0x04, 0x8d, 0x3d, 0x8d, + 0x41, 0x28, 0x82, 0x80, 0xf0, 0xf3, 0x3b, 0x78, 0xdd, 0x0a, 0x03, 0x80, + 0x13, 0xf0, 0x2a, 0x85, 0x40, 0x79, 0xa0, 0x85, 0x10, 0x42, 0x0c, 0x71, + 0x02, 0xf0, 0x0c, 0x70, 0xcd, 0x71, 0x99, 0xed, 0xa5, 0xf0, 0x13, 0x08, + 0x71, 0x00, 0xa1, 0x40, 0xa7, 0x5a, 0x50, 0x20, 0xfe, 0x87, 0x03, 0xf2, + 0x10, 0x42, 0xdd, 0x8d, 0x2f, 0x38, 0x83, 0x03, 0x02, 0x0b, 0x2f, 0x04, + 0x00, 0x32, 0x00, 0x20, 0x05, 0x15, 0xc2, 0x10, 0x10, 0x79, 0x3a, 0x0b, + 0x20, 0x01, 0x40, 0x40, 0x0c, 0x70, 0x52, 0x20, 0x15, 0x20, 0x15, 0x7f, + 0xd3, 0x43, 0x80, 0x7f, 0x00, 0x00, 0x0e, 0x70, 0x02, 0xf0, 0xe5, 0x74, + 0x0d, 0x8d, 0xb3, 0x08, 0x30, 0x00, 0xa1, 0x40, 0xb2, 0x5a, 0x10, 0x41, + 0xd6, 0x0f, 0x6f, 0x05, 0xa1, 0x40, 0x0a, 0x26, 0xc0, 0x24, 0x06, 0xe8, + 0x5e, 0x10, 0x00, 0x01, 0x2f, 0x3e, 0x03, 0x20, 0x0b, 0x09, 0x10, 0x20, + 0x15, 0x8d, 0xc1, 0x08, 0x1e, 0x01, 0x16, 0x15, 0x94, 0x10, 0x2e, 0x71, + 0x86, 0x09, 0xaf, 0x04, 0x00, 0x3a, 0x80, 0x25, 0xa2, 0x0a, 0x0f, 0x04, + 0x00, 0x42, 0x14, 0x70, 0x15, 0x0c, 0x3f, 0x20, 0xca, 0x22, 0x61, 0x00, + 0xde, 0x0e, 0xe0, 0x00, 0x40, 0x40, 0x09, 0x08, 0x80, 0x00, 0x1b, 0x7a, + 0x32, 0x72, 0xca, 0x21, 0x8d, 0x20, 0x46, 0x0d, 0x2f, 0x04, 0x22, 0x40, + 0x3d, 0x8d, 0x1a, 0x21, 0x8e, 0x23, 0x29, 0x09, 0xa0, 0x03, 0x00, 0x3a, + 0x12, 0x20, 0x8d, 0xe9, 0x14, 0x15, 0x91, 0x10, 0xff, 0xd8, 0xad, 0x5a, + 0x10, 0x44, 0xb5, 0x5a, 0x00, 0x43, 0x0c, 0x73, 0x22, 0x41, 0x82, 0x42, + 0xd1, 0x5a, 0xdd, 0xad, 0x1e, 0x1d, 0x03, 0x10, 0x00, 0x87, 0xbe, 0x0a, + 0xaf, 0x03, 0x42, 0x41, 0xa2, 0x40, 0xc5, 0x20, 0x61, 0x00, 0x3d, 0x08, + 0x3f, 0x00, 0xcd, 0x71, 0x14, 0x15, 0x91, 0x10, 0xb5, 0x5a, 0x00, 0x43, + 0x0c, 0x72, 0x4c, 0x70, 0x22, 0x41, 0xd1, 0x5a, 0x12, 0xf0, 0x1d, 0x8d, + 0x10, 0xe8, 0x14, 0x15, 0x91, 0x10, 0x0c, 0x70, 0xad, 0x5a, 0x10, 0x44, + 0xb5, 0x5a, 0x00, 0x43, 0x0c, 0x73, 0x22, 0x41, 0x82, 0x42, 0xd1, 0x5a, + 0x1e, 0x1d, 0x02, 0x14, 0x1d, 0x1d, 0x02, 0x14, 0xa0, 0x85, 0x1b, 0xed, + 0x01, 0x85, 0x27, 0x08, 0x10, 0x80, 0xb3, 0x5a, 0x10, 0x42, 0x8f, 0xf1, + 0x2f, 0x38, 0x43, 0x04, 0xf2, 0x09, 0x2f, 0x04, 0x00, 0x3a, 0x00, 0x20, + 0x36, 0x8d, 0x2e, 0x71, 0x14, 0x71, 0xca, 0x21, 0x0d, 0x20, 0x39, 0x09, + 0x3f, 0x80, 0x30, 0x44, 0x26, 0x0e, 0xe0, 0x00, 0x22, 0x40, 0x10, 0x41, + 0x94, 0xf1, 0xd4, 0xc7, 0xe4, 0xc3, 0xa1, 0xc1, 0xcb, 0x46, 0x80, 0x00, + 0x74, 0x20, 0xa0, 0x8e, 0xc3, 0x42, 0x80, 0x00, 0x4a, 0x12, 0xbe, 0x0e, + 0x6f, 0x07, 0xa0, 0xaa, 0x20, 0x8e, 0x1f, 0x0d, 0x60, 0x10, 0x08, 0x46, + 0x00, 0x1c, 0x43, 0x31, 0x01, 0x1c, 0x43, 0x30, 0x02, 0x1c, 0x42, 0x30, + 0xb5, 0x5a, 0x00, 0x42, 0xfe, 0xd8, 0x80, 0xc1, 0xce, 0x5a, 0xc1, 0x40, + 0xc4, 0xc7, 0xe0, 0x78, 0xe6, 0xc2, 0x2f, 0x27, 0xbf, 0x03, 0x6f, 0x23, + 0x3f, 0x00, 0x08, 0x47, 0xcb, 0x45, 0x80, 0x00, 0x34, 0x1f, 0x8c, 0x20, + 0x83, 0x8e, 0x25, 0xf2, 0x8c, 0x27, 0xc3, 0x9e, 0xcc, 0x27, 0x82, 0x9f, + 0x00, 0x00, 0xfe, 0x00, 0x3a, 0xf4, 0x0c, 0x70, 0x4e, 0x0c, 0x2f, 0x06, + 0x2c, 0x70, 0x5a, 0x0b, 0xaf, 0x06, 0x0c, 0x70, 0x00, 0x85, 0x4a, 0x24, + 0x00, 0x78, 0x80, 0x20, 0x05, 0x01, 0xa8, 0x20, 0x40, 0x01, 0x0a, 0x18, + 0x15, 0x00, 0xc3, 0x41, 0x80, 0x00, 0x44, 0x1f, 0x40, 0x81, 0x4f, 0x27, + 0x80, 0x10, 0x8c, 0x20, 0x83, 0x8f, 0x46, 0x22, 0x80, 0x02, 0x00, 0xa1, + 0x1e, 0xf4, 0x0c, 0x71, 0x16, 0x0c, 0x2f, 0x06, 0x2c, 0x70, 0x22, 0x0b, + 0xaf, 0x06, 0x0c, 0x71, 0x00, 0x85, 0x4a, 0x24, 0xc0, 0x77, 0x0e, 0xe0, + 0xa8, 0x20, 0x00, 0x01, 0x0a, 0x18, 0x15, 0x00, 0xc3, 0x41, 0x80, 0x00, + 0x44, 0x1f, 0x00, 0x81, 0x8c, 0x27, 0x83, 0x9f, 0x46, 0x20, 0x40, 0x01, + 0x00, 0xa1, 0x06, 0xf4, 0x00, 0x81, 0x84, 0x20, 0xfe, 0x07, 0x00, 0xa1, + 0x00, 0x1e, 0x03, 0x70, 0x80, 0x00, 0x8c, 0x1f, 0xa0, 0x5a, 0x2f, 0x26, + 0xbf, 0x03, 0xc6, 0xc6, 0xe6, 0xc2, 0x68, 0x47, 0x61, 0x93, 0x08, 0x45, + 0x88, 0x46, 0x10, 0x73, 0xca, 0x25, 0xcd, 0x10, 0x30, 0x75, 0xca, 0x25, + 0x4d, 0x10, 0x40, 0x41, 0xc1, 0x42, 0x1a, 0x08, 0x20, 0x00, 0xa1, 0x40, + 0xa1, 0x40, 0xe1, 0x41, 0x0e, 0x08, 0x20, 0x00, 0xc1, 0x42, 0xa1, 0x40, + 0xc6, 0xc6, 0xe0, 0x78, 0xe4, 0xc2, 0x28, 0x45, 0x66, 0x0d, 0xef, 0x05, + 0x48, 0x46, 0x16, 0x8e, 0x0d, 0x08, 0x1f, 0x00, 0xf6, 0x0c, 0xe0, 0x00, + 0x07, 0x8d, 0x07, 0xad, 0xc4, 0xc6, 0xe0, 0x78, 0xe4, 0xc2, 0xcb, 0x45, + 0x80, 0x00, 0x20, 0x12, 0x40, 0x8d, 0x1e, 0xea, 0xc3, 0x40, 0x80, 0x00, + 0x90, 0x20, 0xc0, 0x88, 0xa6, 0x0e, 0x60, 0x00, 0x01, 0x8d, 0x43, 0x85, + 0x28, 0x8d, 0x81, 0x85, 0x6c, 0x71, 0xc3, 0x44, 0x7f, 0x00, 0x08, 0xbb, + 0xac, 0x70, 0x23, 0x20, 0x00, 0x03, 0xc1, 0x40, 0x23, 0x85, 0x08, 0x8d, + 0x40, 0x8d, 0x24, 0x71, 0x61, 0x68, 0x09, 0x6a, 0x68, 0xad, 0x23, 0xa5, + 0x00, 0xad, 0xc4, 0xc6, 0x9a, 0x0f, 0x8f, 0x07, 0xc4, 0xc6, 0xe0, 0x78, + 0xe6, 0xc0, 0x5f, 0x21, 0x03, 0x06, 0xc3, 0x42, 0x80, 0x00, 0x48, 0x1f, + 0x7d, 0x62, 0x81, 0x85, 0x62, 0x62, 0xcb, 0x44, 0x7f, 0x00, 0x78, 0xe0, + 0x2b, 0x0a, 0xfe, 0x05, 0xc3, 0x68, 0x44, 0x85, 0x2b, 0x64, 0xcb, 0x43, + 0x00, 0x00, 0xff, 0xff, 0x71, 0x72, 0xca, 0x22, 0xcd, 0x02, 0x60, 0xa8, + 0x01, 0x18, 0x03, 0x03, 0x42, 0xa8, 0x28, 0xba, 0xc7, 0x68, 0x43, 0xa8, + 0x0a, 0xdf, 0x04, 0x74, 0x02, 0xf0, 0xed, 0x76, 0x42, 0x85, 0x99, 0x61, + 0xa2, 0x89, 0x41, 0x2a, 0x0c, 0x06, 0x41, 0x2a, 0x03, 0x04, 0xa0, 0xa8, + 0x82, 0xa8, 0x61, 0xa8, 0x04, 0x89, 0x41, 0x2a, 0x0b, 0x02, 0x00, 0xae, + 0x02, 0x1e, 0xc2, 0x12, 0xe1, 0x40, 0x41, 0xae, 0xc6, 0xc4, 0xe0, 0x78, + 0xf2, 0xc3, 0xa9, 0xc1, 0x00, 0x16, 0x12, 0x70, 0x80, 0x00, 0x44, 0x1f, + 0x5f, 0x21, 0x14, 0x06, 0x8a, 0x21, 0x03, 0x22, 0x84, 0x22, 0x02, 0xa0, + 0x08, 0x46, 0x30, 0x40, 0xd3, 0x43, 0x80, 0x00, 0x34, 0x1f, 0x00, 0x24, + 0x8f, 0x2f, 0x80, 0x00, 0x58, 0x1f, 0xca, 0x21, 0xe2, 0x26, 0x2f, 0x27, + 0x3f, 0x00, 0x6f, 0x23, 0x3f, 0x00, 0x05, 0xf0, 0x80, 0xc1, 0x02, 0x40, + 0xb9, 0x5a, 0x23, 0x86, 0x01, 0x86, 0x10, 0x49, 0x93, 0x08, 0x65, 0x04, + 0xad, 0x70, 0x01, 0x86, 0x19, 0xe8, 0x1d, 0x08, 0x30, 0x20, 0x22, 0x86, + 0xc3, 0x40, 0x80, 0x00, 0xac, 0x1f, 0x00, 0x90, 0x23, 0x09, 0x05, 0x00, + 0xc3, 0x40, 0x80, 0x00, 0xa4, 0x1f, 0x0b, 0xf0, 0xc3, 0x40, 0x80, 0x00, + 0xa0, 0x1f, 0x00, 0x90, 0x0f, 0x09, 0x05, 0x00, 0xc3, 0x40, 0x80, 0x00, + 0x98, 0x1f, 0x00, 0x80, 0x2d, 0x60, 0x5f, 0x25, 0x80, 0x12, 0xbf, 0xe5, + 0x05, 0xf7, 0x66, 0x41, 0x19, 0x61, 0x19, 0x49, 0x04, 0xf0, 0xc3, 0x70, + 0x80, 0x00, 0x3b, 0x15, 0x00, 0x88, 0x80, 0xc2, 0xc1, 0x41, 0x49, 0x20, + 0x83, 0x08, 0x02, 0x40, 0x3a, 0x08, 0xef, 0x06, 0x70, 0x45, 0x05, 0xed, + 0x4d, 0x0d, 0x30, 0x20, 0x70, 0xd8, 0x00, 0x87, 0xa2, 0x70, 0x00, 0xa7, + 0x20, 0xc0, 0xbf, 0xe0, 0x80, 0x07, 0xcd, 0xff, 0x66, 0x41, 0x5f, 0x20, + 0x80, 0x02, 0x38, 0x60, 0x48, 0x88, 0x22, 0x90, 0x80, 0xba, 0x71, 0x09, + 0x30, 0x80, 0x48, 0xa8, 0x24, 0x77, 0x22, 0xb0, 0xb2, 0xf1, 0x1f, 0x0a, + 0x30, 0x20, 0x00, 0x87, 0x34, 0x24, 0x81, 0x2f, 0x80, 0x00, 0x84, 0x28, + 0x07, 0xe9, 0x00, 0x20, 0x90, 0x2f, 0x80, 0x00, 0x48, 0x12, 0x00, 0x18, + 0x43, 0x20, 0xd2, 0xc7, 0xab, 0x20, 0xe0, 0x0c, 0x0c, 0x70, 0x6f, 0x26, + 0x3f, 0x04, 0x6f, 0x23, 0x3f, 0x00, 0xd2, 0xc7, 0xe4, 0xc3, 0xa3, 0xc1, + 0x5f, 0x21, 0x02, 0x06, 0x28, 0x46, 0xc3, 0x41, 0x80, 0x00, 0x48, 0x1f, + 0x3a, 0x62, 0x24, 0x82, 0x08, 0x45, 0x1b, 0xe9, 0x01, 0x82, 0x00, 0x82, + 0x6c, 0x70, 0x1b, 0x08, 0xfe, 0x05, 0x97, 0xbb, 0x01, 0x82, 0x20, 0x82, + 0x7d, 0x78, 0x0b, 0x79, 0x05, 0xf2, 0x78, 0x26, 0x00, 0x10, 0x04, 0x71, + 0xd8, 0x5a, 0x80, 0xc0, 0x5a, 0x0e, 0xef, 0xff, 0xc1, 0x41, 0x00, 0x43, + 0x80, 0xc2, 0xc1, 0x40, 0x12, 0x08, 0xef, 0x06, 0xa1, 0x41, 0x6f, 0x26, + 0x3f, 0x04, 0x6f, 0x23, 0x3f, 0x00, 0xc4, 0xc7, 0xec, 0xc2, 0x60, 0x46, + 0x40, 0x47, 0x30, 0x40, 0x10, 0x41, 0xed, 0x70, 0xcb, 0x45, 0x80, 0x00, + 0x74, 0x28, 0xcd, 0x70, 0xef, 0x79, 0x32, 0x21, 0x80, 0x0f, 0x80, 0x00, + 0x48, 0x12, 0xa9, 0x08, 0x30, 0x00, 0x20, 0x44, 0x48, 0x95, 0x09, 0x6a, + 0xcc, 0xe0, 0x9c, 0x00, 0x0d, 0x00, 0xdb, 0x47, 0x80, 0x00, 0xa0, 0x1f, + 0xcb, 0x44, 0x80, 0x00, 0x34, 0x1f, 0xc3, 0x43, 0x80, 0x00, 0xa4, 0x1f, + 0xc3, 0x41, 0x80, 0x00, 0xac, 0x1f, 0xc3, 0x40, 0x80, 0x00, 0x98, 0x1f, + 0x00, 0x14, 0x05, 0x10, 0x00, 0x13, 0x09, 0x00, 0x00, 0x11, 0x08, 0x01, + 0x00, 0x10, 0x0b, 0x00, 0x00, 0x17, 0x1f, 0x31, 0xcd, 0x70, 0x01, 0x85, + 0xd0, 0x7b, 0x33, 0x0b, 0x25, 0x00, 0x2c, 0x70, 0x02, 0x85, 0x0c, 0x15, + 0x12, 0x10, 0x78, 0x60, 0x10, 0x7c, 0x0b, 0x0c, 0x84, 0x14, 0x03, 0x85, + 0x10, 0x4c, 0x13, 0x0c, 0x30, 0x00, 0x10, 0x78, 0x13, 0x08, 0x05, 0x02, + 0x32, 0x21, 0x01, 0x10, 0x05, 0xf0, 0x0b, 0x08, 0xc5, 0x07, 0x32, 0x23, + 0x01, 0x10, 0x5f, 0x21, 0x80, 0x02, 0xbf, 0xe1, 0x04, 0xf7, 0xa0, 0x70, + 0x09, 0xe0, 0x05, 0xf0, 0xc3, 0x70, 0x80, 0x00, 0x3b, 0x15, 0x0c, 0xe9, + 0x00, 0x88, 0x0a, 0xe8, 0x50, 0x79, 0x11, 0x09, 0x24, 0x00, 0x12, 0x49, + 0x7e, 0x60, 0x2f, 0x26, 0x88, 0xf0, 0xd3, 0xf5, 0xc8, 0xb5, 0xcd, 0x71, + 0xe5, 0x71, 0xef, 0x78, 0x4d, 0x08, 0xb4, 0x80, 0x18, 0xe5, 0x22, 0x40, + 0x02, 0x41, 0xe0, 0x42, 0xa6, 0x0a, 0xaf, 0x06, 0xc0, 0x43, 0x0d, 0xee, + 0x10, 0x79, 0x07, 0xf0, 0x04, 0x71, 0x22, 0x72, 0x10, 0x79, 0x00, 0x1a, + 0x03, 0x00, 0xf9, 0x09, 0x24, 0x84, 0x10, 0x7a, 0x02, 0x40, 0x10, 0x78, + 0xcc, 0xc6, 0xe0, 0x78, 0xe4, 0xc2, 0xcb, 0x46, 0x80, 0x00, 0xf8, 0x12, + 0x21, 0x86, 0x70, 0x8e, 0x4c, 0x8e, 0x08, 0x45, 0x01, 0x69, 0x05, 0x22, + 0xfe, 0x80, 0x01, 0xa6, 0x07, 0xf2, 0x2c, 0x70, 0xfa, 0x08, 0x20, 0x00, + 0xa1, 0x40, 0x00, 0x43, 0x0f, 0xf0, 0x2c, 0x71, 0xee, 0x08, 0x20, 0x00, + 0xa1, 0x40, 0x01, 0x86, 0x0b, 0x08, 0x71, 0x00, 0x04, 0x6d, 0x16, 0x0d, + 0x0f, 0xff, 0xc3, 0x40, 0x80, 0x00, 0x1c, 0x13, 0x60, 0x88, 0x2f, 0x26, + 0xc7, 0xf0, 0x0c, 0xf4, 0x8a, 0x21, 0x0e, 0x0e, 0x04, 0x6d, 0xb9, 0x61, + 0x00, 0x19, 0x83, 0x00, 0xf6, 0x0c, 0x2f, 0xff, 0x04, 0x1e, 0x01, 0x10, + 0x25, 0x86, 0x01, 0x86, 0x29, 0x09, 0x05, 0x00, 0xc3, 0x40, 0x80, 0x00, + 0xa8, 0x3e, 0x20, 0x80, 0x41, 0x80, 0x02, 0x80, 0xe5, 0x1d, 0x58, 0x10, + 0xe6, 0x1d, 0x98, 0x10, 0xe7, 0x1d, 0x18, 0x10, 0x80, 0x25, 0x0e, 0x1e, + 0x00, 0x1d, 0x03, 0x10, 0x04, 0x1e, 0x01, 0x10, 0x6d, 0x78, 0xc4, 0xc6, + 0xe2, 0xc3, 0xa6, 0xc1, 0x60, 0x81, 0x08, 0x45, 0x04, 0x74, 0x40, 0xc3, + 0x61, 0x81, 0x41, 0xc3, 0x62, 0x81, 0x42, 0xc3, 0x63, 0x81, 0x43, 0xc3, + 0x64, 0x81, 0x44, 0xc3, 0x65, 0x81, 0x80, 0xc1, 0x5a, 0x0b, 0x2f, 0xff, + 0x45, 0xc3, 0x80, 0x25, 0xce, 0x1e, 0x0c, 0x70, 0x00, 0x1d, 0x43, 0x10, + 0xc2, 0xc7, 0xe0, 0x78, 0xe4, 0xc2, 0xcb, 0x46, 0x80, 0x00, 0xf8, 0x12, + 0x21, 0x86, 0x5a, 0x8e, 0x08, 0x45, 0x01, 0x69, 0x0b, 0x0a, 0xf4, 0x00, + 0x01, 0xa6, 0x04, 0x1e, 0x01, 0x10, 0x2c, 0x71, 0x3a, 0x08, 0x20, 0x00, + 0xa1, 0x40, 0x2f, 0x26, 0x07, 0xf0, 0x0c, 0xf4, 0x39, 0x8e, 0x15, 0x09, + 0xd1, 0x00, 0x80, 0x25, 0x0e, 0x1e, 0x00, 0x1d, 0x03, 0x11, 0x04, 0x1e, + 0x01, 0x10, 0xc4, 0xc6, 0x20, 0x85, 0x41, 0x86, 0x80, 0x21, 0x0d, 0x00, + 0x20, 0x91, 0x0f, 0x09, 0xa5, 0x00, 0x80, 0x25, 0x4e, 0x1e, 0x00, 0x1d, + 0x43, 0x10, 0xc4, 0xc6, 0xea, 0xc3, 0xa9, 0xc1, 0x10, 0x40, 0xcb, 0x46, + 0x80, 0x00, 0x08, 0x13, 0x08, 0x8e, 0x00, 0x10, 0x0d, 0x20, 0x00, 0x20, + 0x8f, 0x2f, 0x00, 0x00, 0x78, 0x03, 0x57, 0x08, 0x70, 0x00, 0x30, 0x41, + 0x63, 0x87, 0x42, 0x87, 0x21, 0x87, 0x00, 0x87, 0x8a, 0x24, 0x0d, 0x0e, + 0xce, 0x09, 0xef, 0x09, 0x00, 0x24, 0x04, 0x04, 0x63, 0x87, 0x42, 0x87, + 0x21, 0x87, 0x00, 0x87, 0x0e, 0x09, 0xef, 0x09, 0x40, 0x24, 0x04, 0x30, + 0x28, 0x8e, 0x40, 0x20, 0x00, 0x21, 0x11, 0x09, 0x31, 0x01, 0xa1, 0x42, + 0x80, 0xc1, 0x80, 0x22, 0x0a, 0x07, 0x0b, 0xf0, 0x0d, 0x09, 0xf1, 0x00, + 0x80, 0xc1, 0x80, 0x22, 0x08, 0x03, 0x05, 0xf0, 0x80, 0xc1, 0x80, 0x22, + 0x05, 0x0f, 0x62, 0x0b, 0x0f, 0xff, 0xda, 0x09, 0x0f, 0xff, 0x14, 0x8e, + 0x28, 0x8e, 0x15, 0xe8, 0x00, 0x8e, 0x79, 0x21, 0x02, 0x20, 0x78, 0x20, + 0x00, 0x00, 0x0b, 0x7a, 0x0d, 0xf4, 0x37, 0x09, 0x70, 0x00, 0xed, 0x71, + 0x2f, 0x09, 0x30, 0x01, 0x8a, 0x21, 0x0d, 0x08, 0x40, 0x20, 0x00, 0x21, + 0x40, 0x25, 0x02, 0x1e, 0x0c, 0xf0, 0x1f, 0x09, 0x70, 0x00, 0xed, 0x70, + 0x17, 0x09, 0x30, 0x01, 0x8a, 0x21, 0x0d, 0x08, 0x40, 0x20, 0x00, 0x21, + 0x40, 0x25, 0x02, 0x15, 0x6e, 0x0c, 0x2f, 0x0d, 0x02, 0x71, 0xcb, 0x45, + 0x80, 0x00, 0xa8, 0x3e, 0xc3, 0x40, 0x80, 0x00, 0x40, 0x3b, 0x1e, 0x0b, + 0x2f, 0x0d, 0xa1, 0x41, 0x06, 0x86, 0x07, 0xa5, 0xe1, 0x40, 0xca, 0xc7, + 0xe2, 0xc2, 0x2c, 0x70, 0x2a, 0x0f, 0xef, 0xff, 0x08, 0x45, 0x2f, 0x23, + 0x07, 0x80, 0xc3, 0x42, 0x80, 0x00, 0xf8, 0x12, 0x0b, 0xf4, 0x39, 0x8a, + 0x13, 0x09, 0xf0, 0x00, 0xa1, 0x41, 0x80, 0x21, 0x0e, 0x0e, 0x00, 0x19, + 0x83, 0x01, 0x04, 0x1a, 0x01, 0x00, 0x13, 0x0b, 0x71, 0x00, 0x80, 0x25, + 0x0e, 0x1e, 0x00, 0x1d, 0x83, 0x11, 0x04, 0x1a, 0x01, 0x00, 0xc2, 0xc6, + 0xf1, 0xc0, 0xc3, 0x42, 0x80, 0x00, 0xf8, 0x12, 0x21, 0x82, 0x1c, 0x1a, + 0x43, 0x00, 0x24, 0x71, 0x19, 0x09, 0x74, 0x01, 0x21, 0xa2, 0x8a, 0x21, + 0x0e, 0x0e, 0x19, 0x61, 0x00, 0x19, 0x83, 0x00, 0x12, 0x08, 0x20, 0x00, + 0x04, 0x1a, 0x01, 0x00, 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, + 0xe4, 0xc3, 0xa9, 0xc1, 0x00, 0x20, 0x8d, 0x0f, 0x00, 0x00, 0x60, 0x03, + 0x08, 0x46, 0x00, 0x85, 0x40, 0x86, 0x80, 0xc1, 0x40, 0xc0, 0x01, 0x85, + 0x54, 0x22, 0x82, 0x0b, 0x41, 0xc0, 0x02, 0x85, 0x42, 0xc0, 0x0d, 0x85, + 0x43, 0xc0, 0x0e, 0x85, 0x44, 0xc0, 0x0f, 0x85, 0x45, 0xc0, 0x0e, 0x0e, + 0xef, 0xff, 0xc1, 0x40, 0x8a, 0x20, 0x0e, 0x0f, 0x1e, 0x66, 0x00, 0x8e, + 0x2f, 0x08, 0x71, 0x00, 0x4a, 0x24, 0xc0, 0x70, 0xc3, 0x40, 0x80, 0x00, + 0x3c, 0x3b, 0x04, 0x10, 0x01, 0x04, 0x56, 0x21, 0x81, 0x0e, 0x86, 0xc2, + 0xa8, 0x20, 0x80, 0x01, 0x1c, 0x11, 0x03, 0x04, 0x04, 0x1a, 0xd0, 0x00, + 0x2a, 0x0d, 0x2f, 0x0d, 0x86, 0xc1, 0x00, 0x1e, 0x03, 0x10, 0x0c, 0x70, + 0x0d, 0xa5, 0x0e, 0xa5, 0x0f, 0xa5, 0xc4, 0xc7, 0x00, 0x41, 0x84, 0x81, + 0x65, 0x81, 0x46, 0x81, 0xe8, 0x19, 0x18, 0x03, 0xe9, 0x19, 0xd8, 0x00, + 0xea, 0x19, 0x98, 0x00, 0x80, 0x21, 0xce, 0x0e, 0x0c, 0x70, 0xe0, 0x7f, + 0x00, 0x19, 0x03, 0x00, 0xe2, 0xc2, 0x28, 0x45, 0xb3, 0x5a, 0x5a, 0x25, + 0x81, 0x12, 0x00, 0x16, 0x02, 0x70, 0x80, 0x00, 0x34, 0x1f, 0x08, 0x45, + 0x0c, 0x70, 0x59, 0x61, 0x41, 0x91, 0x16, 0xea, 0x07, 0x89, 0x84, 0xe8, + 0x0c, 0x71, 0x07, 0xa9, 0x2f, 0x38, 0x03, 0x00, 0x86, 0x0a, 0xef, 0x03, + 0x00, 0x3d, 0x00, 0x10, 0x50, 0x25, 0xfe, 0x97, 0x2c, 0x70, 0xca, 0x21, + 0x62, 0x00, 0x78, 0x20, 0x02, 0x00, 0x4b, 0x79, 0xca, 0x20, 0x62, 0x00, + 0xc2, 0xc6, 0xe0, 0x78, 0x05, 0xe8, 0x00, 0x18, 0x84, 0x0f, 0x00, 0x00, + 0xe1, 0x07, 0x06, 0xe9, 0x00, 0x19, 0x82, 0x0f, 0x00, 0x00, 0x01, 0x00, + 0x05, 0xea, 0x00, 0x1a, 0x82, 0x0f, 0x00, 0x00, 0x03, 0x00, 0x06, 0xeb, + 0x00, 0x1b, 0x82, 0x0f, 0x00, 0x00, 0x05, 0x00, 0x0d, 0x0c, 0x10, 0x00, + 0x00, 0x1c, 0x82, 0x0f, 0x00, 0x00, 0x1b, 0x00, 0xb4, 0x70, 0xe0, 0x7c, + 0x00, 0x1d, 0x82, 0x0f, 0x00, 0x00, 0x18, 0x00, 0xe0, 0x7e, 0xe0, 0x78, + 0xaa, 0x20, 0xe1, 0x07, 0xaa, 0x21, 0xe1, 0x07, 0x30, 0x70, 0xfc, 0xf5, + 0xe0, 0x7f, 0x10, 0x78, 0xe2, 0xc2, 0x62, 0x0e, 0xaf, 0x05, 0x08, 0x45, + 0x00, 0x42, 0x06, 0xe8, 0x35, 0x8d, 0x0b, 0x09, 0x3f, 0x01, 0x0c, 0x71, + 0x40, 0x40, 0xc2, 0xc6, 0xe2, 0xc2, 0x35, 0x88, 0xc1, 0xb9, 0x29, 0x09, + 0x51, 0x00, 0x2d, 0x88, 0x13, 0xe9, 0xbd, 0x88, 0x05, 0x10, 0xc0, 0x00, + 0xb5, 0x70, 0x16, 0x0a, 0xe0, 0x00, 0xca, 0x25, 0x61, 0x10, 0x2f, 0x39, + 0x43, 0x03, 0x2f, 0x38, 0x03, 0x00, 0x00, 0x38, 0x40, 0x00, 0xc2, 0xc6, + 0x9a, 0x0d, 0x0f, 0x05, 0xc2, 0xc6, 0x0c, 0x70, 0xc2, 0xc6, 0xe0, 0x78, + 0xec, 0xc3, 0xa1, 0xc1, 0x08, 0x46, 0x16, 0x88, 0xa8, 0x47, 0x88, 0x45, + 0x70, 0x40, 0x50, 0x41, 0x19, 0x08, 0x3e, 0x00, 0x30, 0x42, 0xc1, 0x40, + 0x42, 0x41, 0x22, 0x42, 0x02, 0x43, 0xa1, 0x44, 0xe2, 0x0d, 0x2f, 0x05, + 0xe1, 0x45, 0xcc, 0xc7, 0xea, 0x0a, 0x2f, 0x05, 0xc1, 0x40, 0x42, 0x41, + 0x22, 0x42, 0x02, 0x43, 0xa1, 0x44, 0xce, 0x0d, 0x2f, 0x05, 0xe1, 0x45, + 0x40, 0x24, 0x84, 0x30, 0xc1, 0x40, 0x42, 0x41, 0x22, 0x42, 0x02, 0x43, + 0xba, 0x0d, 0x2f, 0x05, 0xe1, 0x45, 0x20, 0x95, 0x02, 0x14, 0x02, 0x31, + 0x20, 0x40, 0x01, 0x0a, 0x24, 0x00, 0x3d, 0x79, 0x00, 0xb5, 0xcc, 0xc7, + 0x27, 0x08, 0xd5, 0x06, 0xc3, 0x41, 0x30, 0x00, 0x08, 0x00, 0x11, 0x09, + 0x2e, 0x00, 0x2c, 0x73, 0xc3, 0x40, 0x60, 0x00, 0xd8, 0x13, 0xe0, 0x7e, + 0x19, 0xb9, 0x0f, 0x09, 0x0e, 0x00, 0xc3, 0x40, 0x60, 0x00, 0x5c, 0x1a, + 0xe0, 0x7e, 0xc3, 0x40, 0x60, 0x00, 0x54, 0x0d, 0xe0, 0x7e, 0xe0, 0x78, + 0xf1, 0xc0, 0xc3, 0x42, 0x80, 0x00, 0x80, 0x12, 0x40, 0x82, 0x2c, 0x70, + 0xcf, 0x5a, 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe4, 0xc3, 0xa5, 0xc1, + 0x08, 0x45, 0x81, 0xc0, 0x12, 0x0a, 0x2f, 0x08, 0x81, 0xc6, 0x2e, 0x0a, + 0xef, 0x07, 0x40, 0x24, 0xc0, 0x30, 0x03, 0x14, 0x80, 0x30, 0x4a, 0x21, + 0x00, 0x00, 0x2f, 0x38, 0x03, 0x00, 0x44, 0xc0, 0x00, 0x86, 0x24, 0x71, + 0x00, 0x38, 0x80, 0x0f, 0x20, 0x3c, 0x12, 0xac, 0xf5, 0x09, 0xf2, 0x80, + 0x04, 0x1e, 0x10, 0x10, 0x00, 0x16, 0x80, 0x70, 0x80, 0x00, 0xe4, 0x1f, + 0x0d, 0x08, 0x3e, 0x01, 0xfa, 0xd8, 0x48, 0x85, 0x81, 0xc1, 0xce, 0x5a, + 0xc3, 0x40, 0x80, 0x00, 0xd8, 0x13, 0x02, 0x0a, 0x6f, 0xfe, 0x81, 0xc1, + 0x84, 0x20, 0x42, 0x00, 0x8c, 0x20, 0x42, 0x80, 0x0c, 0xf4, 0x48, 0x85, + 0xc3, 0x40, 0x80, 0x00, 0x80, 0x12, 0x2c, 0x70, 0x40, 0xa0, 0xa1, 0x40, + 0xcf, 0x5a, 0x2c, 0x70, 0xa1, 0x40, 0xde, 0x5a, 0x0c, 0x70, 0xc4, 0xc7, + 0xf1, 0xc0, 0xc3, 0x40, 0x80, 0x00, 0xd8, 0x13, 0xca, 0x09, 0x4f, 0xfe, + 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, 0xe4, 0xc2, 0x9e, 0x08, + 0x2f, 0x05, 0x08, 0x45, 0xba, 0x08, 0x2f, 0x05, 0x08, 0x46, 0x00, 0x42, + 0x0c, 0x71, 0xc1, 0x41, 0xb1, 0x5a, 0x72, 0x15, 0x81, 0x10, 0xc6, 0xb9, + 0x72, 0x1d, 0x42, 0x10, 0x05, 0xe8, 0x72, 0x10, 0xc0, 0x00, 0x11, 0x08, + 0x12, 0x00, 0x04, 0x8d, 0x2c, 0x74, 0x0a, 0x0b, 0x6f, 0xff, 0x4c, 0x70, + 0x0c, 0x70, 0xc4, 0xc6, 0xe4, 0xc2, 0x66, 0x08, 0x2f, 0x05, 0x08, 0x45, + 0x82, 0x08, 0x2f, 0x05, 0x08, 0x46, 0x00, 0x42, 0x0c, 0x71, 0xc1, 0x41, + 0xb1, 0x5a, 0x72, 0x15, 0xc1, 0x10, 0x1f, 0x09, 0x12, 0x00, 0x06, 0xe8, + 0x72, 0x10, 0xc0, 0x00, 0x13, 0x08, 0x12, 0x00, 0x04, 0x8d, 0x2c, 0x74, + 0xd2, 0x0a, 0x6f, 0xff, 0x4c, 0x71, 0x72, 0x15, 0x81, 0x10, 0x87, 0xb9, + 0x0c, 0x70, 0x72, 0x1d, 0x42, 0x10, 0xc4, 0xc6, 0xc3, 0x40, 0x80, 0x00, + 0xf6, 0x12, 0xe0, 0x7f, 0x00, 0x90, 0xe0, 0x78, 0xc3, 0x40, 0x80, 0x00, + 0xe0, 0x12, 0xe0, 0x7f, 0x00, 0x80, 0xe0, 0x78, 0xf1, 0xc0, 0x20, 0x45, + 0x72, 0x11, 0xc1, 0x00, 0x1f, 0x09, 0x33, 0x00, 0x0c, 0xd9, 0xc3, 0x42, + 0x80, 0x00, 0xe0, 0x12, 0x03, 0xa2, 0x04, 0x15, 0x80, 0x00, 0x6c, 0x76, + 0xc3, 0x44, 0x7f, 0x00, 0xec, 0xc3, 0x10, 0xe2, 0xc0, 0x5a, 0xd1, 0xc0, + 0xe0, 0x7e, 0xe0, 0x78, 0xc3, 0x40, 0x80, 0x00, 0xe4, 0x12, 0xe0, 0x7f, + 0x00, 0x80, 0xe0, 0x78, 0xc3, 0x40, 0x80, 0x00, 0xe8, 0x12, 0xe0, 0x7f, + 0x00, 0x80, 0xe0, 0x78, 0xe6, 0xc2, 0x28, 0x43, 0x9c, 0xe8, 0xc3, 0x43, + 0x80, 0x00, 0xe0, 0x12, 0x15, 0x13, 0xce, 0x00, 0x54, 0x8b, 0x11, 0x13, + 0xc0, 0x00, 0x13, 0x13, 0xc1, 0x00, 0x08, 0xbe, 0xf0, 0x8b, 0x92, 0x8b, + 0x45, 0x7e, 0x43, 0x83, 0x08, 0xb8, 0x08, 0xb9, 0x05, 0x7f, 0xcb, 0x45, + 0x80, 0x00, 0x10, 0x1b, 0x61, 0x40, 0x25, 0x7c, 0xe0, 0xa5, 0x81, 0xa5, + 0x60, 0x7a, 0xc2, 0xa5, 0xc6, 0xc6, 0xe0, 0x78, 0xe4, 0xc3, 0xa1, 0xc1, + 0x08, 0x45, 0x04, 0x88, 0x2c, 0x70, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, + 0xbf, 0x5a, 0x22, 0xde, 0x92, 0xe8, 0x03, 0x14, 0x80, 0x30, 0x21, 0xde, + 0x6c, 0x20, 0x80, 0x00, 0x8c, 0x20, 0x03, 0x84, 0x0a, 0xf4, 0xd2, 0x0f, + 0x2f, 0xff, 0x04, 0x8d, 0x86, 0xe8, 0x0c, 0x70, 0x5a, 0x08, 0x20, 0x00, + 0xa1, 0x41, 0xcd, 0x70, 0xc1, 0x40, 0xc4, 0xc7, 0xe6, 0xc2, 0x28, 0x45, + 0x2c, 0x70, 0xc3, 0x43, 0x7f, 0x00, 0x02, 0xe1, 0xc3, 0x93, 0x13, 0x09, + 0xf5, 0x00, 0x60, 0x42, 0x40, 0x22, 0x03, 0x02, 0xf5, 0x0e, 0x24, 0x90, + 0x24, 0x71, 0x0a, 0x12, 0x00, 0x00, 0xcb, 0x47, 0x80, 0x00, 0xe0, 0x12, + 0xcb, 0xb7, 0x02, 0xa7, 0x28, 0x8a, 0x3e, 0x0c, 0xef, 0x06, 0x04, 0x8d, + 0x00, 0x87, 0x80, 0xb8, 0x09, 0x08, 0x71, 0x00, 0x0c, 0x71, 0xa2, 0x5a, + 0x0c, 0x70, 0xa1, 0x41, 0xd6, 0x5a, 0xc1, 0x40, 0xc6, 0xc6, 0xe0, 0x78, + 0xe6, 0xc2, 0x28, 0x45, 0xcb, 0x46, 0x80, 0x00, 0xe0, 0x12, 0x29, 0x08, + 0xb4, 0x00, 0x08, 0x47, 0x37, 0x0f, 0x30, 0x14, 0x8c, 0x27, 0x02, 0x90, + 0xcc, 0x27, 0x82, 0x9f, 0x00, 0x00, 0xff, 0x00, 0x1c, 0xf4, 0x04, 0x8d, + 0x4a, 0x0d, 0xef, 0x06, 0xff, 0xd9, 0xff, 0xd8, 0x00, 0xa6, 0x13, 0xf0, + 0x04, 0x8d, 0x3e, 0x0d, 0xef, 0x06, 0x2c, 0x70, 0x72, 0x15, 0x80, 0x10, + 0xc6, 0xb8, 0x72, 0x1d, 0x02, 0x10, 0xe0, 0xa6, 0x07, 0xf0, 0xb2, 0x08, + 0x6f, 0xff, 0x04, 0x8d, 0x00, 0x41, 0xa1, 0x40, 0xd0, 0x5a, 0x0c, 0x70, + 0xa1, 0x41, 0xd5, 0x5a, 0x00, 0x86, 0xc6, 0xc6, 0xea, 0xc3, 0xa1, 0xc1, + 0xad, 0x70, 0x28, 0x47, 0x10, 0x41, 0x03, 0x1c, 0x42, 0x33, 0x4a, 0x24, + 0x00, 0x71, 0xcb, 0x46, 0x7f, 0x00, 0xe4, 0xe0, 0x40, 0x26, 0x10, 0x14, + 0xa8, 0x20, 0xc0, 0x02, 0x04, 0x10, 0x00, 0x25, 0x22, 0x41, 0x6a, 0x0e, + 0xaf, 0x03, 0x2f, 0x38, 0x03, 0x00, 0x43, 0xf6, 0xa5, 0x71, 0x04, 0x8f, + 0x42, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0xbf, 0x5a, 0xb5, 0x7e, + 0x03, 0x14, 0x80, 0x30, 0x92, 0x8e, 0x42, 0xd9, 0x6c, 0x20, 0xcd, 0x00, + 0x53, 0x24, 0xc0, 0x10, 0xa5, 0x78, 0x03, 0x1c, 0x02, 0x30, 0x04, 0x8f, + 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0xc1, 0x5a, 0xcb, 0x45, 0x80, 0x00, + 0xe0, 0x12, 0x00, 0x85, 0x80, 0xb8, 0x0b, 0x08, 0x71, 0x00, 0x0c, 0x71, + 0xa2, 0x5a, 0x04, 0x8f, 0x76, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, + 0xbf, 0x5a, 0x48, 0x96, 0xcb, 0x44, 0x80, 0x00, 0x1c, 0x1b, 0x2f, 0x3b, + 0x83, 0x00, 0x03, 0x14, 0xc0, 0x30, 0x4c, 0x78, 0x14, 0x78, 0x2f, 0x39, + 0x03, 0x00, 0x2f, 0x38, 0x83, 0x0f, 0x00, 0x00, 0x00, 0x32, 0x00, 0x39, + 0x00, 0x00, 0x01, 0x33, 0x01, 0x00, 0x0c, 0x70, 0x20, 0xa4, 0x2f, 0x39, + 0x83, 0x00, 0x21, 0xa5, 0xe1, 0x41, 0xd7, 0x5a, 0x01, 0x85, 0xca, 0xc7, + 0xec, 0xc3, 0xcb, 0x47, 0x80, 0x00, 0x44, 0x1f, 0x00, 0x87, 0xe7, 0xb8, + 0xec, 0x01, 0x22, 0x00, 0xa2, 0xc1, 0xab, 0x5a, 0xd3, 0x40, 0x80, 0x00, + 0x54, 0x1f, 0xad, 0x70, 0x40, 0x20, 0x8e, 0x22, 0xaf, 0x78, 0xac, 0x5a, + 0xa5, 0x71, 0x18, 0x1e, 0x14, 0x10, 0xaf, 0x78, 0xf5, 0x08, 0x94, 0x80, + 0xcb, 0x46, 0x80, 0x00, 0x8c, 0x1f, 0x00, 0x1e, 0x03, 0x10, 0xc9, 0x5a, + 0x00, 0x87, 0xe2, 0xb8, 0x17, 0xf2, 0x22, 0x10, 0x00, 0x21, 0x14, 0x70, + 0x13, 0xf4, 0x06, 0x44, 0x1e, 0x40, 0x0b, 0x08, 0xdf, 0x05, 0x1c, 0x18, + 0x01, 0x20, 0x6f, 0x26, 0x3f, 0x04, 0x6f, 0x23, 0x3f, 0x00, 0x00, 0x8e, + 0xa4, 0xb8, 0x00, 0xae, 0x00, 0x87, 0xa2, 0xb8, 0x00, 0xa7, 0x6f, 0x26, + 0xff, 0x05, 0x00, 0x87, 0x4b, 0x20, 0x80, 0x84, 0x04, 0xf2, 0x00, 0x8e, + 0x83, 0xb8, 0x00, 0xae, 0x00, 0x87, 0x4b, 0x20, 0x40, 0x84, 0x07, 0xf2, + 0xc4, 0x5a, 0x85, 0xe8, 0x00, 0x8e, 0x86, 0xb8, 0x00, 0xae, 0x00, 0x8e, + 0xab, 0x20, 0x60, 0x06, 0xaa, 0x20, 0x20, 0x0e, 0xaa, 0x21, 0x20, 0x0e, + 0xf9, 0x08, 0x41, 0x80, 0xc5, 0x5a, 0x14, 0x70, 0x0e, 0xf2, 0xc4, 0x5a, + 0x0a, 0xe8, 0x00, 0x16, 0x00, 0x70, 0x80, 0x00, 0x78, 0x1f, 0x86, 0xe8, + 0x00, 0x8e, 0x4b, 0x20, 0x80, 0x81, 0x04, 0xf2, 0x00, 0x87, 0x14, 0x70, + 0x9c, 0xf2, 0xb8, 0x5a, 0x80, 0xd8, 0xe1, 0x41, 0x2f, 0x20, 0x4c, 0x00, + 0x40, 0xc0, 0x00, 0x87, 0x40, 0x28, 0x03, 0x06, 0x41, 0x28, 0x02, 0x04, + 0x41, 0x28, 0x01, 0x02, 0xab, 0x23, 0x60, 0x0d, 0xab, 0x22, 0x60, 0x0d, + 0xab, 0x21, 0x60, 0x0d, 0xab, 0x20, 0x60, 0x0d, 0x00, 0xc5, 0xaf, 0x78, + 0x0f, 0x0d, 0x7e, 0x10, 0xab, 0x20, 0x20, 0x0d, 0x00, 0x8e, 0x83, 0xb8, + 0x00, 0xae, 0x11, 0x0d, 0x1e, 0x10, 0xc4, 0x5a, 0x84, 0xe8, 0x00, 0x8e, + 0x86, 0xb8, 0x00, 0xae, 0x11, 0x0d, 0x3e, 0x11, 0x80, 0xc0, 0xc8, 0x5a, + 0x04, 0xe8, 0x00, 0x8e, 0x14, 0x70, 0x72, 0xf2, 0x00, 0xc0, 0x0d, 0x08, + 0xde, 0x00, 0x0c, 0x70, 0xd2, 0x5a, 0x00, 0xc0, 0x0b, 0x08, 0x9e, 0x00, + 0x0c, 0x71, 0xd2, 0x5a, 0x00, 0xc0, 0x6d, 0x08, 0x1e, 0x01, 0xb5, 0x5a, + 0x20, 0x8e, 0xcb, 0x45, 0x80, 0x00, 0x8d, 0x1f, 0x85, 0x21, 0x01, 0x02, + 0x20, 0xae, 0x05, 0x1c, 0x43, 0x30, 0x20, 0x8d, 0x06, 0x1c, 0x42, 0x30, + 0x07, 0x1c, 0x03, 0x30, 0x20, 0x8d, 0x19, 0x09, 0x34, 0x08, 0x08, 0x46, + 0x00, 0x8d, 0x8c, 0x20, 0x03, 0x8f, 0x06, 0xf2, 0x00, 0x8d, 0x8c, 0x20, + 0xc3, 0x8f, 0x07, 0xf4, 0xfe, 0xd8, 0x40, 0x24, 0x41, 0x31, 0xc1, 0x42, + 0xce, 0x5a, 0x00, 0x8d, 0x0b, 0x08, 0x14, 0x08, 0x00, 0x8d, 0xc0, 0xe0, + 0x89, 0xf7, 0x00, 0x8d, 0x8c, 0x20, 0x43, 0x8f, 0x05, 0xf2, 0x00, 0x8d, + 0x8c, 0x20, 0xc3, 0x8f, 0x06, 0xf4, 0xf8, 0xd8, 0x40, 0x24, 0x41, 0x31, + 0xc1, 0x42, 0xce, 0x5a, 0x6f, 0x26, 0x3f, 0x04, 0x6f, 0x23, 0x3f, 0x00, + 0xab, 0x5a, 0x2e, 0x70, 0x0a, 0x22, 0x00, 0x24, 0xad, 0x70, 0xaf, 0x7e, + 0xc1, 0x40, 0x18, 0x1a, 0x50, 0x24, 0xac, 0x5a, 0xa5, 0x71, 0xf2, 0x1a, + 0x04, 0xa0, 0xc3, 0x76, 0x80, 0x00, 0x48, 0x12, 0xaf, 0x78, 0xeb, 0x08, + 0xb4, 0x80, 0x00, 0x1e, 0x42, 0x14, 0x00, 0x87, 0x8a, 0x21, 0x10, 0x00, + 0x6c, 0x20, 0x40, 0x00, 0x00, 0xa7, 0x6f, 0x26, 0xff, 0x05, 0xab, 0x21, + 0xe1, 0x0c, 0x0a, 0x10, 0x00, 0x21, 0x85, 0xe8, 0x22, 0x10, 0x00, 0x21, + 0x0a, 0xe8, 0x0a, 0x10, 0x00, 0x21, 0x22, 0x10, 0x01, 0x21, 0xc7, 0x5a, + 0x0c, 0x70, 0xcc, 0xc7, 0xa0, 0x5a, 0xfe, 0xf1, 0x20, 0xc1, 0x75, 0xd8, + 0xab, 0x21, 0x20, 0x0d, 0x20, 0x87, 0x40, 0x29, 0x0c, 0x06, 0x41, 0x29, + 0x03, 0x04, 0x41, 0x29, 0x02, 0x02, 0xab, 0x24, 0x60, 0x1d, 0xab, 0x23, + 0x60, 0x0d, 0xab, 0x22, 0x60, 0x0d, 0xab, 0x21, 0x60, 0x0d, 0xcd, 0x5a, + 0x00, 0x1f, 0x01, 0x10, 0xe6, 0xf1, 0xe0, 0x78, 0xe4, 0xc2, 0x0b, 0x08, + 0x7e, 0x00, 0x08, 0x46, 0xa0, 0x5a, 0x09, 0x0e, 0x9e, 0x10, 0xdc, 0x5a, + 0x8b, 0x26, 0x02, 0x92, 0x04, 0xf2, 0xc1, 0x40, 0xc5, 0x5a, 0x1a, 0xe8, + 0xcb, 0x45, 0x80, 0x00, 0x8c, 0x1f, 0x00, 0x8d, 0x27, 0x08, 0x3f, 0x00, + 0xc1, 0x40, 0xc5, 0x5a, 0x0f, 0xe8, 0xc3, 0x40, 0x80, 0x00, 0x44, 0x1f, + 0x00, 0x80, 0x17, 0x08, 0xde, 0x01, 0xaa, 0x20, 0xe0, 0x06, 0x85, 0xe8, + 0xaa, 0x20, 0x20, 0x07, 0x03, 0xe8, 0x00, 0x8d, 0xc3, 0x5a, 0xc4, 0xc6, + 0x0a, 0x0a, 0xcf, 0x05, 0xc4, 0xc6, 0xe0, 0x78, 0xec, 0xc3, 0xa1, 0xc1, + 0x10, 0x41, 0x50, 0x4b, 0xa8, 0x46, 0x48, 0x45, 0x30, 0x40, 0x42, 0x28, + 0x92, 0x80, 0x03, 0x1c, 0x03, 0x30, 0x20, 0xf2, 0x13, 0x0c, 0x10, 0x01, + 0x09, 0x0c, 0xd0, 0x01, 0x0f, 0x0c, 0x91, 0x01, 0x40, 0x24, 0xd0, 0x30, + 0x03, 0xf0, 0x40, 0x24, 0xd1, 0x30, 0x29, 0x08, 0x72, 0x00, 0xed, 0x71, + 0x04, 0x15, 0x00, 0x14, 0x40, 0x24, 0xc2, 0x30, 0x02, 0x41, 0x61, 0x80, + 0x60, 0x7b, 0x22, 0x40, 0x02, 0xee, 0x00, 0xa6, 0x0d, 0x0f, 0xa3, 0x14, + 0xe5, 0x71, 0x03, 0x14, 0x80, 0x30, 0x72, 0xe8, 0xcc, 0xc7, 0xe0, 0x78, + 0xe6, 0xc0, 0x35, 0x09, 0x12, 0x00, 0x28, 0x46, 0x61, 0xb9, 0x29, 0x09, + 0x72, 0x00, 0x6c, 0x70, 0x80, 0x80, 0x00, 0x42, 0xa1, 0x82, 0xe0, 0x8c, + 0x64, 0x71, 0x00, 0x15, 0x8b, 0x10, 0x71, 0x77, 0xca, 0x24, 0x4e, 0x13, + 0xc3, 0xf7, 0x81, 0xa2, 0xa0, 0xa2, 0xed, 0x0b, 0x62, 0x80, 0x44, 0x74, + 0xd7, 0x0e, 0x53, 0x90, 0xc6, 0xc4, 0xe0, 0x78, 0xc3, 0x42, 0x7f, 0x00, + 0x64, 0xe1, 0xc3, 0x43, 0x7f, 0x00, 0x68, 0xe1, 0x8c, 0x75, 0x65, 0x07, + 0xef, 0xff, 0xac, 0x70, 0xc3, 0x42, 0x7f, 0x00, 0x58, 0xe1, 0xc3, 0x43, + 0x7f, 0x00, 0x5c, 0xe1, 0x8c, 0x73, 0x51, 0x07, 0xef, 0xff, 0xac, 0x70, + 0x8c, 0x70, 0xc3, 0x42, 0x7f, 0x00, 0x48, 0xe1, 0xc3, 0x43, 0x7f, 0x00, + 0x4c, 0xe1, 0x3d, 0x07, 0xef, 0xff, 0x80, 0x45, 0xc3, 0x42, 0x7f, 0x00, + 0x54, 0xe1, 0xc3, 0x43, 0x7f, 0x00, 0x58, 0xe1, 0x8c, 0x72, 0x29, 0x07, + 0xef, 0xff, 0xac, 0x70, 0xc3, 0x42, 0x7f, 0x00, 0x4c, 0xe1, 0xc3, 0x43, + 0x7f, 0x00, 0x54, 0xe1, 0x8c, 0x71, 0x15, 0x07, 0xef, 0xff, 0xac, 0x70, + 0x0c, 0x70, 0x2c, 0x70, 0xc3, 0x42, 0x7f, 0x00, 0x5c, 0xe1, 0xc3, 0x43, + 0x7f, 0x00, 0x64, 0xe1, 0x8c, 0x74, 0xfd, 0x06, 0xef, 0xff, 0x00, 0x45, + 0xf1, 0xc0, 0xa1, 0xc1, 0x2c, 0x70, 0xc3, 0x42, 0x7f, 0x00, 0x68, 0xe1, + 0xc3, 0x43, 0x7f, 0x00, 0x6c, 0xe1, 0x4a, 0x24, 0xc0, 0x01, 0xe2, 0x0e, + 0xef, 0xff, 0x40, 0x24, 0x05, 0x30, 0x00, 0xc0, 0x87, 0x74, 0xd1, 0xc0, + 0xe0, 0x7e, 0xe0, 0x78, 0xe4, 0xc2, 0xad, 0x70, 0xcb, 0x46, 0x7f, 0x00, + 0x80, 0xe0, 0x00, 0x86, 0x21, 0x86, 0x02, 0x79, 0x22, 0xb9, 0x2f, 0x79, + 0x09, 0x09, 0x92, 0x00, 0x0e, 0x0f, 0xcf, 0xff, 0xa5, 0x71, 0xef, 0x0d, + 0x34, 0x92, 0x08, 0xe6, 0xc4, 0xc6, 0xe0, 0x78, 0x2c, 0x70, 0xc3, 0x42, + 0x7f, 0x00, 0x68, 0xe1, 0xc3, 0x43, 0x7f, 0x00, 0x68, 0xe1, 0x8c, 0x76, + 0x95, 0x06, 0xef, 0xff, 0x20, 0x45, 0xe0, 0x78, 0xa1, 0xc1, 0x8a, 0x23, + 0x06, 0x08, 0x4c, 0x71, 0x10, 0xf0, 0x02, 0x1c, 0xc4, 0x30, 0x02, 0x14, + 0x01, 0x31, 0x04, 0x77, 0x13, 0x00, 0x00, 0x00, 0xab, 0x22, 0x61, 0x0a, + 0x8b, 0x44, 0x21, 0x94, 0x24, 0x77, 0x21, 0xb4, 0x21, 0x94, 0xfa, 0xe9, + 0x2f, 0x26, 0x08, 0xf0, 0xef, 0xf5, 0xe0, 0x7f, 0x87, 0x74, 0xe0, 0x78, + 0xe6, 0xc2, 0x48, 0x41, 0x57, 0x88, 0x68, 0x40, 0x75, 0x88, 0xf6, 0x88, + 0x94, 0x88, 0xac, 0x88, 0x08, 0xba, 0x08, 0xbb, 0x45, 0x7f, 0x85, 0x7b, + 0x40, 0x2f, 0x02, 0x14, 0x20, 0x46, 0xcb, 0x46, 0x00, 0x00, 0xaa, 0x0a, + 0x2c, 0x70, 0x6d, 0x72, 0x4a, 0x24, 0x00, 0x72, 0xc3, 0xbd, 0x45, 0x7b, + 0xa8, 0x20, 0x80, 0x05, 0x53, 0x23, 0x42, 0x00, 0x4f, 0x22, 0x4c, 0x00, + 0x13, 0x0c, 0xb1, 0x10, 0x00, 0x2b, 0x4c, 0x10, 0x86, 0x7e, 0x54, 0x72, + 0xcf, 0x26, 0x41, 0x10, 0x06, 0xf2, 0x0d, 0x0a, 0x71, 0x00, 0x00, 0x2b, + 0x42, 0x10, 0x45, 0x7e, 0x22, 0xbb, 0x24, 0x72, 0xc0, 0x41, 0x21, 0x42, + 0x3a, 0x0d, 0x6f, 0x06, 0x01, 0x43, 0x0c, 0x71, 0xbb, 0x7b, 0x2c, 0x73, + 0x78, 0x79, 0x92, 0x6d, 0x00, 0x42, 0x98, 0x7a, 0x26, 0x7e, 0xab, 0x22, + 0xa1, 0x0d, 0xab, 0x26, 0xe2, 0x13, 0xc6, 0xc6, 0xaa, 0x20, 0x20, 0x0e, + 0xaa, 0x21, 0x20, 0x0e, 0x30, 0x70, 0xfc, 0xf5, 0x44, 0x20, 0x00, 0x08, + 0xe0, 0x7f, 0x25, 0xb8, 0xec, 0xc3, 0x82, 0x24, 0x0e, 0x32, 0x56, 0x24, + 0x40, 0x38, 0x80, 0xc1, 0x80, 0x20, 0x0a, 0x00, 0x0b, 0x09, 0x25, 0x00, + 0x40, 0xc1, 0x00, 0x41, 0x40, 0xc0, 0x82, 0xc0, 0x56, 0x20, 0x00, 0x08, + 0x07, 0x09, 0x05, 0x00, 0x40, 0xc0, 0xd3, 0x42, 0x80, 0x00, 0x0b, 0x06, + 0x0c, 0x70, 0xcb, 0x46, 0x80, 0x00, 0x6c, 0x12, 0x40, 0x22, 0x41, 0x20, + 0xc3, 0x43, 0xa5, 0x5a, 0x6b, 0xb6, 0x1b, 0xda, 0x21, 0xa6, 0x60, 0xa1, + 0x42, 0x0c, 0x6f, 0xff, 0xab, 0x22, 0xa0, 0x0d, 0xc3, 0x40, 0x7f, 0x00, + 0x6c, 0xe1, 0xc3, 0x41, 0x7f, 0x00, 0x5c, 0xe2, 0x02, 0x79, 0xd3, 0x41, + 0x7f, 0x00, 0x5c, 0xe2, 0xc3, 0x43, 0x7f, 0x00, 0x00, 0xe5, 0xd3, 0x40, + 0x7f, 0x00, 0x00, 0xe5, 0xc3, 0x42, 0x7f, 0x00, 0xd0, 0xe5, 0x02, 0x23, + 0x4f, 0x04, 0x02, 0x22, 0x0d, 0x04, 0x84, 0x29, 0x01, 0x0e, 0x44, 0x2f, + 0x0f, 0x1d, 0x29, 0xae, 0x2f, 0x79, 0x44, 0x2d, 0x0d, 0x1d, 0xea, 0xae, + 0xb2, 0x09, 0xef, 0x04, 0xab, 0xae, 0xef, 0x79, 0xba, 0x09, 0xef, 0x04, + 0x22, 0x40, 0xaf, 0x79, 0xc2, 0x09, 0xef, 0x04, 0x02, 0x40, 0xcb, 0x45, + 0x7f, 0x00, 0xd0, 0xe5, 0xce, 0x08, 0x2f, 0x03, 0xa1, 0x40, 0xaa, 0x22, + 0xe1, 0x04, 0x56, 0x24, 0x40, 0x38, 0x20, 0xd9, 0x05, 0x22, 0x82, 0x0f, + 0x54, 0x2a, 0x00, 0x00, 0xea, 0x0f, 0x6f, 0x04, 0xab, 0x22, 0xe1, 0x04, + 0x82, 0xc0, 0x66, 0x0d, 0xaf, 0x04, 0x10, 0xd9, 0xc3, 0x40, 0x7f, 0x00, + 0x00, 0xe6, 0xc3, 0x41, 0x7f, 0x00, 0xff, 0xff, 0xc3, 0x42, 0x80, 0x00, + 0x00, 0x00, 0x42, 0x43, 0xca, 0x5a, 0x14, 0x70, 0xac, 0x01, 0x21, 0x00, + 0x1c, 0xd9, 0x0c, 0x70, 0x96, 0x0b, 0x6f, 0xff, 0xab, 0x21, 0xa0, 0x0d, + 0x0a, 0x8e, 0x2b, 0x8e, 0xcb, 0x47, 0x80, 0x00, 0x38, 0x13, 0x49, 0x8e, + 0x00, 0x21, 0x04, 0x00, 0x61, 0x87, 0x20, 0x87, 0x62, 0x0e, 0xef, 0xff, + 0xa1, 0x40, 0x1d, 0xd9, 0x0c, 0x70, 0x72, 0x0b, 0x6f, 0xff, 0xab, 0x21, + 0xa0, 0x0d, 0xc3, 0x40, 0x7f, 0x00, 0x80, 0xc9, 0x05, 0xe8, 0x22, 0x20, + 0x80, 0x0f, 0x7f, 0x00, 0x80, 0xc9, 0x22, 0x0c, 0x00, 0x00, 0x20, 0xd8, + 0x40, 0x24, 0x92, 0x31, 0xd3, 0x40, 0x00, 0x00, 0x00, 0x00, 0xab, 0x20, + 0xa0, 0x0d, 0x07, 0xf0, 0x27, 0xd8, 0xab, 0x20, 0xa0, 0x0d, 0x69, 0x20, + 0x40, 0x80, 0x21, 0xd8, 0xad, 0x70, 0xab, 0x20, 0xa0, 0x0d, 0xab, 0x25, + 0xe0, 0x1c, 0xaa, 0x20, 0xe0, 0x05, 0xaa, 0x21, 0xe0, 0x05, 0xfb, 0x08, + 0x41, 0x80, 0x8a, 0xe8, 0x16, 0x70, 0x85, 0xf2, 0x22, 0x20, 0x80, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x70, 0x7f, 0xf2, 0xc2, 0x5a, 0x22, 0xd9, + 0xc3, 0x40, 0x00, 0x00, 0x00, 0x00, 0xab, 0x21, 0xa0, 0x0d, 0x06, 0xe8, + 0x22, 0x20, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0a, 0x6f, 0xff, + 0x0c, 0x71, 0x04, 0xf0, 0xfa, 0x0a, 0x4f, 0x06, 0xad, 0x70, 0xaa, 0x20, + 0xe0, 0x05, 0xaa, 0x21, 0xe0, 0x05, 0xfb, 0x08, 0x41, 0x80, 0x8a, 0xe8, + 0xc7, 0x08, 0x10, 0x20, 0x22, 0x20, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0xbb, 0x08, 0x10, 0x00, 0xbb, 0x5a, 0x2f, 0x26, 0x47, 0xf3, 0x59, 0xf4, + 0x52, 0x20, 0x3e, 0x80, 0x55, 0xf2, 0x23, 0xd8, 0xab, 0x20, 0xa0, 0x0d, + 0x2a, 0x8e, 0x0b, 0x8e, 0x41, 0x87, 0x3b, 0x60, 0x29, 0x8e, 0xc6, 0x0c, + 0x6f, 0x06, 0x00, 0x87, 0x08, 0x45, 0x08, 0xe8, 0xa1, 0x40, 0xcd, 0x5a, + 0x5e, 0xd8, 0xab, 0x20, 0xa0, 0x0d, 0x2a, 0xf0, 0x96, 0x0a, 0x6f, 0xff, + 0x0c, 0x71, 0xc3, 0x40, 0x00, 0x00, 0x00, 0x00, 0x05, 0xe8, 0x22, 0x20, + 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x70, 0xa1, 0x5a, 0xc3, 0x40, + 0x00, 0x00, 0x54, 0x2a, 0x05, 0x1c, 0x03, 0x34, 0x00, 0x1a, 0x04, 0x20, + 0xb5, 0x5a, 0x00, 0x42, 0xfe, 0xd8, 0x40, 0x24, 0x41, 0x31, 0xce, 0x5a, + 0x0b, 0x16, 0x84, 0x10, 0x6a, 0x8e, 0x41, 0x87, 0x29, 0x8e, 0x82, 0x08, + 0x20, 0x00, 0x00, 0x87, 0x10, 0x41, 0xad, 0x70, 0x04, 0xe8, 0x22, 0x40, + 0xcd, 0x5a, 0x2a, 0x45, 0x24, 0xd8, 0xab, 0x20, 0xa0, 0x0d, 0x0a, 0x8e, + 0x6b, 0x8e, 0x41, 0x87, 0x29, 0x8e, 0x1b, 0x63, 0x46, 0x0d, 0x6f, 0x06, + 0x00, 0x87, 0xc3, 0x40, 0x00, 0x00, 0x00, 0x00, 0x05, 0xe8, 0x22, 0x20, + 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x25, 0xd8, 0x37, 0x0d, 0x31, 0x90, + 0xab, 0x20, 0xa0, 0x0d, 0x94, 0xf1, 0x26, 0xd8, 0x2f, 0x26, 0x47, 0xf3, + 0xab, 0x20, 0xa0, 0x0d, 0x03, 0xf2, 0x4a, 0x0a, 0x4f, 0x06, 0xaa, 0x20, + 0xe0, 0x05, 0xaa, 0x21, 0xe0, 0x05, 0xfb, 0x08, 0x41, 0x80, 0x14, 0x70, + 0x5f, 0xf5, 0x5a, 0xf1, 0xaa, 0x20, 0xe0, 0x0c, 0x2f, 0x26, 0x07, 0xf0, + 0x04, 0xf4, 0x20, 0xd8, 0xab, 0x20, 0xe0, 0x0c, 0x0c, 0x71, 0xab, 0x20, + 0x61, 0x0a, 0xfe, 0xf1, 0xf0, 0xc2, 0x0e, 0x71, 0xd3, 0x41, 0x80, 0x00, + 0x38, 0x12, 0x88, 0x47, 0x68, 0x45, 0x50, 0x44, 0x30, 0x42, 0x10, 0x43, + 0x00, 0x19, 0x02, 0x24, 0xd3, 0x5a, 0x06, 0xe8, 0x62, 0x40, 0x1a, 0x0c, + 0xef, 0x04, 0x42, 0x41, 0xbf, 0x67, 0xad, 0x70, 0x05, 0xf0, 0x2e, 0xd8, + 0x0e, 0x70, 0xab, 0x20, 0xa0, 0x0d, 0xaa, 0x20, 0xe0, 0x05, 0xaa, 0x21, + 0xe0, 0x05, 0xfb, 0x08, 0x41, 0x80, 0x8d, 0xe8, 0xc3, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x14, 0x70, 0x72, 0xf2, 0x22, 0x20, 0x80, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x14, 0x70, 0x6c, 0xf2, 0xbb, 0x5a, 0x2f, 0x26, 0x47, 0xf3, + 0x68, 0xf4, 0x52, 0x20, 0x3e, 0x80, 0x66, 0xf2, 0xcd, 0x71, 0x62, 0x40, + 0x42, 0x41, 0x82, 0x42, 0xe1, 0x43, 0x0a, 0x24, 0x00, 0x04, 0xab, 0x26, + 0x61, 0x1a, 0xa5, 0x5a, 0x08, 0x45, 0xd9, 0xe8, 0x28, 0xd8, 0xab, 0x26, + 0x61, 0x1a, 0xab, 0x20, 0xa0, 0x0d, 0xb7, 0x5a, 0x08, 0x45, 0xd1, 0xe8, + 0x0c, 0x71, 0xab, 0x20, 0x61, 0x0a, 0x29, 0xdc, 0x62, 0x40, 0x42, 0x41, + 0x82, 0x42, 0xe1, 0x43, 0x6e, 0x0b, 0x2f, 0x05, 0xab, 0x24, 0xa0, 0x1d, + 0xad, 0x70, 0x36, 0x09, 0x6f, 0xff, 0x0c, 0x71, 0xcb, 0x46, 0x80, 0x00, + 0x6c, 0x12, 0x00, 0x8e, 0x06, 0xe8, 0x0c, 0x71, 0xab, 0x20, 0x61, 0x0a, + 0xab, 0x20, 0xa1, 0x0a, 0x2a, 0xd9, 0xff, 0xd8, 0xab, 0x21, 0xa0, 0x0d, + 0xba, 0x5a, 0x2b, 0xd8, 0x2f, 0x26, 0x47, 0xf3, 0xab, 0x20, 0xa0, 0x0d, + 0x0c, 0xf4, 0x62, 0x40, 0x42, 0x41, 0x82, 0x42, 0xe1, 0x43, 0x0a, 0x24, + 0x00, 0x04, 0xa5, 0x5a, 0x08, 0x45, 0x84, 0xe8, 0xb7, 0x5a, 0x08, 0x45, + 0x2c, 0xd8, 0xab, 0x20, 0xa0, 0x0d, 0x00, 0x8e, 0x84, 0xe8, 0x00, 0x11, + 0x80, 0x20, 0x85, 0xe8, 0x5a, 0xd8, 0xab, 0x20, 0xa1, 0x0a, 0x0c, 0x70, + 0xc3, 0x41, 0x80, 0x00, 0xa0, 0x1e, 0x2f, 0x20, 0x4c, 0x00, 0x9b, 0x08, + 0x11, 0x80, 0x6f, 0x21, 0x3f, 0x00, 0x00, 0x8e, 0x06, 0xe8, 0x0c, 0x71, + 0xab, 0x20, 0x61, 0x0a, 0xab, 0x20, 0xa1, 0x0a, 0x2d, 0xd8, 0xab, 0x20, + 0xa0, 0x0d, 0x81, 0xf1, 0x3f, 0xd9, 0xaf, 0x78, 0xab, 0x21, 0xa0, 0x0d, + 0xd0, 0xc6, 0xe0, 0x78, 0xec, 0xc2, 0x56, 0x0d, 0xaf, 0x04, 0x10, 0x40, + 0x72, 0x0d, 0xaf, 0x04, 0x08, 0x45, 0x00, 0x42, 0x02, 0x40, 0xa1, 0x41, + 0xb6, 0x5a, 0x08, 0x45, 0x8c, 0xe8, 0x4a, 0x0d, 0x8f, 0x04, 0x6a, 0x0d, + 0xaf, 0x04, 0x08, 0x45, 0x00, 0x42, 0x02, 0x40, 0xa1, 0x41, 0xb6, 0x5a, + 0x08, 0x45, 0x39, 0xe8, 0xa1, 0x40, 0xb3, 0x5a, 0x4f, 0x20, 0x52, 0x21, + 0x50, 0x20, 0x50, 0x21, 0x00, 0x16, 0x0e, 0x70, 0x80, 0x00, 0x34, 0x1f, + 0x5a, 0x22, 0x8f, 0x22, 0x5a, 0x20, 0x81, 0x22, 0xdf, 0x67, 0xee, 0x0c, + 0x6f, 0x03, 0x3e, 0x66, 0x35, 0x8d, 0x17, 0x09, 0x7e, 0x01, 0x10, 0x41, + 0x82, 0x09, 0x6f, 0x05, 0xc1, 0x40, 0x7e, 0x09, 0x6f, 0x05, 0xe1, 0x40, + 0x0b, 0xf0, 0x22, 0x40, 0xc1, 0x41, 0x16, 0x0c, 0x6f, 0xff, 0xa1, 0x42, + 0x22, 0x40, 0xe1, 0x41, 0x0a, 0x0c, 0x6f, 0xff, 0xa1, 0x42, 0xa1, 0x40, + 0x02, 0x41, 0xae, 0x5a, 0x01, 0xb6, 0xa1, 0x40, 0x42, 0x41, 0xae, 0x5a, + 0x01, 0xb7, 0x32, 0x8d, 0x87, 0xe9, 0x21, 0x96, 0x10, 0x7a, 0x50, 0x71, + 0xca, 0x20, 0x49, 0x00, 0x13, 0xb5, 0xcc, 0xc6, 0xe8, 0xc2, 0xc3, 0x40, + 0x80, 0x00, 0x44, 0x1f, 0x00, 0x80, 0x37, 0x08, 0xff, 0x01, 0x0e, 0x70, + 0xab, 0x5a, 0xcb, 0x45, 0x80, 0x00, 0x54, 0x1f, 0xcd, 0x70, 0xcf, 0x7f, + 0xe1, 0x40, 0xac, 0x5a, 0x0b, 0x0f, 0x71, 0x10, 0x05, 0xb5, 0xc4, 0x5a, + 0x83, 0xe8, 0x05, 0x95, 0x87, 0xe8, 0xc5, 0x71, 0xcf, 0x78, 0xeb, 0x08, + 0xb4, 0x80, 0x18, 0xe5, 0x03, 0xf0, 0x00, 0x15, 0x10, 0x10, 0x02, 0x40, + 0xc8, 0xc6, 0xe0, 0x78, 0xe6, 0xc2, 0xcb, 0x45, 0x80, 0x00, 0x8c, 0x1e, + 0x00, 0x8d, 0xcd, 0x70, 0xed, 0x70, 0x0e, 0xe8, 0xf2, 0x08, 0xaf, 0x04, + 0xcd, 0x78, 0x00, 0x90, 0x20, 0x8d, 0xc5, 0x71, 0x1d, 0x78, 0xc0, 0xb8, + 0xcf, 0x7a, 0xf1, 0x0a, 0x64, 0x80, 0x1f, 0x67, 0xef, 0x78, 0xc6, 0xc6, + 0xf1, 0xc0, 0xc3, 0x43, 0xff, 0x46, 0x00, 0xfe, 0x0e, 0x08, 0x00, 0x00, + 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, 0xea, 0xc3, 0xa6, 0xc1, + 0x68, 0x47, 0x50, 0x40, 0x30, 0x41, 0x08, 0x45, 0xb0, 0x5a, 0x00, 0x41, + 0x83, 0xc0, 0x23, 0x20, 0x40, 0x04, 0x2f, 0x3e, 0x43, 0x10, 0x23, 0x20, + 0x00, 0x04, 0x40, 0x24, 0xc0, 0x30, 0x00, 0x3f, 0x80, 0x13, 0x83, 0xc1, + 0x5e, 0x08, 0x60, 0x00, 0x81, 0xc2, 0x03, 0x14, 0x80, 0x30, 0x81, 0xc1, + 0x0a, 0x1c, 0x02, 0x30, 0x48, 0x85, 0xa1, 0x40, 0xcf, 0x5a, 0x0c, 0x70, + 0xca, 0xc7, 0xe0, 0x78, 0xe2, 0xc2, 0xee, 0x0f, 0xaf, 0x05, 0x0c, 0x71, + 0xc3, 0x42, 0x80, 0x00, 0x34, 0x12, 0x00, 0xa2, 0xc3, 0x41, 0x7f, 0x00, + 0xf0, 0xd2, 0x0c, 0x71, 0xcc, 0x5a, 0x79, 0x20, 0x0d, 0x00, 0x0c, 0x71, + 0xc3, 0x41, 0x7f, 0x00, 0x74, 0xd2, 0xcb, 0x5a, 0x79, 0x20, 0x00, 0x00, + 0xa4, 0x78, 0xc2, 0xc6, 0xea, 0xc2, 0x50, 0x41, 0x28, 0x46, 0x9e, 0x09, + 0x2f, 0x07, 0x08, 0x45, 0x10, 0x40, 0xff, 0xe5, 0x1b, 0xf4, 0x2c, 0x70, + 0xff, 0xdc, 0xc3, 0x42, 0x80, 0x00, 0xe4, 0x1f, 0x1d, 0x00, 0x00, 0x00, + 0x00, 0x8a, 0x6c, 0x71, 0xa4, 0x78, 0x00, 0xaa, 0x01, 0x11, 0x8d, 0x24, + 0x38, 0x7b, 0x24, 0x71, 0xb5, 0x70, 0xc5, 0x20, 0xc2, 0x00, 0x00, 0xaa, + 0x73, 0x09, 0x13, 0x02, 0xe5, 0x09, 0xa2, 0x83, 0x12, 0x24, 0x4d, 0x10, + 0x33, 0xf0, 0x42, 0x25, 0xc0, 0x13, 0x63, 0x08, 0xd5, 0x00, 0xcb, 0x47, + 0x80, 0x00, 0x30, 0x12, 0xcb, 0x46, 0x80, 0x00, 0x40, 0x13, 0x27, 0x0d, + 0x70, 0x14, 0x0e, 0x71, 0x39, 0x0d, 0x30, 0x14, 0x1c, 0x4e, 0x47, 0x0d, + 0xf1, 0x13, 0x08, 0xda, 0xc1, 0x40, 0x02, 0x09, 0x6f, 0x04, 0x22, 0x41, + 0x00, 0x8f, 0x08, 0x1e, 0xc3, 0x10, 0x80, 0xb8, 0x16, 0xf0, 0x38, 0x4e, + 0x08, 0xda, 0xee, 0x08, 0x6f, 0x04, 0x22, 0x41, 0x00, 0x8f, 0xc3, 0x41, + 0x80, 0x00, 0x60, 0x13, 0x00, 0x19, 0xc3, 0x00, 0x82, 0xb8, 0x0a, 0xf0, + 0x08, 0xda, 0xd6, 0x08, 0x6f, 0x04, 0x22, 0x41, 0x00, 0x8f, 0x14, 0x1e, + 0xc3, 0x10, 0x81, 0xb8, 0x00, 0xaf, 0x02, 0x40, 0xca, 0xc6, 0xe0, 0x78, + 0xe6, 0xc2, 0x28, 0x47, 0xfe, 0x0f, 0xef, 0x06, 0x08, 0x45, 0x08, 0x46, + 0xff, 0xe5, 0x16, 0xf4, 0x4a, 0x24, 0x00, 0x72, 0x2c, 0x70, 0x8d, 0x71, + 0xc3, 0x43, 0x80, 0x00, 0xe4, 0x1f, 0xa8, 0x20, 0x00, 0x03, 0x00, 0x8b, + 0x00, 0x2c, 0x42, 0x10, 0x24, 0x71, 0x44, 0x78, 0x79, 0x20, 0x00, 0x00, + 0x01, 0x1f, 0x12, 0x10, 0xe0, 0x78, 0x18, 0xf0, 0x42, 0x25, 0xc0, 0x13, + 0x29, 0x08, 0xd5, 0x00, 0xc3, 0x41, 0x80, 0x00, 0x40, 0x13, 0x13, 0x0d, + 0x70, 0x14, 0xcd, 0x71, 0x0f, 0x0d, 0x10, 0x14, 0x0d, 0x0d, 0xd0, 0x13, + 0x08, 0xf0, 0x18, 0xe1, 0x02, 0xf0, 0x0c, 0xe1, 0x0a, 0xda, 0x62, 0x08, + 0x6f, 0x04, 0xe1, 0x40, 0xc1, 0x40, 0xc6, 0xc6, 0xf1, 0xc0, 0x00, 0x43, + 0x61, 0xb8, 0x0f, 0x08, 0x35, 0x02, 0x60, 0x40, 0x22, 0x08, 0x00, 0x00, + 0x0b, 0xf0, 0xcb, 0x44, 0x7f, 0x00, 0x40, 0xb7, 0x0c, 0x70, 0x07, 0xec, + 0x60, 0x40, 0x22, 0x20, 0x80, 0x0f, 0x7f, 0x00, 0x40, 0xb7, 0xd1, 0xc0, + 0xe0, 0x7e, 0xe0, 0x78, 0xea, 0xc2, 0x08, 0x46, 0x01, 0x8a, 0xcb, 0x45, + 0x80, 0x00, 0x20, 0x12, 0x00, 0x12, 0x91, 0x00, 0x08, 0xad, 0x62, 0x8a, + 0xd3, 0x40, 0x80, 0x00, 0x90, 0x20, 0x40, 0x20, 0x00, 0x21, 0x03, 0xa5, + 0xc1, 0x40, 0xae, 0x09, 0x2f, 0x07, 0x60, 0xad, 0xed, 0x71, 0xab, 0xe8, + 0x51, 0x0e, 0x75, 0x12, 0x0c, 0x70, 0x20, 0x8d, 0xe0, 0xbe, 0xc3, 0x42, + 0x60, 0x00, 0x68, 0x5d, 0xcb, 0x46, 0x60, 0x00, 0xd4, 0x5d, 0xca, 0x26, + 0x81, 0x10, 0x24, 0x77, 0x35, 0x09, 0x35, 0x01, 0xc1, 0xa5, 0x43, 0x85, + 0x28, 0x8d, 0x03, 0x18, 0x02, 0x20, 0x6c, 0x71, 0xc3, 0x44, 0x7f, 0x00, + 0x08, 0xbb, 0xac, 0x70, 0x22, 0x40, 0x23, 0x20, 0x80, 0x03, 0xe1, 0xad, + 0x28, 0x8d, 0x00, 0x8d, 0x43, 0x85, 0x24, 0x71, 0x69, 0x68, 0x01, 0x6a, + 0x60, 0xad, 0x28, 0xad, 0x03, 0xa5, 0x03, 0xf0, 0xed, 0x70, 0xe1, 0x40, + 0xca, 0xc6, 0xe0, 0x78, 0xf1, 0xc0, 0x20, 0x43, 0x29, 0x68, 0x1b, 0x09, + 0x35, 0x02, 0x00, 0x42, 0xc3, 0x41, 0x80, 0x00, 0x90, 0x20, 0x08, 0xda, + 0x92, 0x0f, 0x2f, 0x04, 0x60, 0x40, 0x0c, 0x71, 0x0c, 0xf0, 0xc3, 0x41, + 0x7f, 0x00, 0x78, 0xb7, 0x0c, 0x70, 0x08, 0xe9, 0x40, 0x40, 0x60, 0x41, + 0x22, 0x20, 0x80, 0x0f, 0x7f, 0x00, 0x78, 0xb7, 0xd1, 0xc0, 0xe0, 0x7e, + 0xe4, 0xc2, 0x2d, 0x88, 0x67, 0x09, 0x30, 0x00, 0xad, 0x70, 0x14, 0x88, + 0x5f, 0x08, 0x71, 0x00, 0xff, 0xdd, 0xae, 0x09, 0x8f, 0x04, 0xce, 0x09, + 0xaf, 0x04, 0x08, 0x46, 0x00, 0x42, 0x0c, 0x71, 0xc1, 0x41, 0xb6, 0x5a, + 0x03, 0xe8, 0xb2, 0x5a, 0xa1, 0xe8, 0xa2, 0x09, 0x8f, 0x04, 0xc2, 0x09, + 0xaf, 0x04, 0x08, 0x46, 0x00, 0x42, 0x17, 0xd8, 0xc1, 0x41, 0xb6, 0x5a, + 0x03, 0xe8, 0x0d, 0x88, 0x95, 0xe8, 0x00, 0x16, 0x00, 0x70, 0x80, 0x00, + 0x80, 0x20, 0x23, 0x08, 0x70, 0x00, 0x80, 0xdd, 0x1b, 0x08, 0x80, 0x0f, + 0x01, 0x00, 0x05, 0x80, 0x13, 0x08, 0x80, 0x0f, 0x08, 0x00, 0x11, 0x00, + 0x0b, 0x08, 0x80, 0x0f, 0x0e, 0x00, 0x15, 0x20, 0xff, 0xdd, 0xa1, 0x40, + 0xc4, 0xc6, 0xe0, 0x78, 0xe6, 0xc2, 0x48, 0x45, 0x6b, 0x08, 0x74, 0x08, + 0x08, 0x46, 0x3a, 0x09, 0x8f, 0x04, 0x5a, 0x09, 0xaf, 0x04, 0x08, 0x47, + 0x42, 0x26, 0x01, 0x18, 0x00, 0x42, 0x2f, 0x78, 0xe1, 0x41, 0xb1, 0x5a, + 0x00, 0x42, 0x6c, 0x70, 0x2a, 0xe8, 0x48, 0x43, 0x80, 0x23, 0x41, 0x1a, + 0xf0, 0xdc, 0x16, 0xf0, 0x44, 0x2b, 0x8e, 0x00, 0x41, 0x2b, 0xc0, 0x07, + 0x19, 0x63, 0xc0, 0xb9, 0x10, 0x49, 0x32, 0x68, 0xc8, 0x65, 0x64, 0x71, + 0x01, 0x28, 0x41, 0x00, 0x05, 0x21, 0x00, 0x03, 0xe3, 0xb9, 0xc3, 0xb9, + 0xca, 0x20, 0x41, 0x00, 0x01, 0x1b, 0x12, 0x10, 0x72, 0x12, 0x81, 0x00, + 0xc6, 0xb9, 0x2a, 0x79, 0x89, 0xe1, 0xca, 0x21, 0x65, 0x02, 0xcd, 0x0b, + 0x64, 0x80, 0x0c, 0x71, 0x05, 0xf0, 0xc1, 0x40, 0x0e, 0x0c, 0xaf, 0x05, + 0xa1, 0x42, 0xc6, 0xc6, 0x0c, 0x70, 0xc6, 0xc6, 0xea, 0xc3, 0xa2, 0xc1, + 0xc3, 0x42, 0x80, 0x00, 0x34, 0x12, 0x40, 0x82, 0x28, 0x47, 0x60, 0x7a, + 0x08, 0x46, 0x7f, 0x08, 0x30, 0x00, 0x0b, 0x6e, 0x35, 0x08, 0xb5, 0x04, + 0xb4, 0x6e, 0x0e, 0x70, 0x80, 0x25, 0x43, 0x14, 0xaf, 0x78, 0xbf, 0xe0, + 0x0b, 0xf7, 0x00, 0x16, 0x02, 0x70, 0x80, 0x00, 0x34, 0x1f, 0x5f, 0x20, + 0x81, 0x02, 0x59, 0x61, 0x28, 0x89, 0x0d, 0x09, 0x9f, 0x00, 0x96, 0x0c, + 0x2f, 0x05, 0x2c, 0x71, 0x06, 0x71, 0xe1, 0x08, 0x32, 0xa4, 0xa5, 0x71, + 0xad, 0x71, 0x9f, 0xe6, 0xb1, 0xf4, 0x76, 0x08, 0x8f, 0x04, 0x10, 0x40, + 0x92, 0x08, 0xaf, 0x04, 0xe5, 0x74, 0x10, 0x41, 0xcd, 0x70, 0x32, 0x26, + 0x80, 0x1f, 0x7f, 0x00, 0x74, 0xe0, 0x02, 0x41, 0x22, 0x42, 0xb1, 0x5a, + 0x0a, 0xe8, 0x28, 0x80, 0x40, 0x79, 0xad, 0x5a, 0x20, 0x8f, 0x55, 0x68, + 0x53, 0x21, 0x00, 0x01, 0x45, 0x78, 0x00, 0xaf, 0xc5, 0x71, 0xdf, 0x0e, + 0xf4, 0x90, 0xe5, 0x75, 0x93, 0xf0, 0x2f, 0x0e, 0x11, 0x16, 0x8a, 0x08, + 0xcf, 0x02, 0x8d, 0x70, 0x05, 0xe8, 0x27, 0x88, 0x86, 0x88, 0x08, 0xb9, + 0x25, 0x7c, 0x02, 0x6f, 0x24, 0x6f, 0x45, 0x6f, 0x66, 0x6f, 0x40, 0x27, + 0xc4, 0x11, 0x40, 0x27, 0x05, 0x12, 0x80, 0xb7, 0xaf, 0x5a, 0xad, 0x71, + 0x7d, 0xf0, 0x3d, 0x0e, 0x31, 0x18, 0xad, 0x70, 0x2a, 0x08, 0x8f, 0x04, + 0x02, 0x08, 0xaf, 0x04, 0x08, 0x46, 0xeb, 0x0e, 0x30, 0x10, 0xad, 0x71, + 0x21, 0x87, 0x40, 0x87, 0x40, 0x20, 0x03, 0x05, 0x78, 0x13, 0x80, 0x04, + 0x42, 0x26, 0x4e, 0x90, 0x0f, 0x22, 0x02, 0x00, 0x00, 0x2d, 0x00, 0x10, + 0x5f, 0xb8, 0x05, 0x79, 0xf6, 0xf5, 0x40, 0xa7, 0x21, 0xa7, 0x61, 0xf0, + 0xbf, 0x0e, 0x54, 0x18, 0xce, 0x0f, 0x4f, 0x04, 0xee, 0x0f, 0x6f, 0x04, + 0x10, 0x40, 0x42, 0x26, 0x01, 0x18, 0x00, 0x42, 0x2f, 0x78, 0x02, 0x41, + 0xb1, 0x5a, 0xa7, 0x08, 0x30, 0x00, 0x10, 0x40, 0x55, 0x26, 0x00, 0x1e, + 0x00, 0xaf, 0x08, 0x10, 0x80, 0x20, 0x23, 0x6f, 0x40, 0x24, 0x82, 0x31, + 0x01, 0xaf, 0x09, 0x10, 0x8c, 0x20, 0x81, 0xc3, 0x40, 0x24, 0x84, 0x30, + 0x40, 0x24, 0x45, 0x30, 0x02, 0x40, 0x82, 0xaf, 0xb4, 0x5a, 0x02, 0x40, + 0xb0, 0x5a, 0x02, 0xb7, 0x02, 0x40, 0xb3, 0x5a, 0x72, 0x0f, 0x0f, 0x03, + 0x26, 0x8f, 0x04, 0xb7, 0x72, 0x10, 0x80, 0x20, 0xa0, 0xb9, 0x27, 0xb8, + 0x25, 0x78, 0x06, 0xaf, 0x20, 0x10, 0x01, 0x20, 0x60, 0x79, 0x02, 0x40, + 0xad, 0x5a, 0x26, 0x8f, 0x55, 0x68, 0xad, 0x71, 0x53, 0x21, 0x00, 0x01, + 0x45, 0x78, 0x06, 0xaf, 0x72, 0x10, 0x80, 0x20, 0x2c, 0x70, 0x80, 0x20, + 0x41, 0x2a, 0xc6, 0xb8, 0x0a, 0xaf, 0x13, 0xf0, 0x44, 0x29, 0x8c, 0x00, + 0x58, 0x61, 0x01, 0x10, 0x83, 0x24, 0xc0, 0xb8, 0x42, 0x78, 0xfa, 0x64, + 0x8b, 0x8a, 0xc3, 0xbb, 0x02, 0xb8, 0x00, 0x2b, 0x00, 0x00, 0x85, 0x78, + 0x0b, 0xaa, 0x0a, 0x8f, 0x24, 0x71, 0x0a, 0x78, 0x8a, 0xe0, 0xca, 0x20, + 0xa5, 0x02, 0xd9, 0x09, 0x24, 0x80, 0x41, 0x29, 0xc2, 0x07, 0xa1, 0x40, + 0xca, 0xc7, 0xe0, 0x78, 0xc3, 0x41, 0x80, 0x00, 0x48, 0x1b, 0x20, 0x81, + 0x20, 0xa0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, 0xc3, 0x41, 0x80, 0x00, + 0x4c, 0x1b, 0x20, 0x81, 0x20, 0xa0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, + 0xc3, 0x41, 0x80, 0x00, 0x44, 0x1b, 0x20, 0x81, 0x20, 0xa0, 0xe0, 0x7f, + 0x0c, 0x70, 0xe0, 0x78, 0xc3, 0x41, 0x80, 0x00, 0x6c, 0x1b, 0x20, 0x81, + 0x20, 0xa0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, 0xc3, 0x41, 0x80, 0x00, + 0x78, 0x1b, 0x20, 0x81, 0x20, 0xa0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, + 0xc3, 0x41, 0x80, 0x00, 0x44, 0x1b, 0x0e, 0x81, 0xe0, 0x7f, 0x2f, 0x81, + 0xc3, 0x40, 0x80, 0x00, 0x8c, 0x1b, 0xe0, 0x7f, 0x00, 0x88, 0xe0, 0x78, + 0xe6, 0xc0, 0xc3, 0x41, 0x80, 0x00, 0x44, 0x1b, 0x0c, 0x70, 0xcb, 0x47, + 0x78, 0x3f, 0x00, 0x00, 0xcb, 0x46, 0x19, 0x3f, 0x9a, 0x99, 0xcb, 0x45, + 0xf5, 0x3d, 0x8f, 0xc2, 0xc3, 0x43, 0x4c, 0x3e, 0xcd, 0xcc, 0xcb, 0x44, + 0x40, 0x41, 0x00, 0x00, 0x0f, 0xa1, 0x0e, 0xa1, 0x0c, 0xa1, 0x34, 0x19, + 0x41, 0x01, 0xe0, 0xa1, 0xc1, 0xa1, 0xa2, 0xa1, 0x63, 0xa1, 0x64, 0xa1, + 0x40, 0x19, 0xc1, 0x00, 0x69, 0xa1, 0x0b, 0xa1, 0x08, 0xa1, 0x07, 0xa1, + 0x06, 0xa1, 0x05, 0xa1, 0x8a, 0xa1, 0x11, 0xa1, 0x12, 0xa1, 0xc6, 0xc4, + 0xc3, 0x41, 0x80, 0x00, 0x44, 0x1b, 0x0c, 0x70, 0x0f, 0xa1, 0xe0, 0x7f, + 0x0e, 0xa1, 0xe0, 0x78, 0xc3, 0x41, 0x80, 0x00, 0x48, 0x1b, 0x00, 0xa1, + 0xe0, 0x7f, 0x0c, 0x70, 0xc3, 0x41, 0x80, 0x00, 0x4c, 0x1b, 0x00, 0xa1, + 0xe0, 0x7f, 0x0c, 0x70, 0xc3, 0x41, 0x80, 0x00, 0x44, 0x1b, 0x00, 0xa1, + 0xe0, 0x7f, 0x0c, 0x70, 0xc3, 0x41, 0x80, 0x00, 0x6c, 0x1b, 0x00, 0xa1, + 0xe0, 0x7f, 0x0c, 0x70, 0xc3, 0x41, 0x80, 0x00, 0x78, 0x1b, 0x00, 0xa1, + 0xe0, 0x7f, 0x0c, 0x70, 0xf6, 0xc2, 0xcb, 0x45, 0x80, 0x00, 0x44, 0x1b, + 0x00, 0x31, 0x41, 0x00, 0x48, 0x1d, 0x01, 0x10, 0x00, 0x30, 0x00, 0x00, + 0x65, 0x85, 0x01, 0x30, 0x40, 0x00, 0x26, 0x85, 0x00, 0x32, 0x82, 0x00, + 0xd3, 0x44, 0x80, 0x3e, 0x00, 0x00, 0x01, 0x30, 0x80, 0x00, 0xc7, 0x85, + 0x00, 0x33, 0x82, 0x0f, 0x40, 0xbf, 0x00, 0x00, 0x66, 0xa5, 0x00, 0x31, + 0x01, 0x05, 0x42, 0x0a, 0x6f, 0x03, 0x01, 0x31, 0x8f, 0x00, 0x24, 0x15, + 0x12, 0x10, 0x23, 0x85, 0x81, 0x85, 0x44, 0x85, 0x02, 0x31, 0x81, 0x04, + 0x6b, 0x85, 0x08, 0x15, 0x13, 0x10, 0x00, 0x36, 0x08, 0x15, 0x07, 0xa5, + 0x00, 0x30, 0x0b, 0x05, 0xc1, 0x6b, 0x02, 0x32, 0x80, 0x04, 0xcb, 0xa5, + 0x00, 0x34, 0x41, 0x10, 0x01, 0x33, 0x0b, 0x12, 0x00, 0x34, 0x00, 0x10, + 0x01, 0x32, 0x50, 0x20, 0x62, 0x41, 0x02, 0x33, 0xcf, 0x13, 0x01, 0x32, + 0x11, 0x20, 0xe5, 0xa5, 0x02, 0x30, 0x80, 0x24, 0x0c, 0x1d, 0x00, 0x14, + 0x62, 0x0d, 0x2f, 0x03, 0x10, 0x1d, 0x40, 0x14, 0x45, 0xf6, 0x01, 0x32, + 0xd0, 0x24, 0x0c, 0x1d, 0x00, 0x14, 0xe1, 0x40, 0x4e, 0x0d, 0x2f, 0x03, + 0x02, 0x41, 0xa2, 0x00, 0x0c, 0x00, 0x10, 0x85, 0x9b, 0x08, 0xb1, 0x00, + 0xe3, 0xa5, 0x97, 0x0e, 0xd4, 0x11, 0x11, 0x85, 0x32, 0xe8, 0x38, 0x15, + 0x16, 0x10, 0x3c, 0x15, 0x15, 0x10, 0x28, 0x15, 0x10, 0x10, 0x40, 0x26, + 0x41, 0xa0, 0x41, 0x25, 0x00, 0xa0, 0x2e, 0xa5, 0x0f, 0xa5, 0xc1, 0x40, + 0xe6, 0x0f, 0x2f, 0x03, 0x01, 0x30, 0x17, 0x24, 0x08, 0x46, 0x02, 0x37, + 0x00, 0x20, 0xc3, 0x41, 0x40, 0x40, 0x00, 0x00, 0x06, 0x0d, 0x2f, 0x03, + 0xbf, 0xb8, 0x48, 0xf6, 0x40, 0x26, 0x81, 0xa0, 0x41, 0x25, 0x00, 0xa0, + 0x2e, 0xa5, 0x0f, 0xa5, 0x00, 0x36, 0x00, 0x15, 0xcd, 0x70, 0x00, 0x30, + 0x81, 0x2f, 0x40, 0x3f, 0x00, 0x00, 0x40, 0x1d, 0x41, 0x10, 0x01, 0x30, + 0x40, 0x00, 0xcb, 0xa5, 0x48, 0x1d, 0x41, 0x10, 0x0a, 0xa5, 0x17, 0xf0, + 0x0c, 0x85, 0x4d, 0x85, 0x2c, 0x71, 0x04, 0x71, 0xcd, 0x70, 0x32, 0xa5, + 0xcb, 0xa5, 0x30, 0xa5, 0x1b, 0x08, 0xa4, 0x00, 0x0c, 0xa5, 0x4e, 0x85, + 0x6f, 0x85, 0xcc, 0xa5, 0x00, 0x20, 0x80, 0x80, 0x31, 0xa5, 0x41, 0x23, + 0x01, 0x80, 0x0e, 0xa5, 0x2f, 0xa5, 0x02, 0x32, 0x40, 0x24, 0xa6, 0x0c, + 0x2f, 0x03, 0x62, 0x41, 0x45, 0xf6, 0x02, 0x32, 0xd1, 0x24, 0x10, 0x1d, + 0x40, 0x14, 0xe1, 0x40, 0x92, 0x0c, 0x2f, 0x03, 0x22, 0x41, 0x45, 0xf6, + 0xe4, 0xa5, 0x40, 0x1d, 0x81, 0x10, 0x17, 0x0e, 0x94, 0x19, 0xc3, 0x40, + 0x40, 0x41, 0x00, 0x00, 0x44, 0x1d, 0x01, 0x10, 0x30, 0x1d, 0x01, 0x10, + 0x0a, 0xa5, 0x00, 0x85, 0x02, 0x36, 0x02, 0x70, 0x80, 0x3f, 0x00, 0x00, + 0x00, 0x32, 0x01, 0x20, 0x00, 0x37, 0x80, 0x10, 0x01, 0x31, 0x01, 0x00, + 0x0c, 0x70, 0x29, 0xa5, 0xd6, 0xc6, 0xe0, 0x78, 0xf1, 0xc0, 0xc3, 0x42, + 0x80, 0x00, 0x7c, 0x12, 0x40, 0x82, 0x2c, 0x70, 0xcf, 0x5a, 0xd1, 0xc0, + 0xe0, 0x7f, 0x0c, 0x70, 0xe4, 0xc3, 0xa5, 0xc1, 0x08, 0x45, 0x81, 0xc0, + 0x3a, 0x0d, 0x6f, 0x07, 0x81, 0xc6, 0x56, 0x0d, 0x2f, 0x07, 0x40, 0x24, + 0xc0, 0x30, 0x03, 0x14, 0x80, 0x30, 0x4a, 0x21, 0x00, 0x00, 0x2f, 0x38, + 0x03, 0x00, 0x44, 0xc0, 0x00, 0x86, 0x24, 0x71, 0x00, 0x38, 0x80, 0x0f, + 0x20, 0x3c, 0x12, 0xac, 0xf5, 0x09, 0xf2, 0x80, 0x04, 0x1e, 0x10, 0x10, + 0x00, 0x16, 0x80, 0x70, 0x80, 0x00, 0xe4, 0x1f, 0x0d, 0x08, 0x7e, 0x01, + 0xf9, 0xd8, 0x48, 0x85, 0x81, 0xc1, 0xce, 0x5a, 0xc3, 0x40, 0x80, 0x00, + 0xbc, 0x13, 0x82, 0x0e, 0xaf, 0xfd, 0x81, 0xc1, 0x84, 0x20, 0x42, 0x00, + 0x8c, 0x20, 0x42, 0x80, 0x0c, 0xf4, 0x48, 0x85, 0xc3, 0x40, 0x80, 0x00, + 0x7c, 0x12, 0x2c, 0x70, 0x40, 0xa0, 0xa1, 0x40, 0xcf, 0x5a, 0x2c, 0x70, + 0xa1, 0x40, 0xde, 0x5a, 0x0c, 0x70, 0xc4, 0xc7, 0xf1, 0xc0, 0xc3, 0x40, + 0x80, 0x00, 0xbc, 0x13, 0x4a, 0x0e, 0x8f, 0xfd, 0xd1, 0xc0, 0xe0, 0x7f, + 0x0c, 0x70, 0xe0, 0x78, 0x2c, 0x70, 0x03, 0xf0, 0x24, 0x71, 0x01, 0x08, + 0x71, 0x00, 0x1d, 0x78, 0x0c, 0x71, 0xe0, 0x7f, 0x38, 0x78, 0xe0, 0x78, + 0x2c, 0x70, 0x63, 0x18, 0x42, 0x00, 0x68, 0x18, 0x42, 0x00, 0xe0, 0x7f, + 0x67, 0x18, 0x42, 0x00, 0xec, 0xc2, 0xd3, 0x40, 0x00, 0x00, 0xff, 0x7f, + 0x48, 0x47, 0x28, 0x46, 0x10, 0x42, 0xad, 0x70, 0x4e, 0x20, 0x11, 0x20, + 0x04, 0x16, 0x00, 0x14, 0x8a, 0x0b, 0x2f, 0x03, 0x00, 0x30, 0x80, 0x04, + 0x09, 0x20, 0x00, 0x04, 0x08, 0x20, 0x40, 0x04, 0xa5, 0x71, 0xed, 0x0d, + 0xf2, 0x90, 0x02, 0x1f, 0x14, 0x10, 0xcc, 0xc6, 0xf1, 0xc0, 0x3e, 0x09, + 0x6f, 0xff, 0x00, 0x42, 0x07, 0x08, 0x84, 0x00, 0x41, 0x68, 0x50, 0x7a, + 0x2e, 0x09, 0x6f, 0xff, 0xab, 0x22, 0xa1, 0x07, 0x0d, 0x08, 0xa1, 0x00, + 0x01, 0x6a, 0x10, 0x78, 0xab, 0x20, 0xa1, 0x07, 0xd1, 0xc0, 0xe0, 0x7e, + 0xe2, 0xc2, 0x08, 0x45, 0x1e, 0x09, 0x6f, 0x04, 0x05, 0x10, 0xc0, 0x00, + 0x05, 0xe8, 0xca, 0x0a, 0x6f, 0x04, 0x05, 0x15, 0xc0, 0x10, 0xc2, 0xc6, + 0xf1, 0xc0, 0xc3, 0x42, 0x80, 0x00, 0xd4, 0x12, 0x40, 0x82, 0x2c, 0x70, + 0xcf, 0x5a, 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe2, 0xc3, 0xa1, 0xc1, + 0x08, 0x45, 0xfe, 0x0b, 0xaf, 0x07, 0x40, 0x24, 0x80, 0x30, 0x02, 0x14, + 0x00, 0x31, 0x0d, 0xe8, 0x48, 0x85, 0xc3, 0x40, 0x80, 0x00, 0xd4, 0x12, + 0x2c, 0x70, 0x40, 0xa0, 0xa1, 0x40, 0xcf, 0x5a, 0x2c, 0x70, 0xa1, 0x40, + 0xde, 0x5a, 0x0c, 0x70, 0xc2, 0xc7, 0xe0, 0x78, 0xe4, 0xc0, 0xc3, 0x41, + 0x80, 0x00, 0xb0, 0x36, 0x8a, 0x26, 0x1d, 0x1b, 0x8a, 0x25, 0x06, 0x14, + 0x25, 0xdc, 0x0c, 0x70, 0xc3, 0x43, 0x80, 0x00, 0xf8, 0x12, 0xc6, 0xb1, + 0xa7, 0xb1, 0x88, 0xb1, 0x12, 0x19, 0x05, 0x03, 0x0c, 0xb1, 0x1d, 0xa9, + 0x00, 0xb3, 0xc4, 0xc4, 0xe6, 0xc0, 0xcb, 0x44, 0x80, 0x00, 0xb0, 0x36, + 0x60, 0x84, 0xa1, 0x84, 0xc2, 0x84, 0x05, 0x25, 0xcb, 0x10, 0x05, 0x23, + 0xbe, 0x93, 0x08, 0xf4, 0x48, 0x46, 0x28, 0x45, 0x00, 0x43, 0x00, 0xa4, + 0x21, 0xa4, 0x42, 0xa4, 0xea, 0x94, 0x37, 0xef, 0x15, 0x0f, 0x51, 0x10, + 0x48, 0x46, 0x28, 0x45, 0x00, 0x43, 0x00, 0xa4, 0x21, 0xa4, 0x42, 0xa4, + 0x16, 0x1c, 0x05, 0x10, 0x0e, 0x14, 0x0b, 0x11, 0x62, 0x78, 0x11, 0x78, + 0x3f, 0x08, 0xe3, 0x02, 0xb0, 0x49, 0x11, 0x78, 0x37, 0x08, 0xe3, 0x02, + 0xd0, 0x4a, 0x11, 0x78, 0x2f, 0x08, 0xc3, 0x02, 0xc3, 0x42, 0x80, 0x00, + 0xf8, 0x12, 0x00, 0x92, 0xe2, 0x78, 0x11, 0x78, 0x10, 0x78, 0x0d, 0x08, + 0x71, 0x00, 0x3d, 0x8c, 0x24, 0x71, 0x3d, 0xac, 0x2d, 0x78, 0x17, 0x08, + 0xb2, 0x00, 0xe0, 0xb2, 0x1c, 0x1c, 0x03, 0x10, 0x14, 0x1c, 0x05, 0x10, + 0x07, 0xf0, 0x1d, 0x1c, 0x03, 0x10, 0x09, 0x6f, 0x0a, 0xb4, 0x18, 0x1c, + 0x05, 0x10, 0x0c, 0x70, 0xc6, 0xc4, 0xe6, 0x94, 0x73, 0x48, 0x71, 0x7b, + 0x33, 0x0f, 0xe2, 0x10, 0xb3, 0x49, 0x71, 0x7b, 0x2b, 0x0f, 0xe2, 0x10, + 0xd3, 0x4a, 0x71, 0x7b, 0x23, 0x0f, 0xc2, 0x10, 0x1c, 0x8c, 0xdf, 0x08, + 0x51, 0x80, 0x0b, 0x94, 0x29, 0x94, 0x04, 0x71, 0x0b, 0xb4, 0x10, 0x78, + 0xcf, 0x09, 0x03, 0x80, 0x16, 0x1c, 0x05, 0x10, 0x1c, 0x1c, 0x03, 0x10, + 0xe1, 0xf1, 0xbc, 0x8c, 0x17, 0x0d, 0x71, 0x10, 0x6c, 0x70, 0x00, 0xa4, + 0x21, 0xa4, 0x42, 0xa4, 0x18, 0x1c, 0x45, 0x10, 0x7c, 0xac, 0x6b, 0xb4, + 0xd7, 0xf1, 0x1c, 0x1c, 0x43, 0x10, 0x08, 0x94, 0x6c, 0xb4, 0x0a, 0xb4, + 0xd1, 0xf1, 0xe0, 0x78, 0xf1, 0xc0, 0xa1, 0xc1, 0xc3, 0x42, 0x80, 0x00, + 0xc8, 0x12, 0x60, 0x92, 0x42, 0x82, 0x80, 0xc1, 0x00, 0x1c, 0xc4, 0x30, + 0xcf, 0x5a, 0x87, 0x74, 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, + 0xf1, 0xc0, 0xc3, 0x42, 0x80, 0x00, 0xc0, 0x12, 0x40, 0x82, 0x2c, 0x70, + 0xcf, 0x5a, 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe4, 0xc3, 0xa1, 0xc1, + 0x08, 0x45, 0xe6, 0x09, 0x6f, 0x07, 0x40, 0x24, 0xc0, 0x30, 0x03, 0x14, + 0x81, 0x30, 0xcb, 0x46, 0x80, 0x00, 0xbc, 0x12, 0x0a, 0xe9, 0x00, 0x8e, + 0x88, 0xe8, 0x48, 0x85, 0x2c, 0x70, 0xa1, 0x40, 0x41, 0xa6, 0xcf, 0x5a, + 0x03, 0x14, 0x81, 0x30, 0x0c, 0x70, 0x20, 0xae, 0xc4, 0xc7, 0xe0, 0x78, + 0xe4, 0xc3, 0xa4, 0xc1, 0x08, 0x45, 0xbe, 0x09, 0x6f, 0x07, 0x80, 0xc0, + 0xc3, 0x43, 0x80, 0x00, 0xc8, 0x12, 0x01, 0xc1, 0xc1, 0x83, 0x00, 0xc4, + 0x40, 0x83, 0x27, 0x7e, 0x87, 0x7a, 0x05, 0x22, 0xbe, 0x83, 0x0b, 0xf2, + 0x80, 0xa3, 0x21, 0xa3, 0x48, 0x85, 0x83, 0xc1, 0xa1, 0x40, 0x0c, 0x1c, + 0x04, 0x33, 0x42, 0xa3, 0xcf, 0x5a, 0x0c, 0x70, 0xc4, 0xc7, 0xe0, 0x78, + 0xe2, 0xc2, 0xcb, 0x45, 0x80, 0x00, 0xc8, 0x12, 0x7e, 0x09, 0x6f, 0x07, + 0xa1, 0x40, 0x29, 0x68, 0x20, 0xa5, 0x5f, 0xb9, 0x0c, 0x70, 0x21, 0xa5, + 0xc2, 0xc6, 0xe0, 0x78, 0xe4, 0xc3, 0xa5, 0xc1, 0x00, 0x16, 0x81, 0x70, + 0x80, 0x00, 0xe4, 0x1f, 0x3d, 0x09, 0xbe, 0x01, 0x08, 0x45, 0x81, 0xc0, + 0x81, 0xc6, 0xa4, 0x5a, 0x40, 0x24, 0xc0, 0x30, 0xa3, 0x5a, 0x03, 0x14, + 0x80, 0x30, 0x4a, 0x21, 0x00, 0x00, 0x2f, 0x38, 0x03, 0x00, 0x44, 0xc0, + 0x00, 0x86, 0x24, 0x71, 0x00, 0x38, 0x80, 0x0f, 0x20, 0x3c, 0x12, 0xac, + 0xf5, 0x09, 0xf2, 0x80, 0x04, 0x1e, 0x10, 0x10, 0x48, 0x85, 0xfb, 0xd8, + 0x81, 0xc1, 0xce, 0x5a, 0xde, 0x0c, 0xef, 0x06, 0xa1, 0x40, 0xc4, 0xc7, + 0xea, 0xc2, 0x08, 0x47, 0x36, 0xe8, 0x00, 0x8f, 0x69, 0x08, 0x3f, 0x01, + 0xad, 0x70, 0x02, 0x97, 0xd3, 0x40, 0x80, 0x00, 0x8c, 0x1e, 0x04, 0x71, + 0xcd, 0x70, 0x2f, 0x21, 0x08, 0x20, 0x03, 0xf0, 0xc5, 0x71, 0x00, 0x10, + 0x81, 0x20, 0xcd, 0x78, 0x31, 0x08, 0x43, 0x00, 0x2e, 0x0d, 0x0f, 0x04, + 0x14, 0x70, 0xcc, 0x20, 0xc2, 0x83, 0xf6, 0xf3, 0x20, 0x88, 0xe9, 0x09, + 0x5e, 0x80, 0x22, 0x90, 0x24, 0x71, 0x30, 0x79, 0x19, 0x09, 0x40, 0x04, + 0x09, 0x29, 0x7e, 0x84, 0x04, 0xf2, 0x09, 0x29, 0x7e, 0xa0, 0xe8, 0xf5, + 0x08, 0x45, 0xe6, 0xf1, 0x83, 0xed, 0x0c, 0xf0, 0x08, 0x45, 0x03, 0x95, + 0x04, 0x71, 0x09, 0x28, 0x40, 0x04, 0x22, 0x70, 0x04, 0x77, 0x09, 0x28, + 0x40, 0x04, 0x03, 0xb7, 0xca, 0xc6, 0xe0, 0x78, 0xe6, 0xc2, 0xe6, 0x0c, + 0x2f, 0x04, 0xaa, 0x27, 0x61, 0x1c, 0x08, 0x46, 0x2c, 0xe8, 0x00, 0x8e, + 0x55, 0x08, 0x7f, 0x00, 0xad, 0x70, 0x8b, 0xbd, 0xc1, 0x40, 0x76, 0x0f, + 0xef, 0xff, 0xab, 0x25, 0xe2, 0x16, 0xc6, 0x0b, 0x8f, 0xff, 0x20, 0x96, + 0x81, 0xb9, 0x20, 0xb6, 0x06, 0xe8, 0xe6, 0x09, 0x00, 0x00, 0x35, 0x0f, + 0xdf, 0x12, 0x16, 0xf0, 0x0c, 0x70, 0xab, 0x20, 0xa1, 0x07, 0xaa, 0x20, + 0x61, 0x07, 0x8a, 0x21, 0x3c, 0x00, 0x4c, 0x71, 0x04, 0x79, 0x81, 0xb8, + 0x0f, 0x78, 0x25, 0x78, 0xab, 0x20, 0x61, 0x07, 0xab, 0x25, 0x62, 0x17, + 0xba, 0x09, 0x20, 0x00, 0xab, 0x22, 0x61, 0x07, 0xab, 0x25, 0xa2, 0x16, + 0xc6, 0xc6, 0xe0, 0x78, 0xf1, 0xc0, 0x7e, 0x0c, 0x0f, 0x04, 0x00, 0x41, + 0x0c, 0x70, 0x03, 0xe9, 0x01, 0x91, 0xd1, 0xc0, 0xe0, 0x7e, 0xe0, 0x78, + 0xea, 0xc2, 0x10, 0x40, 0x66, 0x0c, 0x2f, 0x04, 0x28, 0x47, 0x08, 0x45, + 0xff, 0xd8, 0xb5, 0x70, 0x30, 0xf2, 0x20, 0x8d, 0xe0, 0xb9, 0x2e, 0xf2, + 0x2f, 0x27, 0x7f, 0x04, 0x6f, 0x23, 0x3f, 0x00, 0x4a, 0x0b, 0x8f, 0xff, + 0x08, 0x46, 0x06, 0xe8, 0xab, 0x26, 0xe2, 0x76, 0x00, 0x00, 0x00, 0x08, + 0x2f, 0x26, 0x7f, 0x04, 0xe1, 0xb5, 0xaa, 0x20, 0x22, 0x04, 0x20, 0xd9, + 0x22, 0xb8, 0xc1, 0xb8, 0x00, 0x29, 0x00, 0x00, 0x9a, 0x20, 0x0f, 0x0a, + 0x05, 0x28, 0xc1, 0x03, 0x00, 0x8d, 0xe1, 0xb8, 0xc3, 0x71, 0x00, 0x00, + 0xff, 0xff, 0x20, 0x40, 0x22, 0xb5, 0x03, 0xf4, 0x03, 0xb5, 0xb6, 0x0e, + 0xef, 0xff, 0xa1, 0x40, 0x05, 0xee, 0xab, 0x26, 0xa2, 0x76, 0x00, 0x00, + 0x00, 0x08, 0x02, 0x40, 0x0d, 0x78, 0xca, 0xc6, 0xe6, 0xc2, 0x08, 0x45, + 0x07, 0x80, 0xcd, 0x70, 0x10, 0xe8, 0x08, 0x85, 0x0e, 0xe8, 0xa1, 0x40, + 0xbc, 0x5a, 0x28, 0x85, 0x08, 0x47, 0x60, 0x79, 0xa1, 0x40, 0x11, 0x0f, + 0x20, 0x10, 0xe1, 0x40, 0x47, 0x85, 0x60, 0x7a, 0xa1, 0x41, 0xcd, 0x71, + 0xc1, 0x40, 0xc6, 0xc6, 0xea, 0xc3, 0xa3, 0xc1, 0x08, 0x47, 0x15, 0x88, + 0x50, 0x41, 0xc1, 0xb8, 0xe7, 0x08, 0xb0, 0x00, 0x28, 0x46, 0x00, 0x16, + 0x0d, 0x70, 0x80, 0x00, 0x34, 0x1f, 0x40, 0x24, 0xc1, 0x32, 0x82, 0xc2, + 0x40, 0x24, 0x83, 0x31, 0x40, 0x24, 0x84, 0x30, 0x40, 0x24, 0x45, 0x31, + 0xe1, 0x40, 0xb4, 0x5a, 0x02, 0x14, 0x02, 0x31, 0x4f, 0x21, 0x40, 0x21, + 0x50, 0x21, 0x41, 0x21, 0x5a, 0x20, 0x90, 0x02, 0x5a, 0x21, 0x80, 0x02, + 0xd1, 0x72, 0x00, 0x20, 0x50, 0x23, 0x1d, 0x65, 0x6c, 0x21, 0x11, 0x21, + 0x0f, 0x09, 0x31, 0x28, 0xca, 0x26, 0x85, 0x10, 0x02, 0x18, 0x84, 0x23, + 0x02, 0xf0, 0xc1, 0xb5, 0x15, 0x8f, 0x21, 0x08, 0x7e, 0x01, 0xa1, 0x40, + 0x5a, 0x0b, 0xcf, 0x04, 0x56, 0x0b, 0xef, 0x04, 0x02, 0x40, 0x02, 0x10, + 0x00, 0x21, 0x84, 0xe8, 0x01, 0x95, 0x33, 0xe8, 0xcd, 0x71, 0x31, 0xf0, + 0x02, 0x10, 0x01, 0x21, 0x01, 0x95, 0x41, 0x09, 0x20, 0x00, 0x08, 0x20, + 0x4e, 0x00, 0x1c, 0xe9, 0x1a, 0xe8, 0xe1, 0x40, 0xb3, 0x5a, 0x8a, 0x0e, + 0xcf, 0x02, 0x02, 0x14, 0x01, 0x31, 0x8f, 0xe8, 0x76, 0x8f, 0x4c, 0x71, + 0x0d, 0x00, 0x00, 0x00, 0x5b, 0x78, 0x44, 0x71, 0xca, 0x22, 0x01, 0x00, + 0x04, 0x29, 0x80, 0x00, 0xf5, 0x08, 0xa5, 0x83, 0xe0, 0xbb, 0x1b, 0x09, + 0x31, 0x28, 0xa1, 0x42, 0x02, 0x43, 0x0b, 0xf0, 0xfe, 0x0a, 0xef, 0x04, + 0xa1, 0x40, 0xfa, 0x0a, 0xef, 0x04, 0x02, 0x40, 0x07, 0xf0, 0x02, 0x42, + 0xa1, 0x43, 0x62, 0x0d, 0xef, 0xfe, 0xe1, 0x44, 0x08, 0x46, 0x13, 0x97, + 0x13, 0x08, 0x80, 0x03, 0x12, 0x1f, 0x43, 0x10, 0xd3, 0xb7, 0x00, 0x1e, + 0x43, 0x70, 0x80, 0x00, 0x96, 0x1f, 0xca, 0xc7, 0xf1, 0xc0, 0x0a, 0x0c, + 0x0f, 0xff, 0xea, 0x0a, 0x0f, 0x04, 0x04, 0xe8, 0xc2, 0x0a, 0xcf, 0xff, + 0xd1, 0xc0, 0xe0, 0x7e, 0xc3, 0x41, 0x60, 0x00, 0xa0, 0xc4, 0xc3, 0x42, + 0x60, 0x00, 0xc0, 0xbc, 0xc3, 0x43, 0x50, 0x45, 0xdd, 0xd4, 0xf1, 0x01, + 0x8f, 0xff, 0xe0, 0x78, 0xc3, 0x41, 0x60, 0x00, 0xe4, 0xde, 0xc3, 0x42, + 0x60, 0x00, 0x38, 0xc8, 0xc9, 0x01, 0x8f, 0xff, 0xc3, 0x41, 0x60, 0x00, + 0xa0, 0xcb, 0xc3, 0x42, 0x60, 0x00, 0xc0, 0xbc, 0xc3, 0x43, 0x50, 0x45, + 0xdd, 0xd4, 0xc9, 0x01, 0x8f, 0xff, 0xe0, 0x78, 0xe2, 0xc2, 0xcb, 0x45, + 0x60, 0x00, 0x5e, 0x97, 0x00, 0x14, 0x00, 0x30, 0x15, 0x08, 0x41, 0x03, + 0xaa, 0x20, 0xe0, 0x0c, 0x0f, 0x78, 0xcd, 0x5a, 0x1e, 0x4d, 0x00, 0x1c, + 0x00, 0x30, 0xc2, 0xc6, 0x1e, 0x09, 0xcf, 0x05, 0xc2, 0xc6, 0xe0, 0x78, + 0xf1, 0xc0, 0xc3, 0x42, 0x80, 0x00, 0x78, 0x12, 0x40, 0x82, 0x2c, 0x70, + 0xcf, 0x5a, 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe4, 0xc3, 0xa5, 0xc1, + 0x08, 0x45, 0x81, 0xc0, 0x8e, 0x0e, 0x2f, 0x07, 0x81, 0xc6, 0xaa, 0x0e, + 0xef, 0x06, 0x40, 0x24, 0xc0, 0x30, 0x03, 0x14, 0x80, 0x30, 0x4a, 0x21, + 0x00, 0x00, 0x2f, 0x38, 0x03, 0x00, 0x44, 0xc0, 0x00, 0x86, 0x24, 0x71, + 0x00, 0x38, 0x80, 0x0f, 0x20, 0x3c, 0x12, 0xac, 0xf5, 0x09, 0xf2, 0x80, + 0x04, 0x1e, 0x10, 0x10, 0x00, 0x16, 0x80, 0x70, 0x80, 0x00, 0xe4, 0x1f, + 0x0d, 0x08, 0xfe, 0x00, 0xfb, 0xd8, 0x48, 0x85, 0x81, 0xc1, 0xce, 0x5a, + 0xc3, 0x40, 0x80, 0x00, 0x64, 0x13, 0xda, 0x09, 0xaf, 0xfd, 0x81, 0xc1, + 0x84, 0x20, 0x42, 0x00, 0x8c, 0x20, 0x42, 0x80, 0x0c, 0xf4, 0x48, 0x85, + 0xc3, 0x40, 0x80, 0x00, 0x78, 0x12, 0x2c, 0x70, 0x40, 0xa0, 0xa1, 0x40, + 0xcf, 0x5a, 0x2c, 0x70, 0xa1, 0x40, 0xde, 0x5a, 0x0c, 0x70, 0xc4, 0xc7, + 0xf1, 0xc0, 0xc3, 0x41, 0x80, 0x00, 0x24, 0x20, 0x41, 0x89, 0x60, 0x89, + 0xc3, 0x40, 0x80, 0x00, 0x64, 0x13, 0x43, 0xa9, 0x96, 0x09, 0xaf, 0xfd, + 0x62, 0xa9, 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe4, 0xc2, 0xce, 0x0a, + 0x6f, 0x06, 0x28, 0x45, 0x21, 0x0d, 0x71, 0x10, 0x08, 0x46, 0x1a, 0x0d, + 0x0f, 0x04, 0x3a, 0x0d, 0x2f, 0x04, 0x08, 0x45, 0x00, 0x42, 0x17, 0xd8, + 0xa1, 0x41, 0xb6, 0x5a, 0x04, 0xe8, 0x2d, 0x88, 0xc8, 0xd8, 0x83, 0xe9, + 0xc1, 0x40, 0xc4, 0xc6, 0x49, 0x4e, 0x49, 0x02, 0x48, 0xe1, 0x7f, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x94, 0x12, 0x80, 0x00, 0x4c, 0xe1, 0x7f, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x18, 0x12, 0x80, 0x00, 0x9c, 0x12, 0x80, 0x00, + 0x54, 0xe1, 0x7f, 0x00, 0x04, 0x00, 0x00, 0x00, 0xa4, 0x12, 0x80, 0x00, + 0x58, 0xe1, 0x7f, 0x00, 0x04, 0x00, 0x00, 0x00, 0xac, 0x12, 0x80, 0x00, + 0x5c, 0xe1, 0x7f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x12, 0x80, 0x00, + 0x8c, 0x12, 0x80, 0x00, 0x64, 0xe1, 0x7f, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x84, 0x12, 0x80, 0x00, 0x68, 0xe1, 0x7f, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x40, 0x12, 0x80, 0x00, 0x10, 0x12, 0x80, 0x00, 0x30, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0xb0, 0x7f, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x50, 0xb0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x04, 0xd2, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xaa, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x7c, 0xa8, 0x60, 0x00, 0x05, 0x00, 0x00, 0x00, 0xd4, 0xad, 0x60, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x60, 0xab, 0x60, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x44, 0xb0, 0x60, 0x00, 0x05, 0x00, 0x00, 0x00, 0x1c, 0xb0, 0x7f, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x8c, 0xab, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xe1, 0x7f, 0x00, + 0x5c, 0xe2, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x10, 0x0e, 0x00, 0xf8, 0xfe, 0xf7, 0xfd, 0xf6, 0xfc, 0x00, 0x00, + 0x48, 0xe1, 0x7f, 0x00, 0x4c, 0xe1, 0x7f, 0x00, 0x4c, 0xe1, 0x7f, 0x00, + 0x54, 0xe1, 0x7f, 0x00, 0x54, 0xe1, 0x7f, 0x00, 0x58, 0xe1, 0x7f, 0x00, + 0x58, 0xe1, 0x7f, 0x00, 0x5c, 0xe1, 0x7f, 0x00, 0x5c, 0xe1, 0x7f, 0x00, + 0x64, 0xe1, 0x7f, 0x00, 0x64, 0xe1, 0x7f, 0x00, 0x68, 0xe1, 0x7f, 0x00, + 0x68, 0xe1, 0x7f, 0x00, 0x68, 0xe1, 0x7f, 0x00, 0x68, 0xe1, 0x7f, 0x00, + 0x6c, 0xe1, 0x7f, 0x00, 0x78, 0xc3, 0x60, 0x00, 0x34, 0xbe, 0x60, 0x00, + 0xec, 0xc6, 0x60, 0x00, 0x01, 0x0e, 0x10, 0x00, 0x19, 0x00, 0x06, 0x00, + 0x32, 0x00, 0x07, 0x00, 0x64, 0x00, 0x08, 0x00, 0xc8, 0x00, 0x09, 0x00, + 0x90, 0x01, 0x0a, 0x00, 0x0e, 0x00, 0x01, 0x01, 0x01, 0x09, 0x0c, 0x88, + 0x13, 0x10, 0x01, 0x01, 0x71, 0x2a, 0x00, 0x00, 0x19, 0x00, 0x06, 0x00, + 0x32, 0x00, 0x07, 0x00, 0x64, 0x00, 0x08, 0x00, 0xc8, 0x00, 0x09, 0x00, + 0x90, 0x01, 0x0a, 0x00, 0xfa, 0x00, 0x03, 0x00, 0x77, 0x7d, 0x0b, 0x39, + 0xf4, 0x01, 0x02, 0x00, 0xfb, 0xb3, 0x8b, 0x39, 0xe8, 0x03, 0x01, 0x00, + 0x77, 0x7d, 0x0b, 0x3a, 0xd0, 0x07, 0x00, 0x00, 0x77, 0x7d, 0x8b, 0x3a, + 0xaf, 0xcc, 0x01, 0x3d, 0x07, 0xb3, 0xc2, 0xbd, 0x07, 0xb3, 0xc2, 0x3d, + 0xaf, 0xcc, 0x01, 0xbd, 0x00, 0x00, 0x80, 0x3f, 0x77, 0xc1, 0xba, 0x3f, + 0xf1, 0x0d, 0x69, 0x3f, 0xb0, 0x92, 0x4a, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x08, 0x90, 0x01, 0x30, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x60, 0xae, 0x7f, 0x00, + 0x9c, 0xae, 0x7f, 0x00, 0x40, 0xa1, 0x60, 0x00, 0x80, 0xaf, 0x7f, 0x00, + 0x4c, 0xa1, 0x60, 0x00, 0xc8, 0xa6, 0x60, 0x00, 0x08, 0xa7, 0x60, 0x00, + 0x58, 0xa1, 0x60, 0x00, 0xbc, 0xa4, 0x60, 0x00, 0x04, 0xa6, 0x60, 0x00, + 0x34, 0xa1, 0x60, 0x00, 0xc4, 0x28, 0x80, 0x00, 0xcc, 0x22, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x1e, 0x05, 0x3e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x10, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x2f, 0x90, 0x01, 0x31, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x2c, 0xc4, 0x7f, 0x00, + 0xb4, 0xc4, 0x7f, 0x00, 0x9c, 0xc3, 0x7f, 0x00, 0x10, 0xc5, 0x7f, 0x00, + 0xd4, 0xc3, 0x7f, 0x00, 0x50, 0xc3, 0x7f, 0x00, 0x18, 0xc3, 0x7f, 0x00, + 0xe0, 0xc3, 0x7f, 0x00, 0xa8, 0xc3, 0x7f, 0x00, 0x68, 0xc4, 0x7f, 0x00, + 0x90, 0xc3, 0x7f, 0x00, 0x10, 0x1b, 0x80, 0x00, 0xe4, 0xe0, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0xe8, 0x03, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x01, 0x00, 0x00, 0xe9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xdc, 0xd7, 0x7f, 0x00, 0x60, 0xd7, 0x7f, 0x00, 0x4c, 0xd7, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, 0xea, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x34, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0xc3, 0x7f, 0x00, 0x88, 0xc2, 0x7f, 0x00, + 0x74, 0xc2, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, + 0xeb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xb8, 0x60, 0x00, + 0xe8, 0xaa, 0x7f, 0x00, 0x30, 0xb9, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb0, 0xad, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xf1, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xdd, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa8, 0xdd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd4, 0xb5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xf6, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0xdd, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0xb3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0xda, 0x7f, 0x00, 0x08, 0xda, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xf9, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8c, 0xda, 0x7f, 0x00, 0x50, 0xda, 0x7f, 0x00, + 0xe8, 0xd9, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0xfa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9c, 0xd8, 0x7f, 0x00, 0x88, 0xd8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa4, 0xb4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0xe0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xb4, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, + 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xde, 0x7f, 0x00, + 0x0c, 0xde, 0x7f, 0x00, 0xf8, 0xdd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x32, 0x00, 0xec, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbc, 0xb7, 0x60, 0x00, 0xa8, 0xda, 0x7f, 0x00, 0x48, 0xb8, 0x60, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0xc8, 0x00, 0xf0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xec, 0xb2, 0x7f, 0x00, 0x44, 0xb1, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8b, 0xc8, 0x00, 0x00, 0x02, 0x11, 0x10, 0x00, + 0x54, 0x2a, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 +}; +unsigned int Bosch_PCB_7183_di01_BMI160_7183_di01_2_1_10836_170103_fw_len = 26128; diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di01_BMI160_BMP280-7183_di01.2.1.10836.h b/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di01_BMI160_BMP280-7183_di01.2.1.10836.h new file mode 100644 index 0000000000000000000000000000000000000000..07667437a3df2e617997747a6293624178fb0889 --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di01_BMI160_BMP280-7183_di01.2.1.10836.h @@ -0,0 +1,2305 @@ +const unsigned char bhy1_fw[] = { + 0x2a, 0x65, 0x00, 0x0a, 0xfd, 0x75, 0xe2, 0x82, 0x00, 0x00, 0x00, 0x00, + 0xe4, 0x6b, 0x00, 0x00, 0x64, 0x8c, 0x7f, 0x00, 0x24, 0x8c, 0x7f, 0x00, + 0x3c, 0x8c, 0x7f, 0x00, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0x7c, 0x96, 0x60, 0x00, + 0x7c, 0x96, 0x60, 0x00, 0x7c, 0x96, 0x60, 0x00, 0x7c, 0x96, 0x60, 0x00, + 0x7c, 0x96, 0x60, 0x00, 0x7c, 0x96, 0x60, 0x00, 0x7c, 0x96, 0x60, 0x00, + 0x7c, 0x96, 0x60, 0x00, 0xa8, 0x5b, 0x60, 0x00, 0xa4, 0x71, 0x60, 0x00, + 0x0c, 0x75, 0x60, 0x00, 0x68, 0xa9, 0x7f, 0x00, 0x30, 0x8c, 0x7f, 0x00, + 0x30, 0x8c, 0x7f, 0x00, 0x30, 0x8c, 0x7f, 0x00, 0x30, 0x8c, 0x7f, 0x00, + 0x78, 0x6c, 0x60, 0x00, 0x78, 0x6c, 0x60, 0x00, 0x78, 0x6c, 0x60, 0x00, + 0x78, 0x6c, 0x60, 0x00, 0x78, 0x6c, 0x60, 0x00, 0x78, 0x6c, 0x60, 0x00, + 0xd5, 0x01, 0x8f, 0x0d, 0x09, 0x04, 0x4f, 0x0d, 0xb1, 0x03, 0x4f, 0x0d, + 0xcd, 0x03, 0x4f, 0x0d, 0x99, 0x03, 0x4f, 0x0d, 0xb5, 0x03, 0x4f, 0x0d, + 0x4d, 0x03, 0x4f, 0x0d, 0xe9, 0x00, 0x8f, 0x0d, 0xc1, 0x04, 0x4f, 0x0d, + 0xe5, 0x01, 0x8f, 0x0d, 0x7d, 0x00, 0x8f, 0x0d, 0x3d, 0x00, 0x8f, 0x0d, + 0x21, 0x00, 0x8f, 0x0d, 0x7d, 0x06, 0x4f, 0x0d, 0xe5, 0x03, 0x4f, 0x0d, + 0xc9, 0x06, 0x4f, 0x0d, 0x5d, 0x03, 0x4f, 0x0d, 0xe1, 0x04, 0x4f, 0x0d, + 0x39, 0x05, 0x4f, 0x0d, 0x35, 0x03, 0x4f, 0x0d, 0x25, 0x03, 0x4f, 0x0d, + 0xfd, 0x03, 0x4f, 0x0d, 0x01, 0x07, 0x0f, 0x0e, 0x39, 0x06, 0x0f, 0x0e, + 0x8d, 0x07, 0x0f, 0x0e, 0xa1, 0x07, 0x0f, 0x0e, 0x99, 0x06, 0x0f, 0x0e, + 0x9d, 0x06, 0x0f, 0x0e, 0xa1, 0x06, 0x0f, 0x0e, 0x15, 0x06, 0x0f, 0x0e, + 0x65, 0x06, 0x0f, 0x0e, 0x71, 0x06, 0x0f, 0x0e, 0x65, 0x06, 0x0f, 0x0e, + 0x71, 0x06, 0x0f, 0x0e, 0x3d, 0x07, 0x0f, 0x0e, 0xb5, 0x06, 0xcf, 0x0b, + 0xbd, 0x06, 0xcf, 0x0b, 0xc5, 0x06, 0xcf, 0x0b, 0xe1, 0x06, 0xcf, 0x0b, + 0x11, 0x06, 0xcf, 0x0b, 0x31, 0x07, 0xcf, 0x0b, 0xd9, 0x05, 0xcf, 0x0b, + 0xe5, 0x05, 0xcf, 0x0b, 0x21, 0x06, 0xcf, 0x0b, 0xed, 0x05, 0xcf, 0x0b, + 0xf1, 0x05, 0xcf, 0x0b, 0x0d, 0x06, 0xcf, 0x0b, 0x31, 0x06, 0x8f, 0x0f, + 0x21, 0x06, 0x8f, 0x0f, 0x11, 0x06, 0x8f, 0x0f, 0x31, 0x04, 0x8f, 0x0f, + 0x4d, 0x04, 0x8f, 0x0f, 0xf1, 0x07, 0x0f, 0x0c, 0x15, 0x04, 0x0f, 0x0c, + 0x69, 0x03, 0x0f, 0x0c, 0x0d, 0x05, 0x0f, 0x0c, 0x8d, 0x04, 0x0f, 0x0c, + 0x31, 0x03, 0x0f, 0x0c, 0xe5, 0x06, 0x0f, 0x0c, 0x35, 0x02, 0x0f, 0x0c, + 0xf9, 0x02, 0x0f, 0x0c, 0xe5, 0x00, 0x0f, 0x0c, 0x99, 0x03, 0x0f, 0x0c, + 0xfd, 0x00, 0x0f, 0x0c, 0x41, 0x02, 0x0f, 0x0c, 0xb9, 0x02, 0x0f, 0x0c, + 0xa5, 0x07, 0x0f, 0x0c, 0xa9, 0x00, 0x0f, 0x0c, 0x51, 0x02, 0x0f, 0x0c, + 0x21, 0x05, 0x0f, 0x0c, 0x79, 0x01, 0x0f, 0x0c, 0xfd, 0x00, 0x0f, 0x0c, + 0x0d, 0x01, 0x0f, 0x0c, 0x15, 0x01, 0x0f, 0x0c, 0x8d, 0x06, 0x0f, 0x0c, + 0xb9, 0x02, 0x8f, 0x0d, 0x6d, 0x02, 0x8f, 0x0d, 0x3d, 0x02, 0x8f, 0x0d, + 0x01, 0x03, 0x8f, 0x0d, 0x41, 0x02, 0x8f, 0x0d, 0xb5, 0x05, 0x8f, 0x0d, + 0xc5, 0x05, 0x8f, 0x0d, 0x29, 0x04, 0x8f, 0x0d, 0xfd, 0x03, 0x8f, 0x0d, + 0x5d, 0x04, 0x8f, 0x0d, 0x8d, 0x03, 0x8f, 0x0d, 0x29, 0x04, 0x8f, 0x0d, + 0x7d, 0x03, 0x8f, 0x0d, 0x35, 0x04, 0x8f, 0x0d, 0x6d, 0x05, 0x8f, 0x0e, + 0x91, 0x04, 0x8f, 0x0e, 0xc9, 0x02, 0xc0, 0x00, 0x89, 0x03, 0x8f, 0x0e, + 0x49, 0x06, 0x8f, 0x0e, 0xad, 0x03, 0x8f, 0x0e, 0xd9, 0x02, 0x8f, 0x0e, + 0xb5, 0x01, 0xcf, 0x0e, 0xad, 0x06, 0x8f, 0x0e, 0x55, 0x03, 0x8f, 0x0e, + 0x19, 0x04, 0x8f, 0x0e, 0x79, 0x03, 0x8f, 0x0e, 0x61, 0x06, 0x8f, 0x0e, + 0xc9, 0x06, 0x8f, 0x0e, 0x51, 0x03, 0x8f, 0x0e, 0xbd, 0x03, 0x8f, 0x0e, + 0xe1, 0x00, 0xcf, 0x0e, 0xbd, 0x03, 0xc0, 0x00, 0xc9, 0x03, 0xc0, 0x00, + 0xd5, 0x03, 0xc0, 0x00, 0x5d, 0x02, 0xcf, 0x0e, 0x49, 0x02, 0xcf, 0x0e, + 0xa5, 0x04, 0xcf, 0x0e, 0x31, 0x02, 0xcf, 0x0e, 0xd9, 0x03, 0xc0, 0x00, + 0xf1, 0x04, 0xcf, 0x0e, 0x15, 0x05, 0xc0, 0x00, 0x81, 0x05, 0xc0, 0x00, + 0x1d, 0x03, 0xcf, 0x0e, 0xd5, 0x01, 0x0f, 0x0f, 0x69, 0x00, 0x0f, 0x0f, + 0x29, 0x03, 0x0f, 0x0f, 0x45, 0x03, 0x0f, 0x0f, 0x85, 0x00, 0x0f, 0x0f, + 0x81, 0x07, 0xc0, 0x00, 0x8d, 0x07, 0xc0, 0x00, 0x61, 0x00, 0x00, 0x01, + 0x91, 0x03, 0x0f, 0x0f, 0x59, 0x03, 0x0f, 0x0f, 0x7d, 0x00, 0x0f, 0x0f, + 0x65, 0x07, 0xcf, 0x0a, 0xf1, 0x06, 0xcf, 0x0a, 0x21, 0x07, 0xcf, 0x0a, + 0xa1, 0x06, 0xcf, 0x0a, 0xcd, 0x06, 0xcf, 0x0a, 0x61, 0x06, 0xcf, 0x0a, + 0xad, 0x06, 0xcf, 0x0a, 0x79, 0x06, 0xcf, 0x0a, 0x05, 0x02, 0x0f, 0x0b, + 0x21, 0x01, 0x0f, 0x0b, 0xf5, 0x00, 0x0f, 0x0b, 0xc9, 0x00, 0x0f, 0x0b, + 0x01, 0x01, 0x0f, 0x0b, 0x2d, 0x03, 0x0f, 0x0b, 0xad, 0x01, 0x0f, 0x0b, + 0x1d, 0x01, 0x0f, 0x0b, 0xed, 0x07, 0xcf, 0x0a, 0x11, 0x00, 0x0f, 0x0b, + 0x1d, 0x00, 0x0f, 0x0b, 0x01, 0x03, 0x0f, 0x0b, 0x2d, 0x00, 0x0f, 0x0b, + 0x41, 0x00, 0x0f, 0x0b, 0x55, 0x00, 0x0f, 0x0b, 0xe1, 0x07, 0xcf, 0x0a, + 0x6d, 0x00, 0x0f, 0x0b, 0x1d, 0x05, 0x0f, 0x0b, 0xed, 0x04, 0x0f, 0x0b, + 0x9d, 0x05, 0x0f, 0x0b, 0xf9, 0x05, 0x0f, 0x0b, 0x29, 0x05, 0x0f, 0x0b, + 0x41, 0x05, 0x0f, 0x0b, 0xa9, 0x00, 0x8f, 0x0e, 0x31, 0x00, 0x8f, 0x0e, + 0xb9, 0x06, 0x4f, 0x0e, 0xe1, 0x06, 0x4f, 0x0e, 0x05, 0x07, 0x4f, 0x0e, + 0x5d, 0x07, 0x4f, 0x0e, 0xc9, 0x07, 0x4f, 0x0e, 0xf5, 0x07, 0x4f, 0x0e, + 0x79, 0x06, 0x4f, 0x0e, 0x01, 0x07, 0x4f, 0x0e, 0x8d, 0x06, 0x4f, 0x0e, + 0xd9, 0x06, 0x4f, 0x0e, 0x45, 0x01, 0x8f, 0x0e, 0x01, 0x07, 0x4f, 0x0e, + 0x11, 0x07, 0x4f, 0x0e, 0x95, 0x06, 0x4f, 0x0e, 0xa1, 0x06, 0x4f, 0x0e, + 0x19, 0x07, 0x4f, 0x0e, 0x3d, 0x07, 0x4f, 0x0e, 0xf9, 0x05, 0x0f, 0x0e, + 0xcd, 0x00, 0x4f, 0x0e, 0x79, 0x06, 0x0f, 0x0e, 0x59, 0x06, 0x0f, 0x0e, + 0x85, 0x05, 0x0f, 0x0e, 0x29, 0x06, 0x0f, 0x0e, 0x59, 0x06, 0x0f, 0x0e, + 0x5d, 0x06, 0x0f, 0x0e, 0x35, 0x06, 0x0f, 0x0e, 0xb5, 0x03, 0x8f, 0x0f, + 0x69, 0x01, 0x4f, 0x0c, 0x51, 0x01, 0x4f, 0x0c, 0x85, 0x00, 0x4f, 0x0c, + 0x8d, 0x02, 0x4f, 0x0c, 0x75, 0x01, 0x4f, 0x0c, 0xcd, 0x01, 0x4f, 0x0c, + 0xb9, 0x02, 0x4f, 0x0c, 0x9d, 0x01, 0x4f, 0x0c, 0xe5, 0x00, 0x4f, 0x0c, + 0xd1, 0x00, 0x4f, 0x0c, 0xed, 0x00, 0x4f, 0x0c, 0xd1, 0x00, 0x4f, 0x0c, + 0xdd, 0x00, 0x4f, 0x0c, 0xf9, 0x00, 0x4f, 0x0c, 0xe5, 0x00, 0x4f, 0x0c, + 0xe9, 0x00, 0x4f, 0x0c, 0xf5, 0x00, 0x4f, 0x0c, 0x01, 0x01, 0x4f, 0x0c, + 0xf5, 0x00, 0x4f, 0x0c, 0x31, 0x00, 0x4f, 0x0c, 0x99, 0x00, 0x4f, 0x0c, + 0x85, 0x01, 0x0f, 0x0e, 0x51, 0x06, 0x8f, 0x0d, 0x99, 0x06, 0x8f, 0x0d, + 0xb1, 0x06, 0x8f, 0x0d, 0x61, 0x07, 0x8f, 0x0d, 0x6d, 0x07, 0x8f, 0x0d, + 0x49, 0x07, 0x8f, 0x0d, 0x35, 0x07, 0x8f, 0x0d, 0x71, 0x06, 0x8f, 0x0d, + 0x51, 0x04, 0xcf, 0x0d, 0x89, 0x00, 0x0f, 0x0e, 0x79, 0x01, 0xcf, 0x0d, + 0x69, 0x03, 0xcf, 0x0d, 0x9d, 0x02, 0xcf, 0x0d, 0xe5, 0x01, 0xcf, 0x0d, + 0x79, 0x02, 0xcf, 0x0d, 0x99, 0x01, 0xcf, 0x0d, 0x11, 0x04, 0x8f, 0x0d, + 0x3d, 0x05, 0x8f, 0x0d, 0x81, 0x06, 0x8f, 0x0d, 0x89, 0x06, 0x8f, 0x0d, + 0x3d, 0x07, 0xcf, 0x0d, 0x31, 0x04, 0xcf, 0x0d, 0xd9, 0x06, 0x8f, 0x0d, + 0x25, 0x06, 0x8f, 0x0d, 0xfd, 0x03, 0xcf, 0x0d, 0xd9, 0x05, 0x8f, 0x0d, + 0x65, 0x07, 0x8f, 0x0d, 0x89, 0x03, 0x8f, 0x0d, 0xf1, 0x05, 0x8f, 0x0d, + 0x3d, 0x00, 0x4f, 0x0e, 0xa5, 0x00, 0x4f, 0x0e, 0x1d, 0x00, 0x4f, 0x0e, + 0xe1, 0x07, 0x0f, 0x0e, 0x05, 0x00, 0x4f, 0x0e, 0x09, 0x00, 0x4f, 0x0e, + 0xe9, 0x02, 0x4f, 0x0e, 0xc5, 0x03, 0x4f, 0x0e, 0xed, 0x04, 0x4f, 0x0e, + 0x45, 0x02, 0x4f, 0x0e, 0xbd, 0x02, 0x4f, 0x0e, 0x35, 0x03, 0x4f, 0x0e, + 0x45, 0x03, 0x4f, 0x0e, 0x25, 0x03, 0x4f, 0x0e, 0x15, 0x03, 0x4f, 0x0e, + 0x41, 0x03, 0x4f, 0x0e, 0xe1, 0x05, 0x0f, 0x0b, 0x71, 0x05, 0x0f, 0x0b, + 0x05, 0x06, 0x0f, 0x0b, 0x95, 0x05, 0x0f, 0x0b, 0xa9, 0x06, 0x0f, 0x0b, + 0xd9, 0x06, 0x0f, 0x0b, 0xf9, 0x07, 0x0f, 0x0b, 0x55, 0x00, 0x4f, 0x0b, + 0x85, 0x06, 0x0f, 0x0b, 0x6d, 0x06, 0x0f, 0x0b, 0x11, 0x06, 0x0f, 0x0b, + 0x39, 0x06, 0x0f, 0x0b, 0xe5, 0x06, 0x0f, 0x0b, 0x05, 0x00, 0x4f, 0x0b, + 0x09, 0x01, 0x4f, 0x0b, 0x99, 0x01, 0x4f, 0x0b, 0xb1, 0x01, 0x4f, 0x0b, + 0x89, 0x02, 0x4f, 0x0b, 0xf5, 0x02, 0x4f, 0x0b, 0x1d, 0x03, 0x4f, 0x0b, + 0x41, 0x01, 0x4f, 0x0b, 0xe1, 0x01, 0x4f, 0x0b, 0xf9, 0x01, 0x4f, 0x0b, + 0x11, 0x02, 0x4f, 0x0b, 0x29, 0x02, 0x4f, 0x0b, 0x69, 0x00, 0x4f, 0x0b, + 0x01, 0x01, 0x4f, 0x0b, 0x21, 0x00, 0x4f, 0x0b, 0xed, 0x06, 0x0f, 0x0b, + 0xd9, 0x05, 0x4f, 0x0c, 0x31, 0x04, 0x8f, 0x0c, 0x1d, 0x06, 0x4f, 0x0c, + 0x75, 0x01, 0x4f, 0x0c, 0xb1, 0x04, 0x4f, 0x0c, 0x25, 0x05, 0x4f, 0x0c, + 0xd5, 0x02, 0x4f, 0x0c, 0x9d, 0x06, 0xc0, 0x00, 0xc9, 0x07, 0x4f, 0x0c, + 0x8d, 0x07, 0x4f, 0x0c, 0x89, 0x02, 0x4f, 0x0c, 0x95, 0x02, 0x4f, 0x0c, + 0x8d, 0x02, 0x00, 0x01, 0xed, 0x06, 0x4f, 0x0c, 0x2d, 0x02, 0x4f, 0x0c, + 0x65, 0x02, 0x4f, 0x0c, 0xb5, 0x02, 0x00, 0x01, 0x65, 0x05, 0x4f, 0x0c, + 0x25, 0x01, 0x4f, 0x0c, 0x49, 0x04, 0x4f, 0x0c, 0x55, 0x04, 0x4f, 0x0c, + 0x6d, 0x05, 0x4f, 0x0c, 0x89, 0x03, 0x4f, 0x0c, 0x5d, 0x03, 0x4f, 0x0c, + 0xa9, 0x03, 0x4f, 0x0c, 0x69, 0x03, 0x4f, 0x0c, 0x8d, 0x03, 0x4f, 0x0c, + 0x5d, 0x01, 0x4f, 0x0c, 0x2d, 0x06, 0x4f, 0x0c, 0xe5, 0x01, 0x4f, 0x0c, + 0xd5, 0x01, 0x4f, 0x0c, 0xc9, 0x03, 0x4f, 0x0c, 0x9d, 0x03, 0x4f, 0x0c, + 0xe9, 0x03, 0x4f, 0x0c, 0xf9, 0x03, 0x4f, 0x0c, 0xa5, 0x03, 0x4f, 0x0c, + 0xc9, 0x03, 0x4f, 0x0c, 0xdd, 0x02, 0x4f, 0x0c, 0xf1, 0x05, 0x4f, 0x0c, + 0xf1, 0x02, 0x4f, 0x0c, 0x01, 0x03, 0x4f, 0x0c, 0xa1, 0x07, 0x8f, 0x0c, + 0x49, 0x06, 0x4f, 0x0c, 0x01, 0x01, 0x4f, 0x0c, 0x91, 0x01, 0x4f, 0x0c, + 0x09, 0x06, 0x4f, 0x0c, 0x19, 0x02, 0x4f, 0x0c, 0x51, 0x02, 0x4f, 0x0c, + 0x65, 0x01, 0x4f, 0x0c, 0x45, 0x01, 0x4f, 0x0c, 0x15, 0x05, 0x8f, 0x0c, + 0x91, 0x03, 0xcf, 0x0c, 0x19, 0x05, 0xcf, 0x0c, 0x55, 0x05, 0xcf, 0x0c, + 0xa1, 0x06, 0xcf, 0x0c, 0xdd, 0x05, 0xcf, 0x0c, 0xdd, 0x01, 0xcf, 0x0c, + 0xe5, 0x02, 0xcf, 0x0c, 0xed, 0x01, 0xcf, 0x0c, 0x01, 0x06, 0xcf, 0x0c, + 0x0d, 0x06, 0x40, 0x00, 0x39, 0x04, 0xcf, 0x0b, 0xd9, 0x03, 0xcf, 0x0b, + 0xe1, 0x03, 0xcf, 0x0b, 0xc9, 0x03, 0xcf, 0x0b, 0xdd, 0x04, 0xcf, 0x07, + 0x45, 0x03, 0x0f, 0x0d, 0xa1, 0x01, 0x4f, 0x0f, 0x55, 0x02, 0x4f, 0x0f, + 0x1d, 0x05, 0x00, 0x01, 0x4d, 0x07, 0x0f, 0x0f, 0xfd, 0x07, 0x0f, 0x0f, + 0x41, 0x01, 0xcf, 0x0b, 0xb9, 0x01, 0xcf, 0x07, 0x79, 0x01, 0x4f, 0x0f, + 0xd5, 0x02, 0xcf, 0x08, 0x9d, 0x05, 0x00, 0x01, 0xe1, 0x03, 0xcf, 0x08, + 0x25, 0x06, 0x00, 0x01, 0x91, 0x04, 0x8f, 0x08, 0xbd, 0x01, 0xcf, 0x08, + 0x19, 0x02, 0xcf, 0x08, 0x59, 0x07, 0x8f, 0x08, 0x79, 0x07, 0x8f, 0x08, + 0x99, 0x07, 0x8f, 0x08, 0xf5, 0x00, 0xcf, 0x08, 0x19, 0x01, 0xcf, 0x08, + 0x3d, 0x01, 0xcf, 0x08, 0x3d, 0x04, 0xcf, 0x08, 0x5d, 0x01, 0xcf, 0x08, + 0x15, 0x02, 0xcf, 0x08, 0xa1, 0x07, 0x8f, 0x08, 0xdd, 0x07, 0x8f, 0x08, + 0x15, 0x00, 0xcf, 0x08, 0xa9, 0x01, 0xcf, 0x08, 0x81, 0x04, 0x8f, 0x08, + 0x49, 0x00, 0xcf, 0x08, 0x19, 0x03, 0xcf, 0x08, 0x0d, 0x00, 0x40, 0x01, + 0x59, 0x00, 0x40, 0x01, 0xa9, 0x07, 0x8f, 0x09, 0xb5, 0x00, 0xcf, 0x0a, + 0xc9, 0x00, 0xcf, 0x0a, 0xe5, 0x04, 0x4f, 0x0a, 0x31, 0x04, 0x4f, 0x0a, + 0x09, 0x06, 0x4f, 0x0a, 0x0d, 0x06, 0x8f, 0x09, 0x31, 0x05, 0xcf, 0x09, + 0xe5, 0x05, 0xcf, 0x09, 0xb9, 0x04, 0xcf, 0x09, 0xa5, 0x04, 0xcf, 0x09, + 0xe9, 0x02, 0x0f, 0x0a, 0x8d, 0x02, 0x0f, 0x0a, 0x81, 0x04, 0x0f, 0x0a, + 0x65, 0x01, 0x0f, 0x0a, 0x6d, 0x00, 0x0f, 0x0a, 0x09, 0x00, 0xcf, 0x0a, + 0xe9, 0x00, 0x0f, 0x0a, 0x09, 0x00, 0x0f, 0x0a, 0x29, 0x00, 0xcf, 0x0a, + 0x2d, 0x01, 0x0f, 0x0a, 0xc9, 0x07, 0x8f, 0x0a, 0x85, 0x00, 0x0f, 0x0a, + 0x09, 0x04, 0x0f, 0x0a, 0xdd, 0x03, 0x0f, 0x0a, 0xe9, 0x02, 0x8f, 0x09, + 0xf1, 0x02, 0x0f, 0x0a, 0x99, 0x04, 0x0f, 0x0a, 0xb9, 0x03, 0x40, 0x01, + 0xb5, 0x07, 0x8f, 0x09, 0xa9, 0x07, 0x8f, 0x09, 0xb9, 0x07, 0x8f, 0x09, + 0x81, 0x06, 0xcf, 0x09, 0x15, 0x07, 0x8f, 0x09, 0xa1, 0x06, 0xcf, 0x09, + 0x39, 0x07, 0xcf, 0x09, 0x1d, 0x00, 0xcf, 0x0a, 0xdd, 0x02, 0x0f, 0x0a, + 0x4d, 0x00, 0xcf, 0x09, 0x75, 0x07, 0x8f, 0x09, 0x0d, 0x06, 0xcf, 0x09, + 0xe1, 0x03, 0x40, 0x01, 0xa9, 0x05, 0x0f, 0x0a, 0x99, 0x06, 0x0f, 0x0a, + 0x71, 0x01, 0x0f, 0x0a, 0x71, 0x07, 0x0f, 0x0a, 0xf5, 0x06, 0x0f, 0x0a, + 0x81, 0x01, 0x0f, 0x0a, 0xf1, 0x07, 0x0f, 0x0a, 0xd5, 0x06, 0x0f, 0x0a, + 0x19, 0x04, 0x8f, 0x09, 0x35, 0x06, 0x8f, 0x09, 0x4d, 0x04, 0x8f, 0x09, + 0xb5, 0x07, 0x4f, 0x0a, 0xb5, 0x04, 0x8f, 0x09, 0x79, 0x04, 0x8f, 0x09, + 0xe5, 0x04, 0x8f, 0x09, 0x35, 0x02, 0x8f, 0x09, 0xf5, 0x04, 0x8f, 0x09, + 0x95, 0x05, 0x8f, 0x09, 0x1d, 0x06, 0x8f, 0x09, 0xf1, 0x05, 0x8f, 0x09, + 0x35, 0x05, 0x8f, 0x09, 0x79, 0x05, 0x8f, 0x09, 0xad, 0x05, 0x8f, 0x09, + 0xb9, 0x06, 0x8f, 0x09, 0xd9, 0x06, 0x8f, 0x09, 0x25, 0x00, 0x8f, 0x0a, + 0x99, 0x01, 0x0f, 0x0a, 0x2d, 0x01, 0xcf, 0x09, 0xa5, 0x00, 0x8f, 0x0a, + 0x71, 0x03, 0xcf, 0x09, 0xe1, 0x04, 0x8f, 0x0a, 0x65, 0x03, 0x8f, 0x0a, + 0xd5, 0x06, 0xcf, 0x09, 0xb5, 0x01, 0x8f, 0x0a, 0xfd, 0x04, 0xcf, 0x09, + 0xf5, 0x05, 0x8f, 0x0a, 0x45, 0x00, 0x8f, 0x0a, 0xb1, 0x03, 0xcf, 0x09, + 0x09, 0x01, 0xcf, 0x09, 0x09, 0x00, 0xcf, 0x09, 0x55, 0x03, 0xcf, 0x09, + 0xe9, 0x03, 0x0f, 0x0a, 0x89, 0x04, 0x0f, 0x0a, 0x79, 0x00, 0xcf, 0x09, + 0x9d, 0x00, 0xcf, 0x09, 0xd9, 0x00, 0xcf, 0x09, 0x01, 0x07, 0xcf, 0x09, + 0x61, 0x02, 0xcf, 0x09, 0x3d, 0x00, 0xcf, 0x09, 0xa1, 0x06, 0xcf, 0x09, + 0xb9, 0x00, 0xcf, 0x09, 0xad, 0x00, 0xcf, 0x09, 0x0d, 0x01, 0xcf, 0x09, + 0xc5, 0x01, 0x8f, 0x09, 0x41, 0x06, 0x8f, 0x0a, 0xf5, 0x07, 0x8f, 0x09, + 0x5d, 0x00, 0xcf, 0x09, 0x6d, 0x01, 0x8f, 0x09, 0xc1, 0x02, 0xcf, 0x09, + 0xdd, 0x04, 0x40, 0x01, 0xe5, 0x04, 0xcf, 0x09, 0x31, 0x01, 0x8f, 0x09, + 0xd5, 0x04, 0x40, 0x01, 0x85, 0x06, 0x40, 0x01, 0xa1, 0x04, 0xcf, 0x09, + 0x21, 0x00, 0xcf, 0x06, 0xe1, 0x01, 0xcf, 0x07, 0x8d, 0x02, 0xcf, 0x0b, + 0x55, 0x01, 0x80, 0x01, 0xa1, 0x00, 0x80, 0x00, 0x3d, 0x02, 0x0f, 0x07, + 0xb9, 0x02, 0x0f, 0x07, 0xfd, 0x02, 0x0f, 0x07, 0x69, 0x03, 0x80, 0x01, + 0x95, 0x06, 0x8f, 0x07, 0x9d, 0x03, 0x80, 0x01, 0x39, 0x03, 0x8f, 0x07, + 0x3d, 0x05, 0x4f, 0x0d, 0xf5, 0x01, 0xcf, 0x07, 0x59, 0x03, 0x4f, 0x0f, + 0x31, 0x04, 0x0f, 0x08, 0x75, 0x04, 0x0f, 0x08, 0x2d, 0x05, 0x80, 0x01, + 0x2d, 0x06, 0x80, 0x01, 0xe5, 0x03, 0x4f, 0x08, 0x79, 0x06, 0x80, 0x01, + 0xe1, 0x06, 0x0f, 0x08, 0x69, 0x07, 0x80, 0x01, 0xf1, 0x07, 0x80, 0x01, + 0x21, 0x00, 0xc0, 0x01, 0x71, 0x00, 0xc0, 0x01, 0x41, 0x01, 0xc0, 0x01, + 0x79, 0x01, 0xc0, 0x01, 0xa5, 0x01, 0xc0, 0x01, 0x15, 0x02, 0xc0, 0x01, + 0x75, 0x04, 0x4f, 0x0f, 0x7d, 0x05, 0x4f, 0x0f, 0x91, 0x05, 0x4f, 0x0f, + 0xf1, 0x00, 0x0f, 0x0d, 0xb1, 0x06, 0x4f, 0x07, 0xcd, 0x00, 0xcf, 0x0a, + 0x01, 0x07, 0x8f, 0x0a, 0x05, 0x07, 0x8f, 0x0a, 0xf1, 0x06, 0x8f, 0x0a, + 0x05, 0x07, 0x8f, 0x0a, 0x7d, 0x07, 0x8f, 0x0a, 0xdd, 0x06, 0x8f, 0x0a, + 0x69, 0x07, 0x8f, 0x0a, 0x7d, 0x07, 0x8f, 0x0a, 0x01, 0x07, 0x8f, 0x0a, + 0xa1, 0x05, 0xcf, 0x0a, 0x8d, 0x05, 0xcf, 0x0a, 0xa1, 0x05, 0xcf, 0x0a, + 0x0d, 0x06, 0xcf, 0x0a, 0x79, 0x05, 0xcf, 0x0a, 0xf9, 0x05, 0xcf, 0x0a, + 0xa1, 0x05, 0xcf, 0x0a, 0x41, 0x05, 0xcf, 0x0a, 0x2d, 0x06, 0xcf, 0x0a, + 0x39, 0x06, 0xcf, 0x0a, 0x2d, 0x06, 0xcf, 0x0a, 0x09, 0x06, 0xcf, 0x0a, + 0x0d, 0x06, 0xcf, 0x0a, 0x31, 0x06, 0xcf, 0x0a, 0xbd, 0x01, 0xc0, 0x01, + 0xb1, 0x07, 0xcf, 0x06, 0x35, 0x06, 0x4f, 0x07, 0x4d, 0x02, 0xc0, 0x01, + 0x61, 0x02, 0xc0, 0x01, 0x95, 0x02, 0xc0, 0x01, 0x51, 0x07, 0xcf, 0x06, + 0x39, 0x02, 0xcf, 0x06, 0x9d, 0x07, 0xcf, 0x06, 0xe5, 0x02, 0xc0, 0x01, + 0x65, 0x06, 0xc0, 0x01, 0x91, 0x00, 0x00, 0x02, 0x9d, 0x06, 0x8f, 0x07, + 0x21, 0x00, 0x0f, 0x08, 0x59, 0x04, 0xcf, 0x06, 0x41, 0x02, 0x0f, 0x07, + 0x3d, 0x06, 0x8f, 0x07, 0x5d, 0x01, 0x00, 0x02, 0x6d, 0x01, 0x00, 0x02, + 0x7d, 0x01, 0x00, 0x02, 0x8d, 0x01, 0x00, 0x02, 0x9d, 0x01, 0x00, 0x02, + 0xad, 0x01, 0x00, 0x02, 0xc1, 0x01, 0x00, 0x02, 0x0d, 0x02, 0x00, 0x02, + 0xf9, 0x06, 0x4f, 0x07, 0x11, 0x04, 0x8f, 0x06, 0x35, 0x04, 0x8f, 0x06, + 0x9d, 0x03, 0x8f, 0x06, 0x2d, 0x07, 0x4f, 0x07, 0x05, 0x05, 0x4f, 0x0f, + 0xf5, 0x07, 0xcf, 0x0a, 0x5d, 0x03, 0x4f, 0x0f, 0x0d, 0x01, 0x8f, 0x0d, + 0x51, 0x01, 0x0f, 0x0d, 0xa1, 0x06, 0x00, 0x02, 0x15, 0x05, 0x4f, 0x0f, + 0xc1, 0x01, 0x4f, 0x0b, 0xb9, 0x00, 0x4f, 0x0b, 0x3d, 0x01, 0x4f, 0x0b, + 0x59, 0x07, 0x0f, 0x0b, 0x89, 0x07, 0x0f, 0x0b, 0x15, 0x00, 0x4f, 0x0b, + 0x85, 0x02, 0x4f, 0x0f, 0x91, 0x04, 0xcf, 0x06, 0xd5, 0x04, 0x40, 0x02, + 0xe1, 0x04, 0x40, 0x02, 0xed, 0x04, 0x40, 0x02, 0xf9, 0x04, 0x40, 0x02, + 0x05, 0x05, 0x40, 0x02, 0x11, 0x05, 0x40, 0x02, 0x19, 0x05, 0x40, 0x02, + 0x21, 0x05, 0x40, 0x02, 0x71, 0x05, 0x40, 0x02, 0x7d, 0x05, 0x40, 0x02, + 0x85, 0x05, 0x40, 0x02, 0x8d, 0x05, 0x40, 0x02, 0x95, 0x05, 0x40, 0x02, + 0x9d, 0x05, 0x40, 0x02, 0xa5, 0x05, 0x40, 0x02, 0x4d, 0x03, 0xcf, 0x07, + 0x49, 0x06, 0x8f, 0x07, 0x6d, 0x01, 0xcf, 0x07, 0x51, 0x00, 0x8f, 0x0b, + 0x71, 0x07, 0x4f, 0x0b, 0xfd, 0x00, 0x8f, 0x0b, 0x65, 0x01, 0x8f, 0x0b, + 0x05, 0x04, 0x4f, 0x0b, 0xe5, 0x02, 0x4f, 0x0b, 0x75, 0x05, 0x4f, 0x0b, + 0x21, 0x06, 0x4f, 0x0b, 0x9d, 0x01, 0x8f, 0x0b, 0x19, 0x05, 0x4f, 0x0b, + 0xa1, 0x01, 0x4f, 0x0b, 0x21, 0x02, 0x4f, 0x0b, 0xbd, 0x06, 0x4f, 0x0b, + 0x01, 0x04, 0x4f, 0x0b, 0xc9, 0x03, 0x4f, 0x0b, 0x99, 0x00, 0x8f, 0x0b, + 0x65, 0x04, 0x8f, 0x07, 0x09, 0x05, 0xcf, 0x07, 0x31, 0x05, 0xcf, 0x07, + 0x1d, 0x02, 0xcf, 0x06, 0x8d, 0x03, 0x8f, 0x07, 0xe9, 0x07, 0xcf, 0x06, + 0x69, 0x02, 0x8f, 0x07, 0x6d, 0x06, 0xcf, 0x06, 0x0d, 0x05, 0x8f, 0x07, + 0xc1, 0x01, 0x8f, 0x0f, 0xc9, 0x01, 0x8f, 0x0f, 0xcd, 0x01, 0x8f, 0x0f, + 0xd5, 0x01, 0x8f, 0x0f, 0xd9, 0x01, 0x8f, 0x0f, 0xe1, 0x01, 0x8f, 0x0f, + 0x65, 0x02, 0x8f, 0x0f, 0x89, 0x02, 0x8f, 0x0f, 0x05, 0x07, 0xcf, 0x06, + 0x69, 0x06, 0xcf, 0x06, 0x59, 0x02, 0x0f, 0x07, 0x71, 0x02, 0x0f, 0x07, + 0xdd, 0x00, 0x0f, 0x07, 0x09, 0x04, 0x4f, 0x07, 0xbd, 0x06, 0xcf, 0x06, + 0x09, 0x05, 0xcf, 0x0c, 0x15, 0x05, 0xcf, 0x0c, 0x19, 0x00, 0x80, 0x02, + 0x1d, 0x05, 0xcf, 0x0c, 0x3d, 0x00, 0x80, 0x02, 0x5d, 0x06, 0xcf, 0x0c, + 0x1d, 0x06, 0xcf, 0x0e, 0x6d, 0x02, 0x0f, 0x0f, 0x61, 0x05, 0x8f, 0x06, + 0xa5, 0x00, 0xcf, 0x06, 0x2d, 0x02, 0xcf, 0x06, 0x71, 0x02, 0xcf, 0x06, + 0xc1, 0x03, 0x80, 0x02, 0x25, 0x01, 0x4f, 0x0f, 0x0d, 0x01, 0x4f, 0x0f, + 0xdd, 0x07, 0x80, 0x02, 0xb1, 0x00, 0xc0, 0x02, 0x09, 0x03, 0x8f, 0x0f, + 0xd5, 0x07, 0x8f, 0x07, 0xcd, 0x04, 0x8f, 0x07, 0xb9, 0x07, 0x4f, 0x08, + 0x9d, 0x01, 0x8f, 0x09, 0x79, 0x01, 0xcf, 0x09, 0x5d, 0x04, 0x40, 0x01, + 0x69, 0x07, 0xcf, 0x06, 0xe5, 0x07, 0xcf, 0x06, 0x29, 0x00, 0x0f, 0x07, + 0xc5, 0x03, 0x8f, 0x07, 0x31, 0x07, 0x8f, 0x07, 0x71, 0x01, 0x0f, 0x08, + 0xa5, 0x01, 0x0f, 0x08, 0x35, 0x04, 0x4f, 0x07, 0xa1, 0x07, 0x80, 0x01, + 0xe5, 0x07, 0x80, 0x01, 0xa9, 0x01, 0xcf, 0x06, 0x8d, 0x05, 0xcf, 0x06, + 0x2d, 0x00, 0xc0, 0x01, 0x41, 0x00, 0xc0, 0x01, 0x75, 0x00, 0xc0, 0x01, + 0x1d, 0x00, 0xcf, 0x06, 0x81, 0x05, 0xcf, 0x06, 0x4d, 0x04, 0xc0, 0x01, + 0x89, 0x04, 0x8f, 0x07, 0x95, 0x05, 0x8f, 0x07, 0x31, 0x00, 0x0f, 0x07, + 0x2d, 0x04, 0x8f, 0x07, 0xc9, 0x07, 0xc0, 0x01, 0x15, 0x00, 0x00, 0x02, + 0x01, 0x05, 0x4f, 0x07, 0x19, 0x02, 0x8f, 0x06, 0x3d, 0x02, 0x8f, 0x06, + 0xa5, 0x01, 0x8f, 0x06, 0x1d, 0x07, 0x8f, 0x07, 0xd5, 0x05, 0x8f, 0x07, + 0xc1, 0x00, 0x00, 0x02, 0xfd, 0x02, 0x8f, 0x07, 0x51, 0x05, 0x00, 0x02, + 0xbd, 0x01, 0xcf, 0x07, 0xb9, 0x04, 0x8f, 0x07, 0xdd, 0x07, 0x8f, 0x07, + 0x69, 0x07, 0x8f, 0x07, 0xb9, 0x03, 0xcf, 0x07, 0xe1, 0x03, 0xcf, 0x07, + 0xcd, 0x00, 0xcf, 0x06, 0x3d, 0x02, 0x8f, 0x07, 0x99, 0x06, 0xcf, 0x06, + 0x19, 0x01, 0x8f, 0x07, 0x1d, 0x05, 0xcf, 0x06, 0xf9, 0x04, 0x8f, 0x07, + 0xa5, 0x03, 0x8f, 0x07, 0xb5, 0x03, 0x8f, 0x07, 0xcd, 0x05, 0xcf, 0x06, + 0x31, 0x05, 0xcf, 0x06, 0x21, 0x01, 0x0f, 0x07, 0x39, 0x01, 0x0f, 0x07, + 0x45, 0x04, 0x8f, 0x07, 0x89, 0x05, 0xcf, 0x06, 0x91, 0x06, 0x40, 0x02, + 0x1d, 0x01, 0xcf, 0x06, 0x65, 0x03, 0x8f, 0x07, 0x85, 0x02, 0x80, 0x02, + 0xf5, 0x03, 0x4f, 0x07, 0xab, 0x26, 0x0a, 0x74, 0x7f, 0x00, 0x98, 0x80, + 0xe0, 0x7e, 0xe0, 0x78, 0xab, 0x26, 0xe0, 0x7c, 0x00, 0x00, 0x40, 0x00, + 0x6f, 0x24, 0x3f, 0x00, 0xab, 0x26, 0xe0, 0x7c, 0x00, 0x00, 0x4f, 0x00, + 0x6f, 0x24, 0x3f, 0x00, 0xe1, 0xc0, 0xaa, 0x20, 0x10, 0x00, 0xd3, 0x70, + 0x01, 0x00, 0x02, 0x39, 0xe8, 0x07, 0xc2, 0xff, 0xc3, 0x40, 0x7f, 0x00, + 0x60, 0x8c, 0xab, 0x20, 0x10, 0x00, 0xc1, 0xc0, 0x2f, 0x38, 0x01, 0x00, + 0x6f, 0x24, 0x3f, 0x00, 0xe0, 0x78, 0xe0, 0x78, 0xc3, 0x40, 0x7f, 0x00, + 0x00, 0x80, 0x6b, 0x20, 0x40, 0x09, 0x2c, 0x70, 0x4c, 0x70, 0x6c, 0x70, + 0x8c, 0x70, 0xac, 0x70, 0xcc, 0x70, 0xec, 0x70, 0x0d, 0x70, 0x2d, 0x70, + 0x4d, 0x70, 0x6d, 0x70, 0x8d, 0x70, 0xad, 0x70, 0xcd, 0x70, 0xed, 0x70, + 0x0e, 0x70, 0x2e, 0x70, 0x4e, 0x70, 0x6e, 0x70, 0x8e, 0x70, 0xae, 0x70, + 0xce, 0x70, 0xee, 0x70, 0x0f, 0x70, 0x2f, 0x70, 0x0c, 0x70, 0x4a, 0x25, + 0x00, 0x30, 0x4a, 0x26, 0x00, 0x30, 0xdb, 0x44, 0x80, 0x00, 0x90, 0x11, + 0xdb, 0x42, 0x80, 0x00, 0x90, 0x12, 0x0a, 0x22, 0x80, 0x8f, 0x7f, 0x00, + 0x18, 0x8c, 0xe2, 0x20, 0x82, 0x00, 0x6f, 0x70, 0x22, 0x20, 0x80, 0x0f, + 0x7f, 0x00, 0x54, 0xaa, 0x55, 0x06, 0x8f, 0x04, 0x7c, 0xcc, 0x7f, 0x00, + 0x3d, 0x01, 0x00, 0x00, 0xe8, 0xc2, 0x08, 0x45, 0x02, 0x81, 0x43, 0x85, + 0x00, 0x30, 0x83, 0x0f, 0x4c, 0x3d, 0xd0, 0xcc, 0x00, 0x32, 0x80, 0x0f, + 0x73, 0x3f, 0x33, 0x33, 0x01, 0x30, 0xcc, 0x00, 0x83, 0xa5, 0xc0, 0x81, + 0x41, 0x85, 0x02, 0x85, 0x61, 0x81, 0xc1, 0xa5, 0xe1, 0x81, 0x02, 0x33, + 0x03, 0x00, 0x02, 0x36, 0x82, 0x10, 0x01, 0x34, 0x80, 0x1f, 0x7a, 0xc4, + 0x00, 0x00, 0xc3, 0x41, 0xcb, 0x42, 0x78, 0xf1, 0xbf, 0xb8, 0xbf, 0xbb, + 0xbf, 0xba, 0xe2, 0xa5, 0x7e, 0x0e, 0x6f, 0x05, 0x01, 0x32, 0xd0, 0x00, + 0x43, 0xf6, 0xe0, 0x8d, 0x08, 0xf0, 0xed, 0x70, 0x28, 0x4d, 0x2c, 0x70, + 0x4c, 0x76, 0x2a, 0x0c, 0x6f, 0x06, 0xe0, 0xad, 0x2d, 0x0f, 0xb0, 0x10, + 0xcd, 0x70, 0x4b, 0x0f, 0x51, 0x10, 0x11, 0x8d, 0xc3, 0x41, 0xf4, 0x41, + 0x5d, 0xbb, 0xe1, 0x68, 0x02, 0x40, 0x4e, 0x0e, 0x6f, 0x05, 0xf1, 0xad, + 0x64, 0x00, 0x0c, 0x00, 0x14, 0x8d, 0x04, 0x71, 0x14, 0xad, 0x12, 0x1d, + 0x03, 0x10, 0x3c, 0xf0, 0x13, 0x8d, 0x04, 0x71, 0x13, 0xad, 0x0f, 0x78, + 0x83, 0x08, 0xf4, 0x02, 0x02, 0x40, 0x15, 0x8d, 0x8f, 0x08, 0xb4, 0x01, + 0xc0, 0xad, 0x28, 0x4d, 0x2c, 0x70, 0xde, 0x0b, 0x6f, 0x06, 0x4c, 0x76, + 0x42, 0xf0, 0x85, 0x0f, 0x11, 0x10, 0x10, 0x8d, 0xc3, 0x41, 0xf4, 0x41, + 0x5d, 0xbb, 0xe1, 0x68, 0xef, 0x78, 0xb2, 0xe0, 0xca, 0x27, 0xad, 0x1c, + 0x02, 0x40, 0xfe, 0x0d, 0x6f, 0x05, 0xf0, 0xad, 0x64, 0x00, 0x2c, 0x00, + 0xef, 0x78, 0x39, 0x08, 0xb1, 0x0c, 0xcd, 0x70, 0x00, 0x1d, 0x43, 0x10, + 0xd0, 0xad, 0x2a, 0xf0, 0x12, 0x8d, 0x04, 0x71, 0x12, 0xad, 0x0f, 0x78, + 0x19, 0x08, 0x94, 0x01, 0x14, 0x8d, 0x1d, 0x08, 0xf4, 0x02, 0xcd, 0x70, + 0x00, 0x1d, 0x83, 0x10, 0xd1, 0xad, 0xd4, 0xad, 0xd2, 0xad, 0x1a, 0xf0, + 0xef, 0x78, 0xe5, 0xe0, 0x96, 0xf7, 0xcd, 0x70, 0x28, 0x4d, 0x2c, 0x70, + 0x4c, 0x76, 0x76, 0x0b, 0x6f, 0x06, 0xc0, 0xad, 0x0e, 0xf0, 0xc3, 0x41, + 0xf4, 0x41, 0x5d, 0xbb, 0xa6, 0x0d, 0x4f, 0x05, 0xc8, 0xf6, 0x15, 0x8d, + 0x04, 0x71, 0x15, 0xad, 0x04, 0xf0, 0xd3, 0xad, 0xd5, 0xad, 0x81, 0xde, + 0xc1, 0x40, 0xc8, 0xc6, 0x6c, 0x70, 0x44, 0x68, 0x2c, 0x70, 0x60, 0xa8, + 0x24, 0x71, 0x01, 0x09, 0xb2, 0x00, 0x04, 0x1a, 0xd0, 0x00, 0x6a, 0xb0, + 0x64, 0xa0, 0xe0, 0x7f, 0x63, 0xa0, 0xe0, 0x78, 0xe9, 0x01, 0x00, 0x00, + 0xf4, 0xc2, 0x08, 0x46, 0x02, 0x81, 0x28, 0x45, 0x24, 0x86, 0x00, 0x30, + 0x82, 0x0f, 0xcc, 0x3d, 0xd0, 0xcc, 0x00, 0x31, 0x80, 0x0f, 0x66, 0x3f, + 0x66, 0x66, 0x01, 0x30, 0x94, 0x00, 0x10, 0x1e, 0x00, 0x15, 0x00, 0x85, + 0x0c, 0x16, 0x08, 0x10, 0xe2, 0x85, 0x61, 0x86, 0x42, 0x86, 0x21, 0x85, + 0x01, 0xa6, 0x81, 0x85, 0x02, 0x31, 0x81, 0x00, 0x82, 0xa6, 0x82, 0x85, + 0x02, 0x30, 0xc0, 0x00, 0x83, 0xa6, 0x80, 0x8e, 0x04, 0x15, 0x12, 0x10, + 0x00, 0x15, 0x13, 0x10, 0xbf, 0xb9, 0xbf, 0xb8, 0x01, 0x30, 0x41, 0x00, + 0x02, 0x37, 0x00, 0x12, 0xbf, 0xb8, 0x01, 0x31, 0x00, 0x00, 0x50, 0x22, + 0xd5, 0x27, 0x50, 0x23, 0xd6, 0x27, 0x91, 0x40, 0x2e, 0x70, 0x06, 0xec, + 0xc3, 0x41, 0x0e, 0x43, 0xa1, 0xc2, 0x05, 0xf0, 0xc3, 0x41, 0x0e, 0x42, + 0xa1, 0xc2, 0xf6, 0x0c, 0x4f, 0x05, 0x02, 0x36, 0x40, 0x25, 0xbf, 0xb8, + 0xc3, 0x41, 0x4b, 0x43, 0x78, 0xf1, 0xe6, 0x0c, 0x6f, 0x05, 0xca, 0x21, + 0x69, 0x20, 0xed, 0x74, 0x9b, 0xf6, 0x02, 0x85, 0xad, 0x70, 0xd6, 0x0c, + 0x6f, 0x05, 0xa1, 0x41, 0x95, 0xf6, 0xc2, 0x40, 0xca, 0x0c, 0x6f, 0x05, + 0xa2, 0x41, 0xca, 0xf6, 0x62, 0x40, 0xc2, 0x0c, 0x6f, 0x05, 0xa1, 0x41, + 0xed, 0x72, 0x4b, 0xf6, 0xed, 0x73, 0x09, 0xf0, 0x42, 0x40, 0xb2, 0x0c, + 0x6f, 0x05, 0xa1, 0x41, 0xed, 0x70, 0x43, 0xf6, 0xed, 0x71, 0x00, 0x3c, + 0x80, 0x2f, 0x7a, 0x44, 0x00, 0x00, 0xc3, 0x41, 0x80, 0x3f, 0x00, 0x00, + 0x10, 0x43, 0x96, 0x0c, 0x6f, 0x05, 0x30, 0x42, 0x0a, 0xf6, 0xad, 0x70, + 0x62, 0x40, 0x8a, 0x0c, 0x6f, 0x05, 0xa1, 0x41, 0x0a, 0x22, 0xc0, 0x24, + 0x42, 0xf6, 0xb1, 0x42, 0x0a, 0x6f, 0x31, 0x08, 0xb5, 0x00, 0xad, 0x70, + 0xc3, 0x41, 0x7a, 0x3f, 0x48, 0xe1, 0x6e, 0x0c, 0x6f, 0x05, 0x42, 0x40, + 0x4a, 0x00, 0x2a, 0x00, 0x42, 0x40, 0xc3, 0x41, 0xae, 0x3e, 0x7b, 0x14, + 0x5a, 0x0c, 0x4f, 0x05, 0xdd, 0xf6, 0xc3, 0x41, 0x4b, 0x43, 0x78, 0xf1, + 0xa2, 0x40, 0x15, 0xf0, 0x98, 0xef, 0xc3, 0x41, 0x7a, 0x3f, 0x48, 0xe1, + 0x42, 0x0c, 0x6f, 0x05, 0x42, 0x40, 0x51, 0xf6, 0xc3, 0x41, 0xae, 0x3e, + 0x7b, 0x14, 0x36, 0x0c, 0x6f, 0x05, 0x42, 0x40, 0xc9, 0xf6, 0xc3, 0x41, + 0x4b, 0x43, 0x78, 0xf1, 0xc2, 0x40, 0x26, 0x0c, 0x4f, 0x05, 0xad, 0x71, + 0x82, 0xf6, 0xad, 0x70, 0x2b, 0x08, 0x51, 0x20, 0x14, 0x8e, 0x04, 0x71, + 0x14, 0xae, 0x0f, 0x78, 0x43, 0x08, 0xf4, 0x02, 0x6c, 0x70, 0x16, 0x8e, + 0x69, 0x08, 0xf4, 0x02, 0x2c, 0x4e, 0x60, 0xae, 0x77, 0xae, 0x76, 0xae, + 0x75, 0xae, 0x74, 0xae, 0x18, 0x1e, 0x43, 0x10, 0x31, 0xf0, 0x63, 0x08, + 0x11, 0x20, 0x2f, 0x09, 0x10, 0x20, 0x04, 0xed, 0x18, 0x8e, 0x13, 0xe8, + 0x15, 0x8e, 0x04, 0x71, 0x15, 0xae, 0x0d, 0x78, 0x4b, 0x08, 0x12, 0x04, + 0x15, 0x1e, 0xc3, 0x13, 0x17, 0x1e, 0x43, 0x10, 0x1f, 0xf0, 0x3f, 0x09, + 0x10, 0x20, 0x16, 0x8e, 0x04, 0x71, 0x16, 0xae, 0x19, 0xf0, 0x15, 0x8e, + 0x04, 0x77, 0x2f, 0x26, 0x05, 0xf0, 0x2a, 0x00, 0x23, 0x00, 0x15, 0xae, + 0x15, 0x1e, 0x03, 0x10, 0x17, 0x8e, 0x0f, 0xe8, 0x17, 0x1e, 0x03, 0x10, + 0x0b, 0xed, 0x00, 0x1e, 0x43, 0x10, 0x09, 0xf0, 0x2c, 0x70, 0x4c, 0x75, + 0x5a, 0x09, 0x6f, 0x06, 0x60, 0xae, 0x81, 0xd8, 0x82, 0xed, 0x0c, 0x70, + 0xd4, 0xc6, 0xe0, 0x78, 0x6c, 0x70, 0x44, 0x68, 0x2c, 0x70, 0x60, 0xa8, + 0x24, 0x71, 0x01, 0x09, 0xf2, 0x00, 0x04, 0x1a, 0xd0, 0x00, 0x78, 0xa8, + 0x65, 0xa0, 0xe0, 0x7f, 0x64, 0xa0, 0xe0, 0x78, 0x41, 0x03, 0x00, 0x00, + 0xf0, 0xc3, 0xaf, 0xc1, 0x30, 0x41, 0x08, 0x45, 0xdc, 0x48, 0x4a, 0x22, + 0x00, 0x00, 0x4a, 0x24, 0x00, 0x71, 0x8b, 0xc0, 0xa8, 0x20, 0x80, 0x01, + 0x04, 0x11, 0x03, 0x04, 0x04, 0x18, 0xd0, 0x00, 0x87, 0xc4, 0x4a, 0x24, + 0x00, 0x71, 0x0c, 0x70, 0xa8, 0x20, 0x40, 0x02, 0x15, 0x25, 0x01, 0x10, + 0x2f, 0x81, 0x15, 0x24, 0x03, 0x10, 0x04, 0x71, 0x20, 0xa3, 0x84, 0xc3, + 0x15, 0x25, 0x80, 0x10, 0x02, 0x80, 0x15, 0x23, 0x81, 0x00, 0x44, 0x71, + 0xf5, 0x0a, 0xf2, 0x80, 0x00, 0xa1, 0x1c, 0x14, 0x10, 0x30, 0xed, 0x70, + 0x50, 0x20, 0xfe, 0xa7, 0x1e, 0xf2, 0x7f, 0xde, 0x17, 0xbe, 0x02, 0x40, + 0x0a, 0x0b, 0x6f, 0x05, 0x0a, 0x21, 0x80, 0x03, 0x16, 0xf2, 0x4a, 0x24, + 0x00, 0x71, 0x8b, 0xc0, 0xa8, 0x20, 0xc0, 0x01, 0x20, 0x80, 0x00, 0x39, + 0x01, 0x04, 0x04, 0x18, 0x50, 0x00, 0x88, 0xc0, 0x2c, 0x70, 0x40, 0x80, + 0x24, 0x71, 0x00, 0x3a, 0x02, 0x04, 0xfb, 0x09, 0xf2, 0x80, 0x04, 0x18, + 0x90, 0x00, 0x47, 0xc6, 0x05, 0xc1, 0x04, 0xc2, 0x06, 0xc0, 0x42, 0xc1, + 0x41, 0xc2, 0x43, 0xc0, 0x80, 0xc3, 0x81, 0xc1, 0x80, 0xc0, 0x41, 0x80, + 0xe5, 0x71, 0xff, 0x0f, 0xf2, 0x90, 0x04, 0x18, 0x90, 0x00, 0x8d, 0x70, + 0x43, 0xc4, 0x08, 0x11, 0x0b, 0x20, 0x4a, 0x24, 0x00, 0x71, 0x8b, 0xc2, + 0xa8, 0x20, 0xc0, 0x02, 0x04, 0x12, 0x00, 0x04, 0xc0, 0x83, 0x00, 0x33, + 0x00, 0x10, 0x01, 0x36, 0x00, 0x10, 0x04, 0x1b, 0x10, 0x00, 0x88, 0xc3, + 0x81, 0xc2, 0x04, 0x13, 0x0e, 0x04, 0x00, 0xc0, 0xe0, 0x82, 0x00, 0x30, + 0x80, 0x03, 0x02, 0x37, 0x00, 0x10, 0x85, 0x71, 0xef, 0x0c, 0xf2, 0x90, + 0x04, 0x1a, 0x10, 0x00, 0x41, 0x81, 0x60, 0x81, 0x22, 0x81, 0x00, 0xc0, + 0x45, 0xc2, 0x44, 0xc3, 0x46, 0xc1, 0x05, 0xa5, 0x40, 0x25, 0x02, 0x12, + 0x0c, 0x70, 0x84, 0xc1, 0x04, 0x11, 0x03, 0x04, 0x04, 0x71, 0xfd, 0x08, + 0xf2, 0x80, 0x04, 0x1a, 0xd0, 0x00, 0x18, 0x8d, 0x21, 0x68, 0x38, 0xad, + 0xe4, 0x8d, 0x30, 0x40, 0x04, 0xef, 0x19, 0x8d, 0x04, 0x71, 0x19, 0xad, + 0xc7, 0x85, 0x05, 0x85, 0xc1, 0x41, 0x10, 0x42, 0x36, 0x0a, 0x6f, 0x05, + 0xd1, 0x41, 0x4a, 0x00, 0x2c, 0x00, 0x42, 0x40, 0x09, 0x85, 0x01, 0x30, + 0x81, 0x0f, 0xfe, 0x43, 0xd6, 0xed, 0x42, 0x40, 0x1e, 0x0a, 0x6f, 0x05, + 0x30, 0x41, 0xca, 0x21, 0x8b, 0x24, 0x1c, 0x1d, 0x40, 0x14, 0x28, 0x15, + 0x80, 0x10, 0xcd, 0x70, 0xb8, 0xe8, 0x54, 0x15, 0x80, 0x10, 0x2f, 0x21, + 0x07, 0x04, 0x13, 0x08, 0x44, 0x00, 0xc5, 0x0f, 0x10, 0x10, 0x55, 0x15, + 0x82, 0x10, 0xbd, 0x0a, 0x45, 0x00, 0x28, 0x1d, 0x43, 0x10, 0x18, 0xad, + 0x85, 0xf0, 0xea, 0x09, 0x6f, 0x05, 0x28, 0x85, 0x76, 0x00, 0x2a, 0x00, + 0x2f, 0x21, 0x07, 0x04, 0x09, 0x85, 0x01, 0x30, 0x8e, 0x0f, 0xfe, 0xc3, + 0xd6, 0xed, 0x42, 0x40, 0xce, 0x09, 0x6f, 0x05, 0xc1, 0x41, 0xca, 0x26, + 0x89, 0x14, 0xc8, 0xa5, 0x28, 0x15, 0x80, 0x10, 0x8d, 0x08, 0x31, 0x00, + 0xcd, 0x70, 0x54, 0x15, 0x80, 0x10, 0x2f, 0x21, 0x07, 0x04, 0x11, 0x08, + 0x44, 0x00, 0x3a, 0xef, 0x55, 0x15, 0x82, 0x10, 0x6d, 0x0a, 0x45, 0x00, + 0x28, 0x1d, 0x83, 0x10, 0x18, 0xad, 0x5f, 0xf0, 0xbb, 0x08, 0xb1, 0x00, + 0x2f, 0x22, 0x07, 0x04, 0x54, 0x15, 0x81, 0x10, 0xaf, 0x09, 0x85, 0x00, + 0x56, 0x15, 0x80, 0x10, 0x38, 0x60, 0x0f, 0x78, 0xa3, 0x08, 0x82, 0x00, + 0x29, 0x15, 0x80, 0x10, 0x04, 0x71, 0x29, 0x1d, 0x02, 0x10, 0x28, 0x1d, + 0x43, 0x10, 0x38, 0xad, 0x47, 0xf0, 0x54, 0x15, 0x80, 0x10, 0x0d, 0x08, + 0x45, 0x00, 0x28, 0x15, 0x82, 0x10, 0x33, 0xea, 0x56, 0x15, 0x82, 0x10, + 0x58, 0x60, 0x0f, 0x78, 0x10, 0x71, 0x60, 0x00, 0x2c, 0x00, 0x0c, 0x70, + 0x29, 0x15, 0x81, 0x10, 0x23, 0xe9, 0x47, 0x09, 0x15, 0x01, 0x2a, 0xef, + 0x04, 0xad, 0x19, 0xad, 0xcd, 0x72, 0x1f, 0xf0, 0x28, 0x1d, 0x82, 0x13, + 0xd8, 0xad, 0x2b, 0xf0, 0x53, 0x08, 0x71, 0x00, 0x2f, 0x22, 0x07, 0x04, + 0x54, 0x15, 0x81, 0x10, 0x47, 0x09, 0x85, 0x00, 0x56, 0x15, 0x80, 0x10, + 0x38, 0x60, 0x0f, 0x78, 0x3b, 0x08, 0x82, 0x00, 0x29, 0x15, 0x80, 0x10, + 0x04, 0x71, 0x29, 0x1d, 0x02, 0x10, 0x28, 0x1d, 0x83, 0x10, 0x38, 0xad, + 0x13, 0xf0, 0xcd, 0x73, 0x04, 0xad, 0xed, 0x70, 0x0a, 0xf0, 0xed, 0x70, + 0x18, 0xad, 0xe4, 0xad, 0xcd, 0x70, 0x0b, 0xf0, 0xed, 0x71, 0xe4, 0xad, + 0x19, 0xad, 0xcd, 0x71, 0x29, 0x1d, 0x02, 0x10, 0x18, 0xad, 0x28, 0x1d, + 0x02, 0x10, 0x09, 0x85, 0x00, 0x32, 0x81, 0x2f, 0x23, 0x3c, 0x00, 0xd7, + 0x00, 0x30, 0x80, 0x0f, 0x7d, 0x3f, 0xa4, 0x70, 0x01, 0x31, 0x13, 0x00, + 0x02, 0x31, 0xc0, 0x24, 0xd3, 0x42, 0x75, 0x3f, 0x8f, 0xc2, 0x00, 0x30, + 0x80, 0x04, 0xd3, 0x40, 0xf4, 0x42, 0x5d, 0xbb, 0x01, 0x33, 0x00, 0x20, + 0x01, 0x33, 0x01, 0x24, 0x10, 0x44, 0x30, 0x41, 0xaa, 0x08, 0x6f, 0x05, + 0x24, 0x1d, 0xc0, 0x14, 0xca, 0x21, 0x09, 0x25, 0x1c, 0x1d, 0x40, 0x14, + 0x08, 0x85, 0x4f, 0x20, 0xd0, 0x27, 0x02, 0x33, 0x00, 0x20, 0x00, 0x30, + 0x80, 0x04, 0x01, 0x33, 0x01, 0x24, 0x02, 0x33, 0x00, 0x20, 0x10, 0x41, + 0x82, 0x08, 0x6f, 0x05, 0x30, 0x40, 0xca, 0x20, 0x4b, 0x24, 0x20, 0x1d, + 0x00, 0x14, 0x8c, 0xef, 0x57, 0x15, 0x81, 0x10, 0x19, 0x8d, 0x11, 0x09, + 0x25, 0x00, 0x0c, 0x70, 0x04, 0xad, 0x19, 0xad, 0x28, 0x1d, 0x02, 0x10, + 0x2c, 0x70, 0x4c, 0x71, 0x08, 0xee, 0x38, 0xad, 0x0d, 0x0e, 0xb1, 0x10, + 0x28, 0x1d, 0x42, 0x10, 0x81, 0xd9, 0x4c, 0x70, 0x00, 0x85, 0x8c, 0x20, + 0x83, 0x8f, 0xb9, 0x20, 0x83, 0x0f, 0x3c, 0x76, 0x05, 0x20, 0xbe, 0x80, + 0x8a, 0x20, 0xbe, 0x00, 0xdd, 0x70, 0x0f, 0x78, 0xd0, 0xc7, 0xe0, 0x78, + 0x6c, 0x70, 0x40, 0x20, 0x02, 0x02, 0x2c, 0x70, 0x60, 0xa0, 0x64, 0xa8, + 0x24, 0x71, 0x01, 0x09, 0xf2, 0x00, 0x04, 0x1a, 0xd0, 0x00, 0xc3, 0x41, + 0x7a, 0x44, 0x00, 0x00, 0x65, 0xa0, 0x78, 0xa8, 0x79, 0xa8, 0x27, 0xa0, + 0x9f, 0xb9, 0xcb, 0x44, 0x7f, 0x00, 0x60, 0xe6, 0x28, 0xa0, 0x4a, 0x24, + 0x00, 0x71, 0x40, 0x20, 0x02, 0x0b, 0x81, 0x41, 0x24, 0x18, 0xc0, 0x00, + 0x29, 0x18, 0xc2, 0x00, 0x28, 0x18, 0xc2, 0x00, 0xa8, 0x20, 0x80, 0x01, + 0x04, 0x11, 0x03, 0x04, 0x04, 0x1a, 0xd0, 0x00, 0x40, 0x20, 0x03, 0x0f, + 0x4a, 0x24, 0x00, 0x71, 0x40, 0x24, 0x01, 0x14, 0xa8, 0x20, 0x80, 0x01, + 0x04, 0x11, 0x02, 0x04, 0x04, 0x1b, 0x90, 0x00, 0x8a, 0x21, 0x06, 0x04, + 0x4c, 0x18, 0x44, 0x00, 0x3c, 0xd9, 0x4e, 0x18, 0x05, 0x05, 0x50, 0x18, + 0x44, 0x00, 0x8a, 0x21, 0x07, 0x0d, 0x52, 0x18, 0x44, 0x00, 0x64, 0xd9, + 0x57, 0x18, 0x42, 0x00, 0x50, 0xd9, 0x56, 0x18, 0x03, 0x03, 0x55, 0x18, + 0x03, 0x01, 0xe0, 0x7f, 0x54, 0x18, 0x42, 0x00, 0xec, 0xc2, 0x08, 0x46, + 0xed, 0x70, 0xcb, 0x45, 0x80, 0x00, 0x20, 0x1b, 0xd3, 0x41, 0x80, 0x00, + 0xa4, 0x21, 0x2f, 0x26, 0x48, 0xf0, 0x12, 0xf2, 0x00, 0x19, 0x40, 0x20, + 0x4a, 0x24, 0x40, 0x74, 0x4a, 0x21, 0x00, 0x00, 0xa8, 0x20, 0xc0, 0x01, + 0x30, 0x78, 0x14, 0x25, 0x00, 0x10, 0x24, 0x71, 0xe0, 0xb0, 0xe0, 0x78, + 0xaf, 0x04, 0x00, 0x00, 0x01, 0x9e, 0xa1, 0xe0, 0x0c, 0x70, 0x86, 0xf6, + 0x22, 0x9d, 0xf2, 0x08, 0x6f, 0x0f, 0x0c, 0x71, 0x02, 0xb5, 0x01, 0x9e, + 0xa7, 0xe0, 0x0c, 0x70, 0x85, 0xf6, 0x23, 0x9d, 0xde, 0x08, 0x6f, 0x0f, + 0x0c, 0x71, 0x03, 0xb5, 0x01, 0x9e, 0xad, 0xe0, 0x0c, 0x70, 0x86, 0xf6, + 0x24, 0x9d, 0xce, 0x08, 0x6f, 0x0f, 0x0c, 0x71, 0x04, 0xb5, 0x02, 0x9e, + 0xa1, 0xe0, 0x0c, 0x70, 0x85, 0xf6, 0x25, 0x9d, 0xba, 0x08, 0x6f, 0x0f, + 0x0c, 0x71, 0x05, 0xb5, 0x03, 0x9e, 0x0e, 0x70, 0xa1, 0xe0, 0x0c, 0x70, + 0x85, 0xf6, 0x26, 0x9d, 0xa6, 0x08, 0x6f, 0x0f, 0x0c, 0x71, 0x06, 0xb5, + 0x03, 0x9e, 0x11, 0x08, 0xf2, 0x09, 0x0c, 0x71, 0x96, 0x08, 0x6f, 0x0f, + 0x27, 0x9d, 0x10, 0x40, 0x0e, 0x1d, 0x04, 0x14, 0x04, 0x9e, 0x4e, 0x70, + 0xad, 0xe0, 0x0c, 0x70, 0x85, 0xf6, 0x28, 0x9d, 0x7e, 0x08, 0x6f, 0x0f, + 0x0c, 0x71, 0x08, 0xb5, 0x00, 0x96, 0x8d, 0xe8, 0x01, 0x96, 0x8b, 0xe8, + 0x02, 0x96, 0x89, 0xe8, 0x03, 0x96, 0x87, 0xe8, 0x09, 0x9d, 0x66, 0x08, + 0x6f, 0x0f, 0x2c, 0x71, 0x10, 0x42, 0x12, 0x1d, 0x84, 0x14, 0x0a, 0x95, + 0x1b, 0x78, 0x0a, 0xb5, 0x23, 0x9e, 0x0b, 0x09, 0xd2, 0x09, 0x08, 0xe0, + 0x0a, 0xb5, 0x2b, 0x95, 0x3b, 0x79, 0x2b, 0xb5, 0x44, 0x9e, 0x0b, 0x0a, + 0xd2, 0x09, 0x24, 0x72, 0x2b, 0xb5, 0x4c, 0x9d, 0x0e, 0x70, 0x90, 0xe2, + 0x6c, 0x70, 0x52, 0x00, 0x2b, 0x00, 0x4c, 0x70, 0x6c, 0x70, 0x2f, 0x26, + 0x08, 0xf0, 0x0e, 0xf2, 0x6c, 0x70, 0x70, 0x7a, 0x44, 0x20, 0x43, 0x00, + 0x04, 0x20, 0x80, 0x0f, 0x00, 0x00, 0xfe, 0xff, 0x5b, 0x63, 0x2f, 0x20, + 0x02, 0x80, 0xf7, 0xf5, 0x4c, 0x70, 0x2f, 0x26, 0x48, 0xf0, 0x0e, 0xf2, + 0x4c, 0x70, 0x50, 0x78, 0x44, 0x21, 0x42, 0x00, 0x1a, 0x62, 0x04, 0x21, + 0x80, 0x0f, 0x00, 0x00, 0xfe, 0xff, 0x2f, 0x21, 0x02, 0x80, 0xf7, 0xf5, + 0x0b, 0x0a, 0xd2, 0x23, 0x50, 0x7a, 0x5d, 0x78, 0x1a, 0x62, 0x00, 0x95, + 0x87, 0xe0, 0x5e, 0x03, 0x0d, 0x00, 0x25, 0x20, 0x00, 0x00, 0x09, 0xf0, + 0x0d, 0xf0, 0x13, 0xf0, 0x20, 0xf0, 0x2f, 0xf0, 0x3b, 0xf0, 0x46, 0xf0, + 0x51, 0xf0, 0x00, 0x9e, 0xb9, 0x08, 0x72, 0x08, 0x2c, 0x71, 0x20, 0xb5, + 0x5e, 0xf0, 0x00, 0x9e, 0xbd, 0x08, 0x13, 0x03, 0x27, 0x02, 0x20, 0x00, + 0xe0, 0xb5, 0x00, 0x9e, 0xcd, 0x08, 0x52, 0x08, 0x00, 0x1d, 0x45, 0x10, + 0x2f, 0x20, 0x08, 0x04, 0x2c, 0x72, 0x4c, 0x72, 0x9e, 0x09, 0x2f, 0x0f, + 0x10, 0x40, 0x75, 0x02, 0x20, 0x00, 0x20, 0x95, 0x01, 0x9e, 0xa6, 0xe0, + 0x10, 0x01, 0x29, 0x00, 0x6c, 0x72, 0x05, 0x9e, 0xac, 0xe0, 0xfe, 0x00, + 0x2c, 0x00, 0x2c, 0x76, 0x20, 0xb5, 0xd5, 0x02, 0x20, 0x00, 0x02, 0x1d, + 0xc5, 0x10, 0x00, 0x9e, 0xa1, 0x08, 0x52, 0x08, 0x00, 0x1d, 0x45, 0x10, + 0x2f, 0x20, 0x08, 0x04, 0x2c, 0x74, 0x4c, 0x72, 0x62, 0x09, 0x2f, 0x0f, + 0x10, 0x40, 0x20, 0x95, 0x4b, 0xf0, 0x00, 0x9e, 0xa1, 0x08, 0xd2, 0x09, + 0x0e, 0x9d, 0xdf, 0x08, 0xb3, 0x07, 0x07, 0xd9, 0x11, 0x02, 0x20, 0x00, + 0x00, 0x1d, 0x45, 0x10, 0x30, 0x9d, 0x3e, 0x0f, 0x2f, 0x0f, 0x0c, 0x71, + 0x10, 0xb5, 0xec, 0xb5, 0x80, 0x9e, 0x91, 0x0c, 0x92, 0x16, 0x5d, 0x02, + 0x20, 0x00, 0x00, 0x1d, 0x45, 0x10, 0x05, 0x9e, 0x93, 0x08, 0xf2, 0x09, + 0x0c, 0x70, 0x2c, 0x76, 0x4c, 0x71, 0x00, 0x1d, 0x85, 0x11, 0x1a, 0x09, + 0x2f, 0x0f, 0x02, 0x1d, 0x45, 0x11, 0xbe, 0xf0, 0x05, 0x9e, 0xa1, 0x08, + 0x72, 0x0b, 0x2c, 0x76, 0x20, 0xb5, 0xe1, 0xb5, 0x75, 0x02, 0x00, 0x00, + 0x05, 0x9e, 0xa7, 0xe0, 0x76, 0x02, 0x2b, 0x00, 0x0c, 0x70, 0x2c, 0x76, + 0x4c, 0x71, 0x00, 0x1d, 0x85, 0x11, 0xee, 0x08, 0x2f, 0x0f, 0x02, 0x1d, + 0x45, 0x10, 0xab, 0xf0, 0x05, 0x9e, 0xf3, 0x08, 0x72, 0x00, 0x2c, 0x76, + 0x20, 0xb5, 0x02, 0x1d, 0x85, 0x10, 0xd8, 0xf0, 0x05, 0x9e, 0x73, 0x08, + 0xf2, 0x09, 0x2c, 0x76, 0x20, 0xb5, 0x02, 0x1d, 0x05, 0x11, 0x4c, 0x71, + 0xc2, 0x08, 0x2f, 0x0f, 0x02, 0x40, 0x3b, 0x02, 0x20, 0x00, 0xed, 0xb5, + 0x05, 0x9e, 0x7d, 0x08, 0x72, 0x0b, 0x2c, 0x76, 0x20, 0xb5, 0x02, 0x1d, + 0x45, 0x11, 0xbf, 0xf0, 0x64, 0x9e, 0x7b, 0x0b, 0xf2, 0x09, 0x21, 0x95, + 0x34, 0x75, 0xe3, 0xf4, 0x00, 0x1d, 0x45, 0x11, 0xe0, 0xf0, 0x24, 0x9e, + 0x91, 0x09, 0x52, 0x08, 0x00, 0x1d, 0x45, 0x11, 0x7d, 0xf0, 0x02, 0x9e, + 0xa0, 0xe0, 0x02, 0x02, 0x2a, 0x00, 0x6c, 0x70, 0x0c, 0x70, 0x2c, 0x73, + 0x4c, 0x72, 0x60, 0xb5, 0xe3, 0xf0, 0x20, 0xb5, 0xef, 0xb5, 0xa3, 0xf0, + 0x02, 0x9d, 0x9d, 0x08, 0xf2, 0x00, 0x2c, 0x72, 0x20, 0xb5, 0x30, 0x40, + 0xea, 0xf0, 0x50, 0x78, 0x7d, 0x08, 0xb4, 0x03, 0x70, 0x78, 0x79, 0x08, + 0x95, 0x00, 0x0d, 0x9d, 0xe3, 0xe0, 0x70, 0x00, 0x29, 0x00, 0x4a, 0x20, + 0x80, 0x23, 0x8e, 0xe0, 0xdc, 0x06, 0xe9, 0xff, 0x00, 0x1d, 0x45, 0x11, + 0x10, 0x40, 0x6a, 0xf1, 0x04, 0x9d, 0x77, 0x08, 0x52, 0x01, 0x00, 0x1d, + 0x85, 0x10, 0x0e, 0x74, 0x7a, 0xf0, 0x02, 0x16, 0x48, 0x11, 0x78, 0x21, + 0x8b, 0x00, 0x7f, 0x20, 0x02, 0x18, 0x0b, 0x22, 0xc0, 0x82, 0x34, 0xf4, + 0x42, 0x9d, 0x65, 0x0a, 0xd3, 0x00, 0x45, 0x9d, 0x9d, 0x0a, 0xd2, 0x00, + 0xa0, 0xb9, 0x34, 0x72, 0x99, 0xf4, 0x00, 0x1d, 0xc5, 0x10, 0x98, 0xf0, + 0x00, 0x9e, 0x38, 0x60, 0x4f, 0x08, 0xf3, 0x00, 0x0c, 0x70, 0x2c, 0x75, + 0x4c, 0x72, 0xe0, 0xb5, 0x2b, 0xf0, 0x05, 0x9d, 0x67, 0x08, 0xf2, 0x00, + 0x70, 0x78, 0x00, 0x1d, 0xc5, 0x10, 0x20, 0xf1, 0x03, 0x9d, 0x8a, 0xe0, + 0x9a, 0xf6, 0x4a, 0x20, 0x40, 0x22, 0x00, 0x1d, 0x85, 0x10, 0x36, 0xf1, + 0x05, 0x9d, 0x71, 0x08, 0xf2, 0x00, 0x2c, 0x73, 0x20, 0xb5, 0x0e, 0x72, + 0x9c, 0xf0, 0x02, 0x9e, 0x75, 0x08, 0xf2, 0x09, 0x70, 0x78, 0x00, 0x1d, + 0xc5, 0x10, 0x40, 0xf0, 0x00, 0x1d, 0x85, 0x10, 0x6e, 0xf0, 0x0f, 0x9d, + 0x8c, 0x20, 0x42, 0x8d, 0x26, 0x01, 0x2b, 0x00, 0x0c, 0x70, 0x2c, 0x75, + 0x4c, 0x72, 0x00, 0x1d, 0x45, 0x10, 0x9e, 0x0f, 0xcf, 0x0e, 0xee, 0xb5, + 0x00, 0x95, 0x14, 0x71, 0x87, 0xf2, 0x0c, 0x70, 0x2c, 0x71, 0x4c, 0x72, + 0x81, 0xf0, 0x6b, 0x08, 0xd4, 0x02, 0x00, 0x1d, 0x05, 0x11, 0x0d, 0x9d, + 0xed, 0xb5, 0x49, 0x20, 0x50, 0x02, 0x38, 0xf0, 0x46, 0x9d, 0x71, 0x0a, + 0xf2, 0x00, 0x9b, 0x63, 0x97, 0x09, 0x11, 0x01, 0x00, 0x1d, 0x05, 0x11, + 0xed, 0xb5, 0x48, 0xf0, 0x70, 0x78, 0xbd, 0x08, 0x34, 0x03, 0x2c, 0x74, + 0x20, 0xb5, 0x0d, 0x9d, 0xed, 0xb5, 0x49, 0x20, 0x50, 0x02, 0x62, 0xf0, + 0xcb, 0x08, 0xd4, 0x02, 0x0e, 0x9d, 0xc7, 0x08, 0xb3, 0x02, 0x4a, 0x20, + 0x40, 0x22, 0x00, 0x1d, 0x05, 0x11, 0xed, 0xb5, 0x2c, 0x75, 0x4c, 0x72, + 0x36, 0x0f, 0xef, 0x0e, 0x02, 0x40, 0xee, 0xb5, 0x20, 0x95, 0x87, 0xe1, + 0xca, 0x21, 0x61, 0x00, 0x4c, 0x71, 0x02, 0x40, 0x4d, 0xf0, 0x04, 0x9e, + 0x13, 0x08, 0xd3, 0x09, 0x41, 0x9e, 0x02, 0x9e, 0x23, 0x9e, 0x58, 0x60, + 0x38, 0x60, 0x8f, 0x08, 0x53, 0x06, 0xe0, 0xb5, 0x65, 0x05, 0xcf, 0xff, + 0x42, 0x9e, 0x06, 0x16, 0x4b, 0x11, 0x01, 0x73, 0xc5, 0x9e, 0x7a, 0x62, + 0x00, 0x23, 0x8b, 0x10, 0x61, 0x76, 0x1f, 0x0e, 0xd2, 0x14, 0x0d, 0xe9, + 0x6b, 0x08, 0x32, 0x01, 0x0c, 0x70, 0xea, 0x0e, 0xef, 0x0e, 0x4c, 0x72, + 0x01, 0x95, 0x91, 0x08, 0x51, 0x01, 0xee, 0xb5, 0x47, 0xf0, 0xe0, 0xb5, + 0x0c, 0x70, 0x2c, 0x76, 0x4c, 0x72, 0xd2, 0x0e, 0xef, 0x0e, 0xf0, 0xb5, + 0x21, 0x95, 0x00, 0x95, 0x43, 0x08, 0x40, 0x00, 0x09, 0x09, 0x51, 0x01, + 0xee, 0xb5, 0x05, 0xf0, 0x07, 0x09, 0x11, 0x01, 0xed, 0xb5, 0x0c, 0x70, + 0x4c, 0x72, 0xb2, 0x0e, 0xcf, 0x0e, 0x20, 0x95, 0x0c, 0x70, 0x10, 0xf0, + 0x50, 0x78, 0x0d, 0x08, 0x15, 0x03, 0x08, 0x9d, 0x1b, 0x08, 0xd2, 0x02, + 0x2c, 0x75, 0x20, 0xb5, 0x0e, 0x9d, 0xee, 0xb5, 0x49, 0x20, 0x50, 0x03, + 0x2f, 0x20, 0x08, 0x04, 0x4c, 0x71, 0x8a, 0x0e, 0xcf, 0x0e, 0x26, 0x40, + 0x2d, 0x9d, 0x41, 0x68, 0x0c, 0x71, 0x7a, 0x0c, 0x2f, 0x0f, 0x00, 0x19, + 0x80, 0x20, 0x0d, 0xb5, 0x2e, 0x9d, 0x6e, 0x0c, 0x2f, 0x0f, 0x0c, 0x71, + 0x0e, 0xb5, 0x2f, 0x9d, 0x62, 0x0c, 0x2f, 0x0f, 0x0c, 0x71, 0x0f, 0xb5, + 0x2c, 0x9d, 0x5a, 0x0c, 0x2f, 0x0f, 0x0c, 0x71, 0x0c, 0xb5, 0xcc, 0xc6, + 0x07, 0x08, 0x11, 0x01, 0xed, 0xb5, 0xe1, 0xb5, 0xba, 0xf1, 0xe0, 0x78, + 0xea, 0xc2, 0x45, 0x90, 0x28, 0x47, 0x48, 0x43, 0x8c, 0x22, 0x04, 0x80, + 0x85, 0xf7, 0x24, 0x90, 0x8c, 0x21, 0xc3, 0x8f, 0x13, 0xf7, 0x40, 0x80, + 0x6c, 0x70, 0x1b, 0x0a, 0xf2, 0x02, 0x3f, 0xdd, 0x24, 0x90, 0x35, 0xdd, + 0xe3, 0xe1, 0x87, 0xf7, 0x06, 0x90, 0xf9, 0xe0, 0xa0, 0x00, 0x26, 0x00, + 0x23, 0xdd, 0x2c, 0x70, 0x4c, 0x70, 0xcd, 0x70, 0xac, 0xf0, 0x63, 0x90, + 0x8c, 0x23, 0x50, 0x85, 0x4a, 0x00, 0x0d, 0x00, 0x46, 0x90, 0xe4, 0xe2, + 0xa0, 0x00, 0x2d, 0x00, 0x08, 0xde, 0x25, 0xdd, 0x8c, 0x21, 0xc2, 0x85, + 0x99, 0xf7, 0x80, 0x80, 0x8c, 0x24, 0x02, 0x9e, 0xfa, 0x00, 0x29, 0x00, + 0xc8, 0xe2, 0xa2, 0x90, 0x8c, 0x25, 0x08, 0x9b, 0x34, 0x01, 0x2d, 0x00, + 0xb1, 0x40, 0xe2, 0xe3, 0xb2, 0x01, 0x2d, 0x00, 0x8c, 0x20, 0x81, 0xa8, + 0x56, 0x02, 0x2d, 0x00, 0xb9, 0xe3, 0x82, 0x02, 0x26, 0x00, 0x0d, 0xdd, + 0x2d, 0xde, 0x05, 0x03, 0x00, 0x00, 0x80, 0x80, 0x8c, 0x24, 0x97, 0x9e, + 0x7c, 0x00, 0x29, 0x00, 0xa2, 0x90, 0x2c, 0x71, 0x8b, 0x0d, 0x85, 0x1f, + 0x00, 0x00, 0x24, 0x10, 0x06, 0x90, 0xcd, 0x73, 0xc2, 0xe0, 0xd2, 0x00, + 0x2d, 0x00, 0x37, 0xda, 0xd3, 0x73, 0x00, 0x00, 0x7c, 0x0d, 0x2e, 0x01, + 0x2d, 0x00, 0x36, 0xda, 0x0b, 0xda, 0x8c, 0x25, 0x19, 0x94, 0x98, 0x01, + 0x26, 0x00, 0xcd, 0x72, 0x0c, 0xdb, 0x5d, 0x02, 0x20, 0x00, 0xcd, 0x75, + 0x51, 0x0a, 0xb3, 0x09, 0x2c, 0xde, 0x8c, 0x20, 0x82, 0x8c, 0x7c, 0x00, + 0x2d, 0x00, 0x28, 0xdd, 0x8f, 0xe2, 0x5c, 0x02, 0x2b, 0x00, 0x22, 0xde, + 0x17, 0xdd, 0x37, 0xf0, 0x20, 0x80, 0xcd, 0x76, 0x37, 0xdd, 0x8d, 0xe1, + 0x8c, 0xf6, 0x8c, 0x21, 0x02, 0x8b, 0x8a, 0x00, 0x29, 0x00, 0x39, 0xde, + 0x02, 0x90, 0xad, 0x72, 0x8c, 0x20, 0xc3, 0x8f, 0x02, 0xf7, 0x26, 0xde, + 0x81, 0x02, 0x00, 0x00, 0x3d, 0x0d, 0x85, 0x1f, 0x00, 0x00, 0xbd, 0x13, + 0x6c, 0x72, 0x35, 0xda, 0xad, 0x70, 0x40, 0xf0, 0xad, 0x75, 0x2a, 0xde, + 0x19, 0xf0, 0x3b, 0xda, 0x71, 0x0d, 0x85, 0x1f, 0x00, 0x00, 0x5d, 0x28, + 0xb9, 0x0d, 0x85, 0x1f, 0x00, 0x00, 0xec, 0x13, 0x8c, 0x23, 0x15, 0x9a, + 0x4c, 0x01, 0x26, 0x00, 0xcd, 0x73, 0x34, 0xdb, 0x07, 0xda, 0xad, 0x70, + 0x2c, 0x70, 0x26, 0xf0, 0x3c, 0xd9, 0x6c, 0x73, 0xad, 0x70, 0x74, 0xf1, + 0x13, 0xdd, 0x3b, 0x02, 0x00, 0x00, 0x98, 0x00, 0x2d, 0x00, 0x0a, 0xde, + 0x6c, 0x75, 0xad, 0x72, 0xbd, 0x0b, 0x84, 0x1f, 0x00, 0x00, 0xfe, 0x09, + 0x22, 0x90, 0x2f, 0x20, 0xc2, 0x02, 0xb1, 0x08, 0x45, 0x00, 0x27, 0xdb, + 0x54, 0xf0, 0xad, 0x70, 0x6c, 0x71, 0x2c, 0x70, 0x0a, 0xf0, 0x8c, 0x23, + 0x89, 0x86, 0x8a, 0x00, 0x26, 0x00, 0x2f, 0xde, 0xad, 0x70, 0x6c, 0x70, + 0x2c, 0x70, 0x4c, 0x76, 0xff, 0x01, 0x00, 0x00, 0xad, 0x70, 0x6c, 0x71, + 0x2c, 0x72, 0x4f, 0xf1, 0x30, 0xde, 0xad, 0x72, 0x7b, 0x0b, 0x84, 0x1f, + 0x00, 0x00, 0x3c, 0x0c, 0x12, 0x0b, 0x2f, 0x05, 0x61, 0x40, 0xc3, 0x43, + 0x46, 0x40, 0x00, 0x80, 0x0e, 0x0b, 0xef, 0x04, 0x4c, 0x70, 0x40, 0x28, + 0x82, 0x21, 0x10, 0x41, 0x40, 0x40, 0xfa, 0x0a, 0x2f, 0x05, 0x30, 0x40, + 0x00, 0x42, 0x20, 0x43, 0x22, 0x40, 0x86, 0x0c, 0x6f, 0x05, 0x02, 0x41, + 0x46, 0x00, 0x2c, 0x00, 0x29, 0xdb, 0x0a, 0xde, 0x20, 0xf0, 0xad, 0x70, + 0x6c, 0x76, 0xf6, 0xf0, 0xad, 0x70, 0x3b, 0xdb, 0x4c, 0x72, 0x27, 0xf1, + 0x6c, 0x71, 0xb9, 0x0b, 0x85, 0x1f, 0x00, 0x00, 0x8e, 0x08, 0x1f, 0xde, + 0x8c, 0x24, 0x43, 0x9b, 0x24, 0x01, 0x2b, 0x00, 0x4c, 0x72, 0x16, 0xde, + 0xad, 0x71, 0x2c, 0x70, 0xc3, 0xf0, 0x02, 0x90, 0x8c, 0x20, 0xce, 0x80, + 0xb2, 0x00, 0x26, 0x00, 0x2d, 0xda, 0x0e, 0xde, 0x57, 0xf0, 0x6c, 0x70, + 0x2c, 0x70, 0x4c, 0x72, 0xb7, 0xf0, 0x8c, 0x20, 0x03, 0xa7, 0xae, 0x00, + 0x2d, 0x00, 0x0d, 0xde, 0x9c, 0xe4, 0x5c, 0x01, 0x2b, 0x00, 0x27, 0xdd, + 0x10, 0xdd, 0xc7, 0xe2, 0x89, 0xf7, 0x8c, 0x21, 0x07, 0x83, 0x4a, 0x01, + 0x2d, 0x00, 0x11, 0xde, 0x14, 0xde, 0x8c, 0x20, 0x02, 0xa0, 0x40, 0x01, + 0x05, 0x00, 0x1f, 0xde, 0x0a, 0xdd, 0x9c, 0xf0, 0x8d, 0x08, 0x75, 0x0d, + 0x8c, 0x24, 0x43, 0x92, 0xa8, 0x00, 0x29, 0x00, 0x2f, 0x20, 0xc2, 0x02, + 0x3c, 0x26, 0xc1, 0x72, 0x00, 0x00, 0xfd, 0x09, 0x3c, 0x20, 0x40, 0x03, + 0x0b, 0x79, 0x71, 0xf4, 0x2d, 0xde, 0xdf, 0x0d, 0x85, 0x1f, 0x00, 0x00, + 0x3c, 0x0c, 0xad, 0x71, 0x0b, 0xdb, 0x85, 0xf0, 0x06, 0x90, 0xcc, 0xe0, + 0x68, 0x00, 0x2d, 0x00, 0x35, 0xda, 0x9b, 0x0b, 0x85, 0x0f, 0x00, 0x00, + 0x50, 0x16, 0x8c, 0x24, 0x8b, 0x90, 0xc2, 0x00, 0x2a, 0x00, 0x0e, 0xda, + 0x2f, 0xdb, 0x95, 0xf0, 0x8c, 0x24, 0x44, 0x9e, 0x4c, 0x00, 0x29, 0x00, + 0x09, 0xde, 0x02, 0x90, 0x26, 0xda, 0x8c, 0x20, 0xcd, 0x8f, 0x89, 0xf7, + 0x2a, 0xde, 0xad, 0x71, 0x2c, 0x70, 0x08, 0xda, 0x67, 0xf0, 0x2a, 0xde, + 0x11, 0xda, 0xad, 0x70, 0x6c, 0x70, 0x2c, 0x70, 0x61, 0xf0, 0xad, 0x74, + 0x06, 0xf0, 0x8c, 0x23, 0x02, 0x8b, 0x58, 0x00, 0x26, 0x00, 0xad, 0x72, + 0x34, 0xde, 0x56, 0xf0, 0x8c, 0x24, 0x43, 0x9d, 0x5c, 0x00, 0x2a, 0x00, + 0x31, 0xde, 0xad, 0x71, 0x6c, 0x72, 0x50, 0xf1, 0x08, 0xdb, 0x6d, 0xf0, + 0xad, 0x71, 0x6c, 0x76, 0x2c, 0x70, 0x09, 0xda, 0x49, 0xf0, 0x10, 0xde, + 0x1c, 0xdd, 0x44, 0xf0, 0x8c, 0x24, 0xc9, 0x9f, 0x5c, 0x00, 0x09, 0x00, + 0x8f, 0x0d, 0x85, 0x1f, 0x00, 0x00, 0xf8, 0x09, 0xd3, 0x73, 0x00, 0x00, + 0x32, 0x09, 0xa4, 0x00, 0x26, 0x00, 0x1d, 0xdb, 0xad, 0x72, 0x2c, 0x70, + 0x35, 0xf0, 0x0c, 0xdb, 0x33, 0xda, 0x51, 0xf0, 0xc3, 0xe2, 0x40, 0x00, + 0x26, 0x00, 0x07, 0xde, 0x07, 0xdd, 0x6c, 0x70, 0x2c, 0x70, 0x4c, 0x70, + 0x13, 0xde, 0x29, 0xf0, 0x8c, 0x24, 0x85, 0x9f, 0x5b, 0xf6, 0x07, 0xdb, + 0x2e, 0xda, 0xad, 0x71, 0x2c, 0x70, 0xcd, 0x73, 0x1f, 0xf0, 0x0a, 0xde, + 0x29, 0xdb, 0xad, 0x71, 0x19, 0xf0, 0x49, 0x0d, 0xe5, 0x10, 0x15, 0xdb, + 0x27, 0xda, 0x35, 0xf0, 0x12, 0xdb, 0x1e, 0xda, 0xad, 0x72, 0x32, 0xf0, + 0x8c, 0x21, 0x5f, 0x8c, 0x5c, 0xf7, 0xad, 0x75, 0x27, 0xde, 0x4c, 0x71, + 0xa8, 0xf1, 0x8c, 0x24, 0x49, 0x9a, 0x59, 0xf6, 0x1f, 0xdb, 0x0f, 0xda, + 0x23, 0xf0, 0x0d, 0xdd, 0x6c, 0x70, 0x2c, 0x70, 0x4c, 0x70, 0xa0, 0xb7, + 0x61, 0xb7, 0x22, 0xb7, 0x43, 0xb7, 0xc4, 0xb7, 0xca, 0xc6, 0xa9, 0x05, + 0xef, 0xff, 0x2d, 0xdb, 0x13, 0xda, 0x28, 0xdb, 0xad, 0x70, 0x15, 0xf0, + 0x1e, 0xda, 0x08, 0xdd, 0x8e, 0xf1, 0x1b, 0x0b, 0x85, 0x0f, 0x00, 0x00, + 0xbd, 0x0e, 0x14, 0xdb, 0x26, 0xda, 0x09, 0xf0, 0xcd, 0x71, 0x33, 0xda, + 0x83, 0x05, 0xef, 0xff, 0x6c, 0x75, 0x13, 0xda, 0x28, 0xdb, 0xad, 0x70, + 0x2c, 0x70, 0x6b, 0x04, 0xcf, 0xff, 0xe0, 0x78, 0xe6, 0xc3, 0xcb, 0x46, + 0x80, 0x00, 0x38, 0x3b, 0x01, 0x1e, 0x03, 0x10, 0x80, 0x8e, 0x9d, 0x0c, + 0x30, 0x10, 0xa4, 0xc1, 0x95, 0x0a, 0x10, 0x00, 0x91, 0x0b, 0x15, 0x01, + 0x40, 0x80, 0xc3, 0x43, 0xcc, 0x3d, 0xcd, 0xcc, 0xcb, 0x45, 0x80, 0x00, + 0xe8, 0x3a, 0x00, 0x32, 0xc2, 0x00, 0x40, 0xa5, 0x41, 0x80, 0x00, 0x32, + 0xc2, 0x00, 0x41, 0xa5, 0x02, 0x80, 0xc3, 0x42, 0x79, 0x3d, 0x23, 0xdb, + 0x00, 0x30, 0xc0, 0x00, 0x02, 0xa5, 0x00, 0x81, 0x00, 0x30, 0x80, 0x00, + 0xbf, 0xb8, 0x40, 0xc0, 0x01, 0x81, 0x00, 0x30, 0x80, 0x00, 0xbf, 0xb8, + 0x41, 0xc0, 0x62, 0x81, 0x80, 0xc0, 0x2c, 0x70, 0x00, 0x33, 0x83, 0x00, + 0x4c, 0x73, 0xbf, 0xbb, 0xda, 0x0c, 0x6f, 0x0a, 0x42, 0xc3, 0x42, 0x08, + 0x20, 0x00, 0x40, 0x24, 0xc1, 0x33, 0x0f, 0x14, 0x82, 0x30, 0xbc, 0x4d, + 0xaa, 0x09, 0x20, 0x00, 0xa1, 0x40, 0xc3, 0x43, 0x80, 0x00, 0x65, 0x12, + 0x24, 0x85, 0x45, 0x85, 0xe0, 0x8b, 0x86, 0x85, 0x01, 0xae, 0x1c, 0x4d, + 0x2c, 0xa5, 0x4d, 0xa5, 0xe2, 0xae, 0x41, 0x8b, 0x20, 0x80, 0x8e, 0xa5, + 0x4c, 0xab, 0xc6, 0x08, 0xef, 0x0a, 0x2b, 0xa5, 0x0c, 0x70, 0xc6, 0xc7, + 0xe8, 0xc2, 0xcb, 0x45, 0x80, 0x00, 0xe4, 0x3a, 0xc0, 0x85, 0x30, 0x40, + 0x08, 0x47, 0x80, 0x26, 0x0c, 0x1b, 0x42, 0x86, 0x00, 0x41, 0x12, 0x0e, + 0xef, 0x04, 0x40, 0x40, 0x54, 0xf6, 0x00, 0x86, 0x06, 0x0e, 0xef, 0x04, + 0xe1, 0x41, 0x53, 0xf6, 0x01, 0x86, 0xfe, 0x0d, 0xef, 0x04, 0xe1, 0x41, + 0x40, 0x00, 0x0a, 0x00, 0x00, 0x18, 0x03, 0x21, 0x00, 0x85, 0x80, 0x20, + 0x0d, 0x02, 0x00, 0x90, 0x14, 0xa5, 0x0f, 0xf0, 0x00, 0x18, 0x43, 0x20, + 0x03, 0xf0, 0x00, 0x18, 0x83, 0x20, 0x13, 0x85, 0x54, 0x85, 0x29, 0x68, + 0x09, 0x6a, 0x33, 0xa5, 0x0d, 0x08, 0x32, 0x00, 0x14, 0xa5, 0x00, 0x18, + 0x03, 0x21, 0x06, 0xf0, 0x09, 0x09, 0x12, 0x00, 0x00, 0x18, 0xc3, 0x20, + 0x0c, 0x70, 0xc8, 0xc6, 0x00, 0x18, 0xc3, 0x20, 0x00, 0x85, 0x80, 0x20, + 0x8d, 0x01, 0x20, 0x90, 0x14, 0x85, 0x33, 0xa5, 0x04, 0x77, 0xec, 0xf1, + 0xc3, 0x41, 0x80, 0x00, 0x65, 0x12, 0x20, 0x89, 0x20, 0xa8, 0xe0, 0x7f, + 0x0c, 0x70, 0xe0, 0x78, 0xc3, 0x41, 0x80, 0x00, 0x70, 0x12, 0x20, 0x89, + 0x20, 0xa8, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, 0xc3, 0x41, 0x80, 0x00, + 0xa8, 0x3e, 0x40, 0x81, 0x00, 0x43, 0x40, 0xa0, 0x01, 0x81, 0x01, 0xa3, + 0x22, 0x81, 0x0c, 0x70, 0xe0, 0x7f, 0x22, 0xa3, 0xe8, 0xc3, 0xa6, 0xc1, + 0xd3, 0x40, 0x80, 0x00, 0x3c, 0x3b, 0x2c, 0x70, 0xc3, 0x43, 0x80, 0x00, + 0xec, 0x3e, 0xcb, 0x46, 0x80, 0x00, 0x98, 0x3e, 0x7f, 0xdc, 0x00, 0x18, + 0x00, 0x20, 0x20, 0xb3, 0x2c, 0xab, 0x22, 0xa3, 0x22, 0xb3, 0x23, 0xb3, + 0x04, 0x1e, 0x52, 0x10, 0xcb, 0x47, 0x80, 0x00, 0x4c, 0x12, 0x17, 0xbc, + 0x18, 0xda, 0xc1, 0x40, 0x8a, 0xa6, 0x28, 0x45, 0x21, 0xa7, 0xee, 0x0a, + 0xef, 0x05, 0x8b, 0xa6, 0x0c, 0x71, 0xc3, 0x41, 0x00, 0x00, 0x30, 0x75, + 0xa4, 0xb7, 0xa5, 0xb7, 0x0e, 0x1f, 0x05, 0x13, 0x0c, 0xaf, 0x10, 0xaf, + 0x25, 0xa7, 0x4a, 0x24, 0xc0, 0x70, 0x54, 0x26, 0x00, 0x18, 0xa8, 0x20, + 0x40, 0x01, 0x04, 0x18, 0x11, 0x00, 0x4a, 0x24, 0x80, 0x72, 0xc3, 0x40, + 0x80, 0x00, 0x70, 0x3e, 0xad, 0x70, 0xa8, 0x20, 0x40, 0x01, 0x04, 0x18, + 0x50, 0x03, 0x82, 0x0f, 0xaf, 0x0a, 0x38, 0x4e, 0x3f, 0xda, 0x18, 0xba, + 0x70, 0x86, 0x91, 0x86, 0xf2, 0x86, 0xad, 0xa6, 0xae, 0xa6, 0xaf, 0xa6, + 0x40, 0xc2, 0x41, 0xc2, 0x06, 0x42, 0xcb, 0x45, 0x34, 0x3f, 0xf4, 0xfd, + 0x40, 0x20, 0x00, 0x21, 0x80, 0xc1, 0x55, 0x22, 0xc2, 0x0e, 0x42, 0xc5, + 0x43, 0xc3, 0x44, 0xc4, 0x32, 0x0b, 0x20, 0x00, 0x45, 0xc7, 0x0c, 0x70, + 0xc8, 0xc7, 0xe0, 0x78, 0xe2, 0xc2, 0x80, 0x80, 0xc3, 0x43, 0x80, 0x00, + 0x9c, 0x3e, 0x80, 0xa3, 0x81, 0x80, 0x81, 0xa3, 0x02, 0x80, 0xcb, 0x44, + 0x80, 0x00, 0x4c, 0x12, 0xb0, 0x8c, 0x02, 0xa3, 0x00, 0x81, 0x06, 0xa3, + 0x01, 0x81, 0x07, 0xa3, 0x02, 0x81, 0x08, 0xa3, 0x03, 0x81, 0x58, 0xac, + 0x0b, 0x0d, 0x71, 0x10, 0x09, 0xa3, 0xbe, 0x09, 0x00, 0x00, 0xcb, 0x45, + 0x80, 0x00, 0xf4, 0x3e, 0x02, 0x8d, 0x04, 0xe8, 0x5a, 0x0e, 0xcf, 0x0d, + 0x01, 0x8d, 0x04, 0xe8, 0x42, 0x08, 0x00, 0x00, 0x20, 0x8d, 0xc3, 0x40, + 0x80, 0x00, 0x3c, 0x3b, 0x17, 0x09, 0xb0, 0x01, 0xad, 0x70, 0x19, 0x09, + 0x90, 0x00, 0x1d, 0x09, 0x10, 0x01, 0x8f, 0xe9, 0xda, 0x0a, 0x00, 0x01, + 0x0b, 0xf0, 0xb2, 0x08, 0x00, 0x01, 0x09, 0xf0, 0x6a, 0x09, 0x00, 0x01, + 0xad, 0x71, 0x05, 0xf0, 0x8a, 0x0a, 0x00, 0x01, 0xad, 0x71, 0xf6, 0x08, + 0x00, 0x00, 0xa1, 0x40, 0xc2, 0xc6, 0xe0, 0x78, 0xf1, 0xc0, 0x2c, 0x70, + 0xc3, 0x40, 0x80, 0x00, 0xf4, 0x3e, 0x20, 0xa8, 0x43, 0x88, 0xc3, 0x43, + 0x80, 0x00, 0x50, 0x12, 0x21, 0xa8, 0x20, 0xa3, 0x06, 0xea, 0xc3, 0x40, + 0x80, 0x00, 0x3c, 0x3b, 0x3a, 0x0b, 0x00, 0x01, 0xd1, 0xc0, 0xe0, 0x7f, + 0x0c, 0x70, 0xe0, 0x78, 0xf1, 0xc0, 0xa3, 0xc1, 0xc3, 0x40, 0x80, 0x00, + 0x3c, 0x3b, 0x04, 0x10, 0x01, 0x04, 0x54, 0x21, 0x82, 0x0b, 0x4a, 0x24, + 0xc0, 0x70, 0x80, 0xc1, 0xa8, 0x20, 0x80, 0x01, 0x1c, 0x12, 0x03, 0x04, + 0x04, 0x19, 0xd0, 0x00, 0x5a, 0x0e, 0x2f, 0x0e, 0x80, 0xc1, 0xc3, 0x40, + 0x80, 0x00, 0xf4, 0x3e, 0x20, 0x88, 0x0b, 0x09, 0x11, 0x01, 0x00, 0x18, + 0x83, 0x00, 0xa3, 0xc0, 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, + 0xe8, 0xc3, 0xa6, 0xc1, 0x40, 0x80, 0xcb, 0x45, 0x80, 0x00, 0xa8, 0x3e, + 0xcb, 0x47, 0x80, 0x00, 0x3c, 0x3b, 0x40, 0xa5, 0x61, 0x80, 0x40, 0x27, + 0x10, 0x11, 0x80, 0xc1, 0x61, 0xa5, 0x82, 0x80, 0x82, 0xa5, 0xc3, 0x80, + 0x02, 0x40, 0x40, 0xc2, 0x41, 0xc3, 0x42, 0xc4, 0x02, 0x0b, 0x2f, 0x0e, + 0xc7, 0xa5, 0x02, 0x40, 0x5a, 0x0b, 0x20, 0x00, 0xc1, 0x41, 0x00, 0x87, + 0x56, 0x20, 0x80, 0x0e, 0x4a, 0x24, 0xc0, 0x70, 0x83, 0xc1, 0xa8, 0x20, + 0xc0, 0x01, 0x1c, 0x10, 0x02, 0x04, 0x04, 0x19, 0x90, 0x00, 0x83, 0xc1, + 0xb2, 0x0d, 0x2f, 0x0e, 0x02, 0x40, 0xc3, 0x43, 0x80, 0x00, 0xf4, 0x3e, + 0x00, 0x8b, 0x88, 0xe8, 0x00, 0xc2, 0x01, 0xc1, 0x02, 0xc0, 0x4a, 0xa5, + 0x2b, 0xa5, 0x0c, 0xa5, 0x0c, 0x70, 0x04, 0x1b, 0x43, 0x00, 0xc8, 0xc7, + 0xe8, 0xc3, 0xa1, 0xc1, 0xc3, 0x40, 0x80, 0x00, 0x3c, 0x3b, 0x04, 0x10, + 0x0e, 0x04, 0x56, 0x0d, 0x2f, 0x0e, 0x80, 0xc1, 0xcb, 0x45, 0x80, 0x00, + 0x4c, 0x12, 0xfb, 0x8d, 0x97, 0xef, 0x00, 0xc0, 0x23, 0x86, 0x1e, 0x0b, + 0xef, 0x04, 0x10, 0x40, 0x43, 0xf6, 0x0c, 0x73, 0x10, 0xf0, 0x22, 0x86, + 0x0e, 0x0b, 0xef, 0x04, 0x02, 0x40, 0x44, 0xf6, 0x0c, 0x72, 0x0a, 0xf0, + 0x21, 0x86, 0x02, 0x0b, 0xef, 0x04, 0x02, 0x40, 0x43, 0xf6, 0x0c, 0x71, + 0x02, 0xf0, 0x0c, 0x70, 0x3c, 0x8d, 0x19, 0x09, 0x71, 0x00, 0x19, 0xad, + 0x2c, 0x8d, 0x1a, 0xad, 0x0a, 0xe9, 0x15, 0x08, 0xd1, 0x00, 0x1c, 0x1d, + 0x03, 0x10, 0x0b, 0xf0, 0x07, 0xef, 0x1a, 0x1d, 0x03, 0x10, 0x07, 0xf0, + 0x1c, 0x1d, 0x43, 0x10, 0x03, 0xf0, 0x1a, 0x1d, 0xc3, 0x10, 0x0c, 0x70, + 0xc8, 0xc7, 0xe0, 0x78, 0xe2, 0xc3, 0xa6, 0xc1, 0xcb, 0x45, 0x80, 0x00, + 0x40, 0x3b, 0x83, 0xc1, 0x1e, 0x0a, 0x2f, 0x0e, 0xa1, 0x40, 0x80, 0xc1, + 0x3a, 0x0a, 0x2f, 0x0e, 0xa1, 0x40, 0x01, 0xc0, 0x00, 0xc1, 0x02, 0xc2, + 0x00, 0x30, 0x03, 0x00, 0x00, 0x31, 0x40, 0x00, 0x00, 0x32, 0x81, 0x00, + 0x01, 0x30, 0xc0, 0x00, 0x01, 0x30, 0x4b, 0x80, 0x22, 0xf2, 0xc3, 0x40, + 0x80, 0x00, 0x9c, 0x3e, 0x04, 0xc1, 0x41, 0x80, 0x03, 0xc3, 0x80, 0x80, + 0x02, 0x32, 0x42, 0x00, 0x22, 0x80, 0x05, 0xc5, 0x02, 0x34, 0xc0, 0x10, + 0x02, 0x31, 0x41, 0x03, 0x00, 0x32, 0x82, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x31, 0x41, 0x00, 0x01, 0x30, 0x80, 0x00, 0x01, 0x30, 0x40, 0x00, + 0x00, 0x38, 0xc0, 0x02, 0x02, 0x36, 0x01, 0x70, 0x80, 0x3f, 0x00, 0x00, + 0xbf, 0xb9, 0x05, 0xf0, 0xc3, 0x41, 0xc8, 0x42, 0x00, 0x00, 0xc3, 0x42, + 0x80, 0x00, 0x6c, 0x12, 0x0c, 0x70, 0x20, 0xa2, 0xc2, 0xc7, 0xe0, 0x78, + 0xea, 0xc3, 0xa1, 0xc1, 0xcb, 0x46, 0x80, 0x00, 0x4c, 0x12, 0x10, 0x8e, + 0xad, 0x70, 0xd3, 0x41, 0x80, 0x00, 0x6c, 0x12, 0x11, 0xe8, 0x00, 0x11, + 0x0f, 0x20, 0xc3, 0x41, 0x96, 0x43, 0x00, 0x00, 0x16, 0x0a, 0xef, 0x04, + 0xe1, 0x40, 0x1b, 0x8e, 0xad, 0x70, 0xca, 0x25, 0x69, 0x10, 0x1b, 0xe8, + 0x3f, 0xd9, 0x18, 0xb9, 0x19, 0xf0, 0xcb, 0x47, 0x80, 0x00, 0x3c, 0x3b, + 0xc3, 0x41, 0x80, 0x00, 0x9c, 0x3e, 0x80, 0xc2, 0x04, 0x6f, 0x4e, 0x0d, + 0xef, 0x0d, 0x30, 0x40, 0x00, 0xc1, 0x30, 0x18, 0x40, 0x20, 0x00, 0x87, + 0xe2, 0x09, 0xef, 0x04, 0x00, 0x80, 0xca, 0x25, 0x6b, 0x10, 0xa1, 0x40, + 0x09, 0xf0, 0x7f, 0xd9, 0x17, 0xb9, 0xd2, 0x09, 0xef, 0x04, 0xe1, 0x40, + 0x0c, 0x70, 0xca, 0x20, 0x69, 0x00, 0x05, 0xed, 0x0e, 0x1e, 0x05, 0x10, + 0x0c, 0xf0, 0x27, 0x96, 0x24, 0x71, 0x27, 0xb6, 0x30, 0x79, 0x11, 0x09, + 0x54, 0x03, 0x0e, 0x1e, 0x05, 0x13, 0x04, 0x19, 0x03, 0x20, 0x04, 0xf0, + 0x04, 0x19, 0x43, 0x20, 0x1b, 0xae, 0xa1, 0x40, 0xca, 0xc7, 0xe0, 0x78, + 0xc3, 0x40, 0x80, 0x00, 0x74, 0x12, 0x40, 0x80, 0x0c, 0x70, 0xe0, 0x7f, + 0x40, 0xa1, 0xe0, 0x78, 0xe6, 0xc3, 0xa9, 0xc1, 0x40, 0x20, 0x0c, 0x03, + 0x48, 0x45, 0x08, 0x46, 0x20, 0x40, 0x4c, 0x76, 0x6c, 0x71, 0x4a, 0x0c, + 0x6f, 0x0a, 0x81, 0x41, 0x55, 0x26, 0x41, 0x1b, 0x4c, 0x76, 0x6c, 0x76, + 0x3a, 0x0c, 0x6f, 0x0a, 0xa1, 0x40, 0xcc, 0x4e, 0x4c, 0x76, 0x6c, 0x76, + 0x2e, 0x0c, 0x6f, 0x0a, 0xa1, 0x40, 0x8a, 0x20, 0x0c, 0x03, 0x2c, 0x73, + 0x4c, 0x71, 0x6c, 0x70, 0x7e, 0x0c, 0x6f, 0x0a, 0xd8, 0x60, 0x8a, 0x20, + 0x0c, 0x06, 0x2c, 0x73, 0x4c, 0x71, 0x6c, 0x70, 0x6e, 0x0c, 0x6f, 0x0a, + 0xd8, 0x60, 0x8a, 0x20, 0x07, 0x0b, 0x2c, 0x76, 0x4c, 0x76, 0x6c, 0x70, + 0x5e, 0x0c, 0x6f, 0x0a, 0xd8, 0x60, 0x8a, 0x20, 0x0b, 0x01, 0x1f, 0x66, + 0x2c, 0x73, 0x4c, 0x76, 0x6c, 0x70, 0x4e, 0x0c, 0x6f, 0x0a, 0xe1, 0x40, + 0x80, 0xc0, 0xa2, 0x0b, 0x6f, 0x0a, 0x2c, 0x73, 0x8c, 0x73, 0x80, 0xc0, + 0x4c, 0x70, 0x6c, 0x70, 0x80, 0x45, 0xcc, 0x76, 0xee, 0x0b, 0x6f, 0x0a, + 0xe1, 0x41, 0x6c, 0x73, 0x80, 0xc0, 0x4c, 0x70, 0x60, 0x44, 0x60, 0x45, + 0xcc, 0x76, 0xde, 0x0b, 0x6f, 0x0a, 0xe1, 0x41, 0x2c, 0x76, 0x4c, 0x71, + 0x6c, 0x76, 0x1e, 0x0d, 0x6f, 0x0a, 0xa1, 0x40, 0xc9, 0x1e, 0x18, 0x10, + 0x2c, 0x76, 0x4c, 0x71, 0x6c, 0x73, 0x0e, 0x0d, 0x6f, 0x0a, 0xa1, 0x40, + 0xca, 0x1e, 0x18, 0x10, 0xc3, 0x41, 0x80, 0x00, 0x74, 0x12, 0xc6, 0x08, + 0x20, 0x00, 0xc1, 0x40, 0x80, 0x26, 0x0c, 0x1b, 0x0c, 0x70, 0x00, 0x1e, + 0x43, 0x10, 0xc6, 0xc7, 0xe8, 0xc2, 0x08, 0x47, 0x8a, 0x24, 0x05, 0x11, + 0x6c, 0x76, 0xfc, 0x64, 0x30, 0x40, 0x40, 0x41, 0x55, 0x20, 0x40, 0x0b, + 0x60, 0x44, 0xda, 0x0a, 0x6f, 0x0a, 0x81, 0x42, 0x8a, 0x21, 0x07, 0x05, + 0x3d, 0x67, 0x1c, 0x4f, 0x4c, 0x71, 0x6c, 0x76, 0x5a, 0x0b, 0x6f, 0x0a, + 0xa1, 0x41, 0x8a, 0x26, 0x0b, 0x11, 0x8c, 0x73, 0xfe, 0x66, 0x4c, 0x70, + 0x6c, 0x70, 0x80, 0x45, 0xcc, 0x76, 0x02, 0x40, 0x5e, 0x0b, 0x6f, 0x0a, + 0xc1, 0x41, 0x8a, 0x20, 0x0c, 0x06, 0x1a, 0x67, 0x6c, 0x73, 0x8c, 0x76, + 0xac, 0x71, 0xc1, 0x40, 0x26, 0x0a, 0x6f, 0x0a, 0xa1, 0x41, 0xc3, 0x41, + 0x80, 0x00, 0x74, 0x12, 0x52, 0x08, 0x20, 0x00, 0xe1, 0x40, 0x0c, 0x70, + 0xc8, 0xc6, 0xe0, 0x78, 0x55, 0x20, 0x42, 0x0b, 0x24, 0xe0, 0x4a, 0x24, + 0xc0, 0x78, 0xa8, 0x20, 0xc0, 0x01, 0x04, 0x10, 0x01, 0x04, 0x04, 0x1a, + 0x50, 0x00, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, 0xe2, 0xc0, 0x00, 0x31, + 0x83, 0x0f, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x31, 0x8d, 0x0f, + 0x34, 0x3f, 0xf4, 0xfd, 0xcb, 0x44, 0x80, 0x00, 0x74, 0x12, 0x63, 0xa2, + 0x64, 0xa2, 0xa5, 0xa2, 0x0c, 0x70, 0x20, 0xa4, 0xc2, 0xc4, 0xe0, 0x78, + 0xe2, 0xc2, 0x63, 0x80, 0x44, 0x80, 0x05, 0x80, 0x00, 0x33, 0xc3, 0x00, + 0x28, 0x45, 0x00, 0x32, 0x8c, 0x00, 0x00, 0x30, 0x02, 0x00, 0x01, 0x33, + 0x00, 0x03, 0x76, 0x0c, 0xef, 0x04, 0x01, 0x30, 0x80, 0x00, 0x00, 0xa5, + 0x0c, 0x70, 0xc2, 0xc6, 0xfa, 0xc2, 0xfc, 0x1c, 0xc8, 0xb6, 0x82, 0x24, + 0x02, 0x32, 0xd3, 0x41, 0x80, 0x00, 0x9c, 0x35, 0x08, 0x11, 0x8c, 0x20, + 0x48, 0x45, 0x30, 0x46, 0x10, 0x43, 0x4c, 0x1c, 0xc0, 0x31, 0x44, 0x1c, + 0x80, 0x31, 0x50, 0x1c, 0x00, 0x31, 0x4d, 0xc3, 0x83, 0xec, 0x08, 0x19, + 0x42, 0x21, 0xd3, 0x40, 0x80, 0x00, 0x90, 0x1b, 0x00, 0x10, 0x81, 0x20, + 0x0c, 0x70, 0xcb, 0x46, 0x80, 0x00, 0x34, 0x36, 0x48, 0xc0, 0x47, 0xc0, + 0x46, 0xc0, 0xf3, 0x09, 0x30, 0x00, 0x45, 0xc0, 0x08, 0x13, 0x08, 0x20, + 0x04, 0x13, 0x0b, 0x20, 0x00, 0x13, 0x0c, 0x20, 0xc3, 0x40, 0x83, 0x3a, + 0x6f, 0x12, 0x55, 0x21, 0x4f, 0x29, 0x62, 0x86, 0x41, 0x86, 0x20, 0x86, + 0x00, 0x34, 0x05, 0x10, 0x40, 0x24, 0x09, 0x35, 0x00, 0x33, 0x06, 0x10, + 0x8c, 0x70, 0x00, 0x30, 0x07, 0x10, 0x00, 0x87, 0x26, 0x0a, 0xaf, 0x0a, + 0x00, 0x1c, 0x40, 0x32, 0x02, 0x86, 0x0e, 0x43, 0x1e, 0x41, 0xd3, 0x45, + 0x80, 0x3f, 0x00, 0x00, 0x06, 0xc2, 0x1c, 0x14, 0x0b, 0x30, 0x10, 0x10, + 0x0c, 0x20, 0x52, 0xc0, 0x02, 0x35, 0xc0, 0x20, 0x08, 0x10, 0x14, 0x20, + 0x00, 0x33, 0x48, 0x00, 0x50, 0x25, 0xd8, 0x25, 0x00, 0x30, 0x82, 0x00, + 0x04, 0x16, 0x1b, 0x10, 0x00, 0x33, 0x01, 0x03, 0x00, 0x16, 0x19, 0x10, + 0x00, 0x30, 0xc0, 0x02, 0x00, 0x17, 0x17, 0x10, 0x01, 0x31, 0x00, 0x00, + 0x01, 0x30, 0x92, 0x10, 0x00, 0x30, 0x01, 0x06, 0x0c, 0x18, 0x80, 0x24, + 0x10, 0x18, 0x00, 0x20, 0x00, 0x34, 0x40, 0x20, 0x1a, 0x0e, 0xaf, 0x04, + 0x40, 0xc7, 0x4a, 0x0e, 0x0f, 0x05, 0x6a, 0x0d, 0x8f, 0x04, 0x4f, 0x20, + 0xc1, 0x37, 0x00, 0x32, 0x41, 0x20, 0x08, 0x47, 0x00, 0x31, 0x01, 0x05, + 0xfe, 0x0d, 0xaf, 0x04, 0x20, 0x40, 0x2e, 0x0e, 0x0f, 0x05, 0x4e, 0x0d, + 0x8f, 0x04, 0x00, 0x37, 0xc2, 0x13, 0x10, 0x42, 0x00, 0x30, 0x01, 0x00, + 0x02, 0x35, 0x80, 0x20, 0x52, 0x0b, 0xef, 0x04, 0x02, 0x30, 0x40, 0x00, + 0x48, 0x14, 0x07, 0x30, 0x6c, 0x70, 0xe1, 0x41, 0x42, 0x42, 0x0a, 0x24, + 0xc0, 0x05, 0x0a, 0x25, 0x40, 0x06, 0x0a, 0x0f, 0x6f, 0x0a, 0x0a, 0x26, + 0xc0, 0x06, 0xcb, 0x47, 0x80, 0x00, 0x90, 0x36, 0x14, 0x8f, 0x14, 0x70, + 0xb8, 0x02, 0x01, 0x00, 0xc8, 0x14, 0x00, 0x30, 0x14, 0x70, 0x87, 0xf2, + 0x00, 0x85, 0xc3, 0x42, 0x79, 0x3d, 0x23, 0xdb, 0x00, 0x30, 0x99, 0x00, + 0x08, 0x1c, 0x40, 0x36, 0x01, 0x85, 0x00, 0x30, 0x95, 0x00, 0x10, 0x8f, + 0x0c, 0x1c, 0x40, 0x35, 0x22, 0x85, 0x00, 0x31, 0x94, 0x00, 0x13, 0x08, + 0xb0, 0x00, 0x10, 0x1c, 0x00, 0x35, 0x0c, 0x17, 0x17, 0x10, 0x14, 0x71, + 0x10, 0xf0, 0x2a, 0x09, 0xef, 0x04, 0xcc, 0x14, 0x00, 0x30, 0x00, 0x30, + 0x8d, 0x0f, 0x86, 0x35, 0xbd, 0x37, 0x22, 0x87, 0xa1, 0x40, 0x4a, 0x0e, + 0xaf, 0x04, 0x30, 0x47, 0xca, 0x27, 0x4b, 0x23, 0x40, 0x26, 0x18, 0x17, + 0x6a, 0x86, 0x49, 0x86, 0x28, 0x86, 0x07, 0x40, 0x54, 0x24, 0x12, 0x3f, + 0xcb, 0x45, 0x19, 0x3f, 0x9a, 0x99, 0x0a, 0x24, 0x40, 0x06, 0x0a, 0x25, + 0x40, 0x05, 0x0a, 0x26, 0x00, 0x05, 0x0a, 0x27, 0xc0, 0x05, 0x04, 0x1c, + 0x80, 0x34, 0x7e, 0x0d, 0xaf, 0x0a, 0x40, 0xc5, 0x9e, 0xc1, 0x10, 0xda, + 0xde, 0x0b, 0xaf, 0x05, 0x03, 0x40, 0x6a, 0x86, 0x49, 0x86, 0x28, 0x86, + 0x07, 0x40, 0x7e, 0x0b, 0xaf, 0x0a, 0x0a, 0x24, 0x00, 0x06, 0x55, 0x21, + 0x54, 0x29, 0x62, 0x86, 0x41, 0x86, 0x20, 0x86, 0x86, 0x40, 0x10, 0x14, + 0x06, 0x30, 0x0c, 0x14, 0x05, 0x30, 0x08, 0x14, 0x04, 0x30, 0x0a, 0x27, + 0xc0, 0x05, 0x04, 0x1c, 0x80, 0x34, 0x3e, 0x0d, 0xaf, 0x0a, 0x40, 0xc5, + 0x9e, 0xc1, 0x10, 0xda, 0x9e, 0x0b, 0xaf, 0x05, 0x82, 0x40, 0x00, 0x11, + 0x01, 0x21, 0x4a, 0x08, 0x6f, 0x0b, 0x82, 0xc0, 0x02, 0x19, 0x02, 0x20, + 0x02, 0xc1, 0x00, 0x97, 0xbf, 0xb9, 0x2f, 0x38, 0x03, 0x00, 0xa6, 0x0d, + 0xaf, 0x04, 0x10, 0x42, 0xad, 0x71, 0x10, 0xf6, 0x03, 0xc0, 0x42, 0x41, + 0x9e, 0x0d, 0xaf, 0x04, 0xbf, 0xb8, 0x0a, 0xf6, 0x04, 0xc0, 0x42, 0x41, + 0x92, 0x0d, 0xaf, 0x04, 0xbf, 0xb8, 0xad, 0x70, 0xca, 0x25, 0x69, 0x10, + 0xb5, 0xaf, 0xc4, 0x14, 0x0d, 0x30, 0x14, 0xc0, 0x51, 0x08, 0x51, 0x00, + 0x0d, 0xc0, 0xa6, 0xe8, 0x13, 0xc0, 0x24, 0xe8, 0x18, 0x10, 0x80, 0x20, + 0x20, 0xe8, 0x12, 0x1f, 0x43, 0x10, 0x66, 0x40, 0xcb, 0x44, 0x83, 0x3a, + 0x6f, 0x12, 0x82, 0xc2, 0x00, 0x30, 0x00, 0x03, 0x4e, 0xc0, 0x6e, 0x40, + 0x00, 0x30, 0x01, 0x03, 0x9a, 0xc0, 0x4f, 0xc1, 0x76, 0x43, 0x8e, 0xc1, + 0x00, 0x33, 0x0c, 0x03, 0xc3, 0x43, 0x80, 0x00, 0x98, 0x34, 0xe6, 0x0a, + 0xaf, 0x0b, 0x50, 0xc4, 0x55, 0x21, 0x40, 0x29, 0x9a, 0xc1, 0x0a, 0x0b, + 0xaf, 0x05, 0x10, 0xda, 0x55, 0x21, 0x50, 0x29, 0x06, 0x40, 0x40, 0x26, + 0x12, 0x13, 0x41, 0x86, 0x62, 0x86, 0x00, 0x1a, 0x00, 0x20, 0x20, 0x86, + 0x45, 0xa6, 0x66, 0xa6, 0xb5, 0x70, 0x24, 0xa6, 0x8c, 0xf2, 0x94, 0x8f, + 0x95, 0x72, 0x8a, 0xf4, 0xd6, 0x43, 0x04, 0x16, 0x0b, 0x20, 0xc6, 0x42, + 0xc3, 0x40, 0xcc, 0x3d, 0xcd, 0xcc, 0x3c, 0x8f, 0x00, 0x33, 0x14, 0x00, + 0x40, 0x26, 0x0d, 0x17, 0x00, 0x33, 0x13, 0x10, 0x9e, 0xc4, 0x29, 0x09, + 0xb1, 0x00, 0x00, 0x32, 0x15, 0x00, 0x6a, 0x86, 0x49, 0x86, 0x28, 0x86, + 0x00, 0x85, 0x8c, 0x70, 0x0a, 0x25, 0x40, 0x05, 0x0a, 0x26, 0xc0, 0x04, + 0x0a, 0x27, 0x00, 0x05, 0x96, 0x0f, 0x6f, 0x0a, 0x40, 0xc4, 0x17, 0xf0, + 0x40, 0x26, 0x16, 0x1b, 0x6e, 0x86, 0x4d, 0x86, 0x2c, 0x86, 0xc6, 0x40, + 0x8c, 0x70, 0x0a, 0x25, 0x40, 0x05, 0x0a, 0x26, 0xc0, 0x04, 0x0a, 0x27, + 0x00, 0x05, 0x76, 0x0f, 0x6f, 0x0a, 0x40, 0xc4, 0x10, 0xda, 0xc2, 0x40, + 0x76, 0x0a, 0xaf, 0x05, 0xa1, 0x41, 0x75, 0x8f, 0x0d, 0xc2, 0xc3, 0x41, + 0x80, 0x00, 0x98, 0x34, 0x9e, 0xc0, 0x5a, 0x0a, 0x6f, 0x0d, 0x30, 0x46, + 0x16, 0x8f, 0xcb, 0x45, 0x80, 0x00, 0x6d, 0x35, 0x69, 0x08, 0x71, 0x00, + 0x07, 0x6d, 0x2c, 0x70, 0x40, 0x24, 0x05, 0x39, 0x54, 0x24, 0x86, 0x3a, + 0xa2, 0x42, 0x62, 0x43, 0x9e, 0x0a, 0x6f, 0x0b, 0x0a, 0x24, 0x00, 0x05, + 0x0e, 0x0b, 0x6f, 0x0b, 0x15, 0xc0, 0x11, 0xc0, 0x41, 0x08, 0xd1, 0x00, + 0x20, 0x8d, 0x01, 0x8d, 0x05, 0x20, 0x7e, 0x80, 0x1a, 0xf4, 0x30, 0x14, + 0x05, 0x30, 0x2c, 0x14, 0x04, 0x30, 0x0a, 0xc3, 0x09, 0xc2, 0x15, 0xc1, + 0x96, 0xc0, 0x40, 0x24, 0x06, 0x32, 0x8a, 0x0b, 0xaf, 0x0b, 0x0a, 0x27, + 0x80, 0x05, 0x55, 0x21, 0x40, 0x29, 0x96, 0xc1, 0x02, 0x0a, 0xaf, 0x05, + 0x10, 0xda, 0x02, 0x8d, 0x86, 0xe8, 0x02, 0x1d, 0x43, 0x10, 0x04, 0xf0, + 0x13, 0x1f, 0x03, 0x10, 0x62, 0x86, 0x41, 0x86, 0x20, 0x86, 0x06, 0x40, + 0x92, 0x09, 0xaf, 0x0a, 0x0a, 0x24, 0x00, 0x04, 0x07, 0x6d, 0xb2, 0x0d, + 0x2f, 0x0b, 0x02, 0x41, 0x62, 0x86, 0x41, 0x86, 0x20, 0x86, 0x06, 0x40, + 0x7a, 0x09, 0xaf, 0x0a, 0x0a, 0x24, 0x00, 0x04, 0x66, 0x86, 0x45, 0x86, + 0x24, 0x86, 0x46, 0x40, 0x6a, 0x09, 0xaf, 0x0a, 0x0a, 0x24, 0x80, 0x04, + 0x0c, 0x70, 0x80, 0x24, 0x02, 0x32, 0x04, 0x14, 0x1b, 0x34, 0xda, 0xc6, + 0xf1, 0xc0, 0xa2, 0xc1, 0xcb, 0x44, 0x80, 0x00, 0xe4, 0x35, 0x58, 0x14, + 0x07, 0x10, 0x54, 0x14, 0x06, 0x10, 0x50, 0x14, 0x05, 0x10, 0x4c, 0x14, + 0x04, 0x10, 0x63, 0x84, 0x42, 0x84, 0x21, 0x84, 0x80, 0x84, 0x41, 0xc0, + 0x00, 0x1c, 0x41, 0x30, 0x3a, 0x0d, 0x6f, 0x0a, 0x81, 0x40, 0xa2, 0xc0, + 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, 0xec, 0xc2, 0xd3, 0x40, + 0x80, 0x00, 0xa0, 0x36, 0xcb, 0x47, 0x80, 0x00, 0x70, 0x36, 0xd3, 0x41, + 0x83, 0x3a, 0x6f, 0x12, 0xc3, 0x41, 0xcc, 0x3d, 0xcd, 0xcc, 0xc3, 0x40, + 0x79, 0x3d, 0x23, 0xdb, 0xcb, 0x45, 0x80, 0x00, 0xd0, 0x35, 0x04, 0x18, + 0x83, 0x20, 0x1c, 0x1f, 0x40, 0x14, 0x26, 0xa7, 0x05, 0xa7, 0x54, 0x25, + 0x00, 0x1c, 0xfe, 0x0d, 0x6f, 0x0a, 0x06, 0x18, 0x43, 0x20, 0xf6, 0x0d, + 0x6f, 0x0a, 0x55, 0x25, 0x00, 0x18, 0xee, 0x0d, 0x6f, 0x0a, 0x55, 0x25, + 0x00, 0x19, 0xe6, 0x0d, 0x6f, 0x0a, 0x54, 0x25, 0x00, 0x1e, 0x26, 0x0e, + 0x0f, 0x0b, 0xcd, 0x70, 0x64, 0xda, 0xc3, 0x41, 0x49, 0xc0, 0xf9, 0x0f, + 0xc3, 0x40, 0x56, 0x3d, 0x50, 0x77, 0x05, 0x18, 0x82, 0x23, 0x50, 0xb7, + 0x08, 0x18, 0x83, 0x22, 0xc1, 0xa7, 0x22, 0xa7, 0xc3, 0xa7, 0x04, 0xa7, + 0xd1, 0xb7, 0x09, 0x18, 0x43, 0x21, 0x0a, 0x18, 0x82, 0x23, 0x4a, 0x24, + 0x80, 0x72, 0x7f, 0xd9, 0xd3, 0x42, 0x80, 0x00, 0x98, 0x34, 0x17, 0xb9, + 0x56, 0x22, 0x80, 0x28, 0xa8, 0x20, 0x00, 0x01, 0x04, 0x18, 0x50, 0x00, + 0x42, 0x40, 0x22, 0x0e, 0x2f, 0x0d, 0xc0, 0xad, 0xcb, 0x45, 0x80, 0x00, + 0xf4, 0x25, 0x21, 0x85, 0x40, 0x85, 0x63, 0x85, 0x10, 0x15, 0x04, 0x10, + 0xc6, 0x0f, 0x2f, 0x0b, 0x0c, 0x70, 0xde, 0x0f, 0x2f, 0x0b, 0x10, 0x95, + 0x06, 0x85, 0x25, 0x85, 0xe6, 0x0f, 0x2f, 0x0b, 0x47, 0x85, 0xa2, 0x0c, + 0x2f, 0x0b, 0x55, 0x22, 0xc0, 0x2d, 0xcb, 0x45, 0x80, 0x00, 0xd0, 0x25, + 0xea, 0x0f, 0x2f, 0x0b, 0x00, 0x85, 0xfa, 0x0f, 0x2f, 0x0b, 0x01, 0x85, + 0x06, 0x08, 0x6f, 0x0b, 0x02, 0x85, 0x16, 0x08, 0x6f, 0x0b, 0x06, 0x95, + 0x07, 0x95, 0x22, 0x08, 0x6f, 0x0b, 0x2f, 0x38, 0x03, 0x00, 0xcb, 0x45, + 0x80, 0x00, 0xe0, 0x25, 0x26, 0x08, 0x6f, 0x0b, 0x00, 0x85, 0x36, 0x08, + 0x6f, 0x0b, 0x01, 0x85, 0x42, 0x08, 0x6f, 0x0b, 0x02, 0x85, 0x52, 0x08, + 0x6f, 0x0b, 0x08, 0x95, 0x09, 0x95, 0x5e, 0x08, 0x6f, 0x0b, 0x2f, 0x38, + 0x03, 0x00, 0x6a, 0x08, 0x6f, 0x0b, 0x03, 0x85, 0xc3, 0x40, 0xc0, 0x40, + 0x00, 0x00, 0x0b, 0x18, 0x82, 0x23, 0x00, 0xa7, 0x6a, 0x08, 0x6f, 0x0b, + 0x00, 0x18, 0x43, 0x20, 0x72, 0x08, 0x4f, 0x0b, 0xc3, 0x41, 0x80, 0x00, + 0x90, 0x1b, 0xc3, 0x42, 0x7a, 0x3f, 0x48, 0xe1, 0xc0, 0xa9, 0x41, 0xa1, + 0x08, 0x19, 0x40, 0x04, 0xc3, 0xa1, 0xc4, 0xa1, 0xc5, 0xa1, 0x0c, 0x70, + 0x18, 0x19, 0x43, 0x00, 0xcc, 0xc6, 0xe0, 0x78, 0xe8, 0xc2, 0xe1, 0xc4, + 0xfc, 0x1c, 0xc8, 0xb2, 0xfc, 0x1c, 0x88, 0xb2, 0xfc, 0x1c, 0x48, 0xb2, + 0xfc, 0x1c, 0x08, 0xb2, 0xfc, 0x1c, 0xc8, 0xb1, 0xfc, 0x1c, 0x88, 0xb1, + 0xfc, 0x1c, 0x48, 0xb1, 0xfc, 0x1c, 0x08, 0xb1, 0xe1, 0xc3, 0xe1, 0xc2, + 0xe1, 0xc1, 0xe1, 0xc0, 0x6a, 0x25, 0xc0, 0x10, 0xe1, 0xc5, 0x6a, 0x25, + 0x80, 0x10, 0xe1, 0xc5, 0xfc, 0x1c, 0x08, 0xbf, 0xaa, 0x20, 0xa1, 0x07, + 0x04, 0x71, 0xc2, 0x0e, 0xaf, 0x05, 0x10, 0x78, 0x2f, 0x27, 0x7f, 0x03, + 0x6f, 0x23, 0x3f, 0x00, 0xab, 0x26, 0xe1, 0x7c, 0x00, 0x00, 0x00, 0x08, + 0xae, 0x08, 0x80, 0x01, 0x2f, 0x26, 0x7f, 0x03, 0x00, 0x16, 0x80, 0x70, + 0x80, 0x00, 0x8c, 0x1e, 0x20, 0xe8, 0x00, 0x16, 0x0d, 0x70, 0x80, 0x00, + 0x84, 0x1e, 0x34, 0x68, 0xed, 0x70, 0x00, 0x25, 0x50, 0x10, 0x00, 0x95, + 0x25, 0x08, 0xbe, 0x00, 0x50, 0x20, 0x81, 0x00, 0x15, 0x08, 0xfe, 0x00, + 0x20, 0xb5, 0xed, 0x7e, 0x52, 0x09, 0xef, 0x05, 0xc1, 0x40, 0x5e, 0x0f, + 0xaf, 0x05, 0xc1, 0x40, 0x42, 0x85, 0x23, 0x85, 0x60, 0x7a, 0x0c, 0x70, + 0x10, 0xe5, 0xdb, 0x0d, 0x24, 0x94, 0xe5, 0x71, 0xc1, 0xc5, 0x0a, 0x24, + 0x40, 0x73, 0xc1, 0xc5, 0x6b, 0x25, 0x80, 0x10, 0xc1, 0xc5, 0x6b, 0x25, + 0xc0, 0x10, 0xc1, 0xc0, 0xc1, 0xc1, 0xc1, 0xc2, 0xc1, 0xc3, 0x04, 0x14, + 0x04, 0x34, 0x04, 0x14, 0x05, 0x34, 0x04, 0x14, 0x06, 0x34, 0x04, 0x14, + 0x07, 0x34, 0x04, 0x14, 0x08, 0x34, 0x04, 0x14, 0x09, 0x34, 0x04, 0x14, + 0x0a, 0x34, 0x04, 0x14, 0x0b, 0x34, 0xc1, 0xc4, 0xc8, 0xc2, 0x6f, 0x24, + 0x3f, 0x00, 0xe0, 0x78, 0xf1, 0xc0, 0xc3, 0x40, 0x80, 0x00, 0x28, 0x13, + 0xc3, 0x41, 0x80, 0x00, 0xac, 0x1b, 0x12, 0x49, 0xfa, 0x0e, 0x6f, 0x05, + 0x2c, 0x70, 0x12, 0x08, 0x00, 0x00, 0x12, 0x0a, 0x00, 0x01, 0xd1, 0xc0, + 0xe0, 0x7e, 0xe0, 0x78, 0xe8, 0xc3, 0xa1, 0xc1, 0xc3, 0x40, 0x7f, 0x00, + 0xf8, 0xe5, 0x33, 0xe8, 0xcb, 0x46, 0x7f, 0x00, 0xf0, 0xe3, 0xd2, 0x08, + 0xef, 0x03, 0xc1, 0x40, 0xac, 0xe8, 0x03, 0x8e, 0x0f, 0x08, 0xf4, 0x00, + 0xe4, 0x6e, 0xa0, 0x87, 0x40, 0x26, 0x0f, 0x12, 0x10, 0xf0, 0xcb, 0x45, + 0x60, 0x00, 0x7c, 0x23, 0x19, 0x00, 0x00, 0x00, 0x80, 0xc3, 0x02, 0x40, + 0xc1, 0x41, 0x60, 0x7d, 0x81, 0x42, 0x03, 0x6e, 0x6c, 0x20, 0x40, 0x00, + 0x1f, 0x67, 0x08, 0xe7, 0xc1, 0x87, 0xd5, 0x70, 0x1a, 0x00, 0x21, 0x00, + 0x80, 0x87, 0x40, 0x27, 0x10, 0x12, 0x30, 0xf6, 0xd3, 0x7a, 0x2c, 0x70, + 0x8a, 0x0e, 0x6f, 0x05, 0x81, 0x40, 0x0a, 0x47, 0xf2, 0xf1, 0x05, 0xec, + 0x04, 0x6f, 0xe4, 0x68, 0xee, 0xf1, 0x0c, 0x70, 0xc8, 0xc7, 0xe0, 0x78, + 0xe4, 0xc3, 0xa5, 0xc1, 0x00, 0x16, 0xc1, 0x70, 0x80, 0x00, 0xe4, 0x1f, + 0x3d, 0x09, 0x33, 0x00, 0x08, 0x45, 0x80, 0xc0, 0x80, 0xc6, 0xa4, 0x5a, + 0x40, 0x24, 0xc0, 0x34, 0xa3, 0x5a, 0x13, 0x14, 0x80, 0x30, 0x2f, 0x38, + 0x03, 0x00, 0x43, 0xc0, 0x4a, 0x20, 0x00, 0x00, 0x20, 0x86, 0x04, 0x71, + 0x00, 0x39, 0x81, 0x0f, 0x20, 0x3c, 0x12, 0xac, 0xf5, 0x08, 0xf2, 0x80, + 0x04, 0x1e, 0x50, 0x10, 0x48, 0x85, 0xfa, 0xd8, 0x80, 0xc1, 0xce, 0x5a, + 0x42, 0x0d, 0x6f, 0x08, 0xa1, 0x40, 0xc4, 0xc7, 0xc3, 0x40, 0x80, 0x00, + 0x5c, 0x3f, 0x00, 0x18, 0x80, 0x0f, 0x80, 0x00, 0xd8, 0x13, 0x24, 0x68, + 0x08, 0xe0, 0x00, 0x19, 0x80, 0x0f, 0x80, 0x00, 0x04, 0x15, 0x00, 0x18, + 0x80, 0x0f, 0x80, 0x00, 0x30, 0x16, 0xc3, 0x40, 0x80, 0x00, 0x8c, 0x21, + 0x00, 0x18, 0x80, 0x0f, 0x80, 0x00, 0x5c, 0x17, 0xc3, 0x40, 0x80, 0x00, + 0x90, 0x21, 0x00, 0x18, 0x80, 0x0f, 0x80, 0x00, 0x88, 0x18, 0xc3, 0x40, + 0x80, 0x00, 0x94, 0x21, 0x00, 0x18, 0x80, 0x0f, 0x80, 0x00, 0xb4, 0x19, + 0x00, 0x1e, 0x45, 0x70, 0x80, 0x00, 0x88, 0x21, 0xe1, 0x01, 0x0f, 0x0e, + 0xe2, 0xc2, 0x28, 0x45, 0xb5, 0x5a, 0xa1, 0x41, 0xd5, 0x5a, 0xc3, 0x40, + 0x80, 0x00, 0x10, 0x12, 0x41, 0x68, 0x60, 0x88, 0x20, 0x8a, 0x05, 0x21, + 0xfe, 0x80, 0x0a, 0xf2, 0x04, 0x8d, 0xf5, 0xd9, 0x6c, 0x71, 0xc3, 0x44, + 0x7f, 0x00, 0xe0, 0xb6, 0xa1, 0x45, 0x0b, 0xf0, 0x40, 0x20, 0xc2, 0x05, + 0x55, 0xd8, 0x00, 0xaa, 0x04, 0x8d, 0x8c, 0x70, 0xf4, 0xd9, 0x6c, 0x71, + 0x80, 0x45, 0x9a, 0x09, 0x8f, 0x05, 0xc2, 0xc6, 0xe6, 0xc3, 0xa1, 0xc1, + 0xcb, 0x46, 0x80, 0x00, 0xb4, 0x1f, 0x40, 0x86, 0x28, 0x45, 0x08, 0x47, + 0x7b, 0x0a, 0x60, 0x00, 0x03, 0x1c, 0x03, 0x30, 0x8c, 0x25, 0x02, 0x90, + 0x03, 0xf4, 0x12, 0xd9, 0x07, 0xf0, 0x8c, 0x25, 0xc3, 0x9f, 0x04, 0xf4, + 0x11, 0xd9, 0x03, 0xf0, 0x10, 0xd9, 0xe1, 0x40, 0x02, 0x0f, 0x6f, 0x07, + 0x03, 0x1c, 0x42, 0x30, 0x0c, 0x74, 0xa2, 0x5a, 0x8c, 0x25, 0x02, 0x90, + 0x03, 0xf4, 0xb7, 0xdc, 0x0c, 0xf0, 0x40, 0xd9, 0x40, 0x24, 0xc2, 0x30, + 0x6c, 0x71, 0xe1, 0x40, 0xbf, 0x5a, 0x03, 0x14, 0x80, 0x30, 0xc3, 0xb8, + 0x4f, 0x20, 0x4c, 0x01, 0x40, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, + 0xe1, 0x40, 0x03, 0x1c, 0x02, 0x33, 0xc1, 0x5a, 0x0c, 0x71, 0xa2, 0x5a, + 0x6c, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0xe1, 0x40, 0x03, 0x1c, + 0x03, 0x30, 0xc1, 0x5a, 0x8c, 0x25, 0x02, 0x90, 0x03, 0xf4, 0x0c, 0x71, + 0xa2, 0x5a, 0xa0, 0xa6, 0xc6, 0xc7, 0xe0, 0x78, 0xe6, 0xc3, 0xa1, 0xc1, + 0xcb, 0x45, 0x80, 0x00, 0x28, 0x12, 0x20, 0x85, 0x08, 0x47, 0xcd, 0x70, + 0x2e, 0xe9, 0x2c, 0x70, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0xe1, 0x40, + 0xbf, 0x5a, 0x22, 0xde, 0xa6, 0xe8, 0x03, 0x14, 0x80, 0x30, 0x21, 0xde, + 0x6c, 0x20, 0x80, 0x00, 0x8c, 0x20, 0x03, 0x84, 0x1e, 0xf4, 0xb6, 0xd9, + 0x6e, 0x0e, 0x6f, 0x07, 0xe1, 0x40, 0x0c, 0x73, 0xa2, 0x5a, 0xcd, 0x70, + 0x7f, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0xe1, 0x40, 0x03, 0x1c, + 0x82, 0x33, 0xc1, 0x5a, 0x0c, 0x71, 0xa2, 0x5a, 0xee, 0x0c, 0xaf, 0x07, + 0xe1, 0x40, 0x2c, 0x70, 0x16, 0x0f, 0xef, 0xff, 0xe1, 0x40, 0x2c, 0x70, + 0x56, 0x0d, 0xaf, 0x07, 0xe1, 0x40, 0xc0, 0xa5, 0xc1, 0x40, 0xc6, 0xc7, + 0xf6, 0xc3, 0xa1, 0xc1, 0xad, 0x70, 0xb6, 0xd9, 0x10, 0x43, 0x03, 0x1c, + 0x42, 0x33, 0x26, 0x0e, 0x6f, 0x07, 0x00, 0x1c, 0x44, 0x33, 0x08, 0x47, + 0x3c, 0xd8, 0xa2, 0x5a, 0x11, 0xd9, 0x16, 0x0e, 0x6f, 0x07, 0x62, 0x40, + 0x08, 0x46, 0x3c, 0xd8, 0xa2, 0x5a, 0x08, 0xd9, 0x86, 0x0b, 0xaf, 0x07, + 0x62, 0x40, 0x10, 0x40, 0x0c, 0xd9, 0xc2, 0x0a, 0xaf, 0x07, 0x62, 0x40, + 0xfe, 0x66, 0x00, 0x26, 0x12, 0x14, 0x2c, 0x71, 0x4e, 0x20, 0x15, 0x00, + 0x12, 0xdf, 0x4a, 0x21, 0xc0, 0x28, 0xd3, 0x40, 0x80, 0x00, 0x28, 0x12, + 0xcd, 0x70, 0xab, 0x21, 0x61, 0x0a, 0x40, 0x25, 0x4c, 0x13, 0x6d, 0xd9, + 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0x62, 0x40, 0x03, 0x1c, 0x02, 0x33, + 0xc1, 0x5a, 0x32, 0xd8, 0xa2, 0x5a, 0xef, 0x79, 0x80, 0xc2, 0x6c, 0x72, + 0x62, 0x40, 0x30, 0x47, 0xbf, 0x5a, 0x40, 0x25, 0x4c, 0x12, 0x00, 0x14, + 0x94, 0x30, 0x01, 0x14, 0xd6, 0x30, 0x6d, 0xd9, 0x40, 0x24, 0xc2, 0x30, + 0x6c, 0x71, 0x62, 0x40, 0x03, 0x1c, 0x02, 0x33, 0xc1, 0x5a, 0x32, 0xd8, + 0xa2, 0x5a, 0x80, 0xc2, 0x6c, 0x72, 0x62, 0x40, 0xe2, 0x41, 0xbf, 0x5a, + 0x20, 0xc2, 0x01, 0x14, 0xc3, 0x30, 0x60, 0xd8, 0x71, 0x0a, 0x61, 0x25, + 0x00, 0x18, 0x40, 0x24, 0x40, 0x2e, 0x00, 0x22, 0x05, 0x20, 0x01, 0x05, + 0x40, 0x2b, 0x00, 0x02, 0x45, 0x78, 0x22, 0x78, 0x42, 0x28, 0xc1, 0x07, + 0x38, 0x60, 0x27, 0x78, 0x13, 0x0d, 0xb1, 0x10, 0x10, 0x78, 0x8c, 0x20, + 0x19, 0x8a, 0x8c, 0xf7, 0x82, 0xbe, 0xcf, 0x7e, 0x08, 0xf0, 0x11, 0x08, + 0x84, 0x0f, 0x00, 0x00, 0xce, 0x0c, 0xcf, 0x78, 0x0f, 0x20, 0x4e, 0x03, + 0x0c, 0x71, 0xa5, 0x71, 0xe5, 0x72, 0x67, 0x0d, 0xf2, 0x90, 0xab, 0x20, + 0x61, 0x0a, 0xb6, 0xd9, 0x32, 0x0d, 0x6f, 0x07, 0x62, 0x40, 0x3c, 0xd8, + 0xa2, 0x5a, 0x19, 0x0e, 0x3e, 0x10, 0x61, 0xd8, 0xcf, 0x79, 0x11, 0x09, + 0x7e, 0x00, 0x62, 0xd8, 0x09, 0x09, 0xbe, 0x00, 0x64, 0xd8, 0x0c, 0x72, + 0xd6, 0xc7, 0xe0, 0x78, 0xe6, 0xc3, 0xa1, 0xc1, 0xad, 0x70, 0xb6, 0xd9, + 0x08, 0x47, 0x06, 0x0d, 0x6f, 0x07, 0x03, 0x1c, 0x42, 0x33, 0x32, 0xd8, + 0xa2, 0x5a, 0xcd, 0x71, 0x15, 0xd9, 0xe1, 0x40, 0xf2, 0x0c, 0x6f, 0x07, + 0xab, 0x26, 0x61, 0x1a, 0x32, 0xd8, 0xa2, 0x5a, 0x0c, 0x75, 0xab, 0x26, + 0x61, 0x1a, 0xa2, 0x5a, 0x2c, 0x73, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, + 0xe1, 0x40, 0xbf, 0x5a, 0x03, 0x14, 0x80, 0x30, 0x44, 0x20, 0x00, 0x03, + 0x0b, 0x08, 0x10, 0x01, 0xa5, 0x71, 0xe1, 0x0d, 0x52, 0x91, 0x2c, 0x71, + 0x8a, 0x08, 0xaf, 0x07, 0xe1, 0x40, 0x32, 0xd8, 0xa2, 0x5a, 0xcd, 0x71, + 0x0c, 0x75, 0xab, 0x26, 0x61, 0x1a, 0xa2, 0x5a, 0x40, 0x24, 0xc1, 0x30, + 0x92, 0x0f, 0x6f, 0x07, 0xe1, 0x40, 0x03, 0x14, 0x80, 0x30, 0x0d, 0x08, + 0x70, 0x00, 0xa5, 0x71, 0xe5, 0x0d, 0x52, 0x91, 0xb6, 0xd9, 0x92, 0x0c, + 0x6f, 0x07, 0xe1, 0x40, 0x32, 0xd8, 0xa2, 0x5a, 0x03, 0x14, 0x80, 0x30, + 0x60, 0xd9, 0x14, 0x70, 0x0c, 0x72, 0xca, 0x20, 0x41, 0x00, 0x23, 0xd9, + 0x00, 0x1e, 0x40, 0x70, 0x80, 0x00, 0x28, 0x12, 0xc6, 0xc7, 0xe0, 0x78, + 0xe2, 0xc2, 0x76, 0x08, 0xaf, 0x07, 0x28, 0x45, 0x03, 0xed, 0x0c, 0x71, + 0xa2, 0x5a, 0x0c, 0x70, 0xc2, 0xc6, 0xe0, 0x78, 0xe4, 0xc3, 0xa1, 0xc1, + 0x08, 0x45, 0x04, 0x88, 0x2c, 0x70, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, + 0xbf, 0x5a, 0x22, 0xde, 0x92, 0xe8, 0x03, 0x14, 0x80, 0x30, 0x21, 0xde, + 0x6c, 0x20, 0x80, 0x00, 0x8c, 0x20, 0x03, 0x84, 0x0a, 0xf4, 0x92, 0x0d, + 0xef, 0xff, 0x04, 0x8d, 0x86, 0xe8, 0x0c, 0x70, 0x0e, 0x08, 0x20, 0x00, + 0xa1, 0x41, 0xcd, 0x70, 0xc1, 0x40, 0xc4, 0xc7, 0xec, 0xc2, 0x28, 0x45, + 0xe6, 0x0c, 0xaf, 0x05, 0x08, 0x46, 0xbe, 0x0c, 0xaf, 0x05, 0x10, 0x40, + 0x08, 0x47, 0x11, 0xd8, 0xe1, 0x41, 0x02, 0x42, 0xb1, 0x5a, 0x10, 0x42, + 0x12, 0xd8, 0xe1, 0x41, 0x02, 0x42, 0xb1, 0x5a, 0x10, 0x41, 0x13, 0xd8, + 0xe1, 0x41, 0x02, 0x42, 0xb1, 0x5a, 0x10, 0x40, 0xcb, 0x47, 0x80, 0x00, + 0xc8, 0x1f, 0x8c, 0x26, 0xc3, 0x9f, 0x26, 0xf2, 0x5b, 0x0e, 0x30, 0x14, + 0x8c, 0x26, 0x02, 0x90, 0x35, 0xf2, 0x95, 0x0e, 0xb5, 0x10, 0x42, 0x40, + 0xd2, 0x09, 0x8f, 0x07, 0x0c, 0xe8, 0xce, 0x09, 0xaf, 0x07, 0x22, 0x40, + 0x08, 0xe8, 0xc6, 0x09, 0xaf, 0x07, 0x02, 0x40, 0x04, 0xe8, 0x04, 0x8d, + 0x2c, 0x70, 0x04, 0xf0, 0x04, 0x8d, 0x80, 0xd9, 0x7e, 0x0c, 0xcf, 0xff, + 0x72, 0x15, 0x80, 0x10, 0xa1, 0x41, 0xc6, 0xb8, 0x72, 0x1d, 0x02, 0x10, + 0x0c, 0x70, 0xc0, 0xa7, 0xd6, 0x5a, 0x2c, 0xf0, 0x04, 0x8d, 0x00, 0x17, + 0x10, 0x10, 0x62, 0x0c, 0xef, 0xff, 0xff, 0xd9, 0xb8, 0x20, 0x02, 0x20, + 0x15, 0xf0, 0x56, 0x0d, 0xef, 0xff, 0x04, 0x8d, 0x00, 0x41, 0xa1, 0x40, + 0xd0, 0x5a, 0x0c, 0x70, 0xa1, 0x41, 0x00, 0x1f, 0x01, 0x14, 0xd6, 0x5a, + 0x16, 0xf0, 0x04, 0x8d, 0x00, 0x17, 0x10, 0x10, 0x36, 0x0c, 0xef, 0xff, + 0x80, 0xd9, 0xb8, 0x20, 0xc3, 0x2f, 0x0c, 0x70, 0xa1, 0x41, 0xc0, 0xa7, + 0xd6, 0x5a, 0x15, 0x08, 0x30, 0x20, 0xa1, 0x41, 0xc3, 0x40, 0x80, 0x00, + 0x2c, 0x12, 0x49, 0x85, 0x60, 0x7a, 0x00, 0x80, 0x00, 0x87, 0xcc, 0xc6, + 0xea, 0xc3, 0xa1, 0xc1, 0x10, 0x41, 0xc3, 0x40, 0x80, 0x00, 0x2c, 0x12, + 0xad, 0x70, 0xcb, 0x46, 0x7f, 0x00, 0x08, 0xe6, 0x28, 0x47, 0x00, 0x18, + 0x40, 0x04, 0x03, 0x1c, 0x42, 0x33, 0xd1, 0x40, 0x00, 0x96, 0x22, 0x41, + 0xae, 0x0b, 0x6f, 0x04, 0x2f, 0x38, 0x03, 0x00, 0x45, 0xf6, 0xa5, 0x71, + 0xf1, 0x0d, 0x34, 0x91, 0xc5, 0x74, 0x42, 0x09, 0xaf, 0x07, 0xe1, 0x40, + 0x8c, 0x20, 0x02, 0x80, 0x0c, 0x71, 0x1d, 0xf2, 0x32, 0x09, 0xaf, 0x07, + 0xe1, 0x40, 0x8c, 0x20, 0xc3, 0x8f, 0x16, 0xf4, 0x04, 0x8f, 0x15, 0x20, + 0x4c, 0x23, 0x40, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0xc2, 0x8c, + 0xbf, 0x5a, 0x53, 0x26, 0xc0, 0x10, 0x85, 0xb8, 0x03, 0x1c, 0x02, 0x30, + 0x04, 0x8f, 0x40, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0xc1, 0x5a, + 0xa1, 0x40, 0x15, 0x20, 0x01, 0x20, 0x00, 0x91, 0xcb, 0x45, 0x80, 0x00, + 0xd0, 0x1f, 0x2f, 0x3a, 0x03, 0x00, 0x0c, 0x70, 0xe1, 0x41, 0x40, 0xa5, + 0xd8, 0x5a, 0x00, 0x85, 0xca, 0xc7, 0xe0, 0x78, 0xe2, 0xc2, 0xc3, 0x41, + 0x80, 0x00, 0x12, 0x12, 0x00, 0x11, 0xc1, 0x00, 0x08, 0x45, 0xd6, 0x0a, + 0xaf, 0x05, 0x20, 0x40, 0x72, 0x15, 0x81, 0x10, 0x0c, 0x70, 0xc6, 0xb9, + 0x72, 0x1d, 0x42, 0x10, 0xc2, 0xc6, 0xe0, 0x78, 0xe2, 0xc2, 0xc3, 0x41, + 0x80, 0x00, 0x12, 0x12, 0x00, 0x11, 0xc1, 0x00, 0x08, 0x45, 0xfe, 0x0c, + 0x60, 0x01, 0x20, 0x40, 0x72, 0x15, 0x81, 0x10, 0x0c, 0x70, 0x87, 0xb9, + 0x72, 0x1d, 0x42, 0x10, 0xc2, 0xc6, 0xe0, 0x78, 0xe0, 0x7f, 0x60, 0x10, + 0x00, 0x01, 0xe0, 0x78, 0xc3, 0x40, 0x80, 0x00, 0x14, 0x12, 0xe0, 0x7f, + 0x00, 0x80, 0xe0, 0x78, 0xc3, 0x42, 0x80, 0x00, 0x10, 0x12, 0x03, 0xa2, + 0x04, 0x89, 0x20, 0x45, 0x10, 0xe2, 0xf7, 0xd9, 0xc3, 0x44, 0x7f, 0x00, + 0xf0, 0xb0, 0x01, 0x05, 0x6f, 0x05, 0x6c, 0x76, 0xc3, 0x40, 0x80, 0x00, + 0x18, 0x12, 0xe0, 0x7f, 0x00, 0x80, 0xe0, 0x78, 0x0f, 0xd8, 0xe0, 0x7f, + 0x1a, 0xb8, 0xe0, 0x78, 0x14, 0x70, 0xe0, 0x7d, 0xc3, 0x40, 0x80, 0x00, + 0x1c, 0x12, 0x40, 0x80, 0x20, 0x40, 0x00, 0x7a, 0xe8, 0xc2, 0x08, 0x46, + 0x04, 0x88, 0xcb, 0x47, 0x80, 0x00, 0x10, 0x12, 0x40, 0x27, 0x82, 0x15, + 0xd0, 0xd9, 0x6c, 0x71, 0x9a, 0x0c, 0x6f, 0x05, 0x50, 0x40, 0x22, 0xdd, + 0xb7, 0xe8, 0x00, 0x10, 0x80, 0x20, 0x21, 0xdd, 0xd8, 0xe0, 0x33, 0xf4, + 0x54, 0xd8, 0x00, 0x18, 0x02, 0x20, 0x04, 0x8e, 0x8c, 0x70, 0xf4, 0xd9, + 0x6c, 0x71, 0x80, 0x45, 0x02, 0x42, 0x32, 0x0c, 0x6f, 0x05, 0xad, 0x70, + 0x04, 0x8e, 0xc3, 0x42, 0x80, 0x00, 0xf8, 0x1a, 0x88, 0xd9, 0x10, 0xdb, + 0xa1, 0x44, 0xa1, 0x45, 0x86, 0x0c, 0x6f, 0x05, 0x50, 0x40, 0x04, 0x8e, + 0x40, 0x20, 0x02, 0x24, 0x98, 0xd9, 0x08, 0xdb, 0xa1, 0x44, 0x76, 0x0c, + 0x6f, 0x05, 0xa1, 0x45, 0x02, 0x17, 0xc0, 0x10, 0x15, 0x08, 0x33, 0x00, + 0x0c, 0x71, 0xc3, 0x41, 0x7f, 0x00, 0x94, 0xab, 0x96, 0x0c, 0x60, 0x01, + 0xc1, 0x42, 0x02, 0xaf, 0xc1, 0x40, 0xa1, 0xa7, 0xe2, 0x0e, 0xef, 0xff, + 0xa2, 0xa7, 0xa1, 0x40, 0xc8, 0xc6, 0xe0, 0x78, 0xe2, 0xc2, 0x0c, 0x70, + 0x28, 0x45, 0xd7, 0x5a, 0x30, 0x85, 0x60, 0x79, 0xa1, 0x40, 0xc2, 0xc6, + 0xe2, 0xc2, 0x08, 0x45, 0xc3, 0x42, 0x80, 0x00, 0x14, 0x12, 0x0c, 0x70, + 0xa0, 0xa2, 0xd6, 0x5a, 0xa1, 0x40, 0xc2, 0xc6, 0xe8, 0xc2, 0x28, 0x47, + 0x5e, 0x11, 0x01, 0x01, 0x0a, 0x20, 0x00, 0x20, 0x2f, 0x3d, 0x43, 0x10, + 0xa9, 0x46, 0x00, 0x35, 0x8d, 0x1f, 0x00, 0x3f, 0x00, 0x00, 0xa1, 0x40, + 0xce, 0x09, 0x6f, 0x04, 0x02, 0x41, 0x38, 0xf6, 0xcb, 0x45, 0x80, 0x00, + 0x10, 0x12, 0x02, 0x85, 0xbe, 0x09, 0x6f, 0x04, 0xc1, 0x41, 0x0d, 0xf2, + 0xc1, 0x40, 0xbe, 0x09, 0x6f, 0x04, 0xc2, 0xa5, 0x02, 0x15, 0xc2, 0x10, + 0x10, 0x79, 0x2e, 0x0c, 0x60, 0x01, 0x40, 0x40, 0x02, 0xad, 0x0c, 0x70, + 0xe1, 0x41, 0xd8, 0x5a, 0x02, 0x85, 0xc8, 0xc6, 0xe4, 0xc3, 0xa1, 0xc1, + 0x08, 0x45, 0x08, 0x88, 0x21, 0x08, 0x71, 0x0c, 0x28, 0x46, 0x00, 0x16, + 0x00, 0x70, 0x80, 0x00, 0x80, 0x20, 0xce, 0x0f, 0x2f, 0x08, 0x80, 0xc1, + 0x02, 0x14, 0x80, 0x30, 0x09, 0x08, 0x51, 0x00, 0x11, 0x85, 0xc3, 0x80, + 0xa1, 0x40, 0x96, 0x08, 0xef, 0x07, 0xc1, 0x41, 0xc4, 0xc7, 0xe0, 0x78, + 0xe8, 0xc2, 0x28, 0x45, 0x8e, 0x09, 0xaf, 0x05, 0x10, 0x40, 0xae, 0x09, + 0xaf, 0x05, 0x08, 0x47, 0x08, 0x46, 0x40, 0xd8, 0xe1, 0x41, 0xc1, 0x42, + 0xb6, 0x5a, 0x27, 0x08, 0x21, 0x04, 0x17, 0xd8, 0xe1, 0x41, 0xc1, 0x42, + 0xb6, 0x5a, 0x0d, 0xe8, 0x0d, 0x88, 0x0b, 0xe8, 0xc8, 0xd8, 0x00, 0x1e, + 0x00, 0x70, 0x80, 0x00, 0x78, 0x20, 0xc3, 0x40, 0x48, 0x43, 0x00, 0x00, + 0x00, 0xa5, 0xc8, 0xc6, 0xe6, 0xc2, 0x3a, 0x09, 0x8f, 0x05, 0x4e, 0x09, + 0xaf, 0x05, 0x08, 0x47, 0x6a, 0x09, 0xaf, 0x05, 0x08, 0x46, 0x4e, 0x09, + 0xaf, 0x05, 0x08, 0x45, 0x00, 0x42, 0x10, 0xd8, 0xe1, 0x41, 0xb1, 0x5a, + 0x05, 0xe8, 0x20, 0x80, 0x83, 0xe9, 0x0d, 0x18, 0x03, 0x00, 0x17, 0xd8, + 0xc1, 0x41, 0xa1, 0x42, 0xb6, 0x5a, 0x0b, 0xe8, 0x0d, 0x88, 0x09, 0xe8, + 0x40, 0xd8, 0xc1, 0x41, 0xa1, 0x42, 0xb6, 0x5a, 0x03, 0xe8, 0x0d, 0x18, + 0x43, 0x00, 0xc6, 0xc6, 0xe4, 0xc3, 0xa1, 0xc1, 0x08, 0x45, 0xcd, 0x70, + 0x03, 0x1c, 0x82, 0x33, 0xc3, 0x40, 0x80, 0x00, 0xb0, 0x2a, 0xc0, 0xad, + 0x17, 0x88, 0x12, 0xe8, 0xc3, 0x40, 0x80, 0x00, 0xf4, 0x2b, 0x00, 0x88, + 0x1d, 0x08, 0x90, 0x00, 0x15, 0x08, 0x71, 0x00, 0xa1, 0x40, 0xb2, 0x0f, + 0x0f, 0x0c, 0x52, 0x08, 0x6f, 0x0c, 0x40, 0x24, 0xc0, 0x30, 0x0e, 0xf0, + 0xc0, 0xad, 0x0b, 0xf0, 0xc3, 0x40, 0x80, 0x00, 0x71, 0x12, 0x20, 0x88, + 0x40, 0x24, 0xc0, 0x30, 0xbe, 0x0d, 0x2f, 0x0d, 0x20, 0xad, 0x0c, 0x70, + 0x03, 0x14, 0x81, 0x30, 0x02, 0xe9, 0xc0, 0xad, 0xc4, 0xc7, 0xe0, 0x78, + 0xe2, 0xc2, 0x32, 0x0e, 0x2f, 0x08, 0x08, 0x45, 0x2a, 0xd9, 0x23, 0xb5, + 0xc2, 0xc6, 0xe0, 0x78, 0xf8, 0xc3, 0xad, 0xc1, 0x20, 0x10, 0x12, 0x00, + 0x08, 0x45, 0xd4, 0x5a, 0xcb, 0x47, 0x80, 0x00, 0xec, 0x11, 0x20, 0x87, + 0x79, 0x20, 0x00, 0x00, 0x04, 0x71, 0x0d, 0x09, 0x00, 0x00, 0x4a, 0x0e, + 0x2f, 0x08, 0x00, 0xa7, 0x62, 0x08, 0x8f, 0x05, 0x82, 0x08, 0xaf, 0x05, + 0x18, 0x40, 0x10, 0x47, 0x36, 0xd9, 0xa1, 0x40, 0xab, 0x21, 0xa0, 0x0d, + 0xb3, 0x5a, 0xc3, 0x41, 0x74, 0x49, 0x00, 0x24, 0x36, 0x08, 0x6f, 0x04, + 0x00, 0x39, 0x00, 0x00, 0x21, 0x87, 0xcd, 0x70, 0x38, 0x60, 0x40, 0x24, + 0x16, 0x31, 0xad, 0x70, 0x01, 0xa7, 0x32, 0x25, 0x80, 0x1f, 0x7f, 0x00, + 0x04, 0xe6, 0x03, 0x41, 0xe2, 0x42, 0xb1, 0x5a, 0x10, 0x44, 0x27, 0xe8, + 0x20, 0x14, 0x01, 0x20, 0x60, 0x79, 0x82, 0x40, 0xc0, 0xe0, 0x42, 0x00, + 0x25, 0x00, 0x40, 0x24, 0xc0, 0x30, 0xd3, 0x40, 0x80, 0x00, 0xe0, 0x1a, + 0xf0, 0x26, 0x41, 0x73, 0x80, 0x00, 0x1c, 0x13, 0x15, 0x20, 0x50, 0x23, + 0x44, 0x14, 0x13, 0x20, 0x0c, 0x10, 0x15, 0x20, 0x60, 0x79, 0x00, 0x10, + 0x11, 0x20, 0x12, 0x0e, 0xaf, 0x07, 0x03, 0x14, 0x80, 0x30, 0xd6, 0x0f, + 0x0f, 0x04, 0x1d, 0x08, 0x91, 0x01, 0xc3, 0x41, 0x02, 0x00, 0x00, 0x71, + 0x14, 0xf0, 0x14, 0x6d, 0xc2, 0x70, 0xc3, 0xa0, 0xc2, 0xa0, 0xc1, 0xa0, + 0xc0, 0xa0, 0x32, 0xf0, 0x0f, 0x08, 0x31, 0x03, 0x14, 0x70, 0xc3, 0x41, + 0x01, 0x00, 0x80, 0x38, 0x06, 0xf0, 0xc3, 0x41, 0x0f, 0x00, 0x40, 0x42, + 0xc5, 0x29, 0x02, 0x00, 0x6f, 0x26, 0x3f, 0x04, 0x6f, 0x23, 0x3f, 0x00, + 0x74, 0x6d, 0x4c, 0x14, 0x09, 0x20, 0x08, 0x13, 0x08, 0x20, 0x04, 0x13, + 0x0b, 0x20, 0x00, 0x13, 0x0c, 0x20, 0x6f, 0x26, 0xff, 0x05, 0x41, 0x87, + 0x81, 0xc0, 0x78, 0x60, 0x02, 0x22, 0x43, 0x04, 0x80, 0xa0, 0x04, 0x18, + 0xc0, 0x02, 0x0f, 0x0b, 0x65, 0x00, 0x08, 0x18, 0x00, 0x02, 0x0d, 0x0d, + 0x40, 0x22, 0x50, 0x41, 0x00, 0x18, 0x80, 0x20, 0x0c, 0x18, 0x40, 0x22, + 0x0c, 0x18, 0x40, 0x04, 0xa5, 0x71, 0xb5, 0x73, 0x32, 0x07, 0xc5, 0xff, + 0xcb, 0x45, 0x80, 0x00, 0xe4, 0x1f, 0x00, 0x8d, 0x0f, 0x08, 0x3e, 0x00, + 0x81, 0xc1, 0xfb, 0xd8, 0x42, 0x42, 0xce, 0x5a, 0x00, 0x8d, 0x11, 0x08, + 0x7e, 0x00, 0x85, 0xc1, 0xfa, 0xd8, 0x42, 0x42, 0xce, 0x5a, 0x00, 0x8d, + 0x0d, 0x08, 0xbe, 0x00, 0xf9, 0xd8, 0x89, 0xc1, 0x42, 0x42, 0xce, 0x5a, + 0x3a, 0xd9, 0x81, 0xc0, 0x52, 0x0e, 0xef, 0x08, 0xab, 0x21, 0xa0, 0x0d, + 0x26, 0x08, 0x0f, 0x09, 0x32, 0x0e, 0x2f, 0x08, 0x40, 0x24, 0x80, 0x30, + 0x02, 0x14, 0x80, 0x30, 0x13, 0xe8, 0x1e, 0x0f, 0x4f, 0x05, 0x3e, 0x0f, + 0x6f, 0x05, 0x08, 0x45, 0x00, 0x42, 0x41, 0xd8, 0xa1, 0x41, 0xb6, 0x5a, + 0x07, 0xe8, 0x0d, 0x18, 0x43, 0x00, 0x1d, 0x18, 0x43, 0x00, 0xdc, 0x5a, + 0x03, 0xf0, 0x57, 0xd8, 0xcd, 0x5a, 0x3b, 0xd9, 0x0c, 0x70, 0xab, 0x21, + 0xa0, 0x0d, 0xd8, 0xc7, 0xe2, 0xc2, 0xda, 0x0e, 0x8f, 0x07, 0x08, 0x45, + 0x0f, 0xd8, 0xc3, 0x41, 0x7f, 0x00, 0xdc, 0xd3, 0xcc, 0x5a, 0x0f, 0xd8, + 0xc3, 0x41, 0x7f, 0x00, 0x34, 0xd3, 0xcb, 0x5a, 0xc3, 0x41, 0x7f, 0x00, + 0xc8, 0xd2, 0x04, 0xe9, 0x0c, 0x72, 0xcc, 0x5a, 0xc3, 0x41, 0x7f, 0x00, + 0xf8, 0xd1, 0x04, 0xe9, 0x0c, 0x72, 0xcb, 0x5a, 0xa1, 0x40, 0xc2, 0xc6, + 0xe0, 0x7f, 0x0c, 0x71, 0xe8, 0xc3, 0xa4, 0xc1, 0xc3, 0x41, 0x80, 0x00, + 0xb2, 0x11, 0x20, 0x89, 0x08, 0x45, 0xf0, 0x26, 0x42, 0x70, 0x80, 0x00, + 0x38, 0x20, 0x83, 0xc1, 0xc2, 0x0c, 0x2f, 0x08, 0x40, 0x40, 0x23, 0xc0, + 0x4f, 0x08, 0x71, 0x00, 0x80, 0xc0, 0xb6, 0x0e, 0x4f, 0x08, 0x22, 0xc0, + 0x43, 0x08, 0xd1, 0x00, 0x00, 0x14, 0x40, 0x31, 0x80, 0x20, 0xc7, 0x0c, + 0x8c, 0x20, 0x8f, 0x89, 0x19, 0xf7, 0x02, 0x14, 0x40, 0x31, 0x80, 0x20, + 0xc7, 0x0c, 0x8c, 0x20, 0x8f, 0x89, 0x13, 0xf7, 0x04, 0x14, 0x40, 0x31, + 0x80, 0x20, 0xc7, 0x0c, 0x8c, 0x20, 0x8f, 0x89, 0x0b, 0xf7, 0x00, 0xc3, + 0x01, 0xc2, 0x08, 0x14, 0x01, 0x31, 0xc3, 0x40, 0x80, 0x00, 0x28, 0x13, + 0x41, 0xa0, 0x60, 0xa0, 0x24, 0xb0, 0x0d, 0x14, 0x80, 0x30, 0x27, 0x08, + 0x71, 0x00, 0x80, 0xc0, 0x4a, 0x09, 0x4f, 0x08, 0x22, 0xc0, 0x1b, 0x08, + 0xd1, 0x00, 0x00, 0xc3, 0x01, 0xc2, 0x08, 0x14, 0x01, 0x31, 0xc3, 0x40, + 0x80, 0x00, 0x34, 0x13, 0x41, 0xa0, 0x60, 0xa0, 0x24, 0xb0, 0x0e, 0x14, + 0x80, 0x30, 0x27, 0x08, 0x71, 0x00, 0x80, 0xc0, 0x96, 0x09, 0x8f, 0x08, + 0x22, 0xc0, 0x1b, 0x08, 0xd1, 0x00, 0x00, 0xc3, 0x01, 0xc2, 0x08, 0x14, + 0x01, 0x31, 0xc3, 0x40, 0x80, 0x00, 0x40, 0x13, 0x41, 0xa0, 0x60, 0xa0, + 0x24, 0xb0, 0xc3, 0x40, 0x7f, 0x00, 0xa0, 0xb6, 0x05, 0xe8, 0xce, 0x08, + 0x20, 0x00, 0xa1, 0x40, 0x04, 0xf0, 0xb6, 0x09, 0xef, 0x08, 0xa1, 0x40, + 0xcb, 0x46, 0x80, 0x00, 0xa0, 0x11, 0x10, 0x40, 0x00, 0x8e, 0xb1, 0x08, + 0x30, 0x00, 0x83, 0xc1, 0xf6, 0x0b, 0x2f, 0x08, 0x00, 0x85, 0x23, 0xc1, + 0x35, 0x09, 0x71, 0x00, 0x10, 0x40, 0x00, 0x16, 0xc1, 0x10, 0x2d, 0x09, + 0x3e, 0x00, 0x84, 0x21, 0x83, 0x0f, 0xc3, 0x40, 0x80, 0x00, 0x28, 0x13, + 0x41, 0x80, 0x60, 0x80, 0x04, 0x90, 0x41, 0xc2, 0x40, 0xc3, 0x08, 0x1c, + 0x04, 0x30, 0x22, 0xc0, 0x0d, 0x08, 0xf1, 0x00, 0x20, 0xae, 0x62, 0x0d, + 0x6f, 0x08, 0x80, 0xc0, 0x0d, 0x14, 0x80, 0x30, 0x33, 0x08, 0x51, 0x00, + 0x00, 0x16, 0xc1, 0x10, 0x2b, 0x09, 0x7e, 0x00, 0x84, 0x21, 0x43, 0x0f, + 0xc3, 0x40, 0x80, 0x00, 0x34, 0x13, 0x41, 0x80, 0x60, 0x80, 0x04, 0x90, + 0x41, 0xc2, 0x40, 0xc3, 0x08, 0x1c, 0x04, 0x30, 0x22, 0xc0, 0x0f, 0x08, + 0xf1, 0x00, 0x20, 0xae, 0xc2, 0x0a, 0x6f, 0x08, 0x80, 0xc0, 0x0e, 0x14, + 0x80, 0x30, 0x35, 0x08, 0x51, 0x00, 0x00, 0x16, 0xc1, 0x10, 0x2d, 0x09, + 0xbe, 0x00, 0x84, 0x21, 0xc3, 0x0e, 0xc3, 0x40, 0x80, 0x00, 0x40, 0x13, + 0x41, 0x80, 0x60, 0x80, 0x04, 0x90, 0x41, 0xc2, 0x40, 0xc3, 0x08, 0x1c, + 0x04, 0x30, 0x22, 0xc0, 0x0d, 0x08, 0xf1, 0x00, 0x20, 0xae, 0x6a, 0x08, + 0xaf, 0x08, 0x80, 0xc0, 0x02, 0x40, 0xc8, 0xc7, 0xe2, 0xc2, 0xf2, 0x08, + 0xef, 0x08, 0x08, 0x45, 0x20, 0x85, 0x08, 0x45, 0x11, 0x09, 0x80, 0x0f, + 0x1e, 0x00, 0x55, 0x28, 0x0d, 0x09, 0x81, 0x0f, 0x0e, 0x00, 0x15, 0x28, + 0xea, 0x08, 0x4f, 0xff, 0xa1, 0x40, 0xc2, 0xc6, 0xc3, 0x41, 0x80, 0x00, + 0xc0, 0x20, 0xc3, 0x42, 0x98, 0x00, 0x7f, 0x96, 0x01, 0x19, 0x03, 0x01, + 0x41, 0xa1, 0x0c, 0x70, 0xe0, 0x7f, 0x00, 0x19, 0x03, 0x00, 0xe0, 0x78, + 0x04, 0x89, 0x8c, 0x70, 0xf4, 0xd9, 0xc3, 0x42, 0x80, 0x00, 0x10, 0x12, + 0x6c, 0x71, 0x7d, 0x06, 0x2f, 0x05, 0x80, 0x45, 0xec, 0xc2, 0xc2, 0x0c, + 0x6f, 0x05, 0x10, 0x40, 0xde, 0x0c, 0x6f, 0x05, 0x08, 0x45, 0x10, 0x41, + 0xcd, 0x70, 0x1b, 0xe8, 0x40, 0x25, 0x52, 0x13, 0x15, 0xe5, 0xed, 0x70, + 0x78, 0x12, 0x80, 0x24, 0x0d, 0xe8, 0x00, 0x8d, 0x17, 0x08, 0xdf, 0x00, + 0x0b, 0x15, 0x01, 0x10, 0x06, 0xe9, 0x60, 0x79, 0x42, 0x25, 0x40, 0x15, + 0xc0, 0xe0, 0x03, 0xf2, 0xe5, 0x71, 0xc5, 0x71, 0xe1, 0x0e, 0x64, 0x94, + 0x54, 0x25, 0x0d, 0x1f, 0x02, 0xf0, 0xed, 0x70, 0xcb, 0x45, 0x80, 0x00, + 0xa8, 0x11, 0x01, 0x85, 0x21, 0x68, 0x21, 0xa5, 0x06, 0x10, 0x00, 0x21, + 0x5f, 0x20, 0xc0, 0x00, 0x09, 0x08, 0x43, 0x00, 0x04, 0x1d, 0x01, 0x10, + 0x8f, 0xef, 0xc6, 0x5a, 0x8d, 0xe8, 0x06, 0x40, 0x6c, 0x70, 0x0f, 0xe8, + 0x4a, 0x22, 0x00, 0x00, 0x2d, 0x88, 0x00, 0x80, 0x45, 0x79, 0x79, 0x21, + 0x02, 0x00, 0xfc, 0xe8, 0x05, 0xe9, 0x00, 0x1d, 0x43, 0x10, 0x0c, 0x70, + 0xcc, 0xc6, 0x02, 0x40, 0x60, 0xad, 0xdb, 0x5a, 0xfb, 0xf1, 0xe0, 0x78, + 0xf4, 0xc2, 0x88, 0x45, 0x70, 0x42, 0x50, 0x45, 0x30, 0x41, 0x10, 0x44, + 0x2f, 0x27, 0xbf, 0x03, 0x6f, 0x23, 0x3f, 0x00, 0xa9, 0x5a, 0xa2, 0x40, + 0x42, 0x41, 0xbe, 0x5a, 0x00, 0x16, 0x81, 0x70, 0x80, 0x00, 0xa4, 0x1e, + 0x34, 0x70, 0x0e, 0xf4, 0xa5, 0x78, 0x52, 0x20, 0x3e, 0x80, 0x0a, 0xf2, + 0x6f, 0x26, 0x3f, 0x04, 0x6f, 0x23, 0x3f, 0x00, 0xaa, 0x5a, 0x2f, 0x26, + 0xbf, 0x03, 0x9e, 0xf0, 0x78, 0xda, 0x82, 0x40, 0x22, 0x41, 0x2f, 0x26, + 0xbf, 0x03, 0x86, 0x09, 0x8f, 0x05, 0x34, 0xda, 0xa2, 0x40, 0x7e, 0x09, + 0xaf, 0x05, 0x42, 0x41, 0x82, 0x40, 0x22, 0x41, 0xa2, 0x42, 0x42, 0x43, + 0xa8, 0x5a, 0x8a, 0x23, 0x01, 0x2e, 0xbb, 0x09, 0x30, 0x20, 0xed, 0x70, + 0xcd, 0x70, 0x1a, 0x26, 0xcd, 0x14, 0x82, 0x75, 0xa1, 0x40, 0xa7, 0x5a, + 0x36, 0x85, 0x16, 0x0c, 0xaf, 0x03, 0x10, 0x40, 0x27, 0xf2, 0xa1, 0x40, + 0x50, 0x20, 0xfe, 0xa7, 0x25, 0xf2, 0xde, 0x5a, 0x16, 0x85, 0x50, 0x20, + 0xfe, 0x87, 0x0a, 0xf2, 0xc1, 0x40, 0x9a, 0x20, 0x01, 0x0e, 0x82, 0x70, + 0x2c, 0x80, 0x04, 0xe9, 0x60, 0x79, 0xa1, 0x40, 0xd1, 0x46, 0x9a, 0x26, + 0x01, 0x2e, 0x58, 0x1d, 0x00, 0x14, 0x02, 0x40, 0x00, 0x26, 0x16, 0x25, + 0x24, 0x16, 0x02, 0x20, 0x60, 0x7a, 0xa1, 0x41, 0xda, 0x09, 0x20, 0x01, + 0xa1, 0x40, 0x2c, 0x16, 0x01, 0x20, 0x0c, 0xe9, 0x60, 0x79, 0xa1, 0x40, + 0x08, 0xf0, 0x2c, 0x71, 0x03, 0xf0, 0xda, 0x5a, 0x2c, 0x70, 0x4e, 0x09, + 0x20, 0x00, 0xa1, 0x40, 0x50, 0x20, 0xfe, 0xa7, 0x1a, 0xf2, 0xd1, 0x40, + 0x9a, 0x20, 0x01, 0x2e, 0xa1, 0x40, 0x00, 0x20, 0x10, 0x25, 0xde, 0x5a, + 0xa1, 0x40, 0xa6, 0x5a, 0x10, 0x46, 0x5c, 0x10, 0x00, 0x21, 0xd6, 0x70, + 0xca, 0x26, 0x61, 0x20, 0x15, 0x08, 0xa0, 0x05, 0x2f, 0x20, 0x88, 0x05, + 0x3c, 0x10, 0x02, 0x20, 0x60, 0x7a, 0xa1, 0x41, 0x5c, 0x18, 0x84, 0x25, + 0xa1, 0x40, 0xbd, 0x5a, 0xc5, 0x71, 0x57, 0x0e, 0x44, 0x94, 0x5b, 0x0a, + 0x10, 0x20, 0x5a, 0x27, 0x0d, 0x1d, 0xa2, 0x75, 0x15, 0x8d, 0xc1, 0xb8, + 0x45, 0x08, 0x51, 0x00, 0x03, 0x95, 0x20, 0xe8, 0x2c, 0x71, 0xee, 0x08, + 0x20, 0x00, 0xa1, 0x40, 0x0d, 0x8d, 0x18, 0xe8, 0xca, 0x08, 0x6f, 0x05, + 0x05, 0x15, 0xc0, 0x10, 0x94, 0xe8, 0xc2, 0x0c, 0x20, 0x01, 0x05, 0x15, + 0xc0, 0x10, 0xff, 0xd8, 0xad, 0x5a, 0x00, 0x42, 0x2c, 0x73, 0xa2, 0x09, + 0xaf, 0x05, 0xa1, 0x40, 0x2c, 0x72, 0x4c, 0x70, 0x96, 0x09, 0xaf, 0x05, + 0xa1, 0x40, 0x04, 0xf0, 0xa1, 0x40, 0xdb, 0x5a, 0xe5, 0x71, 0xb3, 0x0f, + 0x84, 0x94, 0xaa, 0x5a, 0x0c, 0x70, 0xd4, 0xc6, 0xf1, 0xc0, 0xc3, 0x42, + 0x80, 0x00, 0xd4, 0x11, 0x21, 0x82, 0x20, 0x81, 0x1b, 0x09, 0x80, 0x0f, + 0xa5, 0x5a, 0x6b, 0xb6, 0x28, 0x8a, 0x89, 0xe9, 0x2c, 0x71, 0x14, 0x70, + 0x27, 0xd8, 0x28, 0xaa, 0x05, 0xf2, 0x27, 0xd8, 0xcd, 0x5a, 0xd1, 0xc0, + 0xe0, 0x7e, 0xab, 0x20, 0xe0, 0x0c, 0xab, 0x21, 0x61, 0x0a, 0xff, 0xf1, + 0xc3, 0x41, 0x80, 0x00, 0xb8, 0x11, 0x1b, 0x08, 0x10, 0x06, 0x1d, 0x08, + 0x50, 0x05, 0x1f, 0x08, 0x90, 0x05, 0x21, 0x08, 0xf1, 0x05, 0x94, 0xe0, + 0x00, 0x8a, 0x18, 0xa9, 0x0e, 0xf0, 0x00, 0x8a, 0x19, 0xa9, 0x0c, 0xf0, + 0x00, 0x8a, 0x01, 0xa9, 0x08, 0xf0, 0x00, 0x8a, 0x02, 0xa9, 0x06, 0xf0, + 0x0c, 0x70, 0xe0, 0x7d, 0x00, 0x8a, 0x00, 0xa9, 0xe0, 0x7f, 0x0c, 0x71, + 0xc3, 0x42, 0x80, 0x00, 0xb8, 0x11, 0x19, 0x08, 0x10, 0x06, 0x19, 0x08, + 0x50, 0x05, 0x19, 0x08, 0x90, 0x05, 0x19, 0x08, 0xf1, 0x05, 0x94, 0xe0, + 0x18, 0x8a, 0x0b, 0xf0, 0x19, 0x8a, 0x09, 0xf0, 0x01, 0x8a, 0x07, 0xf0, + 0x02, 0x8a, 0x05, 0xf0, 0x0c, 0x70, 0xe0, 0x7d, 0x00, 0x8a, 0x00, 0xa9, + 0xe0, 0x7f, 0x0c, 0x71, 0xf4, 0xc3, 0x08, 0x45, 0x7a, 0x0a, 0x6f, 0x05, + 0x30, 0x40, 0x02, 0xb8, 0x04, 0x73, 0x6c, 0x20, 0x40, 0x00, 0x02, 0x24, + 0x0f, 0x30, 0x46, 0x09, 0x2f, 0x05, 0xf9, 0x44, 0x0a, 0xed, 0xf1, 0x41, + 0x0a, 0x26, 0x40, 0x13, 0xc1, 0x40, 0xb3, 0x5a, 0x04, 0x19, 0x10, 0x20, + 0xc0, 0x86, 0xfc, 0xee, 0x15, 0x8d, 0xc1, 0xb8, 0x97, 0x08, 0x71, 0x00, + 0xa1, 0x40, 0x0d, 0x8d, 0x9b, 0x08, 0x30, 0x00, 0x4e, 0x70, 0x1d, 0x1d, + 0x43, 0x10, 0x03, 0x95, 0x2f, 0x3a, 0x03, 0x20, 0x04, 0x8d, 0xc1, 0xb8, + 0x8f, 0x08, 0x91, 0x00, 0xa1, 0x40, 0xa7, 0x5a, 0x10, 0x43, 0x50, 0x20, + 0xfe, 0x87, 0x49, 0xf2, 0x3f, 0xde, 0x18, 0xbe, 0x0a, 0x21, 0x80, 0x24, + 0x00, 0x31, 0x80, 0x23, 0x62, 0x41, 0x0a, 0x22, 0x40, 0x24, 0x86, 0x09, + 0x2f, 0x04, 0x10, 0x41, 0x98, 0xf6, 0x86, 0x09, 0x2f, 0x04, 0x42, 0x40, + 0x1d, 0x78, 0x2f, 0x38, 0x03, 0x00, 0xea, 0x09, 0xaf, 0x03, 0x22, 0x41, + 0x0e, 0xf4, 0x04, 0x8d, 0x41, 0x28, 0x81, 0x80, 0xea, 0xf3, 0x1d, 0x8d, + 0x1b, 0x78, 0xd1, 0x09, 0x03, 0x80, 0x06, 0xf0, 0x3b, 0x78, 0x0a, 0x22, + 0x40, 0x24, 0x1d, 0xad, 0x00, 0x32, 0x80, 0x23, 0x62, 0x41, 0x4a, 0x09, + 0x2f, 0x04, 0x10, 0x41, 0x3a, 0x00, 0x0b, 0x00, 0x04, 0x8d, 0x3d, 0x8d, + 0x41, 0x28, 0x82, 0x80, 0xf0, 0xf3, 0x3b, 0x78, 0xdd, 0x0a, 0x03, 0x80, + 0x13, 0xf0, 0x2a, 0x85, 0x40, 0x79, 0xa0, 0x85, 0x10, 0x42, 0x0c, 0x71, + 0x02, 0xf0, 0x0c, 0x70, 0xcd, 0x71, 0x99, 0xed, 0xa5, 0xf0, 0x13, 0x08, + 0x71, 0x00, 0xa1, 0x40, 0xa7, 0x5a, 0x50, 0x20, 0xfe, 0x87, 0x03, 0xf2, + 0x10, 0x42, 0xdd, 0x8d, 0x2f, 0x38, 0x83, 0x03, 0x0a, 0x09, 0x2f, 0x04, + 0x00, 0x32, 0x00, 0x20, 0x05, 0x15, 0xc2, 0x10, 0x10, 0x79, 0x7a, 0x0b, + 0x20, 0x01, 0x40, 0x40, 0x0c, 0x70, 0x52, 0x20, 0x15, 0x20, 0x15, 0x7f, + 0xd3, 0x43, 0x80, 0x7f, 0x00, 0x00, 0x0e, 0x70, 0x02, 0xf0, 0xe5, 0x74, + 0x0d, 0x8d, 0xb3, 0x08, 0x30, 0x00, 0xa1, 0x40, 0xb2, 0x5a, 0x10, 0x41, + 0xde, 0x0d, 0x6f, 0x05, 0xa1, 0x40, 0x0a, 0x26, 0xc0, 0x24, 0x06, 0xe8, + 0x5e, 0x10, 0x00, 0x01, 0x2f, 0x3e, 0x03, 0x20, 0x0b, 0x09, 0x10, 0x20, + 0x15, 0x8d, 0xc1, 0x08, 0x1e, 0x01, 0x16, 0x15, 0x94, 0x10, 0x2e, 0x71, + 0x8e, 0x0f, 0x6f, 0x04, 0x00, 0x3a, 0x80, 0x25, 0xaa, 0x08, 0x0f, 0x04, + 0x00, 0x42, 0x14, 0x70, 0x15, 0x0c, 0x3f, 0x20, 0xca, 0x22, 0x61, 0x00, + 0xfe, 0x0e, 0xe0, 0x00, 0x40, 0x40, 0x09, 0x08, 0x80, 0x00, 0x1b, 0x7a, + 0x32, 0x72, 0xca, 0x21, 0x8d, 0x20, 0x4e, 0x0b, 0x2f, 0x04, 0x22, 0x40, + 0x3d, 0x8d, 0x1a, 0x21, 0x8e, 0x23, 0x29, 0x09, 0xa0, 0x03, 0x00, 0x3a, + 0x12, 0x20, 0x8d, 0xe9, 0x14, 0x15, 0x91, 0x10, 0xff, 0xd8, 0xad, 0x5a, + 0x10, 0x44, 0xb5, 0x5a, 0x00, 0x43, 0x0c, 0x73, 0x22, 0x41, 0x82, 0x42, + 0xd1, 0x5a, 0xdd, 0xad, 0x1e, 0x1d, 0x03, 0x10, 0x00, 0x87, 0xc6, 0x08, + 0xaf, 0x03, 0x42, 0x41, 0xa2, 0x40, 0xc5, 0x20, 0x61, 0x00, 0x3d, 0x08, + 0x3f, 0x00, 0xcd, 0x71, 0x14, 0x15, 0x91, 0x10, 0xb5, 0x5a, 0x00, 0x43, + 0x0c, 0x72, 0x4c, 0x70, 0x22, 0x41, 0xd1, 0x5a, 0x12, 0xf0, 0x1d, 0x8d, + 0x10, 0xe8, 0x14, 0x15, 0x91, 0x10, 0x0c, 0x70, 0xad, 0x5a, 0x10, 0x44, + 0xb5, 0x5a, 0x00, 0x43, 0x0c, 0x73, 0x22, 0x41, 0x82, 0x42, 0xd1, 0x5a, + 0x1e, 0x1d, 0x02, 0x14, 0x1d, 0x1d, 0x02, 0x14, 0xa0, 0x85, 0x1b, 0xed, + 0x01, 0x85, 0x27, 0x08, 0x10, 0x80, 0xb3, 0x5a, 0x10, 0x42, 0x8f, 0xf1, + 0x2f, 0x38, 0x43, 0x04, 0xfa, 0x0f, 0xef, 0x03, 0x00, 0x3a, 0x00, 0x20, + 0x36, 0x8d, 0x2e, 0x71, 0x14, 0x71, 0xca, 0x21, 0x0d, 0x20, 0x39, 0x09, + 0x3f, 0x80, 0x30, 0x44, 0x46, 0x0e, 0xe0, 0x00, 0x22, 0x40, 0x10, 0x41, + 0x94, 0xf1, 0xd4, 0xc7, 0xe4, 0xc3, 0xa1, 0xc1, 0xcb, 0x46, 0x80, 0x00, + 0x74, 0x20, 0xa0, 0x8e, 0xc3, 0x42, 0x80, 0x00, 0xb2, 0x11, 0xc6, 0x0c, + 0x6f, 0x07, 0xa0, 0xaa, 0x20, 0x8e, 0x21, 0x0d, 0x60, 0x10, 0x08, 0x46, + 0x01, 0x1c, 0x43, 0x31, 0x02, 0x1c, 0x43, 0x30, 0x03, 0x1c, 0x42, 0x30, + 0xb5, 0x5a, 0x00, 0x42, 0xfe, 0xd8, 0x40, 0x24, 0x41, 0x30, 0xce, 0x5a, + 0xc1, 0x40, 0xc4, 0xc7, 0xe6, 0xc2, 0x2f, 0x27, 0xbf, 0x03, 0x6f, 0x23, + 0x3f, 0x00, 0x08, 0x47, 0xcb, 0x45, 0x80, 0x00, 0x34, 0x1f, 0x8c, 0x20, + 0x83, 0x8e, 0x25, 0xf2, 0x8c, 0x27, 0xc3, 0x9e, 0xcc, 0x27, 0x82, 0x9f, + 0x00, 0x00, 0xfe, 0x00, 0x3a, 0xf4, 0x0c, 0x70, 0x56, 0x0a, 0x2f, 0x06, + 0x2c, 0x70, 0x62, 0x09, 0xaf, 0x06, 0x0c, 0x70, 0x00, 0x85, 0x4a, 0x24, + 0x00, 0x78, 0x80, 0x20, 0x05, 0x01, 0xa8, 0x20, 0x40, 0x01, 0x0a, 0x18, + 0x15, 0x00, 0xc3, 0x41, 0x80, 0x00, 0x44, 0x1f, 0x40, 0x81, 0x4f, 0x27, + 0x80, 0x10, 0x8c, 0x20, 0x83, 0x8f, 0x46, 0x22, 0x80, 0x02, 0x00, 0xa1, + 0x1e, 0xf4, 0x0c, 0x71, 0x1e, 0x0a, 0x2f, 0x06, 0x2c, 0x70, 0x2a, 0x09, + 0xaf, 0x06, 0x0c, 0x71, 0x00, 0x85, 0x4a, 0x24, 0xc0, 0x77, 0x0e, 0xe0, + 0xa8, 0x20, 0x00, 0x01, 0x0a, 0x18, 0x15, 0x00, 0xc3, 0x41, 0x80, 0x00, + 0x44, 0x1f, 0x00, 0x81, 0x8c, 0x27, 0x83, 0x9f, 0x46, 0x20, 0x40, 0x01, + 0x00, 0xa1, 0x06, 0xf4, 0x00, 0x81, 0x84, 0x20, 0xfe, 0x07, 0x00, 0xa1, + 0x00, 0x1e, 0x03, 0x70, 0x80, 0x00, 0x8c, 0x1f, 0xa0, 0x5a, 0x2f, 0x26, + 0xbf, 0x03, 0xc6, 0xc6, 0xe6, 0xc2, 0x68, 0x47, 0x61, 0x93, 0x08, 0x45, + 0x88, 0x46, 0x10, 0x73, 0xca, 0x25, 0xcd, 0x10, 0x30, 0x75, 0xca, 0x25, + 0x4d, 0x10, 0x40, 0x41, 0xc1, 0x42, 0x1a, 0x08, 0x20, 0x00, 0xa1, 0x40, + 0xa1, 0x40, 0xe1, 0x41, 0x0e, 0x08, 0x20, 0x00, 0xc1, 0x42, 0xa1, 0x40, + 0xc6, 0xc6, 0xe0, 0x78, 0xe4, 0xc2, 0x28, 0x45, 0x6e, 0x0b, 0xef, 0x05, + 0x48, 0x46, 0x16, 0x8e, 0x0d, 0x08, 0x1f, 0x00, 0x16, 0x0d, 0xe0, 0x00, + 0x07, 0x8d, 0x07, 0xad, 0xc4, 0xc6, 0xe0, 0x78, 0xe4, 0xc2, 0xcb, 0x45, + 0x80, 0x00, 0x90, 0x11, 0x40, 0x8d, 0x1e, 0xea, 0x01, 0x8d, 0xc3, 0x41, + 0x80, 0x00, 0x90, 0x20, 0xa6, 0x0e, 0x60, 0x00, 0xc0, 0x89, 0x43, 0x85, + 0x28, 0x8d, 0x81, 0x85, 0x6c, 0x71, 0xc3, 0x44, 0x7f, 0x00, 0x00, 0xbd, + 0xac, 0x70, 0x23, 0x20, 0x00, 0x03, 0xc1, 0x40, 0x08, 0x8d, 0x23, 0x85, + 0x40, 0x8d, 0x04, 0x71, 0x08, 0xad, 0x01, 0x69, 0x03, 0xa5, 0x09, 0x6a, + 0x00, 0xad, 0xc4, 0xc6, 0xa2, 0x0d, 0x8f, 0x07, 0xc4, 0xc6, 0xe0, 0x78, + 0xe6, 0xc0, 0x5f, 0x21, 0x03, 0x06, 0xc3, 0x42, 0x80, 0x00, 0x48, 0x1f, + 0x7d, 0x62, 0x81, 0x85, 0x62, 0x62, 0xcb, 0x44, 0x7f, 0x00, 0xfc, 0xe5, + 0x2b, 0x0a, 0xfe, 0x05, 0xc3, 0x68, 0x44, 0x85, 0x2b, 0x64, 0xcb, 0x43, + 0x00, 0x00, 0xff, 0xff, 0x71, 0x72, 0xca, 0x22, 0xcd, 0x02, 0x60, 0xa8, + 0x01, 0x18, 0x03, 0x03, 0x42, 0xa8, 0x28, 0xba, 0xc7, 0x68, 0x43, 0xa8, + 0x0a, 0xdf, 0x04, 0x74, 0x02, 0xf0, 0xed, 0x76, 0x42, 0x85, 0x99, 0x61, + 0xa2, 0x89, 0x41, 0x2a, 0x0c, 0x06, 0x41, 0x2a, 0x03, 0x04, 0xa0, 0xa8, + 0x82, 0xa8, 0x61, 0xa8, 0x04, 0x89, 0x41, 0x2a, 0x0b, 0x02, 0x00, 0xae, + 0x02, 0x1e, 0xc2, 0x12, 0xe1, 0x40, 0x41, 0xae, 0xc6, 0xc4, 0xe0, 0x78, + 0xf2, 0xc3, 0xa9, 0xc1, 0x00, 0x16, 0x12, 0x70, 0x80, 0x00, 0x44, 0x1f, + 0x5f, 0x21, 0x14, 0x06, 0x8a, 0x21, 0x03, 0x22, 0x84, 0x22, 0x02, 0xa0, + 0x08, 0x46, 0x30, 0x40, 0xd3, 0x43, 0x80, 0x00, 0x34, 0x1f, 0x00, 0x24, + 0x8f, 0x2f, 0x80, 0x00, 0x58, 0x1f, 0xca, 0x21, 0xe2, 0x26, 0x2f, 0x27, + 0x3f, 0x00, 0x6f, 0x23, 0x3f, 0x00, 0x05, 0xf0, 0x80, 0xc1, 0x02, 0x40, + 0xb9, 0x5a, 0x23, 0x86, 0x01, 0x86, 0x10, 0x49, 0x93, 0x08, 0x65, 0x04, + 0xad, 0x70, 0x01, 0x86, 0x19, 0xe8, 0x1d, 0x08, 0x30, 0x20, 0x22, 0x86, + 0xc3, 0x40, 0x80, 0x00, 0xac, 0x1f, 0x00, 0x90, 0x23, 0x09, 0x05, 0x00, + 0xc3, 0x40, 0x80, 0x00, 0xa4, 0x1f, 0x0b, 0xf0, 0xc3, 0x40, 0x80, 0x00, + 0xa0, 0x1f, 0x00, 0x90, 0x0f, 0x09, 0x05, 0x00, 0xc3, 0x40, 0x80, 0x00, + 0x98, 0x1f, 0x00, 0x80, 0x2d, 0x60, 0x5f, 0x25, 0x80, 0x12, 0xbf, 0xe5, + 0x05, 0xf7, 0x66, 0x41, 0x19, 0x61, 0x19, 0x49, 0x04, 0xf0, 0xc3, 0x70, + 0x80, 0x00, 0x3b, 0x15, 0x00, 0x88, 0x80, 0xc2, 0xc1, 0x41, 0x49, 0x20, + 0x83, 0x08, 0x02, 0x40, 0x42, 0x0e, 0xaf, 0x06, 0x70, 0x45, 0x05, 0xed, + 0x4d, 0x0d, 0x30, 0x20, 0x70, 0xd8, 0x00, 0x87, 0xa2, 0x70, 0x00, 0xa7, + 0x20, 0xc0, 0xbf, 0xe0, 0x80, 0x07, 0xcd, 0xff, 0x66, 0x41, 0x5f, 0x20, + 0x80, 0x02, 0x38, 0x60, 0x48, 0x88, 0x22, 0x90, 0x80, 0xba, 0x71, 0x09, + 0x30, 0x80, 0x48, 0xa8, 0x24, 0x77, 0x22, 0xb0, 0xb2, 0xf1, 0x1f, 0x0a, + 0x30, 0x20, 0x00, 0x87, 0x34, 0x24, 0x81, 0x2f, 0x80, 0x00, 0x84, 0x28, + 0x07, 0xe9, 0x00, 0x20, 0x90, 0x2f, 0x80, 0x00, 0xb0, 0x11, 0x00, 0x18, + 0x43, 0x20, 0xd2, 0xc7, 0xab, 0x20, 0xe0, 0x0c, 0x0c, 0x70, 0x6f, 0x26, + 0x3f, 0x04, 0x6f, 0x23, 0x3f, 0x00, 0xd2, 0xc7, 0xe4, 0xc3, 0xa3, 0xc1, + 0x5f, 0x21, 0x02, 0x06, 0x28, 0x46, 0xc3, 0x41, 0x80, 0x00, 0x48, 0x1f, + 0x3a, 0x62, 0x24, 0x82, 0x08, 0x45, 0x1b, 0xe9, 0x01, 0x82, 0x00, 0x82, + 0x6c, 0x70, 0x1b, 0x08, 0xfe, 0x05, 0x97, 0xbb, 0x01, 0x82, 0x20, 0x82, + 0x7d, 0x78, 0x0b, 0x79, 0x05, 0xf2, 0x78, 0x26, 0x00, 0x10, 0x04, 0x71, + 0xd9, 0x5a, 0x80, 0xc0, 0x5a, 0x0e, 0xef, 0xff, 0xc1, 0x41, 0x00, 0x43, + 0x80, 0xc2, 0xc1, 0x40, 0x1a, 0x0e, 0xaf, 0x06, 0xa1, 0x41, 0x6f, 0x26, + 0x3f, 0x04, 0x6f, 0x23, 0x3f, 0x00, 0xc4, 0xc7, 0xec, 0xc2, 0x60, 0x46, + 0x40, 0x47, 0x30, 0x40, 0x10, 0x41, 0xed, 0x70, 0xcb, 0x45, 0x80, 0x00, + 0x74, 0x28, 0xcd, 0x70, 0xef, 0x79, 0x32, 0x21, 0x80, 0x0f, 0x80, 0x00, + 0xb0, 0x11, 0xa9, 0x08, 0x30, 0x00, 0x20, 0x44, 0x48, 0x95, 0x09, 0x6a, + 0xcc, 0xe0, 0x9c, 0x00, 0x0d, 0x00, 0xdb, 0x47, 0x80, 0x00, 0xa0, 0x1f, + 0xcb, 0x44, 0x80, 0x00, 0x34, 0x1f, 0xc3, 0x43, 0x80, 0x00, 0xa4, 0x1f, + 0xc3, 0x41, 0x80, 0x00, 0xac, 0x1f, 0xc3, 0x40, 0x80, 0x00, 0x98, 0x1f, + 0x00, 0x14, 0x05, 0x10, 0x00, 0x13, 0x09, 0x00, 0x00, 0x11, 0x08, 0x01, + 0x00, 0x10, 0x0b, 0x00, 0x00, 0x17, 0x1f, 0x31, 0xcd, 0x70, 0x01, 0x85, + 0xd0, 0x7b, 0x33, 0x0b, 0x25, 0x00, 0x2c, 0x70, 0x02, 0x85, 0x0c, 0x15, + 0x12, 0x10, 0x78, 0x60, 0x10, 0x7c, 0x0b, 0x0c, 0x84, 0x14, 0x03, 0x85, + 0x10, 0x4c, 0x13, 0x0c, 0x30, 0x00, 0x10, 0x78, 0x13, 0x08, 0x05, 0x02, + 0x32, 0x21, 0x01, 0x10, 0x05, 0xf0, 0x0b, 0x08, 0xc5, 0x07, 0x32, 0x23, + 0x01, 0x10, 0x5f, 0x21, 0x80, 0x02, 0xbf, 0xe1, 0x04, 0xf7, 0xa0, 0x70, + 0x09, 0xe0, 0x05, 0xf0, 0xc3, 0x70, 0x80, 0x00, 0x3b, 0x15, 0x0c, 0xe9, + 0x00, 0x88, 0x0a, 0xe8, 0x50, 0x79, 0x11, 0x09, 0x24, 0x00, 0x12, 0x49, + 0x7e, 0x60, 0x2f, 0x26, 0x88, 0xf0, 0xd3, 0xf5, 0xc8, 0xb5, 0xcd, 0x71, + 0xe5, 0x71, 0xef, 0x78, 0x4d, 0x08, 0xb4, 0x80, 0x18, 0xe5, 0x22, 0x40, + 0x02, 0x41, 0xe0, 0x42, 0xae, 0x08, 0xaf, 0x06, 0xc0, 0x43, 0x0d, 0xee, + 0x10, 0x79, 0x07, 0xf0, 0x04, 0x71, 0x22, 0x72, 0x10, 0x79, 0x00, 0x1a, + 0x03, 0x00, 0xf9, 0x09, 0x24, 0x84, 0x10, 0x7a, 0x02, 0x40, 0x10, 0x78, + 0xcc, 0xc6, 0xe0, 0x78, 0xe4, 0xc2, 0xcb, 0x46, 0x80, 0x00, 0x4c, 0x12, + 0x21, 0x86, 0x70, 0x8e, 0x4c, 0x8e, 0x08, 0x45, 0x01, 0x69, 0x05, 0x22, + 0xfe, 0x80, 0x01, 0xa6, 0x07, 0xf2, 0x2c, 0x70, 0xfa, 0x08, 0x20, 0x00, + 0xa1, 0x40, 0x00, 0x43, 0x0f, 0xf0, 0x2c, 0x71, 0xee, 0x08, 0x20, 0x00, + 0xa1, 0x40, 0x01, 0x86, 0x0b, 0x08, 0x71, 0x00, 0x04, 0x6d, 0x1e, 0x0b, + 0x0f, 0xff, 0xc3, 0x40, 0x80, 0x00, 0x70, 0x12, 0x60, 0x88, 0x2f, 0x26, + 0xc7, 0xf0, 0x0c, 0xf4, 0x8a, 0x21, 0x0e, 0x0e, 0x04, 0x6d, 0xb9, 0x61, + 0x00, 0x19, 0x83, 0x00, 0xfe, 0x0a, 0x2f, 0xff, 0x04, 0x1e, 0x01, 0x10, + 0x25, 0x86, 0x01, 0x86, 0x29, 0x09, 0x05, 0x00, 0xc3, 0x40, 0x80, 0x00, + 0xa8, 0x3e, 0x20, 0x80, 0x41, 0x80, 0x02, 0x80, 0xe5, 0x1d, 0x58, 0x10, + 0xe6, 0x1d, 0x98, 0x10, 0xe7, 0x1d, 0x18, 0x10, 0x80, 0x25, 0x0e, 0x1e, + 0x00, 0x1d, 0x03, 0x10, 0x04, 0x1e, 0x01, 0x10, 0x6d, 0x78, 0xc4, 0xc6, + 0xe2, 0xc3, 0xa6, 0xc1, 0x60, 0x81, 0x08, 0x45, 0x04, 0x74, 0x40, 0xc3, + 0x61, 0x81, 0x41, 0xc3, 0x62, 0x81, 0x42, 0xc3, 0x63, 0x81, 0x43, 0xc3, + 0x64, 0x81, 0x44, 0xc3, 0x65, 0x81, 0x80, 0xc1, 0x62, 0x09, 0x2f, 0xff, + 0x45, 0xc3, 0x80, 0x25, 0xce, 0x1e, 0x0c, 0x70, 0x00, 0x1d, 0x43, 0x10, + 0xc2, 0xc7, 0xe0, 0x78, 0xe4, 0xc2, 0xcb, 0x46, 0x80, 0x00, 0x4c, 0x12, + 0x21, 0x86, 0x5a, 0x8e, 0x08, 0x45, 0x01, 0x69, 0x0b, 0x0a, 0xf4, 0x00, + 0x01, 0xa6, 0x04, 0x1e, 0x01, 0x10, 0x2c, 0x71, 0x3a, 0x08, 0x20, 0x00, + 0xa1, 0x40, 0x2f, 0x26, 0x07, 0xf0, 0x0c, 0xf4, 0x39, 0x8e, 0x15, 0x09, + 0xd1, 0x00, 0x80, 0x25, 0x0e, 0x1e, 0x00, 0x1d, 0x03, 0x11, 0x04, 0x1e, + 0x01, 0x10, 0xc4, 0xc6, 0x20, 0x85, 0x41, 0x86, 0x80, 0x21, 0x0d, 0x00, + 0x20, 0x91, 0x0f, 0x09, 0xa5, 0x00, 0x80, 0x25, 0x4e, 0x1e, 0x00, 0x1d, + 0x43, 0x10, 0xc4, 0xc6, 0xea, 0xc3, 0xa9, 0xc1, 0x10, 0x40, 0xcb, 0x46, + 0x80, 0x00, 0x5c, 0x12, 0x08, 0x8e, 0x00, 0x10, 0x0d, 0x20, 0x00, 0x20, + 0x8f, 0x2f, 0x00, 0x00, 0x78, 0x03, 0x57, 0x08, 0x70, 0x00, 0x30, 0x41, + 0x63, 0x87, 0x42, 0x87, 0x21, 0x87, 0x00, 0x87, 0x8a, 0x24, 0x0d, 0x0e, + 0xd6, 0x0f, 0xaf, 0x09, 0x00, 0x24, 0x04, 0x04, 0x63, 0x87, 0x42, 0x87, + 0x21, 0x87, 0x00, 0x87, 0x16, 0x0f, 0xaf, 0x09, 0x40, 0x24, 0x04, 0x30, + 0x28, 0x8e, 0x40, 0x20, 0x00, 0x21, 0x11, 0x09, 0x31, 0x01, 0xa1, 0x42, + 0x80, 0xc1, 0x80, 0x22, 0x0a, 0x07, 0x0b, 0xf0, 0x0d, 0x09, 0xf1, 0x00, + 0x80, 0xc1, 0x80, 0x22, 0x08, 0x03, 0x05, 0xf0, 0x80, 0xc1, 0x80, 0x22, + 0x05, 0x0f, 0x6a, 0x09, 0x0f, 0xff, 0xe2, 0x0f, 0xcf, 0xfe, 0x14, 0x8e, + 0x28, 0x8e, 0x15, 0xe8, 0x00, 0x8e, 0x79, 0x21, 0x02, 0x20, 0x78, 0x20, + 0x00, 0x00, 0x0b, 0x7a, 0x0d, 0xf4, 0x37, 0x09, 0x70, 0x00, 0xed, 0x71, + 0x2f, 0x09, 0x30, 0x01, 0x8a, 0x21, 0x0d, 0x08, 0x40, 0x20, 0x00, 0x21, + 0x40, 0x25, 0x02, 0x1e, 0x0c, 0xf0, 0x1f, 0x09, 0x70, 0x00, 0xed, 0x70, + 0x17, 0x09, 0x30, 0x01, 0x8a, 0x21, 0x0d, 0x08, 0x40, 0x20, 0x00, 0x21, + 0x40, 0x25, 0x02, 0x15, 0x76, 0x0a, 0x2f, 0x0d, 0x02, 0x71, 0xcb, 0x45, + 0x80, 0x00, 0xa8, 0x3e, 0xc3, 0x40, 0x80, 0x00, 0x40, 0x3b, 0x26, 0x09, + 0x2f, 0x0d, 0xa1, 0x41, 0x06, 0x86, 0x07, 0xa5, 0xe1, 0x40, 0xca, 0xc7, + 0xe2, 0xc2, 0x2c, 0x70, 0x2a, 0x0f, 0xef, 0xff, 0x08, 0x45, 0x2f, 0x23, + 0x07, 0x80, 0xc3, 0x42, 0x80, 0x00, 0x4c, 0x12, 0x0b, 0xf4, 0x39, 0x8a, + 0x13, 0x09, 0xf0, 0x00, 0xa1, 0x41, 0x80, 0x21, 0x0e, 0x0e, 0x00, 0x19, + 0x83, 0x01, 0x04, 0x1a, 0x01, 0x00, 0x13, 0x0b, 0x71, 0x00, 0x80, 0x25, + 0x0e, 0x1e, 0x00, 0x1d, 0x83, 0x11, 0x04, 0x1a, 0x01, 0x00, 0xc2, 0xc6, + 0xf1, 0xc0, 0xc3, 0x42, 0x80, 0x00, 0x4c, 0x12, 0x21, 0x82, 0x1c, 0x1a, + 0x43, 0x00, 0x24, 0x71, 0x19, 0x09, 0x74, 0x01, 0x21, 0xa2, 0x8a, 0x21, + 0x0e, 0x0e, 0x19, 0x61, 0x00, 0x19, 0x83, 0x00, 0x12, 0x08, 0x20, 0x00, + 0x04, 0x1a, 0x01, 0x00, 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, + 0xe4, 0xc3, 0xa9, 0xc1, 0x00, 0x20, 0x8d, 0x0f, 0x00, 0x00, 0x60, 0x03, + 0x08, 0x46, 0x00, 0x85, 0x40, 0x86, 0x80, 0xc1, 0x40, 0xc0, 0x01, 0x85, + 0x54, 0x22, 0x82, 0x0b, 0x41, 0xc0, 0x02, 0x85, 0x42, 0xc0, 0x0d, 0x85, + 0x43, 0xc0, 0x0e, 0x85, 0x44, 0xc0, 0x0f, 0x85, 0x45, 0xc0, 0x0e, 0x0e, + 0xef, 0xff, 0xc1, 0x40, 0x8a, 0x20, 0x0e, 0x0f, 0x1e, 0x66, 0x00, 0x8e, + 0x2f, 0x08, 0x71, 0x00, 0x4a, 0x24, 0xc0, 0x70, 0xc3, 0x40, 0x80, 0x00, + 0x3c, 0x3b, 0x04, 0x10, 0x01, 0x04, 0x56, 0x21, 0x81, 0x0e, 0x86, 0xc2, + 0xa8, 0x20, 0x80, 0x01, 0x1c, 0x11, 0x03, 0x04, 0x04, 0x1a, 0xd0, 0x00, + 0x32, 0x0b, 0x2f, 0x0d, 0x86, 0xc1, 0x00, 0x1e, 0x03, 0x10, 0x0c, 0x70, + 0x0d, 0xa5, 0x0e, 0xa5, 0x0f, 0xa5, 0xc4, 0xc7, 0x00, 0x41, 0x84, 0x81, + 0x65, 0x81, 0x46, 0x81, 0xe8, 0x19, 0x18, 0x03, 0xe9, 0x19, 0xd8, 0x00, + 0xea, 0x19, 0x98, 0x00, 0x80, 0x21, 0xce, 0x0e, 0x0c, 0x70, 0xe0, 0x7f, + 0x00, 0x19, 0x03, 0x00, 0xe2, 0xc2, 0x28, 0x45, 0xb3, 0x5a, 0x5a, 0x25, + 0x81, 0x12, 0x00, 0x16, 0x02, 0x70, 0x80, 0x00, 0x34, 0x1f, 0x08, 0x45, + 0x0c, 0x70, 0x59, 0x61, 0x41, 0x91, 0x16, 0xea, 0x07, 0x89, 0x84, 0xe8, + 0x0c, 0x71, 0x07, 0xa9, 0x2f, 0x38, 0x03, 0x00, 0x8e, 0x08, 0xef, 0x03, + 0x00, 0x3d, 0x00, 0x10, 0x50, 0x25, 0xfe, 0x97, 0x2c, 0x70, 0xca, 0x21, + 0x62, 0x00, 0x78, 0x20, 0x02, 0x00, 0x4b, 0x79, 0xca, 0x20, 0x62, 0x00, + 0xc2, 0xc6, 0xe0, 0x78, 0x05, 0xe8, 0x00, 0x18, 0x84, 0x0f, 0x00, 0x00, + 0xe1, 0x07, 0x06, 0xe9, 0x00, 0x19, 0x82, 0x0f, 0x00, 0x00, 0x09, 0x00, + 0x05, 0xea, 0x00, 0x1a, 0x82, 0x0f, 0x00, 0x00, 0x01, 0x00, 0x06, 0xeb, + 0x00, 0x1b, 0x82, 0x0f, 0x00, 0x00, 0x07, 0x00, 0x0d, 0x0c, 0x10, 0x00, + 0x00, 0x1c, 0x82, 0x0f, 0x00, 0x00, 0x38, 0x00, 0xb4, 0x70, 0xe0, 0x7c, + 0x00, 0x1d, 0x82, 0x0f, 0x00, 0x00, 0x11, 0x00, 0xe0, 0x7e, 0xe0, 0x78, + 0xaa, 0x20, 0xe1, 0x07, 0xaa, 0x21, 0xe1, 0x07, 0x30, 0x70, 0xfc, 0xf5, + 0xe0, 0x7f, 0x10, 0x78, 0xe2, 0xc2, 0x6a, 0x0c, 0xaf, 0x05, 0x08, 0x45, + 0x00, 0x42, 0x06, 0xe8, 0x35, 0x8d, 0x0b, 0x09, 0x3f, 0x01, 0x0c, 0x71, + 0x40, 0x40, 0xc2, 0xc6, 0xe2, 0xc2, 0x35, 0x88, 0xc1, 0xb9, 0x29, 0x09, + 0x51, 0x00, 0x2d, 0x88, 0x13, 0xe9, 0xbd, 0x88, 0x05, 0x10, 0xc0, 0x00, + 0xb5, 0x70, 0x42, 0x0a, 0xe0, 0x00, 0xca, 0x25, 0x61, 0x10, 0x2f, 0x39, + 0x43, 0x03, 0x2f, 0x38, 0x03, 0x00, 0x00, 0x38, 0x40, 0x00, 0xc2, 0xc6, + 0xa2, 0x0b, 0x0f, 0x05, 0xc2, 0xc6, 0x0c, 0x70, 0xc2, 0xc6, 0xe0, 0x78, + 0xec, 0xc3, 0xa1, 0xc1, 0x08, 0x46, 0x16, 0x88, 0xa8, 0x47, 0x88, 0x45, + 0x70, 0x40, 0x50, 0x41, 0x19, 0x08, 0x3e, 0x00, 0x30, 0x42, 0xc1, 0x40, + 0x42, 0x41, 0x22, 0x42, 0x02, 0x43, 0xa1, 0x44, 0xea, 0x0b, 0x2f, 0x05, + 0xe1, 0x45, 0xcc, 0xc7, 0xf2, 0x08, 0x2f, 0x05, 0xc1, 0x40, 0x42, 0x41, + 0x22, 0x42, 0x02, 0x43, 0xa1, 0x44, 0xd6, 0x0b, 0x2f, 0x05, 0xe1, 0x45, + 0x40, 0x24, 0x84, 0x30, 0xc1, 0x40, 0x42, 0x41, 0x22, 0x42, 0x02, 0x43, + 0xc2, 0x0b, 0x2f, 0x05, 0xe1, 0x45, 0x20, 0x95, 0x02, 0x14, 0x02, 0x31, + 0x20, 0x40, 0x01, 0x0a, 0x24, 0x00, 0x3d, 0x79, 0x00, 0xb5, 0xcc, 0xc7, + 0x42, 0x20, 0x41, 0x06, 0x0d, 0x09, 0x95, 0x00, 0xc3, 0x40, 0x60, 0x00, + 0x5c, 0x1a, 0xe0, 0x7e, 0x17, 0x08, 0x95, 0x05, 0xc3, 0x41, 0x30, 0x00, + 0x08, 0x00, 0x0f, 0x09, 0x0e, 0x00, 0xc3, 0x40, 0x60, 0x00, 0xd8, 0x13, + 0xe0, 0x7e, 0xc3, 0x40, 0x60, 0x00, 0x54, 0x0d, 0xe0, 0x7e, 0xe0, 0x78, + 0xf1, 0xc0, 0xc3, 0x41, 0x80, 0x00, 0xe8, 0x11, 0x40, 0x81, 0x2c, 0x70, + 0xcf, 0x5a, 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe4, 0xc3, 0xa5, 0xc1, + 0x08, 0x45, 0x80, 0xc0, 0x1a, 0x08, 0x2f, 0x08, 0x80, 0xc6, 0x36, 0x08, + 0xef, 0x07, 0x40, 0x24, 0xc0, 0x34, 0x13, 0x14, 0x80, 0x30, 0x2f, 0x38, + 0x03, 0x00, 0x43, 0xc0, 0x4a, 0x20, 0x00, 0x00, 0x20, 0x86, 0x04, 0x71, + 0x00, 0x39, 0x81, 0x0f, 0x20, 0x3c, 0x12, 0xac, 0xf5, 0x08, 0xf2, 0x80, + 0x04, 0x1e, 0x50, 0x10, 0x00, 0x16, 0x80, 0x70, 0x80, 0x00, 0xe4, 0x1f, + 0x0d, 0x08, 0x3e, 0x01, 0xfa, 0xd8, 0x48, 0x85, 0x80, 0xc1, 0xce, 0x5a, + 0xc3, 0x40, 0x80, 0x00, 0xc0, 0x13, 0x0a, 0x08, 0x6f, 0xfe, 0x80, 0xc1, + 0x84, 0x20, 0x42, 0x00, 0x8c, 0x20, 0x42, 0x80, 0x0d, 0xf4, 0x28, 0x85, + 0xc3, 0x40, 0x80, 0x00, 0xe8, 0x11, 0x20, 0xa0, 0x48, 0x85, 0x2c, 0x70, + 0xa1, 0x40, 0xcf, 0x5a, 0x2c, 0x70, 0xa1, 0x40, 0xdf, 0x5a, 0x0c, 0x70, + 0xc4, 0xc7, 0xe0, 0x78, 0xf1, 0xc0, 0xc3, 0x40, 0x80, 0x00, 0xc0, 0x13, + 0xce, 0x0f, 0x0f, 0xfe, 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, + 0xe4, 0xc2, 0xa2, 0x0e, 0xef, 0x04, 0x08, 0x45, 0xbe, 0x0e, 0xef, 0x04, + 0x08, 0x46, 0x00, 0x42, 0x0c, 0x71, 0xc1, 0x41, 0xb1, 0x5a, 0x72, 0x15, + 0x81, 0x10, 0xc6, 0xb9, 0x72, 0x1d, 0x42, 0x10, 0x05, 0xe8, 0x72, 0x10, + 0xc0, 0x00, 0x11, 0x08, 0x12, 0x00, 0x04, 0x8d, 0x2c, 0x74, 0x62, 0x09, + 0x6f, 0xff, 0x4c, 0x70, 0x0c, 0x70, 0xc4, 0xc6, 0xe4, 0xc2, 0x6a, 0x0e, + 0xef, 0x04, 0x08, 0x45, 0x86, 0x0e, 0xef, 0x04, 0x08, 0x46, 0x00, 0x42, + 0x0c, 0x71, 0xc1, 0x41, 0xb1, 0x5a, 0x72, 0x15, 0xc1, 0x10, 0x1f, 0x09, + 0x12, 0x00, 0x06, 0xe8, 0x72, 0x10, 0xc0, 0x00, 0x13, 0x08, 0x12, 0x00, + 0x04, 0x8d, 0x2c, 0x74, 0x2a, 0x09, 0x6f, 0xff, 0x4c, 0x71, 0x72, 0x15, + 0x81, 0x10, 0x87, 0xb9, 0x0c, 0x70, 0x72, 0x1d, 0x42, 0x10, 0xc4, 0xc6, + 0xc3, 0x40, 0x80, 0x00, 0x30, 0x12, 0xe0, 0x7f, 0x00, 0x90, 0xe0, 0x78, + 0xc3, 0x40, 0x80, 0x00, 0x38, 0x12, 0xe0, 0x7f, 0x00, 0x80, 0xe0, 0x78, + 0xf1, 0xc0, 0x20, 0x45, 0x72, 0x11, 0xc1, 0x00, 0x1f, 0x09, 0x33, 0x00, + 0x0c, 0xd9, 0xc3, 0x42, 0x80, 0x00, 0x30, 0x12, 0x03, 0xa2, 0x04, 0x15, + 0x80, 0x00, 0x10, 0xe2, 0x6c, 0x76, 0xc3, 0x44, 0x7f, 0x00, 0xe8, 0xc5, + 0xc0, 0x5a, 0xd1, 0xc0, 0xe0, 0x7e, 0xe0, 0x78, 0xc3, 0x40, 0x80, 0x00, + 0x48, 0x12, 0xe0, 0x7f, 0x00, 0x80, 0xe0, 0x78, 0xc3, 0x40, 0x80, 0x00, + 0x34, 0x12, 0xe0, 0x7f, 0x00, 0x80, 0xe0, 0x78, 0xe6, 0xc2, 0x28, 0x43, + 0x9e, 0xe8, 0xc3, 0x40, 0x80, 0x00, 0x30, 0x12, 0x11, 0x10, 0xc1, 0x00, + 0x90, 0x88, 0x13, 0x10, 0xcf, 0x00, 0x15, 0x10, 0xc2, 0x00, 0xb4, 0x88, + 0xd2, 0x88, 0x63, 0x80, 0x40, 0x29, 0x00, 0x02, 0x85, 0x78, 0xcb, 0x44, + 0x80, 0x00, 0x10, 0x1b, 0x00, 0xa4, 0x40, 0x2f, 0x00, 0x12, 0x08, 0xba, + 0xc5, 0x78, 0x01, 0xa4, 0xa5, 0x7a, 0x61, 0x40, 0x60, 0x7b, 0x42, 0xa4, + 0xc6, 0xc6, 0xe0, 0x78, 0xe4, 0xc3, 0xa1, 0xc1, 0x08, 0x45, 0x04, 0x88, + 0x2c, 0x70, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0xbf, 0x5a, 0x22, 0xde, + 0x92, 0xe8, 0x03, 0x14, 0x80, 0x30, 0x21, 0xde, 0x6c, 0x20, 0x80, 0x00, + 0x8c, 0x20, 0x03, 0x84, 0x0a, 0xf4, 0x1a, 0x0e, 0x2f, 0xff, 0x04, 0x8d, + 0x86, 0xe8, 0x0c, 0x70, 0x52, 0x08, 0x20, 0x00, 0xa1, 0x41, 0xcd, 0x70, + 0xc1, 0x40, 0xc4, 0xc7, 0xe6, 0xc2, 0x28, 0x46, 0x2c, 0x70, 0xc3, 0x42, + 0x7f, 0x00, 0x26, 0xe6, 0xa3, 0x92, 0x0f, 0x09, 0xf5, 0x00, 0x08, 0xe2, + 0xf9, 0x0d, 0x24, 0x90, 0x24, 0x71, 0x02, 0x12, 0x00, 0x00, 0xcb, 0x47, + 0x80, 0x00, 0x30, 0x12, 0x01, 0xa7, 0xa0, 0xb7, 0x20, 0x8a, 0x42, 0x0a, + 0xef, 0x06, 0x04, 0x8e, 0x02, 0x87, 0x0b, 0x08, 0xb5, 0x00, 0x0c, 0x71, + 0xa2, 0x5a, 0x0c, 0x70, 0xc1, 0x41, 0xd7, 0x5a, 0xa1, 0x40, 0xc6, 0xc6, + 0xe6, 0xc2, 0x28, 0x45, 0x08, 0x47, 0xcb, 0x46, 0x80, 0x00, 0x30, 0x12, + 0x8c, 0x20, 0xc3, 0x8f, 0x13, 0xf2, 0x35, 0x0f, 0x30, 0x14, 0x8c, 0x27, + 0x02, 0x90, 0x0f, 0xf2, 0x3b, 0x0f, 0xb5, 0x10, 0x2c, 0x70, 0x56, 0x0b, + 0xef, 0x06, 0x04, 0x8d, 0x72, 0x15, 0x80, 0x10, 0xc6, 0xb8, 0x72, 0x1d, + 0x02, 0x10, 0xe2, 0xa6, 0x0e, 0xf0, 0x04, 0x8d, 0x3e, 0x0b, 0xef, 0x06, + 0xff, 0xd9, 0xff, 0xd8, 0x02, 0xa6, 0x08, 0xf0, 0x0e, 0x0f, 0x2f, 0xff, + 0x04, 0x8d, 0x00, 0x41, 0xa1, 0x40, 0xd0, 0x5a, 0x0c, 0x70, 0xa1, 0x41, + 0xd6, 0x5a, 0x02, 0x86, 0xc6, 0xc6, 0xe0, 0x78, 0xea, 0xc3, 0xa1, 0xc1, + 0xad, 0x70, 0xcb, 0x46, 0x7f, 0x00, 0x4c, 0xe6, 0x28, 0x47, 0x10, 0x41, + 0x03, 0x1c, 0x42, 0x33, 0x0a, 0x20, 0x80, 0x23, 0x00, 0x96, 0x22, 0x41, + 0x7a, 0x0c, 0xaf, 0x03, 0x2f, 0x38, 0x03, 0x00, 0x45, 0xf6, 0xa5, 0x71, + 0xf1, 0x0d, 0x34, 0x91, 0xc5, 0x74, 0x04, 0x8f, 0x42, 0xd9, 0x40, 0x24, + 0xc2, 0x30, 0x6c, 0x71, 0xbf, 0x5a, 0x15, 0x20, 0x50, 0x23, 0x03, 0x14, + 0x81, 0x30, 0x02, 0x10, 0x80, 0x20, 0x6c, 0x21, 0xc1, 0x00, 0xc3, 0xb8, + 0x25, 0x78, 0x03, 0x1c, 0x02, 0x30, 0x04, 0x8f, 0x42, 0xd9, 0x40, 0x24, + 0xc2, 0x30, 0x6c, 0x71, 0xc1, 0x5a, 0xcb, 0x45, 0x80, 0x00, 0x30, 0x12, + 0x02, 0x85, 0x0b, 0x08, 0xb5, 0x00, 0x0c, 0x71, 0xa2, 0x5a, 0x04, 0x8f, + 0x76, 0xd9, 0x40, 0x24, 0xc2, 0x30, 0x6c, 0x71, 0xbf, 0x5a, 0x00, 0x10, + 0x03, 0x21, 0x0c, 0x70, 0x2f, 0x3c, 0xc3, 0x10, 0x03, 0x14, 0xc1, 0x30, + 0x6c, 0x79, 0x34, 0x79, 0x2f, 0x3a, 0x43, 0x00, 0x2f, 0x39, 0x83, 0x0f, + 0x00, 0x00, 0x00, 0x32, 0x00, 0x3a, 0x41, 0x00, 0x01, 0x34, 0x42, 0x10, + 0xc3, 0x41, 0x80, 0x00, 0x1c, 0x1b, 0x40, 0xa1, 0x2f, 0x3a, 0xc3, 0x00, + 0xe1, 0x41, 0x46, 0xa5, 0xd8, 0x5a, 0x06, 0x85, 0xca, 0xc7, 0xe0, 0x78, + 0xec, 0xc3, 0xcb, 0x47, 0x80, 0x00, 0x44, 0x1f, 0x00, 0x87, 0xe7, 0xb8, + 0xec, 0x01, 0x22, 0x00, 0xa2, 0xc1, 0xab, 0x5a, 0xd3, 0x40, 0x80, 0x00, + 0x54, 0x1f, 0xad, 0x70, 0x40, 0x20, 0x8e, 0x22, 0xaf, 0x78, 0xac, 0x5a, + 0xa5, 0x71, 0x18, 0x1e, 0x14, 0x10, 0xaf, 0x78, 0xf5, 0x08, 0x94, 0x80, + 0xcb, 0x46, 0x80, 0x00, 0x8c, 0x1f, 0x00, 0x1e, 0x03, 0x10, 0xc9, 0x5a, + 0x00, 0x87, 0xe2, 0xb8, 0x17, 0xf2, 0x22, 0x10, 0x00, 0x21, 0x14, 0x70, + 0x13, 0xf4, 0x06, 0x44, 0x1e, 0x40, 0x0b, 0x08, 0xdf, 0x05, 0x1c, 0x18, + 0x01, 0x20, 0x6f, 0x26, 0x3f, 0x04, 0x6f, 0x23, 0x3f, 0x00, 0x00, 0x8e, + 0xa4, 0xb8, 0x00, 0xae, 0x00, 0x87, 0xa2, 0xb8, 0x00, 0xa7, 0x6f, 0x26, + 0xff, 0x05, 0x00, 0x87, 0x4b, 0x20, 0x80, 0x84, 0x04, 0xf2, 0x00, 0x8e, + 0x83, 0xb8, 0x00, 0xae, 0x00, 0x87, 0x4b, 0x20, 0x40, 0x84, 0x07, 0xf2, + 0xc4, 0x5a, 0x85, 0xe8, 0x00, 0x8e, 0x86, 0xb8, 0x00, 0xae, 0x00, 0x8e, + 0xab, 0x20, 0x60, 0x06, 0xaa, 0x20, 0x20, 0x0e, 0xaa, 0x21, 0x20, 0x0e, + 0xf9, 0x08, 0x41, 0x80, 0xc5, 0x5a, 0x14, 0x70, 0x0e, 0xf2, 0xc4, 0x5a, + 0x0a, 0xe8, 0x00, 0x16, 0x00, 0x70, 0x80, 0x00, 0x78, 0x1f, 0x86, 0xe8, + 0x00, 0x8e, 0x4b, 0x20, 0x80, 0x81, 0x04, 0xf2, 0x00, 0x87, 0x14, 0x70, + 0x9c, 0xf2, 0xb8, 0x5a, 0x80, 0xd8, 0xe1, 0x41, 0x2f, 0x20, 0x4c, 0x00, + 0x40, 0xc0, 0x00, 0x87, 0x40, 0x28, 0x03, 0x06, 0x41, 0x28, 0x02, 0x04, + 0x41, 0x28, 0x01, 0x02, 0xab, 0x23, 0x60, 0x0d, 0xab, 0x22, 0x60, 0x0d, + 0xab, 0x21, 0x60, 0x0d, 0xab, 0x20, 0x60, 0x0d, 0x00, 0xc5, 0xaf, 0x78, + 0x0f, 0x0d, 0x7e, 0x10, 0xab, 0x20, 0x20, 0x0d, 0x00, 0x8e, 0x83, 0xb8, + 0x00, 0xae, 0x11, 0x0d, 0x1e, 0x10, 0xc4, 0x5a, 0x84, 0xe8, 0x00, 0x8e, + 0x86, 0xb8, 0x00, 0xae, 0x11, 0x0d, 0x3e, 0x11, 0x80, 0xc0, 0xc8, 0x5a, + 0x04, 0xe8, 0x00, 0x8e, 0x14, 0x70, 0x72, 0xf2, 0x00, 0xc0, 0x0d, 0x08, + 0xde, 0x00, 0x0c, 0x70, 0xd2, 0x5a, 0x00, 0xc0, 0x0b, 0x08, 0x9e, 0x00, + 0x0c, 0x71, 0xd2, 0x5a, 0x00, 0xc0, 0x6d, 0x08, 0x1e, 0x01, 0xb5, 0x5a, + 0x20, 0x8e, 0xcb, 0x45, 0x80, 0x00, 0x8d, 0x1f, 0x85, 0x21, 0x01, 0x02, + 0x20, 0xae, 0x05, 0x1c, 0x43, 0x30, 0x20, 0x8d, 0x06, 0x1c, 0x42, 0x30, + 0x07, 0x1c, 0x03, 0x30, 0x20, 0x8d, 0x19, 0x09, 0x34, 0x08, 0x08, 0x46, + 0x00, 0x8d, 0x8c, 0x20, 0x03, 0x8f, 0x06, 0xf2, 0x00, 0x8d, 0x8c, 0x20, + 0xc3, 0x8f, 0x07, 0xf4, 0xfe, 0xd8, 0x40, 0x24, 0x41, 0x31, 0xc1, 0x42, + 0xce, 0x5a, 0x00, 0x8d, 0x0b, 0x08, 0x14, 0x08, 0x00, 0x8d, 0xc0, 0xe0, + 0x89, 0xf7, 0x00, 0x8d, 0x8c, 0x20, 0x43, 0x8f, 0x05, 0xf2, 0x00, 0x8d, + 0x8c, 0x20, 0xc3, 0x8f, 0x06, 0xf4, 0xf8, 0xd8, 0x40, 0x24, 0x41, 0x31, + 0xc1, 0x42, 0xce, 0x5a, 0x6f, 0x26, 0x3f, 0x04, 0x6f, 0x23, 0x3f, 0x00, + 0xab, 0x5a, 0x2e, 0x70, 0x0a, 0x22, 0x00, 0x24, 0xad, 0x70, 0xaf, 0x7e, + 0xc1, 0x40, 0x18, 0x1a, 0x50, 0x24, 0xac, 0x5a, 0xa5, 0x71, 0xf2, 0x1a, + 0x04, 0xa0, 0xc3, 0x76, 0x80, 0x00, 0xb0, 0x11, 0xaf, 0x78, 0xeb, 0x08, + 0xb4, 0x80, 0x00, 0x1e, 0x42, 0x14, 0x00, 0x87, 0x8a, 0x21, 0x10, 0x00, + 0x6c, 0x20, 0x40, 0x00, 0x00, 0xa7, 0x6f, 0x26, 0xff, 0x05, 0xab, 0x21, + 0xe1, 0x0c, 0x0a, 0x10, 0x00, 0x21, 0x85, 0xe8, 0x22, 0x10, 0x00, 0x21, + 0x0a, 0xe8, 0x0a, 0x10, 0x00, 0x21, 0x22, 0x10, 0x01, 0x21, 0xc7, 0x5a, + 0x0c, 0x70, 0xcc, 0xc7, 0xa0, 0x5a, 0xfe, 0xf1, 0x20, 0xc1, 0x75, 0xd8, + 0xab, 0x21, 0x20, 0x0d, 0x20, 0x87, 0x40, 0x29, 0x0c, 0x06, 0x41, 0x29, + 0x03, 0x04, 0x41, 0x29, 0x02, 0x02, 0xab, 0x24, 0x60, 0x1d, 0xab, 0x23, + 0x60, 0x0d, 0xab, 0x22, 0x60, 0x0d, 0xab, 0x21, 0x60, 0x0d, 0xcd, 0x5a, + 0x00, 0x1f, 0x01, 0x10, 0xe6, 0xf1, 0xe0, 0x78, 0xe4, 0xc2, 0x0b, 0x08, + 0x7e, 0x00, 0x08, 0x46, 0xa0, 0x5a, 0x09, 0x0e, 0x9e, 0x10, 0xdd, 0x5a, + 0x8b, 0x26, 0x02, 0x92, 0x04, 0xf2, 0xc1, 0x40, 0xc5, 0x5a, 0x1a, 0xe8, + 0xcb, 0x45, 0x80, 0x00, 0x8c, 0x1f, 0x00, 0x8d, 0x27, 0x08, 0x3f, 0x00, + 0xc1, 0x40, 0xc5, 0x5a, 0x0f, 0xe8, 0xc3, 0x40, 0x80, 0x00, 0x44, 0x1f, + 0x00, 0x80, 0x17, 0x08, 0xde, 0x01, 0xaa, 0x20, 0xe0, 0x06, 0x85, 0xe8, + 0xaa, 0x20, 0x20, 0x07, 0x03, 0xe8, 0x00, 0x8d, 0xc3, 0x5a, 0xc4, 0xc6, + 0x12, 0x08, 0xcf, 0x05, 0xc4, 0xc6, 0xe0, 0x78, 0xec, 0xc3, 0xa1, 0xc1, + 0x10, 0x41, 0x50, 0x4b, 0xa8, 0x46, 0x48, 0x45, 0x30, 0x40, 0x42, 0x28, + 0x92, 0x80, 0x03, 0x1c, 0x03, 0x30, 0x20, 0xf2, 0x13, 0x0c, 0x10, 0x01, + 0x09, 0x0c, 0xd0, 0x01, 0x0f, 0x0c, 0x91, 0x01, 0x40, 0x24, 0xd0, 0x30, + 0x03, 0xf0, 0x40, 0x24, 0xd1, 0x30, 0x29, 0x08, 0x72, 0x00, 0xed, 0x71, + 0x00, 0x85, 0x40, 0x24, 0xc2, 0x30, 0x61, 0x80, 0x22, 0x40, 0x60, 0x7b, + 0x02, 0x41, 0x03, 0xee, 0x00, 0xa6, 0x03, 0x14, 0x80, 0x30, 0x86, 0xe8, + 0x52, 0x77, 0xa5, 0x74, 0xe5, 0x71, 0xb2, 0xf6, 0xcc, 0xc7, 0xe0, 0x78, + 0xe6, 0xc0, 0x35, 0x09, 0x12, 0x00, 0x28, 0x46, 0x61, 0xb9, 0x29, 0x09, + 0x72, 0x00, 0x6c, 0x70, 0x80, 0x80, 0x00, 0x42, 0xa1, 0x82, 0xe0, 0x8c, + 0x00, 0x15, 0x8b, 0x10, 0x64, 0x71, 0x71, 0x77, 0xca, 0x24, 0x4e, 0x13, + 0xc3, 0xf7, 0x81, 0xa2, 0xa0, 0xa2, 0xed, 0x0b, 0x62, 0x80, 0x44, 0x74, + 0xd7, 0x0e, 0x53, 0x90, 0xc6, 0xc4, 0xe0, 0x78, 0xc3, 0x42, 0x7f, 0x00, + 0x9c, 0xe6, 0xc3, 0x43, 0x7f, 0x00, 0xa0, 0xe6, 0x8c, 0x75, 0x65, 0x07, + 0xef, 0xff, 0xac, 0x70, 0xc3, 0x42, 0x7f, 0x00, 0x90, 0xe6, 0xc3, 0x43, + 0x7f, 0x00, 0x94, 0xe6, 0x8c, 0x73, 0x51, 0x07, 0xef, 0xff, 0xac, 0x70, + 0x8c, 0x70, 0xc3, 0x42, 0x7f, 0x00, 0x80, 0xe6, 0xc3, 0x43, 0x7f, 0x00, + 0x84, 0xe6, 0x3d, 0x07, 0xef, 0xff, 0x80, 0x45, 0xc3, 0x42, 0x7f, 0x00, + 0x8c, 0xe6, 0xc3, 0x43, 0x7f, 0x00, 0x90, 0xe6, 0x8c, 0x72, 0x29, 0x07, + 0xef, 0xff, 0xac, 0x70, 0xc3, 0x42, 0x7f, 0x00, 0x84, 0xe6, 0xc3, 0x43, + 0x7f, 0x00, 0x8c, 0xe6, 0x8c, 0x71, 0x15, 0x07, 0xef, 0xff, 0xac, 0x70, + 0x0c, 0x70, 0x2c, 0x70, 0xc3, 0x42, 0x7f, 0x00, 0x94, 0xe6, 0xc3, 0x43, + 0x7f, 0x00, 0x9c, 0xe6, 0x8c, 0x74, 0xfd, 0x06, 0xef, 0xff, 0x00, 0x45, + 0xf1, 0xc0, 0xa1, 0xc1, 0x2c, 0x70, 0xc3, 0x42, 0x7f, 0x00, 0xa0, 0xe6, + 0xc3, 0x43, 0x7f, 0x00, 0xa4, 0xe6, 0x4a, 0x24, 0xc0, 0x01, 0xe2, 0x0e, + 0xef, 0xff, 0x40, 0x24, 0x05, 0x30, 0x00, 0xc0, 0x87, 0x74, 0xd1, 0xc0, + 0xe0, 0x7e, 0xe0, 0x78, 0xe4, 0xc2, 0xad, 0x70, 0xcb, 0x46, 0x80, 0x00, + 0xdc, 0x12, 0x00, 0x86, 0x21, 0x86, 0x02, 0x79, 0x22, 0xb9, 0x2f, 0x79, + 0x09, 0x09, 0x92, 0x00, 0x0e, 0x0f, 0xcf, 0xff, 0xa5, 0x71, 0xef, 0x0d, + 0x34, 0x92, 0x08, 0xe6, 0xc4, 0xc6, 0xe0, 0x78, 0x2c, 0x70, 0xc3, 0x42, + 0x7f, 0x00, 0xa0, 0xe6, 0xc3, 0x43, 0x7f, 0x00, 0xa0, 0xe6, 0x8c, 0x76, + 0x95, 0x06, 0xef, 0xff, 0x20, 0x45, 0xe0, 0x78, 0xa1, 0xc1, 0x8a, 0x23, + 0x06, 0x08, 0x4c, 0x71, 0x0e, 0xf0, 0x83, 0x41, 0x61, 0xb1, 0x21, 0x91, + 0x04, 0x77, 0x09, 0xf0, 0xab, 0x22, 0x61, 0x0a, 0x8b, 0x44, 0x21, 0x94, + 0x24, 0x77, 0x21, 0xb4, 0x21, 0x94, 0xfa, 0xe9, 0x2f, 0x26, 0x08, 0xf0, + 0xf1, 0xf5, 0xe0, 0x7f, 0x87, 0x74, 0xe0, 0x78, 0xe6, 0xc2, 0x48, 0x41, + 0x57, 0x88, 0x68, 0x40, 0x75, 0x88, 0xf6, 0x88, 0x94, 0x88, 0xac, 0x88, + 0x08, 0xba, 0x08, 0xbb, 0x45, 0x7f, 0x85, 0x7b, 0x40, 0x2f, 0x02, 0x14, + 0x20, 0x46, 0xcb, 0x46, 0x00, 0x00, 0xaa, 0x0a, 0x2c, 0x70, 0x6d, 0x72, + 0x4a, 0x24, 0x00, 0x72, 0xc3, 0xbd, 0x45, 0x7b, 0xa8, 0x20, 0x80, 0x05, + 0x53, 0x23, 0x42, 0x00, 0x4f, 0x22, 0x4c, 0x00, 0x13, 0x0c, 0xb1, 0x10, + 0x00, 0x2b, 0x4c, 0x10, 0x86, 0x7e, 0x54, 0x72, 0xcf, 0x26, 0x41, 0x10, + 0x06, 0xf2, 0x0d, 0x0a, 0x71, 0x00, 0x00, 0x2b, 0x42, 0x10, 0x45, 0x7e, + 0x22, 0xbb, 0x24, 0x72, 0xc0, 0x41, 0x21, 0x42, 0x46, 0x0b, 0x6f, 0x06, + 0x01, 0x43, 0x0c, 0x71, 0xbb, 0x7b, 0x2c, 0x73, 0x78, 0x79, 0x92, 0x6d, + 0x00, 0x42, 0x98, 0x7a, 0x26, 0x7e, 0xab, 0x22, 0xa1, 0x0d, 0xab, 0x26, + 0xe2, 0x13, 0xc6, 0xc6, 0xaa, 0x20, 0x20, 0x0e, 0xaa, 0x21, 0x20, 0x0e, + 0x30, 0x70, 0xfc, 0xf5, 0x44, 0x20, 0x00, 0x08, 0xe0, 0x7f, 0x25, 0xb8, + 0xec, 0xc3, 0x82, 0x24, 0x0e, 0x32, 0x56, 0x24, 0x40, 0x38, 0x80, 0xc1, + 0x80, 0x20, 0x0a, 0x00, 0x0b, 0x09, 0x25, 0x00, 0x40, 0xc1, 0x00, 0x41, + 0x40, 0xc0, 0x82, 0xc0, 0x56, 0x20, 0x00, 0x08, 0x07, 0x09, 0x05, 0x00, + 0x40, 0xc0, 0xd3, 0x42, 0x80, 0x00, 0x8b, 0x05, 0x0c, 0x70, 0xcb, 0x46, + 0x80, 0x00, 0xd4, 0x11, 0x40, 0x22, 0x41, 0x20, 0xc3, 0x43, 0xa5, 0x5a, + 0x6b, 0xb6, 0x1b, 0xda, 0x21, 0xa6, 0x60, 0xa1, 0x46, 0x0c, 0x6f, 0xff, + 0xab, 0x22, 0xa0, 0x0d, 0xc3, 0x40, 0x7f, 0x00, 0xa4, 0xe6, 0xc3, 0x41, + 0x7f, 0x00, 0x0c, 0xe8, 0x02, 0x79, 0xd3, 0x41, 0x7f, 0x00, 0x0c, 0xe8, + 0xc3, 0x43, 0x7f, 0x00, 0xe4, 0xea, 0xd3, 0x40, 0x7f, 0x00, 0xe4, 0xea, + 0xc3, 0x42, 0x7f, 0x00, 0xb4, 0xeb, 0x02, 0x23, 0x4f, 0x04, 0x02, 0x22, + 0x0d, 0x04, 0x84, 0x29, 0x01, 0x0e, 0x44, 0x2f, 0x0f, 0x1d, 0x29, 0xae, + 0x2f, 0x79, 0x44, 0x2d, 0x0d, 0x1d, 0xea, 0xae, 0xbe, 0x0f, 0xaf, 0x04, + 0xab, 0xae, 0xef, 0x79, 0xc6, 0x0f, 0xaf, 0x04, 0x22, 0x40, 0xaf, 0x79, + 0xce, 0x0f, 0xaf, 0x04, 0x02, 0x40, 0xcb, 0x45, 0x7f, 0x00, 0xb4, 0xeb, + 0xda, 0x0e, 0xef, 0x02, 0xa1, 0x40, 0xaa, 0x22, 0xe1, 0x04, 0x56, 0x24, + 0x40, 0x38, 0x20, 0xd9, 0x05, 0x22, 0x82, 0x0f, 0x54, 0x2a, 0x00, 0x00, + 0xf6, 0x0d, 0x6f, 0x04, 0xab, 0x22, 0xe1, 0x04, 0x82, 0xc0, 0x72, 0x0b, + 0xaf, 0x04, 0x10, 0xd9, 0xc3, 0x40, 0x7f, 0x00, 0xe4, 0xeb, 0xc3, 0x41, + 0x7f, 0x00, 0xff, 0xff, 0xc3, 0x42, 0x80, 0x00, 0x00, 0x00, 0x42, 0x43, + 0xca, 0x5a, 0x14, 0x70, 0xac, 0x01, 0x21, 0x00, 0x1c, 0xd9, 0x0c, 0x70, + 0x9a, 0x0b, 0x6f, 0xff, 0xab, 0x21, 0xa0, 0x0d, 0x0a, 0x8e, 0x2b, 0x8e, + 0xcb, 0x47, 0x80, 0x00, 0xa4, 0x12, 0x49, 0x8e, 0x00, 0x21, 0x04, 0x00, + 0x61, 0x87, 0x20, 0x87, 0x62, 0x0e, 0xef, 0xff, 0xa1, 0x40, 0x1d, 0xd9, + 0x0c, 0x70, 0x76, 0x0b, 0x6f, 0xff, 0xab, 0x21, 0xa0, 0x0d, 0xc3, 0x40, + 0x7f, 0x00, 0x78, 0xcb, 0x05, 0xe8, 0x22, 0x20, 0x80, 0x0f, 0x7f, 0x00, + 0x78, 0xcb, 0x22, 0x0c, 0x00, 0x00, 0x20, 0xd8, 0x40, 0x24, 0x92, 0x31, + 0xd3, 0x40, 0x00, 0x00, 0x00, 0x00, 0xab, 0x20, 0xa0, 0x0d, 0x07, 0xf0, + 0x27, 0xd8, 0xab, 0x20, 0xa0, 0x0d, 0x69, 0x20, 0x40, 0x80, 0x21, 0xd8, + 0xad, 0x70, 0xab, 0x20, 0xa0, 0x0d, 0xab, 0x25, 0xe0, 0x1c, 0xaa, 0x20, + 0xe0, 0x05, 0xaa, 0x21, 0xe0, 0x05, 0xfb, 0x08, 0x41, 0x80, 0x8a, 0xe8, + 0x16, 0x70, 0x85, 0xf2, 0x22, 0x20, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x70, 0x7f, 0xf2, 0xc2, 0x5a, 0x22, 0xd9, 0xc3, 0x40, 0x00, 0x00, + 0x00, 0x00, 0xab, 0x21, 0xa0, 0x0d, 0x06, 0xe8, 0x22, 0x20, 0x80, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x0a, 0x6f, 0xff, 0x0c, 0x71, 0x04, 0xf0, + 0x06, 0x09, 0x4f, 0x06, 0xad, 0x70, 0xaa, 0x20, 0xe0, 0x05, 0xaa, 0x21, + 0xe0, 0x05, 0xfb, 0x08, 0x41, 0x80, 0x8a, 0xe8, 0xc7, 0x08, 0x10, 0x20, + 0x22, 0x20, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x08, 0x10, 0x00, + 0xbb, 0x5a, 0x2f, 0x26, 0x47, 0xf3, 0x59, 0xf4, 0x52, 0x20, 0x3e, 0x80, + 0x55, 0xf2, 0x23, 0xd8, 0xab, 0x20, 0xa0, 0x0d, 0x2a, 0x8e, 0x0b, 0x8e, + 0x41, 0x87, 0x3b, 0x60, 0x29, 0x8e, 0xd2, 0x0a, 0x6f, 0x06, 0x00, 0x87, + 0x08, 0x45, 0x08, 0xe8, 0xa1, 0x40, 0xcd, 0x5a, 0x5e, 0xd8, 0xab, 0x20, + 0xa0, 0x0d, 0x2a, 0xf0, 0x9a, 0x0a, 0x6f, 0xff, 0x0c, 0x71, 0xc3, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x05, 0xe8, 0x22, 0x20, 0x80, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x70, 0xa1, 0x5a, 0xc3, 0x40, 0x00, 0x00, 0x54, 0x2a, + 0x05, 0x1c, 0x03, 0x34, 0x00, 0x1a, 0x04, 0x20, 0xb5, 0x5a, 0x00, 0x42, + 0xfe, 0xd8, 0x40, 0x24, 0x41, 0x31, 0xce, 0x5a, 0x0b, 0x16, 0x84, 0x10, + 0x6a, 0x8e, 0x41, 0x87, 0x29, 0x8e, 0x82, 0x08, 0x20, 0x00, 0x00, 0x87, + 0x10, 0x41, 0xad, 0x70, 0x04, 0xe8, 0x22, 0x40, 0xcd, 0x5a, 0x2a, 0x45, + 0x24, 0xd8, 0xab, 0x20, 0xa0, 0x0d, 0x0a, 0x8e, 0x6b, 0x8e, 0x41, 0x87, + 0x29, 0x8e, 0x1b, 0x63, 0x52, 0x0b, 0x6f, 0x06, 0x00, 0x87, 0xc3, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x05, 0xe8, 0x22, 0x20, 0x80, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x25, 0xd8, 0x37, 0x0d, 0x31, 0x90, 0xab, 0x20, 0xa0, 0x0d, + 0x94, 0xf1, 0x26, 0xd8, 0x2f, 0x26, 0x47, 0xf3, 0xab, 0x20, 0xa0, 0x0d, + 0x03, 0xf2, 0x56, 0x08, 0x4f, 0x06, 0xaa, 0x20, 0xe0, 0x05, 0xaa, 0x21, + 0xe0, 0x05, 0xfb, 0x08, 0x41, 0x80, 0x14, 0x70, 0x5f, 0xf5, 0x5a, 0xf1, + 0xaa, 0x20, 0xe0, 0x0c, 0x2f, 0x26, 0x07, 0xf0, 0x04, 0xf4, 0x20, 0xd8, + 0xab, 0x20, 0xe0, 0x0c, 0x0c, 0x71, 0xab, 0x20, 0x61, 0x0a, 0xfe, 0xf1, + 0xf0, 0xc2, 0x0e, 0x71, 0xd3, 0x41, 0x80, 0x00, 0xa8, 0x11, 0x88, 0x47, + 0x68, 0x45, 0x50, 0x44, 0x30, 0x42, 0x10, 0x43, 0x00, 0x19, 0x02, 0x24, + 0xd3, 0x5a, 0x06, 0xe8, 0x62, 0x40, 0x26, 0x0a, 0xef, 0x04, 0x42, 0x41, + 0xbf, 0x67, 0xad, 0x70, 0x05, 0xf0, 0x2e, 0xd8, 0x0e, 0x70, 0xab, 0x20, + 0xa0, 0x0d, 0xaa, 0x20, 0xe0, 0x05, 0xaa, 0x21, 0xe0, 0x05, 0xfb, 0x08, + 0x41, 0x80, 0x8d, 0xe8, 0xc3, 0x40, 0x00, 0x00, 0x00, 0x00, 0x14, 0x70, + 0x72, 0xf2, 0x22, 0x20, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x14, 0x70, + 0x6c, 0xf2, 0xbb, 0x5a, 0x2f, 0x26, 0x47, 0xf3, 0x68, 0xf4, 0x52, 0x20, + 0x3e, 0x80, 0x66, 0xf2, 0xcd, 0x71, 0x62, 0x40, 0x42, 0x41, 0x82, 0x42, + 0xe1, 0x43, 0x0a, 0x24, 0x00, 0x04, 0xab, 0x26, 0x61, 0x1a, 0xa5, 0x5a, + 0x08, 0x45, 0xd9, 0xe8, 0x28, 0xd8, 0xab, 0x26, 0x61, 0x1a, 0xab, 0x20, + 0xa0, 0x0d, 0xb7, 0x5a, 0x08, 0x45, 0xd1, 0xe8, 0x0c, 0x71, 0xab, 0x20, + 0x61, 0x0a, 0x29, 0xdc, 0x62, 0x40, 0x42, 0x41, 0x82, 0x42, 0xe1, 0x43, + 0x7a, 0x09, 0x2f, 0x05, 0xab, 0x24, 0xa0, 0x1d, 0xad, 0x70, 0x3a, 0x09, + 0x6f, 0xff, 0x0c, 0x71, 0xcb, 0x46, 0x80, 0x00, 0xd4, 0x11, 0x00, 0x8e, + 0x06, 0xe8, 0x0c, 0x71, 0xab, 0x20, 0x61, 0x0a, 0xab, 0x20, 0xa1, 0x0a, + 0x2a, 0xd9, 0xff, 0xd8, 0xab, 0x21, 0xa0, 0x0d, 0xba, 0x5a, 0x2b, 0xd8, + 0x2f, 0x26, 0x47, 0xf3, 0xab, 0x20, 0xa0, 0x0d, 0x0c, 0xf4, 0x62, 0x40, + 0x42, 0x41, 0x82, 0x42, 0xe1, 0x43, 0x0a, 0x24, 0x00, 0x04, 0xa5, 0x5a, + 0x08, 0x45, 0x84, 0xe8, 0xb7, 0x5a, 0x08, 0x45, 0x2c, 0xd8, 0xab, 0x20, + 0xa0, 0x0d, 0x00, 0x8e, 0x84, 0xe8, 0x00, 0x11, 0x80, 0x20, 0x85, 0xe8, + 0x5a, 0xd8, 0xab, 0x20, 0xa1, 0x0a, 0x0c, 0x70, 0xc3, 0x41, 0x80, 0x00, + 0xa0, 0x1e, 0x2f, 0x20, 0x4c, 0x00, 0x9b, 0x08, 0x11, 0x80, 0x6f, 0x21, + 0x3f, 0x00, 0x00, 0x8e, 0x06, 0xe8, 0x0c, 0x71, 0xab, 0x20, 0x61, 0x0a, + 0xab, 0x20, 0xa1, 0x0a, 0x2d, 0xd8, 0xab, 0x20, 0xa0, 0x0d, 0x81, 0xf1, + 0x3f, 0xd9, 0xaf, 0x78, 0xab, 0x21, 0xa0, 0x0d, 0xd0, 0xc6, 0xe0, 0x78, + 0xec, 0xc2, 0x62, 0x0b, 0xaf, 0x04, 0x10, 0x40, 0x7e, 0x0b, 0xaf, 0x04, + 0x08, 0x45, 0x00, 0x42, 0x02, 0x40, 0xa1, 0x41, 0xb6, 0x5a, 0x08, 0x45, + 0x8c, 0xe8, 0x56, 0x0b, 0x8f, 0x04, 0x76, 0x0b, 0xaf, 0x04, 0x08, 0x45, + 0x00, 0x42, 0x02, 0x40, 0xa1, 0x41, 0xb6, 0x5a, 0x08, 0x45, 0x39, 0xe8, + 0xa1, 0x40, 0xb3, 0x5a, 0x4f, 0x20, 0x52, 0x21, 0x50, 0x20, 0x50, 0x21, + 0x00, 0x16, 0x0e, 0x70, 0x80, 0x00, 0x34, 0x1f, 0x5a, 0x22, 0x8f, 0x22, + 0x5a, 0x20, 0x81, 0x22, 0xdf, 0x67, 0xfa, 0x0a, 0x6f, 0x03, 0x3e, 0x66, + 0x35, 0x8d, 0x17, 0x09, 0x7e, 0x01, 0x10, 0x41, 0x8e, 0x0f, 0x2f, 0x05, + 0xc1, 0x40, 0x8a, 0x0f, 0x2f, 0x05, 0xe1, 0x40, 0x0b, 0xf0, 0x22, 0x40, + 0xc1, 0x41, 0x1a, 0x0c, 0x6f, 0xff, 0xa1, 0x42, 0x22, 0x40, 0xe1, 0x41, + 0x0e, 0x0c, 0x6f, 0xff, 0xa1, 0x42, 0xa1, 0x40, 0x02, 0x41, 0xae, 0x5a, + 0x01, 0xb6, 0xa1, 0x40, 0x42, 0x41, 0xae, 0x5a, 0x01, 0xb7, 0x32, 0x8d, + 0x87, 0xe9, 0x21, 0x96, 0x10, 0x7a, 0x50, 0x71, 0xca, 0x20, 0x49, 0x00, + 0x13, 0xb5, 0xcc, 0xc6, 0xe8, 0xc2, 0xc3, 0x40, 0x80, 0x00, 0x44, 0x1f, + 0x00, 0x80, 0x37, 0x08, 0xff, 0x01, 0x0e, 0x70, 0xab, 0x5a, 0xcb, 0x45, + 0x80, 0x00, 0x54, 0x1f, 0xcd, 0x70, 0xcf, 0x7f, 0xe1, 0x40, 0xac, 0x5a, + 0x0b, 0x0f, 0x71, 0x10, 0x05, 0xb5, 0xc4, 0x5a, 0x83, 0xe8, 0x05, 0x95, + 0x87, 0xe8, 0xc5, 0x71, 0xcf, 0x78, 0xeb, 0x08, 0xb4, 0x80, 0x18, 0xe5, + 0x03, 0xf0, 0x00, 0x15, 0x10, 0x10, 0x02, 0x40, 0xc8, 0xc6, 0xe0, 0x78, + 0xe6, 0xc2, 0xcb, 0x45, 0x80, 0x00, 0x8c, 0x1e, 0x00, 0x8d, 0xcd, 0x70, + 0xed, 0x70, 0x0e, 0xe8, 0xfe, 0x0e, 0x6f, 0x04, 0xcd, 0x78, 0x00, 0x90, + 0x20, 0x8d, 0xc5, 0x71, 0x1d, 0x78, 0xc0, 0xb8, 0xcf, 0x7a, 0xf1, 0x0a, + 0x64, 0x80, 0x1f, 0x67, 0xef, 0x78, 0xc6, 0xc6, 0xf1, 0xc0, 0xc3, 0x43, + 0xff, 0x46, 0x00, 0xfe, 0x0e, 0x08, 0x00, 0x00, 0xd1, 0xc0, 0xe0, 0x7f, + 0x0c, 0x70, 0xe0, 0x78, 0xea, 0xc3, 0xa6, 0xc1, 0x08, 0x45, 0x68, 0x47, + 0x50, 0x40, 0x30, 0x41, 0xb0, 0x5a, 0x00, 0x41, 0x83, 0xc0, 0x23, 0x20, + 0x40, 0x04, 0x2f, 0x3e, 0x43, 0x10, 0x23, 0x20, 0x00, 0x04, 0x40, 0x24, + 0xc0, 0x30, 0x00, 0x3f, 0x80, 0x13, 0x83, 0xc1, 0x82, 0x08, 0x60, 0x00, + 0x81, 0xc2, 0x03, 0x14, 0x80, 0x30, 0x81, 0xc1, 0x0a, 0x1c, 0x02, 0x30, + 0x48, 0x85, 0xa1, 0x40, 0xcf, 0x5a, 0x0c, 0x70, 0xca, 0xc7, 0xe0, 0x78, + 0xe2, 0xc2, 0xfa, 0x0d, 0xaf, 0x05, 0x0c, 0x71, 0xc3, 0x42, 0x80, 0x00, + 0xa4, 0x11, 0x00, 0xa2, 0xc3, 0x41, 0x7f, 0x00, 0x04, 0xd5, 0x0c, 0x71, + 0xcc, 0x5a, 0x79, 0x20, 0x0d, 0x00, 0x0c, 0x71, 0xc3, 0x41, 0x7f, 0x00, + 0x88, 0xd4, 0xcb, 0x5a, 0x79, 0x20, 0x00, 0x00, 0xa4, 0x78, 0xc2, 0xc6, + 0xea, 0xc2, 0x48, 0x47, 0x28, 0x46, 0xaa, 0x0f, 0xef, 0x06, 0x08, 0x45, + 0x10, 0x41, 0xff, 0xe5, 0x1c, 0xf4, 0x0c, 0x70, 0xff, 0xdd, 0xcb, 0x44, + 0x80, 0x00, 0xe4, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x40, 0x8c, 0x24, 0x7a, + 0x40, 0xac, 0x0b, 0x67, 0x2c, 0x71, 0x00, 0x29, 0x0b, 0x00, 0x74, 0x70, + 0x2c, 0x70, 0x7d, 0x71, 0x45, 0x79, 0x20, 0xac, 0x04, 0x71, 0x93, 0x08, + 0x13, 0x02, 0xe5, 0x08, 0xa2, 0x83, 0x12, 0x25, 0x01, 0x10, 0x43, 0xf0, + 0x83, 0x0d, 0xd4, 0x13, 0x33, 0x0d, 0x95, 0x14, 0xcb, 0x46, 0x80, 0x00, + 0xa0, 0x11, 0xd3, 0x40, 0x80, 0x00, 0x28, 0x13, 0x39, 0x0d, 0x70, 0x14, + 0x2e, 0x71, 0x53, 0x0d, 0x31, 0x14, 0x40, 0x20, 0x00, 0x23, 0x08, 0xda, + 0x0e, 0x0f, 0x2f, 0x04, 0xe1, 0x41, 0x00, 0x8e, 0x14, 0x18, 0xc3, 0x20, + 0x81, 0xb8, 0x00, 0xae, 0x27, 0xf0, 0x4f, 0x0d, 0x91, 0x14, 0x00, 0x8f, + 0xc3, 0x41, 0x80, 0x00, 0x10, 0x12, 0x00, 0xa9, 0x01, 0x8f, 0x2e, 0x71, + 0x01, 0xa9, 0x1d, 0xf0, 0x40, 0x20, 0x00, 0x26, 0x08, 0xda, 0xe2, 0x0e, + 0x2f, 0x04, 0xe1, 0x41, 0x00, 0x8e, 0xc3, 0x41, 0x80, 0x00, 0x48, 0x13, + 0x82, 0xb8, 0x00, 0x19, 0xc3, 0x00, 0x00, 0xae, 0x0d, 0xf0, 0x1b, 0x0d, + 0xf1, 0x13, 0x08, 0xda, 0x02, 0x40, 0xc2, 0x0e, 0x2f, 0x04, 0xe1, 0x41, + 0x00, 0x8e, 0x08, 0x18, 0xc3, 0x20, 0x80, 0xb8, 0x00, 0xae, 0x22, 0x40, + 0xca, 0xc6, 0xe0, 0x78, 0xe6, 0xc2, 0x28, 0x46, 0xea, 0x0d, 0xef, 0x06, + 0x08, 0x45, 0x08, 0x47, 0xff, 0xe5, 0x17, 0xf4, 0x0c, 0x70, 0x6c, 0x71, + 0x4a, 0x24, 0x00, 0x72, 0x0a, 0x24, 0x80, 0x1f, 0x80, 0x00, 0xe4, 0x1f, + 0xa8, 0x20, 0xc0, 0x02, 0x20, 0x8c, 0x00, 0x2b, 0x0d, 0x00, 0xa4, 0x79, + 0x1a, 0x66, 0x79, 0x21, 0x01, 0x00, 0x04, 0x71, 0x20, 0xaa, 0xe0, 0x78, + 0x17, 0xf0, 0x42, 0x25, 0xc0, 0x13, 0x2b, 0x08, 0xd5, 0x00, 0xc3, 0x41, + 0x80, 0x00, 0x28, 0x13, 0x0f, 0x0d, 0x70, 0x14, 0xed, 0x71, 0x0f, 0x0d, + 0x11, 0x14, 0x0c, 0xe1, 0x05, 0xf0, 0x18, 0xe1, 0x03, 0xf0, 0x0f, 0x0d, + 0xd1, 0x13, 0x0a, 0xda, 0x4a, 0x0e, 0x2f, 0x04, 0xc1, 0x40, 0xe1, 0x40, + 0xc6, 0xc6, 0xe0, 0x78, 0xf1, 0xc0, 0x00, 0x43, 0x07, 0xe8, 0x0f, 0x0b, + 0x75, 0x02, 0x60, 0x40, 0x1e, 0x08, 0x00, 0x00, 0x0a, 0xf0, 0xc3, 0x40, + 0x7f, 0x00, 0x38, 0xb9, 0x14, 0x70, 0x0c, 0x70, 0x04, 0xf2, 0xea, 0x0d, + 0x2f, 0xff, 0x60, 0x40, 0xd1, 0xc0, 0xe0, 0x7e, 0xea, 0xc2, 0x61, 0x8a, + 0xcb, 0x45, 0x80, 0x00, 0x90, 0x11, 0x00, 0x12, 0x91, 0x00, 0x68, 0xad, + 0x62, 0x8a, 0xd3, 0x40, 0x80, 0x00, 0x90, 0x20, 0x60, 0xad, 0x40, 0x20, + 0x03, 0x21, 0x08, 0x46, 0x9a, 0x0f, 0xef, 0x06, 0x63, 0xa5, 0xed, 0x71, + 0xaa, 0xe8, 0x53, 0x0e, 0x75, 0x12, 0x0c, 0x70, 0x20, 0x8d, 0xe0, 0xbe, + 0xc3, 0x42, 0x60, 0x00, 0x68, 0x5d, 0xcb, 0x46, 0x60, 0x00, 0xd4, 0x5d, + 0xca, 0x26, 0x81, 0x10, 0xc1, 0xa5, 0x1b, 0xe9, 0x33, 0x09, 0x75, 0x01, + 0x6c, 0x71, 0x43, 0x85, 0x28, 0x8d, 0x03, 0x18, 0x02, 0x20, 0xc3, 0x44, + 0x7f, 0x00, 0x00, 0xbd, 0xac, 0x70, 0x22, 0x40, 0x23, 0x20, 0x80, 0x03, + 0xe1, 0xad, 0x00, 0x8d, 0x28, 0x8d, 0x43, 0x85, 0x04, 0x77, 0x00, 0xad, + 0x01, 0x69, 0x08, 0xad, 0x01, 0x6a, 0x03, 0xa5, 0x02, 0xf0, 0xed, 0x70, + 0xe1, 0x40, 0xca, 0xc6, 0xf1, 0xc0, 0x20, 0x43, 0x00, 0x41, 0x10, 0xe8, + 0x88, 0xe1, 0x1c, 0x00, 0x2d, 0x00, 0x0c, 0x70, 0x14, 0xf7, 0xc3, 0x41, + 0x80, 0x00, 0x90, 0x20, 0x08, 0xda, 0x7e, 0x0d, 0x2f, 0x04, 0x60, 0x40, + 0x0c, 0x71, 0x0c, 0xf0, 0xc3, 0x40, 0x7f, 0x00, 0x74, 0xb9, 0x14, 0x70, + 0x0c, 0x70, 0x06, 0xf2, 0x20, 0x40, 0x6a, 0x0d, 0x2f, 0xff, 0x60, 0x41, + 0xd1, 0xc0, 0xe0, 0x7e, 0xe4, 0xc2, 0x2d, 0x88, 0x67, 0x09, 0x30, 0x00, + 0xad, 0x70, 0x14, 0x88, 0x5f, 0x08, 0x71, 0x00, 0xff, 0xdd, 0x9a, 0x0f, + 0x4f, 0x04, 0xba, 0x0f, 0x6f, 0x04, 0x08, 0x46, 0x00, 0x42, 0x0c, 0x71, + 0xc1, 0x41, 0xb6, 0x5a, 0x03, 0xe8, 0xb2, 0x5a, 0xa1, 0xe8, 0x8e, 0x0f, + 0x4f, 0x04, 0xae, 0x0f, 0x6f, 0x04, 0x08, 0x46, 0x00, 0x42, 0x17, 0xd8, + 0xc1, 0x41, 0xb6, 0x5a, 0x03, 0xe8, 0x0d, 0x88, 0x95, 0xe8, 0x00, 0x16, + 0x00, 0x70, 0x80, 0x00, 0x80, 0x20, 0x23, 0x08, 0x70, 0x00, 0x80, 0xdd, + 0x1b, 0x08, 0x80, 0x0f, 0x01, 0x00, 0x05, 0x80, 0x13, 0x08, 0x80, 0x0f, + 0x08, 0x00, 0x11, 0x00, 0x0b, 0x08, 0x80, 0x0f, 0x0e, 0x00, 0x15, 0x20, + 0xff, 0xdd, 0xa1, 0x40, 0xc4, 0xc6, 0xe0, 0x78, 0xe6, 0xc2, 0x48, 0x45, + 0x6b, 0x08, 0x74, 0x08, 0x08, 0x46, 0x26, 0x0f, 0x4f, 0x04, 0x46, 0x0f, + 0x6f, 0x04, 0x08, 0x47, 0x42, 0x26, 0x01, 0x18, 0x00, 0x42, 0x2f, 0x78, + 0xe1, 0x41, 0xb1, 0x5a, 0x00, 0x42, 0x6c, 0x70, 0x2a, 0xe8, 0x48, 0x43, + 0x80, 0x23, 0x41, 0x1a, 0xf0, 0xdc, 0x16, 0xf0, 0x44, 0x2b, 0x8e, 0x00, + 0x41, 0x2b, 0xc0, 0x07, 0x19, 0x63, 0xc0, 0xb9, 0x10, 0x49, 0x32, 0x68, + 0xc8, 0x65, 0x64, 0x71, 0x01, 0x28, 0x41, 0x00, 0x05, 0x21, 0x00, 0x03, + 0xe3, 0xb9, 0xc3, 0xb9, 0xca, 0x20, 0x41, 0x00, 0x01, 0x1b, 0x12, 0x10, + 0x72, 0x12, 0x81, 0x00, 0xc6, 0xb9, 0x2a, 0x79, 0x89, 0xe1, 0xca, 0x21, + 0x65, 0x02, 0xcd, 0x0b, 0x64, 0x80, 0x0c, 0x71, 0x05, 0xf0, 0xc1, 0x40, + 0xfa, 0x09, 0xaf, 0x05, 0xa1, 0x42, 0xc6, 0xc6, 0x0c, 0x70, 0xc6, 0xc6, + 0xea, 0xc3, 0xa2, 0xc1, 0xc3, 0x42, 0x80, 0x00, 0xa4, 0x11, 0x40, 0x82, + 0x28, 0x47, 0x60, 0x7a, 0x08, 0x46, 0x7f, 0x08, 0x30, 0x00, 0x0b, 0x6e, + 0x35, 0x08, 0xb5, 0x04, 0xb4, 0x6e, 0x0e, 0x70, 0x80, 0x25, 0x43, 0x14, + 0xaf, 0x78, 0xbf, 0xe0, 0x0b, 0xf7, 0x00, 0x16, 0x02, 0x70, 0x80, 0x00, + 0x34, 0x1f, 0x5f, 0x20, 0x81, 0x02, 0x59, 0x61, 0x28, 0x89, 0x0d, 0x09, + 0x9f, 0x00, 0x82, 0x0a, 0x2f, 0x05, 0x2c, 0x71, 0x06, 0x71, 0xe1, 0x08, + 0x32, 0xa4, 0xa5, 0x71, 0xad, 0x71, 0x9f, 0xe6, 0xb1, 0xf4, 0x62, 0x0e, + 0x4f, 0x04, 0x10, 0x40, 0x7e, 0x0e, 0x6f, 0x04, 0xe5, 0x74, 0x10, 0x41, + 0xcd, 0x70, 0x32, 0x26, 0x80, 0x1f, 0x7f, 0x00, 0xf8, 0xe5, 0x02, 0x41, + 0x22, 0x42, 0xb1, 0x5a, 0x0a, 0xe8, 0x28, 0x80, 0x40, 0x79, 0xad, 0x5a, + 0x20, 0x8f, 0x55, 0x68, 0x53, 0x21, 0x00, 0x01, 0x45, 0x78, 0x00, 0xaf, + 0xc5, 0x71, 0xdf, 0x0e, 0xf4, 0x90, 0xe5, 0x75, 0x93, 0xf0, 0x2f, 0x0e, + 0x11, 0x16, 0x76, 0x0e, 0x8f, 0x02, 0x8d, 0x70, 0x05, 0xe8, 0x27, 0x88, + 0x86, 0x88, 0x08, 0xb9, 0x25, 0x7c, 0x02, 0x6f, 0x24, 0x6f, 0x45, 0x6f, + 0x66, 0x6f, 0x40, 0x27, 0xc4, 0x11, 0x40, 0x27, 0x05, 0x12, 0x80, 0xb7, + 0xaf, 0x5a, 0xad, 0x71, 0x7d, 0xf0, 0x3d, 0x0e, 0x31, 0x18, 0xad, 0x70, + 0x16, 0x0e, 0x4f, 0x04, 0xee, 0x0d, 0x6f, 0x04, 0x08, 0x46, 0xeb, 0x0e, + 0x30, 0x10, 0xad, 0x71, 0x21, 0x87, 0x40, 0x87, 0x40, 0x20, 0x03, 0x05, + 0x78, 0x13, 0x80, 0x04, 0x42, 0x26, 0x4e, 0x90, 0x0f, 0x22, 0x02, 0x00, + 0x00, 0x2d, 0x00, 0x10, 0x5f, 0xb8, 0x05, 0x79, 0xf6, 0xf5, 0x40, 0xa7, + 0x21, 0xa7, 0x61, 0xf0, 0xbf, 0x0e, 0x54, 0x18, 0xba, 0x0d, 0x4f, 0x04, + 0xda, 0x0d, 0x6f, 0x04, 0x10, 0x40, 0x42, 0x26, 0x01, 0x18, 0x00, 0x42, + 0x2f, 0x78, 0x02, 0x41, 0xb1, 0x5a, 0xa7, 0x08, 0x30, 0x00, 0x10, 0x40, + 0x55, 0x26, 0x00, 0x1e, 0x00, 0xaf, 0x08, 0x10, 0x80, 0x20, 0x23, 0x6f, + 0x40, 0x24, 0x82, 0x31, 0x01, 0xaf, 0x09, 0x10, 0x8c, 0x20, 0x81, 0xc3, + 0x40, 0x24, 0x84, 0x30, 0x40, 0x24, 0x45, 0x30, 0x02, 0x40, 0x82, 0xaf, + 0xb4, 0x5a, 0x02, 0x40, 0xb0, 0x5a, 0x02, 0xb7, 0x02, 0x40, 0xb3, 0x5a, + 0x5e, 0x0d, 0x0f, 0x03, 0x26, 0x8f, 0x04, 0xb7, 0x72, 0x10, 0x80, 0x20, + 0xa0, 0xb9, 0x27, 0xb8, 0x25, 0x78, 0x06, 0xaf, 0x20, 0x10, 0x01, 0x20, + 0x60, 0x79, 0x02, 0x40, 0xad, 0x5a, 0x26, 0x8f, 0x55, 0x68, 0xad, 0x71, + 0x53, 0x21, 0x00, 0x01, 0x45, 0x78, 0x06, 0xaf, 0x72, 0x10, 0x80, 0x20, + 0x2c, 0x70, 0x80, 0x20, 0x41, 0x2a, 0xc6, 0xb8, 0x0a, 0xaf, 0x13, 0xf0, + 0x44, 0x29, 0x8c, 0x00, 0x58, 0x61, 0x01, 0x10, 0x83, 0x24, 0xc0, 0xb8, + 0x42, 0x78, 0xfa, 0x64, 0x8b, 0x8a, 0xc3, 0xbb, 0x02, 0xb8, 0x00, 0x2b, + 0x00, 0x00, 0x85, 0x78, 0x0b, 0xaa, 0x0a, 0x8f, 0x24, 0x71, 0x0a, 0x78, + 0x8a, 0xe0, 0xca, 0x20, 0xa5, 0x02, 0xd9, 0x09, 0x24, 0x80, 0x41, 0x29, + 0xc2, 0x07, 0xa1, 0x40, 0xca, 0xc7, 0xe0, 0x78, 0xc3, 0x41, 0x80, 0x00, + 0x48, 0x1b, 0x20, 0x81, 0x20, 0xa0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, + 0xc3, 0x41, 0x80, 0x00, 0x4c, 0x1b, 0x20, 0x81, 0x20, 0xa0, 0xe0, 0x7f, + 0x0c, 0x70, 0xe0, 0x78, 0xc3, 0x41, 0x80, 0x00, 0x44, 0x1b, 0x20, 0x81, + 0x20, 0xa0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, 0xc3, 0x41, 0x80, 0x00, + 0x6c, 0x1b, 0x20, 0x81, 0x20, 0xa0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, + 0xc3, 0x41, 0x80, 0x00, 0x78, 0x1b, 0x20, 0x81, 0x20, 0xa0, 0xe0, 0x7f, + 0x0c, 0x70, 0xe0, 0x78, 0xc3, 0x41, 0x80, 0x00, 0x44, 0x1b, 0x0e, 0x81, + 0xe0, 0x7f, 0x2f, 0x81, 0xc3, 0x40, 0x80, 0x00, 0x8c, 0x1b, 0xe0, 0x7f, + 0x00, 0x88, 0xe0, 0x78, 0xe6, 0xc0, 0xc3, 0x41, 0x80, 0x00, 0x44, 0x1b, + 0x0c, 0x70, 0xcb, 0x47, 0x78, 0x3f, 0x00, 0x00, 0xcb, 0x46, 0x19, 0x3f, + 0x9a, 0x99, 0xcb, 0x45, 0xf5, 0x3d, 0x8f, 0xc2, 0xc3, 0x43, 0x4c, 0x3e, + 0xcd, 0xcc, 0xcb, 0x44, 0x40, 0x41, 0x00, 0x00, 0x0f, 0xa1, 0x0e, 0xa1, + 0x0c, 0xa1, 0x34, 0x19, 0x41, 0x01, 0xe0, 0xa1, 0xc1, 0xa1, 0xa2, 0xa1, + 0x63, 0xa1, 0x64, 0xa1, 0x40, 0x19, 0xc1, 0x00, 0x69, 0xa1, 0x0b, 0xa1, + 0x08, 0xa1, 0x07, 0xa1, 0x06, 0xa1, 0x05, 0xa1, 0x8a, 0xa1, 0x11, 0xa1, + 0x12, 0xa1, 0xc6, 0xc4, 0xc3, 0x41, 0x80, 0x00, 0x44, 0x1b, 0x0c, 0x70, + 0x0f, 0xa1, 0xe0, 0x7f, 0x0e, 0xa1, 0xe0, 0x78, 0xc3, 0x41, 0x80, 0x00, + 0x48, 0x1b, 0x00, 0xa1, 0xe0, 0x7f, 0x0c, 0x70, 0xc3, 0x41, 0x80, 0x00, + 0x4c, 0x1b, 0x00, 0xa1, 0xe0, 0x7f, 0x0c, 0x70, 0xc3, 0x41, 0x80, 0x00, + 0x44, 0x1b, 0x00, 0xa1, 0xe0, 0x7f, 0x0c, 0x70, 0xc3, 0x41, 0x80, 0x00, + 0x6c, 0x1b, 0x00, 0xa1, 0xe0, 0x7f, 0x0c, 0x70, 0xc3, 0x41, 0x80, 0x00, + 0x78, 0x1b, 0x00, 0xa1, 0xe0, 0x7f, 0x0c, 0x70, 0xf6, 0xc2, 0xcb, 0x45, + 0x80, 0x00, 0x44, 0x1b, 0x00, 0x31, 0x41, 0x00, 0x48, 0x1d, 0x01, 0x10, + 0x00, 0x30, 0x00, 0x00, 0x65, 0x85, 0x01, 0x30, 0x40, 0x00, 0x26, 0x85, + 0x00, 0x32, 0x82, 0x00, 0xd3, 0x44, 0x80, 0x3e, 0x00, 0x00, 0x01, 0x30, + 0x80, 0x00, 0xc7, 0x85, 0x00, 0x33, 0x82, 0x0f, 0x40, 0xbf, 0x00, 0x00, + 0x66, 0xa5, 0x00, 0x31, 0x01, 0x05, 0x2e, 0x08, 0x6f, 0x03, 0x01, 0x31, + 0x8f, 0x00, 0x24, 0x15, 0x12, 0x10, 0x23, 0x85, 0x81, 0x85, 0x44, 0x85, + 0x02, 0x31, 0x81, 0x04, 0x6b, 0x85, 0x08, 0x15, 0x13, 0x10, 0x00, 0x36, + 0x08, 0x15, 0x07, 0xa5, 0x00, 0x30, 0x0b, 0x05, 0xc1, 0x6b, 0x02, 0x32, + 0x80, 0x04, 0xcb, 0xa5, 0x00, 0x34, 0x41, 0x10, 0x01, 0x33, 0x0b, 0x12, + 0x00, 0x34, 0x00, 0x10, 0x01, 0x32, 0x50, 0x20, 0x62, 0x41, 0x02, 0x33, + 0xcf, 0x13, 0x01, 0x32, 0x11, 0x20, 0xe5, 0xa5, 0x02, 0x30, 0x80, 0x24, + 0x0c, 0x1d, 0x00, 0x14, 0x4e, 0x0b, 0x2f, 0x03, 0x10, 0x1d, 0x40, 0x14, + 0x45, 0xf6, 0x01, 0x32, 0xd0, 0x24, 0x0c, 0x1d, 0x00, 0x14, 0xe1, 0x40, + 0x3a, 0x0b, 0x2f, 0x03, 0x02, 0x41, 0xa2, 0x00, 0x0c, 0x00, 0x10, 0x85, + 0x9b, 0x08, 0xb1, 0x00, 0xe3, 0xa5, 0x97, 0x0e, 0xd4, 0x11, 0x11, 0x85, + 0x32, 0xe8, 0x38, 0x15, 0x16, 0x10, 0x3c, 0x15, 0x15, 0x10, 0x28, 0x15, + 0x10, 0x10, 0x40, 0x26, 0x41, 0xa0, 0x41, 0x25, 0x00, 0xa0, 0x2e, 0xa5, + 0x0f, 0xa5, 0xc1, 0x40, 0xd2, 0x0d, 0x2f, 0x03, 0x01, 0x30, 0x17, 0x24, + 0x08, 0x46, 0x02, 0x37, 0x00, 0x20, 0xc3, 0x41, 0x40, 0x40, 0x00, 0x00, + 0xf2, 0x0a, 0x2f, 0x03, 0xbf, 0xb8, 0x48, 0xf6, 0x40, 0x26, 0x81, 0xa0, + 0x41, 0x25, 0x00, 0xa0, 0x2e, 0xa5, 0x0f, 0xa5, 0x00, 0x36, 0x00, 0x15, + 0xcd, 0x70, 0x00, 0x30, 0x81, 0x2f, 0x40, 0x3f, 0x00, 0x00, 0x40, 0x1d, + 0x41, 0x10, 0x01, 0x30, 0x40, 0x00, 0xcb, 0xa5, 0x48, 0x1d, 0x41, 0x10, + 0x0a, 0xa5, 0x17, 0xf0, 0x0c, 0x85, 0x4d, 0x85, 0x2c, 0x71, 0x04, 0x71, + 0xcd, 0x70, 0x32, 0xa5, 0xcb, 0xa5, 0x30, 0xa5, 0x1b, 0x08, 0xa4, 0x00, + 0x0c, 0xa5, 0x4e, 0x85, 0x6f, 0x85, 0xcc, 0xa5, 0x00, 0x20, 0x80, 0x80, + 0x31, 0xa5, 0x41, 0x23, 0x01, 0x80, 0x0e, 0xa5, 0x2f, 0xa5, 0x02, 0x32, + 0x40, 0x24, 0x92, 0x0a, 0x2f, 0x03, 0x62, 0x41, 0x45, 0xf6, 0x02, 0x32, + 0xd1, 0x24, 0x10, 0x1d, 0x40, 0x14, 0xe1, 0x40, 0x7e, 0x0a, 0x2f, 0x03, + 0x22, 0x41, 0x45, 0xf6, 0xe4, 0xa5, 0x40, 0x1d, 0x81, 0x10, 0x17, 0x0e, + 0x94, 0x19, 0xc3, 0x40, 0x40, 0x41, 0x00, 0x00, 0x44, 0x1d, 0x01, 0x10, + 0x30, 0x1d, 0x01, 0x10, 0x0a, 0xa5, 0x00, 0x85, 0x02, 0x36, 0x02, 0x70, + 0x80, 0x3f, 0x00, 0x00, 0x00, 0x32, 0x01, 0x20, 0x00, 0x37, 0x80, 0x10, + 0x01, 0x31, 0x01, 0x00, 0x0c, 0x70, 0x29, 0xa5, 0xd6, 0xc6, 0xe0, 0x78, + 0xf1, 0xc0, 0xc3, 0x41, 0x80, 0x00, 0xe4, 0x11, 0x40, 0x81, 0x2c, 0x70, + 0xcf, 0x5a, 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe4, 0xc3, 0xa5, 0xc1, + 0x08, 0x45, 0x80, 0xc0, 0x26, 0x0b, 0x6f, 0x07, 0x80, 0xc6, 0x42, 0x0b, + 0x2f, 0x07, 0x40, 0x24, 0xc0, 0x34, 0x13, 0x14, 0x80, 0x30, 0x2f, 0x38, + 0x03, 0x00, 0x43, 0xc0, 0x4a, 0x20, 0x00, 0x00, 0x20, 0x86, 0x04, 0x71, + 0x00, 0x39, 0x81, 0x0f, 0x20, 0x3c, 0x12, 0xac, 0xf5, 0x08, 0xf2, 0x80, + 0x04, 0x1e, 0x50, 0x10, 0x00, 0x16, 0x80, 0x70, 0x80, 0x00, 0xe4, 0x1f, + 0x0d, 0x08, 0x7e, 0x01, 0xf9, 0xd8, 0x48, 0x85, 0x80, 0xc1, 0xce, 0x5a, + 0xc3, 0x40, 0x80, 0x00, 0xa4, 0x13, 0x6e, 0x0c, 0xaf, 0xfd, 0x80, 0xc1, + 0x84, 0x20, 0x42, 0x00, 0x8c, 0x20, 0x42, 0x80, 0x0d, 0xf4, 0x28, 0x85, + 0xc3, 0x40, 0x80, 0x00, 0xe4, 0x11, 0x20, 0xa0, 0x48, 0x85, 0x2c, 0x70, + 0xa1, 0x40, 0xcf, 0x5a, 0x2c, 0x70, 0xa1, 0x40, 0xdf, 0x5a, 0x0c, 0x70, + 0xc4, 0xc7, 0xe0, 0x78, 0xf1, 0xc0, 0xc3, 0x40, 0x80, 0x00, 0xa4, 0x13, + 0x32, 0x0c, 0x8f, 0xfd, 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, + 0x2c, 0x70, 0x03, 0xf0, 0x24, 0x71, 0x01, 0x08, 0x71, 0x00, 0x1d, 0x78, + 0x0c, 0x71, 0xe0, 0x7f, 0x38, 0x78, 0xe0, 0x78, 0x2c, 0x70, 0x63, 0x18, + 0x42, 0x00, 0x68, 0x18, 0x42, 0x00, 0xe0, 0x7f, 0x67, 0x18, 0x42, 0x00, + 0xee, 0xc2, 0xcb, 0x47, 0x00, 0x00, 0xff, 0x7f, 0x10, 0x43, 0xf2, 0x78, + 0x50, 0x42, 0x28, 0x46, 0x40, 0x20, 0x51, 0x00, 0x10, 0x40, 0xad, 0x70, + 0x00, 0x86, 0x72, 0x09, 0x2f, 0x03, 0x00, 0x30, 0xc0, 0x04, 0xe1, 0x41, + 0xf1, 0x70, 0xca, 0x21, 0x0c, 0x00, 0xcc, 0x20, 0x0c, 0x84, 0xca, 0x21, + 0x4c, 0x04, 0xa5, 0x71, 0x02, 0x1a, 0x54, 0x20, 0xe1, 0x0d, 0xf2, 0x90, + 0xc5, 0x74, 0xce, 0xc6, 0xf1, 0xc0, 0x12, 0x09, 0x6f, 0xff, 0x00, 0x42, + 0x07, 0x08, 0x84, 0x00, 0x41, 0x68, 0x50, 0x7a, 0x02, 0x09, 0x6f, 0xff, + 0xab, 0x22, 0xa1, 0x07, 0x0d, 0x08, 0xa1, 0x00, 0x01, 0x6a, 0x10, 0x78, + 0xab, 0x20, 0xa1, 0x07, 0xd1, 0xc0, 0xe0, 0x7e, 0xe2, 0xc2, 0x08, 0x45, + 0xfa, 0x0e, 0x2f, 0x04, 0x05, 0x10, 0xc0, 0x00, 0x05, 0xe8, 0xa6, 0x08, + 0x6f, 0x04, 0x05, 0x15, 0xc0, 0x10, 0xc2, 0xc6, 0xf1, 0xc0, 0xc3, 0x41, + 0x80, 0x00, 0x0c, 0x12, 0x40, 0x81, 0x2c, 0x70, 0xcf, 0x5a, 0xd1, 0xc0, + 0xe0, 0x7f, 0x0c, 0x70, 0xe2, 0xc3, 0xa1, 0xc1, 0x08, 0x45, 0xda, 0x09, + 0xaf, 0x07, 0x40, 0x24, 0x80, 0x30, 0x02, 0x14, 0x00, 0x31, 0x0e, 0xe8, + 0x28, 0x85, 0xc3, 0x40, 0x80, 0x00, 0x0c, 0x12, 0x20, 0xa0, 0x48, 0x85, + 0x2c, 0x70, 0xa1, 0x40, 0xcf, 0x5a, 0x2c, 0x70, 0xa1, 0x40, 0xdf, 0x5a, + 0x0c, 0x70, 0xc2, 0xc7, 0xe4, 0xc0, 0xc3, 0x41, 0x80, 0x00, 0xb0, 0x36, + 0x8a, 0x26, 0x1d, 0x1b, 0x8a, 0x25, 0x06, 0x14, 0x25, 0xdc, 0x0c, 0x70, + 0xc3, 0x43, 0x80, 0x00, 0x4c, 0x12, 0xc6, 0xb1, 0xa7, 0xb1, 0x88, 0xb1, + 0x12, 0x19, 0x05, 0x03, 0x0c, 0xb1, 0x1d, 0xa9, 0x00, 0xb3, 0xc4, 0xc4, + 0xe6, 0xc0, 0xcb, 0x44, 0x80, 0x00, 0xb0, 0x36, 0x60, 0x84, 0xa1, 0x84, + 0xc2, 0x84, 0x05, 0x25, 0xcb, 0x10, 0x05, 0x23, 0xbe, 0x93, 0x08, 0xf4, + 0x48, 0x46, 0x28, 0x45, 0x00, 0x43, 0x00, 0xa4, 0x21, 0xa4, 0x42, 0xa4, + 0xea, 0x94, 0x37, 0xef, 0x15, 0x0f, 0x51, 0x10, 0x48, 0x46, 0x28, 0x45, + 0x00, 0x43, 0x00, 0xa4, 0x21, 0xa4, 0x42, 0xa4, 0x16, 0x1c, 0x05, 0x10, + 0x0e, 0x14, 0x0b, 0x11, 0x62, 0x78, 0x11, 0x78, 0x3f, 0x08, 0xe3, 0x02, + 0xb0, 0x49, 0x11, 0x78, 0x37, 0x08, 0xe3, 0x02, 0xd0, 0x4a, 0x11, 0x78, + 0x2f, 0x08, 0xc3, 0x02, 0xc3, 0x42, 0x80, 0x00, 0x4c, 0x12, 0x00, 0x92, + 0xe2, 0x78, 0x11, 0x78, 0x10, 0x78, 0x0d, 0x08, 0x71, 0x00, 0x3d, 0x8c, + 0x24, 0x71, 0x3d, 0xac, 0x2d, 0x78, 0x17, 0x08, 0xb2, 0x00, 0xe0, 0xb2, + 0x1c, 0x1c, 0x03, 0x10, 0x14, 0x1c, 0x05, 0x10, 0x07, 0xf0, 0x1d, 0x1c, + 0x03, 0x10, 0x09, 0x6f, 0x0a, 0xb4, 0x18, 0x1c, 0x05, 0x10, 0x0c, 0x70, + 0xc6, 0xc4, 0xe6, 0x94, 0x73, 0x48, 0x71, 0x7b, 0x33, 0x0f, 0xe2, 0x10, + 0xb3, 0x49, 0x71, 0x7b, 0x2b, 0x0f, 0xe2, 0x10, 0xd3, 0x4a, 0x71, 0x7b, + 0x23, 0x0f, 0xc2, 0x10, 0x1c, 0x8c, 0xdf, 0x08, 0x51, 0x80, 0x0b, 0x94, + 0x29, 0x94, 0x04, 0x71, 0x0b, 0xb4, 0x10, 0x78, 0xcf, 0x09, 0x03, 0x80, + 0x16, 0x1c, 0x05, 0x10, 0x1c, 0x1c, 0x03, 0x10, 0xe1, 0xf1, 0xbc, 0x8c, + 0x17, 0x0d, 0x71, 0x10, 0x6c, 0x70, 0x00, 0xa4, 0x21, 0xa4, 0x42, 0xa4, + 0x18, 0x1c, 0x45, 0x10, 0x7c, 0xac, 0x6b, 0xb4, 0xd7, 0xf1, 0x1c, 0x1c, + 0x43, 0x10, 0x08, 0x94, 0x6c, 0xb4, 0x0a, 0xb4, 0xd1, 0xf1, 0xe0, 0x78, + 0xf1, 0xc0, 0xa1, 0xc1, 0xc3, 0x41, 0x80, 0x00, 0x00, 0x12, 0x60, 0x91, + 0x42, 0x81, 0x80, 0xc1, 0x00, 0x1c, 0xc4, 0x30, 0xcf, 0x5a, 0x87, 0x74, + 0xd1, 0xc0, 0xe0, 0x7f, 0x0c, 0x70, 0xe0, 0x78, 0xf1, 0xc0, 0xc3, 0x41, + 0x80, 0x00, 0xf4, 0x11, 0x40, 0x81, 0x2c, 0x70, 0xcf, 0x5a, 0xd1, 0xc0, + 0xe0, 0x7f, 0x0c, 0x70, 0xe4, 0xc3, 0xa1, 0xc1, 0x08, 0x45, 0xc2, 0x0f, + 0x2f, 0x07, 0x40, 0x24, 0xc0, 0x30, 0x03, 0x14, 0x81, 0x30, 0xcb, 0x46, + 0x80, 0x00, 0xf4, 0x11, 0x0b, 0xe9, 0x04, 0x8e, 0x89, 0xe8, 0x08, 0x85, + 0x2c, 0x70, 0x00, 0xa6, 0x48, 0x85, 0xa1, 0x40, 0xcf, 0x5a, 0x03, 0x14, + 0x81, 0x30, 0x0c, 0x70, 0x24, 0xae, 0xc4, 0xc7, 0xe4, 0xc3, 0xa3, 0xc1, + 0x08, 0x45, 0x9a, 0x0f, 0x2f, 0x07, 0x80, 0xc0, 0xc3, 0x41, 0x80, 0x00, + 0x00, 0x12, 0x01, 0xc3, 0xc1, 0x81, 0x00, 0xc2, 0x80, 0x81, 0x67, 0x7e, + 0x47, 0x7c, 0x05, 0x24, 0xbe, 0x93, 0x0c, 0xf2, 0x40, 0xa1, 0x61, 0xa1, + 0x08, 0x85, 0x08, 0x1c, 0x84, 0x30, 0x02, 0xa1, 0x48, 0x85, 0x82, 0xc1, + 0xa1, 0x40, 0xcf, 0x5a, 0x0c, 0x70, 0xc4, 0xc7, 0xe2, 0xc2, 0xcb, 0x45, + 0x80, 0x00, 0x00, 0x12, 0x5a, 0x0f, 0x2f, 0x07, 0xa1, 0x40, 0x04, 0x77, + 0x42, 0x28, 0xc1, 0x07, 0x00, 0xa5, 0x0c, 0x70, 0x21, 0xa5, 0xc2, 0xc6, + 0xe4, 0xc3, 0xa5, 0xc1, 0x00, 0x16, 0x81, 0x70, 0x80, 0x00, 0xe4, 0x1f, + 0x3d, 0x09, 0xbe, 0x01, 0x08, 0x45, 0x80, 0xc0, 0x80, 0xc6, 0xa4, 0x5a, + 0x40, 0x24, 0xc0, 0x34, 0xa3, 0x5a, 0x13, 0x14, 0x80, 0x30, 0x2f, 0x38, + 0x03, 0x00, 0x43, 0xc0, 0x4a, 0x20, 0x00, 0x00, 0x20, 0x86, 0x04, 0x71, + 0x00, 0x39, 0x81, 0x0f, 0x20, 0x3c, 0x12, 0xac, 0xf5, 0x08, 0xf2, 0x80, + 0x04, 0x1e, 0x50, 0x10, 0x48, 0x85, 0xfb, 0xd8, 0x80, 0xc1, 0xce, 0x5a, + 0xba, 0x0a, 0xef, 0x06, 0xa1, 0x40, 0xc4, 0xc7, 0xea, 0xc2, 0x08, 0x47, + 0x36, 0xe8, 0x00, 0x8f, 0x69, 0x08, 0x3f, 0x01, 0xad, 0x70, 0x02, 0x97, + 0xd3, 0x40, 0x80, 0x00, 0x8c, 0x1e, 0x04, 0x71, 0xcd, 0x70, 0x2f, 0x21, + 0x08, 0x20, 0x03, 0xf0, 0xc5, 0x71, 0x00, 0x10, 0x81, 0x20, 0xcd, 0x78, + 0x31, 0x08, 0x43, 0x00, 0x0a, 0x0b, 0x0f, 0x04, 0x14, 0x70, 0xcc, 0x20, + 0xc2, 0x83, 0xf6, 0xf3, 0x20, 0x88, 0xe9, 0x09, 0x5e, 0x80, 0x22, 0x90, + 0x24, 0x71, 0x30, 0x79, 0x19, 0x09, 0x40, 0x04, 0x09, 0x29, 0x7e, 0x84, + 0x04, 0xf2, 0x09, 0x29, 0x7e, 0xa0, 0xe8, 0xf5, 0x08, 0x45, 0xe6, 0xf1, + 0x83, 0xed, 0x0c, 0xf0, 0x08, 0x45, 0x03, 0x95, 0x04, 0x71, 0x09, 0x28, + 0x40, 0x04, 0x22, 0x70, 0x04, 0x77, 0x09, 0x28, 0x40, 0x04, 0x03, 0xb7, + 0xca, 0xc6, 0xe0, 0x78, 0xe6, 0xc2, 0xc2, 0x0a, 0x2f, 0x04, 0xaa, 0x27, + 0x61, 0x1c, 0x08, 0x46, 0x2c, 0xe8, 0x00, 0x8e, 0x55, 0x08, 0x7f, 0x00, + 0xad, 0x70, 0x8b, 0xbd, 0xc1, 0x40, 0x76, 0x0f, 0xef, 0xff, 0xab, 0x25, + 0xe2, 0x16, 0x96, 0x0b, 0x8f, 0xff, 0x20, 0x96, 0x81, 0xb9, 0x20, 0xb6, + 0x06, 0xe8, 0xfa, 0x09, 0x00, 0x00, 0x35, 0x0f, 0xdf, 0x12, 0x16, 0xf0, + 0x0c, 0x70, 0xab, 0x20, 0xa1, 0x07, 0xaa, 0x20, 0x61, 0x07, 0x8a, 0x21, + 0x3c, 0x00, 0x4c, 0x71, 0x04, 0x79, 0x81, 0xb8, 0x0f, 0x78, 0x25, 0x78, + 0xab, 0x20, 0x61, 0x07, 0xab, 0x25, 0x62, 0x17, 0xce, 0x09, 0x20, 0x00, + 0xab, 0x22, 0x61, 0x07, 0xab, 0x25, 0xa2, 0x16, 0xc6, 0xc6, 0xe0, 0x78, + 0xf1, 0xc0, 0x5a, 0x0a, 0x0f, 0x04, 0x00, 0x41, 0x0c, 0x70, 0x03, 0xe9, + 0x01, 0x91, 0xd1, 0xc0, 0xe0, 0x7e, 0xe0, 0x78, 0xe2, 0xc2, 0xee, 0x0a, + 0x0f, 0x04, 0x0d, 0x08, 0x33, 0x00, 0x08, 0x45, 0xa0, 0xd8, 0xcd, 0x5a, + 0xa1, 0x40, 0xc2, 0xc6, 0xea, 0xc2, 0x10, 0x40, 0x2e, 0x0a, 0x2f, 0x04, + 0x28, 0x47, 0x08, 0x45, 0xff, 0xd8, 0xb5, 0x70, 0x30, 0xf2, 0x20, 0x8d, + 0xe0, 0xb9, 0x2e, 0xf2, 0x2f, 0x27, 0x7f, 0x04, 0x6f, 0x23, 0x3f, 0x00, + 0x06, 0x0b, 0x8f, 0xff, 0x08, 0x46, 0x06, 0xe8, 0xab, 0x26, 0xe2, 0x76, + 0x00, 0x00, 0x00, 0x08, 0x2f, 0x26, 0x7f, 0x04, 0xe1, 0xb5, 0xaa, 0x20, + 0x22, 0x04, 0x20, 0xd9, 0x22, 0xb8, 0xc1, 0xb8, 0x00, 0x29, 0x00, 0x00, + 0x9a, 0x20, 0x0f, 0x0a, 0x05, 0x28, 0xc1, 0x03, 0x00, 0x8d, 0xe1, 0xb8, + 0xc3, 0x71, 0x00, 0x00, 0xff, 0xff, 0x20, 0x40, 0x22, 0xb5, 0x03, 0xf4, + 0x03, 0xb5, 0xa2, 0x0e, 0xef, 0xff, 0xa1, 0x40, 0x05, 0xee, 0xab, 0x26, + 0xa2, 0x76, 0x00, 0x00, 0x00, 0x08, 0x02, 0x40, 0x0d, 0x78, 0xca, 0xc6, + 0xe6, 0xc2, 0x08, 0x45, 0x07, 0x80, 0xcd, 0x70, 0x10, 0xe8, 0x08, 0x85, + 0x0e, 0xe8, 0xa1, 0x40, 0xbc, 0x5a, 0x28, 0x85, 0x08, 0x47, 0x60, 0x79, + 0xa1, 0x40, 0x11, 0x0f, 0x20, 0x10, 0xe1, 0x40, 0x47, 0x85, 0x60, 0x7a, + 0xa1, 0x41, 0xcd, 0x71, 0xc1, 0x40, 0xc6, 0xc6, 0xea, 0xc3, 0xa3, 0xc1, + 0x08, 0x47, 0x15, 0x88, 0x50, 0x41, 0xc1, 0xb8, 0xe7, 0x08, 0xb0, 0x00, + 0x28, 0x46, 0x00, 0x16, 0x0d, 0x70, 0x80, 0x00, 0x34, 0x1f, 0x40, 0x24, + 0xc1, 0x32, 0x82, 0xc2, 0x40, 0x24, 0x83, 0x31, 0x40, 0x24, 0x84, 0x30, + 0x40, 0x24, 0x45, 0x31, 0xe1, 0x40, 0xb4, 0x5a, 0x02, 0x14, 0x02, 0x31, + 0x4f, 0x21, 0x40, 0x21, 0x50, 0x21, 0x41, 0x21, 0x5a, 0x20, 0x90, 0x02, + 0x5a, 0x21, 0x80, 0x02, 0xd1, 0x72, 0x00, 0x20, 0x50, 0x23, 0x1d, 0x65, + 0x6c, 0x21, 0x11, 0x21, 0x0f, 0x09, 0x31, 0x28, 0xca, 0x26, 0x85, 0x10, + 0x02, 0x18, 0x84, 0x23, 0x02, 0xf0, 0xc1, 0xb5, 0x15, 0x8f, 0x21, 0x08, + 0x7e, 0x01, 0xa1, 0x40, 0x22, 0x09, 0xcf, 0x04, 0x1e, 0x09, 0xef, 0x04, + 0x02, 0x40, 0x02, 0x10, 0x00, 0x21, 0x84, 0xe8, 0x01, 0x95, 0x33, 0xe8, + 0xcd, 0x71, 0x31, 0xf0, 0x02, 0x10, 0x01, 0x21, 0x01, 0x95, 0x41, 0x09, + 0x20, 0x00, 0x08, 0x20, 0x4e, 0x00, 0x1c, 0xe9, 0x1a, 0xe8, 0xe1, 0x40, + 0xb3, 0x5a, 0x52, 0x0c, 0xcf, 0x02, 0x02, 0x14, 0x01, 0x31, 0x8f, 0xe8, + 0x76, 0x8f, 0x4c, 0x71, 0x0d, 0x00, 0x00, 0x00, 0x5b, 0x78, 0x44, 0x71, + 0xca, 0x22, 0x01, 0x00, 0x04, 0x29, 0x80, 0x00, 0xf5, 0x08, 0xa5, 0x83, + 0xe0, 0xbb, 0x1b, 0x09, 0x31, 0x28, 0xa1, 0x42, 0x02, 0x43, 0x0b, 0xf0, + 0xc6, 0x08, 0xef, 0x04, 0xa1, 0x40, 0xc2, 0x08, 0xef, 0x04, 0x02, 0x40, + 0x07, 0xf0, 0x02, 0x42, 0xa1, 0x43, 0x22, 0x0d, 0xef, 0xfe, 0xe1, 0x44, + 0x08, 0x46, 0x13, 0x97, 0x13, 0x08, 0x80, 0x03, 0x12, 0x1f, 0x43, 0x10, + 0xd3, 0xb7, 0x00, 0x1e, 0x43, 0x70, 0x80, 0x00, 0x96, 0x1f, 0xca, 0xc7, + 0xf1, 0xc0, 0xca, 0x0b, 0x0f, 0xff, 0xb2, 0x08, 0x0f, 0x04, 0x04, 0xe8, + 0xae, 0x0a, 0xcf, 0xff, 0xd1, 0xc0, 0xe0, 0x7e, 0xf6, 0xc3, 0xa1, 0xc1, + 0x21, 0x80, 0x10, 0x40, 0x34, 0x70, 0xd6, 0x02, 0x21, 0x00, 0x24, 0xd8, + 0xf1, 0x81, 0x03, 0x8f, 0x24, 0x8f, 0x45, 0x8f, 0x0c, 0xb8, 0x04, 0xb9, + 0x05, 0x79, 0x41, 0x2a, 0x00, 0x01, 0xca, 0x0d, 0xef, 0x02, 0x25, 0x78, + 0xcb, 0x46, 0x10, 0x3f, 0x00, 0x00, 0x4c, 0x70, 0xc1, 0x43, 0x10, 0x45, + 0xbe, 0x0d, 0xaf, 0x02, 0x30, 0x46, 0xcb, 0x45, 0x80, 0x00, 0xf8, 0x1a, + 0x40, 0x95, 0x10, 0x41, 0x40, 0x40, 0xba, 0x0d, 0xef, 0x02, 0x30, 0x42, + 0x4c, 0x70, 0xc3, 0x43, 0x50, 0xbf, 0x00, 0x00, 0x10, 0x44, 0x9e, 0x0d, + 0xaf, 0x02, 0x30, 0x47, 0x22, 0x42, 0x1e, 0x0f, 0x6f, 0x02, 0x42, 0x43, + 0x41, 0x9d, 0x10, 0x41, 0x40, 0x40, 0x82, 0x0d, 0xef, 0x02, 0x30, 0x42, + 0x22, 0x42, 0x82, 0x0d, 0xaf, 0x02, 0x42, 0x43, 0x10, 0x42, 0x30, 0x43, + 0xc3, 0x43, 0xe0, 0x3e, 0x00, 0x00, 0x4c, 0x70, 0xa2, 0x40, 0xc2, 0x41, + 0x6a, 0x0d, 0xaf, 0x02, 0x70, 0x41, 0x10, 0x45, 0x30, 0x46, 0x4c, 0x70, + 0xc3, 0x43, 0x20, 0xbf, 0x00, 0x00, 0x82, 0x40, 0x56, 0x0d, 0xaf, 0x02, + 0xe2, 0x41, 0xa2, 0x42, 0xd6, 0x0e, 0x6f, 0x02, 0xc2, 0x43, 0x00, 0x42, + 0x46, 0x0d, 0xaf, 0x02, 0x20, 0x43, 0x42, 0x9d, 0x10, 0x45, 0x40, 0x40, + 0x32, 0x0d, 0xef, 0x02, 0x30, 0x44, 0xa2, 0x42, 0x32, 0x0d, 0xaf, 0x02, + 0x82, 0x43, 0x42, 0x42, 0xb2, 0x0e, 0x6f, 0x02, 0x62, 0x43, 0xaa, 0x0c, + 0xcf, 0x02, 0x1a, 0x0d, 0xcf, 0x02, 0x4f, 0x21, 0x03, 0x26, 0x4c, 0x70, + 0x16, 0x0d, 0xaf, 0x02, 0x70, 0x42, 0xc3, 0x43, 0xef, 0xc0, 0x00, 0x40, + 0x92, 0x0e, 0x6f, 0x02, 0x4c, 0x70, 0x45, 0x9d, 0x10, 0x43, 0x40, 0x40, + 0xf6, 0x0c, 0xef, 0x02, 0x30, 0x44, 0x62, 0x42, 0xf6, 0x0c, 0xaf, 0x02, + 0x82, 0x43, 0x62, 0x42, 0xee, 0x0c, 0xaf, 0x02, 0x82, 0x43, 0x50, 0x21, + 0x43, 0x25, 0x4c, 0x70, 0xe2, 0x0c, 0xaf, 0x02, 0x70, 0x41, 0x44, 0x9d, + 0x10, 0x45, 0x40, 0x40, 0xce, 0x0c, 0xef, 0x02, 0x30, 0x46, 0x62, 0x42, + 0xce, 0x0c, 0xaf, 0x02, 0x82, 0x43, 0xa2, 0x42, 0x4e, 0x0e, 0x6f, 0x02, + 0xc2, 0x43, 0x4c, 0x70, 0xbe, 0x0c, 0xaf, 0x02, 0x22, 0x43, 0x50, 0x26, + 0x03, 0x15, 0xb6, 0x0c, 0xaf, 0x02, 0x4c, 0x70, 0x4f, 0x22, 0x03, 0x25, + 0x32, 0x0e, 0x6f, 0x02, 0x4c, 0x70, 0x43, 0x95, 0x10, 0x41, 0x40, 0x40, + 0xaa, 0x0c, 0xef, 0x02, 0x28, 0x46, 0x22, 0x42, 0x96, 0x0c, 0xaf, 0x02, + 0xc1, 0x43, 0x10, 0x42, 0x50, 0x21, 0xc0, 0x07, 0x05, 0x20, 0xbe, 0x84, + 0x30, 0x45, 0x26, 0xd8, 0xb7, 0xf2, 0x62, 0x40, 0x82, 0x41, 0x62, 0x42, + 0x7a, 0x0c, 0xaf, 0x02, 0x82, 0x43, 0x48, 0x9d, 0x10, 0x41, 0x40, 0x40, + 0x66, 0x0c, 0xef, 0x02, 0x28, 0x46, 0x22, 0x42, 0x66, 0x0c, 0xaf, 0x02, + 0xc1, 0x43, 0xc3, 0x43, 0x00, 0x3f, 0x00, 0x00, 0x4c, 0x70, 0x5a, 0x0c, + 0xaf, 0x02, 0x70, 0x41, 0x47, 0x9d, 0x08, 0x46, 0x40, 0x40, 0x46, 0x0c, + 0xef, 0x02, 0x30, 0x46, 0x62, 0x42, 0x46, 0x0c, 0xaf, 0x02, 0x82, 0x43, + 0x00, 0x42, 0xc6, 0x0d, 0x6f, 0x02, 0x20, 0x43, 0xc1, 0x42, 0xbe, 0x0d, + 0x6f, 0x02, 0xc2, 0x43, 0xc3, 0x43, 0xd0, 0x3f, 0x00, 0x00, 0x2a, 0x0c, + 0xaf, 0x02, 0x4c, 0x70, 0x46, 0x9d, 0x08, 0x46, 0x40, 0x40, 0x16, 0x0c, + 0xef, 0x02, 0x30, 0x43, 0xc3, 0x43, 0xf0, 0x40, 0x00, 0x00, 0x12, 0x0c, + 0xaf, 0x02, 0x4c, 0x70, 0xc1, 0x42, 0x92, 0x0d, 0x6f, 0x02, 0x62, 0x43, + 0xc3, 0x43, 0x30, 0xbf, 0x00, 0x00, 0xfe, 0x0b, 0xaf, 0x02, 0x4c, 0x70, + 0x40, 0x8f, 0x61, 0x8f, 0x82, 0x8f, 0x0c, 0xba, 0x04, 0xbb, 0x45, 0x7b, + 0x41, 0x2c, 0x02, 0x11, 0x65, 0x7a, 0x08, 0x47, 0x40, 0x40, 0xda, 0x0b, + 0xef, 0x02, 0x28, 0x46, 0xc3, 0x43, 0x30, 0x41, 0x00, 0x00, 0x4a, 0x0d, + 0x6f, 0x02, 0x4c, 0x70, 0xe1, 0x42, 0x56, 0x0d, 0x6f, 0x02, 0xc1, 0x43, + 0xc3, 0x43, 0xb8, 0x40, 0x00, 0x6a, 0xc2, 0x0b, 0xaf, 0x02, 0x4c, 0x70, + 0x42, 0x42, 0x1a, 0x08, 0x2f, 0x03, 0xa2, 0x43, 0x4b, 0x9d, 0x08, 0x46, + 0x40, 0x40, 0xa6, 0x0b, 0xef, 0x02, 0x28, 0x47, 0xc1, 0x42, 0xa6, 0x0b, + 0xaf, 0x02, 0xe1, 0x43, 0xc1, 0x42, 0x9e, 0x0b, 0xaf, 0x02, 0xe1, 0x43, + 0x50, 0x21, 0x03, 0x26, 0x92, 0x0b, 0xaf, 0x02, 0x4c, 0x70, 0x4a, 0x9d, + 0x10, 0x42, 0x40, 0x40, 0x7e, 0x0b, 0xef, 0x02, 0x30, 0x43, 0xc1, 0x42, + 0x7e, 0x0b, 0xaf, 0x02, 0xe1, 0x43, 0x4c, 0x70, 0x76, 0x0b, 0xaf, 0x02, + 0x22, 0x43, 0x42, 0x42, 0xf6, 0x0c, 0x6f, 0x02, 0x62, 0x43, 0x49, 0x9d, + 0x10, 0x41, 0x40, 0x40, 0x5a, 0x0b, 0xef, 0x02, 0x28, 0x45, 0x22, 0x42, + 0xe2, 0x0c, 0x6f, 0x02, 0xa1, 0x43, 0xc3, 0x43, 0xb0, 0x3f, 0x00, 0x00, + 0x4e, 0x0b, 0xaf, 0x02, 0x4c, 0x70, 0xc1, 0x42, 0xce, 0x0c, 0x6f, 0x02, + 0xe1, 0x43, 0xc3, 0x43, 0x60, 0x40, 0x00, 0x00, 0x3a, 0x0b, 0xaf, 0x02, + 0x4c, 0x70, 0xaa, 0x0a, 0xcf, 0x02, 0x60, 0xc0, 0x41, 0x28, 0x01, 0x02, + 0x30, 0xb8, 0x01, 0x1c, 0x42, 0x30, 0x02, 0x1c, 0x02, 0x30, 0x20, 0x10, + 0x02, 0x20, 0x80, 0xc1, 0x02, 0x40, 0xcf, 0x5a, 0x0c, 0x70, 0xd6, 0xc7, + 0xc3, 0x41, 0x60, 0x00, 0xa0, 0xc4, 0xc3, 0x42, 0x60, 0x00, 0xc0, 0xbc, + 0xc3, 0x43, 0x50, 0x45, 0xdd, 0xd4, 0xcd, 0x06, 0x4f, 0xff, 0xe0, 0x78, + 0xc3, 0x41, 0x60, 0x00, 0xe4, 0xde, 0xc3, 0x42, 0x60, 0x00, 0x38, 0xc8, + 0xa5, 0x06, 0x4f, 0xff, 0xc3, 0x41, 0x60, 0x00, 0xa0, 0xcb, 0xc3, 0x42, + 0x60, 0x00, 0xc0, 0xbc, 0xc3, 0x43, 0x50, 0x45, 0xdd, 0xd4, 0xa5, 0x06, + 0x4f, 0xff, 0xe0, 0x78, 0xe2, 0xc2, 0xcb, 0x45, 0x60, 0x00, 0x5e, 0x97, + 0x00, 0x14, 0x00, 0x30, 0x15, 0x08, 0x41, 0x03, 0xaa, 0x20, 0xe0, 0x0c, + 0x0f, 0x78, 0xcd, 0x5a, 0x1e, 0x4d, 0x00, 0x1c, 0x00, 0x30, 0xc2, 0xc6, + 0x06, 0x0c, 0x8f, 0x05, 0xc2, 0xc6, 0xe0, 0x78, 0xf1, 0xc0, 0xc3, 0x41, + 0x80, 0x00, 0xe0, 0x11, 0x40, 0x81, 0x2c, 0x70, 0xcf, 0x5a, 0xd1, 0xc0, + 0xe0, 0x7f, 0x0c, 0x70, 0xe4, 0xc3, 0xa5, 0xc1, 0x08, 0x45, 0x80, 0xc0, + 0x76, 0x09, 0x2f, 0x07, 0x80, 0xc6, 0x92, 0x09, 0xef, 0x06, 0x40, 0x24, + 0xc0, 0x34, 0x13, 0x14, 0x80, 0x30, 0x2f, 0x38, 0x03, 0x00, 0x43, 0xc0, + 0x4a, 0x20, 0x00, 0x00, 0x20, 0x86, 0x04, 0x71, 0x00, 0x39, 0x81, 0x0f, + 0x20, 0x3c, 0x12, 0xac, 0xf5, 0x08, 0xf2, 0x80, 0x04, 0x1e, 0x50, 0x10, + 0x00, 0x16, 0x80, 0x70, 0x80, 0x00, 0xe4, 0x1f, 0x0d, 0x08, 0xfe, 0x00, + 0xfb, 0xd8, 0x48, 0x85, 0x80, 0xc1, 0xce, 0x5a, 0xc3, 0x40, 0x80, 0x00, + 0x4c, 0x13, 0xc2, 0x0c, 0x6f, 0xfd, 0x80, 0xc1, 0x84, 0x20, 0x42, 0x00, + 0x8c, 0x20, 0x42, 0x80, 0x0d, 0xf4, 0x28, 0x85, 0xc3, 0x40, 0x80, 0x00, + 0xe0, 0x11, 0x20, 0xa0, 0x48, 0x85, 0x2c, 0x70, 0xa1, 0x40, 0xcf, 0x5a, + 0x2c, 0x70, 0xa1, 0x40, 0xdf, 0x5a, 0x0c, 0x70, 0xc4, 0xc7, 0xe0, 0x78, + 0xf1, 0xc0, 0xc3, 0x41, 0x80, 0x00, 0xf8, 0x1f, 0x56, 0x91, 0xc3, 0x40, + 0x80, 0x00, 0x4c, 0x13, 0x7e, 0x0c, 0x6f, 0xfd, 0x57, 0xb1, 0xd1, 0xc0, + 0xe0, 0x7f, 0x0c, 0x70, 0xe4, 0xc2, 0xb6, 0x0d, 0x2f, 0x06, 0x28, 0x45, + 0x23, 0x0d, 0x71, 0x10, 0x08, 0x46, 0x02, 0x08, 0x0f, 0x04, 0x22, 0x08, + 0x2f, 0x04, 0x08, 0x45, 0x00, 0x42, 0x17, 0xd8, 0xa1, 0x41, 0xb6, 0x5a, + 0x05, 0xe8, 0x0d, 0x88, 0x14, 0x70, 0xc8, 0xd8, 0x02, 0xf4, 0xc1, 0x40, + 0xc4, 0xc6, 0x00, 0x00, 0x49, 0x4e, 0x49, 0x02, 0x80, 0xe6, 0x7f, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xbc, 0x12, 0x80, 0x00, 0x84, 0xe6, 0x7f, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x94, 0x12, 0x80, 0x00, 0xc4, 0x12, 0x80, 0x00, + 0x8c, 0xe6, 0x7f, 0x00, 0x04, 0x00, 0x00, 0x00, 0xcc, 0x12, 0x80, 0x00, + 0x90, 0xe6, 0x7f, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd4, 0x12, 0x80, 0x00, + 0x94, 0xe6, 0x7f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x8c, 0x12, 0x80, 0x00, + 0xb4, 0x12, 0x80, 0x00, 0x9c, 0xe6, 0x7f, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xac, 0x12, 0x80, 0x00, 0xa0, 0xe6, 0x7f, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x9c, 0x12, 0x80, 0x00, 0x90, 0x11, 0x80, 0x00, 0x98, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xaa, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x7c, 0xb2, 0x7f, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3c, 0xb2, 0x7f, 0x00, 0x05, 0x00, 0x00, 0x00, 0x18, 0xd4, 0x7f, 0x00, + 0xa4, 0xe6, 0x7f, 0x00, 0x0c, 0xe8, 0x7f, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x7c, 0xa8, 0x60, 0x00, 0x05, 0x00, 0x00, 0x00, 0xd4, 0xad, 0x60, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x60, 0xab, 0x60, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x44, 0xb0, 0x60, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0xb2, 0x7f, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x8c, 0xab, 0x60, 0x00, 0x80, 0xe6, 0x7f, 0x00, + 0x84, 0xe6, 0x7f, 0x00, 0x84, 0xe6, 0x7f, 0x00, 0x8c, 0xe6, 0x7f, 0x00, + 0x8c, 0xe6, 0x7f, 0x00, 0x90, 0xe6, 0x7f, 0x00, 0x90, 0xe6, 0x7f, 0x00, + 0x94, 0xe6, 0x7f, 0x00, 0x94, 0xe6, 0x7f, 0x00, 0x9c, 0xe6, 0x7f, 0x00, + 0x9c, 0xe6, 0x7f, 0x00, 0xa0, 0xe6, 0x7f, 0x00, 0xa0, 0xe6, 0x7f, 0x00, + 0xa0, 0xe6, 0x7f, 0x00, 0xa0, 0xe6, 0x7f, 0x00, 0xa4, 0xe6, 0x7f, 0x00, + 0x78, 0xc3, 0x60, 0x00, 0x34, 0xbe, 0x60, 0x00, 0xec, 0xc6, 0x60, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x0e, 0x00, + 0xf8, 0xfe, 0xf7, 0xfd, 0xf6, 0xfc, 0x00, 0x00, 0x01, 0x0e, 0x10, 0x00, + 0x19, 0x00, 0x06, 0x00, 0x32, 0x00, 0x07, 0x00, 0x64, 0x00, 0x08, 0x00, + 0xc8, 0x00, 0x09, 0x00, 0x90, 0x01, 0x0a, 0x00, 0x0e, 0x00, 0x01, 0x01, + 0x01, 0x09, 0x0c, 0x88, 0x13, 0x10, 0x01, 0x01, 0x71, 0x2a, 0x00, 0x00, + 0xfa, 0x00, 0x03, 0x00, 0x77, 0x7d, 0x0b, 0x39, 0xf4, 0x01, 0x02, 0x00, + 0xfb, 0xb3, 0x8b, 0x39, 0xe8, 0x03, 0x01, 0x00, 0x77, 0x7d, 0x0b, 0x3a, + 0xd0, 0x07, 0x00, 0x00, 0x77, 0x7d, 0x8b, 0x3a, 0x19, 0x00, 0x06, 0x00, + 0x32, 0x00, 0x07, 0x00, 0x64, 0x00, 0x08, 0x00, 0xc8, 0x00, 0x09, 0x00, + 0x90, 0x01, 0x0a, 0x00, 0xaf, 0xcc, 0x01, 0x3d, 0x07, 0xb3, 0xc2, 0xbd, + 0x07, 0xb3, 0xc2, 0x3d, 0xaf, 0xcc, 0x01, 0xbd, 0x00, 0x00, 0x80, 0x3f, + 0x77, 0xc1, 0xba, 0x3f, 0xf1, 0x0d, 0x69, 0x3f, 0xb0, 0x92, 0x4a, 0x3e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x76, 0x2f, 0x90, 0x01, 0x1b, 0x01, 0x14, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, + 0x00, 0xb1, 0x7f, 0x00, 0xa0, 0xb1, 0x7f, 0x00, 0xb4, 0xb0, 0x7f, 0x00, + 0xb4, 0xb1, 0x7f, 0x00, 0xdc, 0xb0, 0x7f, 0x00, 0x88, 0xb0, 0x7f, 0x00, + 0x64, 0xb0, 0x7f, 0x00, 0xe8, 0xb0, 0x7f, 0x00, 0xc0, 0xb0, 0x7f, 0x00, + 0x90, 0xb1, 0x7f, 0x00, 0xac, 0xb0, 0x7f, 0x00, 0x20, 0x12, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5f, 0x29, 0xcb, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, + 0x20, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x69, 0x08, 0x90, 0x01, 0x30, 0x01, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, + 0xb4, 0xae, 0x7f, 0x00, 0xf0, 0xae, 0x7f, 0x00, 0x40, 0xa1, 0x60, 0x00, + 0xcc, 0xaf, 0x7f, 0x00, 0x4c, 0xa1, 0x60, 0x00, 0xc8, 0xa6, 0x60, 0x00, + 0x08, 0xa7, 0x60, 0x00, 0x58, 0xa1, 0x60, 0x00, 0xbc, 0xa4, 0x60, 0x00, + 0x04, 0xa6, 0x60, 0x00, 0x34, 0xa1, 0x60, 0x00, 0xc4, 0x28, 0x80, 0x00, + 0xcc, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb8, 0x1e, 0x05, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x69, 0x2f, 0x90, 0x01, 0x31, 0x01, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x2c, 0xc6, 0x7f, 0x00, 0xac, 0xc6, 0x7f, 0x00, 0x98, 0xc5, 0x7f, 0x00, + 0x08, 0xc7, 0x7f, 0x00, 0xd0, 0xc5, 0x7f, 0x00, 0x4c, 0xc5, 0x7f, 0x00, + 0x14, 0xc5, 0x7f, 0x00, 0xdc, 0xc5, 0x7f, 0x00, 0xa4, 0xc5, 0x7f, 0x00, + 0x68, 0xc6, 0x7f, 0x00, 0x8c, 0xc5, 0x7f, 0x00, 0x10, 0x1b, 0x80, 0x00, + 0x1c, 0xe6, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcd, 0xcc, 0x4c, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, + 0xe8, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0xe4, 0x03, 0x14, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xdf, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, + 0xe9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xd9, 0x7f, 0x00, + 0x74, 0xd9, 0x7f, 0x00, 0x60, 0xd9, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x01, 0x00, 0x00, 0xea, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc5, 0x7f, 0x00, 0x80, 0xc4, 0x7f, 0x00, 0x6c, 0xc4, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, 0xeb, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x34, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5c, 0xb8, 0x60, 0x00, 0xec, 0xaa, 0x7f, 0x00, + 0x30, 0xb9, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb0, 0xad, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0xf1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe2, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xf3, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe2, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xd4, 0xb5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0xf6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd0, 0xe2, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xf7, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xb3, 0x60, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0xdc, 0x7f, 0x00, 0x2c, 0xdc, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0xf9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x13, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb0, 0xdc, 0x7f, 0x00, 0x74, 0xdc, 0x7f, 0x00, 0x0c, 0xdc, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xfa, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x34, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xda, 0x7f, 0x00, + 0xac, 0xda, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa4, 0xb4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1e, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf4, 0xb6, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0xe8, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x35, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa4, 0xe3, 0x7f, 0x00, 0x24, 0xe3, 0x7f, 0x00, + 0x10, 0xe3, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, + 0xec, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xb7, 0x60, 0x00, + 0xcc, 0xdc, 0x7f, 0x00, 0x48, 0xb8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x42, 0x00, 0xc8, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xd4, 0xb4, 0x7f, 0x00, 0x30, 0xb3, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8b, 0xc8, 0x00, 0x00, 0x03, 0x12, 0x10, 0x00, 0x54, 0x2a, 0x03, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di03_BMA2x2_Cus-7183_di03.2.1.11703.h b/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di03_BMA2x2_Cus-7183_di03.2.1.11703.h new file mode 100644 index 0000000000000000000000000000000000000000..8b48a39dd3502b5f650fbc592f52068cee6afecc --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di03_BMA2x2_Cus-7183_di03.2.1.11703.h @@ -0,0 +1,1492 @@ +const unsigned char bhy1_fw[]= { + 0x2A,0x65,0x00,0x1A,0x06,0xBF,0x65,0x3D,0x00,0x00,0x00, + 0x00,0xEC,0x3F,0x00,0x00,0x28,0xBA,0x7F,0x00,0xD8,0x32, + 0x00,0x00,0x30,0x85,0x7F,0x00,0x4A,0x26,0x00,0x70,0x4A, + 0x26,0x00,0x70,0x4A,0x26,0x00,0x70,0x4A,0x26,0x00,0x70, + 0x4A,0x26,0x00,0x70,0x4A,0x26,0x00,0x70,0x4A,0x26,0x00, + 0x70,0x4A,0x26,0x00,0x70,0x4A,0x26,0x00,0x70,0x4A,0x26, + 0x00,0x70,0x4A,0x26,0x00,0x70,0x4A,0x26,0x00,0x70,0x4A, + 0x26,0x00,0x70,0xE8,0x47,0x60,0x00,0xE8,0x47,0x60,0x00, + 0xE8,0x47,0x60,0x00,0xE8,0x47,0x60,0x00,0xE8,0x47,0x60, + 0x00,0xE8,0x47,0x60,0x00,0xE8,0x47,0x60,0x00,0xE8,0x47, + 0x60,0x00,0x34,0x50,0x60,0x00,0xA4,0x53,0x60,0x00,0x04, + 0x52,0x60,0x00,0xB4,0x94,0x60,0x00,0x30,0x85,0x7F,0x00, + 0x30,0x85,0x7F,0x00,0x30,0x85,0x7F,0x00,0x30,0x85,0x7F, + 0x00,0x4C,0x8D,0x60,0x00,0x4C,0x8D,0x60,0x00,0x4C,0x8D, + 0x60,0x00,0x4C,0x8D,0x60,0x00,0x4C,0x8D,0x60,0x00,0x4C, + 0x8D,0x60,0x00,0x59,0x06,0x4F,0x06,0x91,0x07,0x4F,0x06, + 0xB1,0x02,0x4F,0x08,0xA1,0x04,0x4F,0x08,0xBD,0x05,0x4F, + 0x08,0x05,0x01,0x8F,0x08,0x09,0x01,0x8F,0x08,0xB9,0x03, + 0x8F,0x08,0xC1,0x03,0x8F,0x08,0xD1,0x04,0x8F,0x08,0x1D, + 0x02,0xCF,0x08,0x8D,0x04,0xCF,0x08,0x8D,0x07,0xCF,0x08, + 0xC5,0x07,0xCF,0x08,0x69,0x01,0x0F,0x09,0x99,0x07,0x4F, + 0x09,0xE9,0x07,0x4F,0x09,0x29,0x00,0x8F,0x09,0x31,0x00, + 0x8F,0x09,0xD1,0x00,0x8F,0x09,0xA5,0x01,0x8F,0x09,0xDD, + 0x01,0x8F,0x09,0x09,0x03,0x8F,0x09,0x85,0x03,0x8F,0x09, + 0x49,0x05,0x8F,0x09,0x0D,0x06,0x8F,0x09,0xED,0x07,0x8F, + 0x09,0xBD,0x00,0xCF,0x09,0x1D,0x01,0xCF,0x09,0x95,0x01, + 0xCF,0x09,0x1D,0x02,0xCF,0x09,0x6D,0x02,0xCF,0x09,0xA5, + 0x02,0xCF,0x09,0x41,0x03,0xCF,0x09,0x7D,0x03,0xCF,0x09, + 0xAD,0x05,0xCF,0x09,0x0D,0x06,0xCF,0x09,0x6D,0x06,0xCF, + 0x09,0xC1,0x06,0xCF,0x09,0x85,0x01,0x0F,0x0A,0x11,0x02, + 0x0F,0x0A,0x31,0x02,0x0F,0x0A,0xB5,0x02,0x0F,0x0A,0xB9, + 0x03,0x0F,0x0A,0x69,0x07,0x0F,0x0A,0x05,0x04,0x4F,0x0A, + 0x2D,0x07,0x4F,0x0A,0x95,0x00,0x8F,0x0A,0xAD,0x04,0x8F, + 0x0A,0xD9,0x05,0x8F,0x0A,0x95,0x06,0x8F,0x0A,0xED,0x00, + 0xCF,0x0A,0xF1,0x00,0xCF,0x0A,0xFD,0x00,0xCF,0x0A,0x69, + 0x01,0xCF,0x0A,0x75,0x01,0xCF,0x0A,0x35,0x02,0xCF,0x0A, + 0x05,0x03,0xCF,0x0A,0x09,0x05,0xCF,0x0A,0xFD,0x05,0xCF, + 0x0A,0xB1,0x06,0xCF,0x0A,0x01,0x02,0x0F,0x0B,0xE5,0x02, + 0x0F,0x0B,0xD1,0x02,0x8F,0x0B,0x29,0x03,0x8F,0x0B,0x91, + 0x03,0x8F,0x0B,0xBD,0x03,0x8F,0x0B,0xE1,0x04,0x8F,0x0B, + 0x25,0x05,0x8F,0x0B,0xD5,0x05,0x8F,0x0B,0x39,0x06,0x8F, + 0x0B,0x91,0x07,0x8F,0x0B,0x2D,0x00,0xCF,0x0B,0x49,0x00, + 0xCF,0x0B,0x01,0x01,0xCF,0x0B,0xCD,0x01,0xCF,0x0B,0x79, + 0x05,0xCF,0x0B,0xC9,0x05,0xCF,0x0B,0xB5,0x07,0xCF,0x0B, + 0x69,0x00,0x0F,0x0C,0x85,0x00,0x40,0x01,0xCD,0x00,0x0F, + 0x0C,0xD5,0x00,0x0F,0x0C,0x45,0x01,0x0F,0x0C,0x5D,0x01, + 0x0F,0x0C,0x75,0x01,0x0F,0x0C,0x0D,0x02,0x0F,0x0C,0xBD, + 0x04,0x0F,0x0C,0xDD,0x04,0x0F,0x0C,0x01,0x07,0x0F,0x0C, + 0x41,0x07,0x0F,0x0C,0x49,0x07,0x0F,0x0C,0xC9,0x07,0x0F, + 0x0C,0x1D,0x00,0x4F,0x0C,0x65,0x00,0x4F,0x0C,0x49,0x01, + 0x4F,0x0C,0x65,0x01,0x4F,0x0C,0x99,0x01,0x4F,0x0C,0x3D, + 0x02,0x4F,0x0C,0x65,0x02,0x4F,0x0C,0xB1,0x02,0x4F,0x0C, + 0x61,0x05,0x4F,0x0C,0xB1,0x05,0x4F,0x0C,0x45,0x06,0x4F, + 0x0C,0x79,0x06,0x4F,0x0C,0x85,0x06,0x4F,0x0C,0x19,0x07, + 0x4F,0x0C,0x21,0x00,0x8F,0x0C,0x6D,0x00,0x8F,0x0C,0x7D, + 0x00,0x8F,0x0C,0x7D,0x04,0x8F,0x0C,0x85,0x05,0x8F,0x0C, + 0xC1,0x03,0xCF,0x0C,0xC9,0x03,0xCF,0x0C,0x0D,0x07,0xCF, + 0x0C,0x51,0x07,0xCF,0x0C,0x61,0x07,0xCF,0x0C,0x69,0x01, + 0x40,0x01,0x25,0x00,0x0F,0x0D,0x4D,0x00,0x0F,0x0D,0x6D, + 0x00,0x0F,0x0D,0x71,0x00,0x0F,0x0D,0x71,0x00,0x0F,0x0D, + 0x89,0x00,0x0F,0x0D,0x91,0x00,0x0F,0x0D,0x99,0x00,0x0F, + 0x0D,0xA1,0x00,0x0F,0x0D,0xA5,0x00,0x0F,0x0D,0xAD,0x00, + 0x0F,0x0D,0xBD,0x00,0x0F,0x0D,0xC9,0x00,0x0F,0x0D,0xD5, + 0x00,0x0F,0x0D,0x89,0x01,0x0F,0x0D,0xF9,0x01,0x0F,0x0D, + 0x21,0x03,0x0F,0x0D,0x65,0x03,0x0F,0x0D,0x1D,0x04,0x0F, + 0x0D,0x39,0x04,0x0F,0x0D,0x45,0x04,0x0F,0x0D,0x4D,0x04, + 0x0F,0x0D,0x6D,0x04,0x0F,0x0D,0x71,0x04,0x0F,0x0D,0xF5, + 0x05,0x0F,0x0D,0x3D,0x06,0x0F,0x0D,0x05,0x00,0x4F,0x0D, + 0x51,0x00,0x4F,0x0D,0x8D,0x00,0x4F,0x0D,0xED,0x00,0x4F, + 0x0D,0x21,0x02,0x4F,0x0D,0xBD,0x02,0x4F,0x0D,0xC1,0x03, + 0x4F,0x0D,0x25,0x04,0x4F,0x0D,0x31,0x04,0x4F,0x0D,0x6D, + 0x01,0x40,0x01,0x79,0x01,0x40,0x01,0x85,0x01,0x40,0x01, + 0x91,0x01,0x40,0x01,0x9D,0x01,0x40,0x01,0xA9,0x01,0x40, + 0x01,0xB5,0x01,0x40,0x01,0xD5,0x01,0x40,0x01,0xE1,0x01, + 0x40,0x01,0x05,0x02,0x40,0x01,0x11,0x02,0x40,0x01,0x1D, + 0x02,0x40,0x01,0xC9,0x04,0x4F,0x0D,0xF1,0x05,0x4F,0x0D, + 0x31,0x07,0x4F,0x0D,0x59,0x07,0x4F,0x0D,0x65,0x07,0x4F, + 0x0D,0xA9,0x01,0x8F,0x0D,0xD1,0x01,0x8F,0x0D,0xDD,0x01, + 0x8F,0x0D,0xE5,0x01,0x8F,0x0D,0x09,0x02,0x8F,0x0D,0x2D, + 0x02,0x8F,0x0D,0x7D,0x02,0x8F,0x0D,0x3D,0x03,0x8F,0x0D, + 0x6D,0x04,0x8F,0x0D,0x49,0x05,0x8F,0x0D,0x59,0x05,0x8F, + 0x0D,0x91,0x05,0x8F,0x0D,0xD5,0x05,0x8F,0x0D,0xF1,0x00, + 0xCF,0x0D,0x21,0x02,0xCF,0x0D,0xFD,0x02,0xCF,0x0D,0xBD, + 0x04,0xCF,0x0D,0x89,0x00,0x0F,0x0E,0xC1,0x04,0x0F,0x0E, + 0xF1,0x05,0x0F,0x0E,0x5D,0x07,0x0F,0x0E,0xC9,0x07,0x0F, + 0x0E,0x89,0x05,0x8F,0x0E,0x79,0x06,0x8F,0x0E,0xA1,0x06, + 0x8F,0x0E,0x1D,0x07,0x8F,0x0E,0x6D,0x07,0x8F,0x0E,0x11, + 0x00,0xCF,0x0E,0x4D,0x01,0xCF,0x0E,0x71,0x01,0xCF,0x0E, + 0xBD,0x01,0xCF,0x0E,0xCD,0x01,0xCF,0x0E,0x25,0x02,0xCF, + 0x0E,0x75,0x02,0xCF,0x0E,0xBD,0x02,0xCF,0x0E,0xA1,0x03, + 0xCF,0x0E,0x2D,0x04,0xCF,0x0E,0x75,0x04,0xCF,0x0E,0x81, + 0x04,0xCF,0x0E,0xA5,0x04,0xCF,0x0E,0xE1,0x04,0xCF,0x0E, + 0x11,0x05,0xCF,0x0E,0x65,0x05,0xCF,0x0E,0xD5,0x05,0xCF, + 0x0E,0x2D,0x06,0xCF,0x0E,0xBD,0x07,0xCF,0x0E,0x01,0x00, + 0x0F,0x0F,0x25,0x00,0x0F,0x0F,0x5D,0x04,0x0F,0x0F,0x19, + 0x05,0x0F,0x0F,0x1D,0x03,0x4F,0x0F,0x99,0x04,0x4F,0x0F, + 0x21,0x05,0x4F,0x0F,0x8D,0x05,0x4F,0x0F,0xA9,0x05,0x4F, + 0x0F,0xE1,0x05,0x4F,0x0F,0x81,0x06,0x4F,0x0F,0x95,0x06, + 0x4F,0x0F,0xAD,0x06,0x4F,0x0F,0x01,0x07,0x4F,0x0F,0x1D, + 0x07,0x4F,0x0F,0x31,0x07,0x4F,0x0F,0xC5,0x07,0x4F,0x0F, + 0xE1,0x07,0x4F,0x0F,0x21,0x00,0x8F,0x0F,0x85,0x00,0x8F, + 0x0F,0x9D,0x00,0x8F,0x0F,0xDD,0x00,0x8F,0x0F,0xE5,0x00, + 0x8F,0x0F,0x7D,0x01,0x8F,0x0F,0x9D,0x01,0x8F,0x0F,0xB1, + 0x01,0x8F,0x0F,0xD5,0x01,0x8F,0x0F,0x2D,0x02,0x8F,0x0F, + 0xE5,0x01,0x40,0x01,0x09,0x03,0x8F,0x0F,0x35,0x03,0x8F, + 0x0F,0x71,0x03,0x8F,0x0F,0x69,0x04,0x8F,0x0F,0xC9,0x04, + 0x8F,0x0F,0x7D,0x00,0xCF,0x0F,0x91,0x02,0xCF,0x0F,0x15, + 0x03,0x4F,0x09,0xBD,0x03,0x8F,0x0D,0xFD,0x00,0x8F,0x08, + 0xB1,0x05,0x80,0x00,0x51,0x00,0x40,0x00,0xC1,0x05,0x00, + 0x01,0x35,0x02,0x0F,0x0C,0x9D,0x04,0x0F,0x0C,0x29,0x05, + 0x0F,0x0C,0x6D,0x01,0xCF,0x0C,0x5D,0x06,0xCF,0x0C,0x71, + 0x06,0xCF,0x0C,0x79,0x06,0xCF,0x0C,0x7D,0x06,0xCF,0x0C, + 0x85,0x06,0xCF,0x0C,0xA5,0x06,0xCF,0x0C,0x69,0x07,0xCF, + 0x0C,0x05,0x01,0x0F,0x0D,0x25,0x02,0x0F,0x0D,0x61,0x02, + 0x0F,0x0D,0x65,0x02,0x0F,0x0D,0x69,0x00,0x40,0x01,0x85, + 0x05,0x4F,0x0D,0x4D,0x00,0x8F,0x0D,0x39,0x01,0xC0,0x01, + 0xA1,0x04,0x8F,0x0E,0xB5,0x04,0x8F,0x0E,0xED,0x04,0x8F, + 0x0E,0x1D,0x05,0x8F,0x0E,0x45,0x05,0x8F,0x0E,0x15,0x06, + 0x8F,0x0E,0xB9,0x06,0x8F,0x0E,0xDD,0x00,0xCF,0x0E,0x3D, + 0x03,0xCF,0x0E,0xA1,0x03,0xCF,0x0E,0xE5,0x06,0xCF,0x0E, + 0x35,0x06,0x4F,0x0F,0xF1,0x00,0x8F,0x0F,0x55,0x02,0x8F, + 0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xAB,0x26,0xE0,0x7C,0x00,0x00,0x4F,0x00,0x6F, + 0x24,0x3F,0x00,0x2F,0x23,0x00,0x80,0x41,0x2B,0xC2,0x00, + 0xC3,0x72,0x00,0x70,0x00,0x00,0x2F,0x21,0x84,0x00,0x41, + 0x2B,0x0C,0x06,0x61,0xBC,0x8C,0x24,0x83,0x9F,0xE1,0x20, + 0xC5,0x07,0x40,0x2B,0x00,0x07,0xC5,0x21,0x81,0x0F,0x00, + 0x7F,0x00,0x00,0xE1,0x20,0xC1,0x07,0x74,0x70,0xE1,0x20, + 0xC1,0x07,0xC2,0x21,0x41,0x00,0x41,0x2A,0x42,0x05,0x8D, + 0x70,0x60,0x44,0x0C,0x24,0x80,0x8F,0x01,0x00,0x00,0x00, + 0xC1,0x2C,0x26,0x04,0xC0,0x24,0x25,0x14,0x8C,0x24,0x04, + 0x80,0xC1,0x2C,0x26,0x02,0xC0,0x24,0x25,0x12,0x4C,0x24, + 0x00,0x84,0xC1,0x2C,0x26,0x01,0xC0,0x24,0x25,0x11,0x94, + 0x74,0xC1,0x2C,0xA6,0x00,0xC0,0x24,0xA5,0x10,0x94,0x72, + 0xC0,0x24,0x65,0x10,0x85,0x71,0x00,0x2B,0x03,0x03,0x69, + 0xBC,0x82,0x7A,0x40,0x2A,0x02,0x05,0x2F,0x21,0x40,0x80, + 0x2F,0x21,0x84,0x00,0x41,0x2B,0x0C,0x03,0x85,0x79,0xE0, + 0x7F,0x40,0x2B,0x00,0x05,0x07,0x21,0x81,0x0F,0x00,0x80, + 0x00,0x00,0x0D,0x00,0x00,0x00,0x07,0x23,0x83,0x0F,0x00, + 0x80,0x00,0x00,0x00,0x21,0x44,0x00,0x00,0x23,0xC5,0x00, + 0x0C,0x24,0x40,0x81,0xCC,0x20,0x81,0x80,0x10,0x00,0x06, + 0x00,0x08,0x44,0x40,0x40,0x81,0x42,0x28,0x44,0x60,0x41, + 0x81,0x43,0x8A,0x24,0xDF,0x1F,0x40,0x2C,0x4C,0x15,0x14, + 0x24,0x44,0x10,0x14,0x24,0xC5,0x10,0x40,0x2C,0x8C,0x10, + 0x0C,0x24,0x00,0x83,0xCC,0x25,0x05,0x83,0x92,0x01,0x06, + 0x00,0x41,0x29,0x04,0x05,0x41,0x2B,0x05,0x05,0x02,0x24, + 0x46,0x01,0x53,0x26,0x86,0x02,0x07,0x21,0xC7,0x00,0x40, + 0x29,0xC1,0x02,0x41,0x28,0x4C,0x05,0x85,0x79,0x40,0x28, + 0xC0,0x02,0x40,0x2B,0xC3,0x02,0x41,0x2A,0x4C,0x05,0x85, + 0x7B,0x40,0x2A,0xC2,0x02,0x9F,0xBB,0x4E,0x26,0x0C,0x88, + 0x1C,0x00,0x2D,0x00,0x01,0x2A,0x85,0x01,0x8C,0x26,0x01, + 0x80,0x01,0x2B,0x85,0x01,0xCA,0x25,0x26,0x00,0x17,0x00, + 0x20,0x00,0x8D,0x70,0xD4,0x70,0x00,0x2B,0x0C,0x03,0xC5, + 0x25,0x02,0x03,0x01,0x2B,0x8C,0x01,0x41,0x2F,0xC7,0x87, + 0x62,0x00,0x22,0x00,0x9F,0xB9,0x00,0x25,0x05,0x80,0x01, + 0x24,0x4C,0x90,0x10,0x00,0x26,0x00,0xC2,0x24,0x66,0x00, + 0x2F,0x24,0x04,0x93,0x2F,0x25,0x44,0x01,0x41,0x2D,0xC0, + 0x82,0x40,0x2C,0x41,0x15,0x25,0x78,0x41,0x2C,0xC1,0x12, + 0x40,0x2C,0x04,0x05,0xE1,0x20,0xC6,0x07,0x80,0x71,0x4C, + 0x26,0x00,0x88,0xCA,0x23,0x85,0x00,0xCA,0x22,0x25,0x00, + 0x13,0x23,0x83,0x01,0x05,0x23,0x83,0x80,0xD3,0x25,0x61, + 0x82,0xD1,0x20,0x21,0x80,0xCA,0x27,0x62,0x00,0x00,0x20, + 0xC0,0x81,0xE0,0x7F,0x41,0x21,0x01,0x00,0x0E,0x25,0x05, + 0x80,0x03,0x21,0x0C,0x83,0x52,0x00,0x23,0x00,0x0C,0x70, + 0x41,0x2D,0xC0,0x82,0x40,0x2C,0x41,0x15,0x25,0x78,0x41, + 0x2C,0xC1,0x12,0x42,0x24,0x44,0x00,0x40,0x2C,0x04,0x05, + 0xE1,0x20,0xC6,0x07,0x80,0x71,0x4C,0x26,0x00,0x88,0xCA, + 0x23,0x85,0x00,0xCA,0x22,0x25,0x00,0x13,0x23,0x83,0x01, + 0x05,0x23,0x83,0x80,0xCA,0x27,0x22,0x00,0x04,0x27,0x07, + 0x80,0xD3,0x25,0x61,0x82,0xCA,0x27,0x62,0x00,0x00,0x20, + 0xC0,0x81,0xE0,0x7F,0x41,0x21,0x01,0x00,0xCC,0x25,0x21, + 0x80,0xE1,0x20,0xC1,0x07,0x2C,0x70,0x00,0x25,0x45,0x81, + 0x01,0x24,0x0C,0x93,0xF8,0x07,0xE3,0xFF,0x04,0x71,0x53, + 0x24,0x81,0x02,0x0E,0x20,0x40,0x80,0x04,0x24,0x84,0x0F, + 0x00,0x00,0x00,0x08,0x12,0x00,0x22,0x00,0xC0,0x20,0x61, + 0x00,0x2F,0x24,0x02,0x93,0x2F,0x25,0x44,0x01,0x80,0x07, + 0xE6,0xFF,0xC5,0x24,0x06,0x00,0x4E,0x20,0x40,0x00,0x4E, + 0x20,0x01,0x88,0x1A,0x00,0x2D,0x00,0x01,0x2D,0x05,0x00, + 0xC0,0xE0,0x01,0x2C,0x05,0x10,0xCA,0x25,0x26,0x00,0x15, + 0x00,0x20,0x00,0x8D,0x70,0x14,0x70,0x00,0x2C,0x41,0x10, + 0xC5,0x25,0x42,0x00,0x01,0x2C,0x0C,0x10,0x49,0x07,0xEF, + 0xFF,0x84,0x71,0x2F,0x22,0x40,0x90,0x41,0x26,0x04,0x70, + 0x00,0x00,0x00,0x00,0x34,0x02,0x01,0x00,0x2F,0x23,0xC0, + 0x90,0x41,0x26,0x05,0x70,0x00,0x00,0x00,0x00,0x4E,0x02, + 0x01,0x00,0x0C,0x23,0x80,0x92,0xCC,0x22,0x01,0x80,0x08, + 0x42,0x14,0x00,0x0E,0x00,0x40,0x40,0x41,0x42,0x28,0x42, + 0x60,0x41,0x41,0x43,0x88,0x42,0xA0,0x44,0x41,0x45,0x2F, + 0x26,0x40,0x00,0x41,0x2E,0x46,0x85,0x06,0x21,0x81,0x0F, + 0xF0,0xFF,0x00,0x00,0xC5,0x21,0x82,0x0F,0x10,0x00,0x00, + 0x00,0x2E,0x00,0x22,0x00,0x00,0x40,0xCB,0x42,0x10,0x00, + 0x00,0x00,0x2F,0x20,0x00,0x80,0x2F,0x21,0x4B,0x00,0xC4, + 0x71,0x04,0x21,0xBE,0x82,0x42,0x26,0x46,0x00,0x12,0x00, + 0x02,0x00,0x2F,0x20,0x00,0x80,0xF3,0x07,0xEF,0xFF,0x2F, + 0x21,0x4B,0x00,0x2F,0x27,0xC0,0x00,0x41,0x2F,0x47,0x85, + 0x06,0x23,0x88,0x0F,0xF0,0xFF,0x00,0x00,0xC5,0x20,0x82, + 0x1F,0x10,0x00,0x00,0x00,0x30,0x00,0x22,0x00,0x40,0x42, + 0xCB,0x42,0x10,0x00,0x00,0x00,0x2F,0x22,0x80,0x80,0x2F, + 0x20,0x0B,0x12,0xE4,0x71,0x04,0x20,0xBE,0x92,0x42,0x27, + 0x47,0x00,0x10,0x00,0x02,0x00,0x2F,0x22,0x80,0x80,0xF1, + 0x07,0xEF,0xFF,0x2F,0x20,0x0B,0x12,0x8C,0x26,0xDF,0x8F, + 0x4A,0x26,0x00,0x70,0x76,0x03,0x01,0x00,0x8C,0x27,0xDF, + 0x8F,0x4A,0x26,0x00,0x70,0xC4,0x03,0x21,0x00,0x02,0x26, + 0xCB,0x01,0x4C,0x23,0x80,0x9D,0x02,0x21,0x49,0x12,0x3A, + 0x01,0x09,0x00,0x42,0x23,0x8A,0x90,0x4A,0x26,0x00,0x70, + 0x8A,0x00,0x01,0x00,0x24,0x00,0x09,0x00,0x2F,0x22,0x80, + 0x80,0x2F,0x20,0x0B,0x12,0x40,0x22,0x4A,0x90,0x4A,0x26, + 0x00,0x70,0x72,0x00,0x01,0x00,0x2F,0x22,0x80,0x80,0x6B, + 0x00,0x20,0x00,0x2F,0x20,0x0B,0x12,0x4C,0x22,0x00,0x98, + 0x6D,0x70,0x28,0x00,0x2B,0x00,0x42,0x22,0x0A,0x18,0x0A, + 0x21,0x80,0x90,0x12,0x00,0x02,0x00,0x02,0x26,0x8B,0x72, + 0x00,0x00,0x20,0x00,0x00,0x28,0xC9,0x12,0x01,0x28,0x82, + 0x12,0x3F,0x00,0x20,0x00,0x0D,0x70,0x02,0x26,0x8B,0x72, + 0x00,0x00,0x20,0x00,0x00,0x2A,0xC9,0x02,0x02,0x26,0x8B, + 0xF2,0x00,0x00,0x20,0x00,0x00,0x28,0xCB,0x12,0x12,0x00, + 0x09,0x00,0x40,0x22,0x0B,0x18,0x01,0x28,0xC2,0x12,0x13, + 0x00,0x20,0x00,0x0D,0x70,0x01,0x2A,0x82,0x02,0x01,0x28, + 0x88,0x12,0x05,0x22,0xC2,0x02,0x2F,0x20,0x00,0x80,0x2F, + 0x21,0x4B,0x00,0x2F,0x20,0x00,0x80,0x2F,0x21,0x4B,0x00, + 0x0C,0x24,0x40,0x81,0x4A,0x26,0x00,0x70,0xE0,0x01,0x02, + 0x00,0x00,0x20,0x80,0x80,0x01,0x21,0x01,0x02,0x04,0x21, + 0xBE,0x8F,0x80,0x00,0x00,0x00,0x4A,0x26,0x00,0x70,0x14, + 0x00,0x01,0x00,0xC4,0x71,0x2F,0x21,0x42,0x80,0x2F,0x20, + 0x04,0x80,0xC5,0x21,0x65,0x10,0x44,0x20,0xBE,0x80,0x4A, + 0x26,0x00,0x70,0x34,0x00,0x21,0x00,0x35,0x70,0xCB,0x20, + 0x61,0x81,0x4A,0x26,0x00,0x70,0x28,0x00,0x01,0x00,0x40, + 0x20,0x80,0x80,0xC0,0x21,0x65,0x00,0x04,0x21,0xBE,0x8F, + 0x80,0x00,0x00,0x00,0x4A,0x26,0x00,0x70,0x10,0x00,0x01, + 0x00,0x2F,0x21,0x42,0x80,0x2F,0x20,0x04,0x00,0xC4,0x71, + 0x2F,0x21,0x42,0x80,0x2F,0x20,0x04,0x00,0x2F,0x21,0x42, + 0x80,0x2F,0x20,0x04,0x00,0xD4,0x70,0x4A,0x26,0x00,0x70, + 0x66,0x00,0x0C,0x00,0x8C,0x26,0xDF,0x8F,0x4A,0x26,0x00, + 0x70,0x3E,0x01,0x0A,0x00,0x06,0x21,0x81,0x0F,0x10,0x00, + 0x00,0x00,0x40,0x2E,0x02,0x05,0x45,0x79,0x2F,0x22,0x03, + 0x01,0x45,0x79,0xE0,0x7E,0x14,0x70,0x4A,0x26,0x00,0x70, + 0xCE,0x05,0xC2,0xFF,0xD3,0x73,0x00,0x80,0x00,0x00,0x4A, + 0x26,0x00,0x70,0x7C,0x71,0x12,0x00,0x02,0x00,0x54,0x70, + 0x4A,0x26,0x00,0x70,0x7C,0x71,0xCA,0x21,0x41,0x00,0x40, + 0x40,0xE0,0x7E,0x54,0x70,0x4A,0x26,0x00,0x70,0xB2,0x05, + 0xC2,0xFF,0x4A,0x26,0x00,0x70,0xE0,0x7E,0x4A,0x26,0x00, + 0x70,0x02,0x26,0x8A,0x71,0x00,0x00,0x00,0x00,0x42,0x22, + 0x4A,0x90,0x4A,0x26,0x00,0x70,0x88,0x00,0x0B,0x00,0x8C, + 0x00,0x01,0x00,0x4C,0x22,0x00,0x98,0x4A,0x26,0x00,0x70, + 0x2A,0x00,0x0B,0x00,0x42,0x22,0x0A,0x18,0x05,0x21,0x09, + 0x90,0x6D,0x77,0x10,0x00,0x02,0x00,0x00,0x2B,0x8B,0x12, + 0x87,0x23,0xFF,0x1F,0x04,0x21,0xC9,0x02,0x01,0x29,0x80, + 0x02,0x5D,0x00,0x20,0x00,0x2C,0x70,0x35,0x70,0x6D,0x77, + 0x1E,0x00,0x02,0x00,0x4C,0x22,0x00,0x98,0xC2,0x23,0xCA, + 0x12,0x0A,0x00,0x0A,0x00,0x00,0x2B,0x8B,0x12,0x87,0x23, + 0xFF,0x1F,0x04,0x20,0xC9,0x02,0x02,0x26,0x8B,0xF2,0x00, + 0x00,0x20,0x00,0x00,0x29,0xCB,0x02,0x14,0x00,0x09,0x00, + 0x40,0x22,0x0B,0x18,0x01,0x29,0xC0,0x02,0x15,0x00,0x20, + 0x00,0x2C,0x70,0x01,0x28,0x80,0x02,0x01,0x29,0x81,0x02, + 0x05,0x20,0xC0,0x02,0x0D,0x00,0x00,0x00,0x2F,0x20,0x00, + 0x80,0x2F,0x21,0x4B,0x00,0x44,0x20,0xBE,0x80,0x4A,0x26, + 0x00,0x70,0x1C,0x00,0x01,0x00,0x44,0x20,0x4A,0x01,0x05, + 0x22,0x7E,0x92,0x4A,0x26,0x00,0x70,0x0C,0x00,0x01,0x00, + 0x40,0x20,0x80,0x80,0x41,0x21,0x01,0x00,0x2F,0x21,0x42, + 0x80,0x2F,0x20,0x04,0x00,0x2F,0x21,0x42,0x80,0x2F,0x20, + 0x04,0x00,0x02,0x26,0x86,0x01,0x04,0x21,0xBE,0x8F,0x10, + 0x00,0x00,0x00,0xC0,0x26,0x62,0x00,0x65,0xF1,0x8A,0x26, + 0xDF,0x0F,0xC3,0x41,0x10,0x00,0x00,0x00,0x0C,0x70,0x5F, + 0xF1,0x02,0x26,0x86,0x01,0x2C,0x70,0xB7,0x06,0xEF,0xFF, + 0x0C,0x70,0x02,0x20,0x80,0x80,0x03,0x21,0x01,0x02,0x04, + 0x21,0xBE,0x8F,0x40,0x00,0x00,0x00,0x4A,0x26,0x00,0x70, + 0x20,0x00,0x02,0x00,0x2F,0x20,0x00,0x80,0x2F,0x21,0x4B, + 0x00,0x42,0x26,0x46,0x00,0x04,0x21,0xBE,0x8F,0x40,0x00, + 0x00,0x00,0x4A,0x26,0x00,0x70,0x52,0x00,0x01,0x00,0x44, + 0x20,0xBE,0x80,0x4A,0x26,0x00,0x70,0x46,0x00,0x21,0x00, + 0x44,0x20,0x7E,0x80,0x4A,0x26,0x00,0x70,0x1A,0x00,0x02, + 0x00,0x35,0x70,0x4A,0x26,0x00,0x70,0x32,0x00,0x02,0x00, + 0x44,0x20,0x3E,0x81,0x4A,0x26,0x00,0x70,0x26,0x00,0x01, + 0x00,0x40,0x20,0x80,0x80,0x41,0x21,0x01,0x00,0x04,0x21, + 0xBE,0x8F,0x80,0x00,0x00,0x00,0xC0,0x26,0x62,0x00,0x0E, + 0x00,0x01,0x00,0x2F,0x21,0x42,0x80,0x2F,0x20,0x04,0x00, + 0x2F,0x21,0x42,0x80,0x2F,0x20,0x04,0x00,0x2F,0x21,0x42, + 0x80,0x2F,0x20,0x04,0x00,0xD3,0x71,0x10,0x00,0x00,0x00, + 0x4A,0x26,0x00,0x70,0xFC,0x05,0xCA,0xFF,0x34,0x70,0xCC, + 0x20,0x21,0x80,0x4A,0x26,0x00,0x70,0xA6,0xF3,0x2F,0x20, + 0x00,0x80,0x2F,0x21,0x4B,0x00,0xD3,0x71,0x10,0x00,0x00, + 0x00,0x42,0x26,0x46,0x00,0xB8,0xF6,0xD4,0x70,0x4A,0x26, + 0x00,0x70,0x3E,0x06,0xCC,0xFF,0xE7,0x05,0xCF,0xFF,0xD3, + 0x71,0x10,0x00,0x00,0x00,0xCC,0x20,0x21,0x80,0x2F,0x21, + 0x03,0x01,0x02,0x78,0x10,0x00,0x01,0x00,0x05,0x21,0x81, + 0x0F,0xF8,0x7F,0x00,0x00,0xE0,0x7E,0x8C,0x27,0xDF,0x8F, + 0x4A,0x26,0x00,0x70,0x28,0x00,0x02,0x00,0x0C,0x20,0x80, + 0x9F,0x10,0x00,0x00,0x00,0xCC,0x22,0x21,0x80,0x4A,0x26, + 0x00,0x70,0x0A,0x00,0x01,0x00,0x2F,0x21,0x43,0x01,0xE9, + 0xF1,0x0C,0x24,0x40,0x81,0x4A,0x26,0x00,0x70,0xE5,0xF5, + 0x05,0x21,0x81,0x0F,0xF0,0x7F,0x00,0x00,0x0C,0x70,0xE0, + 0x7E,0x60,0x41,0x40,0x40,0xE0,0x7E,0xE0,0x78,0x2F,0x23, + 0x40,0x80,0x4A,0x24,0xC0,0x02,0x14,0x00,0x26,0x00,0x6F, + 0x22,0x0A,0x00,0x6F,0x22,0x0A,0x00,0x2F,0x22,0x82,0x00, + 0x4A,0x24,0x80,0x02,0x2F,0x24,0x40,0x90,0xC0,0x22,0x65, + 0x00,0x41,0x2C,0x43,0x15,0x8C,0x23,0xDF,0x8F,0x48,0x00, + 0x21,0x00,0x53,0x21,0x01,0x85,0x8E,0x23,0xD0,0x84,0x1A, + 0x00,0x24,0x00,0x94,0xB9,0x9F,0xE3,0x01,0x29,0xC0,0x00, + 0xCA,0x20,0x29,0x00,0x51,0x22,0x00,0x80,0xE0,0x7F,0xCE, + 0x20,0x21,0x00,0x4E,0x23,0x03,0x00,0x90,0x73,0x4E,0x23, + 0x0C,0x08,0x01,0x28,0x00,0x03,0x00,0x29,0xC1,0x00,0x25, + 0x78,0xCA,0x20,0x89,0x00,0xD1,0x22,0x2C,0x80,0xE0,0x7F, + 0xCE,0x20,0x21,0x00,0xCC,0x20,0x21,0x80,0x40,0x40,0xD1, + 0x20,0x22,0x80,0xE0,0x7F,0xC0,0x20,0x62,0x00,0xCB,0x44, + 0xE0,0xFF,0x00,0x00,0x14,0x24,0x44,0x10,0x14,0x24,0xC5, + 0x10,0xB6,0xBC,0x0C,0x24,0x00,0x83,0xCC,0x25,0x05,0x83, + 0xC2,0x00,0x26,0x00,0x96,0xBC,0x41,0x2C,0x44,0x05,0x41, + 0x2D,0x45,0x05,0x00,0x25,0x05,0x01,0x82,0x25,0x8F,0x0F, + 0x8C,0x25,0xDF,0x8E,0xF4,0x00,0x26,0x00,0x07,0x21,0xCC, + 0x80,0x40,0x25,0x47,0x00,0x94,0xB9,0xD4,0xB9,0x94,0xBB, + 0xCF,0x27,0xE4,0x02,0x40,0x2B,0xC3,0x02,0x41,0x2A,0x45, + 0x05,0x40,0x2A,0xC2,0x82,0x1D,0x20,0x84,0x00,0x05,0x23, + 0x43,0x01,0x1C,0x20,0x8C,0x00,0x94,0x70,0x1D,0x20,0xC4, + 0x00,0xCF,0x27,0xE2,0x07,0x1C,0x20,0xC5,0x00,0x00,0x24, + 0x0C,0x91,0x1D,0x21,0x84,0x00,0x41,0x25,0x00,0x00,0x1C, + 0x21,0x85,0x00,0x00,0x24,0x0C,0x91,0x1D,0x21,0xC4,0x00, + 0x01,0x20,0x40,0x81,0x1C,0x21,0xC5,0x00,0x41,0x26,0x01, + 0x70,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x81,0x01,0x21, + 0x41,0x01,0x1B,0x09,0x3F,0x05,0x00,0x24,0x0C,0x93,0x42, + 0x27,0x47,0x00,0x01,0x20,0x00,0x80,0x01,0x21,0x41,0x00, + 0x00,0x24,0x0C,0x93,0x40,0x2F,0x04,0x05,0xE1,0x20,0xC6, + 0x07,0x80,0x71,0x40,0x29,0xC5,0x07,0x05,0x25,0xC5,0x81, + 0xCF,0x25,0xE2,0x07,0x41,0x2D,0xC5,0x07,0x00,0x20,0x40, + 0x81,0xE0,0x7F,0x41,0x21,0x01,0x00,0x02,0x24,0x04,0x83, + 0xCC,0x20,0x21,0x80,0xE1,0x20,0xC1,0x07,0xCA,0x21,0x21, + 0x00,0x02,0x25,0x05,0x83,0xCC,0x22,0x21,0x80,0xCA,0x20, + 0x21,0x00,0xE1,0x20,0xC1,0x07,0xCA,0x21,0x21,0x00,0x0C, + 0x24,0x00,0x83,0xCC,0x25,0x05,0x83,0x20,0x00,0x25,0x00, + 0x0C,0x24,0x40,0x81,0xCC,0x20,0x81,0x80,0xCA,0x20,0x85, + 0x00,0xCA,0x21,0xC5,0x00,0x07,0x23,0x43,0x80,0xE0,0x7F, + 0xCF,0x21,0xE4,0x07,0x2F,0x25,0xC0,0x80,0x41,0x26,0x04, + 0x70,0x00,0x00,0x00,0x00,0xCC,0x22,0x21,0x80,0x08,0x03, + 0x21,0x00,0x2F,0x21,0x40,0x90,0xC7,0x24,0x65,0x00,0xCC, + 0x20,0x21,0x80,0xD4,0x02,0x01,0x00,0x41,0x29,0x46,0x95, + 0x06,0x21,0x81,0x0F,0xF0,0xFF,0x00,0x00,0xC5,0x21,0x82, + 0x0F,0x10,0x00,0x00,0x00,0x2E,0x00,0x22,0x00,0x00,0x40, + 0xCB,0x42,0x10,0x00,0x00,0x00,0x2F,0x20,0x00,0x80,0x2F, + 0x21,0x4B,0x00,0xC4,0x71,0x04,0x21,0xBE,0x82,0x42,0x26, + 0x46,0x00,0x12,0x00,0x02,0x00,0x2F,0x20,0x00,0x80,0xF3, + 0x07,0xEF,0xFF,0x2F,0x21,0x4B,0x00,0x41,0x2D,0x47,0x85, + 0x06,0x23,0x88,0x0F,0xF0,0xFF,0x00,0x00,0xC5,0x20,0x82, + 0x1F,0x10,0x00,0x00,0x00,0x30,0x00,0x22,0x00,0x40,0x42, + 0xCB,0x42,0x10,0x00,0x00,0x00,0x2F,0x22,0x80,0x80,0x2F, + 0x20,0x0B,0x12,0xE4,0x71,0x04,0x20,0xBE,0x92,0x42,0x27, + 0x47,0x00,0x10,0x00,0x02,0x00,0x2F,0x22,0x80,0x80,0xF1, + 0x07,0xEF,0xFF,0x2F,0x20,0x0B,0x12,0x8C,0x26,0xDF,0x8F, + 0xF2,0x01,0x01,0x00,0x8C,0x27,0xDF,0x8F,0x1C,0x02,0x21, + 0x00,0x1D,0x20,0x8A,0x00,0x00,0x26,0xC6,0x01,0x1C,0x20, + 0x8B,0x00,0x1D,0x21,0x87,0x00,0x82,0x26,0xCF,0x0F,0x1C, + 0x21,0x8C,0x00,0x00,0x23,0xCB,0x91,0x41,0x24,0x02,0x10, + 0x1D,0x20,0x07,0x02,0x1C,0x20,0x0C,0x02,0x00,0x23,0xCB, + 0x91,0x01,0x22,0x02,0x03,0x1D,0x21,0x07,0x02,0x1C,0x21, + 0x0C,0x02,0x00,0x22,0xC2,0x81,0x41,0x24,0x09,0x10,0x40, + 0x29,0x01,0x13,0x41,0x2A,0x03,0x05,0x65,0x79,0x40,0x2A, + 0x07,0x03,0x40,0x2A,0x00,0x03,0x41,0x2B,0x03,0x15,0x65, + 0x78,0x40,0x2B,0x0C,0x13,0x55,0x70,0xC5,0x24,0xA2,0x10, + 0xD4,0x70,0x40,0x00,0x0C,0x00,0x04,0x21,0xBE,0x8F,0x20, + 0x00,0x00,0x00,0x12,0x00,0x01,0x00,0xC4,0x71,0x2F,0x21, + 0x42,0x80,0x2F,0x20,0x04,0x80,0x2F,0x24,0x04,0x13,0x95, + 0x70,0x36,0x00,0x0A,0x00,0x04,0x24,0xBE,0x9F,0xFF,0x7F, + 0xFF,0xFF,0x0C,0x00,0x02,0x00,0x44,0x20,0x7E,0x80,0x22, + 0x00,0x01,0x00,0x40,0x20,0x40,0x80,0x41,0x21,0x01,0x00, + 0x04,0x21,0xBE,0x8F,0x20,0x00,0x00,0x00,0x0E,0x00,0x01, + 0x00,0xC4,0x71,0x2F,0x21,0x42,0x80,0x2F,0x20,0x04,0x00, + 0x8C,0x26,0xDF,0x8F,0x0E,0x01,0x0A,0x00,0xD4,0x70,0x1A, + 0x00,0x0C,0x00,0x06,0x21,0x81,0x0F,0x10,0x00,0x00,0x00, + 0x40,0x2E,0x02,0x05,0x45,0x79,0x2F,0x22,0x03,0x01,0x45, + 0x79,0xE0,0x7E,0x8C,0x26,0xFF,0x82,0xFA,0x00,0x0B,0x00, + 0x02,0x26,0x8A,0x71,0x00,0x00,0x00,0x00,0x42,0x22,0x4A, + 0x90,0x4A,0x26,0x00,0x70,0x88,0x00,0x0B,0x00,0x8C,0x00, + 0x01,0x00,0x4C,0x22,0x00,0x98,0x4A,0x26,0x00,0x70,0x2A, + 0x00,0x0B,0x00,0x42,0x22,0x0A,0x18,0x05,0x24,0x0C,0x90, + 0x6D,0x77,0x10,0x00,0x02,0x00,0x00,0x2B,0x8B,0x12,0x87, + 0x23,0xFF,0x1F,0x04,0x21,0xCC,0x02,0x01,0x29,0x80,0x02, + 0x5D,0x00,0x20,0x00,0x2C,0x70,0x95,0x70,0x6D,0x77,0x1E, + 0x00,0x02,0x00,0x4C,0x22,0x00,0x98,0xC2,0x23,0xCA,0x12, + 0x0A,0x00,0x0A,0x00,0x00,0x2B,0x8B,0x12,0x87,0x23,0xFF, + 0x1F,0x04,0x20,0xCC,0x02,0x02,0x26,0x8B,0xF2,0x00,0x00, + 0x20,0x00,0x00,0x29,0xCB,0x02,0x14,0x00,0x09,0x00,0x40, + 0x22,0x0B,0x18,0x01,0x29,0xC0,0x02,0x15,0x00,0x20,0x00, + 0x2C,0x70,0x01,0x28,0x80,0x02,0x01,0x29,0x81,0x02,0x05, + 0x20,0xC0,0x02,0x0D,0x00,0x00,0x00,0x2F,0x20,0x00,0x80, + 0x2F,0x21,0x4B,0x00,0x44,0x20,0xBE,0x80,0x4A,0x26,0x00, + 0x70,0x1C,0x00,0x01,0x00,0x44,0x20,0x4A,0x01,0x05,0x22, + 0x3E,0x93,0x4A,0x26,0x00,0x70,0x0C,0x00,0x01,0x00,0x40, + 0x20,0x80,0x80,0x41,0x21,0x01,0x00,0x2F,0x21,0x42,0x80, + 0x2F,0x20,0x04,0x00,0x2F,0x21,0x42,0x80,0x2F,0x20,0x04, + 0x00,0x02,0x26,0x86,0x01,0x04,0x21,0xBE,0x8F,0x10,0x00, + 0x00,0x00,0xC0,0x26,0x62,0x00,0x80,0xF1,0x8A,0x26,0xDF, + 0x0F,0xC3,0x41,0x10,0x00,0x00,0x00,0xF5,0x06,0xEF,0xFF, + 0x0C,0x70,0x02,0x26,0x86,0x01,0x2C,0x70,0xE9,0x06,0xEF, + 0xFF,0x0C,0x70,0xD3,0x71,0x10,0x00,0x00,0x00,0xCC,0x20, + 0x21,0x80,0x2F,0x21,0x03,0x01,0xC5,0x21,0x82,0x0F,0xF8, + 0x7F,0x00,0x00,0xC0,0x78,0x70,0xF5,0x8C,0x27,0xDF,0x8F, + 0x14,0x00,0x01,0x00,0x2F,0x21,0x03,0x01,0x05,0x21,0x81, + 0x0F,0xF0,0x7F,0x00,0x00,0x0C,0x70,0x64,0xF1,0x0C,0x20, + 0x80,0x9F,0x10,0x00,0x00,0x00,0xCC,0x22,0x21,0x80,0x2F, + 0x21,0x03,0x01,0xC5,0x21,0x82,0x0F,0xF8,0x7F,0x00,0x00, + 0xC5,0x21,0x81,0x0F,0xF0,0x7F,0x00,0x00,0x0C,0x70,0x52, + 0xF1,0x0C,0x25,0x80,0x8F,0xE0,0xFF,0x00,0x00,0x4A,0x26, + 0x00,0x70,0x2A,0x00,0x06,0x00,0x4A,0x26,0x00,0x70,0x0C, + 0x70,0x2C,0x70,0x94,0x70,0xC5,0x21,0x82,0x0F,0x00,0x80, + 0x00,0x00,0x40,0xF1,0xC7,0x24,0x65,0x00,0x0C,0x21,0x80, + 0x9F,0xE0,0xFF,0x00,0x00,0xB2,0xF7,0x4A,0x26,0x00,0x70, + 0xC3,0x41,0xF8,0x7F,0x00,0x00,0x0C,0x70,0x32,0xF1,0xFC, + 0x1C,0x88,0xB1,0xFC,0x1C,0x48,0xB1,0xFC,0x1C,0x08,0xB1, + 0xE1,0xC3,0xE1,0xC2,0xE1,0xC1,0xE1,0xC0,0x07,0xC0,0x1C, + 0x1C,0xC0,0x31,0xE1,0xC0,0xE0,0x7F,0x01,0xC0,0x00,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28, + 0x28,0x28,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x48,0x10, + 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, + 0x10,0x10,0x10,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84, + 0x84,0x84,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x81,0x81, + 0x81,0x81,0x81,0x81,0x01,0x01,0x01,0x01,0x01,0x01,0x01, + 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, + 0x01,0x01,0x10,0x10,0x10,0x10,0x10,0x10,0x82,0x82,0x82, + 0x82,0x82,0x82,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, + 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, + 0x02,0x10,0x10,0x10,0x10,0x20,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xE0,0x78,0xE0,0x78,0xE0,0x78,0xE0,0x49,0x08, + 0x40,0x00,0x05,0x20,0x4C,0x00,0x44,0x24,0xFE,0x90,0xC2, + 0x21,0x22,0x01,0x90,0x00,0x02,0x00,0x40,0x80,0x04,0x11, + 0x03,0x04,0xCB,0x43,0x01,0x01,0x01,0x01,0x2F,0x24,0xC3, + 0x12,0x02,0x22,0xCA,0x02,0x25,0x0A,0xC1,0x00,0x06,0x22, + 0xCA,0x10,0x04,0x22,0x0A,0x93,0x14,0x00,0x02,0x00,0x04, + 0x10,0x02,0x02,0x04,0x11,0x03,0x04,0xE9,0x07,0xEF,0xFF, + 0x02,0x22,0xCA,0x02,0xE0,0x7F,0x0C,0x70,0x2F,0x20,0x87, + 0x80,0x6F,0x79,0x39,0x08,0x41,0x00,0xFA,0xF3,0x2F,0x22, + 0x88,0x1F,0xFF,0xFF,0x00,0xFF,0x04,0x23,0x81,0x02,0x04, + 0x22,0x80,0x82,0x21,0x08,0x41,0x00,0xEE,0xF3,0x40,0x2A, + 0x0A,0x12,0x04,0x23,0x81,0x02,0x04,0x22,0x80,0x82,0x11, + 0x08,0x41,0x00,0xE6,0xF3,0x41,0x2B,0x01,0x06,0x41,0x2A, + 0x00,0x06,0x09,0x09,0x02,0x00,0xE0,0x7F,0x0C,0x77,0xE0, + 0x7F,0x0C,0x71,0x0C,0x71,0x0A,0x00,0x06,0x00,0x2F,0x20, + 0xC5,0x02,0xE0,0x7E,0x40,0x88,0x24,0x73,0x01,0x11,0x83, + 0x02,0x70,0x72,0x8A,0x23,0xC3,0x1F,0xF4,0xF5,0x0A,0x26, + 0x80,0xF0,0x0C,0x00,0x01,0x00,0xED,0x07,0xEF,0xFF,0x01, + 0x10,0x82,0x02,0xE0,0x7F,0x0C,0x70,0xE0,0x78,0xE0,0x78, + 0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x3F,0x00,0x00,0x00, + 0x00,0x00,0x00,0x24,0x40,0x00,0x00,0x00,0x00,0x00,0x00, + 0x59,0x40,0x00,0x00,0x00,0x00,0x00,0x88,0xC3,0x40,0x00, + 0x00,0x00,0x00,0x84,0xD7,0x97,0x41,0x00,0x80,0xE0,0x37, + 0x79,0xC3,0x41,0x43,0x17,0x6E,0x05,0xB5,0xB5,0xB8,0x93, + 0x46,0xF5,0xF9,0x3F,0xE9,0x03,0x4F,0x38,0x4D,0x32,0x1D, + 0x30,0xF9,0x48,0x77,0x82,0x5A,0x3C,0xBF,0x73,0x7F,0xDD, + 0x4F,0x15,0x75,0x08,0x44,0x40,0x40,0x81,0x42,0x28,0x44, + 0x60,0x41,0x81,0x43,0xCB,0x44,0xE0,0xFF,0x00,0x00,0x14, + 0x24,0x46,0x10,0x14,0x24,0xCA,0x10,0xB6,0xBC,0x0C,0x26, + 0x00,0x83,0xCC,0x22,0x05,0x93,0xDE,0x00,0x26,0x00,0x96, + 0xBC,0x04,0x26,0x06,0x03,0x04,0x22,0x0A,0x13,0x02,0x26, + 0x86,0x82,0x2F,0x26,0x84,0x01,0x00,0x26,0x86,0x0F,0xE0, + 0x3F,0x00,0x00,0x00,0x26,0x0A,0x83,0xCC,0x26,0x03,0x83, + 0x50,0x01,0x04,0x00,0x07,0x21,0xCA,0x80,0xCF,0x26,0xE4, + 0x07,0x06,0x21,0x04,0x03,0x86,0x7B,0x4F,0x24,0x04,0x05, + 0x94,0xBB,0x00,0x45,0x0C,0x24,0xC0,0x80,0xCC,0x25,0x81, + 0x80,0x14,0x00,0x06,0x00,0x02,0x26,0x86,0x0F,0x10,0x00, + 0x00,0x00,0x00,0x25,0x45,0x81,0x01,0x24,0x04,0x01,0x4A, + 0x24,0x80,0x75,0x2C,0x70,0xA8,0x20,0xC0,0x04,0x0C,0x24, + 0xC0,0x80,0xCC,0x25,0x81,0x80,0x12,0x00,0x05,0x00,0x0F, + 0x21,0x01,0x0F,0x02,0x25,0x85,0x80,0x03,0x24,0xC4,0x00, + 0x00,0x25,0x45,0x81,0x01,0x24,0x04,0x01,0x05,0x24,0x40, + 0x81,0x4A,0x24,0x00,0x78,0x0C,0x70,0xE8,0x20,0xA2,0x04, + 0x0C,0x24,0xC0,0x80,0xCC,0x25,0x81,0x80,0x10,0x00,0x05, + 0x00,0x0F,0x20,0x00,0x0F,0x02,0x25,0x85,0x80,0x03,0x24, + 0xC4,0x00,0x00,0x25,0x45,0x81,0x01,0x24,0x04,0x01,0x2F, + 0x20,0x03,0x00,0x41,0x29,0x81,0x80,0x2F,0x20,0x04,0x80, + 0xC0,0x71,0xE1,0x20,0xC6,0x07,0x44,0x20,0x4C,0x00,0x05, + 0x24,0x0C,0x11,0x05,0x24,0x4C,0x91,0xE0,0x7C,0x40,0x20, + 0x40,0x80,0xE0,0x7F,0x41,0x21,0x01,0x00,0x02,0x22,0x0A, + 0x93,0xCC,0x22,0x21,0x80,0x1A,0x00,0x02,0x00,0x2F,0x26, + 0x40,0xF0,0x2F,0x21,0x04,0x03,0xCC,0x20,0x21,0x80,0xCF, + 0x21,0xE1,0x04,0xE0,0x7F,0x0C,0x70,0x0C,0x22,0x00,0x93, + 0xCC,0x22,0x21,0x80,0xCA,0x20,0x8D,0x00,0xE1,0x20,0xCD, + 0x07,0xCA,0x21,0xCD,0x00,0x02,0x26,0x06,0x83,0xCC,0x20, + 0x21,0x80,0xE1,0x20,0xC1,0x07,0xCA,0x21,0x21,0x00,0x0C, + 0x26,0x00,0x83,0xCC,0x22,0x05,0x93,0x4C,0x00,0x05,0x00, + 0x0C,0x26,0x00,0x83,0xCC,0x20,0x21,0x80,0xE1,0x20,0xCD, + 0x07,0x0C,0x22,0x00,0x93,0xCC,0x22,0x21,0x80,0xCA,0x20, + 0x8D,0x00,0xE1,0x20,0xCD,0x07,0xCA,0x21,0xCD,0x00,0x0C, + 0x22,0x00,0x93,0xCC,0x22,0x21,0x80,0xCC,0x26,0x01,0x83, + 0xCC,0x20,0x21,0x80,0xE1,0x20,0xC1,0x07,0xCF,0x21,0xE1, + 0x04,0x0C,0x26,0x00,0x83,0xCC,0x20,0x21,0x80,0xC0,0x78, + 0xE0,0x7F,0xC0,0x79,0x2F,0x25,0xC0,0x80,0x41,0x26,0x04, + 0x70,0x00,0x00,0x00,0x00,0xCC,0x22,0x21,0x80,0x4A,0x26, + 0x00,0x70,0xAA,0x02,0x21,0x00,0x2F,0x21,0x40,0x90,0xC7, + 0x24,0x65,0x00,0xCC,0x20,0x21,0x80,0x4A,0x26,0x00,0x70, + 0xC2,0x02,0x01,0x00,0x41,0x29,0x46,0x95,0x06,0x21,0x81, + 0x0F,0xF0,0xFF,0x00,0x00,0xC5,0x21,0x82,0x0F,0x10,0x00, + 0x00,0x00,0x2E,0x00,0x22,0x00,0x00,0x40,0xCB,0x42,0x10, + 0x00,0x00,0x00,0x2F,0x20,0x00,0x80,0x2F,0x21,0x4B,0x00, + 0xC4,0x71,0x04,0x21,0xBE,0x82,0x42,0x26,0x46,0x00,0x12, + 0x00,0x02,0x00,0x2F,0x20,0x00,0x80,0xF3,0x07,0xEF,0xFF, + 0x2F,0x21,0x4B,0x00,0x41,0x2D,0x47,0x85,0x06,0x23,0x88, + 0x0F,0xF0,0xFF,0x00,0x00,0xC5,0x20,0x82,0x1F,0x10,0x00, + 0x00,0x00,0x30,0x00,0x22,0x00,0x40,0x42,0xCB,0x42,0x10, + 0x00,0x00,0x00,0x2F,0x22,0x80,0x80,0x2F,0x20,0x0B,0x12, + 0xE4,0x71,0x04,0x20,0xBE,0x92,0x42,0x27,0x47,0x00,0x10, + 0x00,0x02,0x00,0x2F,0x22,0x80,0x80,0xF1,0x07,0xEF,0xFF, + 0x2F,0x20,0x0B,0x12,0x8C,0x26,0xDF,0x8F,0x4A,0x26,0x00, + 0x70,0x62,0x02,0x01,0x00,0x8C,0x27,0xDF,0x8F,0x4A,0x26, + 0x00,0x70,0x8A,0x02,0x21,0x00,0x02,0x26,0xC6,0x01,0x80, + 0x26,0xCF,0x0F,0x4A,0x24,0xC0,0x7D,0x6D,0x70,0x4D,0x70, + 0xA8,0x20,0x40,0x05,0x2F,0x22,0x80,0x92,0x2F,0x23,0xCB, + 0x12,0x11,0x71,0xCC,0x20,0x81,0x80,0xC5,0x22,0x66,0x10, + 0x0E,0x00,0x05,0x00,0x02,0x20,0x80,0x80,0x03,0x21,0x01, + 0x02,0x2F,0x20,0x00,0x80,0x2F,0x21,0x4B,0x00,0x05,0x21, + 0x09,0x00,0x61,0x41,0x41,0x40,0x04,0x21,0xBE,0x8F,0x40, + 0x00,0x00,0x00,0xC2,0x26,0x61,0x00,0x0E,0x00,0x02,0x00, + 0x2F,0x20,0x00,0x80,0x2F,0x21,0x4B,0x00,0xD4,0x70,0x4A, + 0x26,0x00,0x70,0x72,0x00,0x0C,0x00,0x44,0x20,0xBE,0x80, + 0x4A,0x26,0x00,0x70,0x34,0x00,0x01,0x00,0x44,0x20,0x4A, + 0x01,0x05,0x21,0xBE,0x92,0x4A,0x26,0x00,0x70,0x24,0x00, + 0x01,0x00,0x40,0x20,0x80,0x80,0x41,0x21,0x01,0x00,0x04, + 0x21,0xBE,0x8F,0x80,0x00,0x00,0x00,0xC0,0x26,0x62,0x00, + 0x0C,0x00,0x01,0x00,0x2F,0x21,0x42,0x80,0x2F,0x20,0x04, + 0x00,0x2F,0x21,0x42,0x80,0x2F,0x20,0x04,0x00,0x2F,0x21, + 0x42,0x80,0x2F,0x20,0x04,0x00,0x8C,0x26,0xDF,0x8F,0x4A, + 0x26,0x00,0x70,0x22,0x01,0x0A,0x00,0x06,0x21,0x81,0x0F, + 0x10,0x00,0x00,0x00,0x40,0x2E,0x02,0x05,0x45,0x79,0x2F, + 0x22,0x03,0x01,0x45,0x79,0xE0,0x7E,0x2F,0x21,0x42,0x80, + 0x2F,0x20,0x04,0x80,0xC5,0x21,0x65,0x10,0x2F,0x21,0x42, + 0x80,0x2F,0x20,0x04,0x80,0xC5,0x21,0x65,0x10,0x8C,0x26, + 0xFF,0x82,0x4A,0x26,0x00,0x70,0xFA,0x00,0x0B,0x00,0x02, + 0x26,0x8A,0x71,0x00,0x00,0x00,0x00,0x42,0x22,0x4A,0x90, + 0x4A,0x26,0x00,0x70,0x88,0x00,0x0B,0x00,0x8C,0x00,0x01, + 0x00,0x4C,0x22,0x00,0x98,0x4A,0x26,0x00,0x70,0x2A,0x00, + 0x0B,0x00,0x42,0x22,0x0A,0x18,0x05,0x21,0x09,0x90,0x6D, + 0x77,0x10,0x00,0x02,0x00,0x00,0x2B,0x8B,0x12,0x87,0x23, + 0xFF,0x1F,0x04,0x21,0xC9,0x02,0x01,0x29,0x80,0x02,0x5D, + 0x00,0x20,0x00,0x2C,0x70,0x35,0x70,0x6D,0x77,0x1E,0x00, + 0x02,0x00,0x4C,0x22,0x00,0x98,0xC2,0x23,0xCA,0x12,0x0A, + 0x00,0x0A,0x00,0x00,0x2B,0x8B,0x12,0x87,0x23,0xFF,0x1F, + 0x04,0x20,0xC9,0x02,0x02,0x26,0x8B,0xF2,0x00,0x00,0x20, + 0x00,0x00,0x29,0xCB,0x02,0x14,0x00,0x09,0x00,0x40,0x22, + 0x0B,0x18,0x01,0x29,0xC0,0x02,0x15,0x00,0x20,0x00,0x2C, + 0x70,0x01,0x28,0x80,0x02,0x01,0x29,0x81,0x02,0x05,0x20, + 0xC0,0x02,0x0D,0x00,0x00,0x00,0x2F,0x20,0x00,0x80,0x2F, + 0x21,0x4B,0x00,0x44,0x20,0xBE,0x80,0x4A,0x26,0x00,0x70, + 0x1C,0x00,0x01,0x00,0x44,0x20,0x4A,0x01,0x05,0x22,0x7E, + 0x92,0x4A,0x26,0x00,0x70,0x0C,0x00,0x01,0x00,0x40,0x20, + 0x80,0x80,0x41,0x21,0x01,0x00,0x2F,0x21,0x42,0x80,0x2F, + 0x20,0x04,0x00,0x2F,0x21,0x42,0x80,0x2F,0x20,0x04,0x00, + 0x02,0x26,0x86,0x01,0x04,0x21,0xBE,0x8F,0x10,0x00,0x00, + 0x00,0xC0,0x26,0x62,0x00,0x72,0xF1,0x8A,0x26,0xDF,0x0F, + 0xC3,0x41,0x10,0x00,0x00,0x00,0xD9,0x06,0xEF,0xFF,0x0C, + 0x70,0x02,0x26,0x86,0x01,0x2C,0x70,0xCD,0x06,0xEF,0xFF, + 0x0C,0x70,0xC7,0x24,0x65,0x00,0xCC,0x20,0x21,0x80,0x70, + 0x00,0x01,0x00,0x0C,0x21,0x80,0x9F,0xE0,0xFF,0x00,0x00, + 0xC3,0x41,0xF0,0x7F,0x00,0x00,0x5C,0x00,0x0D,0x00,0x94, + 0x70,0xC5,0x21,0x82,0x0F,0x00,0x80,0x00,0x00,0x0C,0x70, + 0xE0,0x7E,0x0C,0x25,0x80,0x8F,0xE0,0xFF,0x00,0x00,0x4A, + 0x26,0x00,0x70,0x40,0x00,0x0D,0x00,0x2C,0x70,0x10,0x00, + 0x05,0x00,0xCC,0x22,0x21,0x80,0x4A,0x26,0x00,0x70,0x2C, + 0x00,0x02,0x00,0x94,0x70,0xC5,0x21,0x82,0x0F,0x00,0x80, + 0x00,0x00,0x0C,0x70,0xE0,0x7E,0xD3,0x71,0x10,0x00,0x00, + 0x00,0x4A,0x26,0x00,0x70,0x10,0x00,0x02,0x00,0x8C,0x27, + 0xDF,0x8F,0x4A,0x26,0x00,0x70,0x0E,0x00,0x02,0x00,0xC3, + 0x41,0xF8,0x7F,0x00,0x00,0x0C,0x70,0xE0,0x7E,0x2F,0x21, + 0x03,0x01,0x05,0x21,0x81,0x0F,0xF0,0x7F,0x00,0x00,0x0C, + 0x70,0xE0,0x7E,0x0C,0x20,0x80,0x9F,0x10,0x00,0x00,0x00, + 0xCC,0x22,0x21,0x80,0xCA,0x20,0x21,0x00,0xCA,0x21,0x21, + 0x00,0x08,0x00,0x02,0x00,0xE0,0x7E,0xE6,0xF1,0xE0,0x78, + 0x8D,0x71,0x0A,0x21,0x00,0x80,0xD4,0x24,0x04,0x13,0x13, + 0x00,0x20,0x00,0xCE,0x20,0x24,0x00,0xE0,0x78,0x0A,0x21, + 0x00,0x80,0x8D,0x71,0xE1,0x20,0xC1,0x07,0x40,0x2C,0x8C, + 0x17,0x4C,0x70,0x00,0x41,0xD3,0x71,0x01,0x00,0x00,0x00, + 0xC1,0x29,0x26,0x04,0xC0,0x22,0x25,0x04,0x8C,0x21,0x04, + 0x80,0xC1,0x29,0x26,0x02,0xC0,0x22,0x25,0x02,0x90,0xE1, + 0xC1,0x29,0x26,0x01,0xC0,0x22,0x25,0x01,0x34,0x74,0xC1, + 0x29,0xA6,0x00,0xC0,0x22,0xA5,0x00,0x34,0x72,0xC0,0x22, + 0x65,0x00,0x00,0x28,0x83,0x00,0x4E,0x22,0xC2,0x07,0x40, + 0x2A,0x02,0x05,0x85,0x7A,0x40,0x2B,0x40,0x05,0x42,0x2B, + 0xC1,0x02,0xE0,0x7F,0x59,0x61,0x34,0x78,0xE0,0x7F,0x14, + 0x70,0xE0,0x78,0x70,0x71,0x04,0xF4,0x50,0x70,0x09,0xF2, + 0x7B,0x7B,0x3B,0x79,0x25,0x78,0x45,0x78,0x05,0x20,0xC0, + 0x80,0x0B,0xF4,0xC3,0x40,0xE0,0xFF,0x00,0x00,0x7B,0x7B, + 0x70,0x70,0x85,0xF7,0x04,0xF7,0x40,0x40,0x03,0xF0,0x0C, + 0x70,0xE0,0x7F,0x14,0x70,0xE0,0x78,0xE1,0xC0,0xE1,0xC1, + 0x40,0x40,0x60,0x41,0xC1,0xC3,0xC1,0xC2,0x28,0x44,0x07, + 0x21,0xFE,0x80,0x1E,0x00,0x04,0x00,0x0A,0x00,0x02,0x00, + 0x50,0x70,0xE5,0xF3,0x50,0x70,0x03,0x21,0xC1,0x00,0x07, + 0x21,0xC0,0x80,0xCA,0x20,0x61,0x00,0xE7,0xF1,0x7B,0x7B, + 0x3B,0x79,0x25,0x78,0x45,0x78,0x05,0x20,0xC0,0x80,0xE1, + 0xF3,0x45,0x24,0x40,0x10,0xDD,0xF1,0xE0,0x78,0xE6,0xC3, + 0xA1,0xC1,0x48,0x46,0x20,0x42,0x08,0x45,0x34,0x70,0xCA, + 0x27,0x4A,0x13,0x45,0xF6,0x2D,0xD8,0x53,0x7A,0xE1,0x6D, + 0x00,0xAD,0x0A,0xD9,0x80,0xC3,0x8C,0x70,0x1A,0x08,0x20, + 0x00,0xE1,0x40,0x00,0xC1,0xB0,0x4F,0x38,0x60,0x40,0xC0, + 0x03,0xEE,0x00,0xA6,0xA1,0x40,0xC6,0xC7,0xE0,0x78,0xEA, + 0xC3,0xA9,0xC1,0x70,0x40,0x10,0x41,0x21,0x09,0xB0,0x00, + 0x8A,0x23,0xBF,0x1D,0x1F,0x09,0x30,0x04,0x6C,0x74,0x8D, + 0x73,0x31,0x09,0x30,0x02,0x07,0xDF,0x17,0x09,0x31,0x01, + 0x8D,0x72,0xED,0x73,0x12,0xF0,0xED,0x71,0x8D,0x71,0x0E, + 0xF0,0x0F,0xDF,0x06,0xF0,0xED,0x70,0x6C,0x70,0x15,0x09, + 0xF2,0x02,0x8D,0x70,0x79,0x24,0x00,0x00,0x68,0x44,0x75, + 0x68,0x40,0x23,0xCB,0x0D,0x40,0x24,0xCE,0x37,0xAD,0x71, + 0x20,0x1C,0x03,0x30,0x08,0xEC,0x01,0x2A,0x00,0x03,0x04, + 0x22,0xC3,0x03,0x00,0x42,0x06,0xF0,0x09,0x2A,0x43,0x00, + 0x05,0x2A,0x42,0x00,0x89,0xE3,0x30,0xD8,0xCA,0x20,0xC9, + 0x02,0x78,0x60,0xA5,0x71,0xFF,0x1E,0x12,0x90,0xED,0xEA, + 0x21,0x6E,0x22,0x40,0x92,0x09,0xEF,0x03,0xA1,0x42,0x0B, + 0x08,0x30,0x20,0x09,0x6D,0x00,0x18,0x00,0x20,0x22,0x40, + 0xCA,0xC7,0xE0,0x78,0x40,0x43,0x20,0x42,0x10,0xD9,0x69, + 0x07,0xEF,0xFF,0x8C,0x71,0xE4,0xC0,0x08,0x45,0x0C,0x70, + 0x8D,0x70,0xA9,0x40,0x12,0xF0,0xD3,0x70,0x99,0x19,0x99, + 0x99,0x5A,0x20,0x80,0x02,0x4E,0x23,0xCE,0x0B,0xCA,0x24, + 0xAD,0x18,0x10,0x76,0x1B,0x63,0xA5,0x71,0xCA,0x24,0xA5, + 0x18,0x42,0x23,0x00,0x0C,0x60,0x8D,0x32,0x23,0x8E,0x0F, + 0x7F,0x00,0x61,0x91,0xD9,0x0E,0xBF,0x90,0x11,0x75,0x6C, + 0x77,0xCA,0x24,0xC1,0x10,0x03,0xE9,0xA0,0xA1,0x03,0xEA, + 0x80,0xA2,0xC4,0xC4,0x40,0x43,0x20,0x42,0x0A,0xD9,0x11, + 0x07,0xEF,0xFF,0x8C,0x70,0xF6,0xC3,0xA6,0xC1,0xA8,0x45, + 0x41,0xC3,0x30,0x47,0x08,0x47,0x40,0xC2,0x0E,0x70,0x0A, + 0x21,0x80,0x21,0x0A,0x22,0x00,0x21,0x80,0x41,0x80,0xC0, + 0xA1,0x42,0xC0,0x43,0x0A,0x24,0xC0,0x01,0x00,0x1F,0x00, + 0x04,0x0A,0x23,0xC0,0x21,0xEE,0x0B,0xEF,0x07,0x00,0x19, + 0x00,0x24,0x08,0x46,0x0E,0xE8,0xC3,0x41,0x7F,0x00,0x06, + 0xB1,0x8A,0x0F,0xAF,0xFF,0xC1,0x40,0x0E,0xE8,0xE1,0x40, + 0x32,0x0A,0xA0,0x00,0xC1,0x41,0x11,0xF0,0x04,0x14,0x14, + 0x30,0x00,0xC6,0x50,0x24,0xC0,0x27,0x05,0x20,0xBE,0x83, + 0x0B,0xF4,0xA1,0x40,0xE2,0x41,0xE1,0x42,0x76,0x09,0xA0, + 0x00,0x00,0x19,0x00,0x24,0x1F,0x02,0x00,0x00,0x4C,0x70, + 0x6C,0x70,0xC1,0x40,0x82,0x41,0xFF,0x58,0x4C,0x70,0x48, + 0x44,0xCA,0x24,0x6B,0x10,0x6C,0x70,0xC1,0x40,0x82,0x41, + 0x00,0x1B,0x00,0x23,0xFF,0x58,0x45,0xF6,0x52,0x24,0xC0, + 0x27,0x40,0xC6,0x41,0xC0,0x36,0x0C,0xEF,0x07,0x80,0xC0, + 0x4D,0xDE,0x21,0x08,0x32,0x00,0x0C,0x7E,0x48,0xBE,0xC5, + 0x71,0x89,0x26,0x04,0x1D,0x8A,0x09,0x60,0x00,0xC1,0x40, + 0x00,0xC2,0x26,0x08,0xEF,0xFF,0x01,0xC3,0x0C,0xF0,0x4D, + 0xE6,0x48,0xBE,0x88,0x26,0x3B,0x13,0x72,0x09,0x60,0x00, + 0xD3,0x78,0x00,0xC2,0x01,0xC3,0x00,0x59,0x10,0x44,0x30, + 0x43,0x40,0xC0,0x50,0x21,0xC0,0x07,0x41,0xC1,0x05,0x20, + 0x3E,0x85,0x48,0xF2,0xC3,0x42,0x99,0x99,0x9A,0x99,0xC3, + 0x43,0xB9,0x3F,0x99,0x99,0x82,0x40,0x62,0x41,0x50,0x46, + 0x0A,0x25,0xC0,0x20,0xFF,0x58,0x54,0xF6,0x4C,0x70,0xC3, + 0x43,0x24,0x40,0x00,0x00,0x82,0x40,0x62,0x41,0x00,0x59, + 0xC2,0x42,0xA2,0x43,0x10,0x44,0x30,0x43,0xC5,0x77,0xFF, + 0x58,0xB4,0xF6,0x00,0x1C,0x00,0x35,0x04,0x1C,0xC0,0x34, + 0x4C,0x70,0x82,0x40,0x62,0x41,0xC3,0x43,0xF0,0x3F,0x00, + 0x00,0xFF,0x58,0x97,0xF6,0x4C,0x70,0xC3,0x43,0x24,0x40, + 0x00,0x00,0x82,0x40,0xAE,0x0F,0xAF,0xFF,0x62,0x41,0x4C, + 0x70,0xC3,0x43,0xF0,0x3F,0x00,0x00,0x10,0x44,0x30,0x43, + 0xC5,0x71,0xFF,0x58,0x70,0xF6,0x00,0x1C,0x00,0x35,0x04, + 0x1C,0xC0,0x34,0x82,0x40,0x62,0x41,0xC2,0x42,0xA2,0x43, + 0xFF,0x58,0x46,0xF6,0x04,0x1C,0x40,0x35,0x00,0x1C,0x80, + 0x35,0x06,0xF0,0x0A,0x26,0x00,0x25,0x0A,0x25,0xC0,0x24, + 0x8C,0x22,0xC1,0xA9,0x04,0xF4,0x19,0x0D,0x13,0x10,0x09, + 0xF0,0x8C,0x22,0x81,0xA9,0x06,0xF4,0x00,0x25,0x8D,0x93, + 0x08,0x00,0x03,0x00,0xAD,0x70,0x49,0x25,0xC1,0x14,0x42, + 0x27,0x40,0x20,0x42,0x27,0x8D,0x20,0x10,0x71,0xCA,0x25, + 0x4B,0x10,0x87,0x0D,0x32,0x10,0x6E,0x70,0xF1,0x44,0x06, + 0xF0,0x04,0x14,0x15,0x30,0x00,0x14,0x16,0x30,0x4C,0x70, + 0xC3,0x43,0x97,0x41,0x84,0xD7,0xC2,0x40,0xA2,0x41,0x00, + 0x59,0x10,0x45,0xEE,0x0E,0x6F,0xFF,0x30,0x46,0x26,0x0C, + 0xEF,0xFF,0x10,0x47,0xA2,0x42,0x56,0x08,0x6F,0xFF,0xC2, + 0x43,0x41,0xC1,0x40,0xC0,0x83,0xC0,0x0A,0xD9,0x82,0xC3, + 0x8C,0x70,0x1E,0x0D,0xEF,0xFF,0xE2,0x42,0x27,0x0B,0x30, + 0x20,0x02,0xC2,0x21,0x0A,0x33,0x02,0x4A,0x20,0x00,0x00, + 0x30,0xD9,0x01,0x1C,0x52,0x20,0x02,0xC2,0x27,0x68,0xF9, + 0x0A,0x62,0x80,0x04,0x77,0x02,0x23,0x13,0x20,0x02,0xF0, + 0x6E,0x70,0x83,0xC1,0xFE,0x0E,0xAF,0x03,0x82,0x40,0x02, + 0xC0,0x00,0x23,0x13,0x20,0x91,0x0D,0xE3,0x94,0x00,0x24, + 0x14,0x20,0xA8,0x67,0x3F,0x08,0x74,0x0D,0x69,0x6D,0xB5, + 0x70,0xCA,0x20,0xCC,0x00,0xD6,0xF6,0x79,0x67,0x40,0x89, + 0x23,0x0A,0x71,0x0E,0x30,0xDC,0x0A,0x6D,0x21,0x0B,0x72, + 0x00,0x80,0xA9,0x19,0x67,0x40,0x89,0x11,0x0A,0x71,0x0E, + 0x14,0x70,0x04,0x77,0x80,0xA9,0x3A,0xF6,0x04,0xF0,0x60, + 0x40,0x44,0x71,0x40,0xA9,0x11,0x08,0x32,0x00,0x31,0xD8, + 0x8A,0xED,0x30,0xD8,0xAD,0x71,0x00,0xAF,0x06,0xF0,0xC5, + 0x71,0x00,0xAF,0x82,0xED,0xAD,0x71,0xB8,0x67,0x00,0x18, + 0x02,0x04,0x00,0x19,0x80,0x23,0x8C,0x22,0xC1,0xA9,0x17, + 0xF4,0x42,0x25,0x40,0x90,0x13,0xF2,0xF8,0x60,0x20,0x88, + 0x23,0x09,0x11,0x0C,0x00,0x18,0x02,0x04,0x42,0x25,0x80, + 0x90,0x0B,0xF2,0x19,0x67,0x40,0x89,0x0F,0x0A,0x31,0x0C, + 0x42,0x20,0x40,0x80,0x00,0x19,0x02,0x04,0xF8,0xF5,0xE1, + 0x40,0xD6,0xC7,0xE0,0x78,0xFA,0xC2,0xFC,0x1C,0xC8,0xB6, + 0x82,0x24,0x03,0x31,0x43,0xC0,0x0C,0x70,0x70,0x40,0xED, + 0x70,0x18,0x43,0x18,0x40,0x42,0xC1,0x40,0xC2,0x41,0xC0, + 0x45,0xC0,0x47,0xC0,0x4A,0xC0,0x46,0xC0,0x4B,0xC0,0x05, + 0xF0,0xFE,0x58,0x00,0x18,0x81,0x05,0x00,0xC6,0x04,0xF0, + 0x04,0x10,0x0E,0x24,0x40,0xC6,0x00,0x8E,0x14,0x70,0x29, + 0xF2,0x2C,0x70,0xC3,0x42,0xFF,0x7F,0xFF,0xFF,0xA2,0x0E, + 0x60,0x00,0xC1,0x40,0xD3,0x41,0xFF,0x7F,0xFF,0xFF,0x48, + 0xC0,0x04,0xE8,0x08,0xC0,0x02,0x20,0x91,0x03,0x25,0xD9, + 0xC1,0x40,0x86,0x0E,0x60,0x00,0x22,0x42,0x08,0x45,0x83, + 0xE8,0x00,0x26,0x4D,0x14,0x02,0x25,0x91,0x93,0x0A,0xF2, + 0x02,0xC0,0x03,0xC3,0xC1,0x41,0x60,0x7B,0x22,0x42,0x14, + 0x77,0x0C,0x77,0xF2,0xF2,0x07,0xC0,0x20,0x8D,0x22,0x70, + 0x47,0xC0,0x34,0x70,0xDE,0x06,0x01,0x00,0x01,0x8D,0x4F, + 0xE8,0x41,0x6D,0xCD,0x70,0x40,0xC5,0x07,0x00,0x00,0x00, + 0x44,0x71,0x40,0xC2,0x20,0x8A,0x13,0x09,0x10,0x08,0x13, + 0x09,0xD0,0x08,0x13,0x09,0xD1,0x0A,0x81,0xBE,0xF6,0xF1, + 0x82,0xBE,0xF4,0xF1,0x83,0xBE,0xF2,0xF1,0x0B,0x09,0x51, + 0x0B,0x80,0xBE,0xEE,0xF1,0x13,0x09,0x90,0x0A,0xC3,0x40, + 0x7F,0x00,0x61,0x91,0x08,0x61,0x49,0x08,0x9E,0x00,0x0C, + 0x70,0xB0,0xE1,0x41,0xC0,0xCA,0x20,0x82,0x00,0x06,0xF4, + 0x01,0x6A,0x40,0xC0,0x21,0x8A,0x31,0xDA,0x41,0xC2,0x11, + 0x09,0xB1,0x0A,0x80,0xC1,0x04,0x71,0x40,0xC0,0x04,0x10, + 0x00,0x24,0x05,0xF0,0xEE,0x0B,0xEF,0xFF,0x4C,0x70,0x45, + 0xC0,0x05,0xC0,0x0B,0x08,0x12,0x00,0x85,0xBE,0x06,0xF0, + 0x05,0xC0,0x45,0x26,0x4E,0x18,0x13,0x78,0x45,0xC0,0x00, + 0xC1,0x2E,0x76,0x00,0x89,0x51,0x08,0xB1,0x0B,0x6E,0x71, + 0x01,0x69,0x40,0xC0,0x41,0x89,0x11,0x0A,0x91,0x0A,0x02, + 0x69,0x40,0xC0,0x04,0x10,0x13,0x24,0x13,0xF0,0x1B,0x0A, + 0x71,0x0B,0x4C,0x70,0x02,0x69,0x40,0xC0,0x42,0x89,0x23, + 0x0A,0xB1,0x0A,0x4C,0x70,0x03,0x69,0x06,0x74,0x40,0xC0, + 0x0E,0xF0,0x9A,0x0B,0xEF,0xFF,0x80,0xC1,0x10,0x43,0x15, + 0x0B,0x12,0x20,0x86,0xBE,0x0A,0x21,0xC0,0x24,0x04,0xF0, + 0x86,0x0B,0xEF,0xFF,0x80,0xC1,0x00,0xC0,0x6C,0x70,0x21, + 0x68,0x40,0xC1,0x40,0x88,0xCC,0xE2,0x0F,0xF2,0xEC,0xE2, + 0x0B,0xF4,0x22,0x68,0x40,0xC1,0xA1,0x88,0xEC,0xE5,0x0F, + 0xF4,0x23,0x68,0x40,0xC1,0xA2,0x88,0x4C,0xDA,0x09,0xF0, + 0xE8,0xE2,0x05,0xF4,0x22,0x68,0x40,0xC1,0xA1,0x88,0x03, + 0xF0,0x48,0x45,0x4C,0x70,0x4D,0xC3,0xC4,0xE5,0x07,0xF6, + 0xA5,0xE5,0x25,0xDD,0x3E,0xF5,0x67,0x03,0x00,0x00,0xD7, + 0xE5,0x06,0xF6,0xC5,0xE5,0x5F,0xF2,0xC7,0xE5,0x36,0xF5, + 0x5A,0xF0,0xE2,0xE5,0x06,0xF6,0xD8,0xE5,0x32,0xF5,0xD9, + 0x02,0x00,0x00,0x8A,0x20,0x7E,0x07,0xB8,0x60,0x95,0xE0, + 0x54,0x06,0xED,0xFF,0xB1,0x42,0x24,0x20,0x00,0x00,0x33, + 0x03,0x00,0x00,0x75,0x03,0x00,0x00,0x93,0x00,0x00,0x00, + 0x8F,0x00,0x00,0x00,0x85,0x00,0x00,0x00,0x39,0x06,0xCF, + 0xFF,0x61,0x03,0x00,0x00,0x31,0x06,0xCF,0xFF,0x2D,0x06, + 0xCF,0xFF,0x29,0x06,0xCF,0xFF,0x25,0x06,0xCF,0xFF,0x2F, + 0x00,0x00,0x00,0x1B,0x03,0x00,0x00,0x25,0x03,0x00,0x00, + 0x15,0x06,0xCF,0xFF,0x11,0x06,0xCF,0xFF,0x29,0x00,0x00, + 0x00,0x09,0x06,0xCF,0xFF,0x2D,0x03,0x00,0x00,0x01,0x06, + 0xCF,0xFF,0xFD,0x05,0xCF,0xFF,0x71,0x02,0x00,0x00,0x04, + 0x10,0x01,0x24,0xE8,0xE2,0x16,0xF4,0x07,0xC0,0x00,0xB1, + 0x16,0xF0,0x04,0x10,0x19,0x24,0x37,0x70,0x92,0x02,0x22, + 0x00,0x4C,0x76,0x02,0xC0,0x03,0xC3,0xC3,0x41,0x7F,0x00, + 0xD4,0xB0,0x40,0x7B,0x14,0x77,0xD2,0x05,0xE2,0xFF,0x0C, + 0x77,0x09,0x05,0x00,0x00,0x07,0xC0,0x00,0xA1,0xC3,0x05, + 0xCF,0xFF,0x07,0x09,0x11,0x20,0x2E,0x71,0xC3,0x40,0x7F, + 0x00,0x61,0x91,0x08,0x65,0xB1,0x42,0x44,0x20,0x40,0x80, + 0x4E,0xC0,0x01,0xC0,0xC0,0x22,0x22,0x28,0x03,0xE8,0x0B, + 0x0E,0x1E,0x10,0x0C,0x70,0x41,0xC0,0x0E,0x43,0x06,0x42, + 0x8C,0x22,0x41,0xA9,0x0A,0x25,0x40,0x04,0x9D,0xC0,0x4F, + 0xD9,0x40,0x24,0x06,0x3C,0xC0,0x25,0x61,0x00,0x40,0x24, + 0x07,0x3D,0x0A,0x24,0x80,0x04,0x50,0x46,0x8A,0x0A,0xEF, + 0xFF,0x70,0x45,0xC3,0x41,0x7F,0x00,0xDC,0xB0,0x42,0x0A, + 0xAF,0xFF,0x18,0x41,0x30,0x14,0x13,0x30,0x05,0x23,0x3E, + 0xA0,0x05,0xF4,0x6E,0x71,0x30,0x1C,0xC0,0x34,0xC3,0x42, + 0xFF,0x7F,0xFF,0xFF,0x2C,0x70,0x23,0x40,0x02,0x0C,0x60, + 0x00,0x50,0x44,0x48,0xC0,0x04,0xE8,0x08,0xC0,0x02,0x20, + 0x54,0x06,0x00,0x11,0x81,0x30,0xC3,0x40,0x7F,0x00,0x61, + 0x91,0x08,0x61,0x4F,0x08,0xBE,0x00,0xEE,0x70,0x24,0x1C, + 0xC0,0x35,0x10,0x1C,0xC0,0x35,0x8C,0x22,0x41,0xA9,0x4A, + 0xF2,0x8C,0x22,0x81,0xA9,0x0C,0xF2,0x8C,0x22,0xC1,0xA9, + 0x1D,0xF4,0x8C,0x23,0x7F,0xAF,0xCC,0x21,0xCA,0xA4,0x7A, + 0x00,0x0B,0x00,0x02,0x21,0xD1,0x24,0x2F,0x0B,0x72,0x20, + 0x8A,0x26,0x81,0x29,0x51,0x0C,0xE3,0x24,0x4C,0x70,0x02, + 0x23,0x00,0x25,0x10,0x1C,0x00,0x35,0x46,0xC0,0x58,0x43, + 0x58,0x40,0x6C,0xF0,0x10,0x1C,0x00,0x35,0xCE,0x70,0x90, + 0xF0,0x4C,0x70,0x50,0x46,0x58,0x43,0x1F,0xF0,0x4E,0x23, + 0x01,0x20,0x42,0x2B,0xD3,0x27,0x04,0x23,0x58,0x20,0x0C, + 0x71,0x0C,0x21,0x00,0xA6,0x18,0x01,0x2C,0x00,0x46,0xC0, + 0x00,0x24,0x00,0x26,0x32,0x70,0x56,0x01,0x2C,0x00,0x02, + 0x21,0x1B,0x26,0x4C,0x70,0x50,0xF0,0x02,0x24,0xDB,0x24, + 0x4C,0x70,0x10,0x1C,0xC0,0x34,0x0C,0x23,0x40,0xB4,0xCA, + 0x23,0x49,0x34,0x0C,0x70,0x46,0xC0,0x18,0x40,0x42,0xF0, + 0x26,0x77,0x50,0x25,0xD5,0x27,0x10,0x1C,0x41,0x30,0x05, + 0x25,0xBE,0xA5,0x06,0xF4,0x30,0x1C,0xC0,0x35,0x2C,0x70, + 0xED,0x70,0x0C,0xF0,0x42,0x23,0x41,0xA0,0x41,0x29,0xCF, + 0x07,0x0C,0x00,0x23,0x00,0x4C,0xC1,0x4E,0x23,0x41,0x20, + 0x4C,0xC1,0x9A,0xC0,0x42,0x08,0xEF,0xFF,0x89,0xC2,0x09, + 0xC1,0x1B,0x09,0xB3,0x00,0x29,0x68,0x30,0xD8,0xFF,0x19, + 0x12,0x80,0x09,0xC0,0x04,0x71,0xF9,0x08,0xB2,0x80,0x49, + 0xC0,0x01,0x69,0x0E,0xC1,0x79,0x27,0x02,0x10,0x42,0x24, + 0x5B,0x20,0x75,0x69,0x2A,0x68,0x48,0xC1,0x5B,0x79,0x52, + 0x23,0x42,0x01,0x2B,0xE1,0x45,0xE2,0xFF,0x18,0x42,0x80, + 0xFE,0x18,0x82,0x80,0x09,0xC0,0x2C,0x70,0x8A,0x26,0x41, + 0x29,0x42,0x68,0x38,0x40,0x46,0xC1,0x49,0xC2,0x06,0xC1, + 0x42,0x43,0x00,0x20,0xC0,0x36,0x3A,0x62,0x2C,0x71,0x44, + 0x26,0x08,0x12,0x4A,0xC1,0xB8,0x23,0xC1,0x09,0x3E,0x21, + 0x01,0x20,0x78,0x20,0x0C,0x10,0x65,0x79,0x1A,0x62,0x0E, + 0x20,0x40,0x04,0x04,0xC7,0x2B,0x7C,0x4B,0xC0,0xC0,0x78, + 0x4B,0xC0,0x58,0x60,0x1F,0x08,0x31,0x10,0x1F,0x67,0x29, + 0x09,0x72,0x20,0x0C,0x70,0x13,0x0B,0x11,0x30,0x07,0xEB, + 0x79,0x20,0x00,0x30,0x2F,0x08,0x30,0x30,0x4A,0xC0,0xE5, + 0x71,0x8E,0x70,0x40,0x20,0x10,0x22,0x92,0x45,0x92,0x41, + 0x56,0x70,0x9D,0xF4,0xB6,0xF0,0x4A,0xC0,0xF8,0xF1,0x4C, + 0x70,0x8C,0x22,0xC1,0xA9,0x0A,0x20,0x40,0x34,0x58,0x43, + 0xCA,0x20,0x21,0x30,0xC6,0xF1,0x6F,0x70,0x7B,0x40,0xEC, + 0xF1,0x41,0x2E,0x80,0x10,0x10,0xD9,0x44,0x20,0x94,0x00, + 0x00,0x10,0x0F,0x20,0xE8,0xE2,0xA1,0x44,0xF0,0x7A,0xCA, + 0x27,0x81,0x10,0xF5,0x70,0x91,0xC0,0x84,0xC3,0xB8,0x24, + 0x01,0x0E,0xE1,0x42,0x86,0x0F,0xAF,0xFF,0xCA,0x24,0x21, + 0x20,0x18,0x41,0x4E,0x70,0x52,0xF0,0x4C,0x70,0x0A,0x23, + 0x00,0x35,0xA6,0xF1,0xCB,0x47,0xFF,0x7F,0xFF,0xFF,0x2C, + 0x70,0x23,0x40,0x02,0x0A,0x60,0x00,0xE1,0x42,0x48,0xC0, + 0x04,0xE8,0x08,0xC0,0x02,0x20,0x4F,0x06,0x3A,0x23,0xC1, + 0x23,0x41,0x2E,0x80,0x11,0xEE,0x70,0x2B,0x78,0xF2,0x45, + 0x7E,0x77,0x73,0xDD,0xF2,0x46,0xB2,0x41,0x44,0xC7,0x70, + 0xF0,0x04,0x10,0x0D,0x24,0xEE,0x70,0xED,0x71,0xF2,0x45, + 0x71,0xC5,0x54,0x24,0x99,0x38,0xF2,0x46,0xB2,0x41,0x44, + 0xC7,0x64,0xF0,0x41,0x2E,0xC0,0x10,0x08,0xD9,0x6F,0xDD, + 0x44,0x20,0x54,0x00,0xBD,0xF1,0x04,0x10,0x01,0x24,0x91, + 0xC0,0xA6,0x0F,0xAF,0xFF,0x84,0xC2,0xEE,0x70,0x04,0xC7, + 0xF2,0x45,0x18,0x41,0x70,0xDD,0xF2,0x46,0xB2,0x41,0x50, + 0xF0,0x75,0xDD,0x4E,0x70,0x00,0x10,0x0F,0x20,0xF5,0xE5, + 0x07,0xF2,0x0B,0x0F,0x13,0x10,0xF3,0x7F,0x34,0x1C,0xC1, + 0x3F,0x91,0xC0,0x84,0xC2,0xCE,0x0F,0xAF,0xFF,0xE1,0x41, + 0x18,0x41,0x8E,0x70,0x01,0xC0,0xCE,0x70,0x14,0x70,0x0C, + 0x70,0x06,0xF2,0x01,0xC0,0x46,0x26,0xBE,0x9F,0x02,0xF2, + 0x0C,0x70,0x06,0x74,0x05,0x27,0xFE,0x94,0x10,0xF2,0x04, + 0xC1,0x41,0xC0,0x78,0x21,0x17,0x00,0x02,0x23,0x40,0x20, + 0xE2,0x71,0x08,0x21,0xCF,0x04,0x72,0x71,0xCA,0x27,0x0B, + 0x20,0x82,0x77,0x09,0xF0,0x44,0x1C,0x82,0x35,0x10,0x1C, + 0x80,0x35,0xEE,0x70,0x41,0xC0,0xED,0x70,0x0D,0xC0,0x0A, + 0x25,0xC0,0x25,0x87,0xE8,0xEE,0x71,0x4B,0x26,0x80,0x91, + 0x10,0xF2,0x21,0x0A,0x10,0x20,0x14,0x70,0x2D,0xD8,0x06, + 0xF4,0xE1,0xBE,0x20,0xD8,0xCA,0x20,0xE2,0x0A,0x40,0x24, + 0x51,0x20,0xE5,0x71,0xEE,0x71,0x4D,0xC0,0x04,0xF0,0x0A, + 0x21,0x00,0x25,0x2B,0x0E,0x7E,0x11,0x6E,0x70,0x05,0xC0, + 0x23,0x0F,0x23,0x10,0xE0,0xBE,0x05,0xC0,0x1F,0xBE,0xE2, + 0x78,0x4E,0x70,0x5F,0xBE,0xCA,0x22,0x01,0x20,0x04,0x26, + 0x14,0x10,0x08,0xF2,0x05,0xC7,0x2C,0x70,0x41,0xC1,0x05, + 0xF0,0x4E,0x70,0x52,0x44,0x04,0xF0,0x05,0xC7,0x45,0xC0, + 0x1F,0x0A,0x10,0x20,0x01,0xC0,0x79,0x20,0x00,0x00,0x8B, + 0xE8,0x03,0xC0,0x02,0xC1,0x6C,0x70,0x0E,0x09,0x60,0x00, + 0x42,0x42,0x14,0x70,0x0C,0x77,0x98,0xF4,0x55,0x0F,0x10, + 0x20,0x3B,0x09,0x10,0x20,0x0D,0xC0,0x07,0xE8,0x42,0x21, + 0x51,0xA0,0x6E,0x71,0x4C,0x71,0x6F,0xC0,0x0C,0xF2,0x8F, + 0xC0,0x30,0xD9,0x62,0x70,0x40,0x23,0x42,0x20,0x0D,0x09, + 0xB2,0x20,0x20,0xA8,0x40,0x23,0x82,0x20,0xA1,0xA8,0x02, + 0xC0,0x03,0xC3,0x60,0x7B,0x8F,0xC1,0x14,0x77,0x0C,0x77, + 0x7A,0xF2,0x19,0x0D,0x30,0x20,0x6C,0x71,0x03,0xC0,0x02, + 0xC1,0xBA,0x08,0x60,0x00,0xA2,0x42,0x14,0x70,0x0C,0x77, + 0x70,0xF4,0x01,0xC0,0x0D,0xE8,0x17,0x0A,0x30,0x20,0x42, + 0x42,0x03,0xC0,0x02,0xC1,0xA2,0x08,0x60,0x00,0x01,0xC3, + 0x14,0x70,0x0C,0x77,0x62,0xF4,0x04,0xC2,0x08,0xEA,0x02, + 0xC0,0x03,0xC3,0x60,0x7B,0x23,0x41,0x14,0x77,0x0C,0x77, + 0x5A,0xF2,0x8F,0x0E,0x10,0x20,0x04,0xC5,0x06,0xC0,0x0A, + 0xE8,0x03,0xC0,0x02,0xC1,0x06,0xC2,0x72,0x08,0x60,0x00, + 0x6C,0x71,0x14,0x70,0x0C,0x77,0x4C,0xF4,0x0A,0xC0,0x0C, + 0xE8,0x2E,0xDB,0x6F,0xC3,0x02,0xC0,0x03,0xC3,0x8F,0xC1, + 0x60,0x7B,0x4C,0x71,0x14,0x77,0x0C,0x77,0x40,0xF2,0x17, + 0x08,0x30,0x30,0x6C,0x71,0x03,0xC0,0x02,0xC1,0x46,0x08, + 0x60,0x00,0x03,0x42,0x14,0x70,0x0C,0x77,0x34,0xF4,0x19, + 0x0B,0x30,0x30,0x00,0x21,0x41,0x33,0x02,0xC0,0x03,0xC3, + 0x60,0x7B,0x63,0x42,0x14,0x77,0x0C,0x77,0x2A,0xF2,0x0B, + 0xC0,0x0B,0xE8,0x03,0xC0,0x02,0xC1,0x0B,0xC2,0x1A,0x08, + 0x60,0x00,0x6C,0x71,0x14,0x70,0x0C,0x77,0x1E,0xF4,0x8C, + 0x26,0x41,0xA9,0x0B,0xF4,0x09,0xC2,0x09,0xEA,0x02,0xC0, + 0x08,0xC1,0x03,0xC3,0x40,0x7B,0x14,0x77,0x0C,0x77,0x12, + 0xF2,0x19,0x0C,0x30,0x20,0x82,0x42,0x03,0xC0,0x02,0xC1, + 0xEA,0x0F,0x20,0x00,0x01,0xC3,0x14,0x70,0x0C,0x77,0x08, + 0xF4,0x07,0xC0,0xF8,0x60,0xCB,0x00,0xEF,0xFF,0x47,0xC0, + 0x07,0xC0,0x80,0x24,0x03,0x31,0x04,0x14,0x1B,0x34,0xDA, + 0xC6,0xE0,0x78,0xE6,0xC2,0x08,0x46,0xC3,0x41,0xF0,0x3F, + 0x00,0x00,0x0C,0x70,0xAD,0x71,0xCB,0x47,0x7F,0x00,0x40, + 0x94,0x0B,0x00,0x00,0x00,0x08,0xE7,0xA5,0x71,0xDC,0x7E, + 0x0A,0xEE,0x11,0x0D,0x95,0x12,0xF5,0x0E,0x1E,0x90,0x40, + 0x87,0x61,0x87,0x00,0x59,0xF6,0xF1,0xC6,0xC6,0xE0,0x78, + 0xE2,0xC3,0xA4,0xC1,0x08,0x45,0xFE,0x0D,0x20,0x00,0x82, + 0xC0,0x08,0x14,0x02,0x31,0x83,0x43,0x25,0x93,0x06,0x93, + 0x40,0xB3,0x21,0xB3,0x02,0xB3,0x06,0x1C,0x03,0x30,0x49, + 0x85,0x80,0xC1,0xA1,0x40,0x1A,0x59,0x0C,0x70,0xC2,0xC7, + 0xE0,0x7F,0x0C,0x70,0x14,0x71,0x0C,0x70,0xE0,0x7D,0xC3, + 0x42,0x80,0x00,0xB8,0x3B,0x00,0x8A,0x00,0xA9,0x01,0x8A, + 0x01,0xA9,0x02,0x8A,0x02,0xA9,0x03,0x8A,0x03,0xA9,0x04, + 0x8A,0x04,0xA9,0x05,0x8A,0x05,0xA9,0xE0,0x7F,0x0C,0x71, + 0xE4,0xC3,0xA1,0xC1,0x08,0x46,0x04,0x88,0x2C,0x70,0x40, + 0x24,0xC2,0x30,0x6C,0x71,0x12,0x59,0x91,0x08,0x31,0x00, + 0x22,0xDD,0x03,0x14,0x80,0x30,0xC3,0x41,0x80,0x00,0x30, + 0x3E,0x21,0xDD,0x00,0xA9,0x8C,0x20,0xC3,0x8E,0x3C,0xF4, + 0xB6,0xD8,0x02,0x1C,0x02,0x30,0x04,0x8E,0x8C,0x70,0x14, + 0xD9,0x40,0x24,0x82,0x30,0x6C,0x71,0x80,0x45,0xC3,0x46, + 0xA0,0x40,0x00,0x00,0xAD,0x70,0x13,0x59,0x02,0x1C,0x43, + 0x32,0x04,0x8E,0x20,0xD9,0x40,0x24,0x82,0x30,0x6C,0x71, + 0xA1,0x44,0xA1,0x45,0xC3,0x46,0x80,0x3F,0x00,0x00,0x13, + 0x59,0x47,0x86,0x0C,0x70,0x60,0x7A,0xC1,0x41,0x86,0x16, + 0x81,0x10,0xC3,0x40,0x80,0x00,0xAC,0x3F,0xC6,0xB9,0x0E, + 0x0D,0xEF,0x08,0x86,0x1E,0x42,0x10,0xC3,0x40,0x80,0x00, + 0x20,0x3E,0xA0,0xA0,0xC3,0x40,0x80,0x00,0x24,0x3E,0xA0, + 0xA0,0xC3,0x40,0x80,0x00,0x29,0x3E,0xA0,0xA8,0xC3,0x40, + 0x80,0x00,0x28,0x3E,0xA0,0xA8,0xA1,0x40,0xC4,0xC7,0xF2, + 0xC3,0xA1,0xC1,0x14,0xD9,0xB6,0xDA,0xE2,0x0D,0xEF,0x08, + 0x10,0x44,0x0C,0x75,0x03,0x59,0x11,0xD9,0x4C,0x70,0xD6, + 0x0D,0xEF,0x08,0x82,0x40,0x32,0xD8,0x03,0x59,0x32,0xD9, + 0x4C,0x70,0xC6,0x0D,0xEF,0x08,0x82,0x40,0x0F,0xD9,0x08, + 0xDA,0xBE,0x0D,0xEF,0x08,0x82,0x40,0xAD,0x70,0xD3,0x42, + 0x80,0x00,0x30,0x3E,0xED,0x70,0x03,0xF0,0xE5,0x71,0xEF, + 0x7E,0xE1,0x0E,0xF5,0x10,0x40,0x26,0x55,0x10,0x4F,0x25, + 0x00,0x21,0x0F,0x7A,0x32,0xD9,0x96,0x0D,0xEF,0x08,0x82, + 0x40,0x32,0xD8,0x03,0x59,0x2F,0x21,0x80,0x23,0x40,0x21, + 0x80,0x20,0x0F,0x79,0x40,0x24,0x82,0x30,0x6C,0x72,0x82, + 0x40,0x30,0x43,0x12,0x59,0x03,0x14,0x80,0x30,0x00,0x12, + 0x82,0x20,0x02,0x14,0x81,0x30,0x08,0xB8,0x8C,0x22,0xC3, + 0x8E,0x07,0xF4,0x25,0x78,0x0E,0x78,0x42,0x28,0x90,0x00, + 0x04,0xF0,0x38,0x60,0x41,0x28,0x10,0x01,0x45,0x25,0x00, + 0x25,0x0F,0x7A,0x32,0xD9,0x4A,0x0D,0xEF,0x08,0x82,0x40, + 0x32,0xD8,0x03,0x59,0x40,0x24,0x82,0x30,0x6C,0x72,0x82, + 0x40,0x62,0x41,0x12,0x59,0x03,0x14,0x80,0x30,0x00,0x12, + 0x8B,0x20,0x02,0x14,0x81,0x30,0x08,0xB8,0x8C,0x23,0xC3, + 0x9E,0x05,0xF4,0x25,0x78,0x0E,0x78,0x42,0xB8,0x03,0xF0, + 0x38,0x60,0x24,0xB8,0x0E,0x20,0x00,0x04,0x00,0x21,0x81, + 0x2F,0x80,0x00,0xB8,0x3B,0x00,0xB1,0x0E,0x78,0x42,0x28, + 0xC1,0x07,0x38,0x60,0x15,0x0E,0xB1,0x10,0x27,0x78,0x8C, + 0x23,0xC3,0x9E,0x0D,0xF4,0x8C,0x20,0x86,0x86,0x50,0xF6, + 0xA2,0xF1,0x8C,0x23,0xC3,0x9E,0x08,0xF4,0x8C,0x20,0x0C, + 0x8D,0x4A,0xF6,0x9A,0xF1,0xE7,0xE0,0x46,0xF6,0x98,0xF1, + 0x8C,0x20,0x43,0x83,0x28,0x07,0xCB,0xFF,0xAF,0x78,0x0F, + 0x20,0x8D,0x03,0x90,0xF1,0x14,0xD9,0xB6,0xDA,0xC2,0x0C, + 0xEF,0x08,0x82,0x40,0x0C,0x75,0x03,0x59,0x19,0x0D,0x3E, + 0x10,0x61,0xD8,0xAF,0x79,0x11,0x09,0x7E,0x00,0x62,0xD8, + 0x09,0x09,0xBE,0x00,0x64,0xD8,0x0C,0x72,0xD2,0xC7,0xE0, + 0x78,0xEE,0xC3,0xA1,0xC1,0x28,0x45,0x10,0x42,0x8C,0x20, + 0xC3,0x8F,0xC3,0x40,0x80,0x00,0x1D,0x3E,0xC3,0x41,0x80, + 0x00,0x1E,0x3E,0x31,0xF2,0xCB,0x46,0x80,0x00,0x34,0x3E, + 0xEF,0x0A,0x30,0x24,0x8C,0x22,0x02,0xA0,0x81,0xF2,0x56, + 0x71,0xC8,0x01,0x0D,0x00,0x00,0x88,0x00,0x19,0x43,0x00, + 0x05,0xE8,0x2C,0x85,0x60,0x79,0xA1,0x40,0xD0,0xD8,0x03, + 0x1C,0x02,0x30,0xED,0x70,0x04,0x8D,0x8C,0x70,0x9E,0xBF, + 0x11,0xD9,0x40,0x24,0xC2,0x30,0x6C,0x71,0x80,0x45,0xE1, + 0x46,0x13,0x59,0x00,0x1E,0x80,0x14,0x03,0x1C,0x03,0x30, + 0x04,0x8D,0x3E,0xD9,0x40,0x24,0xC2,0x30,0x6C,0x71,0xC3, + 0x44,0x61,0x00,0x60,0x5D,0xA1,0x45,0xE1,0x46,0x13,0x59, + 0xBB,0xF0,0x00,0x88,0xED,0x70,0xCD,0x70,0x00,0x19,0x43, + 0x00,0x0A,0xE8,0x86,0x15,0xC0,0x10,0x11,0x08,0x33,0x00, + 0xCD,0x70,0x2C,0x85,0x60,0x79,0xA1,0x40,0xCD,0x71,0xD4, + 0xD8,0x03,0x1C,0x02,0x30,0x04,0x8D,0x8C,0x70,0xD3,0x41, + 0x00,0x40,0x00,0x00,0x11,0xD9,0x40,0x24,0xC2,0x30,0x6C, + 0x71,0x80,0x45,0x0A,0x26,0x40,0x04,0x13,0x59,0x03,0x1C, + 0xC2,0x33,0x04,0x8D,0x8C,0x70,0x3E,0xD9,0x40,0x24,0xC2, + 0x30,0x6C,0x71,0x80,0x45,0x0A,0x26,0x40,0x04,0x13,0x59, + 0xC3,0x40,0x80,0x00,0x34,0x3E,0x8A,0x20,0xC3,0x2F,0x00, + 0x10,0x13,0x00,0x00,0x18,0x00,0x04,0x03,0x1C,0xC2,0x33, + 0x04,0x8D,0x11,0xD9,0x40,0x24,0xC2,0x30,0x6C,0x71,0xC3, + 0x44,0x61,0x00,0x60,0x5D,0x0A,0x26,0x40,0x04,0xA1,0x45, + 0x13,0x59,0x05,0xEE,0x2B,0x85,0x60,0x79,0xA1,0x40,0x8C, + 0x23,0x02,0xA0,0x6C,0xF2,0x76,0xF0,0xAA,0x0D,0xEF,0xFF, + 0x04,0x8D,0x00,0x41,0xA1,0x40,0x1B,0x59,0x0C,0x70,0xA1, + 0x41,0x00,0x1E,0x01,0x10,0x1D,0x59,0x4A,0x20,0x00,0x24, + 0x68,0xF0,0x00,0x88,0xED,0x70,0x00,0x19,0x43,0x00,0x8A, + 0xE8,0x86,0x15,0xC0,0x10,0x0D,0x08,0x33,0x00,0xA1,0x40, + 0x2C,0x85,0x40,0x79,0xED,0x71,0x03,0x1C,0x43,0x33,0x04, + 0x8D,0x8C,0x70,0xD3,0x41,0x00,0x40,0x00,0x00,0x10,0xD9, + 0x40,0x24,0xC2,0x30,0x6C,0x71,0x80,0x45,0x0A,0x26,0x40, + 0x04,0x13,0x59,0x20,0xD8,0x03,0x1C,0x02,0x30,0x04,0x8D, + 0x8C,0x70,0x12,0xD9,0x40,0x24,0xC2,0x30,0x6C,0x71,0x80, + 0x45,0x0A,0x26,0x40,0x04,0x13,0x59,0x54,0xD8,0x8A,0x20, + 0x02,0x20,0x00,0x16,0x13,0x10,0x03,0x1C,0x02,0x30,0x00, + 0x1E,0x00,0x14,0x04,0x8D,0x11,0xD9,0x40,0x24,0xC2,0x30, + 0x6C,0x71,0xC3,0x44,0x61,0x00,0x60,0x5D,0x0A,0x26,0x40, + 0x04,0xA1,0x45,0x13,0x59,0x05,0xEF,0x2B,0x85,0x60,0x79, + 0xA1,0x40,0xC3,0x40,0x80,0x00,0xAC,0x3F,0xE2,0x09,0xCF, + 0x08,0x2C,0x70,0xC3,0x40,0x80,0x00,0x20,0x3E,0x20,0xA0, + 0xC3,0x40,0x80,0x00,0x24,0x3E,0x20,0xA0,0xC3,0x40,0x80, + 0x00,0x29,0x3E,0x20,0xA8,0xC3,0x40,0x80,0x00,0x28,0x3E, + 0x20,0xA8,0x8C,0x23,0xC3,0xAF,0x0E,0xF4,0x49,0x85,0x00, + 0x16,0x00,0x70,0x80,0x00,0x38,0x3E,0x60,0x7A,0xA1,0x41, + 0x0A,0x20,0x80,0x24,0x04,0xF0,0x00,0x16,0x10,0x10,0x02, + 0x40,0xCE,0xC7,0xF1,0xC0,0xC3,0x42,0x80,0x00,0xC0,0x3B, + 0x20,0x82,0x20,0x81,0x1B,0x09,0x80,0x0F,0xA5,0x5A,0x6B, + 0xB6,0x24,0x8A,0x89,0xE9,0x2C,0x71,0x14,0x70,0x27,0xD8, + 0x24,0xAA,0x05,0xF2,0x27,0xD8,0x18,0x59,0xD1,0xC0,0xE0, + 0x7E,0xAB,0x20,0xE0,0x0C,0xAB,0x21,0x61,0x0A,0xFF,0xF1, + 0xC3,0x40,0x7F,0x00,0xA4,0xB0,0x65,0x03,0x00,0x00,0xE0, + 0x78,0xE0,0x7F,0x0C,0x70,0xE4,0xC2,0x2D,0x88,0xCD,0x70, + 0x0F,0xE9,0x34,0x88,0x1B,0x09,0x71,0x00,0xFF,0xDE,0xA0, + 0x80,0x03,0xF0,0xA0,0x85,0x06,0xED,0xA1,0x40,0x0B,0x59, + 0x83,0xE8,0xFC,0xF1,0x80,0xDE,0xC1,0x40,0xC4,0xC6,0xE0, + 0x78,0xE6,0xC3,0xA3,0xC1,0x28,0x45,0x08,0x46,0x10,0x59, + 0x08,0x47,0x07,0x59,0x00,0x42,0x1A,0xD8,0xE1,0x41,0x0F, + 0x59,0x2D,0x8E,0x08,0x47,0x2B,0xE9,0x14,0x8E,0x53,0x08, + 0x71,0x00,0xCD,0x70,0x1F,0xEF,0x0D,0x8F,0x1D,0xE8,0xE1, + 0x40,0x0B,0x59,0x08,0x46,0x40,0x24,0xC1,0x32,0x82,0xC2, + 0x40,0x24,0x83,0x31,0x40,0x24,0x84,0x30,0x40,0x24,0x45, + 0x31,0xE1,0x40,0x0C,0x59,0x9A,0x08,0x6F,0x03,0xC1,0x40, + 0x02,0x14,0x01,0x31,0x08,0x46,0x2F,0x3F,0x43,0x10,0xE1, + 0x40,0xF6,0x0F,0x2F,0x03,0xC1,0x41,0xCA,0x26,0xCA,0x13, + 0x00,0x85,0xF2,0x0F,0x2F,0x03,0xC1,0x41,0x43,0xF6,0xC0, + 0xA5,0xC6,0xC7,0xE4,0xC2,0x10,0x59,0x08,0x45,0x07,0x59, + 0x00,0x42,0x1A,0xD8,0xA1,0x41,0x0F,0x59,0x08,0x45,0x09, + 0x59,0x08,0x46,0x06,0x59,0x00,0x42,0x0C,0x71,0xC1,0x41, + 0x08,0x59,0x2D,0x88,0x87,0xE9,0x05,0xED,0x2D,0x8D,0x03, + 0xE9,0x0D,0x18,0x43,0x00,0xC4,0xC6,0xF0,0xC3,0xA4,0xC1, + 0x2C,0x7A,0x70,0x43,0x08,0x47,0x5F,0x0A,0x72,0x00,0x50, + 0x40,0x6C,0x24,0x54,0x01,0x40,0x24,0x12,0x30,0x2E,0x70, + 0x0A,0x46,0x49,0x26,0x0D,0x13,0x05,0x25,0x03,0x15,0xE1, + 0x42,0x40,0x24,0x41,0x30,0x4A,0x20,0x00,0x00,0x17,0x0D, + 0x72,0x10,0x60,0xC3,0x01,0x12,0x83,0x04,0x04,0x71,0xFD, + 0x08,0x62,0x83,0x01,0x19,0xD2,0x00,0x00,0x25,0x81,0x14, + 0x13,0x0E,0x33,0x13,0xA1,0x40,0x04,0x71,0x01,0x08,0x32, + 0x03,0x01,0x19,0x4A,0x04,0xF5,0xD8,0x80,0xC1,0x62,0x42, + 0x19,0x59,0xA2,0x7E,0xBD,0x0E,0x73,0x90,0xBF,0x67,0x02, + 0x40,0xD0,0xC7,0xE0,0x78,0x05,0xE8,0x00,0x18,0x84,0x0F, + 0x00,0x00,0xE1,0x07,0x06,0xE9,0x00,0x19,0x82,0x0F,0x00, + 0x00,0x07,0x00,0x05,0xEA,0x00,0x1A,0x82,0x0F,0x00,0x00, + 0x19,0x00,0x06,0xEB,0x00,0x1B,0x82,0x0F,0x00,0x00,0x08, + 0x00,0x0D,0x0C,0x10,0x00,0x00,0x1C,0x82,0x0F,0x00,0x00, + 0x1E,0x00,0xB4,0x70,0xE0,0x7C,0x00,0x1D,0x82,0x0F,0x00, + 0x00,0x16,0x00,0xE0,0x7E,0xE0,0x78,0xE4,0xC2,0x08,0x45, + 0x09,0x59,0x08,0x46,0x06,0x59,0x00,0x42,0x0C,0x71,0xC1, + 0x41,0x08,0x59,0x15,0x80,0x2F,0x27,0xFF,0x00,0x6F,0x23, + 0x3F,0x00,0x6F,0x26,0x3F,0x04,0x6F,0x23,0x3F,0x00,0x22, + 0x80,0x81,0x80,0x00,0x80,0x2F,0x26,0xFF,0x00,0x41,0x28, + 0x82,0x01,0x02,0xB8,0x41,0xAD,0x00,0xAD,0x41,0x2C,0x80, + 0x11,0x03,0xAD,0x12,0x6C,0x02,0xAD,0x41,0x29,0x80,0x01, + 0x05,0xAD,0x12,0x69,0x04,0xAD,0xC4,0xC6,0xE0,0x78,0xC3, + 0x42,0x7F,0x00,0x14,0xB1,0xC3,0x43,0x7F,0x00,0x14,0xB1, + 0x11,0x03,0x8F,0x0A,0xC3,0x42,0x7F,0x00,0x0C,0xB1,0xC3, + 0x43,0x7F,0x00,0x10,0xB1,0x01,0x03,0x8F,0x0A,0xC3,0x42, + 0x7F,0x00,0x08,0xB1,0xC3,0x43,0x7F,0x00,0x0C,0xB1,0xF1, + 0x02,0x8F,0x0A,0xC3,0x42,0x7F,0x00,0x0C,0xB1,0xC3,0x43, + 0x7F,0x00,0x0C,0xB1,0xE1,0x02,0x8F,0x0A,0xC3,0x42,0x7F, + 0x00,0x0C,0xB1,0xC3,0x43,0x7F,0x00,0x0C,0xB1,0xD1,0x02, + 0x8F,0x0A,0xC3,0x42,0x7F,0x00,0x10,0xB1,0xC3,0x43,0x7F, + 0x00,0x14,0xB1,0xB1,0x02,0x8F,0x0A,0xF1,0xC0,0xA1,0xC1, + 0x2C,0x70,0xC3,0x42,0x7F,0x00,0x14,0xB1,0xC3,0x43,0x7F, + 0x00,0x18,0xB1,0x8C,0x76,0x5E,0x0A,0x2F,0x0C,0x40,0x24, + 0x05,0x30,0x00,0xC0,0x87,0x74,0xD1,0xC0,0xE0,0x7E,0xC3, + 0x42,0x7F,0x00,0x1C,0xB1,0xC3,0x43,0x7F,0x00,0x1C,0xB1, + 0x7D,0x02,0x8F,0x0A,0xF1,0xC0,0xA1,0xC1,0x0C,0x70,0x2C, + 0x70,0xC3,0x42,0x7F,0x00,0x18,0xB1,0xC3,0x43,0x7F,0x00, + 0x18,0xB1,0x8C,0x74,0x2A,0x0A,0x2F,0x0C,0x40,0x24,0xC5, + 0x30,0x03,0x14,0x80,0x30,0x87,0x74,0xD1,0xC0,0xE0,0x7E, + 0xC3,0x42,0x7F,0x00,0x1C,0xB1,0xC3,0x43,0x7F,0x00,0x1C, + 0xB1,0x45,0x02,0x8F,0x0A,0xC3,0x42,0x7F,0x00,0x1C,0xB1, + 0xC3,0x43,0x7F,0x00,0x1C,0xB1,0x35,0x02,0x8F,0x0A,0xC3, + 0x42,0x7F,0x00,0x14,0xB1,0x35,0x02,0xAF,0x0A,0x40,0x43, + 0xE2,0xC0,0x8D,0x70,0x15,0xEA,0x60,0x88,0x2F,0x7D,0xB1, + 0x73,0xCA,0x24,0x01,0x10,0x0F,0xF2,0x1F,0x0A,0x70,0x00, + 0x40,0x20,0x41,0x00,0x44,0x77,0x00,0x89,0x11,0x08,0x60, + 0x03,0x42,0x22,0x42,0x80,0x24,0x71,0xFA,0xF5,0x03,0xF0, + 0x28,0x44,0x81,0x40,0xC2,0xC4,0xE0,0x78,0xE4,0xC2,0x14, + 0x70,0xCA,0x20,0x61,0x00,0xC9,0x69,0x30,0x70,0xCA,0x26, + 0x0B,0x10,0x48,0x45,0x40,0x40,0x30,0xD9,0x9A,0x08,0xAF, + 0x0C,0xC1,0x42,0xD8,0x65,0x00,0x18,0x03,0x00,0xC4,0xC6, + 0xEA,0xC2,0x30,0x41,0x79,0x23,0x01,0x00,0xF0,0x26,0x41, + 0x70,0x7F,0x00,0x9C,0xB0,0x48,0x45,0x08,0x47,0xC3,0xBA, + 0x22,0x40,0x60,0x7F,0x30,0x40,0x8A,0x26,0xFF,0x1F,0x04, + 0x71,0x0E,0xE8,0x17,0x0D,0x12,0x14,0x10,0xDA,0x22,0x40, + 0x60,0x7F,0x02,0x41,0x04,0x71,0x06,0xE8,0x70,0xBD,0xF5, + 0x0D,0x13,0x94,0xCD,0x70,0xC1,0x40,0xCA,0xC6,0x28,0x44, + 0x00,0x43,0x2C,0x71,0x8C,0x70,0x79,0x05,0xEF,0xFF,0x81, + 0x40,0xE0,0x78,0xF1,0xC0,0x4A,0x0B,0x0F,0xFF,0xE1,0xC5, + 0xA1,0xC1,0x08,0x45,0x84,0xC0,0x40,0xC0,0x0E,0x59,0x00, + 0xC3,0x00,0x41,0xC3,0x40,0x7F,0x00,0xE8,0xAD,0x5A,0x08, + 0xAF,0xFF,0xA1,0x42,0x87,0x74,0xC1,0xC5,0xD1,0xC0,0xE0, + 0x7F,0xA8,0xC0,0xE4,0xC2,0x28,0x45,0x08,0x46,0x2C,0x70, + 0xC3,0x42,0xFF,0x7F,0xFF,0xFF,0x22,0x0F,0xEF,0xFF,0xA1, + 0x40,0x4E,0x25,0x41,0x10,0x1A,0x61,0xA1,0x41,0x82,0x0E, + 0x2F,0x03,0xC1,0x40,0xC1,0x40,0xC4,0xC6,0xE0,0x78,0xF2, + 0xC2,0x30,0x43,0xC1,0x09,0x30,0x00,0x10,0x45,0xCD,0x70, + 0x8A,0x24,0x02,0x23,0xD1,0x42,0xED,0x70,0x1A,0x27,0x0D, + 0x15,0xA2,0x75,0xA1,0x40,0x04,0x59,0x3A,0x85,0x56,0x0C, + 0x2F,0x03,0x10,0x41,0x32,0xF2,0x22,0x40,0xAA,0x0C,0x2F, + 0x03,0x42,0x41,0x6E,0x00,0x2C,0x00,0xA1,0x40,0x24,0x15, + 0x10,0x10,0x24,0x1D,0x80,0x1F,0x7F,0x00,0x9C,0xAA,0x22, + 0x59,0x1A,0x85,0x8E,0x0C,0x2F,0x03,0x2C,0x70,0xC9,0xF6, + 0xE1,0x40,0x9A,0x20,0x02,0x03,0xA2,0x70,0x2C,0x80,0x03, + 0xE9,0x60,0x79,0xA1,0x40,0x22,0x40,0xA1,0x41,0x68,0x1D, + 0x40,0x14,0x23,0x20,0x00,0x04,0x24,0x1D,0x00,0x14,0xA1, + 0x40,0x21,0x59,0xA1,0x40,0x1C,0x59,0xE1,0x40,0x9A,0x20, + 0x02,0x03,0xA2,0x70,0x2B,0x80,0x14,0xE9,0x60,0x79,0xA1, + 0x40,0x12,0xF0,0x22,0x40,0x4A,0x0C,0x2F,0x03,0x42,0x41, + 0xCC,0xF6,0xA1,0x40,0x22,0x59,0x08,0x46,0xA1,0x40,0x21, + 0x59,0x06,0xF0,0xA1,0x40,0x1F,0x59,0x2C,0x70,0xA1,0x40, + 0x02,0x59,0xD5,0x70,0xCD,0x71,0x05,0xF4,0x2C,0x71,0xA1, + 0x40,0x02,0x59,0xCD,0x70,0xA1,0x40,0x11,0x59,0x1E,0x0A, + 0x0F,0x0C,0xE5,0x71,0x55,0x0F,0xC4,0x94,0xD2,0xC6,0xE0, + 0x78,0xF1,0xC0,0xC3,0x40,0x7F,0x00,0xBC,0xB0,0xDE,0x0E, + 0xCF,0xFF,0xC3,0x40,0x80,0x00,0xF8,0x3B,0x2C,0x70,0x23, + 0xA0,0x22,0xA0,0x21,0xA0,0x20,0xA0,0xAA,0x21,0xA1,0x0D, + 0x0C,0x70,0x88,0xB9,0xD1,0xC0,0xE0,0x7F,0xAB,0x21,0xA1, + 0x0D,0xEA,0xC3,0xA2,0xC1,0x08,0x45,0x0C,0x74,0xAB,0x20, + 0xE2,0x07,0xAA,0x20,0xA0,0x0E,0xAA,0x21,0xA0,0x0E,0xF9, + 0x08,0x61,0x80,0x40,0x28,0x02,0x02,0xAA,0x20,0x60,0x0E, + 0xAA,0x21,0x60,0x0E,0xF9,0x08,0x61,0x80,0x45,0x78,0x3E, + 0x0C,0x0F,0x03,0xCB,0x46,0x7F,0x00,0x40,0xB2,0x23,0x96, + 0x08,0x47,0x2F,0x3A,0x43,0x00,0xC3,0x41,0xFA,0x46,0x00, + 0x00,0x00,0x39,0x81,0x00,0xBA,0x0D,0xAF,0xFE,0x20,0x40, + 0x00,0x3F,0x90,0x1F,0x1C,0x46,0x00,0x40,0x10,0x41,0x02, + 0x40,0xA6,0x0D,0xAF,0xFE,0x28,0x47,0xC3,0x43,0xF0,0x3F, + 0x00,0x00,0x36,0x0E,0xAF,0xFE,0x4C,0x70,0x22,0x42,0xE1, + 0x43,0x00,0x59,0xC6,0x0C,0xCF,0xFE,0x49,0x85,0x0E,0x7F, + 0xC3,0x40,0x7F,0x00,0xCC,0xB0,0x3E,0x0E,0xEF,0xFF,0xE1, + 0x41,0xC3,0x41,0x73,0x3F,0x33,0x33,0x56,0x0B,0x2F,0x03, + 0x02,0x40,0xCD,0xF6,0xC3,0x41,0x86,0x3F,0x66,0x66,0x46, + 0x0B,0x2F,0x03,0x02,0x40,0x47,0xF6,0x05,0x16,0xC0,0x10, + 0xC2,0x08,0x2F,0x0E,0xE1,0x41,0x09,0x59,0x08,0x46,0x06, + 0x59,0x00,0x42,0x0C,0x71,0xC1,0x41,0x08,0x59,0x10,0x40, + 0x09,0x59,0x08,0x46,0x06,0x59,0x00,0x42,0x08,0xD8,0xC1, + 0x41,0x08,0x59,0x08,0x46,0x12,0x0C,0xEF,0xFF,0x80,0xC0, + 0x2F,0x27,0x3F,0x00,0x6F,0x23,0x3F,0x00,0xED,0x74,0x6F, + 0x26,0x3F,0x04,0x6F,0x23,0x3F,0x00,0x55,0x86,0x2F,0x26, + 0x3F,0x00,0xCB,0x46,0x80,0x00,0xB0,0x3B,0xAB,0x27,0xA2, + 0x17,0x00,0x86,0x04,0x71,0x2F,0x08,0xB2,0x0C,0x00,0xA6, + 0x00,0x14,0x4C,0x31,0x02,0x14,0x43,0x31,0x04,0x14,0x40, + 0x31,0xC3,0x41,0x80,0x00,0xF8,0x3B,0x80,0xA1,0x61,0xA1, + 0x02,0xA1,0x50,0x78,0x03,0xA1,0x49,0x85,0xA1,0x40,0x1A, + 0x59,0x00,0x1E,0x01,0x10,0x01,0x86,0x21,0x68,0x21,0xA6, + 0x8C,0x20,0xC3,0x81,0x09,0xF2,0xE3,0xE0,0x0A,0xF2,0x8C, + 0x20,0x42,0x85,0x0B,0xF4,0x88,0x18,0x05,0x22,0x0B,0xF0, + 0x88,0x18,0x05,0x24,0x09,0xF0,0x88,0x18,0xC4,0x23,0x05, + 0xF0,0x0D,0x08,0x51,0x0C,0x88,0x18,0x85,0x20,0x05,0x59, + 0x0C,0x70,0xCA,0xC7,0xE0,0x7F,0x0C,0x70,0xE0,0xB0,0x7F, + 0x00,0xF4,0xB0,0x7F,0x00,0x52,0x61,0x6E,0x67,0x65,0x20, + 0x63,0x68,0x61,0x6E,0x67,0x65,0x64,0x20,0x74,0x6F,0x20, + 0x25,0x64,0x0A,0x00,0x00,0x00,0x00,0x77,0x6F,0x6D,0x20, + 0x61,0x6C,0x67,0x20,0x69,0x6E,0x69,0x74,0x0A,0x0D,0x00, + 0x00,0x25,0x64,0x20,0x25,0x64,0x0A,0x0D,0x00,0x28,0x6E, + 0x75,0x6C,0x6C,0x29,0x00,0x00,0x30,0x00,0x00,0x00,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x08,0x90, + 0x01,0x0C,0x04,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x02,0x00,0x00,0x70,0xA6,0x7F,0x00,0x60, + 0xA8,0x7F,0x00,0x3C,0xC6,0x60,0x00,0x24,0xCC,0x60,0x00, + 0x70,0xC6,0x60,0x00,0x7C,0xC5,0x60,0x00,0x30,0xC5,0x60, + 0x00,0x8C,0xC6,0x60,0x00,0x48,0xC6,0x60,0x00,0xDC,0xC9, + 0x60,0x00,0x30,0xC6,0x60,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xD4,0x3F,0x80,0x00,0x8C,0xB9,0x7F,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xB8,0x1E,0x05,0x3E,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF4,0x01,0x10, + 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, + 0xFF,0x00,0x00,0x00,0x00,0x01,0x03,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x41,0x01,0x00,0x00,0xA6,0x01, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A, + 0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x14,0xAF,0x7F,0x00,0x40,0xAF,0x7F,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0xE1,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x18,0xA6,0x7F,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x32,0x00,0xA6,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x21,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x98,0xB0,0x7F,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x1E,0x00,0xE0,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x41,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xF4,0xFF,0x60,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8B,0xC8,0x00, + 0x00,0x01,0x04,0x00,0x00,0xB7,0x2D,0x03,0x00,0x06,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x15,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x82,0x06,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x33,0xB3,0x3E,0xCD, + 0xCC,0x0C,0x3F,0xCD,0xCC,0x0C,0x3F,0x33,0x33,0x33,0x3F, + 0x33,0x33,0x33,0x3F,0xCD,0xCC,0x4C,0x3F,0x01,0x00,0x09, + 0x04,0x02,0x17,0xB7,0xD1,0x38,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x17,0xB7,0xD1,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x17,0xB7, + 0xD1,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xBD,0x37,0x86,0x35,0xBD,0x37,0x86,0x35,0xBD,0x37,0x86, + 0x35,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x42,0xE8,0x03, + 0x05,0x00,0x2D,0x00,0x84,0x03,0xB0,0x04,0x96,0x00,0x08, + 0x96,0x00,0x0E,0x01,0x03,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x33,0xB3,0x3E,0xCD, + 0xCC,0x0C,0x3F,0xCD,0xCC,0x0C,0x3F,0x33,0x33,0x33,0x3F, + 0x33,0x33,0x33,0x3F,0xCD,0xCC,0x4C,0x3E,0x01,0x06,0x04, + 0x02,0x00,0x05,0x00,0x41,0x01,0x40,0x01,0x24,0x00,0x78, + 0x00,0x04,0x01,0x14,0x14,0x02,0x02,0x00,0x04,0x00,0x00, + 0x80,0x3F,0xCD,0xCC,0xCC,0x3D,0x9A,0x99,0x99,0x3F,0xCD, + 0xCC,0xCC,0x3E,0xCD,0xCC,0xCC,0x3D,0x01,0x00,0x14,0x00, + 0x10,0x04,0x78,0x00,0x08,0x00,0x00,0x05,0x9A,0x99,0x19, + 0x3F,0x9A,0x99,0x19,0x3F,0x50,0x00,0x09,0x00,0x1E,0x00, + 0xE8,0x03,0x50,0x00,0x41,0x00,0x04,0x00,0x04,0x00,0x00, + 0x80,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3E, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3E,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x80,0x40,0xB5,0xFE,0x16,0x37, + 0xB5,0xFE,0x16,0x37,0xB5,0xFE,0x16,0x37,0x8B,0xDE,0xA9, + 0x38,0x00,0x00,0xE0,0x40,0x0E,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3F, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCD,0xCC,0xCC,0x3D, + 0x01,0x09,0x09,0x03,0x13,0x32,0xA3,0x04,0xCD,0x0C,0x19, + 0x28,0x04,0x0E,0x00,0x03,0x9A,0x99,0x99,0x3E,0x9A,0x99, + 0x99,0x3E,0xCD,0xCC,0xCC,0x3E,0x9A,0x99,0x19,0x3F,0x9A, + 0x99,0x99,0x3E,0x00,0x00,0x80,0x3E,0x9A,0x99,0x99,0x3E, + 0xEC,0x51,0xB8,0x3E,0xCD,0xCC,0x4C,0x3F,0xCD,0xCC,0x4C, + 0x3F,0xCD,0xCC,0x4C,0x3F,0xCD,0xCC,0x4C,0x3F,0xCD,0xCC, + 0x4C,0x3E,0xCD,0xCC,0x4C,0x3E,0xCD,0xCC,0x4C,0x3E,0xCD, + 0xCC,0x4C,0x3E,0x01,0xC2,0xB8,0xB2,0x3E,0x35,0xFA,0x8E, + 0x3C,0x0A,0x00,0x0A,0x00,0x00,0x02,0x00,0x0A,0x00,0x50, + 0x77,0x56,0x3D,0x0E,0x00,0x00,0x80,0x3E,0x8F,0xC2,0xF5, + 0x3C,0x0A,0xD7,0xA3,0x3C,0x64,0x80,0x34,0x2D,0x46,0x01, + 0x0A,0x00,0x50,0x00,0x00,0x00,0xC0,0x3F,0x00,0x00,0x00, + 0x40,0x09,0x02,0x00,0x00,0xC8,0x41,0x00,0x00,0x80,0x42, + 0x00,0x00,0x80,0x41,0x00,0x00,0xC0,0x3F,0xCD,0xCC,0x4C, + 0x3D,0xC2,0xB8,0xB2,0x3D,0x32,0x25,0x3B,0x18,0x47,0x00, + 0x00,0xA0,0x40,0x9A,0x99,0x19,0x3F,0x0A,0xD7,0x23,0x3C, + 0x0A,0xD7,0x23,0x3C,0x02,0x50,0x77,0x56,0x3D,0x00,0x01, + 0xCD,0xCC,0x4C,0x3F,0x00,0x00,0x60,0x40,0x00,0x00,0x20, + 0x40,0xCD,0xCC,0xCC,0x3D,0x04,0x8F,0xC2,0xF5,0x3C,0x02, + 0x01,0x02,0x03,0x04,0x01,0x0A,0xB0,0x04,0x64,0x00,0x0A, + 0xD7,0x23,0x3C,0x0A,0xD7,0x23,0x3C,0x01,0x0A,0x00,0x0A, + 0x00,0x00,0x00,0xFA,0x43,0x00,0x00,0x7A,0x44,0x00,0x00, + 0xA0,0x3F,0x00,0x00,0x48,0x42,0x00,0x00,0x80,0x3F,0x9A, + 0x99,0x19,0x3E,0x9A,0x99,0x99,0x3D,0x00,0x00,0x20,0x42, + 0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x3F,0x80,0x96,0x18,0x4B,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x96,0x18, + 0x4B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x80,0x96,0x18,0x4B,0x00,0x00,0xC0,0x40,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xC0,0x40,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x40, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, + 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x80,0x40, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, + 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x0A,0xD7,0x23, + 0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x0A,0xD7,0x23,0x3C,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xD7, + 0x23,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x17,0xB7,0xD1,0x38,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x17, + 0xB7,0xD1,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x17,0xB7,0xD1,0x38,0x0A,0xD7, + 0x23,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x0A,0xD7,0x23,0x3C,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A, + 0xD7,0x23,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xAC,0xC5,0x27,0x37,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xAC,0xC5,0x27,0x37,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xAC,0xC5,0x27,0x37,0x00, + 0x24,0x74,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x74,0x49,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x24,0x74,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x07,0x04,0x03,0x00,0x00,0x00,0x00, + 0x00,0x00,0x0A,0x03,0x04,0x19,0x40,0x12,0x18,0x00,0x40, + 0x72,0x08,0x00,0x0E,0xB3,0x80,0x00,0x00,0x25,0x00,0x03, + 0x01,0x00,0x09,0x0C,0x96,0x00,0x0E,0xB4,0x00,0x05,0x00, + 0x01,0x00,0xB0,0x04,0x52,0x03,0x00,0x00,0x40,0x41,0x01, + 0x01,0x01,0x01,0x02,0x02,0x02,0x03,0x03,0x01,0x01,0x94, + 0xE9,0x00,0x00,0x00,0x08,0xB1,0x7F,0x00,0x0C,0xB1,0x7F, + 0x00,0x0C,0xB1,0x7F,0x00,0x0C,0xB1,0x7F,0x00,0x0C,0xB1, + 0x7F,0x00,0x0C,0xB1,0x7F,0x00,0x0C,0xB1,0x7F,0x00,0x10, + 0xB1,0x7F,0x00,0x10,0xB1,0x7F,0x00,0x14,0xB1,0x7F,0x00, + 0x14,0xB1,0x7F,0x00,0x14,0xB1,0x7F,0x00,0x14,0xB1,0x7F, + 0x00,0x14,0xB1,0x7F,0x00,0x14,0xB1,0x7F,0x00,0x18,0xB1, + 0x7F,0x00,0x18,0xB1,0x7F,0x00,0x18,0xB1,0x7F,0x00,0x18, + 0xB1,0x7F,0x00,0x1C,0xB1,0x7F,0x00,0x1C,0xB1,0x7F,0x00, + 0x1C,0xB1,0x7F,0x00,0x1C,0xB1,0x7F,0x00,0x1C,0xB1,0x7F, + 0x00,0x1C,0xB1,0x7F,0x00,0x1C,0xB1,0x7F,0x00,0xAB,0x26, + 0x0A,0x74,0x7F,0x00,0x98,0x80,0xE0,0x7E,0xE0,0x78,0xC3, + 0x40,0x7F,0x00,0x00,0x80,0x6B,0x20,0x40,0x09,0xDB,0x44, + 0x80,0x00,0xB0,0x3B,0xDB,0x42,0x80,0x00,0xB0,0x3B,0x0A, + 0x22,0x80,0x8F,0x7F,0x00,0x1C,0xBA,0xE2,0x20,0x82,0x00, + 0x6F,0x70,0x22,0x20,0x80,0x0F,0x7F,0x00,0x5C,0xBA,0x5D, + 0x03,0x8F,0x02,0xAC,0xBD,0x7F,0x00,0xF1,0xC0,0xC3,0x40, + 0x80,0x00,0xF8,0x3B,0xC3,0x41,0x80,0x00,0x08,0x3C,0x12, + 0x49,0xC6,0x0B,0x2F,0x0C,0x2C,0x70,0x12,0x08,0x00,0x00, + 0x3A,0x0B,0x00,0x00,0xD1,0xC0,0xE0,0x7E,0xE0,0x78,0xE8, + 0xC3,0xA1,0xC1,0xC3,0x40,0x7F,0x00,0xEC,0xBF,0x33,0xE8, + 0xCB,0x46,0x7F,0x00,0x54,0xBF,0xDA,0x0E,0xEF,0x0D,0xC1, + 0x40,0xAC,0xE8,0x03,0x8E,0x0F,0x08,0xF4,0x00,0xE4,0x6E, + 0xA0,0x87,0x40,0x26,0x0F,0x12,0x10,0xF0,0xCB,0x45,0x60, + 0x00,0xE8,0x99,0x19,0x00,0x00,0x00,0x80,0xC3,0x02,0x40, + 0xC1,0x41,0x60,0x7D,0x81,0x42,0x03,0x6E,0x6C,0x20,0x40, + 0x00,0x1F,0x67,0x08,0xE7,0xC1,0x87,0xD5,0x70,0x1A,0x00, + 0x21,0x00,0x80,0x87,0x40,0x27,0x10,0x12,0x30,0xF6,0xD3, + 0x7A,0x2C,0x70,0x56,0x0B,0x2F,0x0C,0x81,0x40,0x0A,0x47, + 0xF2,0xF1,0x05,0xEC,0x04,0x6F,0xE4,0x68,0xEE,0xF1,0x0C, + 0x70,0xC8,0xC7,0xE0,0x78,0xF1,0xC0,0x0F,0xD8,0xC3,0x41, + 0x7F,0x00,0x48,0xA6,0x17,0x59,0x0F,0xD8,0xC3,0x41,0x7F, + 0x00,0x44,0xA6,0x16,0x59,0xD1,0xC0,0xE0,0x7E,0xE0,0x78, + 0xF2,0xC2,0x30,0x44,0x10,0x43,0x1B,0xD9,0x0C,0x70,0x70, + 0x42,0x50,0x45,0xAB,0x21,0xA0,0x0D,0x01,0x59,0xC3,0x40, + 0x7F,0x00,0x1C,0xB1,0xC3,0x41,0x7F,0x00,0xA8,0xB1,0x02, + 0x79,0xD3,0x41,0x7F,0x00,0xA8,0xB1,0xC3,0x43,0x7F,0x00, + 0x40,0xB2,0xD3,0x40,0x7F,0x00,0x40,0xB2,0xC3,0x42,0x7F, + 0x00,0xD8,0xB2,0x02,0x23,0x4E,0x04,0x02,0x22,0x0D,0x04, + 0x84,0x29,0x02,0x03,0xCB,0x47,0x80,0x00,0xC0,0x3B,0x84, + 0x2E,0x01,0x13,0x25,0xAF,0x2F,0x79,0x84,0x2D,0x01,0x13, + 0xC6,0xAF,0x56,0x0E,0xEF,0x0C,0xA7,0xAF,0xCF,0x79,0x96, + 0x0E,0xEF,0x0C,0x22,0x40,0xAF,0x79,0x82,0x0E,0xEF,0x0C, + 0x02,0x40,0xCB,0x45,0x7F,0x00,0xD8,0xB2,0x92,0x0D,0xEF, + 0x0C,0xA1,0x40,0xAA,0x20,0xE1,0x04,0x82,0x41,0x05,0x20, + 0x82,0x0F,0xB7,0x2D,0x00,0x00,0x62,0x40,0x86,0x0E,0xAF, + 0x0B,0xAB,0x22,0xE1,0x04,0x2F,0x21,0x85,0x04,0x3E,0x0F, + 0xAF,0x0D,0xA2,0x40,0x66,0x8F,0x27,0x8F,0xC3,0x40,0x80, + 0x00,0xF0,0x3B,0x45,0x8F,0x00,0x21,0xC4,0x00,0x61,0x80, + 0x20,0x80,0x66,0x08,0x20,0x00,0xA1,0x40,0x1D,0xD9,0x0C, + 0x70,0xAB,0x21,0xA0,0x0D,0x01,0x59,0x0A,0x08,0x00,0x00, + 0xD2,0xC6,0xE4,0xC2,0xAD,0x70,0xCB,0x46,0x7F,0x00,0xB4, + 0xB9,0x08,0x16,0x00,0x14,0xFC,0x16,0x01,0x90,0x02,0x79, + 0x22,0xB9,0x2F,0x79,0x09,0x09,0x92,0x00,0x9A,0x0B,0x8F, + 0x0B,0xA5,0x71,0xEB,0x0D,0x54,0x93,0xC3,0x42,0x7F,0x00, + 0x18,0xB1,0xC3,0x43,0x7F,0x00,0x1C,0xB1,0x6E,0x0B,0x0F, + 0x0A,0xC4,0xC6,0xF1,0xC0,0x14,0x59,0x14,0x70,0x0C,0x71, + 0x04,0xF4,0x25,0xD8,0x18,0x59,0x0C,0x70,0xD1,0xC0,0xE0, + 0x7E,0xF0,0xC2,0x50,0x40,0x10,0xDA,0xAB,0x22,0xA0,0x0D, + 0x55,0x88,0x97,0x88,0xCC,0x88,0x70,0x44,0x76,0x88,0x14, + 0x88,0x08,0xBA,0x08,0xBC,0x45,0x78,0x05,0x24,0xC2,0x10, + 0x10,0xBA,0x30,0x41,0x0A,0x23,0x00,0x21,0xC3,0x41,0x00, + 0x00,0xAA,0x0A,0xAD,0x70,0x6D,0x72,0x4A,0x24,0x00,0x72, + 0xC3,0xBE,0x05,0x7A,0xA8,0x20,0xC0,0x05,0x53,0x22,0x40, + 0x00,0x4F,0x20,0x43,0x00,0x15,0x0B,0xB1,0x00,0x00,0x2B, + 0x43,0x13,0x66,0x79,0x14,0x72,0xCF,0x21,0x41,0x03,0x07, + 0xF2,0x0B,0x08,0x71,0x00,0x00,0x2B,0x40,0x13,0x05,0x79, + 0x22,0xBA,0xA5,0x72,0x52,0x6E,0x0C,0x71,0xDB,0x7C,0x6C, + 0x73,0x00,0x28,0x82,0x00,0x00,0x2B,0x00,0x03,0x06,0x79, + 0xC1,0x40,0xAB,0x22,0xA1,0x0D,0xAB,0x21,0xE2,0x03,0x15, + 0x59,0xD5,0x08,0x30,0x00,0x1C,0xD8,0x4C,0x72,0xAB,0x20, + 0xD0,0x02,0x42,0x20,0xC1,0x03,0x04,0x71,0xF9,0x09,0x74, + 0x84,0xAB,0x22,0x88,0x01,0x4A,0x24,0x40,0x71,0x11,0xD8, + 0xA8,0x20,0xC0,0x02,0x40,0x20,0x02,0x04,0x42,0x20,0x81, + 0x03,0x04,0x71,0xAB,0x22,0xD0,0x02,0xAB,0x21,0x88,0x01, + 0x8D,0x70,0x4A,0x24,0x00,0x73,0x0C,0x70,0xED,0x71,0xA8, + 0x20,0x00,0x02,0xA8,0x48,0x04,0x71,0xAB,0x21,0xD0,0x02, + 0xAB,0x27,0x88,0x11,0x4A,0x23,0x80,0x16,0x8A,0x21,0x10, + 0x00,0x19,0xDE,0x8A,0x20,0x08,0x00,0x8A,0x22,0x04,0x00, + 0x11,0xDB,0xAD,0x70,0xD3,0x42,0x00,0x00,0xFF,0xFF,0xAB, + 0x23,0xD0,0x12,0xAB,0x24,0x88,0x11,0xAB,0x21,0xE1,0x0C, + 0xAB,0x21,0x62,0x07,0xAB,0x21,0xA2,0x06,0xAB,0x26,0xD0, + 0x12,0xAB,0x27,0x88,0x11,0xAB,0x20,0xE2,0x06,0xAB,0x20, + 0xE1,0x0C,0xAB,0x20,0x62,0x07,0xAB,0x20,0xA2,0x06,0xAB, + 0x22,0x62,0x07,0xAB,0x22,0xA2,0x06,0x3D,0x08,0x30,0x20, + 0xAB,0x23,0xA0,0x0D,0x22,0x42,0x0C,0x70,0x23,0x92,0x65, + 0x8A,0x55,0x22,0xC2,0x08,0xC9,0xB9,0x44,0x23,0x03,0x04, + 0x3C,0x21,0x8E,0x04,0x79,0x21,0x0F,0x00,0x24,0xBB,0xCB, + 0x7F,0x65,0x78,0x85,0x71,0xE5,0x0C,0x24,0x94,0xCA,0x22, + 0x42,0x20,0x07,0xF0,0xB0,0xD8,0x18,0x59,0xAD,0x70,0x13, + 0xF0,0x0C,0x70,0xFA,0x0E,0x8F,0x0B,0xBA,0x0E,0xAF,0x0B, + 0x42,0x40,0x22,0x40,0x02,0x41,0x82,0x42,0x7E,0x0E,0xEF, + 0xFF,0x62,0x43,0x05,0xE8,0x12,0xD8,0xAD,0x71,0xAB,0x20, + 0xA0,0x0D,0xA1,0x40,0xD0,0xC6,0xE0,0x78,0xE4,0xC3,0x82, + 0x24,0x0F,0x31,0x8A,0x21,0x0A,0x00,0x00,0x24,0x80,0x3F, + 0x00,0x00,0x44,0x01,0x80,0xC2,0x38,0x60,0x0D,0x0A,0x25, + 0x00,0x40,0xC2,0x00,0x42,0x40,0xC0,0x81,0xC0,0x56,0x20, + 0x00,0x0A,0x09,0x0A,0x05,0x00,0x40,0xC0,0xCB,0x45,0x80, + 0x00,0xAC,0x2F,0xCB,0x46,0x80,0x00,0xC0,0x3B,0xCB,0x44, + 0xA5,0x5A,0x6B,0xB6,0x00,0x24,0x80,0x3F,0x00,0x00,0x44, + 0x01,0x20,0xD9,0x81,0xC2,0x10,0xDB,0xA0,0xA6,0x1A,0x0D, + 0xEF,0xFF,0x80,0xA5,0x44,0x6D,0xC3,0x41,0x80,0x00,0x00, + 0x00,0xC3,0x43,0x7F,0x00,0x08,0xB3,0xC3,0x44,0x80,0x00, + 0x00,0x00,0xCA,0x08,0x2F,0x0C,0xA1,0x40,0x0C,0x70,0xC4, + 0xC7,0xE0,0x78,0xF0,0xC2,0x70,0x41,0x50,0x42,0x30,0x43, + 0x10,0x44,0xAB,0x0B,0x30,0x00,0xCD,0x70,0x8A,0x20,0x01, + 0x23,0x1A,0x26,0x0F,0x14,0x42,0x77,0xE1,0x40,0x0A,0x59, + 0x0D,0x08,0x95,0x00,0x22,0x1F,0x83,0x10,0x0A,0xF0,0x11, + 0x08,0x34,0x02,0xC1,0x40,0x9A,0x20,0x01,0x03,0x42,0x70, + 0x22,0x18,0xC3,0x0F,0x4C,0xD8,0xCC,0x78,0x42,0x70,0x35, + 0x88,0xC1,0xB9,0x23,0x09,0x71,0x00,0xA4,0x68,0x01,0x95, + 0x1B,0xE8,0x2F,0x38,0x03,0x00,0xC3,0x41,0x7F,0x00,0x10, + 0x85,0xE1,0x42,0x20,0x59,0x2B,0x08,0x33,0x00,0x01,0xAD, + 0x23,0xF0,0xA1,0x40,0x82,0x41,0x62,0x42,0x42,0x43,0xA6, + 0x08,0x20,0x00,0x0A,0x24,0x40,0x04,0x09,0xE8,0x00,0x41, + 0x00,0x80,0xFE,0xE8,0xE0,0xA1,0x03,0xF0,0x01,0x1D,0xC3, + 0x1F,0xC9,0x45,0x9A,0x25,0x01,0x13,0x42,0x75,0x06,0x85, + 0x0D,0xE8,0x39,0x8D,0xC1,0xB9,0x13,0x09,0xB1,0x00,0x0F, + 0x78,0x82,0x41,0x62,0x42,0x08,0x59,0x06,0xA5,0x03,0xF0, + 0x18,0x1D,0x01,0x10,0xC5,0x71,0xAD,0x70,0x6D,0x0E,0x64, + 0x94,0xED,0x70,0x05,0xF0,0xAD,0x70,0xED,0x70,0x03,0xF0, + 0xA5,0x71,0x49,0x0D,0x65,0x14,0x4C,0xDE,0xAC,0x7E,0x00, + 0x22,0x90,0xA3,0xFA,0xF3,0x02,0x40,0x0D,0x59,0x76,0xE8, + 0x42,0x76,0x15,0x8E,0xC1,0xB8,0xE5,0x08,0x70,0x80,0x02, + 0x40,0x0A,0x59,0x08,0x46,0x02,0x40,0x0D,0x59,0x0A,0x59, + 0xD5,0x0E,0x25,0x90,0xA1,0x41,0x9A,0x21,0x01,0x03,0x02, + 0x40,0x00,0x22,0x4E,0x20,0x0D,0x59,0x0A,0x59,0xED,0x71, + 0x22,0x1E,0x02,0x10,0xDE,0xF1,0xF5,0x70,0xAD,0x70,0xED, + 0x70,0xDB,0xF5,0x0C,0x71,0xD0,0xC6,0xE2,0xC2,0x08,0x45, + 0x01,0x88,0xC1,0xB8,0x17,0x08,0xB0,0x00,0x80,0x8D,0x14, + 0x71,0x0C,0x70,0x09,0xF7,0x81,0x40,0x60,0x41,0x80,0x42, + 0x0F,0x59,0x03,0xF0,0x81,0x40,0x08,0x59,0x00,0xA5,0xC2, + 0xC6,0x00,0x00,0x49,0x4E,0x49,0x02,0x08,0xB1,0x7F,0x00, + 0x04,0x00,0x00,0x00,0xD0,0x3B,0x80,0x00,0x0C,0xB1,0x7F, + 0x00,0x04,0x00,0x00,0x00,0xE0,0x3B,0x80,0x00,0x10,0xB1, + 0x7F,0x00,0x04,0x00,0x00,0x00,0xC8,0x3B,0x80,0x00,0x14, + 0xB1,0x7F,0x00,0x04,0x00,0x00,0x00,0xD8,0x3B,0x80,0x00, + 0x18,0xB1,0x7F,0x00,0x04,0x00,0x00,0x00,0xE8,0x3B,0x80, + 0x00,0xB0,0x3B,0x80,0x00,0x48,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x06,0x00,0x00,0x00,0x38,0xAB,0x7F,0x00,0x06,0x00,0x00, + 0x00,0xC8,0xAA,0x7F,0x00,0x06,0x00,0x00,0x00,0xA0,0xAA, + 0x7F,0x00,0x05,0x00,0x00,0x00,0x90,0xAA,0x7F,0x00,0x0A, + 0x00,0x00,0x00,0xF4,0xBA,0x7F,0x00,0x1C,0xB1,0x7F,0x00, + 0xA8,0xB1,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00, +}; diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di03_BMI160-7183_di03.2.1.11696_170103.h b/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di03_BMI160-7183_di03.2.1.11696_170103.h new file mode 100644 index 0000000000000000000000000000000000000000..72623c697eafb5b616793fc6e138801000660a1a --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di03_BMI160-7183_di03.2.1.11696_170103.h @@ -0,0 +1,788 @@ +const unsigned char bhy1_fw[] = { + 0x2a, 0x65, 0x00, 0x1a, 0x20, 0xb7, 0x7c, 0xc1, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x24, 0x00, 0x00, 0x5c, 0x96, 0x7f, 0x00, 0xb8, 0x15, 0x00, 0x00, + 0x50, 0x8d, 0x7f, 0x00, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0xe8, 0x47, 0x60, 0x00, + 0xe8, 0x47, 0x60, 0x00, 0xe8, 0x47, 0x60, 0x00, 0xe8, 0x47, 0x60, 0x00, + 0xe8, 0x47, 0x60, 0x00, 0xe8, 0x47, 0x60, 0x00, 0xe8, 0x47, 0x60, 0x00, + 0xe8, 0x47, 0x60, 0x00, 0x34, 0x50, 0x60, 0x00, 0xa4, 0x53, 0x60, 0x00, + 0x04, 0x52, 0x60, 0x00, 0xb4, 0x94, 0x60, 0x00, 0x50, 0x8d, 0x7f, 0x00, + 0x50, 0x8d, 0x7f, 0x00, 0x50, 0x8d, 0x7f, 0x00, 0x50, 0x8d, 0x7f, 0x00, + 0x4c, 0x8d, 0x60, 0x00, 0x4c, 0x8d, 0x60, 0x00, 0x4c, 0x8d, 0x60, 0x00, + 0x4c, 0x8d, 0x60, 0x00, 0x4c, 0x8d, 0x60, 0x00, 0x4c, 0x8d, 0x60, 0x00, + 0x59, 0x06, 0x4f, 0x06, 0x91, 0x07, 0x4f, 0x06, 0xb1, 0x02, 0x4f, 0x08, + 0xa1, 0x04, 0x4f, 0x08, 0xbd, 0x05, 0x4f, 0x08, 0x05, 0x01, 0x8f, 0x08, + 0x09, 0x01, 0x8f, 0x08, 0xb9, 0x03, 0x8f, 0x08, 0xc1, 0x03, 0x8f, 0x08, + 0xd1, 0x04, 0x8f, 0x08, 0x1d, 0x02, 0xcf, 0x08, 0x8d, 0x04, 0xcf, 0x08, + 0x8d, 0x07, 0xcf, 0x08, 0xc5, 0x07, 0xcf, 0x08, 0x69, 0x01, 0x0f, 0x09, + 0x99, 0x07, 0x4f, 0x09, 0xe9, 0x07, 0x4f, 0x09, 0x29, 0x00, 0x8f, 0x09, + 0x31, 0x00, 0x8f, 0x09, 0xd1, 0x00, 0x8f, 0x09, 0xa5, 0x01, 0x8f, 0x09, + 0xdd, 0x01, 0x8f, 0x09, 0x09, 0x03, 0x8f, 0x09, 0x85, 0x03, 0x8f, 0x09, + 0x49, 0x05, 0x8f, 0x09, 0x0d, 0x06, 0x8f, 0x09, 0xed, 0x07, 0x8f, 0x09, + 0xbd, 0x00, 0xcf, 0x09, 0x1d, 0x01, 0xcf, 0x09, 0x95, 0x01, 0xcf, 0x09, + 0x1d, 0x02, 0xcf, 0x09, 0x6d, 0x02, 0xcf, 0x09, 0xa5, 0x02, 0xcf, 0x09, + 0x41, 0x03, 0xcf, 0x09, 0x7d, 0x03, 0xcf, 0x09, 0xad, 0x05, 0xcf, 0x09, + 0x0d, 0x06, 0xcf, 0x09, 0x6d, 0x06, 0xcf, 0x09, 0xc1, 0x06, 0xcf, 0x09, + 0x85, 0x01, 0x0f, 0x0a, 0x11, 0x02, 0x0f, 0x0a, 0x31, 0x02, 0x0f, 0x0a, + 0xb5, 0x02, 0x0f, 0x0a, 0xb9, 0x03, 0x0f, 0x0a, 0x69, 0x07, 0x0f, 0x0a, + 0x05, 0x04, 0x4f, 0x0a, 0x2d, 0x07, 0x4f, 0x0a, 0x95, 0x00, 0x8f, 0x0a, + 0xad, 0x04, 0x8f, 0x0a, 0xd9, 0x05, 0x8f, 0x0a, 0x95, 0x06, 0x8f, 0x0a, + 0xed, 0x00, 0xcf, 0x0a, 0xf1, 0x00, 0xcf, 0x0a, 0xfd, 0x00, 0xcf, 0x0a, + 0x69, 0x01, 0xcf, 0x0a, 0x75, 0x01, 0xcf, 0x0a, 0x35, 0x02, 0xcf, 0x0a, + 0x05, 0x03, 0xcf, 0x0a, 0x09, 0x05, 0xcf, 0x0a, 0xfd, 0x05, 0xcf, 0x0a, + 0xb1, 0x06, 0xcf, 0x0a, 0x01, 0x02, 0x0f, 0x0b, 0xcd, 0x03, 0x40, 0x00, + 0xd1, 0x02, 0x8f, 0x0b, 0x29, 0x03, 0x8f, 0x0b, 0x91, 0x03, 0x8f, 0x0b, + 0xbd, 0x03, 0x8f, 0x0b, 0xe1, 0x04, 0x8f, 0x0b, 0x25, 0x05, 0x8f, 0x0b, + 0xd5, 0x05, 0x8f, 0x0b, 0x39, 0x06, 0x8f, 0x0b, 0x91, 0x07, 0x8f, 0x0b, + 0x2d, 0x00, 0xcf, 0x0b, 0x49, 0x00, 0xcf, 0x0b, 0x01, 0x01, 0xcf, 0x0b, + 0xcd, 0x01, 0xcf, 0x0b, 0x79, 0x05, 0xcf, 0x0b, 0xc9, 0x05, 0xcf, 0x0b, + 0xb5, 0x07, 0xcf, 0x0b, 0x69, 0x00, 0x0f, 0x0c, 0xb5, 0x03, 0x40, 0x00, + 0xcd, 0x00, 0x0f, 0x0c, 0xd5, 0x00, 0x0f, 0x0c, 0x45, 0x01, 0x0f, 0x0c, + 0x5d, 0x01, 0x0f, 0x0c, 0x75, 0x01, 0x0f, 0x0c, 0x0d, 0x02, 0x0f, 0x0c, + 0xbd, 0x04, 0x0f, 0x0c, 0xdd, 0x04, 0x0f, 0x0c, 0x01, 0x07, 0x0f, 0x0c, + 0x41, 0x07, 0x0f, 0x0c, 0x49, 0x07, 0x0f, 0x0c, 0xc9, 0x07, 0x0f, 0x0c, + 0x1d, 0x00, 0x4f, 0x0c, 0x65, 0x00, 0x4f, 0x0c, 0x49, 0x01, 0x4f, 0x0c, + 0x65, 0x01, 0x4f, 0x0c, 0x99, 0x01, 0x4f, 0x0c, 0x3d, 0x02, 0x4f, 0x0c, + 0x65, 0x02, 0x4f, 0x0c, 0xb1, 0x02, 0x4f, 0x0c, 0x61, 0x05, 0x4f, 0x0c, + 0xb1, 0x05, 0x4f, 0x0c, 0x45, 0x06, 0x4f, 0x0c, 0x79, 0x06, 0x4f, 0x0c, + 0x85, 0x06, 0x4f, 0x0c, 0x19, 0x07, 0x4f, 0x0c, 0x21, 0x00, 0x8f, 0x0c, + 0x6d, 0x00, 0x8f, 0x0c, 0x7d, 0x00, 0x8f, 0x0c, 0x7d, 0x04, 0x8f, 0x0c, + 0x85, 0x05, 0x8f, 0x0c, 0xc1, 0x03, 0xcf, 0x0c, 0xc9, 0x03, 0xcf, 0x0c, + 0x0d, 0x07, 0xcf, 0x0c, 0x51, 0x07, 0xcf, 0x0c, 0x61, 0x07, 0xcf, 0x0c, + 0x55, 0x03, 0x40, 0x00, 0x25, 0x00, 0x0f, 0x0d, 0x4d, 0x00, 0x0f, 0x0d, + 0x6d, 0x00, 0x0f, 0x0d, 0x71, 0x00, 0x0f, 0x0d, 0x71, 0x00, 0x0f, 0x0d, + 0x89, 0x00, 0x0f, 0x0d, 0x91, 0x00, 0x0f, 0x0d, 0x99, 0x00, 0x0f, 0x0d, + 0xa1, 0x00, 0x0f, 0x0d, 0xa5, 0x00, 0x0f, 0x0d, 0xad, 0x00, 0x0f, 0x0d, + 0xbd, 0x00, 0x0f, 0x0d, 0xc9, 0x00, 0x0f, 0x0d, 0xd5, 0x00, 0x0f, 0x0d, + 0x89, 0x01, 0x0f, 0x0d, 0xf9, 0x01, 0x0f, 0x0d, 0x21, 0x03, 0x0f, 0x0d, + 0x65, 0x03, 0x0f, 0x0d, 0x1d, 0x04, 0x0f, 0x0d, 0x39, 0x04, 0x0f, 0x0d, + 0x45, 0x04, 0x0f, 0x0d, 0x4d, 0x04, 0x0f, 0x0d, 0x6d, 0x04, 0x0f, 0x0d, + 0x71, 0x04, 0x0f, 0x0d, 0xf5, 0x05, 0x0f, 0x0d, 0x3d, 0x06, 0x0f, 0x0d, + 0x05, 0x00, 0x4f, 0x0d, 0x51, 0x00, 0x4f, 0x0d, 0x8d, 0x00, 0x4f, 0x0d, + 0xed, 0x00, 0x4f, 0x0d, 0x21, 0x02, 0x4f, 0x0d, 0xbd, 0x02, 0x4f, 0x0d, + 0xc1, 0x03, 0x4f, 0x0d, 0x25, 0x04, 0x4f, 0x0d, 0x31, 0x04, 0x4f, 0x0d, + 0x09, 0x03, 0x40, 0x00, 0x15, 0x03, 0x40, 0x00, 0x21, 0x03, 0x40, 0x00, + 0x2d, 0x03, 0x40, 0x00, 0x39, 0x03, 0x40, 0x00, 0x45, 0x03, 0x40, 0x00, + 0x51, 0x03, 0x40, 0x00, 0x71, 0x03, 0x40, 0x00, 0x7d, 0x03, 0x40, 0x00, + 0xa1, 0x03, 0x40, 0x00, 0xad, 0x03, 0x40, 0x00, 0xb9, 0x03, 0x40, 0x00, + 0xc9, 0x04, 0x4f, 0x0d, 0xf1, 0x05, 0x4f, 0x0d, 0x31, 0x07, 0x4f, 0x0d, + 0x59, 0x07, 0x4f, 0x0d, 0x65, 0x07, 0x4f, 0x0d, 0xa9, 0x01, 0x8f, 0x0d, + 0xd1, 0x01, 0x8f, 0x0d, 0xdd, 0x01, 0x8f, 0x0d, 0xe5, 0x01, 0x8f, 0x0d, + 0x09, 0x02, 0x8f, 0x0d, 0x2d, 0x02, 0x8f, 0x0d, 0x7d, 0x02, 0x8f, 0x0d, + 0x3d, 0x03, 0x8f, 0x0d, 0x6d, 0x04, 0x8f, 0x0d, 0x49, 0x05, 0x8f, 0x0d, + 0x59, 0x05, 0x8f, 0x0d, 0x91, 0x05, 0x8f, 0x0d, 0xd5, 0x05, 0x8f, 0x0d, + 0xf1, 0x00, 0xcf, 0x0d, 0x21, 0x02, 0xcf, 0x0d, 0xfd, 0x02, 0xcf, 0x0d, + 0xbd, 0x04, 0xcf, 0x0d, 0x89, 0x00, 0x0f, 0x0e, 0xc1, 0x04, 0x0f, 0x0e, + 0xf1, 0x05, 0x0f, 0x0e, 0x5d, 0x07, 0x0f, 0x0e, 0xc9, 0x07, 0x0f, 0x0e, + 0x89, 0x05, 0x8f, 0x0e, 0x79, 0x06, 0x8f, 0x0e, 0xa1, 0x06, 0x8f, 0x0e, + 0x1d, 0x07, 0x8f, 0x0e, 0x6d, 0x07, 0x8f, 0x0e, 0x11, 0x00, 0xcf, 0x0e, + 0x4d, 0x01, 0xcf, 0x0e, 0x71, 0x01, 0xcf, 0x0e, 0xbd, 0x01, 0xcf, 0x0e, + 0xcd, 0x01, 0xcf, 0x0e, 0x25, 0x02, 0xcf, 0x0e, 0x75, 0x02, 0xcf, 0x0e, + 0xbd, 0x02, 0xcf, 0x0e, 0xa1, 0x03, 0xcf, 0x0e, 0x2d, 0x04, 0xcf, 0x0e, + 0x75, 0x04, 0xcf, 0x0e, 0x81, 0x04, 0xcf, 0x0e, 0xa5, 0x04, 0xcf, 0x0e, + 0xe1, 0x04, 0xcf, 0x0e, 0x11, 0x05, 0xcf, 0x0e, 0x65, 0x05, 0xcf, 0x0e, + 0xd5, 0x05, 0xcf, 0x0e, 0x2d, 0x06, 0xcf, 0x0e, 0xbd, 0x07, 0xcf, 0x0e, + 0x01, 0x00, 0x0f, 0x0f, 0x25, 0x00, 0x0f, 0x0f, 0x5d, 0x04, 0x0f, 0x0f, + 0x19, 0x05, 0x0f, 0x0f, 0x1d, 0x03, 0x4f, 0x0f, 0x99, 0x04, 0x4f, 0x0f, + 0x21, 0x05, 0x4f, 0x0f, 0x8d, 0x05, 0x4f, 0x0f, 0xa9, 0x05, 0x4f, 0x0f, + 0xe1, 0x05, 0x4f, 0x0f, 0x81, 0x06, 0x4f, 0x0f, 0x95, 0x06, 0x4f, 0x0f, + 0xad, 0x06, 0x4f, 0x0f, 0x01, 0x07, 0x4f, 0x0f, 0x1d, 0x07, 0x4f, 0x0f, + 0x31, 0x07, 0x4f, 0x0f, 0xc5, 0x07, 0x4f, 0x0f, 0xe1, 0x07, 0x4f, 0x0f, + 0x21, 0x00, 0x8f, 0x0f, 0x85, 0x00, 0x8f, 0x0f, 0x9d, 0x00, 0x8f, 0x0f, + 0xdd, 0x00, 0x8f, 0x0f, 0xe5, 0x00, 0x8f, 0x0f, 0x7d, 0x01, 0x8f, 0x0f, + 0x9d, 0x01, 0x8f, 0x0f, 0xb1, 0x01, 0x8f, 0x0f, 0xd5, 0x01, 0x8f, 0x0f, + 0x2d, 0x02, 0x8f, 0x0f, 0x71, 0x02, 0x8f, 0x0f, 0x09, 0x03, 0x8f, 0x0f, + 0x35, 0x03, 0x8f, 0x0f, 0x71, 0x03, 0x8f, 0x0f, 0x69, 0x04, 0x8f, 0x0f, + 0xc9, 0x04, 0x8f, 0x0f, 0x7d, 0x00, 0xcf, 0x0f, 0x91, 0x02, 0xcf, 0x0f, + 0x15, 0x03, 0x4f, 0x09, 0xbd, 0x03, 0x8f, 0x0d, 0x41, 0x03, 0xcf, 0x0a, + 0x65, 0x04, 0xcf, 0x0a, 0x99, 0x04, 0xcf, 0x0a, 0x09, 0x05, 0xcf, 0x0a, + 0x49, 0x05, 0xcf, 0x0a, 0x61, 0x05, 0xcf, 0x0a, 0xb1, 0x06, 0xcf, 0x0a, + 0xb9, 0x06, 0xcf, 0x0a, 0xf1, 0x06, 0xcf, 0x0a, 0x31, 0x07, 0xcf, 0x0a, + 0x75, 0x07, 0xcf, 0x0a, 0xd9, 0x05, 0x8f, 0x0b, 0x71, 0x06, 0x8f, 0x0b, + 0x6d, 0x06, 0x8f, 0x0a, 0x8d, 0x06, 0x8f, 0x0a, 0x31, 0x07, 0x8f, 0x0a, + 0xe5, 0x07, 0x8f, 0x0a, 0x69, 0x00, 0xcf, 0x0a, 0xc1, 0x00, 0xcf, 0x0a, + 0x55, 0x01, 0xcf, 0x0a, 0x89, 0x02, 0xcf, 0x0a, 0xc1, 0x05, 0xcf, 0x0a, + 0xbd, 0x06, 0xcf, 0x0d, 0x11, 0x07, 0xcf, 0x0d, 0xd9, 0x01, 0x8f, 0x04, + 0x09, 0x02, 0x8f, 0x04, 0x15, 0x02, 0x8f, 0x04, 0x21, 0x02, 0x8f, 0x04, + 0x39, 0x02, 0x8f, 0x04, 0x5d, 0x02, 0x8f, 0x04, 0x69, 0x02, 0x8f, 0x04, + 0x75, 0x02, 0x8f, 0x04, 0x49, 0x03, 0x8f, 0x04, 0x89, 0x03, 0x8f, 0x04, + 0xf1, 0x04, 0x8f, 0x04, 0x51, 0x05, 0x8f, 0x04, 0x8d, 0x05, 0x8f, 0x04, + 0xa1, 0x05, 0x8f, 0x04, 0xf1, 0x05, 0x8f, 0x04, 0x21, 0x06, 0x8f, 0x04, + 0x59, 0x07, 0x8f, 0x04, 0x6d, 0x07, 0x8f, 0x04, 0xc5, 0x07, 0x8f, 0x04, + 0xf1, 0x00, 0xcf, 0x04, 0xfd, 0x00, 0xcf, 0x04, 0x05, 0x01, 0xcf, 0x04, + 0x95, 0x01, 0xcf, 0x04, 0xfd, 0x01, 0xcf, 0x04, 0x41, 0x02, 0xcf, 0x04, + 0x55, 0x02, 0xcf, 0x04, 0xb9, 0x02, 0xcf, 0x04, 0xbd, 0x02, 0xcf, 0x04, + 0xc1, 0x02, 0xcf, 0x04, 0x05, 0x03, 0xcf, 0x04, 0x0d, 0x03, 0xcf, 0x04, + 0x11, 0x03, 0xcf, 0x04, 0x15, 0x03, 0xcf, 0x04, 0x19, 0x03, 0xcf, 0x04, + 0x21, 0x03, 0xcf, 0x04, 0x45, 0x03, 0xcf, 0x04, 0x4d, 0x03, 0xcf, 0x04, + 0x61, 0x03, 0xcf, 0x04, 0x71, 0x03, 0xcf, 0x04, 0xc9, 0x03, 0xcf, 0x04, + 0xdd, 0x03, 0xcf, 0x04, 0x49, 0x05, 0xcf, 0x04, 0x55, 0x05, 0xcf, 0x04, + 0x61, 0x05, 0xcf, 0x04, 0x65, 0x05, 0xcf, 0x04, 0x69, 0x05, 0xcf, 0x04, + 0x6d, 0x05, 0xcf, 0x04, 0x99, 0x05, 0xcf, 0x04, 0x2d, 0x00, 0x0f, 0x05, + 0xad, 0x00, 0x0f, 0x05, 0xf9, 0x00, 0x0f, 0x05, 0x41, 0x01, 0x0f, 0x05, + 0xe1, 0x01, 0x0f, 0x05, 0x09, 0x02, 0x0f, 0x05, 0xf1, 0x02, 0x0f, 0x05, + 0xfd, 0x02, 0x0f, 0x05, 0x21, 0x03, 0x0f, 0x05, 0x3d, 0x03, 0x0f, 0x05, + 0x91, 0x03, 0x0f, 0x05, 0xad, 0x03, 0x0f, 0x05, 0xb9, 0x03, 0x0f, 0x05, + 0xdd, 0x03, 0x0f, 0x05, 0xed, 0x03, 0x0f, 0x05, 0xf5, 0x03, 0x0f, 0x05, + 0x65, 0x04, 0x0f, 0x05, 0x15, 0x06, 0x0f, 0x05, 0xa1, 0x06, 0x0f, 0x05, + 0xb1, 0x06, 0x0f, 0x05, 0xb9, 0x06, 0x0f, 0x05, 0xc1, 0x06, 0x0f, 0x05, + 0xd5, 0x06, 0x0f, 0x05, 0x25, 0x07, 0x0f, 0x05, 0x69, 0x07, 0x0f, 0x05, + 0x71, 0x07, 0x0f, 0x05, 0x0d, 0x00, 0x4f, 0x05, 0x29, 0x00, 0x4f, 0x05, + 0x39, 0x00, 0x4f, 0x05, 0x6d, 0x00, 0x4f, 0x05, 0x79, 0x00, 0x4f, 0x05, + 0x9d, 0x00, 0x4f, 0x05, 0xe5, 0x01, 0x4f, 0x05, 0x1d, 0x02, 0x4f, 0x05, + 0x2d, 0x02, 0x4f, 0x05, 0x31, 0x02, 0x4f, 0x05, 0x45, 0x02, 0x4f, 0x05, + 0x29, 0x03, 0x4f, 0x05, 0x65, 0x03, 0x4f, 0x05, 0x01, 0x04, 0x4f, 0x05, + 0x0d, 0x04, 0x4f, 0x05, 0x19, 0x04, 0x4f, 0x05, 0x4d, 0x04, 0x4f, 0x05, + 0x59, 0x04, 0x4f, 0x05, 0xd9, 0x04, 0x4f, 0x05, 0x81, 0x05, 0x4f, 0x05, + 0x85, 0x05, 0x4f, 0x05, 0xad, 0x05, 0x4f, 0x05, 0xfd, 0x05, 0x4f, 0x05, + 0x05, 0x06, 0x4f, 0x05, 0x0d, 0x06, 0x4f, 0x05, 0x39, 0x06, 0x4f, 0x05, + 0x71, 0x00, 0x8f, 0x05, 0xe9, 0x00, 0x8f, 0x05, 0xf9, 0x00, 0x8f, 0x05, + 0x09, 0x01, 0x8f, 0x05, 0xb5, 0x01, 0x8f, 0x05, 0xc1, 0x01, 0x8f, 0x05, + 0xe1, 0x01, 0x8f, 0x05, 0xed, 0x01, 0x8f, 0x05, 0x01, 0x02, 0x8f, 0x05, + 0x0d, 0x02, 0x8f, 0x05, 0x19, 0x02, 0x8f, 0x05, 0x49, 0x02, 0x8f, 0x05, + 0x55, 0x02, 0x8f, 0x05, 0x1d, 0x03, 0x8f, 0x05, 0x91, 0x03, 0x8f, 0x05, + 0xe5, 0x03, 0x8f, 0x05, 0x25, 0x04, 0x8f, 0x05, 0x95, 0x04, 0x8f, 0x05, + 0xb5, 0x04, 0x8f, 0x05, 0x29, 0x05, 0x8f, 0x05, 0xa5, 0x05, 0x8f, 0x05, + 0x31, 0x06, 0x8f, 0x05, 0x39, 0x06, 0x8f, 0x05, 0x41, 0x06, 0x8f, 0x05, + 0x49, 0x06, 0x8f, 0x05, 0x65, 0x07, 0x8f, 0x05, 0x89, 0x07, 0x8f, 0x05, + 0x95, 0x07, 0x8f, 0x05, 0xb1, 0x07, 0x8f, 0x05, 0xd9, 0x07, 0x8f, 0x05, + 0xe5, 0x07, 0x8f, 0x05, 0x15, 0x00, 0xcf, 0x05, 0xd1, 0x00, 0xcf, 0x05, + 0x2d, 0x01, 0xcf, 0x05, 0x45, 0x01, 0xcf, 0x05, 0x75, 0x01, 0xcf, 0x05, + 0xa5, 0x01, 0xcf, 0x05, 0xb5, 0x01, 0xcf, 0x05, 0xd1, 0x01, 0xcf, 0x05, + 0xf5, 0x01, 0xcf, 0x05, 0xb9, 0x02, 0xcf, 0x05, 0xc5, 0x02, 0xcf, 0x05, + 0xfd, 0x02, 0xcf, 0x05, 0x11, 0x03, 0xcf, 0x05, 0x25, 0x03, 0xcf, 0x05, + 0x41, 0x03, 0xcf, 0x05, 0x55, 0x03, 0xcf, 0x05, 0x69, 0x03, 0xcf, 0x05, + 0x8d, 0x04, 0xcf, 0x05, 0x9d, 0x04, 0xcf, 0x05, 0xad, 0x04, 0xcf, 0x05, + 0xd1, 0x04, 0xcf, 0x05, 0xe1, 0x04, 0xcf, 0x05, 0x39, 0x05, 0xcf, 0x05, + 0x75, 0x05, 0xcf, 0x05, 0xf9, 0x05, 0xcf, 0x05, 0x05, 0x06, 0xcf, 0x05, + 0x11, 0x06, 0xcf, 0x05, 0x25, 0x06, 0xcf, 0x05, 0x35, 0x06, 0xcf, 0x05, + 0x49, 0x06, 0xcf, 0x05, 0x5d, 0x06, 0xcf, 0x05, 0x7d, 0x06, 0xcf, 0x05, + 0x91, 0x06, 0xcf, 0x05, 0xb5, 0x06, 0xcf, 0x05, 0xd1, 0x06, 0xcf, 0x05, + 0xf9, 0x06, 0xcf, 0x05, 0x55, 0x07, 0xcf, 0x05, 0xf1, 0x07, 0xcf, 0x05, + 0x09, 0x00, 0x0f, 0x06, 0xdd, 0x00, 0x0f, 0x06, 0xa5, 0x01, 0x0f, 0x06, + 0x19, 0x02, 0x0f, 0x06, 0x25, 0x02, 0x0f, 0x06, 0x39, 0x02, 0x0f, 0x06, + 0x45, 0x02, 0x0f, 0x06, 0x55, 0x02, 0x0f, 0x06, 0x81, 0x02, 0x0f, 0x06, + 0xa1, 0x02, 0x0f, 0x06, 0xb5, 0x02, 0x0f, 0x06, 0xc1, 0x02, 0x0f, 0x06, + 0xc9, 0x02, 0x0f, 0x06, 0xd5, 0x02, 0x0f, 0x06, 0x31, 0x03, 0x0f, 0x06, + 0x41, 0x03, 0x0f, 0x06, 0x51, 0x03, 0x0f, 0x06, 0x5d, 0x03, 0x0f, 0x06, + 0x65, 0x03, 0x0f, 0x06, 0x75, 0x03, 0x0f, 0x06, 0xcd, 0x03, 0x0f, 0x06, + 0xf9, 0x03, 0x0f, 0x06, 0x05, 0x04, 0x0f, 0x06, 0x59, 0x06, 0x0f, 0x06, + 0x61, 0x06, 0x0f, 0x06, 0xc1, 0x06, 0x0f, 0x06, 0xd5, 0x06, 0x0f, 0x06, + 0xd9, 0x06, 0x0f, 0x06, 0xdd, 0x06, 0x0f, 0x06, 0x79, 0x04, 0x4f, 0x06, + 0x91, 0x04, 0x4f, 0x06, 0xa9, 0x04, 0x4f, 0x06, 0x01, 0x05, 0x4f, 0x06, + 0x35, 0x05, 0x4f, 0x06, 0x65, 0x05, 0x4f, 0x06, 0x2d, 0x06, 0x4f, 0x06, + 0x45, 0x06, 0x4f, 0x06, 0x69, 0x06, 0x4f, 0x06, 0x6d, 0x06, 0x4f, 0x06, + 0x71, 0x06, 0x4f, 0x06, 0x75, 0x06, 0x4f, 0x06, 0x79, 0x06, 0x4f, 0x06, + 0x7d, 0x06, 0x4f, 0x06, 0x81, 0x06, 0x4f, 0x06, 0x85, 0x06, 0x4f, 0x06, + 0x89, 0x06, 0x4f, 0x06, 0x8d, 0x06, 0x4f, 0x06, 0x91, 0x06, 0x4f, 0x06, + 0x95, 0x06, 0x4f, 0x06, 0xa1, 0x06, 0x4f, 0x06, 0xa9, 0x06, 0x4f, 0x06, + 0x69, 0x00, 0x8f, 0x06, 0x75, 0x00, 0x8f, 0x06, 0x8d, 0x00, 0x8f, 0x06, + 0x99, 0x00, 0x8f, 0x06, 0xa5, 0x00, 0x8f, 0x06, 0xf1, 0x00, 0x8f, 0x06, + 0xfd, 0x00, 0x8f, 0x06, 0x09, 0x01, 0x8f, 0x06, 0x15, 0x01, 0x8f, 0x06, + 0x25, 0x01, 0x8f, 0x06, 0xfd, 0x01, 0x8f, 0x06, 0x2d, 0x02, 0x8f, 0x06, + 0xf1, 0x02, 0x8f, 0x06, 0xb5, 0x03, 0x8f, 0x06, 0x4d, 0x04, 0x8f, 0x06, + 0x65, 0x04, 0x8f, 0x06, 0xa9, 0x04, 0x8f, 0x06, 0xbd, 0x05, 0x8f, 0x06, + 0x61, 0x06, 0x8f, 0x06, 0x69, 0x06, 0x8f, 0x06, 0x71, 0x06, 0x8f, 0x06, + 0x91, 0x07, 0x8f, 0x06, 0xc5, 0x02, 0xcf, 0x06, 0xe1, 0x02, 0xcf, 0x06, + 0xe9, 0x02, 0xcf, 0x06, 0xf9, 0x02, 0xcf, 0x06, 0x09, 0x03, 0xcf, 0x06, + 0xfd, 0x04, 0xcf, 0x06, 0x55, 0x05, 0xcf, 0x06, 0x71, 0x05, 0xcf, 0x06, + 0xd9, 0x05, 0xcf, 0x06, 0x9d, 0x07, 0xcf, 0x06, 0xb1, 0x07, 0xcf, 0x06, + 0xd5, 0x07, 0xcf, 0x06, 0xd9, 0x07, 0xcf, 0x06, 0xdd, 0x07, 0xcf, 0x06, + 0x19, 0x00, 0x0f, 0x07, 0x41, 0x01, 0x0f, 0x07, 0x89, 0x01, 0x0f, 0x07, + 0x05, 0x02, 0x0f, 0x07, 0x1d, 0x02, 0x0f, 0x07, 0x2d, 0x02, 0x0f, 0x07, + 0x31, 0x02, 0x0f, 0x07, 0x35, 0x02, 0x0f, 0x07, 0x3d, 0x02, 0x0f, 0x07, + 0x9d, 0x02, 0x0f, 0x07, 0xc5, 0x02, 0x0f, 0x07, 0xed, 0x02, 0x0f, 0x07, + 0x15, 0x03, 0x0f, 0x07, 0x51, 0x03, 0x0f, 0x07, 0xa9, 0x03, 0x0f, 0x07, + 0xcd, 0x03, 0x0f, 0x07, 0xe5, 0x03, 0x0f, 0x07, 0xf5, 0x03, 0x0f, 0x07, + 0x05, 0x04, 0x0f, 0x07, 0x2d, 0x04, 0x0f, 0x07, 0x55, 0x04, 0x0f, 0x07, + 0x99, 0x04, 0x0f, 0x07, 0xcd, 0x04, 0x0f, 0x07, 0xf1, 0x04, 0x0f, 0x07, + 0x09, 0x05, 0x0f, 0x07, 0x41, 0x05, 0x0f, 0x07, 0xc1, 0x05, 0x0f, 0x07, + 0xe9, 0x05, 0x0f, 0x07, 0x19, 0x07, 0x0f, 0x07, 0x59, 0x07, 0x0f, 0x07, + 0x71, 0x07, 0x0f, 0x07, 0x89, 0x07, 0x0f, 0x07, 0xa1, 0x07, 0x0f, 0x07, + 0xe5, 0x07, 0x0f, 0x07, 0x55, 0x00, 0x4f, 0x07, 0x79, 0x00, 0x4f, 0x07, + 0xb9, 0x00, 0x4f, 0x07, 0x6d, 0x01, 0x4f, 0x07, 0xb5, 0x01, 0x4f, 0x07, + 0x4d, 0x03, 0x4f, 0x07, 0x21, 0x04, 0x4f, 0x07, 0x5d, 0x04, 0x4f, 0x07, + 0x85, 0x04, 0x4f, 0x07, 0xf9, 0x04, 0x4f, 0x07, 0x65, 0x05, 0x4f, 0x07, + 0x81, 0x05, 0x4f, 0x07, 0xd9, 0x00, 0x8f, 0x07, 0x35, 0x01, 0x8f, 0x07, + 0x69, 0x01, 0x8f, 0x07, 0x75, 0x01, 0x8f, 0x07, 0xad, 0x01, 0x8f, 0x07, + 0xed, 0x01, 0x8f, 0x07, 0x19, 0x02, 0x8f, 0x07, 0x41, 0x02, 0x8f, 0x07, + 0x4d, 0x02, 0x8f, 0x07, 0x59, 0x02, 0x8f, 0x07, 0xa5, 0x03, 0x8f, 0x07, + 0xb9, 0x03, 0x8f, 0x07, 0xc9, 0x03, 0x8f, 0x07, 0xd5, 0x03, 0x8f, 0x07, + 0xed, 0x03, 0x8f, 0x07, 0x01, 0x04, 0x8f, 0x07, 0x11, 0x04, 0x8f, 0x07, + 0x21, 0x04, 0x8f, 0x07, 0x31, 0x04, 0x8f, 0x07, 0x41, 0x04, 0x8f, 0x07, + 0x51, 0x04, 0x8f, 0x07, 0x79, 0x04, 0x8f, 0x07, 0x95, 0x04, 0x8f, 0x07, + 0x9d, 0x04, 0x8f, 0x07, 0xa5, 0x04, 0x8f, 0x07, 0xb5, 0x04, 0x8f, 0x07, + 0xc5, 0x04, 0x8f, 0x07, 0xd5, 0x04, 0x8f, 0x07, 0xe5, 0x04, 0x8f, 0x07, + 0xf5, 0x04, 0x8f, 0x07, 0x05, 0x05, 0x8f, 0x07, 0x1d, 0x05, 0x8f, 0x07, + 0x2d, 0x05, 0x8f, 0x07, 0x3d, 0x05, 0x8f, 0x07, 0x51, 0x05, 0x8f, 0x07, + 0xc5, 0x07, 0x8f, 0x07, 0xed, 0x07, 0x8f, 0x07, 0xf5, 0x07, 0x8f, 0x07, + 0xfd, 0x07, 0x8f, 0x07, 0x0d, 0x00, 0xcf, 0x07, 0x15, 0x00, 0xcf, 0x07, + 0x1d, 0x00, 0xcf, 0x07, 0x29, 0x00, 0xcf, 0x07, 0x31, 0x00, 0xcf, 0x07, + 0x39, 0x00, 0xcf, 0x07, 0x51, 0x00, 0xcf, 0x07, 0xd1, 0x00, 0xcf, 0x07, + 0xd9, 0x00, 0xcf, 0x07, 0xe1, 0x00, 0xcf, 0x07, 0x41, 0x03, 0xcf, 0x07, + 0xad, 0x03, 0xcf, 0x07, 0xe9, 0x03, 0xcf, 0x07, 0x6d, 0x04, 0xcf, 0x07, + 0xed, 0x04, 0xcf, 0x07, 0x1d, 0x05, 0xcf, 0x07, 0x31, 0x05, 0xcf, 0x07, + 0xc1, 0x05, 0xcf, 0x07, 0xb1, 0x06, 0xcf, 0x07, 0xfd, 0x06, 0xcf, 0x07, + 0xc1, 0x07, 0xcf, 0x07, 0xf9, 0x07, 0xcf, 0x07, 0x21, 0x00, 0x0f, 0x08, + 0x4d, 0x03, 0x0f, 0x08, 0x5d, 0x03, 0x0f, 0x08, 0x65, 0x03, 0x0f, 0x08, + 0xb1, 0x03, 0x0f, 0x08, 0x6d, 0x00, 0x8f, 0x08, 0x21, 0x02, 0x8f, 0x08, + 0x89, 0x02, 0x4f, 0x0a, 0xd1, 0x02, 0x4f, 0x0a, 0xe5, 0x02, 0x4f, 0x0a, + 0xcd, 0x07, 0x4f, 0x0a, 0xd9, 0x07, 0x4f, 0x0a, 0x15, 0x02, 0x8f, 0x0a, + 0x5d, 0x02, 0x8f, 0x0a, 0x95, 0x02, 0x8f, 0x0a, 0xed, 0x02, 0x8f, 0x0a, + 0x85, 0x03, 0x8f, 0x0a, 0x45, 0x05, 0x8f, 0x0a, 0x4d, 0x05, 0x8f, 0x0a, + 0x39, 0x06, 0x8f, 0x0a, 0x4d, 0x00, 0xcf, 0x0a, 0x41, 0x04, 0xcf, 0x0a, + 0x91, 0x04, 0xcf, 0x0a, 0xa9, 0x04, 0xcf, 0x0a, 0x31, 0x05, 0xcf, 0x0a, + 0xa5, 0x05, 0xcf, 0x0a, 0x0d, 0x06, 0xcf, 0x0a, 0x4d, 0x06, 0xcf, 0x0a, + 0x61, 0x06, 0xcf, 0x0a, 0x79, 0x06, 0xcf, 0x0a, 0x81, 0x06, 0xcf, 0x0a, + 0xb5, 0x06, 0xcf, 0x0a, 0x59, 0x07, 0xcf, 0x0a, 0x8d, 0x07, 0xcf, 0x0a, + 0xc1, 0x07, 0xcf, 0x0a, 0xd5, 0x07, 0xcf, 0x0a, 0xfd, 0x07, 0xcf, 0x0a, + 0x49, 0x00, 0x0f, 0x0b, 0x71, 0x00, 0x0f, 0x0b, 0xf9, 0x00, 0x0f, 0x0b, + 0x11, 0x01, 0x0f, 0x0b, 0x5d, 0x01, 0x0f, 0x0b, 0x65, 0x01, 0x0f, 0x0b, + 0x99, 0x01, 0x0f, 0x0b, 0x21, 0x02, 0x00, 0x00, 0xe5, 0x01, 0x0f, 0x0b, + 0x55, 0x02, 0x0f, 0x0b, 0x6d, 0x02, 0x0f, 0x0b, 0x7d, 0x02, 0x0f, 0x0b, + 0x9d, 0x03, 0x0f, 0x0b, 0xa9, 0x03, 0x0f, 0x0b, 0xcd, 0x04, 0x0f, 0x0b, + 0x45, 0x06, 0x0f, 0x0b, 0x51, 0x06, 0x0f, 0x0b, 0xf5, 0x07, 0x0f, 0x0b, + 0x0d, 0x00, 0x4f, 0x0b, 0xa1, 0x00, 0x4f, 0x0b, 0x81, 0x01, 0x4f, 0x0b, + 0x15, 0x02, 0x4f, 0x0b, 0x4d, 0x02, 0x4f, 0x0b, 0x5d, 0x02, 0x4f, 0x0b, + 0xbd, 0x02, 0x4f, 0x0b, 0xe5, 0x02, 0x4f, 0x0b, 0xc1, 0x03, 0x4f, 0x0b, + 0x39, 0x04, 0x4f, 0x0b, 0x41, 0x04, 0x4f, 0x0b, 0x95, 0x05, 0x4f, 0x0b, + 0xf9, 0x05, 0x4f, 0x0b, 0x49, 0x06, 0x4f, 0x0b, 0x6d, 0x06, 0x4f, 0x0b, + 0x41, 0x03, 0x8f, 0x0b, 0x59, 0x03, 0x8f, 0x0b, 0x21, 0x07, 0x8f, 0x0b, + 0x89, 0x03, 0x0f, 0x0c, 0x5d, 0x05, 0x4f, 0x0c, 0xd9, 0x05, 0x4f, 0x0c, + 0x05, 0x06, 0x4f, 0x0c, 0x75, 0x06, 0x4f, 0x0c, 0x45, 0x07, 0x4f, 0x0c, + 0x89, 0x07, 0x4f, 0x0c, 0xb5, 0x07, 0x4f, 0x0c, 0x21, 0x00, 0x8f, 0x0c, + 0xc5, 0x00, 0x8f, 0x0c, 0x75, 0x02, 0x8f, 0x0c, 0x95, 0x02, 0x8f, 0x0c, + 0x99, 0x02, 0x8f, 0x0c, 0x9d, 0x02, 0x8f, 0x0c, 0xa1, 0x02, 0x8f, 0x0c, + 0xad, 0x02, 0x8f, 0x0c, 0xb5, 0x02, 0x8f, 0x0c, 0xb9, 0x02, 0x8f, 0x0c, + 0xc1, 0x02, 0x8f, 0x0c, 0x5d, 0x03, 0x8f, 0x0c, 0xbd, 0x03, 0x8f, 0x0c, + 0xc9, 0x03, 0x8f, 0x0c, 0xcd, 0x03, 0x8f, 0x0c, 0xd9, 0x03, 0x8f, 0x0c, + 0xe1, 0x03, 0x8f, 0x0c, 0xe5, 0x03, 0x8f, 0x0c, 0xed, 0x03, 0x8f, 0x0c, + 0x3d, 0x04, 0x8f, 0x0c, 0x6d, 0x04, 0x8f, 0x0c, 0x71, 0x04, 0x8f, 0x0c, + 0x7d, 0x04, 0x8f, 0x0c, 0x81, 0x04, 0x8f, 0x0c, 0x85, 0x04, 0x8f, 0x0c, + 0x99, 0x04, 0x8f, 0x0c, 0x31, 0x05, 0x4f, 0x0d, 0x85, 0x05, 0x4f, 0x0d, + 0x61, 0x04, 0x8f, 0x0d, 0xc9, 0x04, 0x8f, 0x0d, 0x69, 0x05, 0x8f, 0x0d, + 0xe9, 0x05, 0x8f, 0x0d, 0x19, 0x06, 0x8f, 0x0d, 0xd1, 0x06, 0x8f, 0x0d, + 0xe9, 0x07, 0x8f, 0x0d, 0xf1, 0x07, 0x8f, 0x0d, 0x21, 0x00, 0xcf, 0x0d, + 0x2d, 0x00, 0xcf, 0x0d, 0x39, 0x00, 0xcf, 0x0d, 0x45, 0x00, 0xcf, 0x0d, + 0x51, 0x00, 0xcf, 0x0d, 0x5d, 0x00, 0xcf, 0x0d, 0x65, 0x00, 0xcf, 0x0d, + 0x6d, 0x00, 0xcf, 0x0d, 0xf1, 0x00, 0xcf, 0x0d, 0xfd, 0x00, 0xcf, 0x0d, + 0x05, 0x01, 0xcf, 0x0d, 0x0d, 0x01, 0xcf, 0x0d, 0x15, 0x01, 0xcf, 0x0d, + 0x1d, 0x01, 0xcf, 0x0d, 0x25, 0x01, 0xcf, 0x0d, 0xd5, 0x02, 0xcf, 0x0d, + 0x81, 0x07, 0xcf, 0x0d, 0xfd, 0x07, 0xcf, 0x0d, 0xd5, 0x00, 0x0f, 0x0e, + 0x3d, 0x01, 0x0f, 0x0e, 0x85, 0x01, 0x0f, 0x0e, 0xa1, 0x01, 0x0f, 0x0e, + 0xa5, 0x02, 0x0f, 0x0e, 0x51, 0x03, 0x0f, 0x0e, 0xfd, 0x03, 0x0f, 0x0e, + 0x35, 0x07, 0x0f, 0x0e, 0x85, 0x07, 0x0f, 0x0e, 0x0d, 0x00, 0x4f, 0x0e, + 0x9d, 0x00, 0x4f, 0x0e, 0x21, 0x01, 0x4f, 0x0e, 0x2d, 0x02, 0x4f, 0x0e, + 0x3d, 0x02, 0x4f, 0x0e, 0x91, 0x07, 0x8f, 0x0e, 0x9d, 0x07, 0x8f, 0x0e, + 0xa9, 0x07, 0x8f, 0x0e, 0xb5, 0x07, 0x8f, 0x0e, 0xd9, 0x07, 0x8f, 0x0e, + 0xed, 0x07, 0x8f, 0x0e, 0xd1, 0x00, 0xcf, 0x0e, 0xd9, 0x00, 0xcf, 0x0e, + 0xe1, 0x00, 0xcf, 0x0e, 0xf5, 0x00, 0xcf, 0x0e, 0x75, 0x00, 0x00, 0x00, + 0xf1, 0x05, 0x8f, 0x0c, 0x11, 0x06, 0x8f, 0x0c, 0x15, 0x06, 0x8f, 0x0c, + 0x1d, 0x06, 0x8f, 0x0c, 0xa5, 0x00, 0xcf, 0x0c, 0x05, 0x02, 0xcf, 0x0c, + 0xd5, 0x04, 0x80, 0x00, 0x55, 0x04, 0x4f, 0x0e, 0x69, 0x04, 0x4f, 0x0e, + 0xa1, 0x04, 0x4f, 0x0e, 0xd1, 0x04, 0x4f, 0x0e, 0x69, 0x03, 0x8f, 0x0e, + 0x01, 0x06, 0x0f, 0x0f, 0xab, 0x26, 0xe0, 0x7c, 0x00, 0x00, 0x4f, 0x00, + 0x6f, 0x24, 0x3f, 0x00, 0xe2, 0xc2, 0x1a, 0x0f, 0xaf, 0x0a, 0x08, 0x45, + 0x06, 0x1d, 0xc5, 0x11, 0xc2, 0xc6, 0xe0, 0x78, 0xf1, 0xc0, 0x00, 0x16, + 0x83, 0x70, 0x80, 0x00, 0xc4, 0x23, 0x05, 0xeb, 0x8e, 0x0f, 0xcf, 0x0a, + 0x04, 0xf0, 0xc3, 0x40, 0x00, 0x00, 0xfd, 0xff, 0xd1, 0xc0, 0xe0, 0x7f, + 0x0e, 0x78, 0xe0, 0x78, 0xf1, 0xc0, 0xc3, 0x42, 0x80, 0x00, 0xc8, 0x22, + 0x20, 0x82, 0x20, 0x81, 0x1b, 0x09, 0x80, 0x0f, 0xa5, 0x5a, 0x6b, 0xb6, + 0x24, 0x8a, 0x89, 0xe9, 0x2c, 0x71, 0x14, 0x70, 0x27, 0xd8, 0x24, 0xaa, + 0x05, 0xf2, 0x27, 0xd8, 0x2b, 0x5b, 0xd1, 0xc0, 0xe0, 0x7e, 0xab, 0x20, + 0xe0, 0x0c, 0xab, 0x21, 0x61, 0x0a, 0xff, 0xf1, 0x05, 0xe8, 0x00, 0x18, + 0x84, 0x0f, 0x00, 0x00, 0xe0, 0x07, 0x06, 0xe9, 0x00, 0x19, 0x82, 0x0f, + 0x00, 0x00, 0x09, 0x00, 0x05, 0xea, 0x00, 0x1a, 0x82, 0x0f, 0x00, 0x00, + 0x07, 0x00, 0x06, 0xeb, 0x00, 0x1b, 0x82, 0x0f, 0x00, 0x00, 0x03, 0x00, + 0x0d, 0x0c, 0x10, 0x00, 0x00, 0x1c, 0x82, 0x0f, 0x00, 0x00, 0x0b, 0x00, + 0xb4, 0x70, 0xe0, 0x7c, 0x00, 0x1d, 0x82, 0x0f, 0x00, 0x00, 0x35, 0x00, + 0xe0, 0x7e, 0xe0, 0x78, 0xc3, 0x42, 0x7f, 0x00, 0x3c, 0x8f, 0xc3, 0x43, + 0x7f, 0x00, 0x40, 0x8f, 0x75, 0x01, 0x8f, 0x0b, 0xc3, 0x42, 0x7f, 0x00, + 0x20, 0x8f, 0xc3, 0x43, 0x7f, 0x00, 0x24, 0x8f, 0x65, 0x01, 0x8f, 0x0b, + 0xc3, 0x42, 0x7f, 0x00, 0x10, 0x8f, 0xc3, 0x43, 0x7f, 0x00, 0x14, 0x8f, + 0x55, 0x01, 0x8f, 0x0b, 0xc3, 0x42, 0x7f, 0x00, 0x1c, 0x8f, 0xc3, 0x43, + 0x7f, 0x00, 0x20, 0x8f, 0x45, 0x01, 0x8f, 0x0b, 0xc3, 0x42, 0x7f, 0x00, + 0x14, 0x8f, 0xc3, 0x43, 0x7f, 0x00, 0x1c, 0x8f, 0x35, 0x01, 0x8f, 0x0b, + 0xc3, 0x42, 0x7f, 0x00, 0x24, 0x8f, 0xc3, 0x43, 0x7f, 0x00, 0x3c, 0x8f, + 0x15, 0x01, 0x8f, 0x0b, 0xf1, 0xc0, 0xa1, 0xc1, 0x2c, 0x70, 0xc3, 0x42, + 0x7f, 0x00, 0x40, 0x8f, 0xc3, 0x43, 0x7f, 0x00, 0x44, 0x8f, 0x8c, 0x76, + 0xc2, 0x08, 0x2f, 0x0d, 0x40, 0x24, 0x05, 0x30, 0x00, 0xc0, 0x87, 0x74, + 0xd1, 0xc0, 0xe0, 0x7e, 0xc3, 0x42, 0x7f, 0x00, 0x48, 0x8f, 0xc3, 0x43, + 0x7f, 0x00, 0x48, 0x8f, 0xe1, 0x00, 0x8f, 0x0b, 0xf1, 0xc0, 0xa1, 0xc1, + 0x0c, 0x70, 0x2c, 0x70, 0xc3, 0x42, 0x7f, 0x00, 0x44, 0x8f, 0xc3, 0x43, + 0x7f, 0x00, 0x44, 0x8f, 0x8c, 0x74, 0x8e, 0x08, 0x2f, 0x0d, 0x40, 0x24, + 0xc5, 0x30, 0x03, 0x14, 0x80, 0x30, 0x87, 0x74, 0xd1, 0xc0, 0xe0, 0x7e, + 0xc3, 0x42, 0x7f, 0x00, 0x48, 0x8f, 0xc3, 0x43, 0x7f, 0x00, 0x48, 0x8f, + 0xa9, 0x00, 0x8f, 0x0b, 0xc3, 0x42, 0x7f, 0x00, 0x48, 0x8f, 0xc3, 0x43, + 0x7f, 0x00, 0x48, 0x8f, 0x99, 0x00, 0x8f, 0x0b, 0xc3, 0x42, 0x7f, 0x00, + 0x40, 0x8f, 0x99, 0x00, 0xaf, 0x0b, 0x40, 0x43, 0x00, 0x16, 0x80, 0x70, + 0x7f, 0x00, 0xfd, 0x93, 0x61, 0x04, 0xaf, 0x0e, 0x79, 0x20, 0x00, 0x00, + 0x00, 0x16, 0x80, 0x70, 0x7f, 0x00, 0xfd, 0x93, 0x14, 0x70, 0xe0, 0x7d, + 0x4d, 0x04, 0xaf, 0x0e, 0x0c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x08, 0xe8, 0x03, + 0x30, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x02, 0x00, 0x00, 0xd8, 0xbc, 0x60, 0x00, 0x64, 0xbd, 0x60, 0x00, + 0x50, 0xbc, 0x60, 0x00, 0x40, 0xbe, 0x60, 0x00, 0x84, 0xbc, 0x60, 0x00, + 0x08, 0xbc, 0x60, 0x00, 0xd4, 0xbb, 0x60, 0x00, 0x90, 0xbc, 0x60, 0x00, + 0x40, 0xb3, 0x60, 0x00, 0x20, 0xbd, 0x60, 0x00, 0x44, 0xbc, 0x60, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x3a, 0x80, 0x00, 0x90, 0x96, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x1e, 0x05, 0x3e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x69, 0x2f, 0xe8, 0x03, 0x31, 0x01, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0xb4, 0xb4, 0x60, 0x00, 0x40, 0xb5, 0x60, 0x00, 0x2c, 0xb4, 0x60, 0x00, + 0xa8, 0xb5, 0x60, 0x00, 0x60, 0xb4, 0x60, 0x00, 0xbc, 0xb3, 0x60, 0x00, + 0x88, 0xb3, 0x60, 0x00, 0x6c, 0xb4, 0x60, 0x00, 0x38, 0xb4, 0x60, 0x00, + 0xfc, 0xb4, 0x60, 0x00, 0x20, 0xb4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7c, 0x3a, 0x80, 0x00, 0x3c, 0x9d, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0xe8, 0x03, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x7d, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, 0xe9, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x34, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x49, 0x61, 0x00, + 0xe8, 0x48, 0x61, 0x00, 0xd8, 0x48, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd8, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, + 0xea, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xec, 0x27, 0x61, 0x00, 0x7c, 0x27, 0x61, 0x00, 0x6c, 0x27, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x22, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x01, 0x00, 0x00, 0xeb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x9c, 0x60, 0x00, 0xec, 0x9b, 0x60, 0x00, + 0xd0, 0x9b, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x21, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8c, 0xe4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0xf1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x94, 0x7a, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x7b, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcc, 0x7b, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0xf6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe8, 0x7b, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x7b, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0x68, 0x61, 0x00, 0x1c, 0x68, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb0, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0xf9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x68, 0x61, 0x00, 0xd0, 0x67, 0x61, 0x00, 0xb8, 0x67, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x23, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0xfa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x64, 0x61, 0x00, + 0x34, 0x64, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb0, 0x7a, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf4, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc8, 0x00, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x7e, 0x61, 0x00, 0x1c, 0x7d, 0x61, 0x00, + 0x98, 0x7d, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0xec, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x35, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x70, 0x61, 0x00, + 0xf4, 0x6f, 0x61, 0x00, 0xe4, 0x6f, 0x61, 0x00, 0x7c, 0x70, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0xc8, 0x00, + 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x68, 0xe9, 0x60, 0x00, 0x98, 0xe4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xc8, 0x00, 0x00, + 0x02, 0x12, 0x00, 0x00, 0xb0, 0x2d, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x8f, 0x7f, 0x00, + 0x14, 0x8f, 0x7f, 0x00, 0x14, 0x8f, 0x7f, 0x00, 0x1c, 0x8f, 0x7f, 0x00, + 0x1c, 0x8f, 0x7f, 0x00, 0x20, 0x8f, 0x7f, 0x00, 0x20, 0x8f, 0x7f, 0x00, + 0x24, 0x8f, 0x7f, 0x00, 0x24, 0x8f, 0x7f, 0x00, 0x3c, 0x8f, 0x7f, 0x00, + 0x3c, 0x8f, 0x7f, 0x00, 0x40, 0x8f, 0x7f, 0x00, 0x40, 0x8f, 0x7f, 0x00, + 0x40, 0x8f, 0x7f, 0x00, 0x40, 0x8f, 0x7f, 0x00, 0x44, 0x8f, 0x7f, 0x00, + 0x44, 0x8f, 0x7f, 0x00, 0x44, 0x8f, 0x7f, 0x00, 0x44, 0x8f, 0x7f, 0x00, + 0x48, 0x8f, 0x7f, 0x00, 0x48, 0x8f, 0x7f, 0x00, 0x48, 0x8f, 0x7f, 0x00, + 0x48, 0x8f, 0x7f, 0x00, 0x48, 0x8f, 0x7f, 0x00, 0x48, 0x8f, 0x7f, 0x00, + 0x48, 0x8f, 0x7f, 0x00, 0xab, 0x26, 0x0a, 0x74, 0x7f, 0x00, 0x98, 0x80, + 0xe0, 0x7e, 0xe0, 0x78, 0xc3, 0x40, 0x7f, 0x00, 0x00, 0x80, 0x6b, 0x20, + 0x40, 0x09, 0xdb, 0x44, 0x80, 0x00, 0x50, 0x20, 0xdb, 0x42, 0x80, 0x00, + 0x50, 0x21, 0x0a, 0x22, 0x80, 0x8f, 0x7f, 0x00, 0x50, 0x96, 0xe2, 0x20, + 0x82, 0x00, 0x6f, 0x70, 0x22, 0x20, 0x80, 0x0f, 0x7f, 0x00, 0x4c, 0x9d, + 0x29, 0x07, 0x8f, 0x03, 0x94, 0xa1, 0x7f, 0x00, 0x25, 0x00, 0x03, 0x01, + 0x00, 0x09, 0x0c, 0x96, 0x00, 0x10, 0x3c, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xb0, 0x04, 0x52, 0x03, 0x00, 0x00, 0x40, 0x41, 0x01, 0x01, 0x01, 0x01, + 0x02, 0x02, 0x02, 0x03, 0x03, 0x01, 0x01, 0xb4, 0x73, 0x00, 0x00, 0x00, + 0x82, 0x06, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, + 0xb3, 0x3e, 0xcd, 0xcc, 0x0c, 0x3f, 0xcd, 0xcc, 0x0c, 0x3f, 0x33, 0x33, + 0x33, 0x3f, 0x33, 0x33, 0x33, 0x3f, 0xcd, 0xcc, 0x4c, 0x3f, 0x01, 0x00, + 0x09, 0x04, 0x02, 0x17, 0xb7, 0xd1, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, + 0xb7, 0xd1, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xb7, 0xd1, 0x38, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x37, 0x86, 0x35, 0xbd, + 0x37, 0x86, 0x35, 0xbd, 0x37, 0x86, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x42, 0xe8, 0x03, 0x05, 0x00, 0x2d, 0x00, 0x84, 0x03, 0xb0, + 0x04, 0x96, 0x00, 0x08, 0x96, 0x00, 0x0e, 0x01, 0x03, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x33, 0x33, 0xb3, 0x3e, 0xcd, 0xcc, 0x0c, 0x3f, 0xcd, + 0xcc, 0x0c, 0x3f, 0x33, 0x33, 0x33, 0x3f, 0x33, 0x33, 0x33, 0x3f, 0xcd, + 0xcc, 0x4c, 0x3e, 0x01, 0x06, 0x04, 0x02, 0x00, 0x05, 0x00, 0x41, 0x01, + 0x40, 0x01, 0x24, 0x00, 0x78, 0x00, 0x04, 0x01, 0x14, 0x14, 0x02, 0x02, + 0x00, 0x04, 0x00, 0x00, 0x80, 0x3f, 0xcd, 0xcc, 0xcc, 0x3d, 0x9a, 0x99, + 0x99, 0x3f, 0xcd, 0xcc, 0xcc, 0x3e, 0xcd, 0xcc, 0xcc, 0x3d, 0x01, 0x00, + 0x14, 0x00, 0x10, 0x04, 0x78, 0x00, 0x08, 0x00, 0x00, 0x05, 0x9a, 0x99, + 0x19, 0x3f, 0x9a, 0x99, 0x19, 0x3f, 0x50, 0x00, 0x09, 0x00, 0x1e, 0x00, + 0xe8, 0x03, 0x50, 0x00, 0x41, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x80, + 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x40, 0xb5, 0xfe, 0x16, 0x37, 0xb5, 0xfe, 0x16, 0x37, 0xb5, 0xfe, 0x16, + 0x37, 0x8b, 0xde, 0xa9, 0x38, 0x00, 0x00, 0xe0, 0x40, 0x0e, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xcd, 0xcc, 0xcc, 0x3d, 0x01, 0x09, 0x09, 0x03, 0x13, 0x32, + 0xa3, 0x04, 0xcd, 0x0c, 0x19, 0x28, 0x04, 0x0e, 0x00, 0x03, 0x9a, 0x99, + 0x99, 0x3e, 0x9a, 0x99, 0x99, 0x3e, 0xcd, 0xcc, 0xcc, 0x3e, 0x9a, 0x99, + 0x19, 0x3f, 0x9a, 0x99, 0x99, 0x3e, 0x00, 0x00, 0x80, 0x3e, 0x9a, 0x99, + 0x99, 0x3e, 0xec, 0x51, 0xb8, 0x3e, 0xcd, 0xcc, 0x4c, 0x3f, 0xcd, 0xcc, + 0x4c, 0x3f, 0xcd, 0xcc, 0x4c, 0x3f, 0xcd, 0xcc, 0x4c, 0x3f, 0xcd, 0xcc, + 0x4c, 0x3e, 0xcd, 0xcc, 0x4c, 0x3e, 0xcd, 0xcc, 0x4c, 0x3e, 0xcd, 0xcc, + 0x4c, 0x3e, 0x01, 0xc2, 0xb8, 0xb2, 0x3e, 0x35, 0xfa, 0x8e, 0x3c, 0x0a, + 0x00, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x50, 0x77, 0x56, 0x3d, + 0x0e, 0x00, 0x00, 0x80, 0x3e, 0x8f, 0xc2, 0xf5, 0x3c, 0x0a, 0xd7, 0xa3, + 0x3c, 0x64, 0x80, 0x34, 0x2d, 0x46, 0x01, 0x0a, 0x00, 0x50, 0x00, 0x00, + 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x09, 0x02, 0x00, 0x00, 0xc8, + 0x41, 0x00, 0x00, 0x80, 0x42, 0x00, 0x00, 0x80, 0x41, 0x00, 0x00, 0xc0, + 0x3f, 0xcd, 0xcc, 0x4c, 0x3d, 0xc2, 0xb8, 0xb2, 0x3d, 0x32, 0x25, 0x3b, + 0x18, 0x47, 0x00, 0x00, 0xa0, 0x40, 0x9a, 0x99, 0x19, 0x3f, 0x0a, 0xd7, + 0x23, 0x3c, 0x0a, 0xd7, 0x23, 0x3c, 0x02, 0x50, 0x77, 0x56, 0x3d, 0x00, + 0x01, 0xcd, 0xcc, 0x4c, 0x3f, 0x00, 0x00, 0x60, 0x40, 0x00, 0x00, 0x20, + 0x40, 0xcd, 0xcc, 0xcc, 0x3d, 0x04, 0x8f, 0xc2, 0xf5, 0x3c, 0x02, 0x01, + 0x02, 0x03, 0x04, 0x01, 0x0a, 0xb0, 0x04, 0x64, 0x00, 0x0a, 0xd7, 0x23, + 0x3c, 0x0a, 0xd7, 0x23, 0x3c, 0x01, 0x0a, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0xfa, 0x43, 0x00, 0x00, 0x7a, 0x44, 0x00, 0x00, 0xa0, 0x3f, 0x00, 0x00, + 0x48, 0x42, 0x00, 0x00, 0x80, 0x3f, 0x9a, 0x99, 0x19, 0x3e, 0x9a, 0x99, + 0x99, 0x3d, 0x00, 0x00, 0x20, 0x42, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x96, 0x18, 0x4b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, + 0x18, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x96, 0x18, 0x4b, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x0a, 0xd7, 0x23, 0x3c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xd7, + 0x23, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xd7, 0x23, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xb7, 0xd1, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xb7, + 0xd1, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x17, 0xb7, 0xd1, 0x38, 0x0a, 0xd7, 0x23, 0x3c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xd7, + 0x23, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xd7, 0x23, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xc5, 0x27, 0x37, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xc5, + 0x27, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xac, 0xc5, 0x27, 0x37, 0x00, 0x24, 0x74, 0x49, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, + 0x74, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x24, 0x74, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x03, 0x04, 0x19, 0x40, + 0x12, 0x18, 0x00, 0x40, 0x72, 0x08, 0x00, 0x0e, 0xb3, 0x80, 0x00, 0x00, + 0x0e, 0x00, 0x01, 0x01, 0x01, 0x09, 0x0c, 0x88, 0x13, 0x10, 0x01, 0x01, + 0x71, 0x2a, 0x00, 0x00, 0xf1, 0xc0, 0xc3, 0x40, 0x80, 0x00, 0xd8, 0x22, + 0xc3, 0x42, 0x80, 0x00, 0x84, 0x23, 0x2c, 0x70, 0xd6, 0x08, 0x2f, 0x0d, + 0x02, 0x7a, 0x12, 0x08, 0x00, 0x00, 0x32, 0x0c, 0x00, 0x00, 0xd1, 0xc0, + 0xe0, 0x7e, 0xe0, 0x78, 0xe8, 0xc3, 0xa1, 0xc1, 0xc3, 0x40, 0x7f, 0x00, + 0xc0, 0xa4, 0x32, 0xe8, 0xcb, 0x46, 0x7f, 0x00, 0x3c, 0xa3, 0xea, 0x0b, + 0xef, 0x0e, 0xc1, 0x40, 0xab, 0xe8, 0x03, 0x8e, 0x0f, 0x08, 0xf4, 0x00, + 0xe4, 0x6e, 0xa0, 0x87, 0x40, 0x26, 0x0f, 0x12, 0x10, 0xf0, 0xcb, 0x45, + 0x60, 0x00, 0xe8, 0x99, 0x19, 0x00, 0x00, 0x00, 0x80, 0xc3, 0x02, 0x40, + 0xc1, 0x41, 0x60, 0x7d, 0x81, 0x42, 0x03, 0x6e, 0x6c, 0x20, 0x40, 0x00, + 0x1f, 0x67, 0x08, 0xe7, 0xc1, 0x87, 0x80, 0x87, 0xd5, 0x70, 0x0c, 0xf2, + 0x40, 0x27, 0x10, 0x12, 0x30, 0xf6, 0xd3, 0x7a, 0x2c, 0x70, 0x6a, 0x08, + 0x2f, 0x0d, 0x81, 0x40, 0x0a, 0x47, 0xf4, 0xf1, 0x04, 0xec, 0x04, 0x6f, + 0xe4, 0x68, 0xf0, 0xf1, 0x0c, 0x70, 0xc8, 0xc7, 0xe8, 0xc3, 0xa5, 0xc1, + 0x23, 0x5b, 0x08, 0x47, 0x21, 0x5b, 0x08, 0x46, 0x0c, 0x71, 0xe1, 0x41, + 0xc1, 0x42, 0x22, 0x5b, 0x10, 0x40, 0x0e, 0xd8, 0xe1, 0x41, 0xc1, 0x42, + 0x22, 0x5b, 0x08, 0x45, 0x10, 0xd8, 0xe1, 0x41, 0xc1, 0x42, 0x22, 0x5b, + 0x08, 0x44, 0xae, 0x09, 0x20, 0x00, 0x02, 0x40, 0x00, 0x42, 0xa6, 0x09, + 0x20, 0x00, 0xa1, 0x40, 0x00, 0x43, 0x9e, 0x09, 0x20, 0x00, 0x81, 0x40, + 0x08, 0x44, 0xcb, 0x46, 0x80, 0x00, 0xa0, 0x3b, 0x07, 0xed, 0x08, 0x8d, + 0x0b, 0x08, 0x11, 0x02, 0x00, 0x1e, 0x03, 0x10, 0x0d, 0xf0, 0xc3, 0x41, + 0x80, 0x00, 0xe8, 0x3a, 0x00, 0x16, 0x0d, 0x71, 0x80, 0x00, 0xea, 0x3a, + 0x00, 0x91, 0x00, 0x1e, 0x43, 0x10, 0xa6, 0x78, 0x00, 0xb1, 0x30, 0xd9, + 0x80, 0xc0, 0xab, 0x21, 0xa0, 0x0d, 0x0c, 0x1c, 0x80, 0x3f, 0x7f, 0x00, + 0xb8, 0x96, 0x40, 0xc2, 0x42, 0xc4, 0xda, 0x0f, 0x2f, 0x0a, 0x41, 0xc3, + 0x2f, 0x21, 0x07, 0x80, 0xad, 0x71, 0x0f, 0xf2, 0x40, 0x29, 0x02, 0x06, + 0x5a, 0xd8, 0xad, 0x70, 0xab, 0x22, 0x60, 0x0d, 0xab, 0x25, 0x60, 0x1d, + 0xab, 0x25, 0x60, 0x1d, 0xab, 0x21, 0x60, 0x0d, 0x2b, 0x5b, 0x15, 0xed, + 0x11, 0x14, 0x80, 0x30, 0x24, 0xc1, 0x12, 0x14, 0x82, 0x30, 0x13, 0x14, + 0x83, 0x30, 0x79, 0x20, 0x0c, 0x00, 0x79, 0x21, 0x00, 0x00, 0x79, 0x22, + 0x02, 0x00, 0x84, 0x78, 0x79, 0x23, 0x01, 0x00, 0x44, 0x78, 0x0b, 0x79, + 0x03, 0xf4, 0x5b, 0xd8, 0x2b, 0x5b, 0x32, 0x0b, 0xef, 0x0a, 0x0c, 0x70, + 0x0c, 0x72, 0xc3, 0x41, 0x60, 0x00, 0x08, 0x9f, 0x2a, 0x5b, 0x0c, 0x72, + 0xc3, 0x41, 0x60, 0x00, 0x64, 0x9d, 0x29, 0x5b, 0x0f, 0xd8, 0xc3, 0x41, + 0x61, 0x00, 0x18, 0x0f, 0x2a, 0x5b, 0x0f, 0xd8, 0xc3, 0x41, 0x61, 0x00, + 0x48, 0x0e, 0x29, 0x5b, 0x3f, 0xd8, 0xab, 0x20, 0xa0, 0x0d, 0xc8, 0xc7, + 0xf2, 0xc2, 0x30, 0x44, 0x10, 0x43, 0x1b, 0xd9, 0x0c, 0x70, 0x70, 0x42, + 0x50, 0x45, 0xab, 0x21, 0xa0, 0x0d, 0x20, 0x5b, 0xc3, 0x40, 0x7f, 0x00, + 0x48, 0x8f, 0xc3, 0x41, 0x7f, 0x00, 0x60, 0x90, 0x02, 0x79, 0xd3, 0x41, + 0x7f, 0x00, 0x60, 0x90, 0xc3, 0x43, 0x7f, 0x00, 0x88, 0x94, 0xd3, 0x40, + 0x7f, 0x00, 0x88, 0x94, 0xc3, 0x42, 0x7f, 0x00, 0xb8, 0x95, 0x02, 0x23, + 0x4e, 0x04, 0x02, 0x22, 0x0d, 0x04, 0x84, 0x29, 0x02, 0x03, 0xcb, 0x47, + 0x80, 0x00, 0xc8, 0x22, 0x84, 0x2e, 0x01, 0x13, 0x25, 0xaf, 0x2f, 0x79, + 0x84, 0x2d, 0x01, 0x13, 0xc6, 0xaf, 0x7a, 0x0a, 0xef, 0x0d, 0xa7, 0xaf, + 0xcf, 0x79, 0xba, 0x0a, 0xef, 0x0d, 0x22, 0x40, 0xaf, 0x79, 0xa6, 0x0a, + 0xef, 0x0d, 0x02, 0x40, 0xcb, 0x45, 0x7f, 0x00, 0xb8, 0x95, 0xb6, 0x09, + 0xef, 0x0d, 0xa1, 0x40, 0xaa, 0x20, 0xe1, 0x04, 0x82, 0x41, 0x05, 0x20, + 0x82, 0x0f, 0xb0, 0x2d, 0x00, 0x00, 0x62, 0x40, 0xaa, 0x0a, 0xaf, 0x0c, + 0xab, 0x22, 0xe1, 0x04, 0x2f, 0x21, 0x85, 0x04, 0x62, 0x0b, 0xaf, 0x0e, + 0xa2, 0x40, 0x66, 0x8f, 0x27, 0x8f, 0xc3, 0x40, 0x80, 0x00, 0xd0, 0x22, + 0x45, 0x8f, 0x00, 0x21, 0xc4, 0x00, 0x61, 0x80, 0x20, 0x80, 0x72, 0x08, + 0x20, 0x00, 0xa1, 0x40, 0x1d, 0xd9, 0x0c, 0x70, 0xab, 0x21, 0xa0, 0x0d, + 0x20, 0x5b, 0x16, 0x08, 0x00, 0x00, 0xd2, 0xc6, 0x00, 0x41, 0x14, 0x70, + 0x0c, 0x70, 0xe0, 0x7c, 0xe0, 0x7f, 0x16, 0x81, 0xe4, 0xc2, 0xad, 0x70, + 0xcb, 0x46, 0x7f, 0x00, 0xe8, 0x95, 0x08, 0x16, 0x00, 0x14, 0xfc, 0x16, + 0x01, 0x90, 0x02, 0x79, 0x22, 0xb9, 0x2f, 0x79, 0x09, 0x09, 0x92, 0x00, + 0xb2, 0x0f, 0x4f, 0x0c, 0xa5, 0x71, 0xeb, 0x0d, 0x54, 0x93, 0xc3, 0x42, + 0x7f, 0x00, 0x44, 0x8f, 0xc3, 0x43, 0x7f, 0x00, 0x48, 0x8f, 0x86, 0x0f, + 0xcf, 0x0a, 0xc4, 0xc6, 0xf1, 0xc0, 0x27, 0x5b, 0x14, 0x70, 0x0c, 0x71, + 0x04, 0xf4, 0x25, 0xd8, 0x2b, 0x5b, 0x0c, 0x70, 0xd1, 0xc0, 0xe0, 0x7e, + 0xf0, 0xc2, 0x50, 0x40, 0x10, 0xda, 0xab, 0x22, 0xa0, 0x0d, 0x55, 0x88, + 0x97, 0x88, 0xcc, 0x88, 0x70, 0x44, 0x76, 0x88, 0x14, 0x88, 0x08, 0xba, + 0x08, 0xbc, 0x45, 0x78, 0x05, 0x24, 0xc2, 0x10, 0x10, 0xba, 0x30, 0x41, + 0x0a, 0x23, 0x00, 0x21, 0xc3, 0x41, 0x00, 0x00, 0xaa, 0x0a, 0xad, 0x70, + 0x6d, 0x72, 0x4a, 0x24, 0x00, 0x72, 0xc3, 0xbe, 0x05, 0x7a, 0xa8, 0x20, + 0xc0, 0x05, 0x53, 0x22, 0x40, 0x00, 0x4f, 0x20, 0x43, 0x00, 0x15, 0x0b, + 0xb1, 0x00, 0x00, 0x2b, 0x43, 0x13, 0x66, 0x79, 0x14, 0x72, 0xcf, 0x21, + 0x41, 0x03, 0x07, 0xf2, 0x0b, 0x08, 0x71, 0x00, 0x00, 0x2b, 0x40, 0x13, + 0x05, 0x79, 0x22, 0xba, 0xa5, 0x72, 0x52, 0x6e, 0x0c, 0x71, 0xdb, 0x7c, + 0x6c, 0x73, 0x00, 0x28, 0x82, 0x00, 0x00, 0x2b, 0x00, 0x03, 0x06, 0x79, + 0xc1, 0x40, 0xab, 0x22, 0xa1, 0x0d, 0xab, 0x21, 0xe2, 0x03, 0x28, 0x5b, + 0xd5, 0x08, 0x30, 0x00, 0x1c, 0xd8, 0x4c, 0x72, 0xab, 0x20, 0xd0, 0x02, + 0x42, 0x20, 0xc1, 0x03, 0x04, 0x71, 0xf9, 0x09, 0x74, 0x84, 0xab, 0x22, + 0x88, 0x01, 0x4a, 0x24, 0x40, 0x71, 0x11, 0xd8, 0xa8, 0x20, 0xc0, 0x02, + 0x40, 0x20, 0x02, 0x04, 0x42, 0x20, 0x81, 0x03, 0x04, 0x71, 0xab, 0x22, + 0xd0, 0x02, 0xab, 0x21, 0x88, 0x01, 0x8d, 0x70, 0x4a, 0x24, 0x00, 0x73, + 0x0c, 0x70, 0xed, 0x71, 0xa8, 0x20, 0x00, 0x02, 0xa8, 0x48, 0x04, 0x71, + 0xab, 0x21, 0xd0, 0x02, 0xab, 0x27, 0x88, 0x11, 0x4a, 0x23, 0x80, 0x16, + 0x8a, 0x21, 0x10, 0x00, 0x19, 0xde, 0x8a, 0x20, 0x08, 0x00, 0x8a, 0x22, + 0x04, 0x00, 0x11, 0xdb, 0xad, 0x70, 0xd3, 0x42, 0x00, 0x00, 0xff, 0xff, + 0xab, 0x23, 0xd0, 0x12, 0xab, 0x24, 0x88, 0x11, 0xab, 0x21, 0xe1, 0x0c, + 0xab, 0x21, 0x62, 0x07, 0xab, 0x21, 0xa2, 0x06, 0xab, 0x26, 0xd0, 0x12, + 0xab, 0x27, 0x88, 0x11, 0xab, 0x20, 0xe2, 0x06, 0xab, 0x20, 0xe1, 0x0c, + 0xab, 0x20, 0x62, 0x07, 0xab, 0x20, 0xa2, 0x06, 0xab, 0x22, 0x62, 0x07, + 0xab, 0x22, 0xa2, 0x06, 0x3d, 0x08, 0x30, 0x20, 0xab, 0x23, 0xa0, 0x0d, + 0x22, 0x42, 0x0c, 0x70, 0x23, 0x92, 0x65, 0x8a, 0x55, 0x22, 0xc2, 0x08, + 0xc9, 0xb9, 0x44, 0x23, 0x03, 0x04, 0x3c, 0x21, 0x8e, 0x04, 0x79, 0x21, + 0x0f, 0x00, 0x24, 0xbb, 0xcb, 0x7f, 0x65, 0x78, 0x85, 0x71, 0xe5, 0x0c, + 0x24, 0x94, 0xca, 0x22, 0x42, 0x20, 0x07, 0xf0, 0xb0, 0xd8, 0x2b, 0x5b, + 0xad, 0x70, 0x13, 0xf0, 0x0c, 0x70, 0x12, 0x0b, 0x8f, 0x0c, 0xd2, 0x0a, + 0xaf, 0x0c, 0x42, 0x40, 0x22, 0x40, 0x02, 0x41, 0x82, 0x42, 0x7e, 0x0e, + 0xef, 0xff, 0x62, 0x43, 0x05, 0xe8, 0x12, 0xd8, 0xad, 0x71, 0xab, 0x20, + 0xa0, 0x0d, 0xa1, 0x40, 0xd0, 0xc6, 0xe0, 0x78, 0xe4, 0xc3, 0x82, 0x24, + 0x11, 0x39, 0x8a, 0x21, 0x0c, 0x08, 0x00, 0x24, 0x80, 0x3f, 0x00, 0x00, + 0x44, 0x01, 0x80, 0xc2, 0x38, 0x60, 0x0d, 0x0a, 0x25, 0x00, 0x40, 0xc2, + 0x00, 0x42, 0x40, 0xc0, 0x81, 0xc0, 0x56, 0x20, 0x00, 0x0a, 0x09, 0x0a, + 0x05, 0x00, 0x40, 0xc0, 0xcb, 0x45, 0x80, 0x00, 0xcc, 0x12, 0xcb, 0x46, + 0x80, 0x00, 0xc8, 0x22, 0xcb, 0x44, 0xa5, 0x5a, 0x6b, 0xb6, 0x00, 0x24, + 0x80, 0x3f, 0x00, 0x00, 0x44, 0x01, 0x28, 0xd9, 0x81, 0xc2, 0x10, 0xdb, + 0xa0, 0xa6, 0x0e, 0x0d, 0xef, 0xff, 0x80, 0xa5, 0x44, 0x6d, 0xc3, 0x41, + 0x80, 0x00, 0x00, 0x00, 0xc3, 0x43, 0x7f, 0x00, 0xe8, 0x95, 0xc3, 0x44, + 0x80, 0x00, 0x00, 0x00, 0xe2, 0x0c, 0xef, 0x0c, 0xa1, 0x40, 0x0c, 0x70, + 0xc4, 0xc7, 0xe0, 0x78, 0xf0, 0xc2, 0x70, 0x41, 0x50, 0x42, 0x30, 0x43, + 0x10, 0x44, 0xab, 0x0b, 0x30, 0x00, 0xcd, 0x70, 0x8a, 0x20, 0x01, 0x23, + 0x1a, 0x26, 0x0f, 0x14, 0x42, 0x77, 0xe1, 0x40, 0x24, 0x5b, 0x0d, 0x08, + 0x95, 0x00, 0x22, 0x1f, 0x83, 0x10, 0x0a, 0xf0, 0x11, 0x08, 0x34, 0x02, + 0xc1, 0x40, 0x9a, 0x20, 0x01, 0x03, 0x42, 0x70, 0x22, 0x18, 0xc3, 0x0f, + 0x4c, 0xd8, 0xcc, 0x78, 0x42, 0x70, 0x35, 0x88, 0xc1, 0xb9, 0x23, 0x09, + 0x71, 0x00, 0xa4, 0x68, 0x01, 0x95, 0x1b, 0xe8, 0x2f, 0x38, 0x03, 0x00, + 0xc3, 0x41, 0x7f, 0x00, 0x48, 0x8d, 0xe1, 0x42, 0x2d, 0x5b, 0x2b, 0x08, + 0x33, 0x00, 0x01, 0xad, 0x23, 0xf0, 0xa1, 0x40, 0x82, 0x41, 0x62, 0x42, + 0x42, 0x43, 0xa6, 0x08, 0x20, 0x00, 0x0a, 0x24, 0x40, 0x04, 0x09, 0xe8, + 0x00, 0x41, 0x00, 0x80, 0xfe, 0xe8, 0xe0, 0xa1, 0x03, 0xf0, 0x01, 0x1d, + 0xc3, 0x1f, 0xc9, 0x45, 0x9a, 0x25, 0x01, 0x13, 0x42, 0x75, 0x06, 0x85, + 0x0d, 0xe8, 0x39, 0x8d, 0xc1, 0xb9, 0x13, 0x09, 0xb1, 0x00, 0x0f, 0x78, + 0x82, 0x41, 0x62, 0x42, 0x22, 0x5b, 0x06, 0xa5, 0x03, 0xf0, 0x18, 0x1d, + 0x01, 0x10, 0xc5, 0x71, 0xad, 0x70, 0x6d, 0x0e, 0x64, 0x94, 0xed, 0x70, + 0x05, 0xf0, 0xad, 0x70, 0xed, 0x70, 0x03, 0xf0, 0xa5, 0x71, 0x49, 0x0d, + 0x65, 0x14, 0x4c, 0xde, 0xac, 0x7e, 0x00, 0x22, 0x90, 0xa3, 0xfa, 0xf3, + 0x02, 0x40, 0x25, 0x5b, 0x76, 0xe8, 0x42, 0x76, 0x15, 0x8e, 0xc1, 0xb8, + 0xe5, 0x08, 0x70, 0x80, 0x02, 0x40, 0x24, 0x5b, 0x08, 0x46, 0x02, 0x40, + 0x25, 0x5b, 0x24, 0x5b, 0xd5, 0x0e, 0x25, 0x90, 0xa1, 0x41, 0x9a, 0x21, + 0x01, 0x03, 0x02, 0x40, 0x00, 0x22, 0x4e, 0x20, 0x25, 0x5b, 0x24, 0x5b, + 0xed, 0x71, 0x22, 0x1e, 0x02, 0x10, 0xde, 0xf1, 0xf5, 0x70, 0xad, 0x70, + 0xed, 0x70, 0xdb, 0xf5, 0x0c, 0x71, 0xd0, 0xc6, 0xe2, 0xc2, 0x08, 0x45, + 0x01, 0x88, 0xc1, 0xb8, 0x17, 0x08, 0xb0, 0x00, 0x80, 0x8d, 0x14, 0x71, + 0x0c, 0x70, 0x09, 0xf7, 0x81, 0x40, 0x60, 0x41, 0x80, 0x42, 0x26, 0x5b, + 0x03, 0xf0, 0x81, 0x40, 0x22, 0x5b, 0x00, 0xa5, 0xc2, 0xc6, 0x00, 0x00, + 0x49, 0x4e, 0x49, 0x03, 0xfc, 0x99, 0x60, 0x00, 0x10, 0x8f, 0x7f, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x01, 0x78, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x8f, 0x7f, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x40, 0x21, 0x80, + 0x00, 0x80, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x8f, 0x7f, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x01, 0x88, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x8f, 0x7f, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x90, 0x22, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x8f, 0x7f, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x01, 0x38, 0x21, 0x80, 0x00, 0x70, 0x22, 0x80, 0x00, 0xa8, 0x22, 0x80, + 0x00, 0xa8, 0x22, 0x80, 0x00, 0xb8, 0x22, 0x80, 0x00, 0xc0, 0x22, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x8f, 0x7f, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x01, 0x68, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8f, 0x7f, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x01, 0x98, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x8f, 0x7f, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0xa0, 0x22, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x20, 0x80, 0x00, 0xd4, 0x00, 0x00, 0x00, + 0x00, 0xfe, 0xff, 0x00, 0x0f, 0x01, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, + 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, + 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x03, 0x10, 0x10, 0xc4, + 0x04, 0x00, 0x00, 0x01, 0x02, 0x08, 0x0c, 0xd5, 0x60, 0x00, 0x06, 0x02, + 0x08, 0xd0, 0xd4, 0x60, 0x02, 0x06, 0x0f, 0x03, 0xff, 0x3f, 0x0f, 0x10, + 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, + 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, + 0x05, 0x10, 0x80, 0xa5, 0x08, 0x00, 0x60, 0x00, 0x68, 0x02, 0x04, 0x58, + 0x5e, 0x61, 0x00, 0xa4, 0x37, 0x61, 0x00, 0xdc, 0xa2, 0x60, 0x00, 0x20, + 0x80, 0xc4, 0xa3, 0x60, 0x00, 0x40, 0x02, 0x04, 0xec, 0xaa, 0x60, 0x00, + 0x90, 0xa0, 0x60, 0x00, 0xa0, 0x02, 0x20, 0x82, 0x85, 0xf4, 0x02, 0x0c, + 0x30, 0x1c, 0x61, 0x00, 0x3c, 0x02, 0x0c, 0x03, 0x3a, 0x05, 0x02, 0x05, + 0x34, 0xd1, 0x60, 0x00, 0x03, 0x08, 0x94, 0x4a, 0x08, 0xd3, 0x05, 0x08, + 0x80, 0x06, 0x10, 0x9c, 0xd2, 0x05, 0x10, 0xac, 0x06, 0x10, 0x5c, 0x06, + 0x08, 0xc4, 0xd0, 0x05, 0x18, 0xe0, 0x10, 0xa7, 0x9d, 0x7f, 0x00, 0x0a, + 0x02, 0x40, 0x2c, 0x67, 0x61, 0x02, 0x06, 0x05, 0x03, 0x13, 0x80, 0xfc, + 0x8e, 0x05, 0x18, 0xec, 0x02, 0x08, 0x01, 0x00, 0x05, 0x16, 0x00, 0x00, + 0x48, 0x8f, 0x7f, 0x00, 0x60, 0x90, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 +}; diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di03_BMI160_BMM150-7183_di03.2.1.11696_170103.h b/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di03_BMI160_BMM150-7183_di03.2.1.11696_170103.h new file mode 100644 index 0000000000000000000000000000000000000000..b1880e506c96efac6140a23c05ac097f2b9ccee0 --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/examples/firmware/Bosch_PCB_7183_di03_BMI160_BMM150-7183_di03.2.1.11696_170103.h @@ -0,0 +1,867 @@ +const unsigned char bhy1_fw[] = { + 0x2a, 0x65, 0x00, 0x1a, 0x9a, 0x31, 0x1b, 0xe7, 0x00, 0x00, 0x00, 0x00, + 0x74, 0x28, 0x00, 0x00, 0xe8, 0x99, 0x7f, 0x00, 0x44, 0x19, 0x00, 0x00, + 0x68, 0x8d, 0x7f, 0x00, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, + 0x4a, 0x26, 0x00, 0x70, 0x4a, 0x26, 0x00, 0x70, 0xe8, 0x47, 0x60, 0x00, + 0xe8, 0x47, 0x60, 0x00, 0xe8, 0x47, 0x60, 0x00, 0xe8, 0x47, 0x60, 0x00, + 0xe8, 0x47, 0x60, 0x00, 0xe8, 0x47, 0x60, 0x00, 0xe8, 0x47, 0x60, 0x00, + 0xe8, 0x47, 0x60, 0x00, 0x34, 0x50, 0x60, 0x00, 0xa4, 0x53, 0x60, 0x00, + 0x04, 0x52, 0x60, 0x00, 0xb4, 0x94, 0x60, 0x00, 0x68, 0x8d, 0x7f, 0x00, + 0x68, 0x8d, 0x7f, 0x00, 0x68, 0x8d, 0x7f, 0x00, 0x68, 0x8d, 0x7f, 0x00, + 0x4c, 0x8d, 0x60, 0x00, 0x4c, 0x8d, 0x60, 0x00, 0x4c, 0x8d, 0x60, 0x00, + 0x4c, 0x8d, 0x60, 0x00, 0x4c, 0x8d, 0x60, 0x00, 0x4c, 0x8d, 0x60, 0x00, + 0x59, 0x06, 0x4f, 0x06, 0x91, 0x07, 0x4f, 0x06, 0xb1, 0x02, 0x4f, 0x08, + 0xa1, 0x04, 0x4f, 0x08, 0xbd, 0x05, 0x4f, 0x08, 0x05, 0x01, 0x8f, 0x08, + 0x09, 0x01, 0x8f, 0x08, 0xb9, 0x03, 0x8f, 0x08, 0xc1, 0x03, 0x8f, 0x08, + 0xd1, 0x04, 0x8f, 0x08, 0x1d, 0x02, 0xcf, 0x08, 0x8d, 0x04, 0xcf, 0x08, + 0x8d, 0x07, 0xcf, 0x08, 0xc5, 0x07, 0xcf, 0x08, 0x69, 0x01, 0x0f, 0x09, + 0x99, 0x07, 0x4f, 0x09, 0xe9, 0x07, 0x4f, 0x09, 0x29, 0x00, 0x8f, 0x09, + 0x31, 0x00, 0x8f, 0x09, 0xd1, 0x00, 0x8f, 0x09, 0xa5, 0x01, 0x8f, 0x09, + 0xdd, 0x01, 0x8f, 0x09, 0x09, 0x03, 0x8f, 0x09, 0x85, 0x03, 0x8f, 0x09, + 0x49, 0x05, 0x8f, 0x09, 0x0d, 0x06, 0x8f, 0x09, 0xed, 0x07, 0x8f, 0x09, + 0xbd, 0x00, 0xcf, 0x09, 0x1d, 0x01, 0xcf, 0x09, 0x95, 0x01, 0xcf, 0x09, + 0x1d, 0x02, 0xcf, 0x09, 0x6d, 0x02, 0xcf, 0x09, 0xa5, 0x02, 0xcf, 0x09, + 0x41, 0x03, 0xcf, 0x09, 0x7d, 0x03, 0xcf, 0x09, 0xad, 0x05, 0xcf, 0x09, + 0x0d, 0x06, 0xcf, 0x09, 0x6d, 0x06, 0xcf, 0x09, 0xc1, 0x06, 0xcf, 0x09, + 0x85, 0x01, 0x0f, 0x0a, 0x11, 0x02, 0x0f, 0x0a, 0x31, 0x02, 0x0f, 0x0a, + 0xb5, 0x02, 0x0f, 0x0a, 0xb9, 0x03, 0x0f, 0x0a, 0x69, 0x07, 0x0f, 0x0a, + 0x05, 0x04, 0x4f, 0x0a, 0x2d, 0x07, 0x4f, 0x0a, 0x95, 0x00, 0x8f, 0x0a, + 0xad, 0x04, 0x8f, 0x0a, 0xd9, 0x05, 0x8f, 0x0a, 0x95, 0x06, 0x8f, 0x0a, + 0xed, 0x00, 0xcf, 0x0a, 0xf1, 0x00, 0xcf, 0x0a, 0xfd, 0x00, 0xcf, 0x0a, + 0x69, 0x01, 0xcf, 0x0a, 0x75, 0x01, 0xcf, 0x0a, 0x35, 0x02, 0xcf, 0x0a, + 0x05, 0x03, 0xcf, 0x0a, 0x09, 0x05, 0xcf, 0x0a, 0xfd, 0x05, 0xcf, 0x0a, + 0xb1, 0x06, 0xcf, 0x0a, 0x01, 0x02, 0x0f, 0x0b, 0x51, 0x05, 0x40, 0x00, + 0xd1, 0x02, 0x8f, 0x0b, 0x29, 0x03, 0x8f, 0x0b, 0x91, 0x03, 0x8f, 0x0b, + 0xbd, 0x03, 0x8f, 0x0b, 0xe1, 0x04, 0x8f, 0x0b, 0x25, 0x05, 0x8f, 0x0b, + 0xd5, 0x05, 0x8f, 0x0b, 0x39, 0x06, 0x8f, 0x0b, 0x91, 0x07, 0x8f, 0x0b, + 0x2d, 0x00, 0xcf, 0x0b, 0x49, 0x00, 0xcf, 0x0b, 0x01, 0x01, 0xcf, 0x0b, + 0xcd, 0x01, 0xcf, 0x0b, 0x79, 0x05, 0xcf, 0x0b, 0xc9, 0x05, 0xcf, 0x0b, + 0xb5, 0x07, 0xcf, 0x0b, 0x69, 0x00, 0x0f, 0x0c, 0x39, 0x05, 0x40, 0x00, + 0xcd, 0x00, 0x0f, 0x0c, 0xd5, 0x00, 0x0f, 0x0c, 0x45, 0x01, 0x0f, 0x0c, + 0x5d, 0x01, 0x0f, 0x0c, 0x75, 0x01, 0x0f, 0x0c, 0x0d, 0x02, 0x0f, 0x0c, + 0xbd, 0x04, 0x0f, 0x0c, 0xdd, 0x04, 0x0f, 0x0c, 0x01, 0x07, 0x0f, 0x0c, + 0x41, 0x07, 0x0f, 0x0c, 0x49, 0x07, 0x0f, 0x0c, 0xc9, 0x07, 0x0f, 0x0c, + 0x1d, 0x00, 0x4f, 0x0c, 0x65, 0x00, 0x4f, 0x0c, 0x49, 0x01, 0x4f, 0x0c, + 0x65, 0x01, 0x4f, 0x0c, 0x99, 0x01, 0x4f, 0x0c, 0x3d, 0x02, 0x4f, 0x0c, + 0x65, 0x02, 0x4f, 0x0c, 0xb1, 0x02, 0x4f, 0x0c, 0x61, 0x05, 0x4f, 0x0c, + 0xb1, 0x05, 0x4f, 0x0c, 0x45, 0x06, 0x4f, 0x0c, 0x79, 0x06, 0x4f, 0x0c, + 0x85, 0x06, 0x4f, 0x0c, 0x19, 0x07, 0x4f, 0x0c, 0x21, 0x00, 0x8f, 0x0c, + 0x6d, 0x00, 0x8f, 0x0c, 0x7d, 0x00, 0x8f, 0x0c, 0x7d, 0x04, 0x8f, 0x0c, + 0x85, 0x05, 0x8f, 0x0c, 0xc1, 0x03, 0xcf, 0x0c, 0xc9, 0x03, 0xcf, 0x0c, + 0x0d, 0x07, 0xcf, 0x0c, 0x51, 0x07, 0xcf, 0x0c, 0x61, 0x07, 0xcf, 0x0c, + 0xd9, 0x04, 0x40, 0x00, 0x25, 0x00, 0x0f, 0x0d, 0x4d, 0x00, 0x0f, 0x0d, + 0x6d, 0x00, 0x0f, 0x0d, 0x71, 0x00, 0x0f, 0x0d, 0x71, 0x00, 0x0f, 0x0d, + 0x89, 0x00, 0x0f, 0x0d, 0x91, 0x00, 0x0f, 0x0d, 0x99, 0x00, 0x0f, 0x0d, + 0xa1, 0x00, 0x0f, 0x0d, 0xa5, 0x00, 0x0f, 0x0d, 0xad, 0x00, 0x0f, 0x0d, + 0xbd, 0x00, 0x0f, 0x0d, 0xc9, 0x00, 0x0f, 0x0d, 0xd5, 0x00, 0x0f, 0x0d, + 0x89, 0x01, 0x0f, 0x0d, 0xf9, 0x01, 0x0f, 0x0d, 0x21, 0x03, 0x0f, 0x0d, + 0x65, 0x03, 0x0f, 0x0d, 0x1d, 0x04, 0x0f, 0x0d, 0x39, 0x04, 0x0f, 0x0d, + 0x45, 0x04, 0x0f, 0x0d, 0x4d, 0x04, 0x0f, 0x0d, 0x6d, 0x04, 0x0f, 0x0d, + 0x71, 0x04, 0x0f, 0x0d, 0xf5, 0x05, 0x0f, 0x0d, 0x3d, 0x06, 0x0f, 0x0d, + 0x05, 0x00, 0x4f, 0x0d, 0x51, 0x00, 0x4f, 0x0d, 0x8d, 0x00, 0x4f, 0x0d, + 0xed, 0x00, 0x4f, 0x0d, 0x21, 0x02, 0x4f, 0x0d, 0xbd, 0x02, 0x4f, 0x0d, + 0xc1, 0x03, 0x4f, 0x0d, 0x25, 0x04, 0x4f, 0x0d, 0x31, 0x04, 0x4f, 0x0d, + 0x8d, 0x04, 0x40, 0x00, 0x99, 0x04, 0x40, 0x00, 0xa5, 0x04, 0x40, 0x00, + 0xb1, 0x04, 0x40, 0x00, 0xbd, 0x04, 0x40, 0x00, 0xc9, 0x04, 0x40, 0x00, + 0xd5, 0x04, 0x40, 0x00, 0xf5, 0x04, 0x40, 0x00, 0x01, 0x05, 0x40, 0x00, + 0x25, 0x05, 0x40, 0x00, 0x31, 0x05, 0x40, 0x00, 0x3d, 0x05, 0x40, 0x00, + 0xc9, 0x04, 0x4f, 0x0d, 0xf1, 0x05, 0x4f, 0x0d, 0x31, 0x07, 0x4f, 0x0d, + 0x59, 0x07, 0x4f, 0x0d, 0x65, 0x07, 0x4f, 0x0d, 0xa9, 0x01, 0x8f, 0x0d, + 0xd1, 0x01, 0x8f, 0x0d, 0xdd, 0x01, 0x8f, 0x0d, 0xe5, 0x01, 0x8f, 0x0d, + 0x09, 0x02, 0x8f, 0x0d, 0x2d, 0x02, 0x8f, 0x0d, 0x7d, 0x02, 0x8f, 0x0d, + 0x3d, 0x03, 0x8f, 0x0d, 0x6d, 0x04, 0x8f, 0x0d, 0x49, 0x05, 0x8f, 0x0d, + 0x59, 0x05, 0x8f, 0x0d, 0x91, 0x05, 0x8f, 0x0d, 0xd5, 0x05, 0x8f, 0x0d, + 0xf1, 0x00, 0xcf, 0x0d, 0x21, 0x02, 0xcf, 0x0d, 0xfd, 0x02, 0xcf, 0x0d, + 0xbd, 0x04, 0xcf, 0x0d, 0x89, 0x00, 0x0f, 0x0e, 0xc1, 0x04, 0x0f, 0x0e, + 0xf1, 0x05, 0x0f, 0x0e, 0x5d, 0x07, 0x0f, 0x0e, 0xc9, 0x07, 0x0f, 0x0e, + 0x89, 0x05, 0x8f, 0x0e, 0x79, 0x06, 0x8f, 0x0e, 0xa1, 0x06, 0x8f, 0x0e, + 0x1d, 0x07, 0x8f, 0x0e, 0x6d, 0x07, 0x8f, 0x0e, 0x11, 0x00, 0xcf, 0x0e, + 0x4d, 0x01, 0xcf, 0x0e, 0x71, 0x01, 0xcf, 0x0e, 0xbd, 0x01, 0xcf, 0x0e, + 0xcd, 0x01, 0xcf, 0x0e, 0x25, 0x02, 0xcf, 0x0e, 0x75, 0x02, 0xcf, 0x0e, + 0xbd, 0x02, 0xcf, 0x0e, 0xa1, 0x03, 0xcf, 0x0e, 0x2d, 0x04, 0xcf, 0x0e, + 0x75, 0x04, 0xcf, 0x0e, 0x81, 0x04, 0xcf, 0x0e, 0xa5, 0x04, 0xcf, 0x0e, + 0xe1, 0x04, 0xcf, 0x0e, 0x11, 0x05, 0xcf, 0x0e, 0x65, 0x05, 0xcf, 0x0e, + 0xd5, 0x05, 0xcf, 0x0e, 0x2d, 0x06, 0xcf, 0x0e, 0xbd, 0x07, 0xcf, 0x0e, + 0x01, 0x00, 0x0f, 0x0f, 0x25, 0x00, 0x0f, 0x0f, 0x5d, 0x04, 0x0f, 0x0f, + 0x19, 0x05, 0x0f, 0x0f, 0x1d, 0x03, 0x4f, 0x0f, 0x99, 0x04, 0x4f, 0x0f, + 0x21, 0x05, 0x4f, 0x0f, 0x8d, 0x05, 0x4f, 0x0f, 0xa9, 0x05, 0x4f, 0x0f, + 0xe1, 0x05, 0x4f, 0x0f, 0x81, 0x06, 0x4f, 0x0f, 0x95, 0x06, 0x4f, 0x0f, + 0xad, 0x06, 0x4f, 0x0f, 0x01, 0x07, 0x4f, 0x0f, 0x1d, 0x07, 0x4f, 0x0f, + 0x31, 0x07, 0x4f, 0x0f, 0xc5, 0x07, 0x4f, 0x0f, 0xe1, 0x07, 0x4f, 0x0f, + 0x21, 0x00, 0x8f, 0x0f, 0x85, 0x00, 0x8f, 0x0f, 0x9d, 0x00, 0x8f, 0x0f, + 0xdd, 0x00, 0x8f, 0x0f, 0xe5, 0x00, 0x8f, 0x0f, 0x7d, 0x01, 0x8f, 0x0f, + 0x9d, 0x01, 0x8f, 0x0f, 0xb1, 0x01, 0x8f, 0x0f, 0xd5, 0x01, 0x8f, 0x0f, + 0x2d, 0x02, 0x8f, 0x0f, 0x71, 0x02, 0x8f, 0x0f, 0x09, 0x03, 0x8f, 0x0f, + 0x35, 0x03, 0x8f, 0x0f, 0x71, 0x03, 0x8f, 0x0f, 0x69, 0x04, 0x8f, 0x0f, + 0xc9, 0x04, 0x8f, 0x0f, 0x7d, 0x00, 0xcf, 0x0f, 0x91, 0x02, 0xcf, 0x0f, + 0x15, 0x03, 0x4f, 0x09, 0xbd, 0x03, 0x8f, 0x0d, 0x41, 0x03, 0xcf, 0x0a, + 0x65, 0x04, 0xcf, 0x0a, 0x99, 0x04, 0xcf, 0x0a, 0x09, 0x05, 0xcf, 0x0a, + 0x49, 0x05, 0xcf, 0x0a, 0x61, 0x05, 0xcf, 0x0a, 0xb1, 0x06, 0xcf, 0x0a, + 0xb9, 0x06, 0xcf, 0x0a, 0xf1, 0x06, 0xcf, 0x0a, 0x31, 0x07, 0xcf, 0x0a, + 0x75, 0x07, 0xcf, 0x0a, 0xd9, 0x05, 0x8f, 0x0b, 0x71, 0x06, 0x8f, 0x0b, + 0x6d, 0x06, 0x8f, 0x0a, 0x8d, 0x06, 0x8f, 0x0a, 0x31, 0x07, 0x8f, 0x0a, + 0xe5, 0x07, 0x8f, 0x0a, 0x69, 0x00, 0xcf, 0x0a, 0xc1, 0x00, 0xcf, 0x0a, + 0x55, 0x01, 0xcf, 0x0a, 0x89, 0x02, 0xcf, 0x0a, 0xc1, 0x05, 0xcf, 0x0a, + 0xbd, 0x06, 0xcf, 0x0d, 0x11, 0x07, 0xcf, 0x0d, 0xd9, 0x01, 0x8f, 0x04, + 0x09, 0x02, 0x8f, 0x04, 0x15, 0x02, 0x8f, 0x04, 0x21, 0x02, 0x8f, 0x04, + 0x39, 0x02, 0x8f, 0x04, 0x5d, 0x02, 0x8f, 0x04, 0x69, 0x02, 0x8f, 0x04, + 0x75, 0x02, 0x8f, 0x04, 0x49, 0x03, 0x8f, 0x04, 0x89, 0x03, 0x8f, 0x04, + 0xf1, 0x04, 0x8f, 0x04, 0x51, 0x05, 0x8f, 0x04, 0x8d, 0x05, 0x8f, 0x04, + 0xa1, 0x05, 0x8f, 0x04, 0xf1, 0x05, 0x8f, 0x04, 0x21, 0x06, 0x8f, 0x04, + 0x59, 0x07, 0x8f, 0x04, 0x6d, 0x07, 0x8f, 0x04, 0xc5, 0x07, 0x8f, 0x04, + 0xf1, 0x00, 0xcf, 0x04, 0xfd, 0x00, 0xcf, 0x04, 0x05, 0x01, 0xcf, 0x04, + 0x95, 0x01, 0xcf, 0x04, 0xfd, 0x01, 0xcf, 0x04, 0x41, 0x02, 0xcf, 0x04, + 0x55, 0x02, 0xcf, 0x04, 0xb9, 0x02, 0xcf, 0x04, 0xbd, 0x02, 0xcf, 0x04, + 0xc1, 0x02, 0xcf, 0x04, 0x05, 0x03, 0xcf, 0x04, 0x0d, 0x03, 0xcf, 0x04, + 0x11, 0x03, 0xcf, 0x04, 0x15, 0x03, 0xcf, 0x04, 0x19, 0x03, 0xcf, 0x04, + 0x21, 0x03, 0xcf, 0x04, 0x45, 0x03, 0xcf, 0x04, 0x4d, 0x03, 0xcf, 0x04, + 0x61, 0x03, 0xcf, 0x04, 0x71, 0x03, 0xcf, 0x04, 0xc9, 0x03, 0xcf, 0x04, + 0xdd, 0x03, 0xcf, 0x04, 0x49, 0x05, 0xcf, 0x04, 0x55, 0x05, 0xcf, 0x04, + 0x61, 0x05, 0xcf, 0x04, 0x65, 0x05, 0xcf, 0x04, 0x69, 0x05, 0xcf, 0x04, + 0x6d, 0x05, 0xcf, 0x04, 0x99, 0x05, 0xcf, 0x04, 0x2d, 0x00, 0x0f, 0x05, + 0xad, 0x00, 0x0f, 0x05, 0xf9, 0x00, 0x0f, 0x05, 0x41, 0x01, 0x0f, 0x05, + 0xe1, 0x01, 0x0f, 0x05, 0x09, 0x02, 0x0f, 0x05, 0xf1, 0x02, 0x0f, 0x05, + 0xfd, 0x02, 0x0f, 0x05, 0x21, 0x03, 0x0f, 0x05, 0x3d, 0x03, 0x0f, 0x05, + 0x91, 0x03, 0x0f, 0x05, 0xad, 0x03, 0x0f, 0x05, 0xb9, 0x03, 0x0f, 0x05, + 0xdd, 0x03, 0x0f, 0x05, 0xed, 0x03, 0x0f, 0x05, 0xf5, 0x03, 0x0f, 0x05, + 0x65, 0x04, 0x0f, 0x05, 0x15, 0x06, 0x0f, 0x05, 0xa1, 0x06, 0x0f, 0x05, + 0xb1, 0x06, 0x0f, 0x05, 0xb9, 0x06, 0x0f, 0x05, 0xc1, 0x06, 0x0f, 0x05, + 0xd5, 0x06, 0x0f, 0x05, 0x25, 0x07, 0x0f, 0x05, 0x69, 0x07, 0x0f, 0x05, + 0x71, 0x07, 0x0f, 0x05, 0x0d, 0x00, 0x4f, 0x05, 0x29, 0x00, 0x4f, 0x05, + 0x39, 0x00, 0x4f, 0x05, 0x6d, 0x00, 0x4f, 0x05, 0x79, 0x00, 0x4f, 0x05, + 0x9d, 0x00, 0x4f, 0x05, 0xe5, 0x01, 0x4f, 0x05, 0x1d, 0x02, 0x4f, 0x05, + 0x2d, 0x02, 0x4f, 0x05, 0x31, 0x02, 0x4f, 0x05, 0x45, 0x02, 0x4f, 0x05, + 0x29, 0x03, 0x4f, 0x05, 0x65, 0x03, 0x4f, 0x05, 0x01, 0x04, 0x4f, 0x05, + 0x0d, 0x04, 0x4f, 0x05, 0x19, 0x04, 0x4f, 0x05, 0x4d, 0x04, 0x4f, 0x05, + 0x59, 0x04, 0x4f, 0x05, 0xd9, 0x04, 0x4f, 0x05, 0x81, 0x05, 0x4f, 0x05, + 0x85, 0x05, 0x4f, 0x05, 0xad, 0x05, 0x4f, 0x05, 0xfd, 0x05, 0x4f, 0x05, + 0x05, 0x06, 0x4f, 0x05, 0x0d, 0x06, 0x4f, 0x05, 0x39, 0x06, 0x4f, 0x05, + 0x71, 0x00, 0x8f, 0x05, 0xe9, 0x00, 0x8f, 0x05, 0xf9, 0x00, 0x8f, 0x05, + 0x09, 0x01, 0x8f, 0x05, 0xb5, 0x01, 0x8f, 0x05, 0xc1, 0x01, 0x8f, 0x05, + 0xe1, 0x01, 0x8f, 0x05, 0xed, 0x01, 0x8f, 0x05, 0x01, 0x02, 0x8f, 0x05, + 0x0d, 0x02, 0x8f, 0x05, 0x19, 0x02, 0x8f, 0x05, 0x49, 0x02, 0x8f, 0x05, + 0x55, 0x02, 0x8f, 0x05, 0x1d, 0x03, 0x8f, 0x05, 0x91, 0x03, 0x8f, 0x05, + 0xe5, 0x03, 0x8f, 0x05, 0x25, 0x04, 0x8f, 0x05, 0x95, 0x04, 0x8f, 0x05, + 0xb5, 0x04, 0x8f, 0x05, 0x29, 0x05, 0x8f, 0x05, 0xa5, 0x05, 0x8f, 0x05, + 0x31, 0x06, 0x8f, 0x05, 0x39, 0x06, 0x8f, 0x05, 0x41, 0x06, 0x8f, 0x05, + 0x49, 0x06, 0x8f, 0x05, 0x65, 0x07, 0x8f, 0x05, 0x89, 0x07, 0x8f, 0x05, + 0x95, 0x07, 0x8f, 0x05, 0xb1, 0x07, 0x8f, 0x05, 0xd9, 0x07, 0x8f, 0x05, + 0xe5, 0x07, 0x8f, 0x05, 0x15, 0x00, 0xcf, 0x05, 0xd1, 0x00, 0xcf, 0x05, + 0x2d, 0x01, 0xcf, 0x05, 0x45, 0x01, 0xcf, 0x05, 0x75, 0x01, 0xcf, 0x05, + 0xa5, 0x01, 0xcf, 0x05, 0xb5, 0x01, 0xcf, 0x05, 0xd1, 0x01, 0xcf, 0x05, + 0xf5, 0x01, 0xcf, 0x05, 0xb9, 0x02, 0xcf, 0x05, 0xc5, 0x02, 0xcf, 0x05, + 0xfd, 0x02, 0xcf, 0x05, 0x11, 0x03, 0xcf, 0x05, 0x25, 0x03, 0xcf, 0x05, + 0x41, 0x03, 0xcf, 0x05, 0x55, 0x03, 0xcf, 0x05, 0x69, 0x03, 0xcf, 0x05, + 0x8d, 0x04, 0xcf, 0x05, 0x9d, 0x04, 0xcf, 0x05, 0xad, 0x04, 0xcf, 0x05, + 0xd1, 0x04, 0xcf, 0x05, 0xe1, 0x04, 0xcf, 0x05, 0x39, 0x05, 0xcf, 0x05, + 0x75, 0x05, 0xcf, 0x05, 0xf9, 0x05, 0xcf, 0x05, 0x05, 0x06, 0xcf, 0x05, + 0x11, 0x06, 0xcf, 0x05, 0x25, 0x06, 0xcf, 0x05, 0x35, 0x06, 0xcf, 0x05, + 0x49, 0x06, 0xcf, 0x05, 0x5d, 0x06, 0xcf, 0x05, 0x7d, 0x06, 0xcf, 0x05, + 0x91, 0x06, 0xcf, 0x05, 0xb5, 0x06, 0xcf, 0x05, 0xd1, 0x06, 0xcf, 0x05, + 0xf9, 0x06, 0xcf, 0x05, 0x55, 0x07, 0xcf, 0x05, 0xf1, 0x07, 0xcf, 0x05, + 0x09, 0x00, 0x0f, 0x06, 0xdd, 0x00, 0x0f, 0x06, 0xa5, 0x01, 0x0f, 0x06, + 0x19, 0x02, 0x0f, 0x06, 0x25, 0x02, 0x0f, 0x06, 0x39, 0x02, 0x0f, 0x06, + 0x45, 0x02, 0x0f, 0x06, 0x55, 0x02, 0x0f, 0x06, 0x81, 0x02, 0x0f, 0x06, + 0xa1, 0x02, 0x0f, 0x06, 0xb5, 0x02, 0x0f, 0x06, 0xc1, 0x02, 0x0f, 0x06, + 0xc9, 0x02, 0x0f, 0x06, 0xd5, 0x02, 0x0f, 0x06, 0x31, 0x03, 0x0f, 0x06, + 0x41, 0x03, 0x0f, 0x06, 0x51, 0x03, 0x0f, 0x06, 0x5d, 0x03, 0x0f, 0x06, + 0x65, 0x03, 0x0f, 0x06, 0x75, 0x03, 0x0f, 0x06, 0xcd, 0x03, 0x0f, 0x06, + 0xf9, 0x03, 0x0f, 0x06, 0x05, 0x04, 0x0f, 0x06, 0x59, 0x06, 0x0f, 0x06, + 0x61, 0x06, 0x0f, 0x06, 0xc1, 0x06, 0x0f, 0x06, 0xd5, 0x06, 0x0f, 0x06, + 0xd9, 0x06, 0x0f, 0x06, 0xdd, 0x06, 0x0f, 0x06, 0x79, 0x04, 0x4f, 0x06, + 0x91, 0x04, 0x4f, 0x06, 0xa9, 0x04, 0x4f, 0x06, 0x01, 0x05, 0x4f, 0x06, + 0x35, 0x05, 0x4f, 0x06, 0x65, 0x05, 0x4f, 0x06, 0x2d, 0x06, 0x4f, 0x06, + 0x45, 0x06, 0x4f, 0x06, 0x69, 0x06, 0x4f, 0x06, 0x6d, 0x06, 0x4f, 0x06, + 0x71, 0x06, 0x4f, 0x06, 0x75, 0x06, 0x4f, 0x06, 0x79, 0x06, 0x4f, 0x06, + 0x7d, 0x06, 0x4f, 0x06, 0x81, 0x06, 0x4f, 0x06, 0x85, 0x06, 0x4f, 0x06, + 0x89, 0x06, 0x4f, 0x06, 0x8d, 0x06, 0x4f, 0x06, 0x91, 0x06, 0x4f, 0x06, + 0x95, 0x06, 0x4f, 0x06, 0xa1, 0x06, 0x4f, 0x06, 0xa9, 0x06, 0x4f, 0x06, + 0x69, 0x00, 0x8f, 0x06, 0x75, 0x00, 0x8f, 0x06, 0x8d, 0x00, 0x8f, 0x06, + 0x99, 0x00, 0x8f, 0x06, 0xa5, 0x00, 0x8f, 0x06, 0xf1, 0x00, 0x8f, 0x06, + 0xfd, 0x00, 0x8f, 0x06, 0x09, 0x01, 0x8f, 0x06, 0x15, 0x01, 0x8f, 0x06, + 0x25, 0x01, 0x8f, 0x06, 0xfd, 0x01, 0x8f, 0x06, 0x2d, 0x02, 0x8f, 0x06, + 0xf1, 0x02, 0x8f, 0x06, 0xb5, 0x03, 0x8f, 0x06, 0x4d, 0x04, 0x8f, 0x06, + 0x65, 0x04, 0x8f, 0x06, 0xa9, 0x04, 0x8f, 0x06, 0xbd, 0x05, 0x8f, 0x06, + 0x61, 0x06, 0x8f, 0x06, 0x69, 0x06, 0x8f, 0x06, 0x71, 0x06, 0x8f, 0x06, + 0x91, 0x07, 0x8f, 0x06, 0xc5, 0x02, 0xcf, 0x06, 0xe1, 0x02, 0xcf, 0x06, + 0xe9, 0x02, 0xcf, 0x06, 0xf9, 0x02, 0xcf, 0x06, 0x09, 0x03, 0xcf, 0x06, + 0xfd, 0x04, 0xcf, 0x06, 0x55, 0x05, 0xcf, 0x06, 0x71, 0x05, 0xcf, 0x06, + 0xd9, 0x05, 0xcf, 0x06, 0x9d, 0x07, 0xcf, 0x06, 0xb1, 0x07, 0xcf, 0x06, + 0xd5, 0x07, 0xcf, 0x06, 0xd9, 0x07, 0xcf, 0x06, 0xdd, 0x07, 0xcf, 0x06, + 0x19, 0x00, 0x0f, 0x07, 0x41, 0x01, 0x0f, 0x07, 0x89, 0x01, 0x0f, 0x07, + 0x05, 0x02, 0x0f, 0x07, 0x1d, 0x02, 0x0f, 0x07, 0x2d, 0x02, 0x0f, 0x07, + 0x31, 0x02, 0x0f, 0x07, 0x35, 0x02, 0x0f, 0x07, 0x3d, 0x02, 0x0f, 0x07, + 0x9d, 0x02, 0x0f, 0x07, 0xc5, 0x02, 0x0f, 0x07, 0xed, 0x02, 0x0f, 0x07, + 0x15, 0x03, 0x0f, 0x07, 0x51, 0x03, 0x0f, 0x07, 0xa9, 0x03, 0x0f, 0x07, + 0xcd, 0x03, 0x0f, 0x07, 0xe5, 0x03, 0x0f, 0x07, 0xf5, 0x03, 0x0f, 0x07, + 0x05, 0x04, 0x0f, 0x07, 0x2d, 0x04, 0x0f, 0x07, 0x55, 0x04, 0x0f, 0x07, + 0x99, 0x04, 0x0f, 0x07, 0xcd, 0x04, 0x0f, 0x07, 0xf1, 0x04, 0x0f, 0x07, + 0x09, 0x05, 0x0f, 0x07, 0x41, 0x05, 0x0f, 0x07, 0xc1, 0x05, 0x0f, 0x07, + 0xe9, 0x05, 0x0f, 0x07, 0x19, 0x07, 0x0f, 0x07, 0x59, 0x07, 0x0f, 0x07, + 0x71, 0x07, 0x0f, 0x07, 0x89, 0x07, 0x0f, 0x07, 0xa1, 0x07, 0x0f, 0x07, + 0xe5, 0x07, 0x0f, 0x07, 0x55, 0x00, 0x4f, 0x07, 0x79, 0x00, 0x4f, 0x07, + 0xb9, 0x00, 0x4f, 0x07, 0x6d, 0x01, 0x4f, 0x07, 0xb5, 0x01, 0x4f, 0x07, + 0x4d, 0x03, 0x4f, 0x07, 0x21, 0x04, 0x4f, 0x07, 0x5d, 0x04, 0x4f, 0x07, + 0x85, 0x04, 0x4f, 0x07, 0xf9, 0x04, 0x4f, 0x07, 0x65, 0x05, 0x4f, 0x07, + 0x81, 0x05, 0x4f, 0x07, 0xd9, 0x00, 0x8f, 0x07, 0x35, 0x01, 0x8f, 0x07, + 0x69, 0x01, 0x8f, 0x07, 0x75, 0x01, 0x8f, 0x07, 0xad, 0x01, 0x8f, 0x07, + 0xed, 0x01, 0x8f, 0x07, 0x19, 0x02, 0x8f, 0x07, 0x41, 0x02, 0x8f, 0x07, + 0x4d, 0x02, 0x8f, 0x07, 0x59, 0x02, 0x8f, 0x07, 0xa5, 0x03, 0x8f, 0x07, + 0xb9, 0x03, 0x8f, 0x07, 0xc9, 0x03, 0x8f, 0x07, 0xd5, 0x03, 0x8f, 0x07, + 0xed, 0x03, 0x8f, 0x07, 0x01, 0x04, 0x8f, 0x07, 0x11, 0x04, 0x8f, 0x07, + 0x21, 0x04, 0x8f, 0x07, 0x31, 0x04, 0x8f, 0x07, 0x41, 0x04, 0x8f, 0x07, + 0x51, 0x04, 0x8f, 0x07, 0x79, 0x04, 0x8f, 0x07, 0x95, 0x04, 0x8f, 0x07, + 0x9d, 0x04, 0x8f, 0x07, 0xa5, 0x04, 0x8f, 0x07, 0xb5, 0x04, 0x8f, 0x07, + 0xc5, 0x04, 0x8f, 0x07, 0xd5, 0x04, 0x8f, 0x07, 0xe5, 0x04, 0x8f, 0x07, + 0xf5, 0x04, 0x8f, 0x07, 0x05, 0x05, 0x8f, 0x07, 0x1d, 0x05, 0x8f, 0x07, + 0x2d, 0x05, 0x8f, 0x07, 0x3d, 0x05, 0x8f, 0x07, 0x51, 0x05, 0x8f, 0x07, + 0xc5, 0x07, 0x8f, 0x07, 0xed, 0x07, 0x8f, 0x07, 0xf5, 0x07, 0x8f, 0x07, + 0xfd, 0x07, 0x8f, 0x07, 0x0d, 0x00, 0xcf, 0x07, 0x15, 0x00, 0xcf, 0x07, + 0x1d, 0x00, 0xcf, 0x07, 0x29, 0x00, 0xcf, 0x07, 0x31, 0x00, 0xcf, 0x07, + 0x39, 0x00, 0xcf, 0x07, 0x51, 0x00, 0xcf, 0x07, 0xd1, 0x00, 0xcf, 0x07, + 0xd9, 0x00, 0xcf, 0x07, 0xe1, 0x00, 0xcf, 0x07, 0x41, 0x03, 0xcf, 0x07, + 0xad, 0x03, 0xcf, 0x07, 0xe9, 0x03, 0xcf, 0x07, 0x6d, 0x04, 0xcf, 0x07, + 0xed, 0x04, 0xcf, 0x07, 0x1d, 0x05, 0xcf, 0x07, 0x31, 0x05, 0xcf, 0x07, + 0xc1, 0x05, 0xcf, 0x07, 0xb1, 0x06, 0xcf, 0x07, 0xfd, 0x06, 0xcf, 0x07, + 0xc1, 0x07, 0xcf, 0x07, 0xf9, 0x07, 0xcf, 0x07, 0x21, 0x00, 0x0f, 0x08, + 0x4d, 0x03, 0x0f, 0x08, 0x5d, 0x03, 0x0f, 0x08, 0x65, 0x03, 0x0f, 0x08, + 0xb1, 0x03, 0x0f, 0x08, 0x6d, 0x00, 0x8f, 0x08, 0x21, 0x02, 0x8f, 0x08, + 0x89, 0x02, 0x4f, 0x0a, 0xd1, 0x02, 0x4f, 0x0a, 0xe5, 0x02, 0x4f, 0x0a, + 0xcd, 0x07, 0x4f, 0x0a, 0xd9, 0x07, 0x4f, 0x0a, 0x15, 0x02, 0x8f, 0x0a, + 0x5d, 0x02, 0x8f, 0x0a, 0x95, 0x02, 0x8f, 0x0a, 0xed, 0x02, 0x8f, 0x0a, + 0x85, 0x03, 0x8f, 0x0a, 0x45, 0x05, 0x8f, 0x0a, 0x4d, 0x05, 0x8f, 0x0a, + 0x39, 0x06, 0x8f, 0x0a, 0x4d, 0x00, 0xcf, 0x0a, 0x41, 0x04, 0xcf, 0x0a, + 0x91, 0x04, 0xcf, 0x0a, 0xa9, 0x04, 0xcf, 0x0a, 0x31, 0x05, 0xcf, 0x0a, + 0xa5, 0x05, 0xcf, 0x0a, 0x0d, 0x06, 0xcf, 0x0a, 0x4d, 0x06, 0xcf, 0x0a, + 0x61, 0x06, 0xcf, 0x0a, 0x79, 0x06, 0xcf, 0x0a, 0x81, 0x06, 0xcf, 0x0a, + 0xb5, 0x06, 0xcf, 0x0a, 0x59, 0x07, 0xcf, 0x0a, 0x8d, 0x07, 0xcf, 0x0a, + 0xc1, 0x07, 0xcf, 0x0a, 0xd5, 0x07, 0xcf, 0x0a, 0xfd, 0x07, 0xcf, 0x0a, + 0x49, 0x00, 0x0f, 0x0b, 0x71, 0x00, 0x0f, 0x0b, 0xf9, 0x00, 0x0f, 0x0b, + 0x11, 0x01, 0x0f, 0x0b, 0x5d, 0x01, 0x0f, 0x0b, 0x65, 0x01, 0x0f, 0x0b, + 0x99, 0x01, 0x0f, 0x0b, 0xa5, 0x03, 0x00, 0x00, 0xe5, 0x01, 0x0f, 0x0b, + 0x55, 0x02, 0x0f, 0x0b, 0x6d, 0x02, 0x0f, 0x0b, 0x7d, 0x02, 0x0f, 0x0b, + 0x9d, 0x03, 0x0f, 0x0b, 0xa9, 0x03, 0x0f, 0x0b, 0xcd, 0x04, 0x0f, 0x0b, + 0x45, 0x06, 0x0f, 0x0b, 0x51, 0x06, 0x0f, 0x0b, 0xf5, 0x07, 0x0f, 0x0b, + 0x0d, 0x00, 0x4f, 0x0b, 0xa1, 0x00, 0x4f, 0x0b, 0x81, 0x01, 0x4f, 0x0b, + 0x15, 0x02, 0x4f, 0x0b, 0x4d, 0x02, 0x4f, 0x0b, 0x5d, 0x02, 0x4f, 0x0b, + 0xbd, 0x02, 0x4f, 0x0b, 0xe5, 0x02, 0x4f, 0x0b, 0xc1, 0x03, 0x4f, 0x0b, + 0x39, 0x04, 0x4f, 0x0b, 0x41, 0x04, 0x4f, 0x0b, 0x95, 0x05, 0x4f, 0x0b, + 0xf9, 0x05, 0x4f, 0x0b, 0x49, 0x06, 0x4f, 0x0b, 0x6d, 0x06, 0x4f, 0x0b, + 0x41, 0x03, 0x8f, 0x0b, 0x59, 0x03, 0x8f, 0x0b, 0x21, 0x07, 0x8f, 0x0b, + 0x89, 0x03, 0x0f, 0x0c, 0x5d, 0x05, 0x4f, 0x0c, 0xd9, 0x05, 0x4f, 0x0c, + 0x05, 0x06, 0x4f, 0x0c, 0x75, 0x06, 0x4f, 0x0c, 0x45, 0x07, 0x4f, 0x0c, + 0x89, 0x07, 0x4f, 0x0c, 0xb5, 0x07, 0x4f, 0x0c, 0x21, 0x00, 0x8f, 0x0c, + 0xc5, 0x00, 0x8f, 0x0c, 0x75, 0x02, 0x8f, 0x0c, 0x95, 0x02, 0x8f, 0x0c, + 0x99, 0x02, 0x8f, 0x0c, 0x9d, 0x02, 0x8f, 0x0c, 0xa1, 0x02, 0x8f, 0x0c, + 0xad, 0x02, 0x8f, 0x0c, 0xb5, 0x02, 0x8f, 0x0c, 0xb9, 0x02, 0x8f, 0x0c, + 0xc1, 0x02, 0x8f, 0x0c, 0x5d, 0x03, 0x8f, 0x0c, 0xbd, 0x03, 0x8f, 0x0c, + 0xc9, 0x03, 0x8f, 0x0c, 0xcd, 0x03, 0x8f, 0x0c, 0xd9, 0x03, 0x8f, 0x0c, + 0xe1, 0x03, 0x8f, 0x0c, 0xe5, 0x03, 0x8f, 0x0c, 0xed, 0x03, 0x8f, 0x0c, + 0x3d, 0x04, 0x8f, 0x0c, 0x6d, 0x04, 0x8f, 0x0c, 0x71, 0x04, 0x8f, 0x0c, + 0x7d, 0x04, 0x8f, 0x0c, 0x81, 0x04, 0x8f, 0x0c, 0x85, 0x04, 0x8f, 0x0c, + 0x99, 0x04, 0x8f, 0x0c, 0x31, 0x05, 0x4f, 0x0d, 0x85, 0x05, 0x4f, 0x0d, + 0x61, 0x04, 0x8f, 0x0d, 0xc9, 0x04, 0x8f, 0x0d, 0x69, 0x05, 0x8f, 0x0d, + 0xe9, 0x05, 0x8f, 0x0d, 0x19, 0x06, 0x8f, 0x0d, 0xd1, 0x06, 0x8f, 0x0d, + 0xe9, 0x07, 0x8f, 0x0d, 0xf1, 0x07, 0x8f, 0x0d, 0x21, 0x00, 0xcf, 0x0d, + 0x2d, 0x00, 0xcf, 0x0d, 0x39, 0x00, 0xcf, 0x0d, 0x45, 0x00, 0xcf, 0x0d, + 0x51, 0x00, 0xcf, 0x0d, 0x5d, 0x00, 0xcf, 0x0d, 0x65, 0x00, 0xcf, 0x0d, + 0x6d, 0x00, 0xcf, 0x0d, 0xf1, 0x00, 0xcf, 0x0d, 0xfd, 0x00, 0xcf, 0x0d, + 0x05, 0x01, 0xcf, 0x0d, 0x0d, 0x01, 0xcf, 0x0d, 0x15, 0x01, 0xcf, 0x0d, + 0x1d, 0x01, 0xcf, 0x0d, 0x25, 0x01, 0xcf, 0x0d, 0xd5, 0x02, 0xcf, 0x0d, + 0x81, 0x07, 0xcf, 0x0d, 0xfd, 0x07, 0xcf, 0x0d, 0xd5, 0x00, 0x0f, 0x0e, + 0x3d, 0x01, 0x0f, 0x0e, 0x85, 0x01, 0x0f, 0x0e, 0xa1, 0x01, 0x0f, 0x0e, + 0xa5, 0x02, 0x0f, 0x0e, 0x51, 0x03, 0x0f, 0x0e, 0xfd, 0x03, 0x0f, 0x0e, + 0x35, 0x07, 0x0f, 0x0e, 0x85, 0x07, 0x0f, 0x0e, 0x0d, 0x00, 0x4f, 0x0e, + 0x9d, 0x00, 0x4f, 0x0e, 0x21, 0x01, 0x4f, 0x0e, 0x2d, 0x02, 0x4f, 0x0e, + 0x3d, 0x02, 0x4f, 0x0e, 0x91, 0x07, 0x8f, 0x0e, 0x9d, 0x07, 0x8f, 0x0e, + 0xa9, 0x07, 0x8f, 0x0e, 0xb5, 0x07, 0x8f, 0x0e, 0xd9, 0x07, 0x8f, 0x0e, + 0xed, 0x07, 0x8f, 0x0e, 0xd1, 0x00, 0xcf, 0x0e, 0xd9, 0x00, 0xcf, 0x0e, + 0xe1, 0x00, 0xcf, 0x0e, 0xf5, 0x00, 0xcf, 0x0e, 0xf9, 0x01, 0x00, 0x00, + 0x25, 0x04, 0xcf, 0x0b, 0xed, 0x05, 0x8f, 0x0c, 0x0d, 0x06, 0x8f, 0x0c, + 0x11, 0x06, 0x8f, 0x0c, 0x19, 0x06, 0x8f, 0x0c, 0xa1, 0x00, 0xcf, 0x0c, + 0x01, 0x02, 0xcf, 0x0c, 0x2d, 0x05, 0x0f, 0x0d, 0xad, 0x07, 0x0f, 0x0d, + 0xf1, 0x07, 0x0f, 0x0d, 0x79, 0x00, 0xc0, 0x00, 0x45, 0x04, 0x4f, 0x0e, + 0x59, 0x04, 0x4f, 0x0e, 0x91, 0x04, 0x4f, 0x0e, 0xc1, 0x04, 0x4f, 0x0e, + 0x65, 0x06, 0x4f, 0x0e, 0xed, 0x02, 0x8f, 0x0e, 0x51, 0x03, 0x8f, 0x0e, + 0xe9, 0x05, 0x0f, 0x0f, 0xab, 0x26, 0xe0, 0x7c, 0x00, 0x00, 0x4f, 0x00, + 0x6f, 0x24, 0x3f, 0x00, 0xec, 0xc3, 0xa1, 0xc1, 0xcb, 0x47, 0x80, 0x00, + 0x50, 0x20, 0x40, 0x8f, 0x28, 0x46, 0x8b, 0x0a, 0x31, 0x00, 0x08, 0x45, + 0x02, 0x6f, 0x0e, 0x70, 0x00, 0x18, 0x43, 0x00, 0x10, 0x41, 0x04, 0x8e, + 0x8c, 0x70, 0x4b, 0xd9, 0x6c, 0x71, 0x80, 0x45, 0xc3, 0x46, 0x80, 0x3f, + 0x00, 0x00, 0x22, 0x42, 0x2a, 0x5b, 0x04, 0x8e, 0x40, 0xd9, 0x40, 0x24, + 0xc2, 0x30, 0x6c, 0x71, 0x28, 0x5b, 0x87, 0xe8, 0x03, 0x14, 0x80, 0x30, + 0x0f, 0x08, 0xb0, 0x0c, 0x4c, 0xd9, 0x06, 0x71, 0xd3, 0x08, 0x92, 0xa2, + 0x23, 0xf0, 0x02, 0x1c, 0x83, 0x31, 0x04, 0x8e, 0x40, 0x24, 0x82, 0x30, + 0x6c, 0x71, 0x29, 0x5b, 0x00, 0x8f, 0x35, 0x08, 0xb5, 0x00, 0x2c, 0x71, + 0x8a, 0x22, 0x4d, 0x00, 0x6c, 0x71, 0x11, 0xf0, 0x00, 0x1c, 0x84, 0x30, + 0x00, 0x14, 0x00, 0x31, 0x64, 0x77, 0x0a, 0xf0, 0x0c, 0x71, 0xab, 0x20, + 0x61, 0x0a, 0x8b, 0x44, 0x00, 0x94, 0x04, 0x77, 0x00, 0xb4, 0x00, 0x94, + 0xf8, 0xe8, 0x2f, 0x26, 0xc8, 0xf0, 0xf0, 0xf5, 0x20, 0xaf, 0xd3, 0x41, + 0x80, 0x00, 0x72, 0x3e, 0xd3, 0x40, 0x80, 0x00, 0x68, 0x3e, 0x85, 0x0d, + 0xb4, 0x10, 0x4e, 0x70, 0xad, 0x0d, 0x30, 0x14, 0xc1, 0x40, 0x8c, 0x25, + 0x02, 0x90, 0xcc, 0x25, 0x82, 0x9f, 0x00, 0x00, 0xff, 0x00, 0x33, 0xf4, + 0x00, 0x11, 0x80, 0x20, 0x44, 0x6f, 0x40, 0x27, 0x52, 0x11, 0x46, 0x20, + 0x00, 0x0e, 0x00, 0x1a, 0x03, 0x01, 0x00, 0x1a, 0x83, 0x23, 0x00, 0x19, + 0x02, 0x20, 0x7f, 0xdd, 0x04, 0x8e, 0x8c, 0x70, 0x17, 0xbd, 0x51, 0xd9, + 0x6c, 0x71, 0x80, 0x45, 0xa1, 0x46, 0x2a, 0x5b, 0x04, 0x8e, 0x8c, 0x70, + 0x52, 0xd9, 0x6c, 0x71, 0x80, 0x45, 0x42, 0x42, 0xa1, 0x46, 0x2a, 0x5b, + 0x00, 0x11, 0x80, 0x20, 0xff, 0xdc, 0x43, 0x6f, 0x00, 0x18, 0x00, 0x23, + 0x00, 0xaa, 0x04, 0x8e, 0x8c, 0x70, 0x4e, 0xd9, 0x6c, 0x71, 0x80, 0x45, + 0xa1, 0x46, 0x2a, 0x5b, 0x0c, 0x70, 0xc1, 0x41, 0x00, 0x1f, 0x83, 0x10, + 0x31, 0x5b, 0x00, 0x10, 0x0d, 0x20, 0x24, 0xf0, 0x42, 0x6f, 0x00, 0x1a, + 0x82, 0x04, 0x00, 0x19, 0x82, 0x24, 0x04, 0x8e, 0x4b, 0xd9, 0x6c, 0x71, + 0x42, 0x44, 0x42, 0x45, 0xc3, 0x46, 0x80, 0x3f, 0x00, 0x00, 0x2a, 0x5b, + 0x0c, 0x71, 0x00, 0x1f, 0x82, 0x14, 0x21, 0x5b, 0x0c, 0x70, 0xc1, 0x41, + 0x00, 0x18, 0x40, 0x23, 0x31, 0x5b, 0x0c, 0xf0, 0x2a, 0x09, 0x8f, 0x09, + 0x00, 0x41, 0xc1, 0x40, 0x30, 0x5b, 0x47, 0x86, 0x0c, 0x71, 0x60, 0x7a, + 0xc1, 0x41, 0x10, 0xdd, 0xa1, 0x40, 0xcc, 0xc7, 0xe2, 0xc2, 0x96, 0x0d, + 0xaf, 0x0a, 0x08, 0x45, 0x06, 0x1d, 0xc5, 0x11, 0xc2, 0xc6, 0xe0, 0x78, + 0xf1, 0xc0, 0x00, 0x16, 0x83, 0x70, 0x80, 0x00, 0xc4, 0x23, 0x05, 0xeb, + 0x0a, 0x0e, 0xcf, 0x0a, 0x04, 0xf0, 0xc3, 0x40, 0x00, 0x00, 0xfd, 0xff, + 0xd1, 0xc0, 0xe0, 0x7f, 0x0e, 0x78, 0xe0, 0x78, 0xf1, 0xc0, 0xc3, 0x42, + 0x80, 0x00, 0xd0, 0x22, 0x20, 0x82, 0x20, 0x81, 0x1b, 0x09, 0x80, 0x0f, + 0xa5, 0x5a, 0x6b, 0xb6, 0x24, 0x8a, 0x89, 0xe9, 0x2c, 0x71, 0x14, 0x70, + 0x27, 0xd8, 0x24, 0xaa, 0x05, 0xf2, 0x27, 0xd8, 0x2f, 0x5b, 0xd1, 0xc0, + 0xe0, 0x7e, 0xab, 0x20, 0xe0, 0x0c, 0xab, 0x21, 0x61, 0x0a, 0xff, 0xf1, + 0x05, 0xe8, 0x00, 0x18, 0x84, 0x0f, 0x00, 0x00, 0xe1, 0x07, 0x06, 0xe9, + 0x00, 0x19, 0x82, 0x0f, 0x00, 0x00, 0x01, 0x00, 0x05, 0xea, 0x00, 0x1a, + 0x82, 0x0f, 0x00, 0x00, 0x03, 0x00, 0x06, 0xeb, 0x00, 0x1b, 0x82, 0x0f, + 0x00, 0x00, 0x04, 0x00, 0x0d, 0x0c, 0x10, 0x00, 0x00, 0x1c, 0x82, 0x0f, + 0x00, 0x00, 0x26, 0x00, 0xb4, 0x70, 0xe0, 0x7c, 0x00, 0x1d, 0x82, 0x0f, + 0x00, 0x00, 0x0b, 0x00, 0xe0, 0x7e, 0xe0, 0x78, 0xc3, 0x42, 0x7f, 0x00, + 0xc0, 0x90, 0xc3, 0x43, 0x7f, 0x00, 0xc4, 0x90, 0xf1, 0x07, 0x4f, 0x0b, + 0xc3, 0x42, 0x7f, 0x00, 0xa4, 0x90, 0xc3, 0x43, 0x7f, 0x00, 0xa8, 0x90, + 0xe1, 0x07, 0x4f, 0x0b, 0xc3, 0x42, 0x7f, 0x00, 0x94, 0x90, 0xc3, 0x43, + 0x7f, 0x00, 0x98, 0x90, 0xd1, 0x07, 0x4f, 0x0b, 0xc3, 0x42, 0x7f, 0x00, + 0xa0, 0x90, 0xc3, 0x43, 0x7f, 0x00, 0xa4, 0x90, 0xc1, 0x07, 0x4f, 0x0b, + 0xc3, 0x42, 0x7f, 0x00, 0x98, 0x90, 0xc3, 0x43, 0x7f, 0x00, 0xa0, 0x90, + 0xb1, 0x07, 0x4f, 0x0b, 0xc3, 0x42, 0x7f, 0x00, 0xa8, 0x90, 0xc3, 0x43, + 0x7f, 0x00, 0xc0, 0x90, 0x91, 0x07, 0x4f, 0x0b, 0xf1, 0xc0, 0xa1, 0xc1, + 0x2c, 0x70, 0xc3, 0x42, 0x7f, 0x00, 0xc4, 0x90, 0xc3, 0x43, 0x7f, 0x00, + 0xc8, 0x90, 0x8c, 0x76, 0x3e, 0x0f, 0xef, 0x0c, 0x40, 0x24, 0x05, 0x30, + 0x00, 0xc0, 0x87, 0x74, 0xd1, 0xc0, 0xe0, 0x7e, 0xc3, 0x42, 0x7f, 0x00, + 0xcc, 0x90, 0xc3, 0x43, 0x7f, 0x00, 0xcc, 0x90, 0x5d, 0x07, 0x4f, 0x0b, + 0xf1, 0xc0, 0xa1, 0xc1, 0x0c, 0x70, 0x2c, 0x70, 0xc3, 0x42, 0x7f, 0x00, + 0xc8, 0x90, 0xc3, 0x43, 0x7f, 0x00, 0xc8, 0x90, 0x8c, 0x74, 0x0a, 0x0f, + 0xef, 0x0c, 0x40, 0x24, 0xc5, 0x30, 0x03, 0x14, 0x80, 0x30, 0x87, 0x74, + 0xd1, 0xc0, 0xe0, 0x7e, 0xc3, 0x42, 0x7f, 0x00, 0xcc, 0x90, 0xc3, 0x43, + 0x7f, 0x00, 0xcc, 0x90, 0x25, 0x07, 0x4f, 0x0b, 0xc3, 0x42, 0x7f, 0x00, + 0xcc, 0x90, 0xc3, 0x43, 0x7f, 0x00, 0xcc, 0x90, 0x15, 0x07, 0x4f, 0x0b, + 0xc3, 0x42, 0x7f, 0x00, 0xc4, 0x90, 0x15, 0x07, 0x6f, 0x0b, 0x40, 0x43, + 0x00, 0x16, 0x80, 0x70, 0x7f, 0x00, 0xa5, 0x96, 0xdd, 0x02, 0xaf, 0x0e, + 0x79, 0x20, 0x00, 0x00, 0x00, 0x16, 0x80, 0x70, 0x7f, 0x00, 0xa5, 0x96, + 0x14, 0x70, 0xe0, 0x7d, 0xc9, 0x02, 0xaf, 0x0e, 0x0c, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x2f, 0x90, 0x01, 0x0b, 0x05, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x02, 0x00, 0x00, 0xdc, 0xcd, 0x60, 0x00, + 0x74, 0x8d, 0x7f, 0x00, 0x10, 0xcd, 0x60, 0x00, 0x18, 0xd0, 0x60, 0x00, + 0x3c, 0xcd, 0x60, 0x00, 0xd0, 0xcc, 0x60, 0x00, 0xa4, 0xcc, 0x60, 0x00, + 0x48, 0xcd, 0x60, 0x00, 0x1c, 0xcd, 0x60, 0x00, 0xf4, 0xce, 0x60, 0x00, + 0x08, 0xcd, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x80, 0x00, + 0x1c, 0x9a, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x64, 0x00, 0xd0, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x08, 0xe8, 0x03, + 0x30, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x02, 0x00, 0x00, 0xd8, 0xbc, 0x60, 0x00, 0x64, 0xbd, 0x60, 0x00, + 0x50, 0xbc, 0x60, 0x00, 0x40, 0xbe, 0x60, 0x00, 0x84, 0xbc, 0x60, 0x00, + 0x08, 0xbc, 0x60, 0x00, 0xd4, 0xbb, 0x60, 0x00, 0x90, 0xbc, 0x60, 0x00, + 0x40, 0xb3, 0x60, 0x00, 0x20, 0xbd, 0x60, 0x00, 0x44, 0xbc, 0x60, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x3a, 0x80, 0x00, 0x44, 0x9a, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x1e, 0x05, 0x3e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x69, 0x2f, 0xe8, 0x03, 0x31, 0x01, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0xb4, 0xb4, 0x60, 0x00, 0x40, 0xb5, 0x60, 0x00, 0x2c, 0xb4, 0x60, 0x00, + 0xa8, 0xb5, 0x60, 0x00, 0x60, 0xb4, 0x60, 0x00, 0xbc, 0xb3, 0x60, 0x00, + 0x88, 0xb3, 0x60, 0x00, 0x6c, 0xb4, 0x60, 0x00, 0x38, 0xb4, 0x60, 0x00, + 0xfc, 0xb4, 0x60, 0x00, 0x20, 0xb4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7c, 0x3a, 0x80, 0x00, 0xf0, 0xa0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0xe8, 0x03, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x7d, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x58, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, 0xe9, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x34, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x49, 0x61, 0x00, + 0xe8, 0x48, 0x61, 0x00, 0xd8, 0x48, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, + 0xea, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xec, 0x27, 0x61, 0x00, 0x7c, 0x27, 0x61, 0x00, 0x6c, 0x27, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x01, 0x00, 0x00, 0xeb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x9c, 0x60, 0x00, 0xec, 0x9b, 0x60, 0x00, + 0xd0, 0x9b, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x21, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8c, 0xe4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0xf1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x94, 0x7a, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0xf2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0e, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x7c, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xf3, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb8, 0x7b, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xcc, 0x7b, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0xf5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0e, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x7c, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xf6, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe8, 0x7b, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x9c, 0x7b, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x68, 0x61, 0x00, + 0x1c, 0x68, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb8, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xf9, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x68, 0x61, 0x00, + 0xd0, 0x67, 0x61, 0x00, 0xb8, 0x67, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0xfa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x64, 0x61, 0x00, 0x34, 0x64, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0xfb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x7c, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb0, 0x7a, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0xfd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x7b, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x7c, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0xe0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf4, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, + 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x7e, 0x61, 0x00, 0x1c, 0x7d, 0x61, 0x00, 0x98, 0x7d, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x20, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x32, 0x00, 0xec, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x70, 0x61, 0x00, 0xf4, 0x6f, 0x61, 0x00, + 0xe4, 0x6f, 0x61, 0x00, 0x7c, 0x70, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0xc8, 0x00, 0xf0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xe9, 0x60, 0x00, + 0x98, 0xe4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8b, 0xc8, 0x00, 0x00, 0x03, 0x17, 0x00, 0x00, + 0xb0, 0x2d, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x94, 0x90, 0x7f, 0x00, 0x98, 0x90, 0x7f, 0x00, + 0x98, 0x90, 0x7f, 0x00, 0xa0, 0x90, 0x7f, 0x00, 0xa0, 0x90, 0x7f, 0x00, + 0xa4, 0x90, 0x7f, 0x00, 0xa4, 0x90, 0x7f, 0x00, 0xa8, 0x90, 0x7f, 0x00, + 0xa8, 0x90, 0x7f, 0x00, 0xc0, 0x90, 0x7f, 0x00, 0xc0, 0x90, 0x7f, 0x00, + 0xc4, 0x90, 0x7f, 0x00, 0xc4, 0x90, 0x7f, 0x00, 0xc4, 0x90, 0x7f, 0x00, + 0xc4, 0x90, 0x7f, 0x00, 0xc8, 0x90, 0x7f, 0x00, 0xc8, 0x90, 0x7f, 0x00, + 0xc8, 0x90, 0x7f, 0x00, 0xc8, 0x90, 0x7f, 0x00, 0xcc, 0x90, 0x7f, 0x00, + 0xcc, 0x90, 0x7f, 0x00, 0xcc, 0x90, 0x7f, 0x00, 0xcc, 0x90, 0x7f, 0x00, + 0xcc, 0x90, 0x7f, 0x00, 0xcc, 0x90, 0x7f, 0x00, 0xcc, 0x90, 0x7f, 0x00, + 0xab, 0x26, 0x0a, 0x74, 0x7f, 0x00, 0x98, 0x80, 0xe0, 0x7e, 0xe0, 0x78, + 0xc3, 0x40, 0x7f, 0x00, 0x00, 0x80, 0x6b, 0x20, 0x40, 0x09, 0xdb, 0x44, + 0x80, 0x00, 0x50, 0x20, 0xdb, 0x42, 0x80, 0x00, 0x50, 0x21, 0x0a, 0x22, + 0x80, 0x8f, 0x7f, 0x00, 0xdc, 0x99, 0xe2, 0x20, 0x82, 0x00, 0x6f, 0x70, + 0x22, 0x20, 0x80, 0x0f, 0x7f, 0x00, 0x00, 0xa1, 0x9d, 0x03, 0x8f, 0x03, + 0x48, 0xa5, 0x7f, 0x00, 0x27, 0x00, 0x02, 0x01, 0x14, 0x05, 0x14, 0x05, + 0xc4, 0x09, 0x06, 0x09, 0x70, 0x17, 0x00, 0x00, 0x80, 0x3d, 0xcd, 0xcc, + 0x4c, 0x3f, 0x00, 0x00, 0xe0, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x86, 0x54, 0x00, 0x25, 0x00, 0x03, 0x01, + 0x00, 0x09, 0x0c, 0x96, 0x00, 0x10, 0x3c, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xb0, 0x04, 0x52, 0x03, 0x00, 0x00, 0x40, 0x41, 0x01, 0x01, 0x01, 0x01, + 0x02, 0x02, 0x02, 0x03, 0x03, 0x01, 0x01, 0xb4, 0x73, 0x00, 0x00, 0x00, + 0x82, 0x06, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, + 0xb3, 0x3e, 0xcd, 0xcc, 0x0c, 0x3f, 0xcd, 0xcc, 0x0c, 0x3f, 0x33, 0x33, + 0x33, 0x3f, 0x33, 0x33, 0x33, 0x3f, 0xcd, 0xcc, 0x4c, 0x3f, 0x01, 0x00, + 0x09, 0x04, 0x02, 0x17, 0xb7, 0xd1, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, + 0xb7, 0xd1, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xb7, 0xd1, 0x38, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x37, 0x86, 0x35, 0xbd, + 0x37, 0x86, 0x35, 0xbd, 0x37, 0x86, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x42, 0xe8, 0x03, 0x05, 0x00, 0x2d, 0x00, 0x84, 0x03, 0xb0, + 0x04, 0x96, 0x00, 0x08, 0x96, 0x00, 0x0e, 0x01, 0x03, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x33, 0x33, 0xb3, 0x3e, 0xcd, 0xcc, 0x0c, 0x3f, 0xcd, + 0xcc, 0x0c, 0x3f, 0x33, 0x33, 0x33, 0x3f, 0x33, 0x33, 0x33, 0x3f, 0xcd, + 0xcc, 0x4c, 0x3e, 0x01, 0x06, 0x04, 0x02, 0x00, 0x05, 0x00, 0x41, 0x01, + 0x40, 0x01, 0x24, 0x00, 0x78, 0x00, 0x04, 0x01, 0x14, 0x14, 0x02, 0x02, + 0x00, 0x04, 0x00, 0x00, 0x80, 0x3f, 0xcd, 0xcc, 0xcc, 0x3d, 0x9a, 0x99, + 0x99, 0x3f, 0xcd, 0xcc, 0xcc, 0x3e, 0xcd, 0xcc, 0xcc, 0x3d, 0x01, 0x00, + 0x14, 0x00, 0x10, 0x04, 0x78, 0x00, 0x08, 0x00, 0x00, 0x05, 0x9a, 0x99, + 0x19, 0x3f, 0x9a, 0x99, 0x19, 0x3f, 0x50, 0x00, 0x09, 0x00, 0x1e, 0x00, + 0xe8, 0x03, 0x50, 0x00, 0x41, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x80, + 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x40, 0xb5, 0xfe, 0x16, 0x37, 0xb5, 0xfe, 0x16, 0x37, 0xb5, 0xfe, 0x16, + 0x37, 0x8b, 0xde, 0xa9, 0x38, 0x00, 0x00, 0xe0, 0x40, 0x0e, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xcd, 0xcc, 0xcc, 0x3d, 0x01, 0x09, 0x09, 0x03, 0x13, 0x32, + 0xa3, 0x04, 0xcd, 0x0c, 0x19, 0x28, 0x04, 0x0e, 0x00, 0x03, 0x9a, 0x99, + 0x99, 0x3e, 0x9a, 0x99, 0x99, 0x3e, 0xcd, 0xcc, 0xcc, 0x3e, 0x9a, 0x99, + 0x19, 0x3f, 0x9a, 0x99, 0x99, 0x3e, 0x00, 0x00, 0x80, 0x3e, 0x9a, 0x99, + 0x99, 0x3e, 0xec, 0x51, 0xb8, 0x3e, 0xcd, 0xcc, 0x4c, 0x3f, 0xcd, 0xcc, + 0x4c, 0x3f, 0xcd, 0xcc, 0x4c, 0x3f, 0xcd, 0xcc, 0x4c, 0x3f, 0xcd, 0xcc, + 0x4c, 0x3e, 0xcd, 0xcc, 0x4c, 0x3e, 0xcd, 0xcc, 0x4c, 0x3e, 0xcd, 0xcc, + 0x4c, 0x3e, 0x01, 0xc2, 0xb8, 0xb2, 0x3e, 0x35, 0xfa, 0x8e, 0x3c, 0x0a, + 0x00, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x50, 0x77, 0x56, 0x3d, + 0x0e, 0x00, 0x00, 0x80, 0x3e, 0x8f, 0xc2, 0xf5, 0x3c, 0x0a, 0xd7, 0xa3, + 0x3c, 0x64, 0x80, 0x34, 0x2d, 0x46, 0x01, 0x0a, 0x00, 0x50, 0x00, 0x00, + 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x09, 0x02, 0x00, 0x00, 0xc8, + 0x41, 0x00, 0x00, 0x80, 0x42, 0x00, 0x00, 0x80, 0x41, 0x00, 0x00, 0xc0, + 0x3f, 0xcd, 0xcc, 0x4c, 0x3d, 0xc2, 0xb8, 0xb2, 0x3d, 0x32, 0x25, 0x3b, + 0x18, 0x47, 0x00, 0x00, 0xa0, 0x40, 0x9a, 0x99, 0x19, 0x3f, 0x0a, 0xd7, + 0x23, 0x3c, 0x0a, 0xd7, 0x23, 0x3c, 0x02, 0x50, 0x77, 0x56, 0x3d, 0x00, + 0x01, 0xcd, 0xcc, 0x4c, 0x3f, 0x00, 0x00, 0x60, 0x40, 0x00, 0x00, 0x20, + 0x40, 0xcd, 0xcc, 0xcc, 0x3d, 0x04, 0x8f, 0xc2, 0xf5, 0x3c, 0x02, 0x01, + 0x02, 0x03, 0x04, 0x01, 0x0a, 0xb0, 0x04, 0x64, 0x00, 0x0a, 0xd7, 0x23, + 0x3c, 0x0a, 0xd7, 0x23, 0x3c, 0x01, 0x0a, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0xfa, 0x43, 0x00, 0x00, 0x7a, 0x44, 0x00, 0x00, 0xa0, 0x3f, 0x00, 0x00, + 0x48, 0x42, 0x00, 0x00, 0x80, 0x3f, 0x9a, 0x99, 0x19, 0x3e, 0x9a, 0x99, + 0x99, 0x3d, 0x00, 0x00, 0x20, 0x42, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x96, 0x18, 0x4b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, + 0x18, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x96, 0x18, 0x4b, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x0a, 0xd7, 0x23, 0x3c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xd7, + 0x23, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xd7, 0x23, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xb7, 0xd1, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xb7, + 0xd1, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x17, 0xb7, 0xd1, 0x38, 0x0a, 0xd7, 0x23, 0x3c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xd7, + 0x23, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xd7, 0x23, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xc5, 0x27, 0x37, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xc5, + 0x27, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xac, 0xc5, 0x27, 0x37, 0x00, 0x24, 0x74, 0x49, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, + 0x74, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x24, 0x74, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x03, 0x04, 0x19, 0x40, + 0x12, 0x18, 0x00, 0x40, 0x72, 0x08, 0x00, 0x0e, 0xb3, 0x80, 0x00, 0x00, + 0x0e, 0x00, 0x01, 0x01, 0x01, 0x09, 0x0c, 0x88, 0x13, 0x10, 0x01, 0x01, + 0x71, 0x2a, 0x00, 0x00, 0xf1, 0xc0, 0xc3, 0x40, 0x80, 0x00, 0xe0, 0x22, + 0xc3, 0x42, 0x80, 0x00, 0x8c, 0x23, 0x2c, 0x70, 0x22, 0x0d, 0xef, 0x0c, + 0x02, 0x7a, 0x12, 0x08, 0x00, 0x00, 0x32, 0x0c, 0x00, 0x00, 0xd1, 0xc0, + 0xe0, 0x7e, 0xe0, 0x78, 0xe8, 0xc3, 0xa1, 0xc1, 0xc3, 0x40, 0x7f, 0x00, + 0x74, 0xa8, 0x32, 0xe8, 0xcb, 0x46, 0x7f, 0x00, 0xf0, 0xa6, 0x36, 0x08, + 0xef, 0x0e, 0xc1, 0x40, 0xab, 0xe8, 0x03, 0x8e, 0x0f, 0x08, 0xf4, 0x00, + 0xe4, 0x6e, 0xa0, 0x87, 0x40, 0x26, 0x0f, 0x12, 0x10, 0xf0, 0xcb, 0x45, + 0x60, 0x00, 0xe8, 0x99, 0x19, 0x00, 0x00, 0x00, 0x80, 0xc3, 0x02, 0x40, + 0xc1, 0x41, 0x60, 0x7d, 0x81, 0x42, 0x03, 0x6e, 0x6c, 0x20, 0x40, 0x00, + 0x1f, 0x67, 0x08, 0xe7, 0xc1, 0x87, 0x80, 0x87, 0xd5, 0x70, 0x0c, 0xf2, + 0x40, 0x27, 0x10, 0x12, 0x30, 0xf6, 0xd3, 0x7a, 0x2c, 0x70, 0xb6, 0x0c, + 0xef, 0x0c, 0x81, 0x40, 0x0a, 0x47, 0xf4, 0xf1, 0x04, 0xec, 0x04, 0x6f, + 0xe4, 0x68, 0xf0, 0xf1, 0x0c, 0x70, 0xc8, 0xc7, 0xe8, 0xc3, 0xa5, 0xc1, + 0x24, 0x5b, 0x08, 0x47, 0x22, 0x5b, 0x08, 0x46, 0x0c, 0x71, 0xe1, 0x41, + 0xc1, 0x42, 0x23, 0x5b, 0x10, 0x40, 0x0e, 0xd8, 0xe1, 0x41, 0xc1, 0x42, + 0x23, 0x5b, 0x08, 0x45, 0x10, 0xd8, 0xe1, 0x41, 0xc1, 0x42, 0x23, 0x5b, + 0x08, 0x44, 0xae, 0x09, 0x20, 0x00, 0x02, 0x40, 0x00, 0x42, 0xa6, 0x09, + 0x20, 0x00, 0xa1, 0x40, 0x00, 0x43, 0x9e, 0x09, 0x20, 0x00, 0x81, 0x40, + 0x08, 0x44, 0xcb, 0x46, 0x80, 0x00, 0xa0, 0x3b, 0x07, 0xed, 0x08, 0x8d, + 0x0b, 0x08, 0x11, 0x02, 0x00, 0x1e, 0x03, 0x10, 0x0d, 0xf0, 0xc3, 0x41, + 0x80, 0x00, 0xe8, 0x3a, 0x00, 0x16, 0x0d, 0x71, 0x80, 0x00, 0xea, 0x3a, + 0x00, 0x91, 0x00, 0x1e, 0x43, 0x10, 0xa6, 0x78, 0x00, 0xb1, 0x30, 0xd9, + 0x80, 0xc0, 0xab, 0x21, 0xa0, 0x0d, 0x0c, 0x1c, 0x80, 0x3f, 0x7f, 0x00, + 0x6c, 0x9a, 0x40, 0xc2, 0x42, 0xc4, 0x26, 0x0c, 0x2f, 0x0a, 0x41, 0xc3, + 0x2f, 0x21, 0x07, 0x80, 0xad, 0x71, 0x0f, 0xf2, 0x40, 0x29, 0x02, 0x06, + 0x5a, 0xd8, 0xad, 0x70, 0xab, 0x22, 0x60, 0x0d, 0xab, 0x25, 0x60, 0x1d, + 0xab, 0x25, 0x60, 0x1d, 0xab, 0x21, 0x60, 0x0d, 0x2f, 0x5b, 0x15, 0xed, + 0x11, 0x14, 0x80, 0x30, 0x24, 0xc1, 0x12, 0x14, 0x82, 0x30, 0x13, 0x14, + 0x83, 0x30, 0x79, 0x20, 0x0c, 0x00, 0x79, 0x21, 0x00, 0x00, 0x79, 0x22, + 0x02, 0x00, 0x84, 0x78, 0x79, 0x23, 0x01, 0x00, 0x44, 0x78, 0x0b, 0x79, + 0x03, 0xf4, 0x5b, 0xd8, 0x2f, 0x5b, 0x7e, 0x0f, 0xaf, 0x0a, 0x0c, 0x70, + 0x0c, 0x72, 0xc3, 0x41, 0x60, 0x00, 0x08, 0x9f, 0x2e, 0x5b, 0x0c, 0x72, + 0xc3, 0x41, 0x60, 0x00, 0x64, 0x9d, 0x2d, 0x5b, 0x0f, 0xd8, 0xc3, 0x41, + 0x61, 0x00, 0x18, 0x0f, 0x2e, 0x5b, 0x0f, 0xd8, 0xc3, 0x41, 0x61, 0x00, + 0x48, 0x0e, 0x2d, 0x5b, 0x3f, 0xd8, 0xab, 0x20, 0xa0, 0x0d, 0xc8, 0xc7, + 0xf2, 0xc2, 0x30, 0x44, 0x10, 0x43, 0x1b, 0xd9, 0x0c, 0x70, 0x70, 0x42, + 0x50, 0x45, 0xab, 0x21, 0xa0, 0x0d, 0x20, 0x5b, 0xc3, 0x40, 0x7f, 0x00, + 0xcc, 0x90, 0xc3, 0x41, 0x7f, 0x00, 0x70, 0x92, 0x02, 0x79, 0xd3, 0x41, + 0x7f, 0x00, 0x70, 0x92, 0xc3, 0x43, 0x7f, 0x00, 0x14, 0x98, 0xd3, 0x40, + 0x7f, 0x00, 0x14, 0x98, 0xc3, 0x42, 0x7f, 0x00, 0x44, 0x99, 0x02, 0x23, + 0x4e, 0x04, 0x02, 0x22, 0x0d, 0x04, 0x84, 0x29, 0x02, 0x03, 0xcb, 0x47, + 0x80, 0x00, 0xd0, 0x22, 0x84, 0x2e, 0x01, 0x13, 0x25, 0xaf, 0x2f, 0x79, + 0x84, 0x2d, 0x01, 0x13, 0xc6, 0xaf, 0xc6, 0x0e, 0xaf, 0x0d, 0xa7, 0xaf, + 0xcf, 0x79, 0x06, 0x0f, 0xaf, 0x0d, 0x22, 0x40, 0xaf, 0x79, 0xf2, 0x0e, + 0xaf, 0x0d, 0x02, 0x40, 0xcb, 0x45, 0x7f, 0x00, 0x44, 0x99, 0x02, 0x0e, + 0xaf, 0x0d, 0xa1, 0x40, 0xaa, 0x20, 0xe1, 0x04, 0x82, 0x41, 0x05, 0x20, + 0x82, 0x0f, 0xb0, 0x2d, 0x00, 0x00, 0x62, 0x40, 0xf6, 0x0e, 0x6f, 0x0c, + 0xab, 0x22, 0xe1, 0x04, 0x2f, 0x21, 0x85, 0x04, 0xae, 0x0f, 0x6f, 0x0e, + 0xa2, 0x40, 0x66, 0x8f, 0x27, 0x8f, 0xc3, 0x40, 0x80, 0x00, 0xd8, 0x22, + 0x45, 0x8f, 0x00, 0x21, 0xc4, 0x00, 0x61, 0x80, 0x20, 0x80, 0x72, 0x08, + 0x20, 0x00, 0xa1, 0x40, 0x1d, 0xd9, 0x0c, 0x70, 0xab, 0x21, 0xa0, 0x0d, + 0x20, 0x5b, 0x16, 0x08, 0x00, 0x00, 0xd2, 0xc6, 0x00, 0x41, 0x14, 0x70, + 0x0c, 0x70, 0xe0, 0x7c, 0xe0, 0x7f, 0x16, 0x81, 0xe4, 0xc2, 0xad, 0x70, + 0xcb, 0x46, 0x7f, 0x00, 0x74, 0x99, 0x08, 0x16, 0x00, 0x14, 0xfc, 0x16, + 0x01, 0x90, 0x02, 0x79, 0x22, 0xb9, 0x2f, 0x79, 0x09, 0x09, 0x92, 0x00, + 0xfe, 0x0b, 0x4f, 0x0c, 0xa5, 0x71, 0xeb, 0x0d, 0x54, 0x93, 0xc3, 0x42, + 0x7f, 0x00, 0xc8, 0x90, 0xc3, 0x43, 0x7f, 0x00, 0xcc, 0x90, 0xd2, 0x0b, + 0xcf, 0x0a, 0xc4, 0xc6, 0xf1, 0xc0, 0x2b, 0x5b, 0x14, 0x70, 0x0c, 0x71, + 0x04, 0xf4, 0x25, 0xd8, 0x2f, 0x5b, 0x0c, 0x70, 0xd1, 0xc0, 0xe0, 0x7e, + 0xf0, 0xc2, 0x50, 0x40, 0x10, 0xda, 0xab, 0x22, 0xa0, 0x0d, 0x55, 0x88, + 0x97, 0x88, 0xcc, 0x88, 0x70, 0x44, 0x76, 0x88, 0x14, 0x88, 0x08, 0xba, + 0x08, 0xbc, 0x45, 0x78, 0x05, 0x24, 0xc2, 0x10, 0x10, 0xba, 0x30, 0x41, + 0x0a, 0x23, 0x00, 0x21, 0xc3, 0x41, 0x00, 0x00, 0xaa, 0x0a, 0xad, 0x70, + 0x6d, 0x72, 0x4a, 0x24, 0x00, 0x72, 0xc3, 0xbe, 0x05, 0x7a, 0xa8, 0x20, + 0xc0, 0x05, 0x53, 0x22, 0x40, 0x00, 0x4f, 0x20, 0x43, 0x00, 0x15, 0x0b, + 0xb1, 0x00, 0x00, 0x2b, 0x43, 0x13, 0x66, 0x79, 0x14, 0x72, 0xcf, 0x21, + 0x41, 0x03, 0x07, 0xf2, 0x0b, 0x08, 0x71, 0x00, 0x00, 0x2b, 0x40, 0x13, + 0x05, 0x79, 0x22, 0xba, 0xa5, 0x72, 0x52, 0x6e, 0x0c, 0x71, 0xdb, 0x7c, + 0x6c, 0x73, 0x00, 0x28, 0x82, 0x00, 0x00, 0x2b, 0x00, 0x03, 0x06, 0x79, + 0xc1, 0x40, 0xab, 0x22, 0xa1, 0x0d, 0xab, 0x21, 0xe2, 0x03, 0x2c, 0x5b, + 0xd5, 0x08, 0x30, 0x00, 0x1c, 0xd8, 0x4c, 0x72, 0xab, 0x20, 0xd0, 0x02, + 0x42, 0x20, 0xc1, 0x03, 0x04, 0x71, 0xf9, 0x09, 0x74, 0x84, 0xab, 0x22, + 0x88, 0x01, 0x4a, 0x24, 0x40, 0x71, 0x11, 0xd8, 0xa8, 0x20, 0xc0, 0x02, + 0x40, 0x20, 0x02, 0x04, 0x42, 0x20, 0x81, 0x03, 0x04, 0x71, 0xab, 0x22, + 0xd0, 0x02, 0xab, 0x21, 0x88, 0x01, 0x8d, 0x70, 0x4a, 0x24, 0x00, 0x73, + 0x0c, 0x70, 0xed, 0x71, 0xa8, 0x20, 0x00, 0x02, 0xa8, 0x48, 0x04, 0x71, + 0xab, 0x21, 0xd0, 0x02, 0xab, 0x27, 0x88, 0x11, 0x4a, 0x23, 0x80, 0x16, + 0x8a, 0x21, 0x10, 0x00, 0x19, 0xde, 0x8a, 0x20, 0x08, 0x00, 0x8a, 0x22, + 0x04, 0x00, 0x11, 0xdb, 0xad, 0x70, 0xd3, 0x42, 0x00, 0x00, 0xff, 0xff, + 0xab, 0x23, 0xd0, 0x12, 0xab, 0x24, 0x88, 0x11, 0xab, 0x21, 0xe1, 0x0c, + 0xab, 0x21, 0x62, 0x07, 0xab, 0x21, 0xa2, 0x06, 0xab, 0x26, 0xd0, 0x12, + 0xab, 0x27, 0x88, 0x11, 0xab, 0x20, 0xe2, 0x06, 0xab, 0x20, 0xe1, 0x0c, + 0xab, 0x20, 0x62, 0x07, 0xab, 0x20, 0xa2, 0x06, 0xab, 0x22, 0x62, 0x07, + 0xab, 0x22, 0xa2, 0x06, 0x3d, 0x08, 0x30, 0x20, 0xab, 0x23, 0xa0, 0x0d, + 0x22, 0x42, 0x0c, 0x70, 0x23, 0x92, 0x65, 0x8a, 0x55, 0x22, 0xc2, 0x08, + 0xc9, 0xb9, 0x44, 0x23, 0x03, 0x04, 0x3c, 0x21, 0x8e, 0x04, 0x79, 0x21, + 0x0f, 0x00, 0x24, 0xbb, 0xcb, 0x7f, 0x65, 0x78, 0x85, 0x71, 0xe5, 0x0c, + 0x24, 0x94, 0xca, 0x22, 0x42, 0x20, 0x07, 0xf0, 0xb0, 0xd8, 0x2f, 0x5b, + 0xad, 0x70, 0x13, 0xf0, 0x0c, 0x70, 0x5e, 0x0f, 0x4f, 0x0c, 0x1e, 0x0f, + 0x6f, 0x0c, 0x42, 0x40, 0x22, 0x40, 0x02, 0x41, 0x82, 0x42, 0x7e, 0x0e, + 0xef, 0xff, 0x62, 0x43, 0x05, 0xe8, 0x12, 0xd8, 0xad, 0x71, 0xab, 0x20, + 0xa0, 0x0d, 0xa1, 0x40, 0xd0, 0xc6, 0xe0, 0x78, 0xe4, 0xc3, 0x82, 0x24, + 0x11, 0x39, 0x8a, 0x21, 0x0c, 0x08, 0x00, 0x24, 0x80, 0x3f, 0x00, 0x00, + 0x44, 0x01, 0x80, 0xc2, 0x38, 0x60, 0x0d, 0x0a, 0x25, 0x00, 0x40, 0xc2, + 0x00, 0x42, 0x40, 0xc0, 0x81, 0xc0, 0x56, 0x20, 0x00, 0x0a, 0x09, 0x0a, + 0x05, 0x00, 0x40, 0xc0, 0xcb, 0x45, 0x80, 0x00, 0xcc, 0x12, 0xcb, 0x46, + 0x80, 0x00, 0xd0, 0x22, 0xcb, 0x44, 0xa5, 0x5a, 0x6b, 0xb6, 0x00, 0x24, + 0x80, 0x3f, 0x00, 0x00, 0x44, 0x01, 0x28, 0xd9, 0x81, 0xc2, 0x10, 0xdb, + 0xa0, 0xa6, 0x0e, 0x0d, 0xef, 0xff, 0x80, 0xa5, 0x44, 0x6d, 0xc3, 0x41, + 0x80, 0x00, 0x00, 0x00, 0xc3, 0x43, 0x7f, 0x00, 0x74, 0x99, 0xc3, 0x44, + 0x80, 0x00, 0x00, 0x00, 0x2e, 0x09, 0xef, 0x0c, 0xa1, 0x40, 0x0c, 0x70, + 0xc4, 0xc7, 0xe0, 0x78, 0xf0, 0xc2, 0x70, 0x41, 0x50, 0x42, 0x30, 0x43, + 0x10, 0x44, 0xab, 0x0b, 0x30, 0x00, 0xcd, 0x70, 0x8a, 0x20, 0x01, 0x23, + 0x1a, 0x26, 0x0f, 0x14, 0x42, 0x77, 0xe1, 0x40, 0x25, 0x5b, 0x0d, 0x08, + 0x95, 0x00, 0x22, 0x1f, 0x83, 0x10, 0x0a, 0xf0, 0x11, 0x08, 0x34, 0x02, + 0xc1, 0x40, 0x9a, 0x20, 0x01, 0x03, 0x42, 0x70, 0x22, 0x18, 0xc3, 0x0f, + 0x4c, 0xd8, 0xcc, 0x78, 0x42, 0x70, 0x35, 0x88, 0xc1, 0xb9, 0x23, 0x09, + 0x71, 0x00, 0xa4, 0x68, 0x01, 0x95, 0x1b, 0xe8, 0x2f, 0x38, 0x03, 0x00, + 0xc3, 0x41, 0x7f, 0x00, 0x60, 0x8d, 0xe1, 0x42, 0x33, 0x5b, 0x2b, 0x08, + 0x33, 0x00, 0x01, 0xad, 0x23, 0xf0, 0xa1, 0x40, 0x82, 0x41, 0x62, 0x42, + 0x42, 0x43, 0xa6, 0x08, 0x20, 0x00, 0x0a, 0x24, 0x40, 0x04, 0x09, 0xe8, + 0x00, 0x41, 0x00, 0x80, 0xfe, 0xe8, 0xe0, 0xa1, 0x03, 0xf0, 0x01, 0x1d, + 0xc3, 0x1f, 0xc9, 0x45, 0x9a, 0x25, 0x01, 0x13, 0x42, 0x75, 0x06, 0x85, + 0x0d, 0xe8, 0x39, 0x8d, 0xc1, 0xb9, 0x13, 0x09, 0xb1, 0x00, 0x0f, 0x78, + 0x82, 0x41, 0x62, 0x42, 0x23, 0x5b, 0x06, 0xa5, 0x03, 0xf0, 0x18, 0x1d, + 0x01, 0x10, 0xc5, 0x71, 0xad, 0x70, 0x6d, 0x0e, 0x64, 0x94, 0xed, 0x70, + 0x05, 0xf0, 0xad, 0x70, 0xed, 0x70, 0x03, 0xf0, 0xa5, 0x71, 0x49, 0x0d, + 0x65, 0x14, 0x4c, 0xde, 0xac, 0x7e, 0x00, 0x22, 0x90, 0xa3, 0xfa, 0xf3, + 0x02, 0x40, 0x26, 0x5b, 0x76, 0xe8, 0x42, 0x76, 0x15, 0x8e, 0xc1, 0xb8, + 0xe5, 0x08, 0x70, 0x80, 0x02, 0x40, 0x25, 0x5b, 0x08, 0x46, 0x02, 0x40, + 0x26, 0x5b, 0x25, 0x5b, 0xd5, 0x0e, 0x25, 0x90, 0xa1, 0x41, 0x9a, 0x21, + 0x01, 0x03, 0x02, 0x40, 0x00, 0x22, 0x4e, 0x20, 0x26, 0x5b, 0x25, 0x5b, + 0xed, 0x71, 0x22, 0x1e, 0x02, 0x10, 0xde, 0xf1, 0xf5, 0x70, 0xad, 0x70, + 0xed, 0x70, 0xdb, 0xf5, 0x0c, 0x71, 0xd0, 0xc6, 0xe2, 0xc2, 0x08, 0x45, + 0x01, 0x88, 0xc1, 0xb8, 0x17, 0x08, 0xb0, 0x00, 0x80, 0x8d, 0x14, 0x71, + 0x0c, 0x70, 0x09, 0xf7, 0x81, 0x40, 0x60, 0x41, 0x80, 0x42, 0x27, 0x5b, + 0x03, 0xf0, 0x81, 0x40, 0x23, 0x5b, 0x00, 0xa5, 0xc2, 0xc6, 0x00, 0x00, + 0x49, 0x4e, 0x49, 0x03, 0xfc, 0x99, 0x60, 0x00, 0x94, 0x90, 0x7f, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x01, 0x80, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x98, 0x90, 0x7f, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x48, 0x21, 0x80, + 0x00, 0x88, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x90, 0x7f, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x01, 0x90, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, + 0xa4, 0x90, 0x7f, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x98, 0x22, 0x80, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0x90, 0x7f, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x21, 0x80, 0x00, 0x78, 0x22, 0x80, 0x00, 0xb0, 0x22, 0x80, + 0x00, 0xb0, 0x22, 0x80, 0x00, 0xc0, 0x22, 0x80, 0x00, 0xc8, 0x22, 0x80, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x7f, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x01, 0x70, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x90, 0x7f, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x01, 0xa0, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, + 0xc8, 0x90, 0x7f, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0xa8, 0x22, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x20, 0x80, 0x00, 0xd4, 0x00, 0x00, 0x00, + 0x00, 0xfe, 0xff, 0x00, 0x0f, 0x01, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, + 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, + 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0b, 0x10, 0x10, 0xc4, + 0x04, 0x00, 0x00, 0x01, 0x02, 0x10, 0x0c, 0xd5, 0x60, 0x00, 0x06, 0x02, + 0x08, 0xd0, 0xd4, 0x60, 0x02, 0x06, 0x0f, 0x03, 0xff, 0x3f, 0x0f, 0x10, + 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, + 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x10, + 0x05, 0x10, 0x80, 0xa5, 0x08, 0x00, 0x60, 0x00, 0x68, 0x02, 0x04, 0x58, + 0x5e, 0x61, 0x00, 0xa4, 0x37, 0x61, 0x00, 0xdc, 0xa2, 0x60, 0x00, 0x20, + 0x80, 0xc4, 0xa3, 0x60, 0x00, 0x40, 0x02, 0x04, 0xec, 0xaa, 0x60, 0x00, + 0x90, 0xa0, 0x60, 0x00, 0xa0, 0x02, 0x20, 0x82, 0x85, 0xf4, 0x02, 0x0c, + 0x30, 0x1c, 0x61, 0x00, 0x3c, 0x02, 0x0c, 0x03, 0x3a, 0x05, 0x02, 0x05, + 0x34, 0xd1, 0x60, 0x00, 0x03, 0x08, 0x94, 0x4a, 0x08, 0xd3, 0x05, 0x08, + 0x80, 0x06, 0x10, 0x9c, 0xd2, 0x05, 0x10, 0xac, 0x06, 0x10, 0x5c, 0x06, + 0x08, 0xc4, 0xd0, 0x05, 0x18, 0x94, 0x10, 0xa7, 0xa1, 0x7f, 0x00, 0x0a, + 0x02, 0x40, 0x2c, 0x67, 0x61, 0x02, 0x06, 0x05, 0x03, 0x13, 0x80, 0x80, + 0x90, 0x05, 0x18, 0x70, 0x02, 0x08, 0x01, 0x00, 0x05, 0x16, 0x00, 0x00, + 0xcc, 0x90, 0x7f, 0x00, 0x70, 0x92, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 +}; diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/examples/gesture_recognition_example.c b/lib/bosch/BHy1_driver_and_MCU_solution/examples/gesture_recognition_example.c new file mode 100644 index 0000000000000000000000000000000000000000..5e723339896fa40205052e2fb03014e0bedcb7f4 --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/examples/gesture_recognition_example.c @@ -0,0 +1,242 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + */ + + +/********************************************************************************/ +/* HEADER FILES */ +/********************************************************************************/ +#include <stdint.h> +#include <string.h> +#include <stdarg.h> + +#include "asf.h" +#include "task.h" +#include "arm_math.h" +#include "demo-tasks.h" + +#include "bhy_support.h" +#include "bhy_uc_driver.h" +#include ".\firmware\Bosch_PCB_7183_di03_BMI160-7183_di03.2.1.11696_170103.h" + + + +/********************************************************************************/ +/* MACROS */ +/********************************************************************************/ + +/* should be greater or equal to 69 bytes, page size (50) + maximum packet size(18) + 1 */ +#define FIFO_SIZE 69 +#define GESTURE_SAMPLE_RATE 1 +#define OUT_BUFFER_SIZE 80 +#define MAX_PACKET_LENGTH 18 +#define TICKS_IN_ONE_SECOND 32000.0F +#define SENSOR_ID_MASK 0x1F + +/********************************************************************************/ +/* GLOBAL VARIABLES */ +/********************************************************************************/ +/* system timestamp */ +uint32_t bhy_system_timestamp = 0; + +uint8_t out_buffer[OUT_BUFFER_SIZE] = " Time=xxx.xxxs Gesture: xxxxxxxxxx \r\n"; + +uint8_t fifo[FIFO_SIZE]; + + +/********************************************************************************/ +/* FUNCTIONS */ +/********************************************************************************/ + +/*! + * @brief This function is callback function for acquring sensor datas + * + * @param[in] sensor_data + * @param[in] sensor_id + */ +static void sensors_callback_gesture_recognition(bhy_data_generic_t * sensor_data, bhy_virtual_sensor_t sensor_id) +{ + float temp; + uint8_t index; + /* Since a timestamp is always sent before every new data, and that the callbacks */ + /* are called while the parsing is done, then the system timestamp is always equal */ + /* to the sample timestamp. (in callback mode only) */ + temp = bhy_system_timestamp / TICKS_IN_ONE_SECOND; + + for (index = 6; index <= 8; index++) + { + out_buffer[index] = floorf(temp) + '0'; + temp = (temp - floorf(temp)) * 10; + } + + for (index = 10; index <= 12; index++) + { + out_buffer[index] = floorf(temp) + '0'; + temp = (temp - floorf(temp)) * 10; + } + + sensor_id &= SENSOR_ID_MASK; + /* gesture recognition sensors are always one-shot, so you need to */ + /* re-enable them every time if you want to catch every event */ + bhy_enable_virtual_sensor(sensor_id, VS_WAKEUP, GESTURE_SAMPLE_RATE, 0, VS_FLUSH_NONE, 0, 0); + + switch (sensor_id) + { + case VS_TYPE_GLANCE: + strcpy(&out_buffer[24], "Glance "); + break; + case VS_TYPE_PICKUP: + strcpy(&out_buffer[24], "Pickup "); + break; + case VS_TYPE_SIGNIFICANT_MOTION: + strcpy(&out_buffer[24], "Sig motion"); + break; + default: + strcpy(&out_buffer[24], "Unknown "); + break; + } + + DEBUG("%s\n", out_buffer); +} + +/*! + * @brief This function is time stamp callback function that process data in fifo. + * + * @param[in] new_timestamp + */ +void timestamp_callback(bhy_data_scalar_u16_t *new_timestamp) +{ + /* updates the system timestamp */ + bhy_update_system_timestamp(new_timestamp, &bhy_system_timestamp); +} +/*! + * @brief This function is used to run bhy hub + */ +void demo_sensor(void) +{ + int8_t ret; + + /* BHY Variable*/ + uint8_t *fifoptr = NULL; + uint8_t bytes_left_in_fifo = 0; + uint16_t bytes_remaining = 0; + uint16_t bytes_read = 0; + bhy_data_generic_t fifo_packet; + bhy_data_type_t packet_type; + BHY_RETURN_FUNCTION_TYPE result; + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //struct cus_version_t bhy_cus_version; + + + /* init the bhy chip */ + if(bhy_driver_init(&bhy1_fw)) + { + DEBUG("Fail to init bhy\n"); + } + + /* wait for the bhy trigger the interrupt pin go down and up again */ + while (ioport_get_pin_level(BHY_INT)); + + while (!ioport_get_pin_level(BHY_INT)); + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //bhy_read_parameter_page(BHY_PAGE_2, PAGE2_CUS_FIRMWARE_VERSION, (uint8_t*)&bhy_cus_version, sizeof(struct cus_version_t)); + //DEBUG("cus version base:%d major:%d minor:%d\n", bhy_cus_version.base, bhy_cus_version.major, bhy_cus_version.minor); + + /* enables the gesture recognition and assigns the callback */ + bhy_enable_virtual_sensor(VS_TYPE_GLANCE, VS_WAKEUP, GESTURE_SAMPLE_RATE, 0, VS_FLUSH_NONE, 0, 0); + bhy_enable_virtual_sensor(VS_TYPE_PICKUP, VS_WAKEUP, GESTURE_SAMPLE_RATE, 0, VS_FLUSH_NONE, 0, 0); + bhy_enable_virtual_sensor(VS_TYPE_SIGNIFICANT_MOTION, VS_WAKEUP, GESTURE_SAMPLE_RATE, 0, VS_FLUSH_NONE, 0, 0); + + bhy_install_sensor_callback(VS_TYPE_GLANCE, VS_WAKEUP, sensors_callback_gesture_recognition); + bhy_install_sensor_callback(VS_TYPE_PICKUP, VS_WAKEUP, sensors_callback_gesture_recognition); + bhy_install_sensor_callback(VS_TYPE_SIGNIFICANT_MOTION, VS_WAKEUP, sensors_callback_gesture_recognition); + + bhy_install_timestamp_callback(VS_WAKEUP, timestamp_callback); + + + while(1) + { + /* wait until the interrupt fires */ + /* unless we already know there are bytes remaining in the fifo */ + while (!ioport_get_pin_level(BHY_INT) && !bytes_remaining) + { + } + + bhy_read_fifo(fifo + bytes_left_in_fifo, FIFO_SIZE - bytes_left_in_fifo, &bytes_read, &bytes_remaining); + bytes_read += bytes_left_in_fifo; + fifoptr = fifo; + packet_type = BHY_DATA_TYPE_PADDING; + + do + { + /* this function will call callbacks that are registered */ + result = bhy_parse_next_fifo_packet(&fifoptr, &bytes_read, &fifo_packet, &packet_type); + + /* prints all the debug packets */ + if (packet_type == BHY_DATA_TYPE_DEBUG) + { + bhy_print_debug_packet(&fifo_packet.data_debug, bhy_printf); + } + + /* the logic here is that if doing a partial parsing of the fifo, then we should not parse */ + /* the last 18 bytes (max length of a packet) so that we don't try to parse an incomplete */ + /* packet */ + } while ((result == BHY_SUCCESS) && (bytes_read > (bytes_remaining ? MAX_PACKET_LENGTH : 0))); + + bytes_left_in_fifo = 0; + + if (bytes_remaining) + { + /* shifts the remaining bytes to the beginning of the buffer */ + while (bytes_left_in_fifo < bytes_read) + { + fifo[bytes_left_in_fifo++] = *(fifoptr++); + } + } + } +} +/** @}*/ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/examples/rotation_vector_example.c b/lib/bosch/BHy1_driver_and_MCU_solution/examples/rotation_vector_example.c new file mode 100644 index 0000000000000000000000000000000000000000..82ddb91e45bea5c5791b3f0b730688379fde2e6a --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/examples/rotation_vector_example.c @@ -0,0 +1,264 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + */ + + +/********************************************************************************/ +/* HEADER FILES */ +/********************************************************************************/ +#include <stdint.h> +#include <string.h> +#include <stdarg.h> + +#include "asf.h" +#include "task.h" +#include "arm_math.h" +#include "demo-tasks.h" + +#include "bhy_support.h" +#include "bhy_uc_driver.h" +#include ".\firmware\Bosch_PCB_7183_di03_BMI160_BMM150-7183_di03.2.1.11696_170103.h" + + + +/********************************************************************************/ +/* MACROS */ +/********************************************************************************/ +/* should be greater or equal to 69 bytes, page size (50) + maximum packet size(18) + 1 */ +#define FIFO_SIZE 300 +#define ROTATION_VECTOR_SAMPLE_RATE 100 +#define MAX_PACKET_LENGTH 18 +#define OUT_BUFFER_SIZE 60 + +/********************************************************************************/ +/* GLOBAL VARIABLES */ +/********************************************************************************/ + + + +/********************************************************************************/ +/* STATIC VARIABLES */ +/********************************************************************************/ +char out_buffer[OUT_BUFFER_SIZE] = " W: 0.999 X: 0.999 Y: 0.999 Z: 0.999 \r"; + +uint8_t fifo[FIFO_SIZE]; + + +/********************************************************************************/ +/* FUNCTIONS */ +/********************************************************************************/ + +/*! + * @brief This function is callback function for acquring sensor datas + * + * @param[in] sensor_data + * @param[in] sensor_id + */ +static void sensors_callback_rotation_vector(bhy_data_generic_t * sensor_data, bhy_virtual_sensor_t sensor_id) +{ + float temp; + uint8_t index; + + temp = sensor_data->data_quaternion.w / 16384.0f; /* change the data unit by dividing 16384 */ + out_buffer[3] = temp < 0 ? '-' : ' '; + temp = temp < 0 ? -temp : temp; + out_buffer[4] = floor(temp) + '0'; + + for (index = 6; index <= 8; index++) + { + temp = (temp - floor(temp)) * 10; + out_buffer[index] = floor(temp) + '0'; + } + + temp = sensor_data->data_quaternion.x / 16384.0f; + out_buffer[13] = temp < 0 ? '-' : ' '; + temp = temp < 0 ? -temp : temp; + out_buffer[14] = floor(temp) + '0'; + + for (index = 16; index <= 18; index++) + { + temp = (temp - floor(temp)) * 10; + out_buffer[index] = floor(temp) + '0'; + } + + temp = sensor_data->data_quaternion.y / 16384.0f; + out_buffer[23] = temp < 0 ? '-' : ' '; + temp = temp < 0 ? -temp : temp; + out_buffer[24] = floor(temp) + '0'; + + for (index = 26; index <= 28; index++) + { + temp = (temp - floor(temp)) * 10; + out_buffer[index] = floor(temp) + '0'; + } + + temp = sensor_data->data_quaternion.z / 16384.0f; + out_buffer[33] = temp < 0 ? '-' : ' '; + temp = temp < 0 ? -temp : temp; + out_buffer[34] = floor(temp) + '0'; + + for (index = 36; index <= 38; index++) + { + temp = (temp - floor(temp)) * 10; + out_buffer[index] = floor(temp) + '0'; + } + + + DEBUG("x=%d, y=%d, z=%d, w=%d\n", + sensor_data->data_quaternion.x, + sensor_data->data_quaternion.y, + sensor_data->data_quaternion.z, + sensor_data->data_quaternion.w + ); +} +/*! + * @brief This function is used to run bhy hub + */ +void demo_sensor(void) +{ + int8_t ret; + + /* BHY Variable*/ + uint8_t *fifoptr = NULL; + uint8_t bytes_left_in_fifo = 0; + uint16_t bytes_remaining = 0; + uint16_t bytes_read = 0; + bhy_data_generic_t fifo_packet; + bhy_data_type_t packet_type; + BHY_RETURN_FUNCTION_TYPE result; + /* the remapping matrix for BHA or BHI here should be configured according to its placement on customer's PCB. */ + /* for details, please check 'Application Notes Axes remapping of BHA250(B)/BHI160(B)' document. */ + int8_t bhy_mapping_matrix_config[3*3] = {0,1,0,-1,0,0,0,0,1}; + /* the remapping matrix for Magnetometer should be configured according to its placement on customer's PCB. */ + /* for details, please check 'Application Notes Axes remapping of BHA250(B)/BHI160(B)' document. */ + int8_t mag_mapping_matrix_config[3*3] = {0,1,0,1,0,0,0,0,-1}; + /* the sic matrix should be calculated for customer platform by logging uncalibrated magnetometer data. */ + /* the sic matrix here is only an example array (identity matrix). Customer should generate their own matrix. */ + /* This affects magnetometer fusion performance. */ + float sic_array[9] = {1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0}; + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //struct cus_version_t bhy_cus_version; + + + DEBUG("version=%s\n", bhy_get_version()); + + /* init the bhy chip */ + if(bhy_driver_init(&bhy1_fw)) + { + DEBUG("Fail to init bhy\n"); + } + + /* wait for the bhy trigger the interrupt pin go down and up again */ + while (ioport_get_pin_level(BHY_INT)); + + while (!ioport_get_pin_level(BHY_INT)); + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //bhy_read_parameter_page(BHY_PAGE_2, PAGE2_CUS_FIRMWARE_VERSION, (uint8_t*)&bhy_cus_version, sizeof(struct cus_version_t)); + //DEBUG("cus version base:%d major:%d minor:%d\n", bhy_cus_version.base, bhy_cus_version.major, bhy_cus_version.minor); + + /* the remapping matrix for BHI and Magmetometer should be configured here to make sure rotation vector is */ + /* calculated in a correct coordinates system. */ + bhy_mapping_matrix_set(PHYSICAL_SENSOR_INDEX_ACC, bhy_mapping_matrix_config); + bhy_mapping_matrix_set(PHYSICAL_SENSOR_INDEX_MAG, mag_mapping_matrix_config); + bhy_mapping_matrix_set(PHYSICAL_SENSOR_INDEX_GYRO, bhy_mapping_matrix_config); + /* This sic matrix setting affects magnetometer fusion performance. */ + bhy_set_sic_matrix(sic_array); + + /* install the callback function for parse fifo data */ + if(bhy_install_sensor_callback(VS_TYPE_ROTATION_VECTOR, VS_WAKEUP, sensors_callback_rotation_vector)) + { + DEBUG("Fail to install sensor callback\n"); + } + + /* enables the virtual sensor */ + if(bhy_enable_virtual_sensor(VS_TYPE_ROTATION_VECTOR, VS_WAKEUP, ROTATION_VECTOR_SAMPLE_RATE, 0, VS_FLUSH_NONE, 0, 0)) + { + DEBUG("Fail to enable sensor id=%d\n", VS_TYPE_ROTATION_VECTOR); + } + + while(1) + { + /* wait until the interrupt fires */ + /* unless we already know there are bytes remaining in the fifo */ + while (!ioport_get_pin_level(BHY_INT) && !bytes_remaining) + { + } + + bhy_read_fifo(fifo + bytes_left_in_fifo, FIFO_SIZE - bytes_left_in_fifo, &bytes_read, &bytes_remaining); + bytes_read += bytes_left_in_fifo; + fifoptr = fifo; + packet_type = BHY_DATA_TYPE_PADDING; + + do + { + /* this function will call callbacks that are registered */ + result = bhy_parse_next_fifo_packet(&fifoptr, &bytes_read, &fifo_packet, &packet_type); + + /* prints all the debug packets */ + if (packet_type == BHY_DATA_TYPE_DEBUG) + { + bhy_print_debug_packet(&fifo_packet.data_debug, bhy_printf); + } + + /* the logic here is that if doing a partial parsing of the fifo, then we should not parse */ + /* the last 18 bytes (max length of a packet) so that we don't try to parse an incomplete */ + /* packet */ + } while ((result == BHY_SUCCESS) && (bytes_read > (bytes_remaining ? MAX_PACKET_LENGTH : 0))); + + bytes_left_in_fifo = 0; + + if (bytes_remaining) + { + /* shifts the remaining bytes to the beginning of the buffer */ + while (bytes_left_in_fifo < bytes_read) + { + fifo[bytes_left_in_fifo++] = *(fifoptr++); + } + } + } +} +/** @}*/ diff --git a/lib/bosch/BHy1_driver_and_MCU_solution/examples/selftest_example.c b/lib/bosch/BHy1_driver_and_MCU_solution/examples/selftest_example.c new file mode 100644 index 0000000000000000000000000000000000000000..61bff2190d65591fa6a5a812dadf124e292d2c6a --- /dev/null +++ b/lib/bosch/BHy1_driver_and_MCU_solution/examples/selftest_example.c @@ -0,0 +1,201 @@ +/*! + * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + */ + + +/********************************************************************************/ +/* HEADER FILES */ +/********************************************************************************/ +#include <stdint.h> +#include <string.h> +#include <stdarg.h> + +#include "asf.h" +#include "task.h" +#include "arm_math.h" +#include "demo-tasks.h" + +#include "bhy_support.h" +#include "bhy_uc_driver.h" +#include ".\firmware\Bosch_PCB_7183_di01_BMI160-7183_di01.2.1.10836_170103.h" + + +/********************************************************************************/ +/* MACROS */ +/********************************************************************************/ +/* should be greater or equal to 69 bytes, page size (50) + maximum packet size(18) + 1 */ +#define FIFO_SIZE 300 +#define MAX_PACKET_LENGTH 18 +#define OUT_BUFFER_SIZE 60 + +/********************************************************************************/ +/* GLOBAL VARIABLES */ +/********************************************************************************/ + + + +/********************************************************************************/ +/* STATIC VARIABLES */ +/********************************************************************************/ +uint8_t fifo[FIFO_SIZE]; + + +/********************************************************************************/ +/* FUNCTIONS */ +/********************************************************************************/ +static void meta_event_callback(bhy_data_meta_event_t *event_data, bhy_meta_event_type_t event_type) +{ + + DEBUG(">Meta event type %d, \n", event_type); + + switch(event_type) + { + case BHY_META_EVENT_TYPE_INITIALIZED: + DEBUG("initialize success!\n"); + break; + case BHY_META_EVENT_TYPE_SELF_TEST_RESULTS: + if(event_data->event_specific == BHY_SUCCESS) + { + DEBUG("self test result success! sensor_type=%d \n", event_data->sensor_type); + } + else + { + DEBUG("self test result fail! sensor_type=%d \n", event_data->sensor_type); + } + break; + default: + DEBUG("unknown meta event\n"); + break; + } +} + +/*! + * @brief This function is used to run bhy hub + */ +void demo_sensor(void) +{ + int8_t ret; + + /* BHY Variable*/ + uint8_t *fifoptr = NULL; + uint8_t bytes_left_in_fifo = 0; + uint16_t bytes_remaining = 0; + uint16_t bytes_read = 0; + bhy_data_generic_t fifo_packet; + bhy_data_type_t packet_type; + BHY_RETURN_FUNCTION_TYPE result; + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //struct cus_version_t bhy_cus_version; + + bhy_install_meta_event_callback(BHY_META_EVENT_TYPE_INITIALIZED, meta_event_callback); + bhy_install_meta_event_callback(BHY_META_EVENT_TYPE_SELF_TEST_RESULTS, meta_event_callback); + + DEBUG("version=%s, %s, %s\n", bhy_get_version(), __DATE__, __TIME__); + DEBUG("start example\n"); + + /* init the bhy chip */ + if(bhy_driver_init(&bhy1_fw)) + { + DEBUG("Fail to init bhy\n"); + } + + /* wait for the bhy trigger the interrupt pin go down and up again */ + while (ioport_get_pin_level(BHY_INT)); + while (!ioport_get_pin_level(BHY_INT)); + + /* To get the customized version number in firmware, it is necessary to read Parameter Page 2, index 125 */ + /* to get this information. This feature is only supported for customized firmware. To get this customized */ + /* firmware, you need to contact your local FAE of Bosch Sensortec. */ + //bhy_read_parameter_page(BHY_PAGE_2, PAGE2_CUS_FIRMWARE_VERSION, (uint8_t*)&bhy_cus_version, sizeof(struct cus_version_t)); + //DEBUG("cus version base:%d major:%d minor:%d\n", bhy_cus_version.base, bhy_cus_version.major, bhy_cus_version.minor); + + bhy_set_chip_control(0); + bhy_set_host_interface_control(BHY_HOST_SELFTEST, ENABLE); + delay_ms(100); + + bhy_set_chip_control(1); + delay_ms(100); + + while(1) + { + /* wait until the interrupt fires */ + /* unless we already know there are bytes remaining in the fifo */ + while (!ioport_get_pin_level(BHY_INT) && !bytes_remaining) + { + } + + bhy_read_fifo(fifo + bytes_left_in_fifo, FIFO_SIZE - bytes_left_in_fifo, &bytes_read, &bytes_remaining); + bytes_read += bytes_left_in_fifo; + fifoptr = fifo; + packet_type = BHY_DATA_TYPE_PADDING; + + do + { + /* this function will call callbacks that are registered */ + result = bhy_parse_next_fifo_packet(&fifoptr, &bytes_read, &fifo_packet, &packet_type); + + /* prints all the debug packets */ + if (packet_type == BHY_DATA_TYPE_DEBUG) + { + bhy_print_debug_packet(&fifo_packet.data_debug, bhy_printf); + } + + /* the logic here is that if doing a partial parsing of the fifo, then we should not parse */ + /* the last 18 bytes (max length of a packet) so that we don't try to parse an incomplete */ + /* packet */ + } while ((result == BHY_SUCCESS) && (bytes_read > (bytes_remaining ? MAX_PACKET_LENGTH : 0))); + + bytes_left_in_fifo = 0; + + if (bytes_remaining) + { + /* shifts the remaining bytes to the beginning of the buffer */ + while (bytes_left_in_fifo < bytes_read) + { + fifo[bytes_left_in_fifo++] = *(fifoptr++); + } + } + } +} +/** @}*/